aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--PROJECTS45
-rw-r--r--timezone/asia22
-rw-r--r--timezone/private.h13
-rw-r--r--timezone/southamerica45
-rw-r--r--timezone/zdump.c73
6 files changed, 132 insertions, 71 deletions
diff --git a/ChangeLog b/ChangeLog
index d595214..9118d84 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
2004-10-11 Ulrich Drepper <drepper@redhat.com>
+ * timezone/asia: Update from tzdata2004e.
+ * timezone/southamerica: Likewise.
+ * timezone/private.h: Update from tzcode2004e.
+ * timezone/zdump.c: Likewise.
+
* stdio-common/vfscanf.c: Add support for reading localized
digits. Patch mainly by Hamed Malek <hamed@bamdad.org>.
diff --git a/PROJECTS b/PROJECTS
index 881d7d2..92ca902 100644
--- a/PROJECTS
+++ b/PROJECTS
@@ -1,6 +1,6 @@
Open jobs for finishing GNU libc:
---------------------------------
-Status: September 2002
+Status: October 2004
If you have time and talent to take over any of the jobs below please
contact <bug-glibc@gnu.org>.
@@ -53,7 +53,7 @@ contact <bug-glibc@gnu.org>.
[11] Write access function for netmasks, bootparams, and automount
- databases for nss_files and nss_db module.
+ databases for nss_files, nss_nis, and nss_nisplus modules.
The functions should be embedded in the nss scheme. This is not
hard and not all services must be supported at once.
@@ -76,7 +76,7 @@ contact <bug-glibc@gnu.org>.
[18] Based on the sprof program we need tools to analyze the output. The
result should be a link map which specifies in which order the .o
files are placed in the shared object. This should help to improve
- code locality and result in a smaller foorprint (in code and data
+ code locality and result in a smaller footprint (in code and data
memory) since less pages are only used in small parts.
@@ -93,29 +93,6 @@ contact <bug-glibc@gnu.org>.
available.
-[21] The nscd program and the stubs in the libc should be changed so
- that each program uses only one socket connect. Take a look at
- http://people.redhat.com/drepper/nscd.html
-
- An alternative approach is to use an mmap()ed file. The idea is
- the following:
- - the nscd creates the hash tables and the information it stores
- in it in a mmap()ed region. This means no pointers must be
- used, only offsets.
- OR
- if POSIX shared memory is available use a named shared memory
- region to put the data in
- - each program using NSS functionality tries to open the file
- with the data.
- - by checking some timestamp (which the nscd renews frequently)
- the programs can test whether the file is still valid
- - if the file is valid look through the nscd and locate the
- appropriate hash table for the database and lookup the data.
- If it is included we are set.
- - if the data is not yet in the database we contact the nscd using
- the currently implemented methods.
-
-
[23] The `strptime' function needs to be completed. This includes among
other things that it must get teached about timezones. The solution
envisioned is to extract the timezones from the ADO timezone
@@ -127,18 +104,4 @@ contact <bug-glibc@gnu.org>.
Australia/Canberra or if the current locale is en_AU.
-[25] Sun's nscd version implements a feature where the nscd keeps N entries
- for each database current. I.e., if an entries lifespan is over and
- it is one of the N entries to be kept the nscd updates the information
- instead of removing the entry.
-
- How to decide about which N entries to keep has to be examined.
- Factors should be number of uses (of course), influenced by aging.
- Just imagine a computer used by several people. The IDs of the current
- user should be preferred even if the last user spent more time.
-
-
-[27] We need a second test suite with tests which cannot run during a normal
- `make check' run. This test suite can require root priviledges and
- can test things like DNS (i.e., require network access),
- user-interaction, networking in general, and probably many other things.
+[27] ...deleted...
diff --git a/timezone/asia b/timezone/asia
index 4417134..3c2c1a1 100644
--- a/timezone/asia
+++ b/timezone/asia
@@ -1,4 +1,4 @@
-# @(#)asia 7.75
+# @(#)asia 7.77
# This data is by no means authoritative; if you think you know better,
# go ahead and edit the file (and please send any changes to
@@ -761,6 +761,26 @@ Zone Asia/Jerusalem 2:20:56 - LMT 1880
# direction is expected until the latter part of 2004 which is a long
# time off in terms of Israeli politics.
+# (2004-09-20):
+# The latest rumour, however, is that in 2005, when the clock changes to
+# Daylight Saving Time (date as yet unknown), the move will be a two-hour leap
+# forward (from UTC+0200 to UTC+0400) and then, in the fall, the clock will
+# move back only an hour to UTC+0300 thus effectively moving Israel's timezone
+# from UTC+0200 to UTC+0300. However, no actual draft has been put before the
+# Knesset (Israel's Parliament) though the intention is to do so this
+# month [2004-09].
+
+# (2004-09-26):
+# Even though the draft law for the above did pass the Ministerial Committee
+# for Legislative Matters three months ago, it was voted down in today's
+# Cabinet meeting. The current suggestion is to keep the current timezone at
+# UTC+0200 but have an extended period of Daylight Saving Time (UTC+0300) from
+# the beginning of Passover holiday in the spring to after the Tabernacle
+# holiday in the fall (i.e. the dates of which are governed by the Hebrew
+# calendar but this means at least 184 days of DST). However, this is only a
+# suggestion that was raised in today's cabinet meeting and has not yet been
+# drafted.
+
###############################################################################
diff --git a/timezone/private.h b/timezone/private.h
index c8f4548..5766305 100644
--- a/timezone/private.h
+++ b/timezone/private.h
@@ -21,7 +21,7 @@
#ifndef lint
#ifndef NOID
-static char privatehid[] = "@(#)private.h 7.53";
+static char privatehid[] = "@(#)private.h 7.54";
#endif /* !defined NOID */
#endif /* !defined lint */
@@ -190,11 +190,22 @@ extern int unlink P((const char * filename));
** But some newer errno.h implementations define it as a macro.
** Fix the former without affecting the latter.
*/
+
#ifndef errno
extern int errno;
#endif /* !defined errno */
/*
+** Some time.h implementations don't declare asctime_r.
+** Others might define it as a macro.
+** Fix the former without affecting the latter.
+*/
+
+#ifndef asctime_r
+extern char * asctime_r();
+#endif
+
+/*
** Private function declarations.
*/
char * icalloc P((int nelem, int elsize));
diff --git a/timezone/southamerica b/timezone/southamerica
index 13bd527..9124910 100644
--- a/timezone/southamerica
+++ b/timezone/southamerica
@@ -1,4 +1,4 @@
-# @(#)southamerica 7.52
+# @(#)southamerica 7.54
# This data is by no means authoritative; if you think you know better,
# go ahead and edit the file (and please send any changes to
@@ -186,6 +186,20 @@ Rule Arg 2000 only - Mar Sun>=1 0:00 0 -
# contains a contradiction. I would give more credence to the Saturday/Sunday
# date than the "three days earlier" phrase, and conclude that Tierra del
# Fuego set its clocks back at 2004-05-30 00:00.
+#
+# From Steffen Thorsen (2004-10-05):
+# The previous law 7210 which changed the province of Mendoza's time zone
+# back in May have been modified slightly in a new law 7277, which set the
+# new end date to 2004-09-26 (original date was 2004-10-17).
+# http://www.gobernac.mendoza.gov.ar/boletin/pdf/20040924-27244-normas.pdf
+#
+# From Mariano Absatz (2004-10-05):
+# San Juan changed from UTC-03:00 to UTC-04:00 at midnight between
+# Sunday, May 30th and Monday, May 31st. It changed back to UTC-03:00
+# at midnight between Saturday, July 24th and Sunday, July 25th....
+# http://www.sanjuan.gov.ar/prensa/archivo/000329.html
+# http://www.sanjuan.gov.ar/prensa/archivo/000426.html
+# http://www.sanjuan.gov.ar/prensa/archivo/000441.html
# Unless otherwise specified, data are from Shanks through 1992, from
# the IATA otherwise. As noted below, Shanks says that
@@ -261,8 +275,8 @@ Zone America/Argentina/San_Juan -4:34:04 - LMT 1894 Oct 31
-4:00 - WART 1991 May 7
-3:00 Arg AR%sT 1999 Oct 3
-4:00 Arg AR%sT 2000 Mar 3
- -3:00 - ART 2004 Jun 1
- -4:00 - WART 2004 Oct 17
+ -3:00 - ART 2004 May 31
+ -4:00 - WART 2004 Jul 25
-3:00 - ART
#
# Jujuy (JY)
@@ -306,7 +320,7 @@ Zone America/Argentina/Mendoza -4:35:16 - LMT 1894 Oct 31
-3:00 Arg AR%sT 1999 Oct 3
-4:00 Arg AR%sT 2000 Mar 3
-3:00 - ART 2004 May 23
- -4:00 - WART 2004 Oct 17
+ -4:00 - WART 2004 Sep 26
-3:00 - ART
#
# Chubut (CH)
@@ -420,6 +434,11 @@ Zone America/La_Paz -4:32:36 - LMT 1890
# the Government decided to postpone DST, instead of changing the Constitution
# (maybe, for the next elections, it will be possible to change the clock)...
+# From Rodrigo Severo (2004-10-04):
+# It's just the biannual change made necessary by the much hyped, supposedly
+# modern Brazilian eletronic voting machines which, apparently, can't deal
+# with a time change between the first and the second rounds of the elections.
+
# From Paul Eggert (2002-10-10):
# The official decrees referenced below are mostly taken from
# <a href="http://pcdsh01.on.br/DecHV.html">
@@ -556,11 +575,15 @@ Rule Brazil 2001 max - Feb Sun>=15 0:00 0 -
Rule Brazil 2002 only - Nov 3 0:00 1:00 S
# Decree 4,844 (2003-09-24; corrected 2003-09-26) repeals DST in BA, MT, TO.
# <a href="http://www.presidencia.gov.br/CCIVIL/decreto/2003/D4844.htm"></a>
-Rule Brazil 2003 max - Oct Sun>=15 0:00 1:00 S
+Rule Brazil 2003 only - Oct 19 0:00 1:00 S
+# Decree 5,223 (2004-10-01) reestablishes DST in MT.
+# <a href="http://www.planalto.gov.br/ccivil_03/_Ato2004-2006/2004/Decreto/D5223.htm"></a>
+Rule Brazil 2004 only - Nov 2 0:00 1:00 S
# The latest ruleset listed above says that the following states observe DST:
-# DF, ES, GO, MG, MS, PR, RJ, RS, SC, SP.
+# DF, ES, GO, MG, MS, MT, PR, RJ, RS, SC, SP.
#
-# For dates after mid-2004, the above rules with TO="max" are guesses
+Rule Brazil 2005 max - Oct Sun>=15 0:00 1:00 S
+# For dates after mid-2005, the above rules with TO="max" are guesses
# and are quite possibly wrong, but are more likely than no DST at all.
@@ -648,7 +671,8 @@ Zone America/Campo_Grande -3:38:28 - LMT 1914
# Mato Grosso (MT)
Zone America/Cuiaba -3:44:20 - LMT 1914
-4:00 Brazil AM%sT 2003 Sep 24
- -4:00 - AMT
+ -4:00 - AMT 2004 Oct 4
+ -4:00 Brazil AM%sT
#
# west Para (PA), Rondonia (RO)
# West Para includes Altamira, Oribidos, Prainha, Oriximina, and Santarem.
@@ -1029,6 +1053,11 @@ Rule Uruguay 1990 1992 - Mar Sun>=1 0:00 0 -
Rule Uruguay 1990 1991 - Oct Sun>=21 0:00 1:00 S
Rule Uruguay 1992 only - Oct 18 0:00 1:00 S
Rule Uruguay 1993 only - Feb 28 0:00 0 -
+# From Eduardo Cota (2004-09-20):
+# The uruguayan government has decreed a change in the local time....
+# http://www.presidencia.gub.uy/decretos/2004091502.htm
+Rule Uruguay 2004 only - Sep Sun>=15 0:00 1:00 S
+Rule Uruguay 2005 only - Mar Sun>=8 0:00 0 -
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone America/Montevideo -3:44:44 - LMT 1898 Jun 28
-3:44:44 - MMT 1920 May 1 # Montevideo MT
diff --git a/timezone/zdump.c b/timezone/zdump.c
index 9faeaf2..20bb916 100644
--- a/timezone/zdump.c
+++ b/timezone/zdump.c
@@ -1,4 +1,4 @@
-static char elsieid[] = "@(#)zdump.c 7.31";
+static char elsieid[] = "@(#)zdump.c 7.40";
/*
** This code has been made independent of the rest of the time
@@ -64,16 +64,15 @@ static char elsieid[] = "@(#)zdump.c 7.31";
#define isleap(y) ((((y) % 4) == 0 && ((y) % 100) != 0) || ((y) % 400) == 0)
#endif /* !defined isleap */
-#if HAVE_GETTEXT - 0
+#if HAVE_GETTEXT
#include "locale.h" /* for setlocale */
#include "libintl.h"
-#endif /* HAVE_GETTEXT - 0 */
+#endif /* HAVE_GETTEXT */
#ifndef GNUC_or_lint
#ifdef lint
#define GNUC_or_lint
-#endif /* defined lint */
-#ifndef lint
+#else /* !defined lint */
#ifdef __GNUC__
#define GNUC_or_lint
#endif /* defined __GNUC__ */
@@ -83,8 +82,7 @@ static char elsieid[] = "@(#)zdump.c 7.31";
#ifndef INITIALIZE
#ifdef GNUC_or_lint
#define INITIALIZE(x) ((x) = 0)
-#endif /* defined GNUC_or_lint */
-#ifndef GNUC_or_lint
+#else /* !defined GNUC_or_lint */
#define INITIALIZE(x)
#endif /* !defined GNUC_or_lint */
#endif /* !defined INITIALIZE */
@@ -96,11 +94,11 @@ static char elsieid[] = "@(#)zdump.c 7.31";
*/
#ifndef _
-#if HAVE_GETTEXT - 0
+#if HAVE_GETTEXT
#define _(msgid) gettext(msgid)
-#else /* !(HAVE_GETTEXT - 0) */
+#else /* !HAVE_GETTEXT */
#define _(msgid) msgid
-#endif /* !(HAVE_GETTEXT - 0) */
+#endif /* !HAVE_GETTEXT */
#endif /* !defined _ */
#ifndef TZ_DOMAIN
@@ -110,8 +108,7 @@ static char elsieid[] = "@(#)zdump.c 7.31";
#ifndef P
#ifdef __STDC__
#define P(x) x
-#endif /* defined __STDC__ */
-#ifndef __STDC__
+#else /* !defined __STDC__ */
#define P(x) ()
#endif /* !defined __STDC__ */
#endif /* !defined P */
@@ -129,6 +126,7 @@ static time_t hunt P((char * name, time_t lot, time_t hit));
static size_t longest;
static char * progname;
static void show P((char * zone, time_t t, int v));
+static void dumptime P((const struct tm * tmp));
int
main(argc, argv)
@@ -150,14 +148,13 @@ char * argv[];
struct tm newtm;
INITIALIZE(cuttime);
-#if HAVE_GETTEXT - 0
- (void) setlocale(LC_CTYPE, "");
+#if HAVE_GETTEXT
(void) setlocale(LC_MESSAGES, "");
#ifdef TZ_DOMAINDIR
(void) bindtextdomain(TZ_DOMAIN, TZ_DOMAINDIR);
-#endif /* defined(TEXTDOMAINDIR) */
+#endif /* defined TEXTDOMAINDIR */
(void) textdomain(TZ_DOMAIN);
-#endif /* HAVE_GETTEXT - 0 */
+#endif /* HAVE_GETTEXT */
progname = argv[0];
for (i = 1; i < argc; ++i)
if (strcmp(argv[i], "--version") == 0) {
@@ -324,7 +321,7 @@ struct tm * oldp;
return -delta(oldp, newp);
result = 0;
for (tmy = oldp->tm_year; tmy < newp->tm_year; ++tmy)
- result += DAYSPERNYEAR + isleap(tmy + TM_YEAR_BASE);
+ result += DAYSPERNYEAR + isleap(tmy + (long) TM_YEAR_BASE);
result += newp->tm_yday - oldp->tm_yday;
result *= HOURSPERDAY;
result += newp->tm_hour - oldp->tm_hour;
@@ -344,10 +341,12 @@ int v;
struct tm * tmp;
(void) printf("%-*s ", (int) longest, zone);
- if (v)
- (void) printf("%.24s UTC = ", asctime(gmtime(&t)));
+ if (v) {
+ dumptime(gmtime(&t));
+ (void) printf(" UTC = ");
+ }
tmp = localtime(&t);
- (void) printf("%.24s", asctime(tmp));
+ dumptime(tmp);
if (*abbr(tmp) != '\0')
(void) printf(" %s", abbr(tmp));
if (v) {
@@ -371,3 +370,37 @@ struct tm * tmp;
result = tzname[tmp->tm_isdst];
return (result == NULL) ? &nada : result;
}
+
+static void
+dumptime(timeptr)
+register const struct tm * timeptr;
+{
+ static const char wday_name[][3] = {
+ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
+ };
+ static const char mon_name[][3] = {
+ "Jan", "Feb", "Mar", "Apr", "May", "Jun",
+ "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
+ };
+ register const char * wn;
+ register const char * mn;
+
+ /*
+ ** The packaged versions of localtime and gmtime never put out-of-range
+ ** values in tm_wday or tm_mon, but since this code might be compiled
+ ** with other (perhaps experimental) versions, paranoia is in order.
+ */
+ if (timeptr->tm_wday < 0 || timeptr->tm_wday >=
+ (int) (sizeof wday_name / sizeof wday_name[0]))
+ wn = "???";
+ else wn = wday_name[timeptr->tm_wday];
+ if (timeptr->tm_mon < 0 || timeptr->tm_mon >=
+ (int) (sizeof mon_name / sizeof mon_name[0]))
+ mn = "???";
+ else mn = mon_name[timeptr->tm_mon];
+ (void) printf("%.3s %.3s%3d %.2d:%.2d:%.2d %ld",
+ wn, mn,
+ timeptr->tm_mday, timeptr->tm_hour,
+ timeptr->tm_min, timeptr->tm_sec,
+ timeptr->tm_year + (long) TM_YEAR_BASE);
+}