source: tools/tracesplit/tracesplit_dir.c @ 28d81c8

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

Fix lots of little warnings

  • Property mode set to 100644
File size: 2.1 KB
Line 
1#include "libtrace.h"
2#include <stdio.h>
3
4
5static struct 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
20static void usage(char*argv0) {
21        printf("%s inputuri outputuri_incoming outputuri_outgoing\n",argv0);
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        if (trace_start(input)==-1) {
44                trace_perror(input,"");
45                return 1;
46        }
47       
48        while(1) {
49                if (trace_read_packet(input, packet) < 1)
50                        break;
51
52                switch(trace_get_direction(packet)) {
53                        case 0:
54                                if (!out_write) {
55                                        out_write = create_output(argv[3]);
56                                        if (trace_is_err_output(out_write)) {
57                                                trace_perror_output(out_write,"");
58                                                return 1;
59                                        }
60                                }
61                                if (trace_write_packet(out_write, packet)==-1){
62                                        trace_perror_output(in_write,"write");
63                                        return 1;
64                                }
65                                break;
66                        case 1:
67                                if (!in_write) {
68                                        in_write = create_output(argv[2]);
69                                        if (trace_is_err_output(in_write)) {
70                                                trace_perror_output(in_write,"");
71                                                return 1;
72                                        }
73                                        in_write = create_output(argv[2]);
74                                        if (!in_write)
75                                                return 1;
76                                }
77                                if (trace_write_packet(in_write, packet)==-1) {
78                                        trace_perror_output(in_write,"write");
79                                        return 1;
80                                }
81                                break;
82                }
83
84        }
85        if (out_write)
86                trace_destroy_output(out_write);
87        if (in_write)
88                trace_destroy_output(in_write);
89        trace_destroy(input);
90        trace_destroy_packet(packet);
91       
92        return 0;
93}
94       
Note: See TracBrowser for help on using the repository browser.