diff options
Diffstat (limited to 'src/cmscgats.c')
-rw-r--r-- | src/cmscgats.c | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/src/cmscgats.c b/src/cmscgats.c index 378392c..433c39e 100644 --- a/src/cmscgats.c +++ b/src/cmscgats.c @@ -43,6 +43,7 @@ #else # define DIR_CHAR '/' #endif +#include <stdio.h> // Symbols typedef enum { @@ -406,11 +407,29 @@ cmsBool isabsolutepath(const char *path) } // Parses float number +// This can not call directly atof because it uses locale dependant +// parsing, while CCMX files always use . as decimal separator static cmsFloat64Number ParseFloatNumber(const char *Buffer) { + char *tmp, *pos, number[10]; + cmsFloat64Number ret; + if (Buffer) { - return atof(Buffer); + // Try to detect which decimal separator current locale uses + sprintf(number, "%f", 0.5); + // Is locale specific comma different? + if (number[1] == '.') { + return atof(Buffer); + } else { + tmp = strdup(Buffer); + while ((pos = strchr(tmp, '.')) != NULL) { + *pos = number[1]; + } + ret = atof(tmp); + free(tmp); + return ret; + } } else { return 0.0; } |