[Git][NTPsec/ntpsec][master] 2 commits: Remove local copy of timegm and gmtime.

Hal Murray gitlab at mg.gitlab.com
Fri Jan 15 04:25:22 UTC 2016


Hal Murray pushed to branch master at NTPsec / ntpsec


Commits:
9ad68de8 by Hal Murray at 2016-01-14T19:49:45-08:00
Remove local copy of timegm and gmtime.

- - - - -
5549b6a2 by Hal Murray at 2016-01-14T20:23:42-08:00
Disconnect keyword-gen from libntp. (helps cross compile)

- - - - -


6 changed files:

- include/ntp_machine.h
- − libntp/mktime.c
- libntp/wscript
- ntpd/keyword-gen.c
- ntpd/wscript
- pylib/configure.py


Changes:

=====================================
include/ntp_machine.h
=====================================
--- a/include/ntp_machine.h
+++ b/include/ntp_machine.h
@@ -65,9 +65,5 @@ int ntp_set_tod (struct timespec *tvs);
 # define HAVE_NO_NICE
 #endif
 
-#ifndef HAVE_TIMEGM
-extern time_t	timegm		(struct tm *);
-#endif
-
 
 #endif	/* GUARD_NTP_MACHINE_H */


=====================================
libntp/mktime.c deleted
=====================================
--- a/libntp/mktime.c
+++ /dev/null
@@ -1,273 +0,0 @@
-/*
- * Copyright (c) 1987, 1989 Regents of the University of California.
- * Copyright 2015 by the NTPsec project contributors
- * SPDX-License-Identifier: BSD-4-clause
- */
-
-/*
- * This implementation of mktime is lifted straight from the NetBSD (BSD 4.4)
- * version.  I modified it slightly to divorce it from the internals of the
- * ctime library.  Thus this version can't use details of the internal
- * timezone state file to figure out strange unnormalized struct tm values,
- * as might result from someone doing date math on the tm struct then passing
- * it to mktime.
- *
- * It just does as well as it can at normalizing the tm input, then does a
- * binary search of the time space using the system's localtime_r() function.
- *
- * The original binary search was defective in that it didn't consider the
- * setting of tm_isdst when comparing tm values, causing the search to be
- * flubbed for times near the dst/standard time changeover.  The original
- * code seems to make up for this by grubbing through the timezone info
- * whenever the binary search barfed.  Since I don't have that luxury in
- * portable code, I have to take care of tm_isdst in the comparison routine.
- * This requires knowing how many minutes offset dst is from standard time.
- *
- * So, if you live somewhere in the world where dst is not 60 minutes offset,
- * and your vendor doesn't supply mktime(), you'll have to edit this variable
- * by hand.  Sorry about that.
- */
-
-#include <config.h>
-#include "ntp_machine.h"
-
-#if !defined(HAVE_TIMEGM)
-
-#if SIZEOF_TIME_T >= 8
-#error libntp supplied mktime()/timegm() do not support 64-bit time_t
-#endif
-
-#ifndef DSTMINUTES
-#define DSTMINUTES 60
-#endif
-
-/* some constants from tzfile.h */
-#define SECSPERMIN      60
-#define MINSPERHOUR     60
-#define HOURSPERDAY     24
-#define DAYSPERWEEK     7
-#define DAYSPERNYEAR    365
-#define DAYSPERLYEAR    366
-#define SECSPERHOUR     (SECSPERMIN * MINSPERHOUR)
-#define SECSPERDAY      ((long) SECSPERHOUR * HOURSPERDAY)
-#define MONSPERYEAR     12
-#define TM_YEAR_BASE    1900
-#define isleap(y) ((((y) % 4) == 0 && ((y) % 100) != 0) || ((y) % 400) == 0)
-
-static int	mon_lengths[2][MONSPERYEAR] = {
-	{ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
-	{ 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }
-};
-
-static int	year_lengths[2] = {
-	DAYSPERNYEAR, DAYSPERLYEAR
-};
-
-/*
-** Adapted from code provided by Robert Elz, who writes:
-**	The "best" way to do mktime I think is based on an idea of Bob
-**	Kridle's (so its said...) from a long time ago. (mtxinu!kridle now).
-**	It does a binary search of the time_t space.  Since time_t's are
-**	just 32 bits, its a max of 32 iterations (even at 64 bits it
-**	would still be very reasonable).
-*/
-
-#define WRONG	(-1)
-
-static void
-normalize(
-	int * tensptr,
-	int * unitsptr,
-	int	base
-	)
-{
-	if (*unitsptr >= base) {
-		*tensptr += *unitsptr / base;
-		*unitsptr %= base;
-	} else if (*unitsptr < 0) {
-		--*tensptr;
-		*unitsptr += base;
-		if (*unitsptr < 0) {
-			*tensptr -= 1 + (-*unitsptr) / base;
-			*unitsptr = base - (-*unitsptr) % base;
-		}
-	}
-}
-
-static struct tm *
-mkdst(
-	struct tm *	tmp
-	)
-{
-    /* jds */
-    static struct tm tmbuf;
-
-    tmbuf = *tmp;
-    tmbuf.tm_isdst = 1;
-    tmbuf.tm_min += DSTMINUTES;
-    normalize(&tmbuf.tm_hour, &tmbuf.tm_min, MINSPERHOUR);
-    return &tmbuf;
-}
-
-static int
-tmcomp(
-	register struct tm * atmp,
-	register struct tm * btmp
-	)
-{
-	register int	result;
-
-	/* compare down to the same day */
-
-	if ((result = (atmp->tm_year - btmp->tm_year)) == 0 &&
-	    (result = (atmp->tm_mon - btmp->tm_mon)) == 0)
-	    result = (atmp->tm_mday - btmp->tm_mday);
-
-	if(result != 0)
-	    return result;
-
-	/* get rid of one-sided dst bias */
-
-	if(atmp->tm_isdst == 1 && !btmp->tm_isdst)
-	    btmp = mkdst(btmp);
-	else if(btmp->tm_isdst == 1 && !atmp->tm_isdst)
-	    atmp = mkdst(atmp);
-
-	/* compare the rest of the way */
-
-	if ((result = (atmp->tm_hour - btmp->tm_hour)) == 0 &&
-	    (result = (atmp->tm_min - btmp->tm_min)) == 0)
-	    result = atmp->tm_sec - btmp->tm_sec;
-	return result;
-}
-
-
-static time_t
-time2(
-	struct tm *	tmp,
-	bool * 		okayp,
-	int		usezn
-	)
-{
-	register int			dir;
-	register int			bits;
-	register int			i;
-	register int			saved_seconds;
-	time_t				t;
-	struct tm			yourtm, mytm;
-
-	*okayp = false;
-	yourtm = *tmp;
-	if (yourtm.tm_sec >= SECSPERMIN + 2 || yourtm.tm_sec < 0)
-		normalize(&yourtm.tm_min, &yourtm.tm_sec, SECSPERMIN);
-	normalize(&yourtm.tm_hour, &yourtm.tm_min, MINSPERHOUR);
-	normalize(&yourtm.tm_mday, &yourtm.tm_hour, HOURSPERDAY);
-	normalize(&yourtm.tm_year, &yourtm.tm_mon, MONSPERYEAR);
-	while (yourtm.tm_mday <= 0) {
-		--yourtm.tm_year;
-		yourtm.tm_mday +=
-			year_lengths[isleap(yourtm.tm_year + TM_YEAR_BASE)];
-	}
-	for ( ; ; ) {
-		i = mon_lengths[isleap(yourtm.tm_year +
-			TM_YEAR_BASE)][yourtm.tm_mon];
-		if (yourtm.tm_mday <= i)
-			break;
-		yourtm.tm_mday -= i;
-		if (++yourtm.tm_mon >= MONSPERYEAR) {
-			yourtm.tm_mon = 0;
-			++yourtm.tm_year;
-		}
-	}
-	saved_seconds = yourtm.tm_sec;
-	yourtm.tm_sec = 0;
-	/*
-	** Calculate the number of magnitude bits in a time_t
-	** (this works regardless of whether time_t is
-	** signed or unsigned, though lint complains if unsigned).
-	*/
-	for (bits = 0, t = 1; t > 0; ++bits, t <<= 1)
-		;
-	/*
-	** If time_t is signed, then 0 is the median value,
-	** if time_t is unsigned, then 1 << bits is median.
-	*/
-	t = (t < 0) ? 0 : ((time_t) 1 << bits);
-	for ( ; ; ) {
-		struct tm tmbuf;
-		if (usezn)
-		    mytm = *localtime_r(&t, &tmbuf);
-		else
-		    mytm = *gmtime_r(&t, &tmbuf);
-		dir = tmcomp(&mytm, &yourtm);
-		if (dir != 0) {
-			if (bits-- < 0)
-				return WRONG;
-			if (bits < 0)
-				--t;
-			else if (dir > 0)
-				t -= (time_t) 1 << bits;
-			else	t += (time_t) 1 << bits;
-			continue;
-		}
-		if (yourtm.tm_isdst < 0 || mytm.tm_isdst == yourtm.tm_isdst)
-			break;
-
-		return WRONG;
-	}
-	t += saved_seconds;
-	if (usezn)
-	    *tmp = *localtime_r(&t, &tmbuf);
-	else
-	    *tmp = *gmtime_r(&t, &tmbuf);
-	*okayp = true;
-	return t;
-}
-#else
-int mktime_bs;
-#endif /* !HAVE_TIMEGM */
-
-#ifdef __UNUSED__
-static time_t
-time1(
-	struct tm * tmp
-	)
-{
-	register time_t			t;
-	bool				okay;
-
-	if (tmp->tm_isdst > 1)
-		tmp->tm_isdst = 1;
-	t = time2(tmp, &okay, 1);
-	if (okay || tmp->tm_isdst < 0)
-		return t;
-
-	return WRONG;
-}
-
-time_t
-mktime(
-	struct tm * tmp
-	)
-{
-	return time1(tmp);
-}
-#endif /* __UNUSED__ */
-
-#ifndef HAVE_TIMEGM
-time_t
-timegm(
-	struct tm * tmp
-	)
-{
-	register time_t			t;
-	int				okay;
-
-	tmp->tm_isdst = 0;
-	t = time2(tmp, &okay, 0);
-	if (okay || tmp->tm_isdst < 0)
-		return t;
-
-	return WRONG;
-}
-#endif /* !HAVE_TIMEGM */


=====================================
libntp/wscript
=====================================
--- a/libntp/wscript
+++ b/libntp/wscript
@@ -23,7 +23,6 @@ def build(ctx):
 		"iosignal.c",
 		"lib_strbuf.c",
 		"machines.c",
-		"mktime.c",
 		"modetoa.c",
 		"mstolfp.c",
 		"msyslog.c",


=====================================
ntpd/keyword-gen.c
=====================================
--- a/ntpd/keyword-gen.c
+++ b/ntpd/keyword-gen.c
@@ -9,9 +9,6 @@
 #include <stdlib.h>
 #include <time.h>
 
-#include <ntp_stdlib.h>
-#include <ntp_config.h>
-#include <lib_strbuf.h>
 #include "ntp_scanner.h"
 #include "ntp_parser.tab.h"
 
@@ -272,8 +269,6 @@ int main(int argc, char **argv)
 		fprintf(stderr, "Usage:\n%s t_header.h\n", argv[0]);
 		exit(1);
 	}
