From 31174f11d0995f901343f15e92ff6b38faec174c Mon Sep 17 00:00:00 2001 From: "Thomas G. Lockhart" Date: Tue, 16 Sep 1997 16:12:55 +0000 Subject: [PATCH] Remove difftime() calls. Still uses time_t declarations, but most code will be changed for next release. --- src/backend/utils/adt/timestamp.c | 154 ++++++------------------------ 1 file changed, 28 insertions(+), 126 deletions(-) diff --git a/src/backend/utils/adt/timestamp.c b/src/backend/utils/adt/timestamp.c index 4e66ea4cb3..691886658e 100644 --- a/src/backend/utils/adt/timestamp.c +++ b/src/backend/utils/adt/timestamp.c @@ -5,128 +5,19 @@ #include "postgres.h" #include "miscadmin.h" #include "utils/builtins.h" +#include "access/xact.h" -/* sunos doesn't have this function */ -#if defined(sunos4) -#define difftime(time1,time0) ((time1) - (time0)) -#endif - -#if FALSE -/* copy the next part of the string into a buffer */ -static const char * -cpstr(const char *s, char *buf) -{ - char in = 0; - - while (isspace(*s)) - s++; - - for (; *s && !isspace(*s); s++) - { - if (strchr("-,:/", *s)) - { - buf[in] = 0; - return (s + 1); - } - - if (in < 16) - buf[in++] = tolower(*s); - } - - buf[in] = 0; - return s; -} - -#endif - -/* assumes dd/mm/yyyy unless first item is month in word form */ time_t timestamp_in(const char *timestamp_str) { int4 result; -#if FALSE - struct tm input_time; - char buf[18]; - const char *p; - static const char *mstr[] = { - "january", "february", "march", "april", "may", "june", - "july", "august", "september", "october", "november", "december" - }; - - memset(&input_time, 0, sizeof(input_time)); - p = cpstr(timestamp_str, buf); - if (isdigit(buf[0])) /* must be dd/mm/yyyy */ - { - input_time.tm_mday = atoi(buf); - p = cpstr(p, buf); - if (!buf[0]) - elog(WARN, "timestamp_in: timestamp \"%s\" not a proper date", - timestamp_str); - if (isdigit(buf[0])) - { - input_time.tm_mon = atoi(buf) - 1; - if (input_time.tm_mon < 0 || input_time.tm_mon > 11) - elog(WARN, "timestamp_in: timestamp \"%s\" invalid month", - timestamp_str); - } - else - { - int i; - - for (i = 0; i < 12; i++) - if (strncmp(mstr[i], buf, strlen(buf)) == 0) - break; - if (1 > 11) - elog(WARN, "timestamp_in: timestamp \"%s\" invalid month", - timestamp_str); - input_time.tm_mon = i; - } - } - else -/* must be month/dd/yyyy */ - { - int i; - - for (i = 0; i < 12; i++) - if (strncmp(mstr[i], buf, strlen(buf)) == 0) - break; - if (1 > 11) - elog(WARN, "timestamp_in: timestamp \"%s\" invalid month", - timestamp_str); - input_time.tm_mon = i; - p = cpstr(p, buf); - input_time.tm_mday = atoi(buf); - if (!input_time.tm_mday || input_time.tm_mday > 31) - elog(WARN, "timestamp_in: timestamp \"%s\" not a proper date", - timestamp_str); - } - - p = cpstr(p, buf); - if (!buf[0] || !isdigit(buf[0])) - elog(WARN, "timestamp_in: timestamp \"%s\" not a proper date", - timestamp_str); - if ((input_time.tm_year = atoi(buf)) < 1900) - input_time.tm_year += 1900; - - /* now get the time */ - p = cpstr(p, buf); - input_time.tm_hour = atoi(buf); - p = cpstr(p, buf); - input_time.tm_min = atoi(buf); - p = cpstr(p, buf); - input_time.tm_sec = atoi(buf); - - /* use mktime(), but make this GMT, not local time */ - result = mktime(&input_time); -#endif - result = nabstimein((char *) timestamp_str); return result; } -char * +char * timestamp_out(time_t timestamp) { char *result; @@ -138,13 +29,6 @@ timestamp_out(time_t timestamp) char zone[MAXDATELEN + 1], *tzn = zone; -#if FALSE - time = localtime(×tamp); - - sprintf(result, "%04d-%02d-%02d %02d:%02d:%02d", - time->tm_year + 1900, time->tm_mon + 1, time->tm_mday, - time->tm_hour, time->tm_min, time->tm_sec); -#endif abstime2tm(timestamp, &tz, tm, tzn); EncodeDateTime(tm, fsec, &tz, &tzn, USE_ISO_DATES, buf); @@ -158,44 +42,62 @@ now(void) { time_t sec; - time(&sec); + sec = GetCurrentTransactionStartTime(); return (sec); } bool timestampeq(time_t t1, time_t t2) { - return difftime(t1, t2) == 0; +#if FALSE + return(t1 == t2); +#endif + return(abstimeeq(t1,t2)); } bool timestampne(time_t t1, time_t t2) { - return difftime(t1, t2) != 0; +#if FALSE + return(t1 != t2); +#endif + return(abstimene(t1,t2)); } bool timestamplt(time_t t1, time_t t2) { - return difftime(t1, t2) > 0; +#if FALSE + return(t1 > t2); +#endif + return(abstimelt(t1,t2)); } bool timestampgt(time_t t1, time_t t2) { - return difftime(t1, t2) < 0; +#if FALSE + return(t1 < t2); +#endif + return(abstimegt(t1,t2)); } bool timestample(time_t t1, time_t t2) { - return difftime(t1, t2) >= 0; +#if FALSE + return(t1 >= t2); +#endif + return(abstimele(t1,t2)); } bool timestampge(time_t t1, time_t t2) { - return difftime(t1, t2) <= 0; +#if FALSE + return(t1 <= t2); +#endif + return(abstimege(t1,t2)); } DateTime * @@ -217,4 +119,4 @@ timestamp_datetime(time_t timestamp) elog(WARN, "Unable to convert timestamp to datetime", timestamp_out(timestamp)); return (result); -} /* timestamp_datetime() */ +} /* timestamp_datetime() */ -- GitLab