59121f0c |
1 | |
2 | typedef struct _text_hook_data { |
3 | FILE *fp; |
4 | lttv_string *s; |
5 | } text_hook_data; |
6 | |
7 | void *lttv_textDump_before(lttv_trace_set *s, FILE *fp) |
8 | { |
9 | int i, j, nb_trace, nb_tracefile; |
10 | lttv_attributes *a; |
11 | lttv_hooks *h; |
12 | lttv_trace *t; |
13 | lttv_tracefile *tf; |
14 | text_hook_data *hook_data; |
15 | |
16 | hook_data = g_new(ltt_hook_data,1); |
17 | nb_trace = lttv_trace_set_number(s); |
18 | hook_data->fp = fp; |
19 | hook_data->s = lttv_string_new; |
20 | |
21 | for(i = 0 ; i < nb_trace ; i++) { |
22 | t = lttv_trace_set_get(s,i); |
23 | a = lttv_trace_attributes(t); |
24 | h = (lttv_hooks *)lttv_attributes_get_pointer_pathname(a,"hooks/before"); |
25 | lttv_hooks_add(h, print_trace_title, hook_data); |
26 | nb_tracefile = lttv_trace_number(t); |
27 | |
28 | for(j = 0 ; j < nb_tracefile ; j++) { |
29 | h = (lttv_hooks *)lttv_attributes_get_pointer_pathname(a,"hooks/before"); |
30 | lttv_hooks_add(h, print_tracefile_title, hook_data); |
31 | h = (lttv_hooks *)lttv_attributes_get_pointer_pathname(a,"hooks/event"); |
32 | lttv_hooks_add(h, print_event, hook_data); |
33 | } |
34 | } |
35 | } |
36 | |
37 | void lttv_textDump_after(lttv_trace_set *ts, void *hook_data) |
38 | { |
39 | int i, j, nb_trace, nb_tracefile; |
40 | lttv_attributes *a; |
41 | lttv_hooks *h; |
42 | lttv_trace *t; |
43 | lttv_tracefile *tf; |
44 | |
45 | nb_trace = lttv_trace_set_number(s); |
46 | |
47 | for(i = 0 ; i < nb_trace ; i++) { |
48 | t = lttv_trace_set_get(s,i); |
49 | a = lttv_trace_attributes(t); |
50 | h = (lttv_hooks *)lttv_attributes_get_pointer_pathname(a,"hooks/before"); |
51 | lttv_hooks_remove(h, print_trace_title, hook_data); |
52 | nb_tracefile = lttv_trace_number(t); |
53 | |
54 | for(j = 0 ; j < nb_tracefile ; j++) { |
55 | h = (lttv_hooks *)lttv_attributes_get_pointer_pathname(a,"hooks/before"); |
56 | lttv_hooks_remove(h, print_tracefile_title, hook_data); |
57 | h = (lttv_hooks *)lttv_attributes_get_pointer_pathname(a,"hooks/event"); |
58 | lttv_hooks_remove(h, print_event, hook_data); |
59 | } |
60 | } |
61 | lttv_string_destroy(hook_data->s); |
62 | g_free(hook_data); |
63 | } |
64 | |
65 | static void print_trace_title(void *hook_data, void *call_data) |
66 | { |
67 | lttv_trace *t; |
68 | FILE *fp; |
69 | |
70 | fp = ((text_hook_data *)hook_data)->fp; |
71 | t = (lttv_trace *)call_data; |
72 | fprintf(fp,"\n\nTrace %s:\n\n" lttv_trace_name(t)); |
73 | } |
74 | |
75 | static void print_trace(void *hook_data, void *call_data) |
76 | { |
77 | lttv_tracefile *tf; |
78 | FILE *fp; |
79 | |
80 | fp = ((text_hook_data *)hook_data)->fp; |
81 | tf = (lttv_tracefile *)call_data; |
82 | fprintf(fp,"\n\nTracefile %s:\n\n" lttv_tracefile_name(tf)); |
83 | } |
84 | |
85 | static void print_event(void *hook_data, void *call_data) |
86 | { |
87 | ltt_event *e; |
88 | FILE *fp; |
89 | text_hook_data *d; |
90 | |
91 | d = ((text_hook_data *)hook_data; |
92 | e = (lttv_event *)call_data; |
93 | lttv_event_to_string(e,d->s,TRUE); |
94 | fprintf(fp,"%s\n" d->s->str); |
95 | } |
96 | |
97 | |
98 | |