[uClibc-cvs] uClibc/libc/misc/time time.c,1.11,1.12 Makefile,1.31,1.32

Manuel Novoa III mjn3 at uclibc.org
Tue Jun 17 19:19:44 UTC 2003


Update of /var/cvs/uClibc/libc/misc/time
In directory winder:/tmp/cvs-serv11365/libc/misc/time

Modified Files:
	time.c Makefile 
Log Message:
Optionally support the struct tm extension fields.
Add a few misc functions mentioned in time.h.
Revert davidm's change regarding using a define for the "/etc/TZ" path,
as this is eventually meant to be a configurable extension and not
unconditionally supported.


Index: time.c
===================================================================
RCS file: /var/cvs/uClibc/libc/misc/time/time.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- time.c	17 Feb 2003 12:59:05 -0000	1.11
+++ time.c	17 Jun 2003 19:19:39 -0000	1.12
@@ -401,9 +401,9 @@
 
 char *ctime_r(const time_t *clock, char *buf)
 {
-	struct tm xtms;
+	struct tm xtm;
 
-	return asctime_r(localtime_r(clock, &xtms), buf);
+	return asctime_r(localtime_r(clock, &xtm), buf);
 }
 
 #endif
@@ -589,13 +589,12 @@
 		*x = *timer + offset;
 
 		_time_t2tm(x, days, result);
-		
-		if (dst) {
-			result->tm_isdst = dst;
-			break;
-		}
-		++dst;
-	} while ((result->tm_isdst = tm_isdst(result)) != 0);
+		result->tm_isdst = dst;
+#ifdef __UCLIBC_HAS_TM_EXTENSIONS__
+		result->tm_gmtoff = - _time_tzinfo[dst].gmt_offset;
+		strcpy( (char *)(result->tm_zone), _time_tzinfo[dst].tzname);
+#endif /* __UCLIBC_HAS_TM_EXTENSIONS__ */
+	} while ((++dst < 2) && (result->tm_isdst = tm_isdst(result)) != 0);
 
 	TZUNLOCK;
 
@@ -606,11 +605,16 @@
 /**********************************************************************/
 #ifdef L_mktime
 
+/* Another name for `mktime'.  */
+/* time_t timelocal(struct tm *tp) */
+weak_alias(mktime,timelocal);
+
 time_t mktime(struct tm *timeptr)
 {
 	return  _time_mktime(timeptr, 1);
 }
 
+
 #endif
 /**********************************************************************/
 #ifdef L_strftime
@@ -1538,7 +1542,7 @@
 	size_t todo;
 	char *p = NULL;
 
-	if ((fd = open(_PATH_TZ, O_RDONLY)) >= 0) {
+	if ((fd = open("/etc/TZ", O_RDONLY)) >= 0) {
 		todo = TZ_BUFLEN;
 		p = buf;
 		do {
@@ -1612,7 +1616,7 @@
 		 ) || !*e) {			/* or set to empty string. */
 	ILLEGAL:					/* TODO: Clean up the following... */
 #ifdef __TIME_TZ_OPT_SPEED
-		*oldval = 0;			/* Set oldval tonnn empty string. */
+		*oldval = 0;			/* Set oldval to an empty string. */
 #endif /* __TIME_TZ_OPT_SPEED */
 		s = _time_tzinfo[0].tzname;
 		*s = 'U';
@@ -1932,6 +1936,16 @@
 	}
 	/* TODO -- should this be 0? */
 	p[4] = 0;					/* result[8] .. tm_isdst */
+#ifdef __UCLIBC_HAS_TM_EXTENSIONS__
+	result->tm_gmtoff = 0;
+	{
+		register char *s = (char *) result->tm_zone;
+		*s = 'U';
+		*++s = 'T';
+		*++s = 'C';
+		*++s = 0;
+	}
+#endif /* __UCLIBC_HAS_TM_EXTENSIONS__ */
 
 	return result;
 }
@@ -2041,3 +2055,17 @@
 
 #endif
 /**********************************************************************/
+#ifdef L_dysize
+/* Return the number of days in YEAR.  */
+
+int dysize(int year)
+{
+	return __isleap(year) ? 366 : 365;
+}
+
+#endif
+/**********************************************************************/
+/* Like `mktime', but for TP represents Universal Time, not local time.  */
+/* time_t timegm(struct tm *tp) */
+
+

Index: Makefile
===================================================================
RCS file: /var/cvs/uClibc/libc/misc/time/Makefile,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -d -r1.31 -r1.32
--- Makefile	31 Oct 2002 18:19:40 -0000	1.31
+++ Makefile	17 Jun 2003 19:19:39 -0000	1.32
@@ -27,7 +27,7 @@
 MSRC= time.c
 MOBJ= asctime.o asctime_r.o clock.o ctime.o ctime_r.o gmtime.o gmtime_r.o \
 	localtime.o localtime_r.o mktime.o strftime.o strptime.o tzset.o \
-	_time_t2tm.o __time_tm.o _time_mktime.o
+	_time_t2tm.o __time_tm.o _time_mktime.o dysize.o timegm.o
 
 ifeq ($(UCLIBC_HAS_FLOATS),y)
 	MOBJ += difftime.o 



More information about the uClibc-cvs mailing list