| 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 | |