From 10d002160949c985e6f99fb8d647d5e3c67ef554 Mon Sep 17 00:00:00 2001 From: Jeff Johnston Date: Wed, 17 Apr 2002 21:23:31 +0000 Subject: 2002-04-17 Jeff Johnston * libc/include/time.h (tzset, _tzset_r): Added prototypes. (strptime): Moved prototype to be within !__STRICT_ANSI__. (_tzname, _daylight, _timezone): No long __CYGWIN__ only. (tzname): Defined for all platforms. (daylight, timezone): Defined only for CYGWIN. * libc/sys/linux/machine/i386/crt0.c: Add call to tzset() after environment set up. * libc/stdlib/setenv_r.c (_setenv_r): Call tzset() if the TZ environment variable is set. * libc/time/Makefile.am: Add support for tzset.c, tzlock.c, and tzset_r.c. * libc/time/Makefile.in: Regenerated. * libc/time/gmtime.c (gmtime): Changed to call gmtime_r. * libc/time/gmtime_r.c (gmtime_r): Changed to call _mktm_r. * libc/time/lcltime_r.c (lcltime_r): Ditto. * libc/time/local.h: New local header file. * libc/time/mktime.c (mktime): Add timezone support. * libc/time/mktm_r.c: New file which is the common engine for gmtime_r and lcltime_r. This code has timezone support. * libc/time/strftime.c (strftime): Add %Z timezone support. * libc/time/tzlock.c: New file containing timezone lock stubs. * libc/time/tzset.c: New file containing tzset() routine. * libc/time/tzset_r.c: New file containing _tzset_r and internal routine for calculating timezone changes for specified year. --- newlib/libc/time/tzset.c | 72 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 newlib/libc/time/tzset.c (limited to 'newlib/libc/time/tzset.c') diff --git a/newlib/libc/time/tzset.c b/newlib/libc/time/tzset.c new file mode 100644 index 000000000..c70e3ee6e --- /dev/null +++ b/newlib/libc/time/tzset.c @@ -0,0 +1,72 @@ +/* +FUNCTION +<>---set timezone characteristics from TZ environment variable + +INDEX + tzset + +ANSI_SYNOPSIS + #include + void tzset(void); + void _tzset_r (struct _reent *); + +TRAD_SYNOPSIS + #include + void tzset(); + void _tzset_r (reent_ptr) + struct _reent *reent_ptr; + +DESCRIPTION +<> examines the TZ environment variable and sets up the three +external variables: <<_timezone>>, <<_daylight>>, and <>. The +value of <<_timezone>> shall be the offset from the current time zone +to GMT. The value of <<_daylight>> shall be 0 if there is no daylight +savings time for the current time zone, otherwise it will be non-zero. +The <> array has two entries: the first is the name of the +standard time zone, the second is the name of the daylight-savings time +zone. + +The TZ environment variable is expected to be in the following POSIX +format: + + stdoffset1[dst[offset2][,start[/time1],end[/time2]]] + +where: std is the name of the standard time-zone (minimum 3 chars) + offset1 is the value to add to local time to arrive at Universal time + it has the form: hh[:mm[:ss]] + dst is the name of the alternate (daylight-savings) time-zone (min 3 chars) + offset2 is the value to add to local time to arrive at Universal time + it has the same format as the std offset + start is the day that the alternate time-zone starts + time1 is the optional time that the alternate time-zone starts + (this is in local time and defaults to 02:00:00 if not specified) + end is the day that the alternate time-zone ends + time2 is the time that the alternate time-zone ends + (it is in local time and defaults to 02:00:00 if not specified) + +Note that there is no white-space padding between fields. Also note that +if TZ is null, the default is Universal GMT which has no daylight-savings +time. If TZ is empty, the default EST5EDT is used. + +The function <<_tzset_r>> is identical to <> only it is reentrant +and is used for applications that use multiple threads. + +RETURNS +There is no return value. + +PORTABILITY +<> is part of the POSIX standard. + +Supporting OS subroutine required: None +*/ + +#include <_ansi.h> +#include +#include +#include "local.h" + +_VOID +_DEFUN_VOID (tzset) +{ + _tzset_r (_REENT); +} -- cgit v1.2.3