]> git.ipfire.org Git - thirdparty/shadow.git/commitdiff
strtoday.c: remove USE_GETDATE as it was always used
authorIker Pedrosa <ipedrosa@redhat.com>
Thu, 22 Dec 2022 15:26:21 +0000 (16:26 +0100)
committerSerge Hallyn <serge@hallyn.com>
Thu, 22 Dec 2022 16:39:45 +0000 (10:39 -0600)
Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
libmisc/strtoday.c

index b0f15dd9c04ca0779a553222312c8195cc22ff68..0705c9d2fc6fd618db129f7a2bd4622f3723c2ac 100644 (file)
 
 #include "defines.h"
 #include "prototypes.h"
-
-#ifndef USE_GETDATE
-#define USE_GETDATE 1
-#endif
-
-#if USE_GETDATE
 #include "getdate.h"
+
 /*
  * strtoday() now uses get_date() (borrowed from GNU shellutils)
  * which can handle many date formats, for example:
@@ -81,136 +76,3 @@ long strtoday (const char *str)
        /* convert seconds to days since 1970-01-01 */
        return (long) (t + DAY / 2) / DAY;
 }
-
-#else                          /* !USE_GETDATE */
-/*
- * Old code, just in case get_date() doesn't work as expected...
- */
-#include <stdio.h>
-#ifdef HAVE_STRPTIME
-/*
- * for now we allow just one format, but we can define more later
- * (we try them all until one succeeds).  --marekm
- */
-static const char *const date_formats[] = {
-       "%Y-%m-%d",
-       (char *) 0
-};
-#else
-/*
- * days and juldays are used to compute the number of days in the
- * current month, and the cumulative number of days in the preceding
- * months.  they are declared so that january is 1, not 0.
- */
-static const short days[13] = { 0,
-       31, 28, 31, 30, 31, 30, /* JAN - JUN */
-       31, 31, 30, 31, 30, 31
-};                             /* JUL - DEC */
-
-static const short juldays[13] = { 0,
-       0, 31, 59, 90, 120, 151,        /* JAN - JUN */
-       181, 212, 243, 273, 304, 334
-};                             /* JUL - DEC */
-#endif
-
-/*
- * strtoday - compute the number of days since 1970.
- *
- * the total number of days prior to the current date is
- * computed.  january 1, 1970 is used as the origin with
- * it having a day number of 0.
- */
-
-long strtoday (const char *str)
-{
-#ifdef HAVE_STRPTIME
-       struct tm tp;
-       const char *const *fmt;
-       char *cp;
-       time_t result;
-
-       memzero (&tp, sizeof tp);
-       for (fmt = date_formats; *fmt; fmt++) {
-               cp = strptime ((char *) str, *fmt, &tp);
-               if ((NULL == cp) || ('\0' != *cp)) {
-                       continue;
-               }
-
-               result = mktime (&tp);
-               if ((time_t) - 1 == result) {
-                       continue;
-               }
-
-               return (long) (result / DAY);   /* success */
-       }
-       return -1;
-#else
-       char slop[2];
-       int month;
-       int day;
-       int year;
-       long total;
-
-       /*
-        * start by separating the month, day and year.  the order
-        * is compiled in ...
-        */
-
-       if (sscanf (str, "%d/%d/%d%c", &year, &month, &day, slop) != 3) {
-               return -1;
-       }
-
-       /*
-        * the month, day of the month, and year are checked for
-        * correctness and the year adjusted so it falls between
-        * 1970 and 2069.
-        */
-
-       if ((month < 1) || (month > 12)) {
-               return -1;
-       }
-
-       if (day < 1) {
-               return -1;
-       }
-
-       if (   ((2 != month) || ((year % 4) != 0))
-           && (day > days[month])) {
-               return -1;
-       } else if ((month == 2) && ((year % 4) == 0) && (day > 29)) {
-               return -1;
-       }
-
-       if (year < 0) {
-               return -1;
-       } else if (year <= 69) {
-               year += 2000;
-       } else if (year <= 99) {
-               year += 1900;
-       }
-
-       /*
-        * On systems with 32-bit signed time_t, time wraps around in 2038
-        * - for now we just limit the year to 2037 (instead of 2069).
-        * This limit can be removed once no one is using 32-bit systems
-        * anymore :-).  --marekm
-        */
-       if ((year < 1970) || (year > 2037)) {
-               return -1;
-       }
-
-       /*
-        * the total number of days is the total number of days in all
-        * the whole years, plus the number of leap days, plus the
-        * number of days in the whole months preceding, plus the number
-        * of days so far in the month.
-        */
-
-       total = (long) ((year - 1970) * 365L) + (((year + 1) - 1970) / 4);
-       total += (long) juldays[month] + (month > 2 && (year % 4) == 0 ? 1 : 0);
-       total += (long) day - 1;
-
-       return total;
-#endif                         /* HAVE_STRPTIME */
-}
-#endif                         /* !USE_GETDATE */