Update all #include directives to the currently preferred style.
[pspp-builds.git] / src / ui / syntax-gen.c
index 35de44da0dc9dfe71e1ba9cb3ae2a19883b47192..bcec18e5565bab56169eee50766d541c9f5e0999 100644 (file)
@@ -1,5 +1,5 @@
 /* PSPPIRE - a graphical user interface for PSPP.
-   Copyright (C) 2008, 2010 Free Software Foundation, Inc.
+   Copyright (C) 2008, 2010, 2011 Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
 
 #include <config.h>
 
-#include <ui/syntax-gen.h>
+#include "ui/syntax-gen.h"
 
 #include <ctype.h>
 #include <mbchar.h>
 #include "data/value.h"
 #include "libpspp/assertion.h"
 #include "libpspp/cast.h"
+#include "libpspp/i18n.h"
 #include "libpspp/message.h"
 #include "libpspp/str.h"
 
+#include "gl/ftoastr.h"
+
 /* Appends to OUTPUT a pair of hex digits for each byte in IN. */
 static void
 syntax_gen_hex_digits (struct string *output, struct substring in)
@@ -154,8 +157,7 @@ syntax_gen_number (struct string *output,
       s = data_out (&v_in, "FIXME",  format);
 
       /* FIXME: UTF8 encoded strings will fail here */
-      error = data_in (ss_cstr (s), LEGACY_NATIVE,
-                       format->type, &v_out, 0, NULL);
+      error = data_in (ss_cstr (s), C_ENCODING, format->type, &v_out, 0, NULL);
       ok = error == NULL;
       free (error);
 
@@ -172,18 +174,10 @@ syntax_gen_number (struct string *output,
     ds_put_cstr (output, "SYSMIS");
   else
     {
-      /* FIXME: This should consistently yield precisely the same
-         value as NUMBER on input, but its results for values
-         cannot be exactly represented in decimal are ugly: many
-         of them will have far more decimal digits than are
-         needed.  The free-format floating point output routine
-         from Steele and White, "How to Print Floating-Point
-         Numbers Accurately" is really what we want.  The MPFR
-         library has an implementation of this, or equivalent
-         functionality, in its mpfr_strtofr routine, but it would
-         not be nice to make PSPP depend on this.  Probably, we
-         should implement something equivalent to it. */
-      ds_put_format (output, "%.*g", DBL_DIG + 1, number);
+      char s[DBL_BUFSIZE_BOUND];
+
+      dtoastr (s, sizeof s, 0, 0, number);
+      ds_put_cstr (output, s);
     }
 }