From: Tom Lane Date: Tue, 10 Jul 2001 01:41:47 +0000 (+0000) Subject: Remove formatter's assumption that year would never exceed four digits. X-Git-Tag: REL7_2_BETA1~890 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=975da0a75e842f1405da71c18bc5a19c597e9bc3;p=postgresql Remove formatter's assumption that year would never exceed four digits. Enforce MAXTZLEN for all datestyles, not just some. Remove macro definitions that were redundant with datetime.h. --- diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 81a3d96b8a..7095f24de7 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.65 2001/06/18 16:14:43 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/datetime.c,v 1.66 2001/07/10 01:41:47 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -25,6 +25,9 @@ #include "utils/guc.h" #include "utils/datetime.h" + +#define ROUND_ALL 1 + static int DecodeNumber(int flen, char *field, int fmask, int *tmask, struct tm * tm, double *fsec, int *is2digits); @@ -36,15 +39,12 @@ static int DecodeTime(char *str, int fmask, int *tmask, static int DecodeTimezone(char *str, int *tzp); static datetkn *datebsearch(char *key, datetkn *base, unsigned int nel); static int DecodeDate(char *str, int fmask, int *tmask, struct tm * tm); - -#define ROUND_ALL 0 - static int DecodePosixTimezone(char *str, int *val); + int day_tab[2][13] = { {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 0}, -{31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 0}}; - + {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 0}}; char *months[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", NULL}; @@ -53,28 +53,13 @@ char *days[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", NULL}; -#define UTIME_MINYEAR (1901) -#define UTIME_MINMONTH (12) -#define UTIME_MINDAY (14) -#define UTIME_MAXYEAR (2038) -#define UTIME_MAXMONTH (01) -#define UTIME_MAXDAY (18) - -#define IS_VALID_UTIME(y,m,d) (((y > UTIME_MINYEAR) \ - || ((y == UTIME_MINYEAR) && ((m > UTIME_MINMONTH) \ - || ((m == UTIME_MINMONTH) && (d >= UTIME_MINDAY))))) \ - && ((y < UTIME_MAXYEAR) \ - || ((y == UTIME_MAXYEAR) && ((m < UTIME_MAXMONTH) \ - || ((m == UTIME_MAXMONTH) && (d <= UTIME_MAXDAY)))))) - - /***************************************************************************** * PRIVATE ROUTINES * *****************************************************************************/ /* definitions for squeezing values into "value" */ -#define ABS_SIGNBIT (char) 0200 -#define VALMASK (char) 0177 +#define ABS_SIGNBIT ((char) 0200) +#define VALMASK ((char) 0177) #define NEG(n) ((n)|ABS_SIGNBIT) #define SIGNEDCHAR(c) ((c)&ABS_SIGNBIT? -((c)&VALMASK): (c)) #define FROMVAL(tp) (-SIGNEDCHAR((tp)->value) * 10) /* uncompress */ @@ -2112,7 +2097,7 @@ EncodeDateTime(struct tm * tm, double fsec, int *tzp, char **tzn, int style, cha { sprintf(str, "%04d-%02d-%02d %02d:%02d:", tm->tm_year, tm->tm_mon, tm->tm_mday, tm->tm_hour, tm->tm_min); - sprintf((str + 17), ((fsec != 0) ? "%05.2f" : "%02.0f"), sec); + sprintf((str + strlen(str)), ((fsec != 0) ? "%05.2f" : "%02.0f"), sec); if ((*tzn != NULL) && (tm->tm_isdst >= 0)) { @@ -2154,11 +2139,7 @@ EncodeDateTime(struct tm * tm, double fsec, int *tzp, char **tzn, int style, cha tm->tm_year, tm->tm_hour, tm->tm_min, sec); if ((*tzn != NULL) && (tm->tm_isdst >= 0)) - { - strcpy((str + 22), " "); - strcpy((str + 23), *tzn); - } - + sprintf((str + strlen(str)), " %.*s", MAXTZLEN, *tzn); } else sprintf((str + 5), "/%04d %02d:%02d %s", @@ -2174,11 +2155,7 @@ EncodeDateTime(struct tm * tm, double fsec, int *tzp, char **tzn, int style, cha tm->tm_year, tm->tm_hour, tm->tm_min, sec); if ((*tzn != NULL) && (tm->tm_isdst >= 0)) - { - strcpy((str + 22), " "); - strcpy((str + 23), *tzn); - } - + sprintf((str + strlen(str)), " %.*s", MAXTZLEN, *tzn); } else sprintf((str + 5), ".%04d %02d:%02d %s", @@ -2206,21 +2183,14 @@ EncodeDateTime(struct tm * tm, double fsec, int *tzp, char **tzn, int style, cha { sprintf((str + 16), ":%05.2f %04d", sec, tm->tm_year); if ((*tzn != NULL) && (tm->tm_isdst >= 0)) - { - strcpy((str + 27), " "); - StrNCpy((str + 28), *tzn, MAXTZLEN + 1); - } + sprintf((str + strlen(str)), " %.*s", MAXTZLEN, *tzn); } else { sprintf((str + 16), ":%02.0f %04d", sec, tm->tm_year); if ((*tzn != NULL) && (tm->tm_isdst >= 0)) - { - strcpy((str + 24), " "); - StrNCpy((str + 25), *tzn, MAXTZLEN + 1); - } + sprintf((str + strlen(str)), " %.*s", MAXTZLEN, *tzn); } - } else {