source: tools/tracesplit/tracesplit_dir.c @ 5ad7ad0

4.0.1-hotfixescachetimestampsdevelopdpdk-ndagetsilivegetfragoffhelplibtrace4ndag_formatpfringrc-4.0.1rc-4.0.2rc-4.0.3rc-4.0.4ringdecrementfixringperformanceringtimestampfixes
Last change on this file since 5ad7ad0 was 5ad7ad0, checked in by Perry Lorier <perry@…>, 15 years ago

libtrace3ification
Better error reporting
Avoid debugging crud

  • Property mode set to 100644
File size: 1.8 KB
Line 
1#include "libtrace.h"
2#include <stdio.h>
3
4
5struct libtrace_out_t *create_output(char *uri) {
6        struct libtrace_out_t *output = NULL;
7        libtrace_err_t trace_err;
8        output = trace_create_output(uri);
9        if (trace_is_err_output(output)) {
10                trace_err = trace_get_err_output(output);
11                printf("Problem creating output trace (uri=%s): %s\n", 
12                                uri, trace_err.problem);
13                return NULL;
14        }
15        /* Default values for now */
16        trace_start_output(output);
17        return output;
18}
19
20void usage() {
21        printf("tracesplit_dir inputuri outputuri_incoming outputuri_outgoing\n");
22}
23
24int main(int argc, char *argv[]) {
25        struct libtrace_t *input = NULL;
26        struct libtrace_out_t *in_write = NULL;
27        struct libtrace_out_t *out_write = NULL;
28        libtrace_err_t trace_err;
29        struct libtrace_packet_t *packet = trace_create_packet();
30
31       
32        if (argc < 3) {
33                usage(argv[0]);
34                return 1;
35        }
36
37        input = trace_create(argv[1]);
38        if (trace_is_err(input)) {
39                trace_err = trace_get_err(input);
40                printf("Problem reading input trace: %s\n", trace_err.problem);
41                return 1;
42        }
43        trace_start(input);
44       
45        while(1) {
46                if (trace_read_packet(input, packet) < 1)
47                        break;
48
49                switch(trace_get_direction(packet)) {
50                        case 0:
51                                if (!out_write) {
52                                        out_write = create_output(argv[3]);
53                                        if (!out_write)
54                                                return 1;
55                                }
56                                if (trace_write_packet(out_write, packet)==-1){
57                                        trace_perror_output(in_write,"write");
58                                        return 1;
59                                }
60                                break;
61                        case 1:
62                                if (!in_write) {
63                                        in_write = create_output(argv[2]);
64                                        if (!in_write)
65                                                return 1;
66                                }
67                                if (trace_write_packet(in_write, packet)==-1) {
68                                        trace_perror_output(in_write,"write");
69                                        return 1;
70                                }
71                                break;
72                }
73
74        }
75        if (out_write)
76                trace_destroy_output(out_write);
77        if (in_write)
78                trace_destroy_output(in_write);
79        trace_destroy(input);
80        trace_destroy_packet(&packet);
81       
82        return 0;
83}
84       
Note: See TracBrowser for help on using the repository browser.