Fix from richard.kettlewell@kewill.com for leapyear bugs.
[ira/wip.git] / source3 / lib / replace.c
index a354458a686b587d3917220d102620b4820705b6..b0adb72fd24ea4b564e00430bc34d18bd1b87660 100644 (file)
@@ -48,7 +48,9 @@ ftruncate for operating systems that don't have it
 /*******************************************************************
 a mktime() replacement for those who don't have it - contributed by 
 C.A. Lademann <cal@zls.com>
 /*******************************************************************
 a mktime() replacement for those who don't have it - contributed by 
 C.A. Lademann <cal@zls.com>
+Corrections by richard.kettlewell@kewill.com
 ********************************************************************/
 ********************************************************************/
+
 #define  MINUTE  60
 #define  HOUR    60*MINUTE
 #define  DAY             24*HOUR
 #define  MINUTE  60
 #define  HOUR    60*MINUTE
 #define  DAY             24*HOUR
@@ -57,14 +59,16 @@ C.A. Lademann <cal@zls.com>
 {
   struct tm       *u;
   time_t  epoch = 0;
 {
   struct tm       *u;
   time_t  epoch = 0;
+  int n;
   int             mon [] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
   y, m, i;
 
   if(t->tm_year < 70)
     return((time_t)-1);
 
   int             mon [] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
   y, m, i;
 
   if(t->tm_year < 70)
     return((time_t)-1);
 
+  n = t->tm_year + 1900 - 1;
   epoch = (t->tm_year - 70) * YEAR + 
   epoch = (t->tm_year - 70) * YEAR + 
-    (t->tm_year / 4 - 70 / 4 - t->tm_year / 100) * DAY;
+    ((n / 4 - n / 100 + n / 400) - (1969 / 4 - 1969 / 100 + 1969 / 400)) * DAY;
 
   y = t->tm_year;
   m = 0;
 
   y = t->tm_year;
   m = 0;
@@ -293,20 +297,3 @@ char *rep_inet_ntoa(struct in_addr ip)
 }
 #endif
 
 }
 #endif
 
-
-#ifndef HAVE_SETENV
-/*****************************************************************
-set an env variable - some systems don't have this
-*****************************************************************/  
- int setenv(const char *name, const char *value, int overwrite)
-{
-       pstring s;
-
-       if (!overwrite && getenv(name)) return 0;
-
-       slprintf(s,sizeof(s)-1,"%s=%s", name, value);
-
-       return putenv(s);
-}
-
-#endif