summaryrefslogtreecommitdiff
path: root/time
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>1996-06-16 04:52:54 +0000
committerRoland McGrath <roland@gnu.org>1996-06-16 04:52:54 +0000
commita3b5844025aa90fd28f3bf5a27be116852761f4e (patch)
tree390714ca3b0d10f4ef9bce7ffd4d649ad9184f13 /time
parent5fbef188648f5150617e0a14f1011e600f1b3a0f (diff)
Sun Jun 16 00:40:20 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
* time/Makefile ($(installed-localtime-file)): If target exists, do nothing but print a message; if not, make it an absolute symlink. * time/tzset.c (__tzset): After stripping leading :, call __tzfile_read on TZ even if it's empty or null. * time/tzfile.c (__tzfile_read): Use "Universal" if passed "".
Diffstat (limited to 'time')
-rw-r--r--time/Makefile3
-rw-r--r--time/tzfile.c10
-rw-r--r--time/tzset.c64
3 files changed, 39 insertions, 38 deletions
diff --git a/time/Makefile b/time/Makefile
index 3d8240c7ae..f1bf761b40 100644
--- a/time/Makefile
+++ b/time/Makefile
@@ -119,7 +119,8 @@ target-zone-flavor = $(filter /posix /right, \
ifdef localtime
$(installed-localtime-file): $(zonedir)/$(localtime) $(objpfx)zic
- $(zic-cmd) -l $(localtime)
+ if test -r $@; then echo Site timezone NOT reset to Factory.; else \
+ ln -s -f $< $@; fi
endif
ifdef posixrules
$(installed-posixrules-file): $(zonedir)/$(posixrules) $(objpfx)zic
diff --git a/time/tzfile.c b/time/tzfile.c
index e78a05ec75..332ed46c33 100644
--- a/time/tzfile.c
+++ b/time/tzfile.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1992, 1993, 1995 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 92, 93, 95, 96 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -103,8 +103,12 @@ DEFUN(__tzfile_read, (file), CONST char *file)
free((PTR) leaps);
leaps = NULL;
- if (file == NULL || *file == '\0')
+ if (file == NULL)
+ /* No user specification; use the site-wide default. */
file = TZDEFAULT;
+ else if (*file == '\0')
+ /* User specified the empty string; use UTC explicitly. */
+ file = "Universal";
if (*file != '/')
{
@@ -224,7 +228,7 @@ DEFUN(__tzfile_read, (file), CONST char *file)
(void) fclose(f);
compute_tzname_max (chars);
-
+
__use_tzfile = 1;
return;
diff --git a/time/tzset.c b/time/tzset.c
index 5f949dce5f..d3a33dc1ce 100644
--- a/time/tzset.c
+++ b/time/tzset.c
@@ -99,45 +99,41 @@ DEFUN_VOID(__tzset)
/* Examine the TZ environment variable. */
tz = getenv ("TZ");
- if (tz != NULL)
+ /* A leading colon means "implementation defined syntax".
+ We ignore the colon and always use the same algorithm:
+ try a data file, and if none exists parse the 1003.1 syntax. */
+ if (tz && *tz == ':')
+ ++tz;
+
+ /* Try to read a data file. */
+ __tzfile_read (tz);
+ if (__use_tzfile)
{
- /* A leading colon means "implementation defined syntax".
- We ignore the colon and always use the same algorithm:
- try a data file, and if none exists parse the 1003.1 syntax. */
- if (*tz == ':')
- ++tz;
-
- __tzfile_read (tz);
- if (__use_tzfile)
- {
- __tzset_run = 1;
- return;
- }
+ __tzset_run = 1;
+ return;
}
+ /* No data file found. Default to UTC if nothing specified. */
+
if (tz == NULL || *tz == '\0')
{
- __tzfile_read((char *) NULL);
- if (!__use_tzfile)
- {
- const char UTC[] = "UTC";
- size_t len = sizeof UTC;
- tz_rules[0].name = (char *) malloc(len);
- if (tz_rules[0].name == NULL)
- return;
- tz_rules[1].name = (char *) malloc(len);
- if (tz_rules[1].name == NULL)
- return;
- memcpy ((PTR) tz_rules[0].name, UTC, len);
- memcpy ((PTR) tz_rules[1].name, UTC, len);
- tz_rules[0].type = tz_rules[1].type = J0;
- tz_rules[0].m = tz_rules[0].n = tz_rules[0].d = 0;
- tz_rules[1].m = tz_rules[1].n = tz_rules[1].d = 0;
- tz_rules[0].secs = tz_rules[1].secs = 0;
- tz_rules[0].offset = tz_rules[1].offset = 0L;
- tz_rules[0].change = tz_rules[1].change = (time_t) -1;
- tz_rules[0].computed_for = tz_rules[1].computed_for = 0;
- }
+ static const char UTC[] = "UTC";
+ size_t len = sizeof UTC;
+ tz_rules[0].name = (char *) malloc(len);
+ if (tz_rules[0].name == NULL)
+ return;
+ tz_rules[1].name = (char *) malloc(len);
+ if (tz_rules[1].name == NULL)
+ return;
+ memcpy ((PTR) tz_rules[0].name, UTC, len);
+ memcpy ((PTR) tz_rules[1].name, UTC, len);
+ tz_rules[0].type = tz_rules[1].type = J0;
+ tz_rules[0].m = tz_rules[0].n = tz_rules[0].d = 0;
+ tz_rules[1].m = tz_rules[1].n = tz_rules[1].d = 0;
+ tz_rules[0].secs = tz_rules[1].secs = 0;
+ tz_rules[0].offset = tz_rules[1].offset = 0L;
+ tz_rules[0].change = tz_rules[1].change = (time_t) -1;
+ tz_rules[0].computed_for = tz_rules[1].computed_for = 0;
__tzset_run = 1;
return;
}