Add macros for Windows to provide strtoull and strtoll
authorEmden Gansner <erg@research.att.com>
Thu, 23 Feb 2012 14:42:54 +0000 (09:42 -0500)
committerEmden Gansner <erg@research.att.com>
Thu, 23 Feb 2012 14:42:54 +0000 (09:42 -0500)
lib/expr/exeval.c
lib/expr/exgram.h
lib/expr/exlib.h

index 8c3cbcf7c56f0b624333f41b57480f8772669ef0..d12eb47563e329029f0501b33da410f30dc8baed 100644 (file)
@@ -1786,7 +1786,7 @@ eval(Expr_t* ex, register Exnode_t* expr, void* env)
                        if ((*ex->disc->convertf)(ex, &tmp, INTEGER, expr->data.operand.right ? expr->data.operand.right->data.variable.symbol : (Exid_t*)0, 0, ex->disc))
                        {
                                if (v.string) {
-                                       tmp.data.constant.value.integer = strToL(v.string, &e);
+                                       tmp.data.constant.value.integer = strtoll(v.string, &e, 0);
                     if (*e)
                         tmp.data.constant.value.integer = *v.string != 0;
                                }
@@ -1889,6 +1889,7 @@ exeval(Expr_t* ex, Exnode_t* expr, void* env)
        return v;
 }
 
+#if 0
 /* strToL:
  * Convert a string representation of an integer
  * to an integer. The string can specify its own form
@@ -1914,6 +1915,7 @@ Sflong_t strToL(char *s, char **p)
        sfsscanf(s, "%I*i", sizeof(v), &v);
     return v;
 }
+#endif
 
 /* exstring:
  * Generate copy of input string using
index 9de314082444cf4d1573ac5bc3e002953a741a44..baad996e1b81b24d7e69c70f315c8fedb47409ed 100644 (file)
@@ -529,7 +529,7 @@ excast(Expr_t* p, register Exnode_t* x, register int type, register Exnode_t* xr
                        break;
                case S2I:
                        s = x->data.constant.value.string;
-                       x->data.constant.value.integer = strToL(s, &e);
+                       x->data.constant.value.integer = strtoll(s, &e, 0);
                        if (*e)
                                x->data.constant.value.integer = (*s != 0);
                        break;
index 6fe96e5b8c2a98bd7510259b42d9489ae3af2d42..1ab24efa7037129374edd829f85a26d7df97363b 100644 (file)
@@ -183,6 +183,10 @@ extern const char* exversion;
 extern Exstate_t       expr;
 
 extern int             exparse(void);  /* yacc should do this          */
+#if defined(WIN32)
+#define strtoll _strtoi64
+#define strtoull _strtoui64
+#endif
 extern Sflong_t                strToL(char *, char **);
 
 #endif