Can you resend as a standalone patch ? It will be easier to review than a patch based on your previous one.
Thanks, Mathieu * Vincent Attard ([email protected]) wrote: > --- > lttv/modules/text/formatedDump.c | 133 +++++++++++++++---------------------- > 1 files changed, 54 insertions(+), 79 deletions(-) > > diff --git a/lttv/modules/text/formatedDump.c > b/lttv/modules/text/formatedDump.c > index 44f6589..58ccdb8 100644 > --- a/lttv/modules/text/formatedDump.c > +++ b/lttv/modules/text/formatedDump.c > @@ -14,7 +14,7 @@ > * > * You should have received a copy of the GNU General Public License > * along with this program; if not, write to the Free Software > - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, > + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, > * MA 02111-1307, USA. > */ > > @@ -44,25 +44,20 @@ > #include <string.h> > #include <stdlib.h> > > -static gboolean > -a_noevent, > -a_no_field_names, > -a_state, > -a_text; > +static gboolean a_noevent; > +static gboolean a_no_field_names; > +static gboolean a_state; > +static gboolean a_text; > > -static char > -*a_file_name = NULL; > -static char > -*a_format = NULL; > +static char *a_file_name = NULL; > +static char *a_format = NULL; > > -static LttvHooks > -*before_traceset, > -*event_hook; > +static LttvHooks *before_traceset; > +static LttvHooks *event_hook; > > static char default_format[] = > "tracefile:%f envent:%e timestamp:%t elapse:%l cpu:%c pid:%d > tgpid:%g "\ > "process:%p brand:%b ppid:%i state:%a"; > - > static char textDump_format[] = > "%f.%e: %s.%n (%r/%f_%c), %d, %g, %p, %b, %i, %y, %a { %m }"; > > @@ -74,10 +69,10 @@ static gboolean open_output_file(void *hook_data, void > *call_data) > { > g_info("Open the output file"); > > - if(a_file_name == NULL) a_file = stdout; > + if (a_file_name == NULL) a_file = stdout; > else a_file = fopen(a_file_name, "w"); > > - if(a_file == NULL) g_error("cannot open file %s", a_file_name); > + if (a_file == NULL) g_error("cannot open file %s", a_file_name); > return FALSE; > } > > @@ -114,14 +109,14 @@ static int write_event_content(void *hook_data, void > *call_data) > /* > * call to the filter if available > */ > - if(filter->head != NULL) > - if(!lttv_filter_tree_parse(filter->head,e,tfc->tf, > + if (filter->head != NULL) > + if (!lttv_filter_tree_parse(filter->head,e,tfc->tf, > tfc->t_context->t,tfc,NULL,NULL)) > return FALSE; > > lttv_event_to_string(e, a_string, TRUE, !a_no_field_names, tfs); > > - if(a_state) { > + if (a_state) { > g_string_append_printf(a_string, "%s ", > g_quark_to_string(process->state->s)); > } > @@ -133,7 +128,7 @@ static int write_event_content(void *hook_data, void > *call_data) > return FALSE; > } > > -void lttv_event_to_string(LttEvent *e, GString *s, gboolean mandatory_fields, > +void lttv_event_to_string(LttEvent *e, GString *string_buffer, gboolean > mandatory_fields, > gboolean field_names, LttvTracefileState *tfs) > { > struct marker_field *field; > @@ -147,13 +142,11 @@ void lttv_event_to_string(LttEvent *e, GString *s, > gboolean mandatory_fields, > LttvTraceState *ts = (LttvTraceState*)tfs->parent.t_context; > LttvProcessState *process = ts->running_process[cpu]; > > - s = g_string_set_size(s,0); > - > info = marker_get_info_from_id(tfs->parent.tf->mdata, e->event_id); > - if(mandatory_fields) { > + if (mandatory_fields) { > time = ltt_event_time(e); > - /* Calculate elapse between current and previous event time */ > - if (time_prev.tv_sec==0 && time_prev.tv_nsec == 0) { > + /* Calculate elapsed time between current and previous event */ > + if (time_prev.tv_sec == 0 && time_prev.tv_nsec == 0) { > time_prev = ltt_event_time(e); > elapse.tv_sec = 0; > elapse.tv_nsec = 0; > @@ -165,113 +158,97 @@ void lttv_event_to_string(LttEvent *e, GString *s, > gboolean mandatory_fields, > > char * fmt; > int i; > - int fmt_len = 0; > - if(a_text) { > + > + if (a_text) { > /* textDump format (used with -T command option) */ > fmt = textDump_format; > - fmt_len = strlen(textDump_format); > } > > else if (!a_format) { > /* Default format (used if no option) */ > fmt = default_format; > - fmt_len = strlen(default_format); > } else { > /* formatedDump format > * (used with -F command option following by the desired > format) */ > fmt = a_format; > - fmt_len = strlen(a_format); > } > > - char str[1024] = {0}; > + g_string_set_size(string_buffer, 0); > /* Switch case: > - * all '%-' are replaced by the desired value in 'str' */ > - char *str_pos = str; > - for (i = 0; i < strlen(fmt); i++){ > - if (fmt[i] == '%'){ > - > - switch (fmt[++i]){ > + * all '%-' are replaced by the desired value in 'string_buffer' */ > + for (i = 0; i < strlen(fmt); i++) { > + if (fmt[i] == '%') { > + switch (fmt[++i]) { > case 't': > - str_pos += sprintf(str_pos, > "%ldh%02ldm%02lds%09ldns", > + g_string_append_printf(string_buffer, > "%ldh%02ldm%02lds%09ldns", > time.tv_sec/3600, > (time.tv_sec%3600)/60, time.tv_sec%60, > time.tv_nsec); > break; > case 'f': > - strcpy(str_pos, > + g_string_append(string_buffer, > > g_quark_to_string(ltt_tracefile_name(tfs->parent.tf))); > - str_pos = str_pos + > strlen(g_quark_to_string(ltt_tracefile_name(tfs->parent.tf))); > break; > case 'e': > - strcpy(str_pos, > + g_string_append(string_buffer, > g_quark_to_string(info->name)); > - str_pos = str_pos + > strlen(g_quark_to_string(info->name)); > break; > case 'd': > - str_pos += sprintf(str_pos, "%u", > process->pid); > + g_string_append_printf(string_buffer, "%u", > process->pid); > break; > case 's': > - str_pos += sprintf(str_pos, "%lu", > time.tv_sec); > + g_string_append_printf(string_buffer, "%ld", > time.tv_sec); > break; > case 'n': > - str_pos += sprintf(str_pos, "%lu", > time.tv_nsec); > + g_string_append_printf(string_buffer, "%ld", > time.tv_nsec); > break; > case 'i': > - str_pos += sprintf(str_pos, "%u", > process->ppid); > + g_string_append_printf(string_buffer, "%u", > process->ppid); > break; > case 'g': > - str_pos += sprintf(str_pos, "%u", > process->tgid); > + g_string_append_printf(string_buffer, "%u", > process->tgid); > break; > case 'p': > - > strcpy(str_pos,g_quark_to_string(process->name)); > - str_pos = str_pos + > strlen(g_quark_to_string(process->name)); > + g_string_append(string_buffer, > + > g_quark_to_string(process->name)); > break; > case 'b': > - > strcpy(str_pos,g_quark_to_string(process->brand)); > - str_pos = str_pos + > strlen(g_quark_to_string(process->brand)); > + g_string_append(string_buffer, > + > g_quark_to_string(process->brand)); > break; > case 'c': > - str_pos += sprintf(str_pos,"%u", cpu); > + g_string_append_printf(string_buffer, "%u", > cpu); > break; > case 'l': > - str_pos += sprintf(str_pos, "%lds%09ldns", > + g_string_append_printf(string_buffer, > "%lds%09ldns", > elapse.tv_sec, elapse.tv_nsec); > break; > case 'a': > - > strcpy(str_pos,g_quark_to_string(process->state->t)); > - str_pos = str_pos + > strlen(g_quark_to_string(process->state->t)); > + g_string_append(string_buffer, > + > g_quark_to_string(process->state->t)); > break; > case 'm': > { > - GString *marker = g_string_new(0); > - > /* Get and print markers and > tracepoints fields into 'marker' */ > - if(marker_get_num_fields(info) == 0) > return; > + if (marker_get_num_fields(info) == 0) > break; > for (field = marker_get_field(info, 0); > field != > marker_get_field(info, marker_get_num_fields(info)); > field++) { > - if(field != > marker_get_field(info, 0)) { > - > g_string_append_printf(marker, ", "); > + if (field != > marker_get_field(info, 0)) { > + > g_string_append(string_buffer, ", "); > } > - lttv_print_field(e, field, > marker, field_names, tfs); > - > + lttv_print_field(e, field, > string_buffer, field_names, tfs); > } > - strcpy(str_pos,marker->str); > - str_pos = str_pos + marker->len; > - g_string_free(marker,0); > } > break; > case 'r': > - strcpy(str_pos,g_quark_to_string(ltt_trace_name > - > (ltt_tracefile_get_trace(tfs->parent.tf)))); > - str_pos = str_pos + > strlen(g_quark_to_string(ltt_trace_name > - > (ltt_tracefile_get_trace(tfs->parent.tf)))); > + g_string_append(string_buffer, > g_quark_to_string( > + > ltt_trace_name(ltt_tracefile_get_trace(tfs->parent.tf)))); > break; > case '%': > - *str_pos = '%'; > - str_pos = str_pos + 1; > + g_string_append_c(string_buffer, '%'); > break; > case 'y': > - str_pos += sprintf(str_pos, "0x%" PRIx64, > + g_string_append_printf(string_buffer, "0x%" > PRIx64, > process->current_function); > break; > > @@ -280,12 +257,9 @@ void lttv_event_to_string(LttEvent *e, GString *s, > gboolean mandatory_fields, > else > { > /* Copy every character if not equals to '%' */ > - *str_pos = fmt[i]; > - str_pos++; > + g_string_append_c(string_buffer, fmt[i]); > } > } > - *str_pos = '\0'; > - g_string_append_printf(s, "%s", str); > } > > static void init() > @@ -311,10 +285,10 @@ static void init() > "output the desired format\n\ > FORMAT controls the output. Interpreted sequences > are:\n\ > \n\ > - %f tracefile name\n\ > - %r path to trace\n\ > - %e event name\n\ > + %f channel name\n\ > %p process name\n\ > + %e event name\n\ > + %r path to trace\n\ > %t timestamp (e.g., 2h08m54s025684145ns)\n\ > %s seconds\n\ > %n nanoseconds\n\ > @@ -325,6 +299,7 @@ static void init() > %c cpu\n\ > %b brand\n\ > %a state\n\ > + %y memory address\n\ > %m markers and tracepoints fields\n", > "format string", > LTTV_OPT_STRING, &a_format, NULL, NULL); > -- > 1.7.0.4 > > > _______________________________________________ > ltt-dev mailing list > [email protected] > http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev > -- Mathieu Desnoyers Operating System Efficiency R&D Consultant EfficiOS Inc. http://www.efficios.com _______________________________________________ ltt-dev mailing list [email protected] http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev
