aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backend/utils/adt/numutils.c36
1 files changed, 29 insertions, 7 deletions
diff --git a/src/backend/utils/adt/numutils.c b/src/backend/utils/adt/numutils.c
index dd33d410819..07bb1b6fda0 100644
--- a/src/backend/utils/adt/numutils.c
+++ b/src/backend/utils/adt/numutils.c
@@ -10,13 +10,16 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/numutils.c,v 1.16 1997/09/18 20:22:15 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/numutils.c,v 1.17 1997/11/17 16:26:27 thomas Exp $
*
*-------------------------------------------------------------------------
*/
#include <stdio.h> /* for sprintf() */
#include <errno.h>
#include <math.h>
+#ifdef HAVE_LIMITS
+#include <limits.h>
+#endif
#include "postgres.h"
#include "utils/builtins.h" /* where the declarations go */
#ifndef HAVE_MEMMOVE
@@ -26,6 +29,25 @@
#endif
#include <port-protos.h> /* ecvt(), fcvt() */
+#ifndef INT_MAX
+#define INT_MAX (0x7FFFFFFFL)
+#endif
+#ifndef INT_MIN
+#define INT_MIN (-0x80000000L)
+#endif
+#ifndef SHRT_MAX
+#define SHRT_MAX (0x7FFF)
+#endif
+#ifndef SHRT_MIN
+#define SHRT_MIN (-0x8000)
+#endif
+#ifndef SCHAR_MAX
+#define SCHAR_MAX (0x7F)
+#endif
+#ifndef SCHAR_MIN
+#define SCHAR_MIN (-0x80)
+#endif
+
int32
pg_atoi(char *s, int size, int c)
{
@@ -46,12 +68,12 @@ pg_atoi(char *s, int size, int c)
case sizeof(int32):
#ifdef HAS_LONG_LONG
/* won't get ERANGE on these with 64-bit longs... */
- if (l < -0x80000000L)
+ if (l < INT_MIN)
{
errno = ERANGE;
elog(WARN, "pg_atoi: error reading \"%s\": %m", s);
}
- if (l > 0x7fffffffL)
+ if (l > INT_MAX)
{
errno = ERANGE;
elog(WARN, "pg_atoi: error reading \"%s\": %m", s);
@@ -59,24 +81,24 @@ pg_atoi(char *s, int size, int c)
#endif /* HAS_LONG_LONG */
break;
case sizeof(int16):
- if (l < -0x8000)
+ if (l < SHRT_MIN)
{
errno = ERANGE;
elog(WARN, "pg_atoi: error reading \"%s\": %m", s);
}
- if (l > 0x7fff)
+ if (l > SHRT_MAX)
{
errno = ERANGE;
elog(WARN, "pg_atoi: error reading \"%s\": %m", s);
}
break;
case sizeof(int8):
- if (l < -0x80)
+ if (l < SCHAR_MIN)
{
errno = ERANGE;
elog(WARN, "pg_atoi: error reading \"%s\": %m", s);
}
- if (l > 0x7f)
+ if (l > SCHAR_MAX)
{
errno = ERANGE;
elog(WARN, "pg_atoi: error reading \"%s\": %m", s);