33 lines
650 B
Diff
33 lines
650 B
Diff
|
--- builtins/printf.def
|
||
|
+++ builtins/printf.def 2006-07-27 17:11:19.000000000 +0200
|
||
|
@@ -37,6 +37,7 @@ shell variable VAR rather than being sen
|
||
|
$END
|
||
|
|
||
|
#include <config.h>
|
||
|
+#include <locale.h>
|
||
|
|
||
|
#include "../bashtypes.h"
|
||
|
|
||
|
@@ -501,12 +502,20 @@ printf_builtin (list)
|
||
|
case 'A':
|
||
|
#endif
|
||
|
{
|
||
|
- char *f;
|
||
|
+ char *f, *lce = getenv("LC_NUMERIC"), *lcl = setlocale(LC_NUMERIC, NULL);
|
||
|
floatmax_t p;
|
||
|
|
||
|
p = getfloatmax ();
|
||
|
f = mklong (start, FLOATMAX_CONV, sizeof(FLOATMAX_CONV) - 1);
|
||
|
+
|
||
|
+ if (lce && lcl)
|
||
|
+ setlocale(LC_NUMERIC, lce);
|
||
|
+
|
||
|
PF (f, p);
|
||
|
+
|
||
|
+ if (lce && lcl)
|
||
|
+ setlocale(LC_NUMERIC, lcl);
|
||
|
+
|
||
|
break;
|
||
|
}
|
||
|
|