Blob Blame History Raw
diff -up gutenprint-5.2.2/src/cups/genppd.c.locale gutenprint-5.2.2/src/cups/genppd.c
--- gutenprint-5.2.2/src/cups/genppd.c.locale	2008-09-26 00:41:00.000000000 +0100
+++ gutenprint-5.2.2/src/cups/genppd.c	2008-12-05 13:46:48.000000000 +0000
@@ -1,5 +1,5 @@
 /*
- * "$Id: genppd.c,v 1.170 2008/09/25 23:41:00 rlk Exp $"
+ * "$Id: genppd.c,v 1.171 2008/12/05 03:27:20 easysw Exp $"
  *
  *   PPD file generation program for the CUPS drivers.
  *
@@ -200,6 +200,13 @@ int				    /* O - Exit status */
 main(int  argc,			    /* I - Number of command-line arguments */
      char *argv[])		    /* I - Command-line arguments */
 {
+ /*
+  * Force POSIX locale, since stp_init incorrectly calls setlocale...
+  */
+
+  putenv((char *)"LANG=C");
+  putenv((char *)"LC_ALL=C");
+  putenv((char *)"LC_NUMERIC=C");
 
  /*
   * Initialise libgutenprint
@@ -893,6 +900,7 @@ write_ppd(
 		min_height,
 		max_width,
 		max_height;
+  char		dimstr[255];		/* Dimension string */
   stp_parameter_t desc;
   stp_parameter_list_t param_list;
   const stp_param_string_t *opt;
@@ -1794,13 +1802,10 @@ write_ppd(
 		      for (i = desc.bounds.dimension.lower;
 			   i <= desc.bounds.dimension.upper; i++)
 			{
-			  /* FIXME
-			   * For now, just use mm; we'll fix it later
-			   * for the locale-appropriate setting.
-			   * --rlk 20040818
-			   */
-			  gzprintf(fp, "*Stp%s %d/%.1f mm: \"\"\n",
-				   desc.name, i, ((double) i) * 25.4 / 72);
+			  snprintf(dimstr, sizeof(dimstr), _("%.1f mm"),
+			           (double)i * 25.4 / 72.0);
+			  gzprintf(fp, "*Stp%s %d/%s: \"\"\n",
+				   desc.name, i, dimstr);
 			}
 
 		      print_close_ui = 0;
@@ -2197,19 +2202,14 @@ write_ppd(
 			  if (!desc.is_mandatory)
 			    gzprintf(fp, "*%s.Stp%s %s/%s: \"\"\n", lang, desc.name,
 				     "None", _("None"));
-			  if (localize_numbers)
+			  /* Unlike the other fields, dimensions are not strictly numbers */
+			  for (i = desc.bounds.dimension.lower;
+			       i <= desc.bounds.dimension.upper; i++)
 			    {
-			      for (i = desc.bounds.dimension.lower;
-				   i <= desc.bounds.dimension.upper; i++)
-				{
-				  /* FIXME
-				   * For now, just use mm; we'll fix it later
-				   * for the locale-appropriate setting.
-				   * --rlk 20040818
-				   */
-				  gzprintf(fp, "*%s.Stp%s %d/%.1f mm: \"\"\n", lang,
-					   desc.name, i, ((double) i) * 25.4 / 72);
-				}
+			      snprintf(dimstr, sizeof(dimstr), _("%.1f mm"),
+				       (double)i * 25.4 / 72.0);
+			      gzprintf(fp, "*%s.Stp%s %d/%s: \"\"\n", lang,
+				       desc.name, i, dimstr);
 			    }
 			  gzprintf(fp, "*%s.ParamCustomStp%s Value/%s: \"\"\n", lang,
 				   desc.name, _("Value"));
@@ -2320,5 +2320,5 @@ write_ppd(
 
 
 /*
- * End of "$Id: genppd.c,v 1.170 2008/09/25 23:41:00 rlk Exp $".
+ * End of "$Id: genppd.c,v 1.171 2008/12/05 03:27:20 easysw Exp $".
  */