dot-dump: terminate truncated strings and escape special chars

Fixes syntax errors in generated dot files for caps with strings.
This commit is contained in:
Stefan Kost 2010-06-25 21:23:22 +03:00
parent 27b4868157
commit 8fffa2d790

View file

@ -234,6 +234,7 @@ string_append_field (GQuark field, const GValue * value, gpointer ptr)
{ {
GString *str = (GString *) ptr; GString *str = (GString *) ptr;
gchar *value_str = gst_value_serialize (value); gchar *value_str = gst_value_serialize (value);
gchar *esc_value_str;
/* some enums can become really long */ /* some enums can become really long */
if (strlen (value_str) > 25) { if (strlen (value_str) > 25) {
@ -242,7 +243,7 @@ string_append_field (GQuark field, const GValue * value, gpointer ptr)
/* truncate */ /* truncate */
value_str[25] = '\0'; value_str[25] = '\0';
/* mirror any brackets */ /* mirror any brackets and quotes */
if (value_str[0] == '<') if (value_str[0] == '<')
value_str[pos--] = '>'; value_str[pos--] = '>';
if (value_str[0] == '[') if (value_str[0] == '[')
@ -251,6 +252,8 @@ string_append_field (GQuark field, const GValue * value, gpointer ptr)
value_str[pos--] = ')'; value_str[pos--] = ')';
if (value_str[0] == '{') if (value_str[0] == '{')
value_str[pos--] = '}'; value_str[pos--] = '}';
if (value_str[0] == '"')
value_str[pos--] = '"';
if (pos != 24) if (pos != 24)
value_str[pos--] = ' '; value_str[pos--] = ' ';
/* elippsize */ /* elippsize */
@ -258,10 +261,13 @@ string_append_field (GQuark field, const GValue * value, gpointer ptr)
value_str[pos--] = '.'; value_str[pos--] = '.';
value_str[pos--] = '.'; value_str[pos--] = '.';
} }
esc_value_str = g_strescape (value_str, NULL);
g_string_append_printf (str, " %18s: %s\\l", g_quark_to_string (field), g_string_append_printf (str, " %18s: %s\\l", g_quark_to_string (field),
value_str); esc_value_str);
g_free (value_str); g_free (value_str);
g_free (esc_value_str);
return TRUE; return TRUE;
} }