Updated to fedora-glibc-20071010T2047 fedora-glibc-2_6_90-18
authorjakub <jakub>
Wed, 10 Oct 2007 21:00:44 +0000 (21:00 +0000)
committerjakub <jakub>
Wed, 10 Oct 2007 21:00:44 +0000 (21:00 +0000)
73 files changed:
ChangeLog
NEWS
elf/do-lookup.h
fedora/branch.mk
fedora/glibc.spec.in
include/bits/error.h [new file with mode: 0644]
locale/C-time.c
locale/programs/ld-time.c
localedata/ChangeLog
localedata/locales/cs_CZ
localedata/locales/de_DE
localedata/locales/en_NG [new file with mode: 0644]
localedata/locales/en_US
localedata/locales/fr_FR
localedata/locales/fur_IT
localedata/locales/fy_DE
localedata/locales/hu_HU
localedata/locales/i18n
localedata/locales/li_BE
localedata/locales/li_NL
localedata/locales/nb_NO
localedata/locales/nds_DE
localedata/locales/nds_NL
localedata/locales/nn_NO
localedata/locales/pl_PL
localedata/locales/sc_IT
localedata/locales/sk_SK
localedata/tst-langinfo.sh
login/login_tty.c
math/libm-test.inc
misc/bits/error.h [new file with mode: 0644]
misc/error.h
nptl/ChangeLog
nptl/sysdeps/pthread/bits/libc-lock.h
nptl/tst-initializers1.c
nscd/connections.c
nscd/nscd_helper.c
posix/glob.c
posix/tst-gnuglob.c
stdio-common/printf-parse.h
stdio-common/printf-parsemb.c
stdio-common/printf-prs.c
stdio-common/vfprintf.c
stdlib/Makefile
stdlib/msort.c
stdlib/tst-qsort2.c [new file with mode: 0644]
string/bits/string2.h
sunrpc/svc.c
sysdeps/gnu/netinet/tcp.h
sysdeps/i386/dl-trampoline.S
sysdeps/ieee754/dbl-64/e_lgamma_r.c
sysdeps/ieee754/flt-32/e_lgammaf_r.c
sysdeps/ieee754/ldbl-96/e_lgammal_r.c
sysdeps/unix/sysv/linux/Makefile
sysdeps/unix/sysv/linux/Versions
sysdeps/unix/sysv/linux/eventfd.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/eventfd_read.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/eventfd_write.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/signalfd.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/sys/eventfd.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/sys/signalfd.h [new file with mode: 0644]
sysdeps/x86_64/cacheinfo.c
timezone/africa
timezone/antarctica
timezone/asia
timezone/australasia
timezone/europe
timezone/leapseconds
timezone/northamerica
timezone/southamerica
timezone/zic.c
timezone/zone.tab
wcsmbs/wchar.h

