diff options
Diffstat (limited to 'gdb/xml-support.c')
-rw-r--r-- | gdb/xml-support.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/gdb/xml-support.c b/gdb/xml-support.c index 0809844e7c5..e7f6279ae89 100644 --- a/gdb/xml-support.c +++ b/gdb/xml-support.c @@ -997,6 +997,45 @@ xml_escape_text (const char *text) return result; } +void +obstack_xml_printf (struct obstack *obstack, const char *format, ...) +{ + va_list ap; + const char *f; + const char *prev; + int percent = 0; + + va_start (ap, format); + + prev = format; + for (f = format; *f; f++) + { + if (percent) + { + switch (*f) + { + case 's': + { + char *p; + char *a = va_arg (ap, char *); + obstack_grow (obstack, prev, f - prev - 1); + p = xml_escape_text (a); + obstack_grow_str (obstack, p); + xfree (p); + prev = f + 1; + } + break; + } + percent = 0; + } + else if (*f == '%') + percent = 1; + } + + obstack_grow_str (obstack, prev); + va_end (ap); +} + void _initialize_xml_support (void); void |