Use limits.h for INT, SHRT, and SCHAR min and max values rather than

hardcoded values.
This commit is contained in:
Thomas G. Lockhart 1997-11-17 16:26:27 +00:00
parent 174f984b76
commit 2fa330284c
1 changed files with 29 additions and 7 deletions

View File

@ -10,13 +10,16 @@
* *
* *
* IDENTIFICATION * 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 <stdio.h> /* for sprintf() */
#include <errno.h> #include <errno.h>
#include <math.h> #include <math.h>
#ifdef HAVE_LIMITS
#include <limits.h>
#endif
#include "postgres.h" #include "postgres.h"
#include "utils/builtins.h" /* where the declarations go */ #include "utils/builtins.h" /* where the declarations go */
#ifndef HAVE_MEMMOVE #ifndef HAVE_MEMMOVE
@ -26,6 +29,25 @@
#endif #endif
#include <port-protos.h> /* ecvt(), fcvt() */ #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 int32
pg_atoi(char *s, int size, int c) pg_atoi(char *s, int size, int c)
{ {
@ -46,12 +68,12 @@ pg_atoi(char *s, int size, int c)
case sizeof(int32): case sizeof(int32):
#ifdef HAS_LONG_LONG #ifdef HAS_LONG_LONG
/* won't get ERANGE on these with 64-bit longs... */ /* won't get ERANGE on these with 64-bit longs... */
if (l < -0x80000000L) if (l < INT_MIN)
{ {
errno = ERANGE; errno = ERANGE;
elog(WARN, "pg_atoi: error reading \"%s\": %m", s); elog(WARN, "pg_atoi: error reading \"%s\": %m", s);
} }
if (l > 0x7fffffffL) if (l > INT_MAX)
{ {
errno = ERANGE; errno = ERANGE;
elog(WARN, "pg_atoi: error reading \"%s\": %m", s); 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 */ #endif /* HAS_LONG_LONG */
break; break;
case sizeof(int16): case sizeof(int16):
if (l < -0x8000) if (l < SHRT_MIN)
{ {
errno = ERANGE; errno = ERANGE;
elog(WARN, "pg_atoi: error reading \"%s\": %m", s); elog(WARN, "pg_atoi: error reading \"%s\": %m", s);
} }
if (l > 0x7fff) if (l > SHRT_MAX)
{ {
errno = ERANGE; errno = ERANGE;
elog(WARN, "pg_atoi: error reading \"%s\": %m", s); elog(WARN, "pg_atoi: error reading \"%s\": %m", s);
} }
break; break;
case sizeof(int8): case sizeof(int8):
if (l < -0x80) if (l < SCHAR_MIN)
{ {
errno = ERANGE; errno = ERANGE;
elog(WARN, "pg_atoi: error reading \"%s\": %m", s); elog(WARN, "pg_atoi: error reading \"%s\": %m", s);
} }
if (l > 0x7f) if (l > SCHAR_MAX)
{ {
errno = ERANGE; errno = ERANGE;
elog(WARN, "pg_atoi: error reading \"%s\": %m", s); elog(WARN, "pg_atoi: error reading \"%s\": %m", s);