-	debug = true;
-	init_lib();
 
 	populate_symb(argv[1]);
 
@@ -710,7 +705,7 @@ populate_symb(
 		    && 'T' == name[0] && '_' == name[1] && token >= 0
 		    && token < (int)COUNTOF(symb)) {
 
-			symb[token] = estrdup(name);
+			symb[token] = strdup(name);
 			if (strlen(name) > MAX_TOK_LEN) {
 				fprintf(stderr,
 					"MAX_TOK_LEN %d too small for '%s'\n"
@@ -728,13 +723,14 @@ symbname(
 	u_short token
 	)
 {
+#define BUFLENGTH 20
 	char *name;
 
 	if (token < COUNTOF(symb) && symb[token] != NULL) {
 		name = symb[token];
 	} else {
-		LIB_GETBUF(name);
-		snprintf(name, LIB_BUFLENGTH, "%d", token);
+		name = malloc(BUFLENGTH);
+		snprintf(name, BUFLENGTH, "%d", token);
 	}	
 
 	return name;


=====================================
ntpd/wscript
=====================================
--- a/ntpd/wscript
+++ b/ntpd/wscript
@@ -27,8 +27,8 @@ def build(ctx):
 		target      = "keyword-gen",
 		features    = "c cprogram bld_include src_include libisc_include",
 # src_include libisc_include",
-        source      = keyword_gen_source,
-		use			= "ntp isc RT THR PTHREAD",
+		source      = keyword_gen_source,
+#		use			= "ntp isc RT THR PTHREAD",
 		includes    = [
 						"%s/ntpd/" % bldnode
 		],


=====================================
pylib/configure.py
=====================================
--- a/pylib/configure.py
+++ b/pylib/configure.py
@@ -253,7 +253,6 @@ def cmd_configure(ctx):
 		('strlcpy', ["string.h"]),
 		('strlcat', ["string.h"]),
 #HGM		('sysconf', ["unistd.h"]),
-		('timegm', ["time.h"]),
 		('timer_create', ["time.h"]),
 		('updwtmpx', ["utmpx.h"]),		# glibc
 		)



View it on GitLab: https://gitlab.com/NTPsec/ntpsec/compare/d5bee3937a51991441b6a18ce31724e1b269ba77...5549b6a2c90ae5992b9956be18be1201d8f9bb7f
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ntpsec.org/pipermail/vc/attachments/20160115/0755db70/attachment.html>


More information about the vc mailing list