diff options
Diffstat (limited to 'src/backend/utils/adt/datetime.c')
| -rw-r--r-- | src/backend/utils/adt/datetime.c | 64 |
1 files changed, 34 insertions, 30 deletions
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index a167943dff..1426088e62 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/adt/datetime.c,v 1.56 2000/11/11 19:55:19 thomas Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/datetime.c,v 1.57 2000/12/03 20:45:35 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -421,16 +421,17 @@ ParseDateTime(char *timestr, char *lowstr, field[nf] = lp; /* leading digit? then date or time */ - if (isdigit((int) *cp) || (*cp == '.')) + if (isdigit((unsigned char) *cp) || (*cp == '.')) { *lp++ = *cp++; - while (isdigit((int) *cp)) + while (isdigit((unsigned char) *cp)) *lp++ = *cp++; /* time field? */ if (*cp == ':') { ftype[nf] = DTK_TIME; - while (isdigit((int) *cp) || (*cp == ':') || (*cp == '.')) + while (isdigit((unsigned char) *cp) || + (*cp == ':') || (*cp == '.')) *lp++ = *cp++; } @@ -438,8 +439,9 @@ ParseDateTime(char *timestr, char *lowstr, else if ((*cp == '-') || (*cp == '/') || (*cp == '.')) { ftype[nf] = DTK_DATE; - while (isalnum((int) *cp) || (*cp == '-') || (*cp == '/') || (*cp == '.')) - *lp++ = tolower(*cp++); + while (isalnum((unsigned char) *cp) || (*cp == '-') || + (*cp == '/') || (*cp == '.')) + *lp++ = tolower((unsigned char) *cp++); } @@ -456,12 +458,12 @@ ParseDateTime(char *timestr, char *lowstr, * text? then date string, month, day of week, special, or * timezone */ - else if (isalpha((int) *cp)) + else if (isalpha((unsigned char) *cp)) { ftype[nf] = DTK_STRING; - *lp++ = tolower(*cp++); - while (isalpha((int) *cp)) - *lp++ = tolower(*cp++); + *lp++ = tolower((unsigned char) *cp++); + while (isalpha((unsigned char) *cp)) + *lp++ = tolower((unsigned char) *cp++); /* * Full date string with leading text month? Could also be a @@ -470,13 +472,14 @@ ParseDateTime(char *timestr, char *lowstr, if ((*cp == '-') || (*cp == '/') || (*cp == '.')) { ftype[nf] = DTK_DATE; - while (isdigit((int) *cp) || (*cp == '-') || (*cp == '/') || (*cp == '.')) - *lp++ = tolower(*cp++); + while (isdigit((unsigned char) *cp) || + (*cp == '-') || (*cp == '/') || (*cp == '.')) + *lp++ = tolower((unsigned char) *cp++); } /* skip leading spaces */ } - else if (isspace((int) *cp)) + else if (isspace((unsigned char) *cp)) { cp++; continue; @@ -487,24 +490,25 @@ ParseDateTime(char *timestr, char *lowstr, { *lp++ = *cp++; /* soak up leading whitespace */ - while (isspace((int) *cp)) + while (isspace((unsigned char) *cp)) cp++; /* numeric timezone? */ - if (isdigit((int) *cp)) + if (isdigit((unsigned char) *cp)) { ftype[nf] = DTK_TZ; *lp++ = *cp++; - while (isdigit((int) *cp) || (*cp == ':') || (*cp == '.')) + while (isdigit((unsigned char) *cp) || + (*cp == ':') || (*cp == '.')) *lp++ = *cp++; /* special? */ } - else if (isalpha((int) *cp)) + else if (isalpha((unsigned char) *cp)) { ftype[nf] = DTK_SPECIAL; - *lp++ = tolower(*cp++); - while (isalpha((int) *cp)) - *lp++ = tolower(*cp++); + *lp++ = tolower((unsigned char) *cp++); + while (isalpha((unsigned char) *cp)) + *lp++ = tolower((unsigned char) *cp++); /* otherwise something wrong... */ } @@ -513,7 +517,7 @@ ParseDateTime(char *timestr, char *lowstr, /* ignore punctuation but use as delimiter */ } - else if (ispunct((int) *cp)) + else if (ispunct((unsigned char) *cp)) { cp++; continue; @@ -631,7 +635,7 @@ DecodeDateTime(char **field, int *ftype, int nf, * PST) */ if ((i > 0) && ((fmask & DTK_M(TZ)) != 0) - && (ftype[i - 1] == DTK_TZ) && (isalpha((int) *field[i - 1]))) + && (ftype[i - 1] == DTK_TZ) && (isalpha((unsigned char) *field[i - 1]))) { *tzp -= tz; tmask = 0; @@ -974,7 +978,7 @@ DecodeTimeOnly(char **field, int *ftype, int nf, * PST) */ if ((i > 0) && ((fmask & DTK_M(TZ)) != 0) - && (ftype[i - 1] == DTK_TZ) && (isalpha((int) *field[i - 1]))) + && (ftype[i - 1] == DTK_TZ) && (isalpha((unsigned char) *field[i - 1]))) { *tzp -= tz; tmask = 0; @@ -1162,18 +1166,18 @@ DecodeDate(char *str, int fmask, int *tmask, struct tm * tm) while ((*str != '\0') && (nf < MAXDATEFIELDS)) { /* skip field separators */ - while (!isalnum((int) *str)) + while (!isalnum((unsigned char) *str)) str++; field[nf] = str; - if (isdigit((int) *str)) + if (isdigit((unsigned char) *str)) { - while (isdigit((int) *str)) + while (isdigit((unsigned char) *str)) str++; } - else if (isalpha((int) *str)) + else if (isalpha((unsigned char) *str)) { - while (isalpha((int) *str)) + while (isalpha((unsigned char) *str)) str++; } @@ -1193,7 +1197,7 @@ DecodeDate(char *str, int fmask, int *tmask, struct tm * tm) /* look first for text fields, since that will be unambiguous month */ for (i = 0; i < nf; i++) { - if (isalpha((int) *field[i])) + if (isalpha((unsigned char) *field[i])) { type = DecodeSpecial(i, field[i], &val); if (type == IGNORE) @@ -1556,7 +1560,7 @@ DecodePosixTimezone(char *str, int *tzp) char delim; cp = str; - while ((*cp != '\0') && isalpha((int) *cp)) + while ((*cp != '\0') && isalpha((unsigned char) *cp)) cp++; if (DecodeTimezone(cp, &tz) != 0) |
