mirror of
https://github.com/VDR4Arch/vdr.git
synced 2023-10-10 13:36:52 +02:00
Only handling decimal point in atod() and dtoa() if it differs from '.'
This commit is contained in:
parent
a94f45a1b3
commit
bc0b67e630
14
tools.c
14
tools.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: tools.c 2.28 2012/12/06 09:40:02 kls Exp $
|
||||
* $Id: tools.c 2.29 2012/12/07 09:00:00 kls Exp $
|
||||
*/
|
||||
|
||||
#include "tools.h"
|
||||
@ -303,13 +303,16 @@ cString AddDirectory(const char *DirName, const char *FileName)
|
||||
return cString::sprintf("%s/%s", DirName && *DirName ? DirName : ".", FileName);
|
||||
}
|
||||
|
||||
#define DECIMAL_POINT_C '.'
|
||||
|
||||
double atod(const char *s)
|
||||
{
|
||||
static lconv *loc = localeconv();
|
||||
if (*loc->decimal_point != DECIMAL_POINT_C) {
|
||||
char buf[strlen(s) + 1];
|
||||
char *p = buf;
|
||||
while (*s) {
|
||||
if (*s == '.')
|
||||
if (*s == DECIMAL_POINT_C)
|
||||
*p = *loc->decimal_point;
|
||||
else
|
||||
*p = *s;
|
||||
@ -318,6 +321,9 @@ double atod(const char *s)
|
||||
}
|
||||
*p = 0;
|
||||
return atof(buf);
|
||||
}
|
||||
else
|
||||
return atof(s);
|
||||
}
|
||||
|
||||
cString dtoa(double d, const char *Format)
|
||||
@ -325,7 +331,9 @@ cString dtoa(double d, const char *Format)
|
||||
static lconv *loc = localeconv();
|
||||
char buf[16];
|
||||
snprintf(buf, sizeof(buf), Format, d);
|
||||
return strreplace(buf, *loc->decimal_point, '.');
|
||||
if (*loc->decimal_point != DECIMAL_POINT_C)
|
||||
strreplace(buf, *loc->decimal_point, DECIMAL_POINT_C);
|
||||
return buf;
|
||||
}
|
||||
|
||||
cString itoa(int n)
|
||||
|
Loading…
Reference in New Issue
Block a user