PsppireOutputWindow (create_xr_print_driver) fix LC_NUMERIC issues.
authorJohn Darrington <john@darrington.wattle.id.au>
Wed, 19 Dec 2012 10:59:09 +0000 (11:59 +0100)
committerJohn Darrington <john@darrington.wattle.id.au>
Wed, 19 Dec 2012 12:01:55 +0000 (13:01 +0100)
This function used *printf with a %f directive, which  under certain
locales would have generated a string like "270,00x210,00mm" which the
print driver would have rejected.
This change uses the newly available c_xasprintf function from gnulib
to alleviate this problem.

Smake
src/ui/gui/psppire-output-window.c

diff --git a/Smake b/Smake
index 1fd4ac3d1434a03552186771269fe4abd8705597..f82f4f444273bc0a79142acb2c551d029d7e03ca 100644 (file)
--- a/Smake
+++ b/Smake
@@ -12,6 +12,7 @@ GNULIB_MODULES = \
        c-strcasestr \
        c-ctype \
        c-strtod \
+       c-xvasprintf \
        clean-temp \
        close \
        configmake \
index 61f3bbdd28f70c28dc4fd54a910b21e08a0cce09..d1d7e89166154b849352028d9858ab1a5ab4267b 100644 (file)
@@ -41,6 +41,7 @@
 #include "gl/error.h"
 #include "gl/tmpdir.h"
 #include "gl/xalloc.h"
+#include "gl/c-xvasprintf.h"
 
 #include "helper.h"
 
@@ -1049,7 +1050,6 @@ psppire_output_window_new (void)
                                   NULL));
 }
 
-
 \f
 static void
 create_xr_print_driver (GtkPrintContext *context, PsppireOutputWindow *window)
@@ -1072,15 +1072,15 @@ create_xr_print_driver (GtkPrintContext *context, PsppireOutputWindow *window)
 
   string_map_init (&options);
   string_map_insert_nocopy (&options, xstrdup ("paper-size"),
-                            xasprintf("%.2fx%.2fmm", width, height));
+                            c_xasprintf("%.2fx%.2fmm", width, height));
   string_map_insert_nocopy (&options, xstrdup ("left-margin"),
-                            xasprintf ("%.2fmm", left_margin));
+                            c_xasprintf ("%.2fmm", left_margin));
   string_map_insert_nocopy (&options, xstrdup ("right-margin"),
-                            xasprintf ("%.2fmm", right_margin));
+                            c_xasprintf ("%.2fmm", right_margin));
   string_map_insert_nocopy (&options, xstrdup ("top-margin"),
-                            xasprintf ("%.2fmm", top_margin));
+                            c_xasprintf ("%.2fmm", top_margin));
   string_map_insert_nocopy (&options, xstrdup ("bottom-margin"),
-                            xasprintf ("%.2fmm", bottom_margin));
+                            c_xasprintf ("%.2fmm", bottom_margin));
 
   window->print_xrd =
     xr_driver_create (gtk_print_context_get_cairo_context (context), &options);