X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fsyntax-gen.c;h=dca3bd3c5b3cb778dde442553cebd40c83c23152;hb=37e80366f1930cd7043a79e0dcb1dfd282f678d3;hp=bcec18e5565bab56169eee50766d541c9f5e0999;hpb=fe8dc2171009e90d2335f159d05f7e6660e24780;p=pspp diff --git a/src/ui/syntax-gen.c b/src/ui/syntax-gen.c index bcec18e556..dca3bd3c5b 100644 --- a/src/ui/syntax-gen.c +++ b/src/ui/syntax-gen.c @@ -30,6 +30,7 @@ #include "libpspp/i18n.h" #include "libpspp/message.h" #include "libpspp/str.h" +#include "libpspp/misc.h" #include "gl/ftoastr.h" @@ -176,7 +177,7 @@ syntax_gen_number (struct string *output, { char s[DBL_BUFSIZE_BOUND]; - dtoastr (s, sizeof s, 0, 0, number); + c_dtoastr (s, sizeof s, 0, 0, number); ds_put_cstr (output, s); } } @@ -231,6 +232,7 @@ syntax_gen_pspp_valist (struct string *output, const char *format, { for (;;) { + char directive; size_t copy = strcspn (format, "%"); ds_put_substring (output, ss_buffer (format, copy)); format += copy; @@ -239,7 +241,8 @@ syntax_gen_pspp_valist (struct string *output, const char *format, return; assert (*format == '%'); format++; - switch (*format++) + directive = *format++; + switch (directive) { case 's': { @@ -266,16 +269,14 @@ syntax_gen_pspp_valist (struct string *output, const char *format, break; case 'f': + case 'g': { + char conv[3]; double d = va_arg (args, double); - switch (*format++) - { - case 'p': - ds_put_format (output, "%f", d); - break; - default: - NOT_REACHED (); - } + conv[0]='%'; + conv[1]=directive; + conv[2]='\0'; + ds_put_c_format (output, conv, d); break; }