projects
/
rrdtool.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
support for dashed lines in graphs
[rrdtool.git]
/
src
/
rrd_rpncalc.c
diff --git
a/src/rrd_rpncalc.c
b/src/rrd_rpncalc.c
index
7953320
..
ed08662
100644
(file)
--- a/
src/rrd_rpncalc.c
+++ b/
src/rrd_rpncalc.c
@@
-1,5
+1,5
@@
/****************************************************************************
/****************************************************************************
- * RRDtool 1.2.
23
Copyright by Tobi Oetiker, 1997-2007
+ * RRDtool 1.2.
99907080300
Copyright by Tobi Oetiker, 1997-2007
****************************************************************************
* rrd_rpncalc.c RPN calculator functions
****************************************************************************/
****************************************************************************
* rrd_rpncalc.c RPN calculator functions
****************************************************************************/
@@
-8,6
+8,7
@@
#include "rrd_rpncalc.h"
#include "rrd_graph.h"
#include <limits.h>
#include "rrd_rpncalc.h"
#include "rrd_graph.h"
#include <limits.h>
+#include <locale.h>
short addop2str(
enum op_en op,
short addop2str(
enum op_en op,
@@
-287,6
+288,9
@@
rpnp_t *rpn_parse(
long steps = -1;
rpnp_t *rpnp;
char vname[MAX_VNAME_LEN + 10];
long steps = -1;
rpnp_t *rpnp;
char vname[MAX_VNAME_LEN + 10];
+ char *old_locale;
+
+ old_locale = setlocale(LC_NUMERIC, "C");
rpnp = NULL;
expr = (char *) expr_const;
rpnp = NULL;
expr = (char *) expr_const;
@@
-294,6
+298,7
@@
rpnp_t *rpn_parse(
while (*expr) {
if ((rpnp = (rpnp_t *) rrd_realloc(rpnp, (++steps + 2) *
sizeof(rpnp_t))) == NULL) {
while (*expr) {
if ((rpnp = (rpnp_t *) rrd_realloc(rpnp, (++steps + 2) *
sizeof(rpnp_t))) == NULL) {
+ setlocale(LC_NUMERIC, old_locale);
return NULL;
}
return NULL;
}
@@
-306,8
+311,7
@@
rpnp_t *rpn_parse(
else if (strncmp(expr, #VVV, strlen(#VVV))==0 && ( expr[strlen(#VVV)] == ',' || expr[strlen(#VVV)] == '\0' )){ \
rpnp[steps].op = VV; \
expr+=strlen(#VVV); \
else if (strncmp(expr, #VVV, strlen(#VVV))==0 && ( expr[strlen(#VVV)] == ',' || expr[strlen(#VVV)] == '\0' )){ \
rpnp[steps].op = VV; \
expr+=strlen(#VVV); \
- }
-
+ }
#define match_op_param(VV,VVV) \
else if (sscanf(expr, #VVV "(" DEF_NAM_FMT ")",vname) == 1) { \
#define match_op_param(VV,VVV) \
else if (sscanf(expr, #VVV "(" DEF_NAM_FMT ")",vname) == 1) { \
@@
-379,19
+383,23
@@
rpnp_t *rpn_parse(
}
else {
}
else {
+ setlocale(LC_NUMERIC, old_locale);
free(rpnp);
return NULL;
}
free(rpnp);
return NULL;
}
+
if (*expr == 0)
break;
if (*expr == ',')
expr++;
else {
if (*expr == 0)
break;
if (*expr == ',')
expr++;
else {
+ setlocale(LC_NUMERIC, old_locale);
free(rpnp);
return NULL;
}
}
rpnp[steps + 1].op = OP_END;
free(rpnp);
return NULL;
}
}
rpnp[steps + 1].op = OP_END;
+ setlocale(LC_NUMERIC, old_locale);
return rpnp;
}
return rpnp;
}