aboutsummaryrefslogtreecommitdiffstats
path: root/epan/stats_tree.c
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2013-12-01 15:44:22 +0000
committerMichael Mann <mmann78@netscape.net>2013-12-01 15:44:22 +0000
commit0c9aa51ec532fec52a91c3b8d871e02087ee772f (patch)
tree7020bc97fff5778aaf1ed692c60f78e55f29c270 /epan/stats_tree.c
parent98c8454dd635fb96a638839c9956a96bdfe76152 (diff)
Patch to include YAML export. Bug 9452 (https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9452)
From Deon van der Westhuysen From me: use switch statements instead of if-else svn path=/trunk/; revision=53698
Diffstat (limited to 'epan/stats_tree.c')
-rw-r--r--epan/stats_tree.c63
1 files changed, 47 insertions, 16 deletions
diff --git a/epan/stats_tree.c b/epan/stats_tree.c
index 39928ff5f2..7498dfb491 100644
--- a/epan/stats_tree.c
+++ b/epan/stats_tree.c
@@ -1100,7 +1100,7 @@ stats_tree_get_column_size (gint col_index)
return 36; /* but caller should really call stats_tree_branch_max_namelen() */
}
if (col_index<N_COLUMNS) {
- return 12; /* all numerica values this size */
+ return 12; /* all numerical values are this size */
}
return 0; /* invalid column */
}
@@ -1250,17 +1250,23 @@ stats_tree_format_as_str(const stats_tree* st, st_format_type format_type,
int count;
gchar *separator = NULL;
- if (format_type==ST_FORMAT_XML) {
+ switch(format_type)
+ {
+ case ST_FORMAT_YAML:
+ s = g_string_new("---\n");
+ break;
+ case ST_FORMAT_XML:
s = g_string_new("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n");
- }
- else if (format_type==ST_FORMAT_CSV) {
+ break;
+ case ST_FORMAT_CSV:
s = g_string_new("\"level\",\"parent\",");
for (count = 0; count<st->num_columns; count++) {
g_string_append_printf(s,"\"%s\",",stats_tree_get_column_name(count));
}
g_string_append (s,"\n");
- }
- else if (format_type==ST_FORMAT_PLAIN) {
+ break;
+ case ST_FORMAT_PLAIN:
+ {
char fmt[16];
int sep_length;
@@ -1283,8 +1289,9 @@ stats_tree_format_as_str(const stats_tree* st, st_format_type format_type,
}
memset (separator, '-', sep_length);
g_string_append_printf(s,"\n%s\n",separator);
- }
- else {
+ }
+ break;
+ default:
return g_string_new("unknown format for stats_tree\n");
}
@@ -1367,30 +1374,53 @@ WS_DLL_PUBLIC void stats_tree_format_node_as_str(const stat_node *node,
stat_node *child;
sortinfo si;
gchar *full_path;
+ char fmt[16];
- if (format_type==ST_FORMAT_XML) {
+ switch(format_type)
+ {
+ case ST_FORMAT_YAML:
+ if (indent) {
+ g_sprintf(fmt, "%%%ds%%s%%s", indent*4-2);
+ }
+ else {
+ strcpy(fmt, "%s%s%s");
+ }
+ g_string_append_printf(s, fmt, "", indent?"- ":"", "Description");
+ g_string_append_printf(s, ": \"%s\"\n", values[0]);
+
+ for (count = 1; count<num_columns; count++) {
+ if (*values[count]) {
+ g_string_append_printf(s, fmt, "", indent?" ":"",
+ stats_tree_get_column_name(count));
+ g_string_append_printf(s, ": %s\n", values[count]);
+ }
+ }
+ if (node->children) {
+ g_string_append_printf(s, fmt, "", indent?" ":"", "Items:\n");
+ }
+ break;
+ case ST_FORMAT_XML:
+ {
GString *itemname= escape_xml_chars(values[0]);
g_string_append_printf(s,"<stat-node name=\"%s\"%s>\n",itemname->str,
node->rng?" isrange=\"true\"":"");
g_string_free(itemname,TRUE);
- g_string_append(s,"");
for (count = 1; count<num_columns; count++) {
gchar *colname= g_strdup(stats_tree_get_column_name(count));
g_string_append_printf(s,"<%s>",clean_for_xml_tag(colname));
g_string_append_printf(s,"%s</%s>\n",values[count],colname);
g_free(colname);
}
- }
- else if (format_type==ST_FORMAT_CSV) {
+ }
+ break;
+ case ST_FORMAT_CSV:
g_string_append_printf(s,"%d,\"%s\",\"%s\"",indent,path,values[0]);
for (count = 1; count<num_columns; count++) {
g_string_append_printf(s,",%s",values[count]);
}
g_string_append (s,"\n");
- }
- else if (format_type==ST_FORMAT_PLAIN) {
- char fmt[16];
-
+ break;
+ case ST_FORMAT_PLAIN:
g_sprintf (fmt,"%%%ds%%-%us",indent,maxnamelen-indent);
g_string_append_printf(s,fmt,"",values[0]);
for (count = 1; count<num_columns; count++) {
@@ -1398,6 +1428,7 @@ WS_DLL_PUBLIC void stats_tree_format_node_as_str(const stat_node *node,
g_string_append_printf(s,fmt,values[count]);
}
g_string_append (s,"\n");
+ break;
}
indent++;