From 736712ef1e87d38e52e502d859cca2dcad56a3ce Mon Sep 17 00:00:00 2001
From: scuri <scuri>
Date: Tue, 19 Oct 2010 15:48:26 +0000
Subject: *** empty log message ***

---
 src/drv/cdps.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

(limited to 'src/drv')

diff --git a/src/drv/cdps.c b/src/drv/cdps.c
index 08d6ba7..0db3590 100644
--- a/src/drv/cdps.c
+++ b/src/drv/cdps.c
@@ -9,6 +9,7 @@
 #include <string.h>
 #include <time.h>
 #include <math.h>
+#include <locale.h>
 
 #include "cd.h"
 #include "cd_private.h"
@@ -64,6 +65,7 @@ struct _cdCtxCanvas
   int level1;            /* if true generates level 1 only function calls */
   int landscape;         /* page orientation */
   int debug;             /* print debug strings in the file */
+  char* old_locale;
 
   float  rotate_angle;
   int    rotate_center_x,
@@ -391,6 +393,12 @@ static void cdkillcanvas(cdCtxCanvas *ctxcanvas)
 
   fclose(ctxcanvas->file);
 
+  if (ctxcanvas->old_locale)
+  {
+    setlocale(LC_NUMERIC, ctxcanvas->old_locale);
+    free(ctxcanvas->old_locale);
+  }
+
   memset(ctxcanvas, 0, sizeof(cdCtxCanvas));
   free(ctxcanvas);
 }
@@ -1965,6 +1973,10 @@ static void cdcreatecanvas(cdCanvas* canvas, void *data)
   ctxcanvas = (cdCtxCanvas *)malloc(sizeof(cdCtxCanvas));
   memset(ctxcanvas, 0, sizeof(cdCtxCanvas));
 
+  /* SVN specification states that number must use dot as decimal separator */
+  ctxcanvas->old_locale = cdStrDup(setlocale(LC_NUMERIC, NULL));
+  setlocale(LC_NUMERIC, "C");
+
   line += cdGetFileName(line, filename);
   if (filename[0] == 0)
     return;
-- 
cgit v1.2.3