svn commit: samba r15953 - in branches/SAMBA_4_0/source: heimdal/lib/asn1 lib/replace

tridge at samba.org tridge at samba.org
Tue May 30 05:57:46 GMT 2006


Author: tridge
Date: 2006-05-30 05:57:43 +0000 (Tue, 30 May 2006)
New Revision: 15953

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=15953

Log:

our timegm() replacement still doesn't work, so grab the one from
Heimdal which does work. This should fix most of the rest of the
failures on solaris

Added:
   branches/SAMBA_4_0/source/lib/replace/timegm.c
Removed:
   branches/SAMBA_4_0/source/heimdal/lib/asn1/timegm.c
Modified:
   branches/SAMBA_4_0/source/lib/replace/config.mk
   branches/SAMBA_4_0/source/lib/replace/replace.c
   branches/SAMBA_4_0/source/lib/replace/replace.h


Changeset:
Deleted: branches/SAMBA_4_0/source/heimdal/lib/asn1/timegm.c
===================================================================
--- branches/SAMBA_4_0/source/heimdal/lib/asn1/timegm.c	2006-05-30 05:24:21 UTC (rev 15952)
+++ branches/SAMBA_4_0/source/heimdal/lib/asn1/timegm.c	2006-05-30 05:57:43 UTC (rev 15953)
@@ -1,71 +0,0 @@
-/*
- * Copyright (c) 1997 Kungliga Tekniska Högskolan
- * (Royal Institute of Technology, Stockholm, Sweden). 
- * All rights reserved. 
- *
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions 
- * are met: 
- *
- * 1. Redistributions of source code must retain the above copyright 
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright 
- *    notice, this list of conditions and the following disclaimer in the 
- *    documentation and/or other materials provided with the distribution. 
- *
- * 3. Neither the name of the Institute nor the names of its contributors 
- *    may be used to endorse or promote products derived from this software 
- *    without specific prior written permission. 
- *
- * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
- * SUCH DAMAGE. 
- */
-
-#include "der_locl.h"
-
-RCSID("$Id: timegm.c,v 1.7 1999/12/02 17:05:02 joda Exp $");
-
-#ifndef HAVE_TIMEGM
-
-static int
-is_leap(unsigned y)
-{
-    y += 1900;
-    return (y % 4) == 0 && ((y % 100) != 0 || (y % 400) == 0);
-}
-
-time_t
-timegm (struct tm *tm)
-{
-  static const unsigned ndays[2][12] ={
-    {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
-    {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}};
-  time_t res = 0;
-  unsigned i;
-
-  for (i = 70; i < tm->tm_year; ++i)
-    res += is_leap(i) ? 366 : 365;
-
-  for (i = 0; i < tm->tm_mon; ++i)
-    res += ndays[is_leap(tm->tm_year)][i];
-  res += tm->tm_mday - 1;
-  res *= 24;
-  res += tm->tm_hour;
-  res *= 60;
-  res += tm->tm_min;
-  res *= 60;
-  res += tm->tm_sec;
-  return res;
-}
-
-#endif /* HAVE_TIMEGM */

Modified: branches/SAMBA_4_0/source/lib/replace/config.mk
===================================================================
--- branches/SAMBA_4_0/source/lib/replace/config.mk	2006-05-30 05:24:21 UTC (rev 15952)
+++ branches/SAMBA_4_0/source/lib/replace/config.mk	2006-05-30 05:57:43 UTC (rev 15953)
@@ -11,6 +11,7 @@
 [SUBSYSTEM::LIBREPLACE]
 OBJ_FILES = replace.o \
 		snprintf.o \
+		timegm.o \
 		dlfcn.o \
 		getpass.o
 PUBLIC_DEPENDENCIES = REPLACE_READDIR

Modified: branches/SAMBA_4_0/source/lib/replace/replace.c
===================================================================
--- branches/SAMBA_4_0/source/lib/replace/replace.c	2006-05-30 05:24:21 UTC (rev 15952)
+++ branches/SAMBA_4_0/source/lib/replace/replace.c	2006-05-30 05:57:43 UTC (rev 15953)
@@ -368,19 +368,6 @@
 #endif /* HAVE_VSYSLOG */
 
 
-#ifndef HAVE_TIMEGM
-/*
-  yes, I know this looks insane, but its really needed. The function in the 
-  Linux timegm() manpage does not work on solaris.
-*/
- time_t timegm(struct tm *tm) 
-{
-	time_t t = mktime(tm);
-	t -= mktime(gmtime(&t)) - (int)mktime(localtime(&t));
-	return t;
-}
-#endif
-
 #ifndef HAVE_SETENV
  int setenv(const char *name, const char *value, int overwrite) 
 {

Modified: branches/SAMBA_4_0/source/lib/replace/replace.h
===================================================================
--- branches/SAMBA_4_0/source/lib/replace/replace.h	2006-05-30 05:24:21 UTC (rev 15952)
+++ branches/SAMBA_4_0/source/lib/replace/replace.h	2006-05-30 05:57:43 UTC (rev 15953)
@@ -112,6 +112,10 @@
 #define bzero(a,b) memset((a),'\0',(b))
 #endif
 
+#ifndef HAVE_TIMEGM
+time_t timegm(struct tm *tm);
+#endif
+
 #ifndef PRINTF_ATTRIBUTE
 #if __GNUC__ >= 3
 /** Use gcc attribute to check printf fns.  a1 is the 1-based index of

Added: branches/SAMBA_4_0/source/lib/replace/timegm.c
===================================================================
--- branches/SAMBA_4_0/source/lib/replace/timegm.c	2006-05-30 05:24:21 UTC (rev 15952)
+++ branches/SAMBA_4_0/source/lib/replace/timegm.c	2006-05-30 05:57:43 UTC (rev 15953)
@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) 1997 Kungliga Tekniska Högskolan
+ * (Royal Institute of Technology, Stockholm, Sweden). 
+ * All rights reserved. 
+ *
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions 
+ * are met: 
+ *
+ * 1. Redistributions of source code must retain the above copyright 
+ *    notice, this list of conditions and the following disclaimer. 
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright 
+ *    notice, this list of conditions and the following disclaimer in the 
+ *    documentation and/or other materials provided with the distribution. 
+ *
+ * 3. Neither the name of the Institute nor the names of its contributors 
+ *    may be used to endorse or promote products derived from this software 
+ *    without specific prior written permission. 
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
+ * SUCH DAMAGE. 
+ */
+
+/*
+  adapted for Samba4 by Andrew Tridgell
+*/
+
+#include "includes.h"
+#include "system/time.h"
+
+#ifndef HAVE_TIMEGM
+
+static int is_leap(unsigned y)
+{
+	y += 1900;
+	return (y % 4) == 0 && ((y % 100) != 0 || (y % 400) == 0);
+}
+
+time_t timegm(struct tm *tm)
+{
+	static const unsigned ndays[2][12] ={
+		{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
+		{31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}};
+	time_t res = 0;
+	unsigned i;
+	
+	for (i = 70; i < tm->tm_year; ++i)
+		res += is_leap(i) ? 366 : 365;
+	
+	for (i = 0; i < tm->tm_mon; ++i)
+		res += ndays[is_leap(tm->tm_year)][i];
+	res += tm->tm_mday - 1;
+	res *= 24;
+	res += tm->tm_hour;
+	res *= 60;
+	res += tm->tm_min;
+	res *= 60;
+	res += tm->tm_sec;
+	return res;
+}
+
+#endif /* HAVE_TIMEGM */



More information about the samba-cvs mailing list