* timezone/asia: Update from tzdata2004e.
	* timezone/southamerica: Likewise.
	* timezone/private.h: Update from tzcode2004e.
	* timezone/zdump.c: Likewise.
This commit is contained in:
Ulrich Drepper 2004-10-12 06:19:23 +00:00
parent f448d449c7
commit daa6fd8885
6 changed files with 132 additions and 71 deletions

View File

@ -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>.

View File

@ -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...

View File

@ -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.
###############################################################################

View File

@ -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,10 +190,21 @@ 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.
*/

View File

@ -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

View File

@ -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);
}