index cb019c5..0e81065 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,146 @@
-2007-10-03  Jakub Jelinek
+2007-10-10  Jakub Jelinek  <jakub@redhat.com>
+
+       * stdio-common/printf-parse.h: Include string.h and wchar.h.
+       (__find_specwc): Change into __extern_always_inline function.
+       (__find_specmb): Likewise.  Remove ps argument.  Use __strchrnul.
+       (__parse_one_specmb): Remove ps argument.
+       * stdio-common/vfprintf.c (vfprintf): Remove mbstate variable.
+       Adjust __find_specmb and __parse_one_specmb callers.
+       * stdio-common/printf-prs.c (parse_printf_format): Likewise.
+       * stdio-common/printf-parsemb.c (__find_specwc, __find_specmb):
+       Removed.
+       (__parse_one_specmb): Remove ps argument, adjust __find_specmb
+       caller.
+
+2007-10-09  Ulrich Drepper  <drepper@redhat.com>
+
+       * sysdeps/x86_64/cacheinfo.c (init_cacheinfo): Work around problem
+       with some Pentium Ds.
+
+2007-10-08  Ulrich Drepper  <drepper@redhat.com>
+
+       * sysdeps/unix/sysv/linux/eventfd_read.c (eventfd_read): Use
+       __read not read.
+       * sysdeps/unix/sysv/linux/eventfd_write.c (eventfd_write): Use
+       __write not write.
+
+2007-10-07  Ulrich Drepper  <drepper@redhat.com>
+
+       [BZ #181]
+       * locale/C-time.c: Set week_1stday data to 19971201.
+       * locale/programs/ld-time.c (time_finish): Default for
+       first_workday is Monday.
+
+       [BZ #2633]
+       * wcsmbs/wchar.h: Move many C99 functions into std namespace.
+
+       [BZ #5103]
+       * posix/glob.c (glob): Recognize patterns starting \/.
+       * posix/tst-gnuglob.c (find_file): Handle absolute path names.
+       (main): Add test for pattern starting \/.
+
+       * misc/error.h: Use __const instead of const.
+       * misc/bits/error.h: Likewise.
+
+2007-10-07  Andreas Jaeger  <aj@suse.de>
+
+       * include/bits/error.h: New file.
+
+       * misc/bits/error.h (error_at_line): Fix prototype.
+
+2007-10-06  Ulrich Drepper  <drepper@redhat.com>
+
+       [BZ #3924]
+       * sysdeps/i386/dl-trampoline.S (_dl_runtime_profile): Fix a few
+       more little bugs in creating the stack frame when pltexit has to
+       be called.
+
+       * nscd/nscd_helper.c (__nscd_cache_search): Prevent endless loops.
+       * nscd/connections.c (verify_persistent_db): Recognize circular lists.
+
+       [BZ #4407]
+       * sysdeps/ieee754/dbl-64/e_lgamma_r.c: Fix *signgamp for -0.0.
+       * sysdeps/ieee754/flt-32/e_lgammaf_r.c: Likewise.
+       * sysdeps/ieee754/ldbl-96/e_lgammal_r.c: Likewise.
+       * math/libm-test.inc: Add test for this case.
+
+       [BZ #5010]
+       * sunrpc/svc.c (struct svc_callout): Add sc_mapped element.
+       (svc_register): Initialize sc_mapped.  Set to TRUE if call to
+       map service succeeded.
+       (svc_is_mapped): New function.
+       (svc_unregister): Use it before trying to unmap service.
+
+2007-10-05  Ulrich Drepper  <drepper@redhat.com>
+
+       * timezone/zic.c: Update from tzcode2007h.
+
+       [BZ #5063]
+       * timezone/africa: Update from tzdata2007h.
+       * timezone/antarctica: Likewise.
+       * timezone/asia: Likewise.
+       * timezone/australasia: Likewise.
+       * timezone/europe: Likewise.
+       * timezone/leapseconds: Likewise.
+       * timezone/northamerica: Likewise.
+       * timezone/southamerica: Likewise.
+       * timzeone/zone.tab: Likewise.
+
+       [BZ #5104]
+       * elf/do-lookup.h (do_lookup_x): Don't ignore STT_COMMON symbols.
+
+       [BZ #5113]
+       * string/bits/string2.h (__strdup): Cast parameters to calloc to
+       avoid warning with -Wconversion.
+       (__strndup): Likewise.
+       Half the patch by Christian Iseli <christian.iseli@licr.org>.
+
+       [BZ #5112]
+       * nscd/connections.c (restart): Don't resync if database is
+       disabled.  Patch mostly by Brian De Wolf <bldewolf@csupomona.edu>.
+
+       * sysdeps/gnu/netinet/tcp.h: Define TCP_MD5SIG, TCP_MD5SIG_MAXKEYLEN,
+       struct tcp_md5sig.  Extend struct tcp_info according to recent kernels.
+
+       * sysdeps/unix/sysv/linux/Makefile (sysdep_routines): Add eventfd,
+       evetnfd_read, eventfd_write.
+       * sysdeps/unix/sysv/linux/eventfd.c: New file.
+       * sysdeps/unix/sysv/linux/eventfd_read.c: New file.
+       * sysdeps/unix/sysv/linux/eventfd_write.c: New file.
+       * sysdeps/unix/sysv/linux/sys/eventfd.h: New file.
+       * sysdeps/unix/sysv/linux/Versions: Export eventfd, eventfd_read,
+       eventfd_write for GLIBC_2.7.
+
+       * sysdeps/unix/sysv/linux/Makefile (sysdep_routines): Add signalfd.
+       * sysdeps/unix/sysv/linux/signalfd.c: New file.
+       * sysdeps/unix/sysv/linux/sys/signalfd.h: New file.
+       * sysdeps/unix/sysv/linux/Versions: Export signalfd for GLIBC_2.7.
+
+2007-10-04  Jakub Jelinek  <jakub@redhat.com>
+
+       * stdlib/msort.c: Include stdint.h.
+       (struct msort_param): New type.
+       (msort_with_tmp): Use struct msort_param pointer for unchanging
+       parameters.  Add optimized handling for several common sizes
+       and indirect sorting mode.
+       (qsort): Adjust msort_with_tmp callers.  For big S use indirect
+       sorting.
+       Suggested by Belazougui Djamel .
+
+       * stdlib/Makefile (tests): Add tst-qsort2.
+       * stdlib/tst-qsort2.c: New test.
+
+2007-10-04  Ulrich Drepper  <drepper@redhat.com>
+
+       * login/login_tty.c (login_tty): The Linux kernel can return EBUSY
+       for dup2 in case another thread races with the current one.  Retry
+       in this case.
+
+       * misc/error.h: Remove support for use outside of libc.  We have to
+       include <features.h> now.  Include <bits/error.h> if possible.
+       * misc/bits/error.h: New file.
+
+2007-10-03  Jakub Jelinek  <jakub@redhat.com>
 
        * string/bits/string3.h (memcpy, memmove, mempcpy, memset, bcopy,
        bzero, strcpy, stpcpy, strncpy, strcat, strncat): Use
diff --git a/NEWS b/NEWS
index 0c50800..82dbdb1 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,4 @@
-GNU C Library NEWS -- history of user-visible changes.  2007-9-19
+GNU C Library NEWS -- history of user-visible changes.  2007-10-5
 Copyright (C) 1992-2006, 2007 Free Software Foundation, Inc.
 See the end for copying conditions.
 
@@ -24,6 +24,9 @@ Version 2.7
 
 * More CPU set manipulation functions.  Implemented by Ulrich Drepper.
 
+* New Linux interfaces: signalfd, eventfd, eventfd_read, and eventfd_write.
+  Implemented by Ulrich Drepper.
+
 * Handle private futexes in the NPTL implementation.
   Implemented by Jakub Jelinek and Ulrich Drepper.
 
@@ -34,6 +37,13 @@ Version 2.7
 
 * SHA-256 and SHA-512 based password encryption.
   Implemented by Ulrich Drepper.
+
+* New locales: ber_DZ, ber_MA, en_NG, fil_PH, fur_IT, fy_DE, ha_NG, ig_NG,
+  ik_CA, iu_CA, li_BE, li_NL, nds_DE, nds_NL, pap_AN, sc_IT, tk_TM, ug_CN,
+  yo_NG.
+
++ New iconv modules: MAC-CENTRALEUROPE, ISO-8859-9E, KOI8-RU.
+  Implemented by Ulrich Drepper.
 \f
 Version 2.6
 
index e17d463..ebb9ed5 100644 (file)
@@ -87,8 +87,9 @@ do_lookup_x (const char *undef_name, uint_fast32_t new_hash,
          return NULL;
 
        if (__builtin_expect (ELFW(ST_TYPE) (sym->st_info) > STT_FUNC
+                             && ELFW(ST_TYPE) (sym->st_info) != STT_COMMON
                              && ELFW(ST_TYPE) (sym->st_info) != STT_TLS, 0))
-         /* Ignore all but STT_NOTYPE, STT_OBJECT and STT_FUNC
+         /* Ignore all but STT_NOTYPE, STT_OBJECT, STT_FUNC, and STT_COMMON
             entries (and STT_TLS if TLS is supported) since these
             are no code/data definitions.  */
          return NULL;
index 29da998..1f8d9ee 100644 (file)
@@ -3,5 +3,5 @@ glibc-branch := fedora
 glibc-base := HEAD
 DIST_BRANCH := devel
 COLLECTION := dist-f8
-fedora-sync-date := 2007-10-03 19:08 UTC
-fedora-sync-tag := fedora-glibc-20071003T1908
+fedora-sync-date := 2007-10-10 20:47 UTC
+fedora-sync-tag := fedora-glibc-20071010T2047
index 7610eab..701f107 100644 (file)
@@ -1,4 +1,4 @@
-%define glibcrelease 17
+%define glibcrelease 18
 %define run_glibc_tests 1
 %define auxarches i586 i686 athlon sparcv9v sparc64v alphaev6
 %define xenarches i686 athlon
@@ -1010,6 +1010,15 @@ rm -f *.filelist*
 %endif
 
 %changelog
+* Wed Oct 10 2007 Jakub Jelinek <jakub@redhat.com> 2.6.90-18
+- add signalfd, eventfd, eventfd_read, eventfd_write
+- qsort speedups
+- workaround for cpuid bugs (#324081)
+- make sure gettext's conversion_lock is initialized even if
+  program isn't linked against libpthread.so.0, only dlopens it (#321761)
+- misc fixes (BZ#5112, BZ#5113, BZ#5104, BZ#5063, BZ#5010, BZ#4407,
+  BZ#3924, BZ#5103, BZ#2633, BZ#181, BZ#73, #321901)
+
 * Wed Oct  3 2007 Jakub Jelinek <jakub@redhat.com> 2.6.90-17
 - fix {,v}swprintf with -D_FORTIFY_SOURCE=1 -mlong-double-64 on ppc*/s390*/sparc*
 - strcoll fixes
diff --git a/include/bits/error.h b/include/bits/error.h
new file mode 100644 (file)
index 0000000..c2c7c9b
--- /dev/null
@@ -0,0 +1 @@
+#include "../../misc/bits/error.h"
index 9047587..a9275d9 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995-2000, 2001, 2002, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1995-2002, 2004, 2007 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@gnu.org>, 1995.
 
@@ -134,7 +134,7 @@ const struct locale_data _nl_C_LC_TIME attribute_hidden =
     { .wstr = (const uint32_t *) L"" },
     { .wstr = (const uint32_t *) L"" },
     { .string = "\7" },
-    { .word = 19971130 },
+    { .word = 19971201 },
     { .string = "\4" },
     { .string = "\7" },
     { .string = "\1" },
index 30c1353..f040c93 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995-2005, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 1995-2005, 2006, 2007 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@gnu.org>, 1995.
 
@@ -508,7 +508,7 @@ No definition for %s category found"), "LC_TIME"));
 
   if (time->first_workday == '\0')
     /* The definition does not specify this so the default is used.  */
-    time->first_workday = 1;
+    time->first_workday = 2;
   else if (time->first_workday > time->week_ndays)
     WITH_CUR_LOCALE (error (0, 0, _("\
 %s: values for field `%s' must not be larger than %d"),
index db32361..a14908d 100644 (file)
@@ -1,3 +1,39 @@
+2007-10-10  Jakub Jelinek  <jakub@redhat.com>
+
+       * locales/en_US: Add first_weekday and first_workday.
+       * locales/cs_CZ: Likewise.
+       * locales/fur_IT: Likewise.
+       * locales/fy_DE: Likewise.
+       * locales/hu_HU: Likewise.
+       * locales/i18n: Likewise.
+       * locales/li_BE: Likewise.
+       * locales/li_NL: Likewise.
+       * locales/nds_DE: Likewise.
+       * locales/nds_NL: Likewise.
+       * locales/pl_PL: Likewise.
+       * locales/sc_IT: Likewise.
+       * locales/sk_SK: Likewise.
+
+2007-10-09  Ulrich Drepper  <drepper@redhat.com>
+
+       * locales/de_DE: Set first week day to Monday.
+       * locales/fr_FR: Likewise.
+
+2007-10-07  Ulrich Drepper  <drepper@redhat.com>
+
+       [BZ #73]
+       * locales/nb_NO: Update time information, collation, thousands
+       separator.
+       * locales/nn_NO: Likewise.
+
+2007-10-04  Ulrich Drepper  <drepper@redhat.com>
+
+       * locales/en_NG: New file.
+
+2007-10-04  Jakub Jelinek  <jakub@redhat.com>
+
+       * tst-langinfo.sh: Update expected THOUSEP for fr_FR.
+
 2007-10-02  Ulrich Drepper  <drepper@redhat.com>
 
        * charmaps/UTF-8: Fix U06FF definition.  Remove double U074A
index 059776a..cb23231 100644 (file)
@@ -2439,6 +2439,8 @@ abmon             "<U006C><U0065><U0064>";/
 %              "<U0044><U0065><U0063>"
 
 week           7;19971201;4
+first_weekday  1
+first_workday  1
 
 d_t_fmt                "<U0025><U0061><U00A0><U0025><U002D><U0064><U002E><U00A0><U0025><U0042><U00A0><U0025><U0059><U002C><U00A0><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U00A0><U0025><U005A>"
 
index 8c6fe41..1298854 100644 (file)
@@ -118,7 +118,6 @@ day "<U0053><U006F><U006E><U006E><U0074><U0061><U0067>";/
        "<U0044><U006F><U006E><U006E><U0065><U0072><U0073><U0074><U0061><U0067>";/
        "<U0046><U0072><U0065><U0069><U0074><U0061><U0067>";/
        "<U0053><U0061><U006D><U0073><U0074><U0061><U0067>"
-week    7;19971201;4
 abmon  "<U004A><U0061><U006E>";"<U0046><U0065><U0062>";/
        "<U004D><U00E4><U0072>";"<U0041><U0070><U0072>";/
        "<U004D><U0061><U0069>";"<U004A><U0075><U006E>";/
@@ -153,6 +152,10 @@ t_fmt_ampm ""
 date_fmt       "<U0025><U0061><U0020><U0025><U002D><U0064><U002E><U0020>/
 <U0025><U0062><U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053>/
 <U0020><U0025><U005A><U0020><U0025><U0059>"
+
+week    7;19971201;4
+first_weekday 1
+first_workday 1
 END LC_TIME
 
 LC_MESSAGES
diff --git a/localedata/locales/en_NG b/localedata/locales/en_NG
new file mode 100644 (file)
index 0000000..569283b
--- /dev/null
@@ -0,0 +1,289 @@
+escape_char  /
+comment_char  %
+
+% English language locale for Nigeria
+% Language: en
+% Territory: NG
+% Revision: 0.2
+% Date: 2006-02-01
+% Users: general
+% Charset: UTF-8
+% Distribution and use is free, also
+% for commercial purposes.
+%
+% adapted from en_ZA; should be checked and verified
+
+LC_IDENTIFICATION
+title      "English locale for Nigeria"
+source     ""
+address    ""
+contact    ""
+email      ""
+tel        ""
+fax        ""
+language   "English"
+territory  "Nigeria"
+revision   "0.2"
+date       "2006-02-01"
+%
+category  "en_NG:2003";LC_IDENTIFICATION
+category  "en_NG:2000";LC_CTYPE
+category  "en_NG:2000";LC_COLLATE
+category  "en_NG:2003";LC_TIME
+category  "en_NG:2000";LC_NUMERIC
+category  "en_NG:2000";LC_MONETARY
+category  "en_NG:2003";LC_MESSAGES
+category  "en_NG:2000";LC_PAPER
+category  "en_NG:2000";LC_MEASUREMENT
+category  "en_NG:2003";LC_NAME
+category  "en_NG:2003";LC_ADDRESS
+category  "en_NG:2003";LC_TELEPHONE
+
+END LC_IDENTIFICATION
+
+LC_CTYPE
+copy "i18n"
+
+translit_start
+include "translit_combining";""
+translit_end
+END LC_CTYPE
+
+LC_COLLATE
+copy "iso14651_t1"
+END LC_COLLATE
+
+% FIXME
+LC_MONETARY
+% "NGN "
+int_curr_symbol         "<U004E><U0047><U004E><U0020>"
+% "₦"
+currency_symbol         "<U20A6>"
+% "."
+mon_decimal_point       "<U002E>"
+% ","
+mon_thousands_sep       "<U002C>"
+mon_grouping            3;3
+positive_sign           ""
+% "-"
+negative_sign           "<U002D>"
+int_frac_digits         2
+frac_digits             2
+p_cs_precedes           1
+p_sep_by_space          0
+n_cs_precedes           1
+n_sep_by_space          0
+p_sign_posn             1
+n_sign_posn             1
+END LC_MONETARY
+
+% FIXME
+LC_NUMERIC
+% "."
+decimal_point           "<U002E>"
+% ","
+thousands_sep           "<U002C>"
+grouping                3;3
+END LC_NUMERIC
+
+LC_TIME
+% abday - The abbreviations for the week days:
+% - Sun, Mon, Tue, Wed, Thu, Fri, Sat
+abday       "<U0053><U0075><U006E>";"<U004D><U006F><U006E>";/
+            "<U0054><U0075><U0065>";"<U0057><U0065><U0064>";/
+            "<U0054><U0068><U0075>";"<U0046><U0072><U0069>";/
+            "<U0053><U0061><U0074>"
+
+% day - The full names of the week days:
+% - Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday
+day         "<U0053><U0075><U006E><U0064><U0061><U0079>";/
+            "<U004D><U006F><U006E><U0064><U0061><U0079>";/
+            "<U0054><U0075><U0065><U0073><U0064><U0061><U0079>";/
+            "<U0057><U0065><U0064><U006E><U0065><U0073><U0064><U0061><U0079>";/
+            "<U0054><U0068><U0075><U0072><U0073><U0064><U0061><U0079>";/
+            "<U0046><U0072><U0069><U0064><U0061><U0079>";/
+            "<U0053><U0061><U0074><U0075><U0072><U0064><U0061><U0079>"
+
+% abmon - The abbreviations for the months 
+% - Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec
+abmon       "<U004A><U0061><U006E>";"<U0046><U0065><U0062>";/
+            "<U004D><U0061><U0072>";"<U0041><U0070><U0072>";/
+            "<U004D><U0061><U0079>";"<U004A><U0075><U006E>";/
+            "<U004A><U0075><U006C>";"<U0041><U0075><U0067>";/
+            "<U0053><U0065><U0070>";"<U004F><U0063><U0074>";/
+            "<U004E><U006F><U0076>";"<U0044><U0065><U0063>"
+
+% mon - The full names of the months - 
+% - January, February, March, April, May, June
+%   July, August, September, October, November, December
+mon         "<U004A><U0061><U006E><U0075><U0061><U0072><U0079>";/
+            "<U0046><U0065><U0062><U0072><U0075><U0061><U0072><U0079>";/
+            "<U004D><U0061><U0072><U0063><U0068>";/
+            "<U0041><U0070><U0072><U0069><U006C>";/
+            "<U004D><U0061><U0079>";/
+            "<U004A><U0075><U006E><U0065>";/
+            "<U004A><U0075><U006C><U0079>";/
+            "<U0041><U0075><U0067><U0075><U0073><U0074>";/
+            "<U0053><U0065><U0070><U0074><U0065><U006D><U0062><U0065><U0072>";/
+            "<U004F><U0063><U0074><U006F><U0062><U0065><U0072>";/
+            "<U004E><U006F><U0076><U0065><U006D><U0062><U0065><U0072>";/
+            "<U0044><U0065><U0063><U0065><U006D><U0062><U0065><U0072>"
+
+% Abreviated date and time representation to be referenced by the "%c" field descriptor -
+%
+% "%a" (short weekday name),
+% "%d" (day of month as a decimal number),
+% "%b" (short month name),
+% "%Y" (year with century as a decimal number),
+% "%T" (24-hour clock time in format HH:MM:SS),
+% "%Z" (Time zone name)
+d_t_fmt     "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
+
+% Date representation to be referenced by the "%x" field descriptor -
+% "%d/%m/%Y", day/month/year as decimal numbers (01/01/2000).
+d_fmt       "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0059>"
+
+% Time representation to be referenced by the "%X" field descriptor -
+% "%T" (24-hour clock time in format HH:MM:SS)
+t_fmt       "<U0025><U0054>"
+
+% Define representation of ante meridiem and post meridiem strings -
+% The "" mean default to "AM" and "PM".
+am_pm       "";""
+
+% Define time representation in 12-hour format with "am_pm", to be referenced by the "%r"
+% The "" means that this format is not supported.
+t_fmt_ampm  ""
+
+% Date representation not described in ISO/IEC 14652. Comes out as -
+% "%a %b %e %H:%M:%S %Z %Y" which is default "date" command output
+%
+% %a - abbreviated weekday name,
+% %b - abreviated month name,
+% %e - day of month as a decimal number with leading space (1 to 31),
+% %H - hour (24-hour clock) as a decimal number (00 to 23),
+% %M - minute as a decimal number (00 to 59),
+% %S - seconds as a decimal number (00 to 59),
+% %Z - time-zone name,
+% %Y - year with century as a decimal number,e.g. 2001.
+date_fmt       "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
+<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
+<U0025><U005A><U0020><U0025><U0059>"
+END LC_TIME
+
+LC_MESSAGES
+% The affirmative response -
+% "^[yY]"
+yesexpr     "<U005E><U005B><U0079><U0059><U005D>"
+
+% The negative response -
+% "^[nN]"
+noexpr      "<U005E><U005B><U006E><U004E><U005D>"
+END LC_MESSAGES
+
+LC_PAPER
+copy "en_DK"
+END LC_PAPER
+
+% FIXME
+LC_TELEPHONE
+% Representation of telephone number for international use -
+% "+%c %a %l", which is
+% "+%c - country code",
+% "%a - area code without the prefix (often 0)",
+% "%l local number".
+tel_int_fmt    "<U002B><U0025><U0063><U0020><U0025><U0061><U0020><U0025>/
+<U006C>"
+
+% Represntation of telephone number for domestic use -
+% "(%A) %l", which is
+% %A - area code with national prefix
+% %l - local number".
+tel_dom_fmt    "<U0028><U0025><U0041><U0029><U0020><U0025><U006C>"
+
+% Prefix for making international calls
+% "009"
+int_select     "<U0030><U0030><U0039>"
+
+% International dialing code
+% "234"
+int_prefix     "<U0032><U0033><U0034>"
+END LC_TELEPHONE
+
+LC_MEASUREMENT
+copy "en_DK"
+END LC_MEASUREMENT
+
+LC_NAME
+copy "en_DK"
+END LC_NAME
+
+% FIXME
+LC_ADDRESS
+% Representation of postal addresses (minus the addressee's name) in South
+% Africa. (Ignored for now)
+% "%f%N%a%N%d%N%b%N%s %h %e %r%N%%z %T%N%c%N", which gives -
+%
+% "firm name",
+% "end of line",
+% "C/O address",
+% "end of line",
+% "department name",
+% "Building name",
+% "end of line",
+% "street or block name",
+% "space",
+% "house number or designation",
+% "space",
+% "floor number",
+% "space",
+% "room number, door designation",
+% "end of line",
+% "postal code",
+% "space",
+% "town, city",
+% "end of line",
+% "country designation for the <country_post> keyword",
+% "end of line
+postal_fmt    "<U0025><U0066><U0025><U004E><U0025><U0061><U0025><U004E>/
+<U0025><U0064><U0025><U004E><U0025><U0062><U0025><U004E><U0025><U0073>/
+<U0020><U0025><U0068><U0020><U0025><U0065><U0020><U0025><U0072><U0025>/
+<U004E><U0025><U0025><U007A><U0020><U0025><U0054><U0025>/
+<U004E><U0025><U0063><U0025><U004E>"
+
+% Country name in English - "Nigeria"
+country_name  "<U004E><U0069><U0067><U0065><U0072><U0069><U0061>"
+
+% Language name in English - "English"
+lang_name     "<U0045><U006E><U0067><U006C><U0069><U0073><U0068>"
+
+% CEPT MAILCODES are suggested
+% Alternatively use the code found on your countries postal item tracking number
+% "NG"?
+%country_post   "<U004E><U0047>"
+
+% UN Geneve 1949:68 Distinguishing signs of vehicles in international traffic
+% http://www.unece.org/trans/conventn/Distsigns_Sept2003.pdf
+% "WAN"
+country_car   "<U0057><U0041><U004E>"
+
+% ISO 2108
+% http://www.isbn-international.org/
+country_isbn  978
+
+% ISO 639 language abbreviations:
+% 639-1 2 letter, 639-2 3 letter terminology
+% http://www.loc.gov/standards/iso639-2/englagn.html
+% "en", "eng"
+lang_ab       "<U0065><U006E>"
+lang_term     "<U0065><U006E><U0067>"
+lang_lib      "<U0065><U006E><U0067>"
+
+% ISO 3166 country number and 2 and 3 letter abreviations
+% http://www.unicode.org/onlinedat/countries.html
+% "NG", "NGA"
+country_ab2   "<U004E><U0047>"
+country_ab3   "<U004E><U0047><U0041>"
+country_num   566
+
+END LC_ADDRESS
index 1a97aa7..38425e8 100644 (file)
@@ -82,6 +82,8 @@ day   "<U0053><U0075><U006E><U0064><U0061><U0079>";/
        "<U0053><U0061><U0074><U0075><U0072><U0064><U0061><U0079>"
 
 week    7;19971130;7
+first_weekday  1
+first_workday  2
 abmon  "<U004A><U0061><U006E>";"<U0046><U0065><U0062>";/
        "<U004D><U0061><U0072>";"<U0041><U0070><U0072>";/
        "<U004D><U0061><U0079>";"<U004A><U0075><U006E>";/
index a9845fd..8bae005 100644 (file)
@@ -129,6 +129,10 @@ t_fmt_ampm ""
 date_fmt       "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
 <U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
 <U0025><U005A><U0020><U0025><U0059>"
+
+week    7;19971201;4
+first_weekday 1
+first_workday 1
 END LC_TIME
 
 LC_PAPER
index f9c4bd3..35da38c 100644 (file)
@@ -111,6 +111,8 @@ date_fmt       "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
 <U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
 <U0025><U005A><U0020><U0025><U0059>"
 week                   7;19971201;4
+first_weekday          1
+first_workday          1
 END LC_TIME
 
 LC_PAPER
index ec37f2f..cad33aa 100644 (file)
@@ -128,4 +128,6 @@ t_fmt   "<U0025><U0054>"
 am_pm   "";""
 t_fmt_ampm ""
 week   7;19971201;4
+first_weekday  1
+first_workday  1
 END LC_TIME
index ce878e9..95be95b 100644 (file)
@@ -521,6 +521,8 @@ t_fmt_ampm "<U0025><U0048><U002E><U0025><U004D><U002E><U0025><U0053>"
 date_fmt "<U0025><U0059><U002E><U0020><U0025><U0062><U002E><U0020><U0025><U0065><U002E><U002C>/
 <U0020><U0025><U0041><U002C><U0020><U0025><U0048><U002E><U0025><U004D><U002E><U0025><U0053><U0020><U0025><U005A>"
 week     7;19971201;4
+first_weekday  1
+first_workday  1
 END LC_TIME
 
 LC_PAPER
index ce16afb..93ffe90 100644 (file)
@@ -1943,6 +1943,8 @@ LC_TIME
 abday   "<U0031>";"<U0032>";"<U0033>";"<U0034>";"<U0035>";"<U0036>";"<U0037>"
 day     "<U0031>";"<U0032>";"<U0033>";"<U0034>";"<U0035>";"<U0036>";"<U0037>"
 week    7;19971201;4
+first_weekday  1
+first_workday  1
 abmon   "<U0030><U0031>";"<U0030><U0032>";"<U0030><U0033>";"<U0030><U0034>";/
         "<U0030><U0035>";"<U0030><U0036>";"<U0030><U0037>";"<U0030><U0038>";/
         "<U0030><U0039>";"<U0031><U0030>";"<U0031><U0031>";"<U0031><U0032>"
index 7de9917..f0a6fc1 100644 (file)
@@ -127,4 +127,6 @@ t_fmt   "<U0025><U0054>"
 am_pm   "";""
 t_fmt_ampm ""
 week   7;19971201;4
+first_weekday  1
+first_workday  1
 END LC_TIME
index 016e283..3f4d021 100644 (file)
@@ -128,4 +128,6 @@ t_fmt   "<U0025><U0054>"
 am_pm   "";""
 t_fmt_ampm ""
 week   7;19971201;4
+first_weekday  1
+first_workday  1
 END LC_TIME
index 9540cfa..6638272 100644 (file)
@@ -15,15 +15,13 @@ comment_char    %
 % Date: 1996-10-15
 % Application: general
 % Users: general
-% Repertoiremap: mnemonic.ds
-% Charset: ISO-8859-1
 % Distribution and use is free, also
 % for commercial purposes.
 
 LC_IDENTIFICATION
 title      "Norwegian (Bokmal) locale for Norway"
 source     "Norsk Standardiseringsforbund"
-address    "University Library,, Drammensveien 41, N-9242 Oslo, Norge"
+address    "University Library, Drammensveien 41, N-9242 Oslo, Norge"
 contact    ""
 email      "bug-glibc-locales@gnu.org"
 tel        ""
@@ -66,6 +64,9 @@ reorder-after <RES-1>
 <CAP-MIN>
 <MIN-CAP>
 
+reorder-after <OBL>
+<ETH>
+
 reorder-after <z>
 <ae>
 <o-stroke>
@@ -73,31 +74,33 @@ reorder-after <z>
 
 reorder-after <U0178>
 <U00DC> <y>;<U00DC>;<CAP>;IGNORE
-<U00FC> <y>;<U00DC>;<MIN>;IGNORE
 <U0170> <y>;<U0170>;<CAP>;IGNORE
+reorder-after <U00FF>
+<U00FC> <y>;<U00DC>;<MIN>;IGNORE
 <U0171> <y>;<U0170>;<MIN>;IGNORE
 
 reorder-after <U017B>
 <U00C6> <ae>;<BAS>;<CAP>;IGNORE
-<U00E6> <ae>;<BAS>;<MIN>;IGNORE
 <U01FC> <ae>;<ACA>;<CAP>;IGNORE
-<U01FD> <ae>;<ACA>;<MIN>;IGNORE
 <U01E2> <ae>;<MAC>;<CAP>;IGNORE
-<U01E3> <ae>;<MAC>;<MIN>;IGNORE
 <U00C4> <ae>;<PCL>;<CAP>;IGNORE
-<U00E4> <ae>;<PCL>;<MIN>;IGNORE
 <U00D8> <o-stroke>;<BAS>;<CAP>;IGNORE
-<U00F8> <o-stroke>;<BAS>;<MIN>;IGNORE
 <U01FE> <o-stroke>;<ACA>;<CAP>;IGNORE
-<U01FF> <o-stroke>;<ACA>;<MIN>;IGNORE
 <U00D6> <o-stroke>;<REU>;<CAP>;IGNORE
-<U00F6> <o-stroke>;<REU>;<MIN>;IGNORE
 <U0150> <o-stroke>;<DAC>;<CAP>;IGNORE
-<U0151> <o-stroke>;<DAC>;<MIN>;IGNORE
 <U00C5> <a-ring>;<BAS>;<CAP>;IGNORE
-<U00E5> <a-ring>;<BAS>;<MIN>;IGNORE
 <A-A>   <a-ring>;<A-A>;<CAP>;IGNORE
 <A-a>   <a-ring>;<A-A>;<CAP-MIN>;IGNORE
+reorder-after <U017C>
+<U00E6> <ae>;<BAS>;<MIN>;IGNORE
+<U01FD> <ae>;<ACA>;<MIN>;IGNORE
+<U01E3> <ae>;<MAC>;<MIN>;IGNORE
+<U00E4> <ae>;<PCL>;<MIN>;IGNORE
+<U00F8> <o-stroke>;<BAS>;<MIN>;IGNORE
+<U01FF> <o-stroke>;<ACA>;<MIN>;IGNORE
+<U00F6> <o-stroke>;<REU>;<MIN>;IGNORE
+<U0151> <o-stroke>;<DAC>;<MIN>;IGNORE
+<U00E5> <a-ring>;<BAS>;<MIN>;IGNORE
 <a-A>   <a-ring>;<A-A>;<MIN-CAP>;IGNORE
 <a-a>   <a-ring>;<A-A>;<MIN>;IGNORE
 
@@ -105,15 +108,14 @@ reorder-after <U017B>
 %  removed from latest iso14651 tables.
 reorder-after <U0162>
 <U00DE> "<t><h>";"<LIG><LIG>";"<CAP><CAP>";IGNORE
+reorder-after <U0163>
 <U00FE> "<t><h>";"<LIG><LIG>";"<MIN><MIN>";IGNORE
 
-reorder-after <OBL>
-<ETH>
-
 reorder-after <U0064>
 <U0110> <d>;<OBL>;<CAP>;IGNORE
-<U0111> <d>;<OBL>;<MIN>;IGNORE
 <U00D0> <d>;<ETH>;<CAP>;IGNORE
+reorder-after <U0044>
+<U0111> <d>;<OBL>;<MIN>;IGNORE
 <U00F0> <d>;<ETH>;<MIN>;IGNORE
 
 reorder-end
@@ -132,7 +134,7 @@ LC_MONETARY
 int_curr_symbol         "<U004E><U004F><U004B><U0020>"
 currency_symbol         "<U006B><U0072>"
 mon_decimal_point       "<U002C>"
-mon_thousands_sep       "<U002E>"
+mon_thousands_sep       "<U00A0>"
 mon_grouping            3;3
 positive_sign           ""
 negative_sign           "<U002D>"
@@ -148,15 +150,15 @@ END LC_MONETARY
 
 LC_NUMERIC
 decimal_point           "<U002C>"
-thousands_sep           "<U002E>"
+thousands_sep           "<U00A0>"
 grouping                3;3
 END LC_NUMERIC
 
 LC_TIME
-abday       "<U0073><U00F8><U006E>";"<U006D><U0061><U006E>";/
-            "<U0074><U0069><U0072>";"<U006F><U006E><U0073>";/
-            "<U0074><U006F><U0072>";"<U0066><U0072><U0065>";/
-            "<U006C><U00F8><U0072>"
+abday       "<U0073><U00F8><U002E>";"<U006D><U0061><U002E>";/
+            "<U0074><U0069><U002E>";"<U006F><U006E><U002E>";/
+            "<U0074><U006F><U002E>";"<U0066><U0072><U002E>";/
+            "<U006C><U00F8><U002E>"
 day         "<U0073><U00F8><U006E><U0064><U0061><U0067>";/
             "<U006D><U0061><U006E><U0064><U0061><U0067>";/
             "<U0074><U0069><U0072><U0073><U0064><U0061><U0067>";/
@@ -164,12 +166,12 @@ day         "<U0073><U00F8><U006E><U0064><U0061><U0067>";/
             "<U0074><U006F><U0072><U0073><U0064><U0061><U0067>";/
             "<U0066><U0072><U0065><U0064><U0061><U0067>";/
             "<U006C><U00F8><U0072><U0064><U0061><U0067>"
-abmon       "<U006A><U0061><U006E>";"<U0066><U0065><U0062>";/
-            "<U006D><U0061><U0072>";"<U0061><U0070><U0072>";/
-            "<U006D><U0061><U0069>";"<U006A><U0075><U006E>";/
-            "<U006A><U0075><U006C>";"<U0061><U0075><U0067>";/
-            "<U0073><U0065><U0070>";"<U006F><U006B><U0074>";/
-            "<U006E><U006F><U0076>";"<U0064><U0065><U0073>"
+abmon       "<U006A><U0061><U006E><U002E>";"<U0066><U0065><U0062><U002E>";/
+            "<U006D><U0061><U0072><U0073>";"<U0061><U0070><U0072><U0069><U006C>";/
+            "<U006D><U0061><U0069>";"<U006A><U0075><U006E><U0069>";/
+            "<U006A><U0075><U006C><U0069>";"<U0061><U0075><U0067><U002E>";/
+            "<U0073><U0065><U0070><U002E>";"<U006F><U006B><U0074><U002E>";/
+            "<U006E><U006F><U0076><U002E>";"<U0064><U0065><U0073><U002E>"
 mon         "<U006A><U0061><U006E><U0075><U0061><U0072>";/
             "<U0066><U0065><U0062><U0072><U0075><U0061><U0072>";/
             "<U006D><U0061><U0072><U0073>";/
@@ -183,14 +185,22 @@ mon         "<U006A><U0061><U006E><U0075><U0061><U0072>";/
             "<U006E><U006F><U0076><U0065><U006D><U0062><U0065><U0072>";/
             "<U0064><U0065><U0073><U0065><U006D><U0062><U0065><U0072>"
 % usual date representation
-d_t_fmt     "<U0025><U0061><U0020><U0025><U0064><U002D><U0025><U006D><U002D><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
-d_fmt       "<U0025><U0064><U002D><U0025><U006D><U002D><U0025><U0059>"
-t_fmt       "<U0025><U0054>"
+% %a %d. %b %Y kl. %H.%M %z
+d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U002E><U0020><U0025><U0062>/
+<U0020><U0025><U0059><U0020><U006B><U006C><U002E><U0020><U0025><U0048>/
+<U002E><U0025><U004D><U0020><U0025><U007A>"
+% %d. %b %Y
+d_fmt  "<U0025><U0064><U002E><U0020><U0025><U0062><U0020><U0025><U0059>"
+% kl. %H.%M %z
+t_fmt        "<U006B><U006C><U002E><U0020><U0025><U0048><U002E><U0025>/
+<U004D><U0020><U0025><U007A>"
 am_pm       "";""
 t_fmt_ampm  ""
-date_fmt       "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
-<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
-<U0025><U005A><U0020><U0025><U0059>"
+% %a %d. %b %H:%M:%S %z %Y
+date_fmt       "<U0025><U0061><U0020><U0025><U0064><U002E><U0020><U0025>/
+<U0062><U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053>/
+<U0020><U0025><U007A><U0020><U0025><U0059>"
+
 week    7;19971201;4
 first_weekday 1
 first_workday 1
index 179f052..10310cf 100644 (file)
@@ -126,4 +126,6 @@ t_fmt   "<U0025><U0054>"
 am_pm   "";""
 t_fmt_ampm ""
 week   7;19971201;4
+first_weekday  1
+first_workday  1
 END LC_TIME
index aaccb68..54792ca 100644 (file)
@@ -125,4 +125,6 @@ t_fmt   "<U0025><U0054>"
 am_pm   "";""
 t_fmt_ampm ""
 week   7;19971201;4
+first_weekday  1
+first_workday  1
 END LC_TIME
index af9ce4d..ea22339 100644 (file)
@@ -75,27 +75,27 @@ LC_TIME
 % for IBM Class for Unicode/Java
 %
 % Abbreviated weekday names (%a)
-abday       "<U0073><U0075><U0020>";"<U006D><U00E5><U0020>";/
-            "<U0074><U0079><U0020>";"<U006F><U006E><U0020>";/
-            "<U0074><U006F><U0020>";"<U0066><U0072><U0020>";/
-            "<U006C><U0061><U0075><U0020>"
+abday       "<U0073><U0075><U002E>";"<U006D><U00E5><U002E>";/
+            "<U0074><U0079><U002E>";"<U006F><U006E><U002E>";/
+            "<U0074><U006F><U002E>";"<U0066><U0072><U002E>";/
+            "<U006C><U0061><U002E>"
 %
 % Full weekday names (%A)
-day         "<U0073><U0075><U006E><U0064><U0061><U0067><U0020>";/
-            "<U006D><U00E5><U006E><U0064><U0061><U0067><U0020>";/
-            "<U0074><U0079><U0073><U0064><U0061><U0067><U0020>";/
-            "<U006F><U006E><U0073><U0064><U0061><U0067><U0020>";/
-            "<U0074><U006F><U0072><U0073><U0064><U0061><U0067><U0020>";/
-            "<U0066><U0072><U0065><U0064><U0061><U0067><U0020>";/
-            "<U006C><U0061><U0075><U0072><U0064><U0061><U0067><U0020>"
+day         "<U0073><U0075><U006E><U0064><U0061><U0067> ";/
+            "<U006D><U00E5><U006E><U0064><U0061><U0067> ";/
+            "<U0074><U0079><U0073><U0064><U0061><U0067> ";/
+            "<U006F><U006E><U0073><U0064><U0061><U0067> ";/
+            "<U0074><U006F><U0072><U0073><U0064><U0061><U0067> ";/
+            "<U0066><U0072><U0065><U0064><U0061><U0067> ";/
+            "<U006C><U0061><U0075><U0072><U0064><U0061><U0067> "
 %
 % Abbreviated month names (%b)
-abmon       "<U006A><U0061><U006E>";"<U0066><U0065><U0062>";/
-            "<U006D><U0061><U0072>";"<U0061><U0070><U0072>";/
-            "<U006D><U0061><U0069>";"<U006A><U0075><U006E>";/
-            "<U006A><U0075><U006C>";"<U0061><U0075><U0067>";/
-            "<U0073><U0065><U0070>";"<U006F><U006B><U0074>";/
-            "<U006E><U006F><U0076>";"<U0064><U0065><U0073>"
+abmon       "<U006A><U0061><U006E><U002E>";"<U0066><U0065><U0062><U002E>";/
+            "<U006D><U0061><U0072><U0073>";"<U0061><U0070><U0072><U0069><U006C>";/
+            "<U006D><U0061><U0069>";"<U006A><U0075><U006E><U0069>";/
+            "<U006A><U0075><U006C><U0069>";"<U0061><U0075><U0067><U002E>";/
+            "<U0073><U0065><U0070><U002E>";"<U006F><U006B><U0074><U002E>";/
+            "<U006E><U006F><U0076><U002E>";"<U0064><U0065><U0073><U002E>"
 %
 % Full month names (%B)
 mon         "<U006A><U0061><U006E><U0075><U0061><U0072>";/
@@ -110,32 +110,24 @@ mon         "<U006A><U0061><U006E><U0075><U0061><U0072>";/
             "<U006F><U006B><U0074><U006F><U0062><U0065><U0072>";/
             "<U006E><U006F><U0076><U0065><U006D><U0062><U0065><U0072>";/
             "<U0064><U0065><U0073><U0065><U006D><U0062><U0065><U0072>"
-%
-% Equivalent of AM PM
-am_pm       "";""
-%
-% Appropriate date and time representation
-% %d. %b %Ykl %H.%M %Z
-d_t_fmt     "<U0025><U0064><U002E><U0020><U0025><U0062><U0020><U0025>/
-<U0059><U0020><U006B><U006C><U0020><U0025><U0048><U002E><U0025><U004D>/
-<U0020><U0025><U005A>"
-%
-% Appropriate date representation
+
+% usual date representation
+% %a %d. %b %Y kl. %H.%M %z
+d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U002E><U0020><U0025><U0062>/
+<U0020><U0025><U0059><U0020><U006B><U006C><U002E><U0020><U0025><U0048>/
+<U002E><U0025><U004D><U0020><U0025><U007A>"
 % %d. %b %Y
-d_fmt       "<U0025><U0064><U002E><U0020><U0025><U0062><U0020><U0025><U0059>"
-%
-% Appropriate time representation
-% kl %H.%M %Z
-t_fmt       "<U006B><U006C><U0020><U0025><U0048><U002E><U0025><U004D>/
-<U0020><U0025><U005A>"
-%
-% Appropriate 12 h time representation (%r)
+d_fmt  "<U0025><U0064><U002E><U0020><U0025><U0062><U0020><U0025><U0059>"
+% kl. %H.%M %z
+t_fmt        "<U006B><U006C><U002E><U0020><U0025><U0048><U002E><U0025>/
+<U004D><U0020><U0025><U007A>"
+am_pm       "";""
 t_fmt_ampm  ""
-%
-% Appropriate date representation (date(1))   "%a %b %e %H:%M:%S %Z %Y"
-date_fmt       "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
-<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
-<U0025><U005A><U0020><U0025><U0059>"
+% %a %d. %b %H:%M:%S %z %Y
+date_fmt       "<U0025><U0061><U0020><U0025><U0064><U002E><U0020><U0025>/
+<U0062><U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053>/
+<U0020><U0025><U007A><U0020><U0025><U0059>"
+
 week    7;19971201;4
 first_weekday 1
 first_workday 1
index 213284f..2f17b36 100644 (file)
@@ -2199,6 +2199,8 @@ date_fmt "<U0025><U0061><U002C><U0020>/
 <U0025><U002D><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U002C><U0020>/
 <U0025><U0054><U0020><U0025><U005A>"
 week   7;19971201;4
+first_weekday  1
+first_workday  1
 END LC_TIME
 
 LC_PAPER
index dd38cac..0309d56 100644 (file)
@@ -111,6 +111,8 @@ date_fmt       "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
 <U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
 <U0025><U005A><U0020><U0025><U0059>"
 week   7;19971201;4
+first_weekday  1
+first_workday  1
 END LC_TIME
 
 LC_PAPER
index afcca12..57e8327 100644 (file)
@@ -184,6 +184,8 @@ date_fmt       "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
 <U0025><U005A><U0020><U0025><U0059>"
 
 week           7;19971201;4
+first_weekday  1
+first_workday  1
 
 END LC_TIME
 
index 4121026..375352d 100755 (executable)
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Test nl_langinfo.
-# Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
+# Copyright (C) 2000, 2001, 2003, 2007 Free Software Foundation, Inc.
 # This file is part of the GNU C Library.
 #
 
@@ -287,7 +287,7 @@ fr_FR.ISO-8859-1     D_T_FMT     "%a %d %b %Y %T %Z"
 fr_FR.ISO-8859-1     D_FMT       "%d.%m.%Y"
 fr_FR.ISO-8859-1     T_FMT       "%T"
 fr_FR.ISO-8859-1     RADIXCHAR   ,
-fr_FR.ISO-8859-1     THOUSEP     ""
+fr_FR.ISO-8859-1     THOUSEP     " "
 fr_FR.ISO-8859-1     YESEXPR     ^[oOyY].*
 fr_FR.ISO-8859-1     NOEXPR      ^[nN].*
 ja_JP.EUC-JP         ABDAY_1     Æü
index 1bb1703..2ba276d 100644 (file)
@@ -31,6 +31,7 @@
 static char sccsid[] = "@(#)login_tty.c        8.1 (Berkeley) 6/4/93";
 #endif /* LIBC_SCCS and not lint */
 
+#include <errno.h>
 #include <sys/param.h>
 #include <sys/ioctl.h>
 #include <unistd.h>
@@ -63,9 +64,12 @@ login_tty(fd)
            }
        }
 #endif
-       (void) dup2(fd, 0);
-       (void) dup2(fd, 1);
-       (void) dup2(fd, 2);
+       while (dup2(fd, 0) == -1 && errno == EBUSY)
+         ;
+       while (dup2(fd, 1) == -1 && errno == EBUSY)
+         ;
+       while (dup2(fd, 2) == -1 && errno == EBUSY)
+         ;
        if (fd > 2)
                (void) close(fd);
        return (0);
index 81dd364..da68d40 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997-2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 1997-2006, 2007 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Andreas Jaeger <aj@suse.de>, 1997.
 
@@ -3221,6 +3221,9 @@ lgamma_test (void)
 
   TEST_f_f (lgamma, plus_infty, plus_infty);
   TEST_f_f (lgamma, 0, plus_infty, DIVIDE_BY_ZERO_EXCEPTION);
+  check_int ("signgam for lgamma(0) == 1", signgam, 1, 0, 0, 0);
+  TEST_f_f (lgamma, minus_zero, plus_infty, DIVIDE_BY_ZERO_EXCEPTION);
+  check_int ("signgam for lgamma(-0) == -1", signgam, -1, 0, 0, 0);
   TEST_f_f (lgamma, nan_value, nan_value);
 
   /* lgamma (x) == +inf plus divide by zero exception for integer x <= 0.  */
diff --git a/misc/bits/error.h b/misc/bits/error.h
new file mode 100644 (file)
index 0000000..799a3f1
--- /dev/null
@@ -0,0 +1,74 @@
+/* Specializations for error functions.
+   Copyright (C) 2007 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
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#ifndef        _ERROR_H
+# error "Never include <bits/error.h> directly; use <error.h> instead."
+#endif
+
+
+extern void __REDIRECT (__error_alias, (int __status, int __errnum,
+                                       __const char *__format, ...),
+                       error)
+  __attribute__ ((__format__ (__printf__, 3, 4)));
+extern void __REDIRECT (__error_noreturn, (int __status, int __errnum,
+                                          __const char *__format, ...),
+                       error)
+  __attribute__ ((__noreturn__, __format__ (__printf__, 3, 4)));
+
+
+/* If we know the function will never return make sure the compiler
+   realizes that, too.  */
+__extern_always_inline void
+error (int __status, int __errnum, __const char *__format, ...)
+{
+  if (__builtin_constant_p (__status) && __status != 0)
+    __error_noreturn (__status, __errnum, __format, __va_arg_pack ());
+  else
+    __error_alias (__status, __errnum, __format, __va_arg_pack ());
+}
+
+
+extern void __REDIRECT (__error_at_line_alias, (int __status, int __errnum,
+                                               __const char *__fname,
+                                               unsigned int __line,
+                                               __const char *__format, ...),
+                       error_at_line)
+  __attribute__ ((__format__ (__printf__, 5, 6)));
+extern void __REDIRECT (__error_at_line_noreturn, (int __status, int __errnum,
+                                                  __const char *__fname,
+                                                  unsigned int __line,
+                                                  __const char *__format,
+                                                  ...),
+                       error_at_line)
+  __attribute__ ((__noreturn__, __format__ (__printf__, 5, 6)));
+
+
+/* If we know the function will never return make sure the compiler
+   realizes that, too.  */
+__extern_always_inline void
+error_at_line (int __status, int __errnum, __const char *__fname,
+              unsigned int __line,__const char *__format, ...)
+{
+  if (__builtin_constant_p (__status) && __status != 0)
+    __error_at_line_noreturn (__status, __errnum, __fname, __line, __format,
+                             __va_arg_pack ());
+  else
+    __error_at_line_alias (__status, __errnum, __fname, __line,
+                          __format, __va_arg_pack ());
+}
index f25005b..00321e4 100644 (file)
@@ -1,5 +1,5 @@
 /* Declaration for error-reporting function
-   Copyright (C) 1995, 1996, 1997, 2003, 2006 Free Software Foundation, Inc.
+   Copyright (C) 1995,1996,1997,2003,2006,2007 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
 #ifndef _ERROR_H
 #define _ERROR_H 1
 
-#ifndef __attribute__
-/* This feature is available in gcc versions 2.5 and later.  */
-# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__
-#  define __attribute__(Spec) /* empty */
-# endif
-/* The __-protected variants of `format' and `printf' attributes
-   are accepted by gcc versions 2.6.4 (effectively 2.7) and later.  */
-# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
-#  define __format__ format
-#  define __printf__ printf
-# endif
-#endif
+#include <features.h>
 
-#ifdef __cplusplus
-extern "C" {
-#endif
+
+__BEGIN_DECLS
 
 /* Print a message with `fprintf (stderr, FORMAT, ...)';
    if ERRNUM is nonzero, follow it with ": " and strerror (ERRNUM).
    If STATUS is nonzero, terminate the program with `exit (STATUS)'.  */
 
-extern void error (int __status, int __errnum, const char *__format, ...)
+extern void error (int __status, int __errnum, __const char *__format, ...)
      __attribute__ ((__format__ (__printf__, 3, 4)));
 
-extern void error_at_line (int __status, int __errnum, const char *__fname,
-                          unsigned int __lineno, const char *__format, ...)
+extern void error_at_line (int __status, int __errnum, __const char *__fname,
+                          unsigned int __lineno, __const char *__format, ...)
      __attribute__ ((__format__ (__printf__, 5, 6)));
 
 /* If NULL, error will flush stdout, then print on stderr the program
@@ -60,8 +48,11 @@ extern unsigned int error_message_count;
    variable controls whether this mode is selected or not.  */
 extern int error_one_per_line;
 
-#ifdef __cplusplus
-}
+
+#if defined __extern_always_inline && defined __va_arg_pack
+# include <bits/error.h>
 #endif
 
+__END_DECLS
+
 #endif /* error.h */
index d7cdd54..a5bce5f 100644 (file)
@@ -1,3 +1,11 @@
+2007-10-10  Jakub Jelinek  <jakub@redhat.com>
+
+       * sysdeps/pthread/bits/libc-lock.h (__libc_rwlock_init): Inside of
+       libc.so just clear NAME.
+       (__libc_rwlock_fini): Nop inside of libc.so.
+       * tst-initializers1.c (main): Test if PTHREAD_RWLOCK_INITIALIZER is
+       all zeros.
+
 2007-09-02  Ulrich Drepper  <drepper@redhat.com>
 
        * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
index 45eba06..a597f3b 100644 (file)
@@ -172,8 +172,15 @@ typedef pthread_key_t __libc_key_t;
 # define __libc_lock_init(NAME) \
   __libc_maybe_call (__pthread_mutex_init, (&(NAME), NULL), 0)
 #endif
-#define __libc_rwlock_init(NAME) \
+#if defined SHARED && !defined NOT_IN_libc
+/* ((NAME) = (__libc_rwlock_t) PTHREAD_RWLOCK_INITIALIZER, 0) is
+   inefficient.  */
+# define __libc_rwlock_init(NAME) \
+  (__builtin_memset (&(NAME), '\0', sizeof (NAME)), 0)
+#else
+# define __libc_rwlock_init(NAME) \
   __libc_maybe_call (__pthread_rwlock_init, (&(NAME), NULL), 0)
+#endif
 
 /* Same as last but this time we initialize a recursive mutex.  */
 #if defined _LIBC && (!defined NOT_IN_libc || defined IS_IN_libpthread)
@@ -214,8 +221,12 @@ typedef pthread_key_t __libc_key_t;
 # define __libc_lock_fini(NAME) \
   __libc_maybe_call (__pthread_mutex_destroy, (&(NAME)), 0)
 #endif
-#define __libc_rwlock_fini(NAME) \
+#if defined SHARED && !defined NOT_IN_libc
+# define __libc_rwlock_fini(NAME) ((void) 0)
+#else
+# define __libc_rwlock_fini(NAME) \
   __libc_maybe_call (__pthread_rwlock_destroy, (&(NAME)), 0)
+#endif
 
 /* Finalize recursive named lock.  */
 #if defined _LIBC && (!defined NOT_IN_libc || defined IS_IN_libpthread)
index 9036e6e..d30e885 100644 (file)
@@ -47,5 +47,12 @@ main (void)
   if (rwl_writer.__data.__flags
       != PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP)
     return 6;
+  /* <bits/libc-lock.h> __libc_rwlock_init definition for libc.so
+     relies on PTHREAD_RWLOCK_INITIALIZER being all zeros.  If
+     that ever changes, <bits/libc-lock.h> needs updating.  */
+  size_t i;
+  for (i = 0; i < sizeof (rwl_normal); i++)
+    if (((char *) &rwl_normal)[i] != '\0')
+      return 7;
   return 0;
 }
index 72a6f34..89a1ea4 100644 (file)
@@ -379,7 +379,9 @@ verify_persistent_db (void *mem, struct database_pers_head *readhead, int dbnr)
   nscd_ssize_t he_cnt = 0;
   for (nscd_ssize_t cnt = 0; cnt < head->module; ++cnt)
     {
-      ref_t work = head->array[cnt];
+      ref_t trail = head->array[cnt];
+      ref_t work = trail;
+      int tick = 0;
 
       while (work != ENDREF)
        {
@@ -438,6 +440,13 @@ verify_persistent_db (void *mem, struct database_pers_head *readhead, int dbnr)
            }
 
          work = here->next;
+
+         if (work == trail)
+           /* A circular list, this must not happen.  */
+           goto fail;
+         if (tick)
+           trail = ((struct hashentry *) (data + trail))->next;
+         tick = 1 - tick;
        }
     }
 
@@ -1285,14 +1294,15 @@ cannot change to old working directory: %s; disabling paranoia mode"),
 
   /* Synchronize memory.  */
   for (int cnt = 0; cnt < lastdb; ++cnt)
-    {
-      /* Make sure nobody keeps using the database.  */
-      dbs[cnt].head->timestamp = 0;
+    if (!dbs[cnt].enabled)
+      {
+       /* Make sure nobody keeps using the database.  */
+       dbs[cnt].head->timestamp = 0;
 
-      if (dbs[cnt].persistent)
-       // XXX async OK?
-       msync (dbs[cnt].head, dbs[cnt].memsize, MS_ASYNC);
-    }
+       if (dbs[cnt].persistent)
+         // XXX async OK?
+         msync (dbs[cnt].head, dbs[cnt].memsize, MS_ASYNC);
+      }
 
   /* The preparations are done.  */
   execv ("/proc/self/exe", argv);
index 5f3d54e..6718d92 100644 (file)
@@ -416,7 +416,10 @@ __nscd_cache_search (request_type type, const char *key, size_t keylen,
   unsigned long int hash = __nis_hash (key, keylen) % mapped->head->module;
   size_t datasize = mapped->datasize;
 
-  ref_t work = mapped->head->array[hash];
+  ref_t trail = mapped->head->array[hash];
+  ref_t work = trail;
+  int tick = 0;
+
   while (work != ENDREF && work + sizeof (struct hashentry) <= datasize)
     {
       struct hashentry *here = (struct hashentry *) (mapped->data + work);
@@ -454,6 +457,23 @@ __nscd_cache_search (request_type type, const char *key, size_t keylen,
        }
 
       work = here->next;
+      /* Prevent endless loops.  This should never happen but perhaps
+        the database got corrupted, accidentally or deliberately.  */
+      if (work == trail)
+       break;
+      if (tick)
+       {
+         struct hashentry *trailelem;
+         trailelem = (struct hashentry *) (mapped->data + trail);
+
+#ifndef _STRING_ARCH_unaligned
+         /* We have to redo the checks.  Maybe the data changed.  */
+         if ((uintptr_t) trailelem & (__alignof__ (*trailelem) - 1))
+           return NULL;
+#endif
+         trail = trailelem->next;
+       }
+      tick = 1 - tick;
     }
 
   return NULL;
index 6d8a891..d6a1a4a 100644 (file)
@@ -454,9 +454,11 @@ glob (pattern, flags, errfunc, pglob)
          dirlen = 0;
        }
     }
-  else if (filename == pattern)
+  else if (filename == pattern
+          || (filename == pattern + 1 && pattern[0] == '\\'
+              && (flags & GLOB_NOESCAPE) == 0))
     {
-      /* "/pattern".  */
+      /* "/pattern" or "\\/pattern".  */
       dirname = "/";
       dirlen = 1;
       ++filename;
index 72f3fa4..95bfbae 100644 (file)
@@ -1,6 +1,6 @@
 /* Test the GNU extensions in glob which allow the user to provide callbacks
    for the filesystem access functions.
-   Copyright (C) 2001-2002 Free Software Foundation, Inc.
+   Copyright (C) 2001-2002, 2007 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
 
@@ -103,6 +103,16 @@ find_file (const char *s)
   int level = 1;
   long int idx = 0;
 
+  while (s[0] == '/')
+    {
+      if (s[1] == '\0')
+       {
+         s = ".";
+         break;
+       }
+      ++s;
+    }
+
   if (strcmp (s, ".") == 0)
     return 0;
 
@@ -439,6 +449,12 @@ main (void)
        "dir2lev1/dir1lev2/.dir",
        "dir2lev1/dir1lev2/.foo");
 
+  test ("\\/*", GLOB_ALTDIRFUNC,
+       "/dir1lev1",
+       "/dir2lev1",
+       "/file1lev1",
+       "/file2lev1");
+
   globfree (&gl);
 
   return result;
index aa49c7a..f6ad71c 100644 (file)
@@ -1,5 +1,6 @@
 /* Internal header for parsing printf format strings.
-   Copyright (C) 1995-1999, 2000, 2002, 2003 Free Software Foundation, Inc.
+   Copyright (C) 1995-1999, 2000, 2002, 2003, 2007
+   Free Software Foundation, Inc.
    This file is part of th GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -20,6 +21,8 @@
 #include <printf.h>
 #include <stdint.h>
 #include <stddef.h>
+#include <string.h>
+#include <wchar.h>
 
 
 struct printf_spec
@@ -86,11 +89,17 @@ extern printf_function **__printf_function_table attribute_hidden;
 
 /* Find the next spec in FORMAT, or the end of the string.  Returns
    a pointer into FORMAT, to a '%' or a '\0'.  */
-extern const unsigned char *__find_specmb (const UCHAR_T *format,
-                                          mbstate_t *ps) attribute_hidden;
+__extern_always_inline const unsigned char *
+__find_specmb (const unsigned char *format)
+{
+  return (const unsigned char *) __strchrnul ((const char *) format, '%');
+}
 
-extern const unsigned int *__find_specwc (const UCHAR_T *format)
-     attribute_hidden;
+__extern_always_inline const unsigned int *
+__find_specwc (const unsigned int *format)
+{
+  return (const unsigned int *) __wcschrnul ((const wchar_t *) format, L'%');
+}
 
 
 /* FORMAT must point to a '%' at the beginning of a spec.  Fills in *SPEC
@@ -100,8 +109,7 @@ extern const unsigned int *__find_specwc (const UCHAR_T *format)
    remains the highest argument index used.  */
 extern size_t __parse_one_specmb (const unsigned char *format, size_t posn,
                                  struct printf_spec *spec,
-                                 size_t *max_ref_arg, mbstate_t *ps)
-     attribute_hidden;
+                                 size_t *max_ref_arg) attribute_hidden;
 
 extern size_t __parse_one_specwc (const unsigned int *format, size_t posn,
                                  struct printf_spec *spec,
index 2f21fc6..da6fd3e 100644 (file)
 
 
 
-/* Find the next spec in FORMAT, or the end of the string.  Returns
-   a pointer into FORMAT, to a '%' or a '\0'.  */
-const UCHAR_T *
-#ifdef COMPILE_WPRINTF
-__find_specwc (const UCHAR_T *format)
-#else
-__find_specmb (const UCHAR_T *format, mbstate_t *ps)
-#endif
-{
-#ifdef COMPILE_WPRINTF
-  return (const UCHAR_T *) __wcschrnul ((const CHAR_T *) format, L'%');
-#else
-  while (*format != L_('\0') && *format != L_('%'))
-    {
-      int len;
-
-      /* Remove any hints of a wrong encoding.  */
-      ps->__count = 0;
-      if (! isascii (*format)
-         && (len = __mbrlen ((const CHAR_T *) format, MB_CUR_MAX, ps)) > 0)
-       format += len;
-      else
-       ++format;
-    }
-  return format;
-#endif
-}
-
-
 /* FORMAT must point to a '%' at the beginning of a spec.  Fills in *SPEC
    with the parsed details.  POSN is the number of arguments already
    consumed.  At most MAXTYPES - POSN types are filled in TYPES.  Return
@@ -87,8 +58,7 @@ __parse_one_specwc (const UCHAR_T *format, size_t posn,
                    struct printf_spec *spec, size_t *max_ref_arg)
 #else
 __parse_one_specmb (const UCHAR_T *format, size_t posn,
-                   struct printf_spec *spec, size_t *max_ref_arg,
-                   mbstate_t *ps)
+                   struct printf_spec *spec, size_t *max_ref_arg)
 #endif
 {
   unsigned int n;
@@ -403,7 +373,7 @@ __parse_one_specmb (const UCHAR_T *format, size_t posn,
 #ifdef COMPILE_WPRINTF
       spec->next_fmt = __find_specwc (format);
 #else
-      spec->next_fmt = __find_specmb (format, ps);
+      spec->next_fmt = __find_specmb (format);
 #endif
     }
 
index 015b01f..aabc9ed 100644 (file)
@@ -1,5 +1,5 @@
-/* Copyright (C) 1991, 1992, 1995, 1996, 1999, 2000, 2002, 2003, 2004, 2005
-   Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1992, 1995, 1996, 1999, 2000, 2002, 2003, 2004, 2005,
+   2007 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
@@ -66,17 +66,16 @@ parse_printf_format (fmt, n, argtypes)
   size_t nargs;                        /* Number of arguments.  */
   size_t max_ref_arg;          /* Highest index used in a positional arg.  */
   struct printf_spec spec;
-  mbstate_t mbstate;
   const unsigned char *f = (const unsigned char *) fmt;
 
   nargs = 0;
   max_ref_arg = 0;
 
   /* Search for format specifications.  */
-  for (f = __find_specmb (f, &mbstate); *f != '\0'; f = spec.next_fmt)
+  for (f = __find_specmb (f); *f != '\0'; f = spec.next_fmt)
     {
       /* Parse this spec.  */
-      nargs += __parse_one_specmb (f, nargs, &spec, &max_ref_arg, &mbstate);
+      nargs += __parse_one_specmb (f, nargs, &spec, &max_ref_arg);
 
       /* If the width is determined by an argument this is an int.  */
       if (spec.width_arg != -1 && (size_t) spec.width_arg < n)
index fae0f74..d1dc1aa 100644 (file)
@@ -209,11 +209,6 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
   CHAR_T *workstart = NULL;
   CHAR_T *workend;
 
-  /* State for restartable multibyte character handling functions.  */
-#ifndef COMPILE_WPRINTF
-  mbstate_t mbstate;
-#endif
-
   /* We have to save the original argument pointer.  */
   va_list ap_save;
 
@@ -1294,11 +1289,8 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
   /* Find the first format specifier.  */
   f = lead_str_end = __find_specwc ((const UCHAR_T *) format);
 #else
-  /* Put state for processing format string in initial state.  */
-  memset (&mbstate, '\0', sizeof (mbstate_t));
-
   /* Find the first format specifier.  */
-  f = lead_str_end = __find_specmb ((const UCHAR_T *) format, &mbstate);
+  f = lead_str_end = __find_specmb ((const UCHAR_T *) format);
 #endif
 
   /* Lock stream.  */
@@ -1591,7 +1583,7 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
 #ifdef COMPILE_WPRINTF
       f = __find_specwc ((end_of_spec = ++f));
 #else
-      f = __find_specmb ((end_of_spec = ++f), &mbstate);
+      f = __find_specmb ((end_of_spec = ++f));
 #endif
 
       /* Write the following constant string.  */
@@ -1674,8 +1666,7 @@ do_positional:
 #ifdef COMPILE_WPRINTF
        nargs += __parse_one_specwc (f, nargs, &specs[nspecs], &max_ref_arg);
 #else
-       nargs += __parse_one_specmb (f, nargs, &specs[nspecs], &max_ref_arg,
-                                    &mbstate);
+       nargs += __parse_one_specmb (f, nargs, &specs[nspecs], &max_ref_arg);
 #endif
       }
 
index 7390647..e72ab5b 100644 (file)
@@ -68,7 +68,7 @@ tests         := tst-strtol tst-strtod testmb testrand testsort testdiv   \
                   tst-limits tst-rand48 bug-strtod tst-setcontext          \
                   test-a64l tst-qsort tst-system testmb2 bug-strtod2       \
                   tst-atof1 tst-atof2 tst-strtod2 tst-strtod3 tst-rand48-2 \
-                  tst-makecontext tst-strtod4 tst-strtod5
+                  tst-makecontext tst-strtod4 tst-strtod5 tst-qsort2
 
 include ../Makeconfig
 
index e69b401..3961e9e 100644 (file)
@@ -1,6 +1,6 @@
 /* An alternative to qsort, with an identical interface.
    This file is part of the GNU C Library.
-   Copyright (C) 1992,95-97,99,2000,01,02,04 Free Software Foundation, Inc.
+   Copyright (C) 1992,95-97,99,2000,01,02,04,07 Free Software Foundation, Inc.
    Written by Mike Haertel, September 1988.
 
    The GNU C Library is free software; you can redistribute it and/or
    02111-1307 USA.  */
 
 #include <alloca.h>
+#include <stdint.h>
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
 #include <memcopy.h>
 #include <errno.h>
 
-static void msort_with_tmp (void *b, size_t n, size_t s,
-                           __compar_fn_t cmp, char *t);
+struct msort_param
+{
+  size_t s;
+  size_t var;
+  __compar_fn_t cmp;
+  char *t;
+};
+static void msort_with_tmp (const struct msort_param *p, void *b, size_t n);
 
 static void
-msort_with_tmp (void *b, size_t n, size_t s, __compar_fn_t cmp,
-               char *t)
+msort_with_tmp (const struct msort_param *p, void *b, size_t n)
 {
-  char *tmp;
   char *b1, *b2;
   size_t n1, n2;
 
@@ -42,65 +47,131 @@ msort_with_tmp (void *b, size_t n, size_t s, __compar_fn_t cmp,
   n1 = n / 2;
   n2 = n - n1;
   b1 = b;
-  b2 = (char *) b + (n1 * s);
+  b2 = (char *) b + (n1 * p->s);
 
-  msort_with_tmp (b1, n1, s, cmp, t);
-  msort_with_tmp (b2, n2, s, cmp, t);
+  msort_with_tmp (p, b1, n1);
+  msort_with_tmp (p, b2, n2);
 
-  tmp = t;
+  char *tmp = p->t;
+  const size_t s = p->s;
+  __compar_fn_t cmp = p->cmp;
+  switch (p->var)
+    {
+    case 0:
+      while (n1 > 0 && n2 > 0)
+       {
+         if ((*cmp) (b1, b2) <= 0)
+           {
+             *(uint32_t *) tmp = *(uint32_t *) b1;
+             b1 += sizeof (uint32_t);
+             --n1;
+           }
+         else
+           {
+             *(uint32_t *) tmp = *(uint32_t *) b2;
+             b2 += sizeof (uint32_t);
+             --n2;
+           }
+         tmp += sizeof (uint32_t);
+       }
+      break;
+    case 1:
+      while (n1 > 0 && n2 > 0)
+       {
+         if ((*cmp) (b1, b2) <= 0)
+           {
+             *(uint64_t *) tmp = *(uint64_t *) b1;
+             b1 += sizeof (uint64_t);
+             --n1;
+           }
+         else
+           {
+             *(uint64_t *) tmp = *(uint64_t *) b2;
+             b2 += sizeof (uint64_t);
+             --n2;
+           }
+         tmp += sizeof (uint64_t);
+       }
+      break;
+    case 2:
+      while (n1 > 0 && n2 > 0)
+       {
+         unsigned long *tmpl = (unsigned long *) tmp;
+         unsigned long *bl;
+
+         tmp += s;
+         if ((*cmp) (b1, b2) <= 0)
+           {
+             bl = (unsigned long *) b1;
+             b1 += s;
+             --n1;
+           }
+         else
+           {
+             bl = (unsigned long *) b2;
+             b2 += s;
+             --n2;
+           }
+         while (tmpl < (unsigned long *) tmp)
+           *tmpl++ = *bl++;
+       }
+      break;
+    case 3:
+      while (n1 > 0 && n2 > 0)
+       {
+         if ((*cmp) (*(const void **) b1, *(const void **) b2) <= 0)
+           {
+             *(void **) tmp = *(void **) b1;
+             b1 += sizeof (void *);
+             --n1;
+           }
+         else
+           {
+             *(void **) tmp = *(void **) b2;
+             b2 += sizeof (void *);
+             --n2;
+           }
+         tmp += sizeof (void *);
+       }
+      break;
+    default:
+      while (n1 > 0 && n2 > 0)
+       {
+         if ((*cmp) (b1, b2) <= 0)
+           {
+             tmp = (char *) __mempcpy (tmp, b1, s);
+             b1 += s;
+             --n1;
+           }
+         else
+           {
+             tmp = (char *) __mempcpy (tmp, b2, s);
+             b2 += s;
+             --n2;
+           }
+       }
+      break;
+    }
 
-  if (s == OPSIZ && (b1 - (char *) 0) % OPSIZ == 0)
-    /* We are operating on aligned words.  Use direct word stores.  */
-    while (n1 > 0 && n2 > 0)
-      {
-       if ((*cmp) (b1, b2) <= 0)
-         {
-           --n1;
-           *((op_t *) tmp) = *((op_t *) b1);
-           tmp += sizeof (op_t);
-           b1 += sizeof (op_t);
-         }
-       else
-         {
-           --n2;
-           *((op_t *) tmp) = *((op_t *) b2);
-           tmp += sizeof (op_t);
-           b2 += sizeof (op_t);
-         }
-      }
-  else
-    while (n1 > 0 && n2 > 0)
-      {
-       if ((*cmp) (b1, b2) <= 0)
-         {
-           tmp = (char *) __mempcpy (tmp, b1, s);
-           b1 += s;
-           --n1;
-         }
-       else
-         {
-           tmp = (char *) __mempcpy (tmp, b2, s);
-           b2 += s;
-           --n2;
-         }
-      }
   if (n1 > 0)
     memcpy (tmp, b1, n1 * s);
-  memcpy (b, t, (n - n2) * s);
+  memcpy (b, p->t, (n - n2) * s);
 }
 
 void
 qsort (void *b, size_t n, size_t s, __compar_fn_t cmp)
 {
-  const size_t size = n * s;
+  size_t size = n * s;
+  char *tmp = NULL;
+  struct msort_param p;
 
-  if (size < 1024)
-    {
-      void *buf = __alloca (size);
+  /* For large object sizes use indirect sorting.  */
+  if (s > 32)
+    size = 2 * n * sizeof (void *) + s;
 
-      /* The temporary array is small, so put it on the stack.  */
-      msort_with_tmp (b, n, s, cmp, buf);
-    }
+  if (size < 1024)
+    /* The temporary array is small, so put it on the stack.  */
+    p.t = __alloca (size);
   else
     {
       /* We should avoid allocating too much memory since this might
@@ -135,26 +206,89 @@ qsort (void *b, size_t n, size_t s, __compar_fn_t cmp)
 
       /* If the memory requirements are too high don't allocate memory.  */
       if (size / pagesize > (size_t) phys_pages)
-       _quicksort (b, n, s, cmp);
-      else
        {
-         /* It's somewhat large, so malloc it.  */
-         int save = errno;
-         char *tmp = malloc (size);
-         if (tmp == NULL)
-           {
-             /* Couldn't get space, so use the slower algorithm
-                that doesn't need a temporary array.  */
-             __set_errno (save);
-             _quicksort (b, n, s, cmp);
-           }
-         else
-           {
-             __set_errno (save);
-             msort_with_tmp (b, n, s, cmp, tmp);
-             free (tmp);
-           }
+         _quicksort (b, n, s, cmp);
+         return;
+       }
+
+      /* It's somewhat large, so malloc it.  */
+      int save = errno;
+      tmp = malloc (size);
+      __set_errno (save);
+      if (tmp == NULL)
+       {
+         /* Couldn't get space, so use the slower algorithm
+            that doesn't need a temporary array.  */
+         _quicksort (b, n, s, cmp);
+         return;
+       }
+      p.t = tmp;
+    }
+
+  p.s = s;
+  p.cmp = cmp;
+  p.var = 4;
+
+  if (s > 32)
+    {
+      /* Indirect sorting.  */
+      char *ip = (char *) b;
+      void **tp = (void **) (p.t + n * sizeof (void *));
+      void **t = tp;
+      void *tmp_storage = (void *) (tp + n);
+
+      while ((void *) t < tmp_storage)
+       {
+         *t++ = ip;
+         ip += s;
+       }
+      p.s = sizeof (void *);
+      p.var = 3;
+      msort_with_tmp (&p, p.t + n * sizeof (void *), n);
+
+      /* tp[0] .. tp[n - 1] is now sorted, copy around entries of
+        the original array.  Knuth vol. 3 (2nd ed.) exercise 5.2-10.  */
+      char *kp;
+      size_t i;
+      for (i = 0, ip = (char *) b; i < n; i++, ip += s)
+       if ((kp = tp[i]) != ip)
+         {
+           size_t j = i;
+           char *jp = ip;
+           memcpy (tmp_storage, ip, s);
+
+           do
+             {
+               size_t k = (kp - (char *) b) / s;
+               tp[j] = jp;
+               memcpy (jp, kp, s);
+               j = k;
+               jp = kp;
+               kp = tp[k];
+             }
+           while (kp != ip);
+
+           tp[j] = jp;
+           memcpy (jp, tmp_storage, s); 
+         }
+    }
+  else
+    {
+      if ((s & (sizeof (uint32_t) - 1)) == 0
+         && ((char *) b - (char *) 0) % __alignof__ (uint32_t) == 0)
+       {
+         if (s == sizeof (uint32_t))
+           p.var = 0;
+         else if (s == sizeof (uint64_t)
+                  && ((char *) b - (char *) 0) % __alignof__ (uint64_t) == 0)
+           p.var = 1;
+         else if ((s & (sizeof (unsigned long) - 1)) == 0
+                  && ((char *) b - (char *) 0)
+                     % __alignof__ (unsigned long) == 0)
+           p.var = 2;
        }
+      msort_with_tmp (&p, b, n);
     }
+  free (tmp);
 }
 libc_hidden_def (qsort)
diff --git a/stdlib/tst-qsort2.c b/stdlib/tst-qsort2.c
new file mode 100644 (file)
index 0000000..75d4a17
--- /dev/null
@@ -0,0 +1,89 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+char *array;
+char *array_end;
+size_t member_size;
+
+int
+compare (const void *a1, const void *b1)
+{
+  const char *a = a1;
+  const char *b = b1;
+
+  if (! (array <= a && a < array_end
+        && array <= b && b < array_end))
+    {
+      puts ("compare arguments not inside of the array");
+      exit (EXIT_FAILURE);
+    }
+  int ret = b[0] - a[0];
+  if (ret)
+    return ret;
+  if (member_size > 1)
+    return b[1] - a[1];
+  return 0;
+}
+
+int
+test (size_t nmemb, size_t size)
+{
+  array = malloc (nmemb * size);
+  if (array == NULL)
+    {
+      printf ("%zd x %zd: no memory", nmemb, size);
+      return 1;
+    }
+
+  array_end = array + nmemb * size;
+  member_size = size;
+
+  char *p;
+  size_t i;
+  size_t bias = random ();
+  for (i = 0, p = array; i < nmemb; i++, p += size)
+    {
+      p[0] = (char) (i + bias);
+      if (size > 1)
+       p[1] = (char) ((i + bias) >> 8);
+    }
+
+  qsort (array, nmemb, size, compare);
+
+  for (i = 0, p = array; i < nmemb - 1; i++, p += size)
+    {
+      if (p[0] < p[size]
+         || (size > 1 && p[0] == p[size] && p[1] < p[size + 1]))
+       {
+         printf ("%zd x %zd: failure at offset %zd\n", nmemb,
+                 size, i);
+         free (array);
+         return 1;
+       }
+    }
+
+  free (array);
+  return 0;
+}
+
+int
+main (int argc, char **argv)
+{
+  int ret = 0;
+  if (argc >= 2)
+    ret |= test (atoi (argv[1]), atoi (argv[2]));
+  else
+    {
+      ret |= test (10000, 1);
+      ret |= test (200000, 2);
+      ret |= test (2000000, 3);
+      ret |= test (2132310, 4);
+      ret |= test (1202730, 7);
+      ret |= test (1184710, 8);
+      ret |= test (272710, 12);
+      ret |= test (14170, 32);
+      ret |= test (4170, 320);
+    }
+
+  return ret;
+}
index 1e4d736..6a18a1a 100644 (file)
@@ -1305,7 +1305,7 @@ extern char *__strdup (__const char *__string) __THROW __attribute_malloc__;
 #  define __strdup(s) \
   (__extension__ (__builtin_constant_p (s) && __string2_1bptr_p (s)          \
                  ? (((__const char *) (s))[0] == '\0'                        \
-                    ? (char *) calloc (1, 1)                                 \
+                    ? (char *) calloc ((size_t) 1, (size_t) 1)               \
                     : ({ size_t __len = strlen (s) + 1;                      \
                          char *__retval = (char *) malloc (__len);           \
                          if (__retval != NULL)                               \
@@ -1325,7 +1325,7 @@ extern char *__strndup (__const char *__string, size_t __n)
 #  define __strndup(s, n) \
   (__extension__ (__builtin_constant_p (s) && __string2_1bptr_p (s)          \
                  ? (((__const char *) (s))[0] == '\0'                        \
-                    ? (char *) calloc (1, 1)                                 \
+                    ? (char *) calloc ((size_t) 1, (size_t) 1)               \
                     : ({ size_t __len = strlen (s) + 1;                      \
                          size_t __n = (n);                                   \
                          char *__retval;                                     \
index 1e358e2..60f6fcd 100644 (file)
@@ -61,6 +61,7 @@ struct svc_callout {
   rpcprog_t sc_prog;
   rpcvers_t sc_vers;
   void (*sc_dispatch) (struct svc_req *, SVCXPRT *);
+  bool_t sc_mapped;
 };
 #ifdef _RPC_THREAD_SAFE_
 #define svc_head RPC_THREAD_VARIABLE(svc_head_s)
@@ -160,6 +161,17 @@ done:
   return s;
 }
 
+
+static bool_t
+svc_is_mapped (rpcprog_t prog, rpcvers_t vers)
+{
+  struct svc_callout *prev;
+  register struct svc_callout *s;
+  s = svc_find (prog, vers, &prev);
+  return s!= NULL_SVC && s->sc_mapped;
+}
+
+
 /* Add a service program to the callout list.
    The dispatch routine will be called when a rpc request for this
    program number comes in. */
@@ -185,12 +197,18 @@ svc_register (SVCXPRT * xprt, rpcprog_t prog, rpcvers_t vers,
   s->sc_vers = vers;
   s->sc_dispatch = dispatch;
   s->sc_next = svc_head;
+  s->sc_mapped = FALSE;
   svc_head = s;
 
 pmap_it:
   /* now register the information with the local binder service */
   if (protocol)
-    return pmap_set (prog, vers, protocol, xprt->xp_port);
+    {
+      if (! pmap_set (prog, vers, protocol, xprt->xp_port))
+       return FALSE;
+
+      s->sc_mapped = TRUE;
+    }
 
   return TRUE;
 }
@@ -214,7 +232,8 @@ svc_unregister (rpcprog_t prog, rpcvers_t vers)
   s->sc_next = NULL_SVC;
   mem_free ((char *) s, (u_int) sizeof (struct svc_callout));
   /* now unregister the information with the local binder service */
-  pmap_unset (prog, vers);
+  if (! svc_is_mapped (prog, vers))
+    pmap_unset (prog, vers);
 }
 libc_hidden_def (svc_unregister)
 
index 2c04ec9..2ab2909 100644 (file)
@@ -50,6 +50,7 @@
 #define TCP_INFO        11     /* Information about this connection. */
 #define        TCP_QUICKACK     12     /* Bock/reenable quick ACKs.  */
 #define TCP_CONGESTION  13     /* Congestion control algorithm.  */
+#define TCP_MD5SIG      14     /* TCP MD5 Signature (RFC2385) */
 
 #ifdef __USE_MISC
 # include <sys/types.h>
@@ -219,6 +220,24 @@ struct tcp_info
   u_int32_t    tcpi_snd_cwnd;
   u_int32_t    tcpi_advmss;
   u_int32_t    tcpi_reordering;
+
+  u_int32_t    tcpi_rcv_rtt;
+  u_int32_t    tcpi_rcv_space;
+
+  u_int32_t    tcpi_total_retrans;
+};
+
+
+/* For TCP_MD5SIG socket option.  */
+#define TCP_MD5SIG_MAXKEYLEN   80
+
+struct tcp_md5sig
+{
+  struct __kernel_sockaddr_storage tcpm_addr;  /* Address associated.  */
+  u_int16_t    __tcpm_pad1;                    /* Zero.  */
+  u_int16_t    tcpm_keylen;                    /* Key length.  */
+  u_int32_t    __tcpm_pad2;                    /* Zero.  */
+  u_int8_t     tcpm_key[TCP_MD5SIG_MAXKEYLEN]; /* Key (binary).  */
 };
 
 #endif /* Misc.  */
index af9eaf6..73b08ba 100644 (file)
@@ -113,6 +113,7 @@ _dl_runtime_profile:
        movl %ebx, %ecx
        orl $4, %ebx            # Increase frame size if necessary to align
                                # stack for the function call
+       andl $~3, %ebx
        movl %esp, %edi
        subl %ebx, %edi
        movl %esp, %ebx
@@ -121,9 +122,9 @@ _dl_runtime_profile:
        shrl $2, %ecx
        rep
        movsl
-       movl (%edi), %esi
+       movl (%ebx), %esi
        cfi_restore (esi)
-       movl 4(%edi), %edi
+       movl 4(%ebx), %edi
        cfi_restore (edi)
        /*
           %ebx+40  return address
index cc44b04..a298a5a 100644 (file)
@@ -228,7 +228,12 @@ static double zero=  0.00000000000000000000e+00;
        *signgamp = 1;
        ix = hx&0x7fffffff;
        if(ix>=0x7ff00000) return x*x;
-       if((ix|lx)==0) return one/fabs(x);
+       if((ix|lx)==0)
+         {
+           if (hx < 0)
+             *signgamp = -1;
+           return one/fabs(x);
+         }
        if(ix<0x3b900000) {     /* |x|<2**-70, return -log(|x|) */
            if(hx<0) {
                *signgamp = -1;
index 5ebebb7..0ed2610 100644 (file)
@@ -164,7 +164,12 @@ static float zero=  0.0000000000e+00;
        *signgamp = 1;
        ix = hx&0x7fffffff;
        if(ix>=0x7f800000) return x*x;
-       if(ix==0) return one/fabsf(x);
+       if(ix==0)
+         {
+           if (hx < 0)
+             *signgamp = -1;
+           return one/fabsf(x);
+         }
        if(ix<0x1c800000) {     /* |x|<2**-70, return -log(|x|) */
            if(hx<0) {
                *signgamp = -1;
index fecbee9..36e3365 100644 (file)
@@ -11,9 +11,9 @@
 
 /* Long double expansions are
   Copyright (C) 2001 Stephen L. Moshier <moshier@na-net.ornl.gov>
-  and are incorporated herein by permission of the author.  The author 
+  and are incorporated herein by permission of the author.  The author
   reserves the right to distribute this material elsewhere under different
-  copying permissions.  These modifications are distributed here under 
+  copying permissions.  These modifications are distributed here under
   the following terms:
 
     This library is free software; you can redistribute it and/or
@@ -302,7 +302,11 @@ __ieee754_lgammal_r (x, signgamp)
   ix = se & 0x7fff;
 
   if ((ix | i0 | i1) == 0)
-    return one / fabsl (x);
+    {
+      if (se & 0x8000)
+       *signgamp = -1;
+      return one / fabsl (x);
+    }
 
   ix = (ix << 16) | (i0 >> 16);
 
index 119e37b..6ba3a25 100644 (file)
@@ -13,7 +13,8 @@ endif
 
 ifeq ($(subdir),misc)
 sysdep_routines += sysctl clone llseek umount umount2 readahead \
-                  setfsuid setfsgid makedev epoll_pwait
+                  setfsuid setfsgid makedev epoll_pwait signalfd \
+                  eventfd eventfd_read eventfd_write
 
 CFLAGS-gethostid.c = -fexceptions
 
index 5413ced..dbf2ae5 100644 (file)
@@ -129,6 +129,9 @@ libc {
   GLIBC_2.6 {
     epoll_pwait; sync_file_range; sched_getcpu;
   }
+  GLIBC_2.7 {
+    eventfd; eventfd_read; eventfd_write; signalfd;
+  }
   GLIBC_PRIVATE {
     # functions used in other libraries
     __syscall_rt_sigqueueinfo;
diff --git a/sysdeps/unix/sysv/linux/eventfd.c b/sysdeps/unix/sysv/linux/eventfd.c
new file mode 100644 (file)
index 0000000..180861a
--- /dev/null
@@ -0,0 +1,43 @@
+/* Copyright (C) 2007 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
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <errno.h>
+#include <sys/eventfd.h>
+#include <sysdep.h>
+
+
+int
+eventfd (int count, int flags)
+{
+  /* The system call has no flag parameter which is bad.  So we have
+     to wait until we have to support to pass additional values to the
+     kernel (sys_indirect) before implementing setting flags like
+     O_NONBLOCK etc.  */
+  if (flags != 0)
+    {
+      __set_errno (EINVAL);
+      return -1;
+    }
+
+#ifdef __NR_eventfd
+  return INLINE_SYSCALL (eventfd, 1, count);
+#else
+  __set_errno (ENOSYS);
+  return -1;
+#endif
+}
diff --git a/sysdeps/unix/sysv/linux/eventfd_read.c b/sysdeps/unix/sysv/linux/eventfd_read.c
new file mode 100644 (file)
index 0000000..3b1059a
--- /dev/null
@@ -0,0 +1,28 @@
+/* Copyright (C) 2007 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
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <errno.h>
+#include <unistd.h>
+#include <sys/eventfd.h>
+
+
+int
+eventfd_read (int fd, eventfd_t *value)
+{
+  return __read (fd, value, sizeof (eventfd_t)) != sizeof (eventfd_t) ? -1 : 0;
+}
diff --git a/sysdeps/unix/sysv/linux/eventfd_write.c b/sysdeps/unix/sysv/linux/eventfd_write.c
new file mode 100644 (file)
index 0000000..4b15990
--- /dev/null
@@ -0,0 +1,29 @@
+/* Copyright (C) 2007 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
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <errno.h>
+#include <unistd.h>
+#include <sys/eventfd.h>
+
+
+int
+eventfd_write (int fd, eventfd_t value)
+{
+  return __write (fd, &value,
+                 sizeof (eventfd_t)) != sizeof (eventfd_t) ? -1 : 0;
+}
diff --git a/sysdeps/unix/sysv/linux/signalfd.c b/sysdeps/unix/sysv/linux/signalfd.c
new file mode 100644 (file)
index 0000000..09355ec
--- /dev/null
@@ -0,0 +1,44 @@
+/* Copyright (C) 2007 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
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <errno.h>
+#include <signal.h>
+#include <sys/signalfd.h>
+#include <sysdep.h>
+
+
+int
+signalfd (int fd, const sigset_t *mask, int flags)
+{
+  /* The system call has no flag parameter which is bad.  So we have
+     to wait until we have to support to pass additional values to the
+     kernel (sys_indirect) before implementing setting flags like
+     O_NONBLOCK etc.  */
+  if (flags != 0)
+    {
+      __set_errno (EINVAL);
+      return -1;
+    }
+
+#ifdef __NR_signalfd
+  return INLINE_SYSCALL (signalfd, 3, fd, mask, _NSIG / 8);
+#else
+  __set_errno (ENOSYS);
+  return -1;
+#endif
+}
diff --git a/sysdeps/unix/sysv/linux/sys/eventfd.h b/sysdeps/unix/sysv/linux/sys/eventfd.h
new file mode 100644 (file)
index 0000000..1ebaea7
--- /dev/null
@@ -0,0 +1,43 @@
+/* Copyright (C) 2007 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
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#ifndef        _SYS_EVENTFD_H
+#define        _SYS_EVENTFD_H  1
+
+#include <stdint.h>
+
+
+/* Type for event counter.  */
+typedef uint64_t eventfd_t;
+
+
+__BEGIN_DECLS
+
+/* Return file descriptor for generic event channel.  Set initial
+   value to COUNT.  */
+extern int eventfd (int __count, int __flags) __THROW;
+
+/* Read event counter and possibly wait for events.  */
+extern int eventfd_read (int __fd, eventfd_t *__value);
+
+/* Increment event counter.  */
+extern int eventfd_write (int __fd, eventfd_t value);
+
+__END_DECLS
+
+#endif /* sys/eventfd.h */
diff --git a/sysdeps/unix/sysv/linux/sys/signalfd.h b/sysdeps/unix/sysv/linux/sys/signalfd.h
new file mode 100644 (file)
index 0000000..247b20b
--- /dev/null
@@ -0,0 +1,58 @@
+/* Copyright (C) 2007 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
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#ifndef        _SYS_SIGNALFD_H
+#define        _SYS_SIGNALFD_H 1
+
+#define __need_sigset_t
+#include <signal.h>
+#include <stdint.h>
+
+
+struct signalfd_siginfo
+{
+  uint32_t ssi_signo;
+  int32_t ssi_errno;
+  int32_t ssi_code;
+  uint32_t ssi_pid;
+  uint32_t ssi_uid;
+  int32_t ssi_fd;
+  uint32_t ssi_tid;
+  uint32_t ssi_band;
+  uint32_t ssi_overrun;
+  uint32_t ssi_trapno;
+  int32_t ssi_status;
+  int32_t ssi_int;
+  uintptr_t ssi_ptr;
+  uint64_t ssi_utime;
+  uint64_t ssi_stime;
+  uint64_t ssi_addr;
+  uint8_t __pad[48];
+};
+
+
+__BEGIN_DECLS
+
+/* Request notification for delivery of signals in MASK to be
+   performed using descriptor FD.*/
+extern int signalfd (int __fd, const sigset_t *__mask, int __flags)
+  __nonnull (2) __THROW;
+
+__END_DECLS
+
+#endif /* sys/signalfd.h */
index 5b92bd5..12102fe 100644 (file)
@@ -456,6 +456,13 @@ init_cacheinfo (void)
               asm volatile ("cpuid"
                            : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
                            : "0" (4), "2" (i++));
+
+             /* There seems to be a bug in at least some Pentium Ds
+                which sometimes fail to iterate all cache parameters.
+                Do not loop indefinitely here, stop in this case and
+                assume there is no such information.  */
+             if ((eax & 0x1f) == 0)
+               goto intel_bug_no_cache_info;
            }
           while (((eax >> 5) & 0x7) != level);
 
@@ -463,6 +470,7 @@ init_cacheinfo (void)
        }
       else
         {
+       intel_bug_no_cache_info:
          /* Assume that all logical threads share the highest cache level.  */
           asm volatile ("cpuid"
                        : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
index 141365c..434110c 100644 (file)
@@ -1,4 +1,4 @@
-# @(#)africa   8.7
+# @(#)africa   8.10
 # <pre>
 
 # This data is by no means authoritative; if you think you know better,
@@ -218,7 +218,25 @@ Rule       Egypt   1995    2005    -       Sep     lastThu 23:00s  0       -
 # after observing the daylight saving time since May.
 # http://news.gom.com.eg/gazette/pdf/2006/09/18/01.pdf
 Rule   Egypt   2006    only    -       Sep     21      23:00s  0       -
-Rule   Egypt   2007    max     -       Sep     lastThu 23:00s  0       -
+# From Dirk Losch (2007-08-14):
+# I received a mail from an airline which says that the daylight
+# saving time in Egypt will end in the night of 2007-09-06 to 2007-09-07.
+# From Jesper Norgaard Welen (2007-08-15): [The following agree:]
+# http://www.nentjes.info/Bill/bill5.htm 
+# http://www.timeanddate.com/worldclock/city.html?n=53
+# From Steffen Thorsen (2007-09-04): The official information...:
+# http://www.sis.gov.eg/En/EgyptOnline/Miscellaneous/000002/0207000000000000001580.htm
+Rule   Egypt   2007    only    -       Sep     Thu>=1  23:00s  0       -
+# From Abdelrahman Hassan (2007-09-06):
+# Due to the Hijri (lunar Islamic calendar) year being 11 days shorter
+# than the year of the Gregorian calendar, Ramadan shifts earlier each
+# year. This year it will be observed September 13 (September is quite
+# hot in Egypt), and the idea is to make fasting easier for workers by
+# shifting business hours one hour out of daytime heat. Consequently,
+# unless discontinued, next DST may end Thursday 28 August 2008.
+# From Paul Eggert (2007-08-17):
+# For lack of better info, assume the new rule is last Thursday in August.
+Rule   Egypt   2008    max     -       Aug     lastThu 23:00s  0       -
 
 # Zone NAME            GMTOFF  RULES   FORMAT  [UNTIL]
 Zone   Africa/Cairo    2:05:00 -       LMT     1900 Oct
@@ -416,6 +434,20 @@ Zone       Africa/Maputo   2:10:20 -       LMT     1903 Mar
 # Namibia
 # The 1994-04-03 transition is from Shanks & Pottenger.
 # Shanks & Pottenger report no DST after 1998-04; go with IATA.
+
+# From Petronella Sibeene (2007-03-30) in
+# <http://allafrica.com/stories/200703300178.html>:
+# While the entire country changes its time, Katima Mulilo and other
+# settlements in Caprivi unofficially will not because the sun there
+# rises and sets earlier compared to other regions.  Chief of
+# Forecasting Riaan van Zyl explained that the far eastern parts of
+# the country are close to 40 minutes earlier in sunrise than the rest
+# of the country.
+# 
+# From Paul Eggert (2007-03-31):
+# Apparently the Caprivi Strip informally observes Botswana time, but
+# we have no details.  In the meantime people there can use Africa/Gaborone.
+
 # RULE NAME    FROM    TO      TYPE    IN      ON      AT      SAVE    LETTER/S
 Rule   Namibia 1994    max     -       Sep     Sun>=1  2:00    1:00    S
 Rule   Namibia 1995    max     -       Apr     Sun>=1  2:00    0       -
index 2584ae4..ef279cb 100644 (file)
@@ -1,4 +1,4 @@
-# @(#)antarctica       8.3
+# @(#)antarctica       8.4
 # <pre>
 
 # From Paul Eggert (1999-11-15):
@@ -191,10 +191,12 @@ Zone Antarctica/Syowa     0       -       zzz     1957 Jan 29
 Rule   NZAQ    1974    only    -       Nov      3      2:00s   1:00    D
 Rule   NZAQ    1975    1988    -       Oct     lastSun 2:00s   1:00    D
 Rule   NZAQ    1989    only    -       Oct      8      2:00s   1:00    D
-Rule   NZAQ    1990    max     -       Oct     Sun>=1  2:00s   1:00    D
+Rule   NZAQ    1990    2006    -       Oct     Sun>=1  2:00s   1:00    D
 Rule   NZAQ    1975    only    -       Feb     23      2:00s   0       S
 Rule   NZAQ    1976    1989    -       Mar     Sun>=1  2:00s   0       S
-Rule   NZAQ    1990    max     -       Mar     Sun>=15 2:00s   0       S
+Rule   NZAQ    1990    2007    -       Mar     Sun>=15 2:00s   0       S
+Rule   NZAQ    2007    max     -       Sep     lastSun 2:00s   1:00    D
+Rule   NZAQ    2008    max     -       Apr     Sun>=1  2:00s   0       S
 
 # Norway - territories
 # Bouvet (never inhabited)
index 78c2cf5..3007414 100644 (file)
@@ -1,4 +1,4 @@
-# @(#)asia     8.10
+# @(#)asia     8.12
 # <pre>
 
 # This data is by no means authoritative; if you think you know better,
@@ -568,14 +568,15 @@ Zone Asia/Jayapura        9:22:48 -       LMT     1932 Nov
 # Reingold's/Dershowitz' calculator gives correctly the Gregorian date
 # 2058-03-21 for 1 Farvardin 1437 (astronomical).
 #
-# From Paul Eggert (2006-03-22):
-# The above comments about post-2006 transitions may become relevant again,
-# if Iran ever resuscitates DST, so we'll leave the comments in.
-#
 # From Steffen Thorsen (2006-03-22):
 # Several of my users have reported that Iran will not observe DST anymore:
 # http://www.irna.ir/en/news/view/line-17/0603193812164948.htm
 #
+# From Reuters (2007-09-16), with a heads-up from Jesper Norgaard Welen:
+# ... the Guardian Council ... approved a law on Sunday to re-introduce
+# daylight saving time ...
+# http://uk.reuters.com/article/oilRpt/idUKBLA65048420070916
+#
 # Rule NAME    FROM    TO      TYPE    IN      ON      AT      SAVE    LETTER/S
 Rule   Iran    1978    1980    -       Mar     21      0:00    1:00    D
 Rule   Iran    1978    only    -       Oct     21      0:00    0       S
@@ -596,6 +597,36 @@ Rule       Iran    2004    only    -       Mar     21      0:00    1:00    D
 Rule   Iran    2004    only    -       Sep     21      0:00    0       S
 Rule   Iran    2005    only    -       Mar     22      0:00    1:00    D
 Rule   Iran    2005    only    -       Sep     22      0:00    0       S
+Rule   Iran    2008    only    -       Mar     21      0:00    1:00    D
+Rule   Iran    2008    only    -       Sep     21      0:00    0       S
+Rule   Iran    2009    2011    -       Mar     22      0:00    1:00    D
+Rule   Iran    2009    2011    -       Sep     22      0:00    0       S
+Rule   Iran    2012    only    -       Mar     21      0:00    1:00    D
+Rule   Iran    2012    only    -       Sep     21      0:00    0       S
+Rule   Iran    2013    2015    -       Mar     22      0:00    1:00    D
+Rule   Iran    2013    2015    -       Sep     22      0:00    0       S
+Rule   Iran    2016    only    -       Mar     21      0:00    1:00    D
+Rule   Iran    2016    only    -       Sep     21      0:00    0       S
+Rule   Iran    2017    2019    -       Mar     22      0:00    1:00    D
+Rule   Iran    2017    2019    -       Sep     22      0:00    0       S
+Rule   Iran    2020    only    -       Mar     21      0:00    1:00    D
+Rule   Iran    2020    only    -       Sep     21      0:00    0       S
+Rule   Iran    2021    2023    -       Mar     22      0:00    1:00    D
+Rule   Iran    2021    2023    -       Sep     22      0:00    0       S
+Rule   Iran    2024    only    -       Mar     21      0:00    1:00    D
+Rule   Iran    2024    only    -       Sep     21      0:00    0       S
+Rule   Iran    2025    2027    -       Mar     22      0:00    1:00    D
+Rule   Iran    2025    2027    -       Sep     22      0:00    0       S
+Rule   Iran    2028    2029    -       Mar     21      0:00    1:00    D
+Rule   Iran    2028    2029    -       Sep     21      0:00    0       S
+Rule   Iran    2030    2031    -       Mar     22      0:00    1:00    D
+Rule   Iran    2030    2031    -       Sep     22      0:00    0       S
+Rule   Iran    2032    2033    -       Mar     21      0:00    1:00    D
+Rule   Iran    2032    2033    -       Sep     21      0:00    0       S
+Rule   Iran    2034    2035    -       Mar     22      0:00    1:00    D
+Rule   Iran    2034    2035    -       Sep     22      0:00    0       S
+Rule   Iran    2036    2037    -       Mar     21      0:00    1:00    D
+Rule   Iran    2036    2037    -       Sep     21      0:00    0       S
 # Zone NAME            GMTOFF  RULES   FORMAT  [UNTIL]
 Zone   Asia/Tehran     3:25:44 -       LMT     1916
                        3:25:44 -       TMT     1946    # Tehran Mean Time
@@ -1161,6 +1192,14 @@ Zone     Asia/Pyongyang  8:23:00 -       LMT     1890
 
 # Kuwait
 # Zone NAME            GMTOFF  RULES   FORMAT  [UNTIL]
+# From the Arab Times (2007-03-14):
+# The Civil Service Commission (CSC) has approved a proposal forwarded
+# by MP Ahmad Baqer on implementing the daylight saving time (DST) in
+# Kuwait starting from April until the end of Sept this year, reports Al-Anba.
+# <http://www.arabtimesonline.com/arabtimes/kuwait/Viewdet.asp?ID=9950>.
+# From Paul Eggert (2007-03-29):
+# We don't know the details, or whether the approval means it'll happen,
+# so for now we assume no DST.
 Zone   Asia/Kuwait     3:11:56 -       LMT     1950
                        3:00    -       AST
 
@@ -1510,6 +1549,17 @@ Zone     Asia/Karachi    4:28:12 -       LMT     1907
 # I guess it is likely that next year's date will be moved as well,
 # because of the Ramadan.
 
+# From Jesper Norgaard Welen (2007-09-18):
+# According to Steffen Thorsen's web site the Gaza Strip and the rest of the
+# Palestinian territories left DST early on 13.th. of September at 2:00.
+
+# From Paul Eggert (2007-09-20):
+# My understanding is that Gaza and the West Bank disagree even over when
+# the weekend is (Thursday+Friday versus Friday+Saturday), so I'd be a bit
+# surprised if they agreed about DST.  But for now, assume they agree.
+# For lack of better information, predict that future changes will be
+# the 2nd Thursday of September at 02:00.
+
 # The rules for Egypt are stolen from the `africa' file.
 # Rule NAME    FROM    TO      TYPE    IN      ON      AT      SAVE    LETTER/S
 Rule EgyptAsia 1957    only    -       May     10      0:00    1:00    S
@@ -1525,7 +1575,7 @@ Rule Palestine    2004    only    -       Oct      1      1:00    0       -
 Rule Palestine 2005    only    -       Oct      4      2:00    0       -
 Rule Palestine 2006    max     -       Apr      1      0:00    1:00    S
 Rule Palestine 2006    only    -       Sep     22      0:00    0       -
-Rule Palestine 2007    max     -       Oct     Fri>=15 0:00    0       -
+Rule Palestine 2007    max     -       Sep     Thu>=8  2:00    0       -
 
 # Zone NAME            GMTOFF  RULES   FORMAT  [UNTIL]
 Zone   Asia/Gaza       2:17:52 -       LMT     1900 Oct
@@ -1710,11 +1760,17 @@ Rule    Syria   1993    only    -       Sep     25      0:00    0       -
 Rule   Syria   1994    1996    -       Apr      1      0:00    1:00    S
 Rule   Syria   1994    2005    -       Oct      1      0:00    0       -
 Rule   Syria   1997    1998    -       Mar     lastMon 0:00    1:00    S
-Rule   Syria   1999    max     -       Apr      1      0:00    1:00    S
+Rule   Syria   1999    2006    -       Apr      1      0:00    1:00    S
 # From Stephen Colebourne (2006-09-18):
 # According to IATA data, Syria will change DST on 21st September [21:00 UTC]
 # this year [only]....  This is probably related to Ramadan, like Egypt.
 Rule   Syria   2006    only    -       Sep     22      0:00    0       -
+# From Paul Eggert (2007-03-29):
+# Today the AP reported "Syria will switch to summertime at midnight Thursday."
+# http://www.iht.com/articles/ap/2007/03/29/africa/ME-GEN-Syria-Time-Change.php
+# For lack of better info, assume the rule changed to "last Friday in March"
+# this year.
+Rule   Syria   2007    max     -       Mar     lastFri 0:00    1:00    S
 Rule   Syria   2007    max     -       Oct      1      0:00    0       -
 # Zone NAME            GMTOFF  RULES   FORMAT  [UNTIL]
 Zone   Asia/Damascus   2:25:12 -       LMT     1920    # Dimashq
index 40b0bf6..30d695f 100644 (file)
@@ -1,4 +1,4 @@
-# @(#)australasia      8.6
+# @(#)australasia      8.8
 # <pre>
 
 # This file also includes Pacific islands.
@@ -79,7 +79,7 @@ Zone Australia/Lindeman  9:55:56 -    LMT     1895
 # Rule NAME    FROM    TO      TYPE    IN      ON      AT      SAVE    LETTER/S
 Rule   AS      1971    1985    -       Oct     lastSun 2:00s   1:00    -
 Rule   AS      1986    only    -       Oct     19      2:00s   1:00    -
-Rule   AS      1987    max     -       Oct     lastSun 2:00s   1:00    -
+Rule   AS      1987    2007    -       Oct     lastSun 2:00s   1:00    -
 Rule   AS      1972    only    -       Feb     27      2:00s   0       -
 Rule   AS      1973    1985    -       Mar     Sun>=1  2:00s   0       -
 Rule   AS      1986    1989    -       Mar     Sun>=15 2:00s   0       -
@@ -90,7 +90,9 @@ Rule  AS      1993    only    -       Mar     Sun>=1  2:00s   0       -
 Rule   AS      1994    only    -       Mar     Sun>=18 2:00s   0       -
 Rule   AS      1995    2005    -       Mar     lastSun 2:00s   0       -
 Rule   AS      2006    only    -       Apr     Sun>=1  2:00s   0       -
-Rule   AS      2007    max     -       Mar     lastSun 2:00s   0       -
+Rule   AS      2007    only    -       Mar     lastSun 2:00s   0       -
+Rule   AS      2008    max     -       Apr     Sun>=1  2:00s   0       -
+Rule   AS      2008    max     -       Oct     Sun>=1  2:00s   1:00    -
 # Zone NAME            GMTOFF  RULES   FORMAT  [UNTIL]
 Zone Australia/Adelaide        9:14:20 -       LMT     1895 Feb
                        9:00    -       CST     1899 May
@@ -121,7 +123,8 @@ Rule        AT      1991    2005    -       Mar     lastSun 2:00s   0       -
 Rule   AT      2000    only    -       Aug     lastSun 2:00s   1:00    -
 Rule   AT      2001    max     -       Oct     Sun>=1  2:00s   1:00    -
 Rule   AT      2006    only    -       Apr     Sun>=1  2:00s   0       -
-Rule   AT      2007    max     -       Mar     lastSun 2:00s   0       -
+Rule   AT      2007    only    -       Mar     lastSun 2:00s   0       -
+Rule   AT      2008    max     -       Apr     Sun>=1  2:00s   0       -
 # Zone NAME            GMTOFF  RULES   FORMAT  [UNTIL]
 Zone Australia/Hobart  9:49:16 -       LMT     1895 Sep
                        10:00   -       EST     1916 Oct 1 2:00
@@ -145,9 +148,11 @@ Rule       AV      1988    1999    -       Oct     lastSun 2:00s   1:00    -
 Rule   AV      1991    1994    -       Mar     Sun>=1  2:00s   0       -
 Rule   AV      1995    2005    -       Mar     lastSun 2:00s   0       -
 Rule   AV      2000    only    -       Aug     lastSun 2:00s   1:00    -
-Rule   AV      2001    max     -       Oct     lastSun 2:00s   1:00    -
+Rule   AV      2001    2007    -       Oct     lastSun 2:00s   1:00    -
 Rule   AV      2006    only    -       Apr     Sun>=1  2:00s   0       -
-Rule   AV      2007    max     -       Mar     lastSun 2:00s   0       -
+Rule   AV      2007    only    -       Mar     lastSun 2:00s   0       -
+Rule   AV      2008    max     -       Apr     Sun>=1  2:00s   0       -
+Rule   AV      2008    max     -       Oct     Sun>=1  2:00s   1:00    -
 # Zone NAME            GMTOFF  RULES   FORMAT  [UNTIL]
 Zone Australia/Melbourne 9:39:52 -     LMT     1895 Feb
                        10:00   Aus     EST     1971
@@ -166,9 +171,11 @@ Rule       AN      1987    1999    -       Oct     lastSun 2:00s   1:00    -
 Rule   AN      1990    1995    -       Mar     Sun>=1  2:00s   0       -
 Rule   AN      1996    2005    -       Mar     lastSun 2:00s   0       -
 Rule   AN      2000    only    -       Aug     lastSun 2:00s   1:00    -
-Rule   AN      2001    max     -       Oct     lastSun 2:00s   1:00    -
+Rule   AN      2001    2007    -       Oct     lastSun 2:00s   1:00    -
 Rule   AN      2006    only    -       Apr     Sun>=1  2:00s   0       -
-Rule   AN      2007    max     -       Mar     lastSun 2:00s   0       -
+Rule   AN      2007    only    -       Mar     lastSun 2:00s   0       -
+Rule   AN      2008    max     -       Apr     Sun>=1  2:00s   0       -
+Rule   AN      2008    max     -       Oct     Sun>=1  2:00s   1:00    -
 # Zone NAME            GMTOFF  RULES   FORMAT  [UNTIL]
 Zone Australia/Sydney  10:04:52 -      LMT     1895 Feb
                        10:00   Aus     EST     1971
@@ -191,9 +198,11 @@ Rule       LH      1987    1999    -       Oct     lastSun 2:00    0:30    -
 Rule   LH      1990    1995    -       Mar     Sun>=1  2:00    0       -
 Rule   LH      1996    2005    -       Mar     lastSun 2:00    0       -
 Rule   LH      2000    only    -       Aug     lastSun 2:00    0:30    -
-Rule   LH      2001    max     -       Oct     lastSun 2:00    0:30    -
+Rule   LH      2001    2007    -       Oct     lastSun 2:00    0:30    -
 Rule   LH      2006    only    -       Apr     Sun>=1  2:00    0       -
-Rule   LH      2007    max     -       Mar     lastSun 2:00    0       -
+Rule   LH      2007    only    -       Mar     lastSun 2:00    0       -
+Rule   LH      2008    max     -       Apr     Sun>=1  2:00    0       -
+Rule   LH      2008    max     -       Oct     Sun>=1  2:00    0:30    -
 Zone Australia/Lord_Howe 10:36:20 -    LMT     1895 Feb
                        10:00   -       EST     1981 Mar
                        10:30   LH      LHST
@@ -348,10 +357,14 @@ Rule      NZ      1976    1989    -       Mar     Sun>=1  2:00s   0       S
 Rule   Chatham 1976    1989    -       Mar     Sun>=1  2:45s   0       S
 Rule   NZ      1989    only    -       Oct     Sun>=8  2:00s   1:00    D
 Rule   Chatham 1989    only    -       Oct     Sun>=8  2:45s   1:00    D
-Rule   NZ      1990    max     -       Oct     Sun>=1  2:00s   1:00    D
-Rule   Chatham 1990    max     -       Oct     Sun>=1  2:45s   1:00    D
-Rule   NZ      1990    max     -       Mar     Sun>=15 2:00s   0       S
-Rule   Chatham 1990    max     -       Mar     Sun>=15 2:45s   0       S
+Rule   NZ      1990    2006    -       Oct     Sun>=1  2:00s   1:00    D
+Rule   Chatham 1990    2006    -       Oct     Sun>=1  2:45s   1:00    D
+Rule   NZ      1990    2007    -       Mar     Sun>=15 2:00s   0       S
+Rule   Chatham 1990    2007    -       Mar     Sun>=15 2:45s   0       S
+Rule   NZ      2007    max     -       Sep     lastSun 2:00s   1:00    D
+Rule   Chatham 2007    max     -       Sep     lastSun 2:45s   1:00    D
+Rule   NZ      2008    max     -       Apr     Sun>=1  2:00s   0       S
+Rule   Chatham 2008    max     -       Apr     Sun>=1  2:45s   0       S
 # Zone NAME            GMTOFF  RULES   FORMAT  [UNTIL]
 Zone Pacific/Auckland  11:39:04 -      LMT     1868 Nov  2
                        11:30   NZ      NZ%sT   1946 Jan  1
@@ -449,11 +462,20 @@ Zone Pacific/Funafuti     11:56:52 -      LMT     1901
 # US minor outlying islands
 
 # Howland, Baker
-# uninhabited since World War II
-# no information; was probably like Pacific/Pago_Pago
+# Howland was mined for guano by American companies 1857-1878 and British
+# 1886-1891; Baker was similar but exact dates are not known.
+# Inhabited by civilians 1935-1942; U.S. military bases 1943-1944;
+# uninhabited thereafter.
+# Howland observed Hawaii Standard Time (UTC-10:30) in 1937;
+# see page 206 of Elgen M. Long and Marie K. Long,
+# Amelia Earhart: the Mystery Solved, Simon & Schuster (2000).
+# So most likely Howland and Baker observed Hawaii Time from 1935
+# until they were abandoned after the war.
 
 # Jarvis
-# uninhabited since 1958
+# Mined for guano by American companies 1857-1879 and British 1883?-1891?.
+# Inhabited by civilians 1935-1942; IGY scientific base 1957-1958;
+# uninhabited thereafter.
 # no information; was probably like Pacific/Kiritimati
 
 # Johnston
@@ -862,33 +884,13 @@ Zone      Pacific/Wallis  12:15:20 -      LMT     1901
 # introduction of standard time in 1895.
 
 
-# South Australia, Tasmania, Victoria
+# southeast Australia
+#
+# From Paul Eggert (2007-07-23):
+# Starting autumn 2008 Victoria, NSW, South Australia, Tasmania and the ACT
+# end DST the first Sunday in April and start DST the first Sunday in October.
+# http://www.theage.com.au/news/national/daylight-savings-to-span-six-months/2007/06/27/1182623966703.html
 
-# From Arthur David Olson (1992-03-08):
-# The rules from version 7.1 follow.
-# There are lots of differences between these rules and
-# the Shepherd et al. rules.  Since the Shepherd et al. rules
-# and Bradley White's newspaper article are in agreement on
-# current DST ending dates, no worries.
-#
-# Rule Oz      1971    1985    -       Oct     lastSun 2:00    1:00    -
-# Rule Oz      1986    max     -       Oct     Sun>=18 2:00    1:00    -
-# Rule Oz      1972    only    -       Feb     27      3:00    0       -
-# Rule Oz      1973    1986    -       Mar     Sun>=1  3:00    0       -
-# Rule Oz      1987    max     -       Mar     Sun>=15 3:00    0       -
-# Zone Australia/Tasmania      10:00   Oz      EST
-# Zone Australia/South         9:30    Oz      CST
-# Zone Australia/Victoria      10:00   Oz      EST     1985 Oct lastSun 2:00
-#                              10:00   1:00    EST     1986 Mar Sun>=15 3:00
-#                              10:00   Oz      EST
-
-# From Robert Elz (1991-03-06):
-# I believe that the current start date for DST is "lastSun" in Oct...
-# that changed Oct 89.  That is, we're back to the
-# original rule, and that rule currently applies in all the states
-# that have dst, incl Qld.  (Certainly it was true in Vic).
-# The file I'm including says that happened in 1988, I think
-# that's incorrect, but I'm not 100% certain.
 
 # South Australia
 
@@ -934,6 +936,9 @@ Zone        Pacific/Wallis  12:15:20 -      LMT     1901
 # was gazetted in the Government Hansard on Sep 26 1994....
 # start on last Sunday in October and end in last sunday in March.
 
+# From Paul Eggert (2007-07-23):
+# See "southeast Australia" above for 2008 and later.
+
 # Tasmania
 
 # The rules for 1967 through 1991 were reported by George Shepherd
@@ -956,6 +961,9 @@ Zone        Pacific/Wallis  12:15:20 -      LMT     1901
 # Sim Alam (2000-07-03) reported a legal citation for the 2000/2001 rules:
 # http://www.thelaw.tas.gov.au/fragview/42++1968+GS3A@EN+2000070300
 
+# From Paul Eggert (2007-07-23):
+# See "southeast Australia" above for 2008 and later.
+
 # Victoria
 
 # The rules for 1971 through 1991 were reported by George Shepherd
@@ -985,6 +993,9 @@ Zone        Pacific/Wallis  12:15:20 -      LMT     1901
 # [1] http://www.hup.harvard.edu/catalog/HEISUN.html
 # [2] http://www.shrine.org.au
 
+# From Paul Eggert (2007-07-23):
+# See "southeast Australia" above for 2008 and later.
+
 # New South Wales
 
 # From Arthur David Olson:
@@ -1051,6 +1062,9 @@ Zone      Pacific/Wallis  12:15:20 -      LMT     1901
 # The Queensland Premier Peter Beattie is encouraging northern NSW
 # towns to use Queensland time.
 
+# From Paul Eggert (2007-07-23):
+# See "southeast Australia" above for 2008 and later.
+
 # Yancowinna
 
 # From John Mackin (1989-01-04):
@@ -1102,6 +1116,9 @@ Zone      Pacific/Wallis  12:15:20 -      LMT     1901
 # For Lord Howe dates we use Shanks & Pottenger through 1989, and
 # Lonergan thereafter.  For times we use Lonergan.
 
+# From Paul Eggert (2007-07-23):
+# See "southeast Australia" above for 2008 and later.
+
 ###############################################################################
 
 # New Zealand
@@ -1146,6 +1163,12 @@ Zone     Pacific/Wallis  12:15:20 -      LMT     1901
 # transitions at 2:45 local standard time; this confirms that Chatham
 # is always exactly 45 minutes ahead of Auckland.
 
+# From Colin Sharples (2007-04-30):
+# DST will now start on the last Sunday in September, and end on the
+# first Sunday in April.  The changes take effect this year, meaning
+# that DST will begin on 2007-09-30 2008-04-06.
+# http://www.dia.govt.nz/diawebsite.nsf/wpg_URL/Services-Daylight-Saving-Daylight-saving-to-be-extended
+
 ###############################################################################
 
 
index 79c068e..60290dd 100644 (file)
@@ -1,4 +1,4 @@
-# @(#)europe   8.10
+# @(#)europe   8.11
 # <pre>
 
 # This data is by no means authoritative; if you think you know better,
@@ -444,7 +444,7 @@ Zone        Europe/Dublin   -0:25:00 -      LMT     1880 Aug  2
 
 ###############################################################################
 
-# Continental Europe
+# Europe
 
 # EU rules are for the European Union, previously known as the EC, EEC,
 # Common Market, etc.
@@ -2386,6 +2386,8 @@ Link      Europe/Istanbul Asia/Istanbul   # Istanbul is in both continents.
 
 # Zone NAME            GMTOFF  RULES   FORMAT  [UNTIL]
 # Most of Ukraine since 1970 has been like Kiev.
+# "Kyiv" is the transliteration of the Ukrainian name, but
+# "Kiev" is more common in English.
 Zone Europe/Kiev       2:02:04 -       LMT     1880
                        2:02:04 -       KMT     1924 May  2 # Kiev Mean Time
                        2:00    -       EET     1930 Jun 21
@@ -2397,6 +2399,8 @@ Zone Europe/Kiev  2:02:04 -       LMT     1880
                        2:00    E-Eur   EE%sT   1995
                        2:00    EU      EE%sT
 # Ruthenia used CET 1990/1991.
+# "Uzhhorod" is the transliteration of the Ukrainian name, but
+# "Uzhgorod" is more common in English.
 Zone Europe/Uzhgorod   1:29:12 -       LMT     1890 Oct
                        1:00    -       CET     1940
                        1:00    C-Eur   CE%sT   1944 Oct
@@ -2409,7 +2413,10 @@ Zone Europe/Uzhgorod     1:29:12 -       LMT     1890 Oct
                        2:00    E-Eur   EE%sT   1995
                        2:00    EU      EE%sT
 # Zaporozh'ye and eastern Lugansk oblasts observed DST 1990/1991.
-# Zaporozh'ye has an apostrophe, but Posix file names can't have apostrophes.
+# "Zaporizhia" is the transliteration of the Ukrainian name, but
+# "Zaporozh'ye" is more common in English.  Use the common English
+# spelling, except omit the apostrophe as it is not allowed in
+# portable Posix file names.
 Zone Europe/Zaporozhye 2:20:40 -       LMT     1880
                        2:20    -       CUT     1924 May  2 # Central Ukraine T
                        2:00    -       EET     1930 Jun 21
index 6b99037..583451e 100644 (file)
@@ -1,4 +1,4 @@
-# @(#)leapseconds      8.3
+# @(#)leapseconds      8.4
 
 # Allowance for leapseconds added to each timezone file.
 
@@ -45,38 +45,38 @@ Leap        1997    Jun     30      23:59:60        +       S
 Leap   1998    Dec     31      23:59:60        +       S
 Leap   2005    Dec     31      23:59:60        +       S
 
-# ...
-# Sent: Thursday, February 01, 2007 9:49 AM
-# ...
-# Subject: Bulletin C number 33
-#
-#      INTERNATIONAL EARTH ROTATION AND REFERENCE SYSTEMS SERVICE (IERS)
-#
+# INTERNATIONAL EARTH ROTATION AND REFERENCE SYSTEMS SERVICE (IERS)
 # SERVICE INTERNATIONAL DE LA ROTATION TERRESTRE ET DES SYSTEMES DE REFERENCE
 #
 # SERVICE DE LA ROTATION TERRESTRE
 # OBSERVATOIRE DE PARIS
 # 61, Av. de l'Observatoire 75014 PARIS (France)
-# ...
+# Tel.      : 33 (0) 1 40 51 22 26
+# FAX       : 33 (0) 1 40 51 22 91
+# Internet  : services.iers@obspm.fr
+#
+# Paris, 28 June 2007
 #
-#                                                Paris, 1 February 2007
-#                                                Bulletin C 33
-#                                                To authorities responsible
-#                                                for the measurement and
-#                                                distribution of time
+# Bulletin C 34
 #
-#                           INFORMATION ON UTC - TAI
+# To authorities responsible
+# for the measurement and
+# distribution of time
 #
-# NO positive leap second will be introduced at the end of June 2007.
+# INFORMATION ON UTC - TAI
+#
+# NO positive leap second will be introduced at the end of December 2007.
 # The difference between Coordinated Universal Time UTC and the
-# International Atomic Time TAI is:
-#      from 2006 January 1, 0h UTC, until further notice : UTC-TAI = -33 s
-# Leap seconds can be introduced in UTC at the end of the months of
-# December  or June,  depending on the evolution of UT1-TAI. Bulletin C is
-# mailed every  six months, either to announce a time step in UTC, or to
-# confirm that there  will be no time step at the next possible date.
+# International Atomic Time TAI is :           
+#
+# from 2006 January 1, 0h UTC, until further notice : UTC-TAI = -33 s
+#
+# Leap seconds can be introduced in UTC at the end of the months of December
+# or June,  depending on the evolution of UT1-TAI. Bulletin C is mailed every
+# six months, either to announce a time step in UTC, or to confirm that there
+# will be no time step at the next possible date.
 #
-#                              Daniel GAMBIS
-#                              Director
-#                              Earth Orientation Center of IERS
-#                              Observatoire de Paris, France
+# Daniel GAMBIS
+# Director                     
+# Earth Orientation Center of IERS
+# Observatoire de Paris, France
index 3184b7b..73e13a5 100644 (file)
@@ -1,4 +1,4 @@
-# @(#)northamerica     8.15
+# @(#)northamerica     8.18
 # <pre>
 
 # also includes Central America and the Caribbean
@@ -348,7 +348,7 @@ Zone America/North_Dakota/New_Salem -6:45:39 - LMT 1883 Nov 18 12:14:21
 #
 # Colorado, far western Kansas, Montana, western
 # Nebraska, Nevada border (Jackpot, Owyhee, and Mountain City),
-# New Mexico, southwestern North Dakota, far eastern Oregon,
+# New Mexico, southwestern North Dakota,
 # western South Dakota, far western Texas (El Paso County, Hudspeth County,
 # and Pine Springs and Nickel Creek in Culberson County), Utah, Wyoming
 #
@@ -369,7 +369,8 @@ Zone America/Denver -6:59:56 -      LMT     1883 Nov 18 12:00:04
 # US Pacific time, represented by Los Angeles
 #
 # California, northern Idaho (Benewah, Bonner, Boundary, Clearwater,
-# Idaho, Kootenai, Latah, Lewis, Nez Perce, and Shoshone counties),
+# Idaho, Kootenai, Latah, Lewis, Nez Perce, and Shoshone counties,
+# and the northern three-quarters of Idaho county),
 # most of Nevada, most of Oregon, and Washington
 #
 # Rule NAME    FROM    TO      TYPE    IN      ON      AT      SAVE    LETTER
@@ -527,7 +528,8 @@ Link America/Denver America/Shiprock
 # Boise, Bonneville, Butte, Camas, Canyon, Caribou, Cassia, Clark,
 # Custer, Elmore, Franklin, Fremont, Gem, Gooding, Jefferson, Jerome,
 # Lemhi, Lincoln, Madison, Minidoka, Oneida, Owyhee, Payette, Power,
-# Teton, Twin Falls, Valley, Washington counties) and eastern Oregon
+# Teton, Twin Falls, Valley, Washington counties, and the southern
+# quarter of Idaho county) and eastern Oregon (most of Malheur County)
 # switched four weeks late in 1974.
 #
 # Zone NAME            GMTOFF  RULES   FORMAT  [UNTIL]
@@ -544,7 +546,7 @@ Zone America/Boise  -7:44:49 -      LMT     1883 Nov 18 12:15:11
 # What time is it in Indiana?
 # </a> (2006-03-01)
 #
-# From Paul Eggert (2006-03-22):
+# From Paul Eggert (2007-08-17):
 # Since 1970, most of Indiana has been like America/Indiana/Indianapolis,
 # with the following exceptions:
 #
@@ -556,11 +558,8 @@ Zone America/Boise -7:44:49 -      LMT     1883 Nov 18 12:15:11
 # - Clark, Floyd, and Harrison counties have been like
 #   America/Kentucky/Louisville.
 #
-# - Daviess, Dubois, Knox, Martin, Perry, and Pulaski counties
-#   have been like America/Indiana/Vincennes.
-#
-# - Crawford, Pike, Starke, and Switzerland counties have their own time zone
-#   histories as noted below.
+# - Crawford, Daviess, Dubois, Knox, Martin, Perry, Pike, Pulaski, Starke,
+#   and Switzerland counties have their own time zone histories as noted below.
 #
 # Shanks partitioned Indiana into 345 regions, each with its own time history,
 # and wrote ``Even newspaper reports present contradictory information.''
@@ -628,8 +627,9 @@ Zone America/Indiana/Marengo -5:45:23 -     LMT     1883 Nov 18 12:14:37
                        -5:00   -       EST     2006
                        -5:00   US      E%sT
 #
-# Daviess, Dubois, Knox, Martin, and Perry Counties, Indiana,
-# switched from eastern to central time in April 2006.
+# Daviess, Dubois, Knox, and Martin Counties, Indiana,
+# switched from eastern to central time in April 2006, then switched back
+# in November 2007.
 # Rule NAME    FROM    TO      TYPE    IN      ON      AT      SAVE    LETTER
 Rule Vincennes 1946    only    -       Apr     lastSun 2:00    1:00    D
 Rule Vincennes 1946    only    -       Sep     lastSun 2:00    0       S
@@ -647,10 +647,31 @@ Zone America/Indiana/Vincennes -5:50:07 - LMT     1883 Nov 18 12:09:53
                        -5:00   -       EST     1969
                        -5:00   US      E%sT    1971
                        -5:00   -       EST     2006 Apr  2 2:00
+                       -6:00   US      C%sT    2007 Nov  4 2:00
+                       -5:00   US      E%sT
+#
+# Perry County, Indiana, switched from eastern to central time in April 2006.
+# Rule NAME    FROM    TO      TYPE    IN      ON      AT      SAVE    LETTER
+Rule Perry     1946    only    -       Apr     lastSun 2:00    1:00    D
+Rule Perry     1946    only    -       Sep     lastSun 2:00    0       S
+Rule Perry     1953    1954    -       Apr     lastSun 2:00    1:00    D
+Rule Perry     1953    1959    -       Sep     lastSun 2:00    0       S
+Rule Perry     1955    only    -       May      1      0:00    1:00    D
+Rule Perry     1956    1963    -       Apr     lastSun 2:00    1:00    D
+Rule Perry     1960    only    -       Oct     lastSun 2:00    0       S
+Rule Perry     1961    only    -       Sep     lastSun 2:00    0       S
+Rule Perry     1962    1963    -       Oct     lastSun 2:00    0       S
+# Zone NAME            GMTOFF  RULES   FORMAT  [UNTIL]
+Zone America/Indiana/Tell_City -5:47:03 - LMT  1883 Nov 18 12:12:57
+                       -6:00   US      C%sT    1946
+                       -6:00 Perry     C%sT    1964 Apr 26 2:00
+                       -5:00   -       EST     1969
+                       -5:00   US      E%sT    1971
+                       -5:00   -       EST     2006 Apr  2 2:00
                        -6:00   US      C%sT
 #
 # Pike County, Indiana moved from central to eastern time in 1977,
-# then switched back in 2006.
+# then switched back in 2006, then switched back again in 2007.
 # Rule NAME    FROM    TO      TYPE    IN      ON      AT      SAVE    LETTER
 Rule   Pike    1955    only    -       May      1      0:00    1:00    D
 Rule   Pike    1955    1960    -       Sep     lastSun 2:00    0       S
@@ -663,7 +684,8 @@ Zone America/Indiana/Petersburg -5:49:07 - LMT      1883 Nov 18 12:10:53
                        -5:00   -       EST     1966 Oct 30 2:00
                        -6:00   US      C%sT    1977 Oct 30 2:00
                        -5:00   -       EST     2006 Apr  2 2:00
-                       -6:00   US      C%sT
+                       -6:00   US      C%sT    2007 Nov  4 2:00
+                       -5:00   US      E%sT
 #
 # Starke County, Indiana moved from central to eastern time in 1991,
 # then switched back in 2006.
@@ -2325,6 +2347,9 @@ Zone America/Guatemala    -6:02:04 -      LMT     1918 Oct 5
 #
 # The reason seems to be an energy crisis.
 
+# From Stephen Colebourne (2007-02-22):
+# Some IATA info: Haiti won't be having DST in 2007.
+
 
 # Rule NAME    FROM    TO      TYPE    IN      ON      AT      SAVE    LETTER/S
 Rule   Haiti   1983    only    -       May     8       0:00    1:00    D
@@ -2334,8 +2359,8 @@ Rule      Haiti   1983    1987    -       Oct     lastSun 0:00    0       S
 # Go with IATA.
 Rule   Haiti   1988    1997    -       Apr     Sun>=1  1:00s   1:00    D
 Rule   Haiti   1988    1997    -       Oct     lastSun 1:00s   0       S
-Rule   Haiti   2005    max     -       Apr     Sun>=1  0:00    1:00    D
-Rule   Haiti   2005    max     -       Oct     lastSun 0:00    0       S
+Rule   Haiti   2005    2006    -       Apr     Sun>=1  0:00    1:00    D
+Rule   Haiti   2005    2006    -       Oct     lastSun 0:00    0       S
 # Zone NAME            GMTOFF  RULES   FORMAT  [UNTIL]
 Zone America/Port-au-Prince -4:49:20 - LMT     1890
                        -4:49   -       PPMT    1917 Jan 24 12:00 # P-a-P MT
@@ -2366,11 +2391,15 @@ Zone America/Port-au-Prince -4:49:20 -  LMT     1890
 # published, I have located this authoritative source:
 # http://www.presidencia.gob.hn/noticia.aspx?nId=47
 
+# From Steffen Thorsen (2007-03-30):
+# http://www.laprensahn.com/pais_nota.php?id04962=7386
+# So it seems that Honduras will not enter DST this year....
+
 # Rule NAME    FROM    TO      TYPE    IN      ON      AT      SAVE    LETTER/S
 Rule   Hond    1987    1988    -       May     Sun>=1  0:00    1:00    D
 Rule   Hond    1987    1988    -       Sep     lastSun 0:00    0       S
-Rule   Hond    2006    2009    -       May     Sun>=1  0:00    1:00    D
-Rule   Hond    2006    2009    -       Aug     Mon>=1  0:00    0       S
+Rule   Hond    2006    only    -       May     Sun>=1  0:00    1:00    D
+Rule   Hond    2006    only    -       Aug     Mon>=1  0:00    0       S
 # Zone NAME            GMTOFF  RULES   FORMAT  [UNTIL]
 Zone America/Tegucigalpa -5:48:52 -    LMT     1921 Apr
                        -6:00   Hond    C%sT
@@ -2514,13 +2543,31 @@ Zone America/St_Vincent -4:04:56 -      LMT     1890            # Kingstown
                        -4:00   -       AST
 
 # Turks and Caicos
-# From Paul Eggert (2006-03-22):
+#
+# From Chris Dunn in
+# <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=415007>
+# (2007-03-15): In the Turks & Caicos Islands (America/Grand_Turk) the
+# daylight saving dates for time changes have been adjusted to match
+# the recent U.S. change of dates.
+#
+# From Brian Inglis (2007-04-28):
+# http://www.turksandcaicos.tc/calendar/index.htm [2007-04-26]
+# there is an entry for Nov 4 "Daylight Savings Time Ends 2007" and three
+# rows before that there is an out of date entry for Oct:
+# "Eastern Standard Times Begins 2007
+# Clocks are set back one hour at 2:00 a.m. local Daylight Saving Time"
+# indicating that the normal ET rules are followed.
+#
+# From Paul Eggert (2006-05-01):
 # Shanks & Pottenger say they use US DST rules, but IATA SSIM (1991/1998)
-# says they switch at midnight.  Go with IATA SSIM.
+# says they switch at midnight.  Go with Shanks & Pottenger.
+#
 # Rule NAME    FROM    TO      TYPE    IN      ON      AT      SAVE    LETTER/S
-Rule   TC      1979    1986    -       Apr     lastSun 0:00    1:00    D
-Rule   TC      1979    max     -       Oct     lastSun 0:00    0       S
-Rule   TC      1987    max     -       Apr     Sun>=1  0:00    1:00    D
+Rule   TC      1979    1986    -       Apr     lastSun 2:00    1:00    D
+Rule   TC      1979    2006    -       Oct     lastSun 2:00    0       S
+Rule   TC      1987    2006    -       Apr     Sun>=1  2:00    1:00    D
+Rule   TC      2007    max     -       Mar     Sun>=8  2:00    1:00    D
+Rule   TC      2007    max     -       Nov     Sun>=1  2:00    0       S
 # Zone NAME            GMTOFF  RULES   FORMAT  [UNTIL]
 Zone America/Grand_Turk        -4:44:32 -      LMT     1890
                        -5:07:12 -      KMT     1912 Feb    # Kingston Mean Time
index 7aec8b6..bfda827 100644 (file)
@@ -1,4 +1,4 @@
-# @(#)southamerica     8.11
+# @(#)southamerica     8.12
 # <pre>
 
 # This data is by no means authoritative; if you think you know better,
@@ -424,6 +424,10 @@ Zone       America/La_Paz  -4:32:36 -      LMT     1890
 # 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 Steffen Thorsen (2007-09-20):
+# Brazil will start DST on 2007-10-14 00:00 and end on 2008-02-17 00:00:
+# http://www.mme.gov.br/site/news/detail.do;jsessionid=BBA06811AFCAAC28F0285210913513DA?newsId=13975
+
 # From Paul Eggert (2002-10-10):
 # The official decrees referenced below are mostly taken from
 # <a href="http://pcdsh01.on.br/DecHV.html">
@@ -557,13 +561,18 @@ Rule      Brazil  2004    only    -       Nov      2       0:00   1:00    S
 # Decree <a href="http://pcdsh01.on.br/DecHV5539.gif">5,539</a> (2005-09-19),
 # adopted by the same states as before.
 Rule   Brazil  2005    only    -       Oct     16       0:00   1:00    S
-# Decree <a href="http://www.planalto.gov.br/ccivil_03/_Ato2004-2006/2006/Decreto/D5920.htm">5,920</a>
-# (2006-10-03), adopted by the same states as before.
-Rule   Brazil  2006    max     -       Nov     Sun>=1   0:00   1:00    S
-Rule   Brazil  2007    max     -       Feb     lastSun  0:00   0       -
+# Decree <a href="http://pcdsh01.on.br/DecHV5920.gif">5,920</a> (2006-10-03),
+# adopted by the same states as before.
+Rule   Brazil  2006    only    -       Nov      5       0:00   1:00    S
+Rule   Brazil  2007    only    -       Feb     25       0:00   0       -
+# (Decree number not yet known)
+# http://www.brasil.gov.br/noticias/ultimas_noticias/horario_verao070920/
+# (2007-09-20) after a heads-up from Steffen Thorsen:
+Rule   Brazil  2007    max     -       Oct     Sun>=8   0:00   1:00    S
+Rule   Brazil  2008    max     -       Feb     Sun>=15  0:00   0       -
 # The latest ruleset listed above says that the following states observe DST:
 # DF, ES, GO, MG, MS, MT, PR, RJ, RS, SC, SP.
-# For dates after mid-2007, the above rules with TO="max" are guesses
+# For dates after mid-2008, the above rules with TO="max" are guesses
 # and are quite possibly wrong, but are more likely than no DST at all.
 
 
@@ -1097,8 +1106,20 @@ Zone America/Montevideo  -3:44:44 -      LMT     1898 Jun 28
                        -3:00   Uruguay UY%sT
 
 # Venezuela
+#
+# From Kiraz Janicke (2007-09-25), in
+# http://www.venezuelanalysis.com/analysis/2645:
+# The proposal ... involves turning the clock back half an hour from
+# +4.00 Greenwich Mean Time (GMT), to +4.30GMT, the time zone
+# Venezuela had until December 31, 1964, when the current time zone
+# was adopted. The change was due to take place on September 17 and
+# then on September 24, but has since been postponed until December
+# 31, to allow for compliance with international organizations, such
+# as the International Office of Weights and Measures.
+
 # Zone NAME            GMTOFF  RULES   FORMAT  [UNTIL]
 Zone   America/Caracas -4:27:44 -      LMT     1890
                        -4:27:40 -      CMT     1912 Feb 12 # Caracas Mean Time?
                        -4:30   -       VET     1965         # Venezuela Time
-                       -4:00   -       VET
+                       -4:00   -       VET     2008
+                       -4:30   -       VET
index 592dfe5..3cb0b17 100644 (file)
@@ -3,7 +3,7 @@
 ** 2006-07-17 by Arthur David Olson.
 */
 
-static char    elsieid[] = "@(#)zic.c  8.11";
+static char    elsieid[] = "@(#)zic.c  8.14";
 
 #include "private.h"
 #include "locale.h"
@@ -114,7 +114,7 @@ static void associate P((void));
 static int     ciequal P((const char * ap, const char * bp));
 static void    convert P((long val, char * buf));
 static void    convert64 P((zic_t val, char * buf));
-static void    dolink P((const char * fromfile, const char * tofile));
+static void    dolink P((const char * fromfield, const char * tofield));
 static void    doabbr P((char * abbr, const char * format,
                        const char * letters, int isdst, int doquotes));
 static void    eat P((const char * name, int num));
@@ -628,26 +628,26 @@ _("%s: More than one -L option specified\n"),
 }
 
 static void
-dolink(fromfile, tofile)
-const char * const     fromfile;
-const char * const     tofile;
+dolink(fromfield, tofield)
+const char * const     fromfield;
+const char * const     tofield;
 {
        register char * fromname;
        register char * toname;
 
-       if (fromfile[0] == '/')
-               fromname = ecpyalloc(fromfile);
+       if (fromfield[0] == '/')
+               fromname = ecpyalloc(fromfield);
        else {
                fromname = ecpyalloc(directory);
                fromname = ecatalloc(fromname, "/");
-               fromname = ecatalloc(fromname, fromfile);
+               fromname = ecatalloc(fromname, fromfield);
        }
-       if (tofile[0] == '/')
-               toname = ecpyalloc(tofile);
+       if (tofield[0] == '/')
+               toname = ecpyalloc(tofield);
        else {
                toname = ecpyalloc(directory);
                toname = ecatalloc(toname, "/");
-               toname = ecatalloc(toname, tofile);
+               toname = ecatalloc(toname, tofield);
        }
        /*
        ** We get to be careful here since
@@ -666,7 +666,7 @@ const char * const  tofile;
                if (result != 0 &&
                        access(fromname, F_OK) == 0 &&
                        !itsdir(fromname)) {
-                               const char *s = tofile;
+                               const char *s = tofield;
                                register char * symlinkcontents = NULL;
 
                                while ((s = strchr(s+1, '/')) != NULL)
@@ -926,7 +926,8 @@ const char *                string;
 const char * const     errstring;
 const int              signable;
 {
-       int     hh, mm, ss, sign;
+       long    hh;
+       int     mm, ss, sign;
 
        if (string == NULL || *string == '\0')
                return 0;
@@ -936,27 +937,32 @@ const int         signable;
                sign = -1;
                ++string;
        } else  sign = 1;
-       if (sscanf(string, scheck(string, "%d"), &hh) == 1)
+       if (sscanf(string, scheck(string, "%ld"), &hh) == 1)
                mm = ss = 0;
-       else if (sscanf(string, scheck(string, "%d:%d"), &hh, &mm) == 2)
+       else if (sscanf(string, scheck(string, "%ld:%d"), &hh, &mm) == 2)
                ss = 0;
-       else if (sscanf(string, scheck(string, "%d:%d:%d"),
+       else if (sscanf(string, scheck(string, "%ld:%d:%d"),
                &hh, &mm, &ss) != 3) {
                        error(errstring);
                        return 0;
        }
-       if ((hh < 0 || hh >= HOURSPERDAY ||
+       if (hh < 0 ||
                mm < 0 || mm >= MINSPERHOUR ||
-               ss < 0 || ss > SECSPERMIN) &&
-               !(hh == HOURSPERDAY && mm == 0 && ss == 0)) {
+               ss < 0 || ss > SECSPERMIN) {
                        error(errstring);
                        return 0;
        }
-       if (noise && hh == HOURSPERDAY)
+       if (LONG_MAX / SECSPERHOUR < hh) {
+               error(_("time overflow"));
+               return 0;
+       }
+       if (noise && hh == HOURSPERDAY && mm == 0 && ss == 0)
                warning(_("24:00 not handled by pre-1998 versions of zic"));
-       return eitol(sign) *
-               (eitol(hh * MINSPERHOUR + mm) *
-               eitol(SECSPERMIN) + eitol(ss));
+       if (noise && (hh > HOURSPERDAY ||
+               (hh == HOURSPERDAY && (mm != 0 || ss != 0))))
+warning(_("values over 24 hours not handled by pre-2007 versions of zic"));
+       return oadd(eitol(sign) * hh * eitol(SECSPERHOUR),
+                   eitol(sign) * (eitol(mm) * eitol(SECSPERMIN) + eitol(ss)));
 }
 
 static void
@@ -2271,6 +2277,10 @@ const int                ttisgmt;
                error(_("too many local time types"));
                exit(EXIT_FAILURE);
        }
+       if (! (-1L - 2147483647L <= gmtoff && gmtoff <= 2147483647L)) {
+               error(_("UTC offset out of range"));
+               exit(EXIT_FAILURE);
+       }
        gmtoffs[i] = gmtoff;
        isdsts[i] = isdst;
        ttisstds[i] = ttisstd;
index ace7b57..8d4333a 100644 (file)
@@ -1,4 +1,4 @@
-# @(#)zone.tab 8.10
+# @(#)zone.tab 8.11
 #
 # TZ zone descriptions
 #
@@ -39,7 +39,7 @@ AQ    -6736+06253     Antarctica/Mawson       Mawson Station, Holme Bay
 AQ     -6835+07758     Antarctica/Davis        Davis Station, Vestfold Hills
 AQ     -6617+11031     Antarctica/Casey        Casey Station, Bailey Peninsula
 AQ     -7824+10654     Antarctica/Vostok       Vostok Station, S Magnetic Pole
-AQ     -6640+14001     Antarctica/DumontDUrville       Dumont-d'Urville Base, Terre Adelie
+AQ     -6640+14001     Antarctica/DumontDUrville       Dumont-d'Urville Station, Terre Adelie
 AQ     -690022+0393524 Antarctica/Syowa        Syowa Station, E Ongul I
 AR     -3436-05827     America/Argentina/Buenos_Aires  Buenos Aires (BA, CF)
 AR     -3124-06411     America/Argentina/Cordoba       most locations (CB, CC, CN, ER, FM, LP, MN, NQ, RN, SA, SE, SF, SL)
@@ -65,7 +65,7 @@ AU    -3455+13835     Australia/Adelaide      South Australia
 AU     -1228+13050     Australia/Darwin        Northern Territory
 AU     -3157+11551     Australia/Perth Western Australia - most locations
 AU     -3143+12852     Australia/Eucla Western Australia - Eucla area
-AW     +1230-06858     America/Aruba
+AW     +1230-06958     America/Aruba
 AX     +6006+01957     Europe/Mariehamn
 AZ     +4023+04951     Asia/Baku
 BA     +4352+01825     Europe/Sarajevo
@@ -117,10 +117,10 @@ CA        +484531-0913718 America/Atikokan        Eastern Standard Time - Atikokan, Ontario an
 CA     +624900-0920459 America/Rankin_Inlet    Central Time - central Nunavut
 CA     +4953-09709     America/Winnipeg        Central Time - Manitoba & west Ontario
 CA     +4843-09434     America/Rainy_River     Central Time - Rainy River & Fort Frances, Ontario
-CA     +6903-10505     America/Cambridge_Bay   Central Time - west Nunavut
 CA     +5024-10439     America/Regina  Central Standard Time - Saskatchewan - most locations
 CA     +5017-10750     America/Swift_Current   Central Standard Time - Saskatchewan - midwest
 CA     +5333-11328     America/Edmonton        Mountain Time - Alberta, east British Columbia & west Saskatchewan
+CA     +690650-1050310 America/Cambridge_Bay   Mountain Time - west Nunavut
 CA     +6227-11421     America/Yellowknife     Mountain Time - central Northwest Territories
 CA     +682059-1334300 America/Inuvik  Mountain Time - west Northwest Territories
 CA     +5946-12014     America/Dawson_Creek    Mountain Standard Time - Dawson Creek & Fort Saint John, British Columbia
@@ -175,7 +175,7 @@ FM  +0519+16259     Pacific/Kosrae  Kosrae
 FO     +6201-00646     Atlantic/Faroe
 FR     +4852+00220     Europe/Paris
 GA     +0023+00927     Africa/Libreville
-GB     +512830-0001845 Europe/London
+GB     +513030-0000731 Europe/London
 GD     +1203-06145     America/Grenada
 GE     +4143+04449     Asia/Tbilisi
 GF     +0456-05220     America/Cayenne
@@ -369,10 +369,10 @@ TW        +2503+12130     Asia/Taipei
 TZ     -0648+03917     Africa/Dar_es_Salaam
 UA     +5026+03031     Europe/Kiev     most locations
 UA     +4837+02218     Europe/Uzhgorod Ruthenia
-UA     +4750+03510     Europe/Zaporozhye       Zaporozh'ye, E Lugansk
+UA     +4750+03510     Europe/Zaporozhye       Zaporozh'ye, E Lugansk / Zaporizhia, E Luhansk
 UA     +4457+03406     Europe/Simferopol       central Crimea
 UG     +0019+03225     Africa/Kampala
-UM     +1700-16830     Pacific/Johnston        Johnston Atoll
+UM     +1645-16931     Pacific/Johnston        Johnston Atoll
 UM     +2813-17722     Pacific/Midway  Midway Islands
 UM     +1917+16637     Pacific/Wake    Wake Island
 US     +404251-0740023 America/New_York        Eastern Time
@@ -380,12 +380,13 @@ US        +421953-0830245 America/Detroit Eastern Time - Michigan - most locations
 US     +381515-0854534 America/Kentucky/Louisville     Eastern Time - Kentucky - Louisville area
 US     +364947-0845057 America/Kentucky/Monticello     Eastern Time - Kentucky - Wayne County
 US     +394606-0860929 America/Indiana/Indianapolis    Eastern Time - Indiana - most locations
+US     +384038-0873143 America/Indiana/Vincennes       Eastern Time - Indiana - Daviess, Dubois, Knox & Martin Counties
 US     +411745-0863730 America/Indiana/Knox    Eastern Time - Indiana - Starke County
 US     +410305-0863611 America/Indiana/Winamac Eastern Time - Indiana - Pulaski County
 US     +382232-0862041 America/Indiana/Marengo Eastern Time - Indiana - Crawford County
 US     +384452-0850402 America/Indiana/Vevay   Eastern Time - Indiana - Switzerland County
 US     +415100-0873900 America/Chicago Central Time
-US     +384038-0873143 America/Indiana/Vincennes       Central Time - Indiana - Daviess, Dubois, Knox, Martin & Perry Counties
+US     +375711-0864541 America/Indiana/Tell_City       Central Time - Indiana - Perry County
 US     +382931-0871643 America/Indiana/Petersburg      Central Time - Indiana - Pike County
 US     +450628-0873651 America/Menominee       Central Time - Michigan - Dickinson, Gogebic, Iron & Menominee Counties
 US     +470659-1011757 America/North_Dakota/Center     Central Time - North Dakota - Oliver County
index e8448c8..885662b 100644 (file)
@@ -134,7 +134,7 @@ __END_NAMESPACE_STD
 __USING_NAMESPACE_STD(tm)
 
 
-__BEGIN_NAMESPACE_C99
+__BEGIN_NAMESPACE_STD
 /* Copy SRC to DEST.  */
 extern wchar_t *wcscpy (wchar_t *__restrict __dest,
                        __const wchar_t *__restrict __src) __THROW;
@@ -157,7 +157,7 @@ extern int wcscmp (__const wchar_t *__s1, __const wchar_t *__s2)
 /* Compare N wide-characters of S1 and S2.  */
 extern int wcsncmp (__const wchar_t *__s1, __const wchar_t *__s2, size_t __n)
      __THROW __attribute_pure__;
-__END_NAMESPACE_C99
+__END_NAMESPACE_STD
 
 #ifdef __USE_GNU
 /* Compare S1 and S2, ignoring case.  */
@@ -178,7 +178,7 @@ extern int wcsncasecmp_l (__const wchar_t *__s1, __const wchar_t *__s2,
                          size_t __n, __locale_t __loc) __THROW;
 #endif
 
-__BEGIN_NAMESPACE_C99
+__BEGIN_NAMESPACE_STD
 /* Compare S1 and S2, both interpreted as appropriate to the
    LC_COLLATE category of the current locale.  */
 extern int wcscoll (__const wchar_t *__s1, __const wchar_t *__s2) __THROW;
@@ -187,7 +187,7 @@ extern int wcscoll (__const wchar_t *__s1, __const wchar_t *__s2) __THROW;
    `wcscoll' to the original strings.  */
 extern size_t wcsxfrm (wchar_t *__restrict __s1,
                       __const wchar_t *__restrict __s2, size_t __n) __THROW;
-__END_NAMESPACE_C99
+__END_NAMESPACE_STD
 
 #ifdef __USE_GNU
 /* Similar to the two functions above but take the information from
@@ -208,14 +208,14 @@ extern size_t wcsxfrm_l (wchar_t *__s1, __const wchar_t *__s2,
 extern wchar_t *wcsdup (__const wchar_t *__s) __THROW __attribute_malloc__;
 #endif
 
-__BEGIN_NAMESPACE_C99
+__BEGIN_NAMESPACE_STD
 /* Find the first occurrence of WC in WCS.  */
 extern wchar_t *wcschr (__const wchar_t *__wcs, wchar_t __wc)
      __THROW __attribute_pure__;
 /* Find the last occurrence of WC in WCS.  */
 extern wchar_t *wcsrchr (__const wchar_t *__wcs, wchar_t __wc)
      __THROW __attribute_pure__;
-__END_NAMESPACE_C99
+__END_NAMESPACE_STD
 
 #ifdef __USE_GNU
 /* This function is similar to `wcschr'.  But it returns a pointer to
@@ -224,7 +224,7 @@ extern wchar_t *wcschrnul (__const wchar_t *__s, wchar_t __wc)
      __THROW __attribute_pure__;
 #endif
 
-__BEGIN_NAMESPACE_C99
+__BEGIN_NAMESPACE_STD
 /* Return the length of the initial segmet of WCS which
    consists entirely of wide characters not in REJECT.  */
 extern size_t wcscspn (__const wchar_t *__wcs, __const wchar_t *__reject)
@@ -247,7 +247,7 @@ extern wchar_t *wcstok (wchar_t *__restrict __s,
 
 /* Return the number of wide characters in S.  */
 extern size_t wcslen (__const wchar_t *__s) __THROW __attribute_pure__;
-__END_NAMESPACE_C99
+__END_NAMESPACE_STD
 
 #ifdef __USE_XOPEN
 /* Another name for `wcsstr' from XPG4.  */
@@ -262,7 +262,7 @@ extern size_t wcsnlen (__const wchar_t *__s, size_t __maxlen)
 #endif
 
 
-__BEGIN_NAMESPACE_C99
+__BEGIN_NAMESPACE_STD
 /* Search N wide characters of S for C.  */
 extern wchar_t *wmemchr (__const wchar_t *__s, wchar_t __c, size_t __n)
      __THROW __attribute_pure__;
@@ -283,7 +283,7 @@ extern wchar_t *wmemmove (wchar_t *__s1, __const wchar_t *__s2, size_t __n)
 
 /* Set N wide characters of S to C.  */
 extern wchar_t *wmemset (wchar_t *__s, wchar_t __c, size_t __n) __THROW;
-__END_NAMESPACE_C99
+__END_NAMESPACE_STD
 
 #ifdef __USE_GNU
 /* Copy N wide characters of SRC to DEST and return pointer to following
@@ -294,7 +294,7 @@ extern wchar_t *wmempcpy (wchar_t *__restrict __s1,
 #endif
 
 
-__BEGIN_NAMESPACE_C99
+__BEGIN_NAMESPACE_STD
 /* Determine whether C constitutes a valid (one-byte) multibyte
    character.  */
 extern wint_t btowc (int __c) __THROW;
@@ -322,7 +322,7 @@ extern size_t __mbrlen (__const char *__restrict __s, size_t __n,
                        mbstate_t *__restrict __ps) __THROW;
 extern size_t mbrlen (__const char *__restrict __s, size_t __n,
                      mbstate_t *__restrict __ps) __THROW;
-__END_NAMESPACE_C99
+__END_NAMESPACE_STD
 
 #ifdef __USE_EXTERN_INLINES
 /* Define inline function as optimization.  */
@@ -349,7 +349,7 @@ __NTH (mbrlen (__const char *__restrict __s, size_t __n,
          ? mbrtowc (NULL, __s, __n, __ps) : __mbrlen (__s, __n, NULL)); }
 #endif
 
-__BEGIN_NAMESPACE_C99
+__BEGIN_NAMESPACE_STD
 /* Write wide character representation of multibyte character string
    SRC to DST.  */
 extern size_t mbsrtowcs (wchar_t *__restrict __dst,
@@ -361,7 +361,7 @@ extern size_t mbsrtowcs (wchar_t *__restrict __dst,
 extern size_t wcsrtombs (char *__restrict __dst,
                         __const wchar_t **__restrict __src, size_t __len,
                         mbstate_t *__restrict __ps) __THROW;
-__END_NAMESPACE_C99
+__END_NAMESPACE_STD
 
 
 #ifdef __USE_GNU
@@ -391,21 +391,25 @@ extern int wcswidth (__const wchar_t *__s, size_t __n) __THROW;
 #endif /* Use X/Open.  */
 
 
-__BEGIN_NAMESPACE_C99
+__BEGIN_NAMESPACE_STD
 /* Convert initial portion of the wide string NPTR to `double'
    representation.  */
 extern double wcstod (__const wchar_t *__restrict __nptr,
                      wchar_t **__restrict __endptr) __THROW;
+__END_NAMESPACE_STD
 
 #ifdef __USE_ISOC99
+__BEGIN_NAMESPACE_C99
 /* Likewise for `float' and `long double' sizes of floating-point numbers.  */
 extern float wcstof (__const wchar_t *__restrict __nptr,
                     wchar_t **__restrict __endptr) __THROW;
 extern long double wcstold (__const wchar_t *__restrict __nptr,
                            wchar_t **__restrict __endptr) __THROW;
+__END_NAMESPACE_C99
 #endif /* C99 */
 
 
+__BEGIN_NAMESPACE_STD
 /* Convert initial portion of wide string NPTR to `long int'
    representation.  */
 extern long int wcstol (__const wchar_t *__restrict __nptr,
@@ -416,8 +420,10 @@ extern long int wcstol (__const wchar_t *__restrict __nptr,
 extern unsigned long int wcstoul (__const wchar_t *__restrict __nptr,
                                  wchar_t **__restrict __endptr, int __base)
      __THROW;
+__END_NAMESPACE_STD
 
 #if defined __USE_ISOC99 || (defined __GNUC__ && defined __USE_GNU)
+__BEGIN_NAMESPACE_C99
 /* Convert initial portion of wide string NPTR to `long long int'
    representation.  */
 __extension__
@@ -431,8 +437,8 @@ __extension__
 extern unsigned long long int wcstoull (__const wchar_t *__restrict __nptr,
                                        wchar_t **__restrict __endptr,
                                        int __base) __THROW;
-#endif /* ISO C99 or GCC and GNU.  */
 __END_NAMESPACE_C99
+#endif /* ISO C99 or GCC and GNU.  */
 
 #if defined __GNUC__ && defined __USE_GNU
 /* Convert initial portion of wide string NPTR to `long long int'
@@ -522,7 +528,7 @@ extern __FILE *open_wmemstream (wchar_t **__bufloc, size_t *__sizeloc) __THROW;
 #endif
 
 #if defined __USE_ISOC95 || defined __USE_UNIX98
-__BEGIN_NAMESPACE_C99
+__BEGIN_NAMESPACE_STD
 
 /* Select orientation for stream.  */
 extern int fwide (__FILE *__fp, int __mode) __THROW;
@@ -618,7 +624,7 @@ extern int __isoc99_swscanf (__const wchar_t *__restrict __s,
 #  endif
 # endif
 
-__END_NAMESPACE_C99
+__END_NAMESPACE_STD
 #endif /* Use ISO C95, C99 and Unix98. */
 
 #ifdef __USE_ISOC99
@@ -678,7 +684,7 @@ __END_NAMESPACE_C99
 #endif /* Use ISO C99. */
 
 
-__BEGIN_NAMESPACE_C99
+__BEGIN_NAMESPACE_STD
 /* Read a character from STREAM.
 
    These functions are possible cancellation points and therefore not
@@ -728,7 +734,7 @@ extern int fputws (__const wchar_t *__restrict __ws,
    This function is a possible cancellation points and therefore not
    marked with __THROW.  */
 extern wint_t ungetwc (wint_t __wc, __FILE *__stream);
-__END_NAMESPACE_C99
+__END_NAMESPACE_STD
 
 
 #ifdef __USE_GNU