update from main archive 961126

Wed Nov 27 06:10:10 1996  Ulrich Drepper  <drepper@cygnus.com>

	* Makefile: Fix typo.

	* configure: Require autoconf-2.11.

	* elf/dl-deps.c: Terminate duplicate list.

	* libio/libio.h: Add prototypes for _IO_seekoff and _IO_seekpos.
	* libio/strfile.h: Update from current libg++.
	* libio/strops.c: Likewise.

	* login/Makefile (routines): Update after correction of reentrant
	interface.
	* login/endutent.c: Removed.
	* login/endutent_r.c: Likewise.
	* login/pututline.c: Likewise.
	* login/pututline_r.c: Likewise.
	* login/setutent.c: Likewise.
	* login/setutent_r.c: Likewise.
	* login/getutent.c: Update for new interface.
	* login/getutent_r.c: Likewise.
	* login/getutid.c: Likewise.
	* login/getutid_r.c: Likewise.
	* login/getutline.c: Likewise.
	* login/getutline_r.c: Likewise.
	* login/login.c: Likewise.
	* login/logout.c: Likewise.
	* login/logwtmp.c: Likewise.
	* login/utmp.h: Likewise.
	* sysdeps/unix/getlogin.c: Likewise.
	* sysdeps/unix/getlogin_r.c: Likewise.
	* login/utmp-private.h: New private header.
	* login/utmp_db.c: Stub DB backend for utmp handler.
	* login/utmp_file.c: File backend for utmp handler.
	* sysdeps/gnu/utmpbits.h (struct utmp): Add some more fields.
	(enum utlogin): List of record types.
	(struct exit_status): Record to align with other implementations.

	* sysdeps/generic/paths.h: Add _PATH_UTMP_DB.
	* sysdeps/unix/sysv/linux/paths.h: Likewise.

	* sysdeps/generic/pty.c: Use getgrnam_r instead of getgrnam.

	* sysdeps/stub/getlogin.c: Update copyright.
	* sysdeps/stub/getlogin_r.c: Likewise.

	* nss/getXXbyYY_r.c: Use -1l for error-pointer value instead of -1.
	* nss/getXXent_r.c: Likewise.
	* nss/nsswitch.c: Likewise.

	* posix/Makefile (headers): Add wait.h.
	* posix/wait.h: New file.

	* posix/sys/types.h: Always define intN_t types.

	* stdio-common/Makefile: Update copyright.
	Use -Wno-format flag for scanf4.c and scanf7.c.

	* stdlib/stdlib.h: Reformat.

	* time/africa: Update from ADO tzdata1996m.
	* time/antarctica: Likewise.
	* time/asia: Likewise.
	* time/australia: Likewise.
	* time/etcetera: Likewise.
	* time/europe: Likewise.
	* time/northamerica: Likewise.
	* time/southamerica: Likewise.
	* time/zone.tab: Likewise.

Fri Nov 22 19:34:12 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* sysdeps/posix/getcwd.c (__getcwd): After resizing the buffer
	move the current contents to the end and relocate file name
	pointer to upper half of the buffer.

Sun Nov 24 04:56:19 1996  Ulrich Drepper  <drepper@cygnus.com>

	* time/africa: Update from ADO tzdata1996m.
	* time/antarctica: Likewise.
	* time/asia: Likewise.
	* time/australia: Likewise.
	* time/etcetera: Likewise.
	* time/europe: Likewise.
	* time/nothamerica: Likewise.
	* time/southameria: Likewise.
	* time/zone.tab: Likewise.

	* sysdeps/unix/sysv/linux/sys/serial.h: New file.
	* sysdeps/unix/sysv/linux/Makefile [$(subdir)=misc] (sysdep_headers):
	Add sys/serial.h.
	* sysdeps/unix/sysv/linux/Dist: Add sys/serial.h.

	* posix/wait.h: New file.
	* posix/Makefile (headers): Add wait.h.

Sat Nov 23 17:27:52 1996  Roland McGrath  <roland@gnu.ai.mit.edu>

	* Makeconfig ($(common-objpfx)soversions.mk): Use regular
	expression instead of shell pattern matching.
	* shlib-versions: Change to regular expressions.

Sat Nov 23 13:24:55 1996  Ulrich Drepper  <drepper@cygnus.com>

	* io/stat.c: Add section from libgcc to copyright comment
	to allow this file to be statically linked in applications.
	* io/fstat.c: Likewise.
	* io/lstat.c: Likewise.
	* io/mknod.c: Likewise.

Fri Nov 22 15:14:23 1996  Ulrich Drepper  <drepper@cygnus.com>

	* csu/initfini.c: Add section from libgcc to copyright comment
	to allow this file to be statically linked in applications.

	* malloc/obstack.h [!_LIBC && !HAVE_STRING_H]: Define memcpy if
	not already defined.
	(obstack_grow, obstack_grow0): Correct placement of braces.

	* gnu-versions.h (_GNU_OBSTACK_INTERFACE_VERSION): Define to 2.
	* malloc/obstack.c (OBSTACK_INTERFACE_VERSION): Define to 2.

Thu Nov 21 19:54:51 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* Makerules (make-link): Simplify by changing directory only if
	not using rellns-sh; check whether we really have symbolic links.

	* rellns-sh: Fix the case of $(dirname $2) being a prefix of
	$(dirname $1); use status of ln for exit code; make more robust
	against multiple slashes in a row.

Thu Nov 21 13:05:21 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* configure.in (after AC_CANONICAL_HOST): mutate *-*-gnu* names
	into *-*-gnu-gnu*.
	* shlib-versions (gnu versions): Recognize *-*-gnu-gnu* instead of
	the three-part name, to distinguish correctly from *-*-linux-gnu*.

	* sysdeps/mach/hurd/Makefile ($(libdir)/libc.so): Depend on
	$(rpcuserlibs).

	* sysdeps/mach/hurd/Makefile (install-others): Add
	$(libdir)/libc_p.a.
	($(libdir)/libc_p.a): New rule.
	* sysdeps/mach/hurd/libc_p-ldscript: New file.
	* sysdeps/mach/hurd/Dist: Add libc_p-ldscript.

Wed Nov 20 20:28:21 1996  Richard Henderson  <rth@tamu.edu>

	* Makerules (make-link): Use $(shell) to find rellns-sh before we cd.
	* time/Makefile: Likewise.

	* sysdeps/alpha/elf/Makefile: New file.  Build crtbegin.o & crtend.o.
	* sysdeps/alpha/elf/Dist: New file.
	* sysdeps/alpha/elf/crtbegin.S, sysdeps/alpha/elf/crtend.S: New files.
	The bits currently distributed with GCC fail in two ways -- they don't
	understand multiple .got subsections and the extents of the lists are
	dynamicly bound meaning that the application's lists get executed
	multiple times and the library's lists never get executed.

Wed Nov 20 00:42:45 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* stdlib/strtod.c: Fix previous change.

Wed Nov 20 22:07:58 1996  Andreas Jaeger  <aj@arthur.pfalz.de>

	* time/Makefile ($(installed-localtime-file)): Use $(..) to find
	rellns-sh script.

Wed Nov 20 12:50:54 1996  Ulrich Drepper  <drepper@cygnus.com>

	* stdio-common/Makefile: Add CFLAGS-scanf7.c to prevent warning.
	Likesie for scanf4.c
This commit is contained in:
Ulrich Drepper 1996-11-27 06:13:15 +00:00
parent 8f8619cbd2
commit 8a52392237
69 changed files with 2469 additions and 868 deletions

175
ChangeLog
View File

@ -1,3 +1,178 @@
Wed Nov 27 06:10:10 1996 Ulrich Drepper <drepper@cygnus.com>
* Makefile: Fix typo.
* configure: Require autoconf-2.11.
* elf/dl-deps.c: Terminate duplicate list.
* libio/libio.h: Add prototypes for _IO_seekoff and _IO_seekpos.
* libio/strfile.h: Update from current libg++.
* libio/strops.c: Likewise.
* login/Makefile (routines): Update after correction of reentrant
interface.
* login/endutent.c: Removed.
* login/endutent_r.c: Likewise.
* login/pututline.c: Likewise.
* login/pututline_r.c: Likewise.
* login/setutent.c: Likewise.
* login/setutent_r.c: Likewise.
* login/getutent.c: Update for new interface.
* login/getutent_r.c: Likewise.
* login/getutid.c: Likewise.
* login/getutid_r.c: Likewise.
* login/getutline.c: Likewise.
* login/getutline_r.c: Likewise.
* login/login.c: Likewise.
* login/logout.c: Likewise.
* login/logwtmp.c: Likewise.
* login/utmp.h: Likewise.
* sysdeps/unix/getlogin.c: Likewise.
* sysdeps/unix/getlogin_r.c: Likewise.
* login/utmp-private.h: New private header.
* login/utmp_db.c: Stub DB backend for utmp handler.
* login/utmp_file.c: File backend for utmp handler.
* sysdeps/gnu/utmpbits.h (struct utmp): Add some more fields.
(enum utlogin): List of record types.
(struct exit_status): Record to align with other implementations.
* sysdeps/generic/paths.h: Add _PATH_UTMP_DB.
* sysdeps/unix/sysv/linux/paths.h: Likewise.
* sysdeps/generic/pty.c: Use getgrnam_r instead of getgrnam.
* sysdeps/stub/getlogin.c: Update copyright.
* sysdeps/stub/getlogin_r.c: Likewise.
* nss/getXXbyYY_r.c: Use -1l for error-pointer value instead of -1.
* nss/getXXent_r.c: Likewise.
* nss/nsswitch.c: Likewise.
* posix/Makefile (headers): Add wait.h.
* posix/wait.h: New file.
* posix/sys/types.h: Always define intN_t types.
* stdio-common/Makefile: Update copyright.
Use -Wno-format flag for scanf4.c and scanf7.c.
* stdlib/stdlib.h: Reformat.
* time/africa: Update from ADO tzdata1996m.
* time/antarctica: Likewise.
* time/asia: Likewise.
* time/australia: Likewise.
* time/etcetera: Likewise.
* time/europe: Likewise.
* time/northamerica: Likewise.
* time/southamerica: Likewise.
* time/zone.tab: Likewise.
Fri Nov 22 19:34:12 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/posix/getcwd.c (__getcwd): After resizing the buffer
move the current contents to the end and relocate file name
pointer to upper half of the buffer.
Sun Nov 24 04:56:19 1996 Ulrich Drepper <drepper@cygnus.com>
* time/africa: Update from ADO tzdata1996m.
* time/antarctica: Likewise.
* time/asia: Likewise.
* time/australia: Likewise.
* time/etcetera: Likewise.
* time/europe: Likewise.
* time/nothamerica: Likewise.
* time/southameria: Likewise.
* time/zone.tab: Likewise.
* sysdeps/unix/sysv/linux/sys/serial.h: New file.
* sysdeps/unix/sysv/linux/Makefile [$(subdir)=misc] (sysdep_headers):
Add sys/serial.h.
* sysdeps/unix/sysv/linux/Dist: Add sys/serial.h.
* posix/wait.h: New file.
* posix/Makefile (headers): Add wait.h.
Sat Nov 23 17:27:52 1996 Roland McGrath <roland@gnu.ai.mit.edu>
* Makeconfig ($(common-objpfx)soversions.mk): Use regular
expression instead of shell pattern matching.
* shlib-versions: Change to regular expressions.
Sat Nov 23 13:24:55 1996 Ulrich Drepper <drepper@cygnus.com>
* io/stat.c: Add section from libgcc to copyright comment
to allow this file to be statically linked in applications.
* io/fstat.c: Likewise.
* io/lstat.c: Likewise.
* io/mknod.c: Likewise.
Fri Nov 22 15:14:23 1996 Ulrich Drepper <drepper@cygnus.com>
* csu/initfini.c: Add section from libgcc to copyright comment
to allow this file to be statically linked in applications.
* malloc/obstack.h [!_LIBC && !HAVE_STRING_H]: Define memcpy if
not already defined.
(obstack_grow, obstack_grow0): Correct placement of braces.
* gnu-versions.h (_GNU_OBSTACK_INTERFACE_VERSION): Define to 2.
* malloc/obstack.c (OBSTACK_INTERFACE_VERSION): Define to 2.
Thu Nov 21 19:54:51 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* Makerules (make-link): Simplify by changing directory only if
not using rellns-sh; check whether we really have symbolic links.
* rellns-sh: Fix the case of $(dirname $2) being a prefix of
$(dirname $1); use status of ln for exit code; make more robust
against multiple slashes in a row.
Thu Nov 21 13:05:21 1996 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* configure.in (after AC_CANONICAL_HOST): mutate *-*-gnu* names
into *-*-gnu-gnu*.
* shlib-versions (gnu versions): Recognize *-*-gnu-gnu* instead of
the three-part name, to distinguish correctly from *-*-linux-gnu*.
* sysdeps/mach/hurd/Makefile ($(libdir)/libc.so): Depend on
$(rpcuserlibs).
* sysdeps/mach/hurd/Makefile (install-others): Add
$(libdir)/libc_p.a.
($(libdir)/libc_p.a): New rule.
* sysdeps/mach/hurd/libc_p-ldscript: New file.
* sysdeps/mach/hurd/Dist: Add libc_p-ldscript.
Wed Nov 20 20:28:21 1996 Richard Henderson <rth@tamu.edu>
* Makerules (make-link): Use $(shell) to find rellns-sh before we cd.
* time/Makefile: Likewise.
* sysdeps/alpha/elf/Makefile: New file. Build crtbegin.o & crtend.o.
* sysdeps/alpha/elf/Dist: New file.
* sysdeps/alpha/elf/crtbegin.S, sysdeps/alpha/elf/crtend.S: New files.
The bits currently distributed with GCC fail in two ways -- they don't
understand multiple .got subsections and the extents of the lists are
dynamicly bound meaning that the application's lists get executed
multiple times and the library's lists never get executed.
Wed Nov 20 00:42:45 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* stdlib/strtod.c: Fix previous change.
Wed Nov 20 22:07:58 1996 Andreas Jaeger <aj@arthur.pfalz.de>
* time/Makefile ($(installed-localtime-file)): Use $(..) to find
rellns-sh script.
Wed Nov 20 12:50:54 1996 Ulrich Drepper <drepper@cygnus.com>
* stdio-common/Makefile: Add CFLAGS-scanf7.c to prevent warning.
Likesie for scanf4.c
Wed Nov 20 02:04:11 1996 Ulrich Drepper <drepper@cygnus.com> Wed Nov 20 02:04:11 1996 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/unix/sysv/linux/sigsuspend.c: Make sigsuspend a weak * sysdeps/unix/sysv/linux/sigsuspend.c: Make sigsuspend a weak

View File

@ -523,9 +523,10 @@ $(common-objpfx)soversions.mk: $(..)shlib-versions $(..)Makeconfig \
(file="$(wildcard $(patsubst %,$(..)%/shlib-versions,$(add-ons))) \ (file="$(wildcard $(patsubst %,$(..)%/shlib-versions,$(add-ons))) \
$(..)shlib-versions"; \ $(..)shlib-versions"; \
for f in $$file; do \ for f in $$file; do \
sed 's/#.*$$//' $$f | while read conf versions; do \ sed 's/#.*$$//' $$f | while read conf versions; do \
test -n "$$versions" || continue; \ test -n "$$versions" && \
case '$(config-machine)-$(config-vendor)-$(config-os)' in $$conf)\ test `expr '$(config-machine)-$(config-vendor)-$(config-os)' \
: "$$conf"` != 0 || continue; \
for v in $$versions; do \ for v in $$versions; do \
lib=`echo $$v | sed 's/=.*$$//'`; \ lib=`echo $$v | sed 's/=.*$$//'`; \
if eval "test -z \"\$$vers_lib$$lib\""; then \ if eval "test -z \"\$$vers_lib$$lib\""; then \
@ -536,9 +537,10 @@ $(common-objpfx)soversions.mk: $(..)shlib-versions $(..)Makeconfig \
echo "all-sonames+=$$lib.so\$$($$lib.so-version)";;\ echo "all-sonames+=$$lib.so\$$($$lib.so-version)";;\
*) echo "$$lib.so-version=$$number"; \ *) echo "$$lib.so-version=$$number"; \
echo "all-sonames+=\$$($$lib.so-version)";; \ echo "all-sonames+=\$$($$lib.so-version)";; \
esac; \ esac; \
fi; \ fi; \
done ;; esac; done; \ done; \
done; \
done;) > $@T; exit 0 done;) > $@T; exit 0
mv -f $@T $@ mv -f $@T $@

View File

@ -176,7 +176,7 @@ $(includedir)/stubs.h: subdir_install
else $(INSTALL_DATA) $(objpfx)stubs.h $@; fi else $(INSTALL_DATA) $(objpfx)stubs.h $@; fi
rm -f $(objpfx)stubs.h rm -f $(objpfx)stubs.h
ifeq (yes, $(build-shared)) ifeq (yes,$(build-shared))
# Like stubs.h the gnu/lib-names.h header is not used while building the # Like stubs.h the gnu/lib-names.h header is not used while building the
# libc itself. So we generate it while installing. # libc itself. So we generate it while installing.

View File

@ -600,16 +600,24 @@ versioned := $(strip $(foreach so,$(install-lib.so),\
$(addprefix $(slibdir)/,$(filter-out $(versioned),$(install-lib.so))): \ $(addprefix $(slibdir)/,$(filter-out $(versioned),$(install-lib.so))): \
$(slibdir)/%.so: $(objpfx)%.so; $(do-install-program) $(slibdir)/%.so: $(objpfx)%.so; $(do-install-program)
ifneq ($(findstring -s,$(LN_S)),)
define make-link define make-link
here=`pwd`; cd $(@D); \ rm -f $@.new; \
rm -f $(@F).new; \
if test '$(@D)' = '$(<D)'; then \ if test '$(@D)' = '$(<D)'; then \
$(LN_S) $(<F) $(@F).new; \ (cd $(@D); $(LN_S) $(<F) $(@F).new); \
else \ else \
$(SHELL) $$here/$(..)rellns-sh $< $(@F).new; \ $(SHELL) $(..)rellns-sh $< $@.new; \
fi; \ fi; \
mv -f $(@F).new $(@F) mv -f $@.new $@
endef endef
else
# If we have no symbolic links don't bother with rellns-sh.
define make-link
rm -f $@.new; \
$(LN_S) $< $@.new; \
mv -f $@.new $@
endef
endif
ifdef libc.so-version ifdef libc.so-version
# For a library specified to be version N, install three files: # For a library specified to be version N, install three files:

110
configure vendored
View File

@ -2,7 +2,7 @@
# From configure.in CVSid # From configure.in CVSid
# Guess values for system-dependent variables and create Makefiles. # Guess values for system-dependent variables and create Makefiles.
# Generated automatically using autoconf version 2.10.3 # Generated automatically using autoconf version 2.11
# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. # Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
# #
# This configure script is free software; the Free Software Foundation # This configure script is free software; the Free Software Foundation
@ -74,6 +74,8 @@ mandir='${prefix}/man'
# Initialize some other variables. # Initialize some other variables.
subdirs= subdirs=
MFLAGS= MAKEFLAGS= MFLAGS= MAKEFLAGS=
# Maximum number of lines to put in a shell here document.
ac_max_here_lines=12
ac_prev= ac_prev=
for ac_option for ac_option
@ -355,7 +357,7 @@ EOF
verbose=yes ;; verbose=yes ;;
-version | --version | --versio | --versi | --vers) -version | --version | --versio | --versi | --vers)
echo "configure generated by autoconf version 2.10.3" echo "configure generated by autoconf version 2.11"
exit 0 ;; exit 0 ;;
-with-* | --with-*) -with-* | --with-*)
@ -702,7 +704,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
fi fi
echo $ac_n "checking host system type""... $ac_c" 1>&6 echo $ac_n "checking host system type""... $ac_c" 1>&6
echo "configure:706: checking host system type" >&5 echo "configure:708: checking host system type" >&5
host_alias=$host host_alias=$host
case "$host_alias" in case "$host_alias" in
@ -722,6 +724,20 @@ host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$host" 1>&6 echo "$ac_t""$host" 1>&6
# The way shlib-versions is used to generate soversions.mk uses a
# fairly simplistic model for name recognition that can't distinguish
# i486-pc-linux-gnu fully from i486-pc-gnu. So we mutate a $host_os
# of `gnu*' here to be `gnu-gnu*' just so that shlib-versions can
# tell. This doesn't get used much beyond that, so it's fairly safe.
case "$host_os" in
linux*)
;;
gnu*)
host_os=`echo $host_os | sed -e 's/gnu/gnu-gnu/'`
;;
esac
# We keep the original values in `$config_*' and never modify them, so we # We keep the original values in `$config_*' and never modify them, so we
# can write them unchanged into config.make. Everything else uses # can write them unchanged into config.make. Everything else uses
# $machine, $vendor, and $os, and changes them whenever convenient. # $machine, $vendor, and $os, and changes them whenever convenient.
@ -768,7 +784,7 @@ esac
# This can take a while to compute. # This can take a while to compute.
sysdep_dir=$srcdir/sysdeps sysdep_dir=$srcdir/sysdeps
echo $ac_n "checking sysdep dirs""... $ac_c" 1>&6 echo $ac_n "checking sysdep dirs""... $ac_c" 1>&6
echo "configure:772: checking sysdep dirs" >&5 echo "configure:788: checking sysdep dirs" >&5
# Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1. # Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`" os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
@ -969,7 +985,7 @@ echo "$ac_t""sysdeps/generic sysdeps/stub" 1>&6
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# ./install, which can be erroneously created by make from ./install.sh. # ./install, which can be erroneously created by make from ./install.sh.
echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
echo "configure:973: checking for a BSD compatible install" >&5 echo "configure:989: checking for a BSD compatible install" >&5
if test -z "$INSTALL"; then if test -z "$INSTALL"; then
if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
@ -1020,10 +1036,10 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
if test "$INSTALL" = "${srcdir}/install-sh -c"; then if test "$INSTALL" = "${srcdir}/install-sh -c"; then
# The makefiles need to use a different form to find it in $srcdir. # The makefiles need to use a different form to find it in $srcdir.
INSTALL="$(..)./install-sh -c" INSTALL='$(..)./install-sh -c'
fi fi
echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
echo "configure:1027: checking whether ln -s works" >&5 echo "configure:1043: checking whether ln -s works" >&5
if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1048,7 +1064,7 @@ do
# Extract the first word of "$ac_prog", so it can be a program name with args. # Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2 set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:1052: checking for $ac_word" >&5 echo "configure:1068: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_MSGFMT'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_prog_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1079,7 +1095,7 @@ test -n "$MSGFMT" || MSGFMT=":"
echo $ac_n "checking build system type""... $ac_c" 1>&6 echo $ac_n "checking build system type""... $ac_c" 1>&6
echo "configure:1083: checking build system type" >&5 echo "configure:1099: checking build system type" >&5
build_alias=$build build_alias=$build
case "$build_alias" in case "$build_alias" in
@ -1105,7 +1121,7 @@ fi
# Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
set dummy ${ac_tool_prefix}gcc; ac_word=$2 set dummy ${ac_tool_prefix}gcc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:1109: checking for $ac_word" >&5 echo "configure:1125: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1137,7 +1153,7 @@ if test $host != $build; then
# Extract the first word of "gcc cc", so it can be a program name with args. # Extract the first word of "gcc cc", so it can be a program name with args.
set dummy gcc cc; ac_word=$2 set dummy gcc cc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:1141: checking for $ac_word" >&5 echo "configure:1157: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_BUILD_CC'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_prog_BUILD_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1164,7 +1180,7 @@ fi
fi fi
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
echo "configure:1168: checking how to run the C preprocessor" >&5 echo "configure:1184: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory. # On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then if test -n "$CPP" && test -d "$CPP"; then
CPP= CPP=
@ -1179,13 +1195,13 @@ else
# On the NeXT, cc -E runs the code through the compiler's parser, # On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp. # not just through cpp.
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 1183 "configure" #line 1199 "configure"
#include "confdefs.h" #include "confdefs.h"
#include <assert.h> #include <assert.h>
Syntax Error Syntax Error
EOF EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:1189: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } { (eval echo configure:1205: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out` ac_err=`grep -v '^ *+' conftest.out`
if test -z "$ac_err"; then if test -z "$ac_err"; then
: :
@ -1196,13 +1212,13 @@ else
rm -rf conftest* rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp" CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 1200 "configure" #line 1216 "configure"
#include "confdefs.h" #include "confdefs.h"
#include <assert.h> #include <assert.h>
Syntax Error Syntax Error
EOF EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:1206: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } { (eval echo configure:1222: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out` ac_err=`grep -v '^ *+' conftest.out`
if test -z "$ac_err"; then if test -z "$ac_err"; then
: :
@ -1227,7 +1243,7 @@ echo "$ac_t""$CPP" 1>&6
# Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
set dummy ${ac_tool_prefix}ar; ac_word=$2 set dummy ${ac_tool_prefix}ar; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:1231: checking for $ac_word" >&5 echo "configure:1247: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1258,7 +1274,7 @@ fi
# Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
set dummy ${ac_tool_prefix}ranlib; ac_word=$2 set dummy ${ac_tool_prefix}ranlib; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:1262: checking for $ac_word" >&5 echo "configure:1278: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1289,7 +1305,7 @@ if test -n "$ac_tool_prefix"; then
# Extract the first word of "ranlib", so it can be a program name with args. # Extract the first word of "ranlib", so it can be a program name with args.
set dummy ranlib; ac_word=$2 set dummy ranlib; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:1293: checking for $ac_word" >&5 echo "configure:1309: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1324,7 +1340,7 @@ fi
# Extract the first word of "bash", so it can be a program name with args. # Extract the first word of "bash", so it can be a program name with args.
set dummy bash; ac_word=$2 set dummy bash; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:1328: checking for $ac_word" >&5 echo "configure:1344: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_BASH'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_path_BASH'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1361,7 +1377,7 @@ fi
echo $ac_n "checking for signed size_t type""... $ac_c" 1>&6 echo $ac_n "checking for signed size_t type""... $ac_c" 1>&6
echo "configure:1365: checking for signed size_t type" >&5 echo "configure:1381: checking for signed size_t type" >&5
if eval "test \"`echo '$''{'libc_cv_signed_size_t'+set}'`\" = set"; then if eval "test \"`echo '$''{'libc_cv_signed_size_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1385,12 +1401,12 @@ EOF
fi fi
echo $ac_n "checking for libc-friendly stddef.h""... $ac_c" 1>&6 echo $ac_n "checking for libc-friendly stddef.h""... $ac_c" 1>&6
echo "configure:1389: checking for libc-friendly stddef.h" >&5 echo "configure:1405: checking for libc-friendly stddef.h" >&5
if eval "test \"`echo '$''{'libc_cv_friendly_stddef'+set}'`\" = set"; then if eval "test \"`echo '$''{'libc_cv_friendly_stddef'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 1394 "configure" #line 1410 "configure"
#include "confdefs.h" #include "confdefs.h"
#define __need_size_t #define __need_size_t
#define __need_wchar_t #define __need_wchar_t
@ -1405,7 +1421,7 @@ size_t size; wchar_t wchar;
if (&size == NULL || &wchar == NULL) abort (); if (&size == NULL || &wchar == NULL) abort ();
; return 0; } ; return 0; }
EOF EOF
if { (eval echo configure:1409: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then if { (eval echo configure:1425: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest* rm -rf conftest*
libc_cv_friendly_stddef=yes libc_cv_friendly_stddef=yes
else else
@ -1425,7 +1441,7 @@ override stddef.h = # The installed <stddef.h> seems to be libc-friendly."
fi fi
echo $ac_n "checking whether we need to use -P to assemble .S files""... $ac_c" 1>&6 echo $ac_n "checking whether we need to use -P to assemble .S files""... $ac_c" 1>&6
echo "configure:1429: checking whether we need to use -P to assemble .S files" >&5 echo "configure:1445: checking whether we need to use -P to assemble .S files" >&5
if eval "test \"`echo '$''{'libc_cv_need_minus_P'+set}'`\" = set"; then if eval "test \"`echo '$''{'libc_cv_need_minus_P'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1448,7 +1464,7 @@ asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
fi fi
echo $ac_n "checking for assembler global-symbol directive""... $ac_c" 1>&6 echo $ac_n "checking for assembler global-symbol directive""... $ac_c" 1>&6
echo "configure:1452: checking for assembler global-symbol directive" >&5 echo "configure:1468: checking for assembler global-symbol directive" >&5
if eval "test \"`echo '$''{'libc_cv_asm_global_directive'+set}'`\" = set"; then if eval "test \"`echo '$''{'libc_cv_asm_global_directive'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1478,7 +1494,7 @@ EOF
fi fi
echo $ac_n "checking for .set assembler directive""... $ac_c" 1>&6 echo $ac_n "checking for .set assembler directive""... $ac_c" 1>&6
echo "configure:1482: checking for .set assembler directive" >&5 echo "configure:1498: checking for .set assembler directive" >&5
if eval "test \"`echo '$''{'libc_cv_asm_set_directive'+set}'`\" = set"; then if eval "test \"`echo '$''{'libc_cv_asm_set_directive'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1513,12 +1529,12 @@ fi
if test $elf != yes; then if test $elf != yes; then
echo $ac_n "checking for .init and .fini sections""... $ac_c" 1>&6 echo $ac_n "checking for .init and .fini sections""... $ac_c" 1>&6
echo "configure:1517: checking for .init and .fini sections" >&5 echo "configure:1533: checking for .init and .fini sections" >&5
if eval "test \"`echo '$''{'libc_cv_have_initfini'+set}'`\" = set"; then if eval "test \"`echo '$''{'libc_cv_have_initfini'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 1522 "configure" #line 1538 "configure"
#include "confdefs.h" #include "confdefs.h"
int main() { int main() {
@ -1527,7 +1543,7 @@ asm (".section .init");
asm (".text"); asm (".text");
; return 0; } ; return 0; }
EOF EOF
if { (eval echo configure:1531: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then if { (eval echo configure:1547: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest* rm -rf conftest*
libc_cv_have_initfini=yes libc_cv_have_initfini=yes
else else
@ -1553,19 +1569,19 @@ if test $elf = yes; then
libc_cv_asm_underscores=no libc_cv_asm_underscores=no
else else
echo $ac_n "checking for _ prefix on C symbol names""... $ac_c" 1>&6 echo $ac_n "checking for _ prefix on C symbol names""... $ac_c" 1>&6
echo "configure:1557: checking for _ prefix on C symbol names" >&5 echo "configure:1573: checking for _ prefix on C symbol names" >&5
if eval "test \"`echo '$''{'libc_cv_asm_underscores'+set}'`\" = set"; then if eval "test \"`echo '$''{'libc_cv_asm_underscores'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 1562 "configure" #line 1578 "configure"
#include "confdefs.h" #include "confdefs.h"
asm ("_glibc_foobar:"); asm ("_glibc_foobar:");
int main() { int main() {
glibc_foobar (); glibc_foobar ();
; return 0; } ; return 0; }
EOF EOF
if { (eval echo configure:1569: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then if { (eval echo configure:1585: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
rm -rf conftest* rm -rf conftest*
libc_cv_asm_underscores=yes libc_cv_asm_underscores=yes
else else
@ -1593,7 +1609,7 @@ if test $elf = yes; then
libc_cv_asm_weakext_directive=no libc_cv_asm_weakext_directive=no
else else
echo $ac_n "checking for assembler .weak directive""... $ac_c" 1>&6 echo $ac_n "checking for assembler .weak directive""... $ac_c" 1>&6
echo "configure:1597: checking for assembler .weak directive" >&5 echo "configure:1613: checking for assembler .weak directive" >&5
if eval "test \"`echo '$''{'libc_cv_asm_weak_directive'+set}'`\" = set"; then if eval "test \"`echo '$''{'libc_cv_asm_weak_directive'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1616,7 +1632,7 @@ echo "$ac_t""$libc_cv_asm_weak_directive" 1>&6
if test $libc_cv_asm_weak_directive = no; then if test $libc_cv_asm_weak_directive = no; then
echo $ac_n "checking for assembler .weakext directive""... $ac_c" 1>&6 echo $ac_n "checking for assembler .weakext directive""... $ac_c" 1>&6
echo "configure:1620: checking for assembler .weakext directive" >&5 echo "configure:1636: checking for assembler .weakext directive" >&5
if eval "test \"`echo '$''{'libc_cv_asm_weakext_directive'+set}'`\" = set"; then if eval "test \"`echo '$''{'libc_cv_asm_weakext_directive'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1653,7 +1669,7 @@ EOF
fi fi
echo $ac_n "checking for ld --no-whole-archive""... $ac_c" 1>&6 echo $ac_n "checking for ld --no-whole-archive""... $ac_c" 1>&6
echo "configure:1657: checking for ld --no-whole-archive" >&5 echo "configure:1673: checking for ld --no-whole-archive" >&5
if eval "test \"`echo '$''{'libc_cv_ld_no_whole_archive'+set}'`\" = set"; then if eval "test \"`echo '$''{'libc_cv_ld_no_whole_archive'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1664,7 +1680,7 @@ __throw () {}
EOF EOF
if { ac_try='${CC-cc} $CFLAGS if { ac_try='${CC-cc} $CFLAGS
-nostdlib -nostartfiles -Wl,--no-whole-archive -nostdlib -nostartfiles -Wl,--no-whole-archive
-o conftest conftest.c'; { (eval echo configure:1668: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then -o conftest conftest.c'; { (eval echo configure:1684: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
libc_cv_ld_no_whole_archive=yes libc_cv_ld_no_whole_archive=yes
else else
libc_cv_ld_no_whole_archive=no libc_cv_ld_no_whole_archive=no
@ -1675,7 +1691,7 @@ fi
echo "$ac_t""$libc_cv_ld_no_whole_archive" 1>&6 echo "$ac_t""$libc_cv_ld_no_whole_archive" 1>&6
echo $ac_n "checking for gcc -fno-exceptions""... $ac_c" 1>&6 echo $ac_n "checking for gcc -fno-exceptions""... $ac_c" 1>&6
echo "configure:1679: checking for gcc -fno-exceptions" >&5 echo "configure:1695: checking for gcc -fno-exceptions" >&5
if eval "test \"`echo '$''{'libc_cv_gcc_no_exceptions'+set}'`\" = set"; then if eval "test \"`echo '$''{'libc_cv_gcc_no_exceptions'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1686,7 +1702,7 @@ __throw () {}
EOF EOF
if { ac_try='${CC-cc} $CFLAGS if { ac_try='${CC-cc} $CFLAGS
-nostdlib -nostartfiles -fno-exceptions -nostdlib -nostartfiles -fno-exceptions
-o conftest conftest.c'; { (eval echo configure:1690: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then -o conftest conftest.c'; { (eval echo configure:1706: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
libc_cv_gcc_no_exceptions=yes libc_cv_gcc_no_exceptions=yes
else else
libc_cv_gcc_no_exceptions=no libc_cv_gcc_no_exceptions=no
@ -1738,7 +1754,7 @@ if test "$uname" = generic; then
fi fi
echo $ac_n "checking OS release for uname""... $ac_c" 1>&6 echo $ac_n "checking OS release for uname""... $ac_c" 1>&6
echo "configure:1742: checking OS release for uname" >&5 echo "configure:1758: checking OS release for uname" >&5
if eval "test \"`echo '$''{'libc_cv_uname_release'+set}'`\" = set"; then if eval "test \"`echo '$''{'libc_cv_uname_release'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1760,7 +1776,7 @@ echo "$ac_t""$libc_cv_uname_release" 1>&6
uname_release="$libc_cv_uname_release" uname_release="$libc_cv_uname_release"
echo $ac_n "checking OS version for uname""... $ac_c" 1>&6 echo $ac_n "checking OS version for uname""... $ac_c" 1>&6
echo "configure:1764: checking OS version for uname" >&5 echo "configure:1780: checking OS version for uname" >&5
if eval "test \"`echo '$''{'libc_cv_uname_version'+set}'`\" = set"; then if eval "test \"`echo '$''{'libc_cv_uname_version'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1782,7 +1798,7 @@ else
fi fi
echo $ac_n "checking stdio selection""... $ac_c" 1>&6 echo $ac_n "checking stdio selection""... $ac_c" 1>&6
echo "configure:1786: checking stdio selection" >&5 echo "configure:1802: checking stdio selection" >&5
case $stdio in case $stdio in
libio) cat >> confdefs.h <<\EOF libio) cat >> confdefs.h <<\EOF
@ -1910,7 +1926,7 @@ do
echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
-version | --version | --versio | --versi | --vers | --ver | --ve | --v) -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
echo "$CONFIG_STATUS generated by autoconf version 2.10.3" echo "$CONFIG_STATUS generated by autoconf version 2.11"
exit 0 ;; exit 0 ;;
-help | --help | --hel | --he | --h) -help | --help | --hel | --he | --h)
echo "\$ac_cs_usage"; exit 0 ;; echo "\$ac_cs_usage"; exit 0 ;;
@ -1999,10 +2015,10 @@ cat >> $CONFIG_STATUS <<\EOF
# Split the substitutions into bite-sized pieces for seds with # Split the substitutions into bite-sized pieces for seds with
# small command number limits, like on Digital OSF/1 and HP-UX. # small command number limits, like on Digital OSF/1 and HP-UX.
ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script.
ac_file=1 # Number of current file. ac_file=1 # Number of current file.
ac_inc=90 # Lines per file.
ac_beg=1 # First line for current file. ac_beg=1 # First line for current file.
ac_end=$ac_inc # Line after last line for current file. ac_end=$ac_max_sed_cmds # Line after last line for current file.
ac_more_lines=: ac_more_lines=:
ac_sed_cmds="" ac_sed_cmds=""
while $ac_more_lines; do while $ac_more_lines; do
@ -2022,7 +2038,7 @@ while $ac_more_lines; do
fi fi
ac_file=`expr $ac_file + 1` ac_file=`expr $ac_file + 1`
ac_beg=$ac_end ac_beg=$ac_end
ac_end=`expr $ac_end + $ac_inc` ac_end=`expr $ac_end + $ac_max_sed_cmds`
fi fi
done done
if test -z "$ac_sed_cmds"; then if test -z "$ac_sed_cmds"; then
@ -2154,8 +2170,6 @@ EOF
# Break up conftest.vals because some shells have a limit on # Break up conftest.vals because some shells have a limit on
# the size of here documents, and old seds have small limits too. # the size of here documents, and old seds have small limits too.
# Maximum number of lines to put in a single here document.
ac_max_here_lines=12
rm -f conftest.tail rm -f conftest.tail
while : while :

View File

@ -1,6 +1,6 @@
Dnl Process this file with autoconf to produce a configure script. Dnl Process this file with autoconf to produce a configure script.
AC_REVISION([$CVSid$]) AC_REVISION([$CVSid$])
AC_PREREQ(2.10.2)dnl dnl Minimum Autoconf version required. AC_PREREQ(2.11)dnl dnl Minimum Autoconf version required.
AC_INIT(features.h) AC_INIT(features.h)
AC_CONFIG_HEADER(config.h) AC_CONFIG_HEADER(config.h)
@ -85,6 +85,20 @@ if test x"$add_ons" != x; then
fi fi
AC_CANONICAL_HOST AC_CANONICAL_HOST
# The way shlib-versions is used to generate soversions.mk uses a
# fairly simplistic model for name recognition that can't distinguish
# i486-pc-linux-gnu fully from i486-pc-gnu. So we mutate a $host_os
# of `gnu*' here to be `gnu-gnu*' just so that shlib-versions can
# tell. This doesn't get used much beyond that, so it's fairly safe.
case "$host_os" in
linux*)
;;
gnu*)
host_os=`echo $host_os | sed -e 's/gnu/gnu-gnu/'`
;;
esac
# We keep the original values in `$config_*' and never modify them, so we # We keep the original values in `$config_*' and never modify them, so we
# can write them unchanged into config.make. Everything else uses # can write them unchanged into config.make. Everything else uses
# $machine, $vendor, and $os, and changes them whenever convenient. # $machine, $vendor, and $os, and changes them whenever convenient.
@ -332,7 +346,7 @@ AC_MSG_RESULT(sysdeps/generic sysdeps/stub)
AC_PROG_INSTALL AC_PROG_INSTALL
if test "$INSTALL" = "${srcdir}/install-sh -c"; then if test "$INSTALL" = "${srcdir}/install-sh -c"; then
# The makefiles need to use a different form to find it in $srcdir. # The makefiles need to use a different form to find it in $srcdir.
INSTALL="$(..)./install-sh -c" INSTALL='$(..)./install-sh -c'
fi fi
AC_PROG_LN_S AC_PROG_LN_S
AC_CHECK_PROGS(MSGFMT, msgfmt gmsgfmt, :) AC_CHECK_PROGS(MSGFMT, msgfmt gmsgfmt, :)

View File

@ -1,21 +1,30 @@
/* Special .init and .fini section support. /* Special .init and .fini section support.
Copyright (C) 1995, 1996 Free Software Foundation, Inc. Copyright (C) 1995, 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it
modify it under the terms of the GNU Library General Public License as and/or modify it under the terms of the GNU Library General Public
published by the Free Software Foundation; either version 2 of the License as published by the Free Software Foundation; either
License, or (at your option) any later version. version 2 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful, In addition to the permissions in the GNU Library General Public
but WITHOUT ANY WARRANTY; without even the implied warranty of License, the Free Software Foundation gives you unlimited
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU permission to link the compiled version of this file with other
Library General Public License for more details. programs, and to distribute those programs without any restriction
coming from the use of this file. (The Libraty General Public
License restrictions do apply in other respects; for example, they
cover modification of the file, and distribution when not linked
into another program.)
You should have received a copy of the GNU Library General Public The GNU C Library is distributed in the hope that it will be
License along with the GNU C Library; see the file COPYING.LIB. If useful, but WITHOUT ANY WARRANTY; without even the implied warranty
not, write to the Free Software Foundation, Inc., 675 Mass Ave, of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
Cambridge, MA 02139, USA. */ GNU Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* This file is compiled into assembly code which is then surrounded by the /* This file is compiled into assembly code which is then surrounded by the
lines `cat > crtcommon.tmp <<\EOF_common' and `EOF_common' and thus lines `cat > crtcommon.tmp <<\EOF_common' and `EOF_common' and thus

View File

@ -53,8 +53,9 @@ _dl_map_object_deps (struct link_map *map,
preloads[nlist]->l_reserved = 1; preloads[nlist]->l_reserved = 1;
} }
/* Terminate the list. */ /* Terminate the lists. */
head[nlist].next = NULL; head[nlist].next = NULL;
duphead.next = NULL;
/* Start here for adding dependencies to the list. */ /* Start here for adding dependencies to the list. */
tailp = &head[nlist++]; tailp = &head[nlist++];

View File

@ -44,7 +44,7 @@
remember, if any of these versions change, the libc.so major version remember, if any of these versions change, the libc.so major version
number must change too (so avoid it)! */ number must change too (so avoid it)! */
#define _GNU_OBSTACK_INTERFACE_VERSION 1 /* vs malloc/obstack.c */ #define _GNU_OBSTACK_INTERFACE_VERSION 2 /* vs malloc/obstack.c */
#define _GNU_REGEX_INTERFACE_VERSION 1 /* vs posix/regex.c */ #define _GNU_REGEX_INTERFACE_VERSION 1 /* vs posix/regex.c */
#define _GNU_GLOB_INTERFACE_VERSION 1 /* vs posix/glob.c */ #define _GNU_GLOB_INTERFACE_VERSION 1 /* vs posix/glob.c */

View File

@ -1,20 +1,29 @@
/* Copyright (C) 1996 Free Software Foundation, Inc. /* Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version. License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful, In addition to the permissions in the GNU Library General Public
but WITHOUT ANY WARRANTY; without even the implied warranty of License, the Free Software Foundation gives you unlimited
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU permission to link the compiled version of this file with other
Library General Public License for more details. programs, and to distribute those programs without any restriction
coming from the use of this file. (The Libraty General Public
License restrictions do apply in other respects; for example, they
cover modification of the file, and distribution when not linked
into another program.)
You should have received a copy of the GNU Library General Public The GNU C Library is distributed in the hope that it will be useful,
License along with the GNU C Library; see the file COPYING.LIB. If but WITHOUT ANY WARRANTY; without even the implied warranty of
not, write to the Free Software Foundation, Inc., 675 Mass Ave, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Cambridge, MA 02139, USA. */ Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <sys/stat.h> #include <sys/stat.h>

View File

@ -1,20 +1,29 @@
/* Copyright (C) 1996 Free Software Foundation, Inc. /* Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version. License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful, In addition to the permissions in the GNU Library General Public
but WITHOUT ANY WARRANTY; without even the implied warranty of License, the Free Software Foundation gives you unlimited
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU permission to link the compiled version of this file with other
Library General Public License for more details. programs, and to distribute those programs without any restriction
coming from the use of this file. (The Libraty General Public
License restrictions do apply in other respects; for example, they
cover modification of the file, and distribution when not linked
into another program.)
You should have received a copy of the GNU Library General Public The GNU C Library is distributed in the hope that it will be useful,
License along with the GNU C Library; see the file COPYING.LIB. If but WITHOUT ANY WARRANTY; without even the implied warranty of
not, write to the Free Software Foundation, Inc., 675 Mass Ave, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Cambridge, MA 02139, USA. */ Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <sys/stat.h> #include <sys/stat.h>

View File

@ -1,20 +1,30 @@
/* Copyright (C) 1995, 1996 Free Software Foundation, Inc. /* Copyright (C) 1995, 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version. License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful, In addition to the permissions in the GNU Library General Public
but WITHOUT ANY WARRANTY; without even the implied warranty of License, the Free Software Foundation gives you unlimited
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU permission to link the compiled version of this file with other
Library General Public License for more details. programs, and to distribute those programs without any restriction
coming from the use of this file. (The Libraty General Public
License restrictions do apply in other respects; for example, they
cover modification of the file, and distribution when not linked
into another program.)
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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
#include <sys/types.h> #include <sys/types.h>
#include <sys/stat.h> #include <sys/stat.h>

View File

@ -1,20 +1,29 @@
/* Copyright (C) 1996 Free Software Foundation, Inc. /* Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version. License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful, In addition to the permissions in the GNU Library General Public
but WITHOUT ANY WARRANTY; without even the implied warranty of License, the Free Software Foundation gives you unlimited
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU permission to link the compiled version of this file with other
Library General Public License for more details. programs, and to distribute those programs without any restriction
coming from the use of this file. (The Libraty General Public
License restrictions do apply in other respects; for example, they
cover modification of the file, and distribution when not linked
into another program.)
You should have received a copy of the GNU Library General Public The GNU C Library is distributed in the hope that it will be useful,
License along with the GNU C Library; see the file COPYING.LIB. If but WITHOUT ANY WARRANTY; without even the implied warranty of
not, write to the Free Software Foundation, Inc., 675 Mass Ave, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Cambridge, MA 02139, USA. */ Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <sys/stat.h> #include <sys/stat.h>

View File

@ -303,6 +303,9 @@ extern int _IO_vfprintf __P((_IO_FILE*, const char*, _IO_va_list));
extern _IO_ssize_t _IO_padn __P((_IO_FILE *, int, _IO_ssize_t)); extern _IO_ssize_t _IO_padn __P((_IO_FILE *, int, _IO_ssize_t));
extern _IO_size_t _IO_sgetn __P((_IO_FILE *, void*, _IO_size_t)); extern _IO_size_t _IO_sgetn __P((_IO_FILE *, void*, _IO_size_t));
extern _IO_fpos_t _IO_seekoff __P((_IO_FILE*, _IO_off_t, int, int));
extern _IO_fpos_t _IO_seekpos __P((_IO_FILE*, _IO_fpos_t, int));
extern void _IO_free_backup_area __P((_IO_FILE*)); extern void _IO_free_backup_area __P((_IO_FILE*));
#ifdef __cplusplus #ifdef __cplusplus

View File

@ -1,4 +1,4 @@
/* /*
Copyright (C) 1993 Free Software Foundation Copyright (C) 1993 Free Software Foundation
This file is part of the GNU IO Library. This library is free This file is part of the GNU IO Library. This library is free
@ -32,8 +32,6 @@ typedef void (*_IO_free_type) __P((void*));
struct _IO_str_fields struct _IO_str_fields
{ {
/* The current length is max(_len, _IO_write_ptr-_IO_write_base). */
_IO_size_t _len;
_IO_alloc_type _allocate_buffer; _IO_alloc_type _allocate_buffer;
_IO_free_type _free_buffer; _IO_free_type _free_buffer;
}; };

View File

@ -26,7 +26,31 @@ the executable file might be covered by the GNU General Public License. */
#include "libioP.h" #include "libioP.h"
#include <string.h> #include <string.h>
#define LEN(fp) (((_IO_strfile*)(fp))->_s._len) #if 0
/* The following definitions are for exposition only.
They map the terminlogy used in the ANSI/ISO C++ draft standard
to the implementation. */
/* allocated: set when a dynamic array object has been allocated, and
hence should be freed by the destructor for the strstreambuf object. */
#define ALLOCATED(FP) ((FP)->_f._IO_buf_base && DYNAMIC(FP))
/* constant: set when the array object has const elements,
so the output sequence cannot be written. */
#define CONSTANT(FP) ((FP)->_f._IO_file_flags & _IO_NO_WRITES)
/* alsize: the suggested minimum size for a dynamic array object. */
#define ALSIZE(FP) ??? /* not stored */
/* palloc: points to the function to call to allocate a dynamic array object.*/
#define PALLOC(FP) \
((FP)->_s._allocate_buffer == default_alloc ? 0 : (FP)->_s._allocate_buffer)
/* pfree: points to the function to call to free a dynamic array object. */
#define PFREE(FP) \
((FP)->_s._free_buffer == default_free ? 0 : (FP)->_s._free_buffer)
#endif
#ifdef TODO #ifdef TODO
/* An "unbounded buffer" is when a buffer is supplied, but with no /* An "unbounded buffer" is when a buffer is supplied, but with no
@ -44,27 +68,17 @@ DEFUN(_IO_str_init_static, (fp, ptr, size, pstart),
{ {
/* If size is negative 'the characters are assumed to /* If size is negative 'the characters are assumed to
continue indefinitely.' This is kind of messy ... */ continue indefinitely.' This is kind of messy ... */
#if 1
int s; int s;
size = 512; size = 512;
/* Try increasing powers of 2, as long as we don't wrap around. /* Try increasing powers of 2, as long as we don't wrap around. */
This can lose in pathological cases (ptr near the end for (; s = 2*size, s > 0 && ptr + s > ptr && s < 0x4000000L; )
of the address space). A better solution might be to
adjust the size on underflow/overflow. FIXME. */
for ( ; s = 2*size, s > 0 && ptr + s > ptr && s < 0x4000000L; )
size = s; size = s;
size = s; /* Try increasing size as much as we can without wrapping around. */
#else for (s = size >> 1; s > 0; s >>= 1)
/* The following semi-portable kludge assumes that {
sizeof(unsigned long) == sizeof(char*). Hence, if (ptr + size + s > ptr)
(unsigned long)(-1) should be the largest possible address. */ size += s;
unsigned long highest = (unsigned long)(-1); }
/* Pointers are signed on some brain-damaged systems, in
which case we divide by two to get the maximum signed address. */
if ((char*)highest < ptr)
highest >>= 1;
size = (char*)highest - ptr;
#endif
} }
_IO_setb(fp, ptr, ptr+size, 0); _IO_setb(fp, ptr, ptr+size, 0);
@ -83,7 +97,6 @@ DEFUN(_IO_str_init_static, (fp, ptr, size, pstart),
fp->_IO_write_end = ptr; fp->_IO_write_end = ptr;
fp->_IO_read_end = ptr+size; fp->_IO_read_end = ptr+size;
} }
LEN(fp) = size;
/* A null _allocate_buffer function flags the strfile as being static. */ /* A null _allocate_buffer function flags the strfile as being static. */
(((_IO_strfile*)(fp))->_s._allocate_buffer) = (_IO_alloc_type)0; (((_IO_strfile*)(fp))->_s._allocate_buffer) = (_IO_alloc_type)0;
} }
@ -101,34 +114,25 @@ DEFUN(_IO_str_overflow, (fp, c),
register _IO_FILE* fp AND int c) register _IO_FILE* fp AND int c)
{ {
int flush_only = c == EOF; int flush_only = c == EOF;
_IO_size_t pos = fp->_IO_write_ptr - fp->_IO_write_base; _IO_size_t pos;
_IO_size_t get_pos = fp->_IO_read_ptr - fp->_IO_read_base;
if (fp->_flags & _IO_NO_WRITES) if (fp->_flags & _IO_NO_WRITES)
return flush_only ? 0 : EOF; return flush_only ? 0 : EOF;
if (pos > LEN(fp)) LEN(fp) = pos;
if ((fp->_flags & _IO_TIED_PUT_GET) && !(fp->_flags & _IO_CURRENTLY_PUTTING)) if ((fp->_flags & _IO_TIED_PUT_GET) && !(fp->_flags & _IO_CURRENTLY_PUTTING))
{ {
pos = get_pos;
fp->_flags |= _IO_CURRENTLY_PUTTING; fp->_flags |= _IO_CURRENTLY_PUTTING;
get_pos = LEN(fp); fp->_IO_write_ptr = fp->_IO_read_ptr;
fp->_IO_read_ptr = fp->_IO_read_end;
} }
if (pos >= (_IO_size_t) (_IO_blen(fp) + flush_only)) pos = fp->_IO_write_ptr - fp->_IO_write_base;
if (pos >= _IO_blen(fp) + flush_only)
{ {
if (fp->_flags & _IO_USER_BUF) /* not allowed to enlarge */ if (fp->_flags & _IO_USER_BUF) /* not allowed to enlarge */
{ return EOF;
#ifdef TODO
if (indefinite size)
{
fp->_IO_buf_end += 512;
}
else
#endif
return EOF;
}
else else
{ {
char *new_buf; char *new_buf;
_IO_size_t new_size = 2 * _IO_blen(fp); char *old_buf = fp->_IO_buf_base;
_IO_size_t new_size = 2 * _IO_blen(fp) + 100;
new_buf new_buf
= (char*)(*((_IO_strfile*)fp)->_s._allocate_buffer)(new_size); = (char*)(*((_IO_strfile*)fp)->_s._allocate_buffer)(new_size);
if (new_buf == NULL) if (new_buf == NULL)
@ -136,31 +140,32 @@ DEFUN(_IO_str_overflow, (fp, c),
/* __ferror(fp) = 1; */ /* __ferror(fp) = 1; */
return EOF; return EOF;
} }
memcpy(new_buf, fp->_IO_buf_base, _IO_blen(fp));
#if 0
if (lenp == &LEN(fp)) /* use '\0'-filling */
memset(new_buf + pos, 0, blen() - pos);
#endif
if (fp->_IO_buf_base) if (fp->_IO_buf_base)
{ {
memcpy(new_buf, old_buf, _IO_blen(fp));
(*((_IO_strfile*)fp)->_s._free_buffer)(fp->_IO_buf_base); (*((_IO_strfile*)fp)->_s._free_buffer)(fp->_IO_buf_base);
/* Make sure _IO_setb won't try to delete _IO_buf_base. */ /* Make sure _IO_setb won't try to delete _IO_buf_base. */
fp->_IO_buf_base = NULL; fp->_IO_buf_base = NULL;
} }
#if 0
if (lenp == &LEN(fp)) /* use '\0'-filling */
memset(new_buf + pos, 0, blen() - pos);
#endif
_IO_setb(fp, new_buf, new_buf + new_size, 1); _IO_setb(fp, new_buf, new_buf + new_size, 1);
fp->_IO_read_base = new_buf + (fp->_IO_read_base - old_buf);
fp->_IO_read_ptr = new_buf + (fp->_IO_read_ptr - old_buf);
fp->_IO_read_end = new_buf + (fp->_IO_read_end - old_buf);
fp->_IO_write_ptr = new_buf + (fp->_IO_write_ptr - old_buf);
fp->_IO_write_base = new_buf; fp->_IO_write_base = new_buf;
fp->_IO_write_end = fp->_IO_buf_end;
} }
fp->_IO_write_end = fp->_IO_buf_end;
} }
fp->_IO_write_ptr = fp->_IO_buf_base + pos;
fp->_IO_read_base = fp->_IO_buf_base;
fp->_IO_read_ptr = fp->_IO_buf_base + get_pos;
fp->_IO_read_end = fp->_IO_buf_base + LEN(fp);
if (!flush_only) if (!flush_only)
*fp->_IO_write_ptr++ = (unsigned char) c; *fp->_IO_write_ptr++ = (unsigned char) c;
if (fp->_IO_write_ptr > fp->_IO_read_end)
fp->_IO_read_end = fp->_IO_write_ptr;
return c; return c;
} }
@ -168,28 +173,29 @@ int
DEFUN(_IO_str_underflow, (fp), DEFUN(_IO_str_underflow, (fp),
register _IO_FILE* fp) register _IO_FILE* fp)
{ {
_IO_size_t ppos = fp->_IO_write_ptr - fp->_IO_write_base; if (fp->_IO_write_ptr > fp->_IO_read_end)
if (ppos > LEN(fp)) LEN(fp) = ppos; fp->_IO_read_end = fp->_IO_write_ptr;
if ((fp->_flags & _IO_TIED_PUT_GET) && (fp->_flags & _IO_CURRENTLY_PUTTING)) if ((fp->_flags & _IO_TIED_PUT_GET) && (fp->_flags & _IO_CURRENTLY_PUTTING))
{ {
fp->_flags &= ~_IO_CURRENTLY_PUTTING; fp->_flags &= ~_IO_CURRENTLY_PUTTING;
fp->_IO_read_ptr = fp->_IO_write_ptr;
fp->_IO_write_ptr = fp->_IO_write_end; fp->_IO_write_ptr = fp->_IO_write_end;
} }
fp->_IO_read_end = fp->_IO_read_base + LEN(fp);
if (fp->_IO_read_ptr < fp->_IO_read_end) if (fp->_IO_read_ptr < fp->_IO_read_end)
return *fp->_IO_read_ptr; return *fp->_IO_read_ptr;
else else
return EOF; return EOF;
} }
/* The size of the valid part of the buffer. */
_IO_ssize_t _IO_ssize_t
DEFUN(_IO_str_count, (fp), DEFUN(_IO_str_count, (fp),
register _IO_FILE *fp) register _IO_FILE *fp)
{ {
_IO_ssize_t put_len = fp->_IO_write_ptr - fp->_IO_write_base; return (fp->_IO_write_ptr > fp->_IO_read_end ? fp->_IO_write_ptr
if (put_len < (_IO_ssize_t) LEN(fp)) : fp->_IO_read_end)
put_len = LEN(fp); - fp->_IO_read_base;
return put_len;
} }
_IO_pos_t _IO_pos_t
@ -236,7 +242,6 @@ DEFUN(_IO_str_seekoff, (fp, offset, dir, mode),
} }
if (offset < 0 || (_IO_ssize_t)offset > cur_size) if (offset < 0 || (_IO_ssize_t)offset > cur_size)
return EOF; return EOF;
LEN(fp) = cur_size;
fp->_IO_write_ptr = fp->_IO_write_base + offset; fp->_IO_write_ptr = fp->_IO_write_base + offset;
new_pos = offset; new_pos = offset;
} }

View File

@ -12,9 +12,9 @@
# Library General Public License for more details. # Library General Public License for more details.
# You should have received a copy of the GNU Library General Public # You should have received a copy of the GNU Library General Public
# License along with the GNU C Library; see the file COPYING.LIB. If # License along with the GNU C Library; see the file COPYING.LIB. If not,
# not, write to the Free Software Foundation, Inc., # write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # Boston, MA 02111-1307, USA.
# #
# Sub-makefile for login portion of the library. # Sub-makefile for login portion of the library.
@ -24,9 +24,10 @@ subdir := login
headers := utmp.h utmpbits.h lastlog.h pty.h headers := utmp.h utmpbits.h lastlog.h pty.h
routines := setutent endutent getutent getutid getutline pututline \ routines := getutent getutent_r getutid getutline getutid_r getutline_r \
setutent_r endutent_r getutent_r getutid_r getutline_r \ utmp_file utmp_db
pututline_r
distribtue := utmp-private.h
# Build the -lutil library with these extra functions. # Build the -lutil library with these extra functions.
extra-libs := libutil extra-libs := libutil

View File

@ -1,27 +1,27 @@
/* Copyright (C) 1996 Free Software Foundation, Inc. /* Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version. License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful, The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details. Library General Public License for more details.
You should have received a copy of the GNU Library General Public You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If License along with the GNU C Library; see the file COPYING.LIB. If not,
not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */ Boston, MA 02111-1307, USA. */
#include <utmp.h> #include <utmp.h>
/* The global data defined in setutent.c. */ /* Local buffer to store the result. */
extern struct utmp_data __utmp_data; static struct utmp buffer;
struct utmp * struct utmp *
@ -29,7 +29,7 @@ getutent (void)
{ {
struct utmp *result; struct utmp *result;
if (__getutent_r (&result, &__utmp_data) < 0) if (__getutent_r (&buffer, &result) < 0)
return NULL; return NULL;
return result; return result;

View File

@ -1,51 +1,196 @@
/* Copyright (C) 1996 Free Software Foundation, Inc. /* Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. Contributed by Ulrich Drepper <drepper@cygnus.com>
and Paul Janzen <pcj@primenet.com>, 1996.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version. License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful, The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details. Library General Public License for more details.
You should have received a copy of the GNU Library General Public You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If License along with the GNU C Library; see the file COPYING.LIB. If not,
not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */ Boston, MA 02111-1307, USA. */
#include <unistd.h> #include <assert.h>
#include <db.h>
#include <fcntl.h>
#include <libc-lock.h>
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <utmp.h> #include <utmp.h>
#include <gnu/lib-names.h>
#include <sys/stat.h>
#include "utmp-private.h"
#include "../elf/link.h"
int /* The various backends we have. */
__getutent_r (struct utmp **utmp, struct utmp_data *utmp_data) static int __setutent_unknown (int reset);
static int __getutent_r_unknown (struct utmp *buffer, struct utmp **result);
static void __pututline_unknown (const struct utmp *data);
static void __endutent_unknown (void);
/* We have three jump tables: unknown, db, or file. */
static struct utfuncs unknown_functions =
{ {
/* Open utmp file if not already done. */ __setutent_unknown,
if (utmp_data->ut_fd == -1) __getutent_r_unknown,
NULL,
NULL,
__pututline_unknown,
__endutent_unknown,
NULL
};
/* Currently selected backend. */
struct utfuncs *__libc_utmp_jump_table = &unknown_functions;
/* The tables from the services. */
extern struct utfuncs __libc_utmp_db_functions;
extern struct utfuncs __libc_utmp_file_functions;
/* We need to protect the opening of the file. */
__libc_lock_define_initialized (, __libc_utmp_lock)
void
__setutent (void)
{
__libc_lock_lock (__libc_utmp_lock);
(void) (*__libc_utmp_jump_table->setutent) (1);
__libc_lock_unlock (__libc_utmp_lock);
}
weak_alias (__setutent, setutent)
static int
__setutent_unknown (int reset)
{
/* We have to test whether it is still not decided which backend to use. */
assert (__libc_utmp_jump_table == &unknown_functions);
/* See whether utmp db file exists. */
if ((*__libc_utmp_db_functions.setutent) (reset))
__libc_utmp_jump_table = &__libc_utmp_db_functions;
else
{ {
setutent_r (utmp_data); /* Either the db file does not exist or we have other
if (utmp_data->ut_fd == -1) problems. So use the normal file. */
return -1; (*__libc_utmp_file_functions.setutent) (reset);
__libc_utmp_jump_table = &__libc_utmp_file_functions;
} }
/* Position file correctly. */
if (lseek (utmp_data->ut_fd, utmp_data->loc_utmp, SEEK_SET) == -1)
return -1;
/* Read the next entry. */
if (read (utmp_data->ut_fd, &utmp_data->ubuf, sizeof (struct utmp))
!= sizeof (struct utmp))
return -1;
/* Update position pointer. */
utmp_data->loc_utmp += sizeof (struct utmp);
*utmp = &utmp_data->ubuf;
return 0; return 0;
} }
void
__endutent (void)
{
__libc_lock_lock (__libc_utmp_lock);
(*__libc_utmp_jump_table->endutent) ();
__libc_lock_unlock (__libc_utmp_lock);
}
weak_alias (__endutent, endutent)
static void
__endutent_unknown (void)
{
/* Huh, how do we came here? Nothing to do. */
}
int
__getutent_r (struct utmp *buffer, struct utmp **result)
{
int retval;
__libc_lock_lock (__libc_utmp_lock);
retval = (*__libc_utmp_jump_table->getutent_r) (buffer, result);
__libc_lock_unlock (__libc_utmp_lock);
return retval;
}
weak_alias (__getutent_r, getutent_r) weak_alias (__getutent_r, getutent_r)
static int
__getutent_r_unknown (struct utmp *buffer, struct utmp **result)
{
/* It is not yet initialized. */
__setutent_unknown (0);
return (*__libc_utmp_jump_table->getutent_r) (buffer, result);
}
void
__pututline (const struct utmp *data)
{
__libc_lock_lock (__libc_utmp_lock);
(*__libc_utmp_jump_table->pututline) (data);
__libc_lock_unlock (__libc_utmp_lock);
}
static void
__pututline_unknown (const struct utmp *data)
{
/* It is not yet initialized. */
__setutent_unknown (0);
(*__libc_utmp_jump_table->pututline) (data);
}
int
__utmpname (const char *file)
{
int result = -1;
__libc_lock_lock (__libc_utmp_lock);
/* Close the old file. */
(*__libc_utmp_jump_table->endutent) ();
/* Store new names. */
if ((*__libc_utmp_file_functions.utmpname) (file) == 0
&& !(*__libc_utmp_db_functions.utmpname) (file) == 0)
{
/* Try to find out whether we are supposed to work with a db
file or not. Do this by looking for the extension ".db". */
const char *ext = strrchr (file, '.');
if (ext != NULL && strcmp (ext, ".db") == 0)
__libc_utmp_jump_table = &__libc_utmp_db_functions;
else
__libc_utmp_jump_table = &unknown_functions;
result = 0;
}
__libc_lock_unlock (__libc_utmp_lock);
return result;
}
weak_alias (__utmpname, utmpname)

View File

@ -1,27 +1,27 @@
/* Copyright (C) 1996 Free Software Foundation, Inc. /* Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version. License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful, The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details. Library General Public License for more details.
You should have received a copy of the GNU Library General Public You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If License along with the GNU C Library; see the file COPYING.LIB. If not,
not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */ Boston, MA 02111-1307, USA. */
#include <utmp.h> #include <utmp.h>
/* The global data defined in setutent.c. */ /* Local buffer to store the result. */
extern struct utmp_data __utmp_data; static struct utmp buffer;
struct utmp * struct utmp *
@ -29,8 +29,8 @@ getutid (const struct utmp *id)
{ {
struct utmp *result; struct utmp *result;
if (__getutid_r (id, &result, &__utmp_data) < 0) if (__getutid_r (id, &buffer, &result) < 0)
return NULL; return NULL;
return (struct utmp *) result; return result;
} }

View File

@ -1,35 +1,45 @@
/* Copyright (C) 1996 Free Software Foundation, Inc. /* Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. Contributed by Ulrich Drepper <drepper@cygnus.com>
and Paul Janzen <pcj@primenet.com>, 1996.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version. License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful, The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details. Library General Public License for more details.
You should have received a copy of the GNU Library General Public You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If License along with the GNU C Library; see the file COPYING.LIB. If not,
not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */ Boston, MA 02111-1307, USA. */
#include <errno.h> #include <errno.h>
#include <libc-lock.h>
#include <string.h> #include <string.h>
#include <unistd.h> #include <unistd.h>
#include <utmp.h> #include <utmp.h>
#include "utmp-private.h"
/* We have to use the lock in getutent_r.c. */
__libc_lock_define (extern, __libc_utmp_lock)
/* The jump table is also in getutent_r.c. */
extern struct utfuncs *__libc_utmp_jump_table;
/* For implementing this function we don't use the getutent_r function
because we can avoid the reposition on every new entry this way. */
int int
__getutid_r (const struct utmp *id, struct utmp **utmp, __getutid_r (const struct utmp *id, struct utmp *buffer, struct utmp **result)
struct utmp_data *utmp_data)
{ {
#if (_HAVE_UT_ID - 0) && (_HAVE_UT_TYPE - 0) #if (_HAVE_UT_ID - 0) && (_HAVE_UT_TYPE - 0)
int retval = -1;
/* Test whether ID has any of the legal types. */ /* Test whether ID has any of the legal types. */
if (id->ut_type != RUN_LVL && id->ut_type != BOOT_TIME if (id->ut_type != RUN_LVL && id->ut_type != BOOT_TIME
&& id->ut_type != OLD_TIME && id->ut_type != NEW_TIME && id->ut_type != OLD_TIME && id->ut_type != NEW_TIME
@ -38,77 +48,21 @@ __getutid_r (const struct utmp *id, struct utmp **utmp,
/* No, using '<' and '>' for the test is not possible. */ /* No, using '<' and '>' for the test is not possible. */
{ {
__set_errno (EINVAL); __set_errno (EINVAL);
*result = NULL;
return -1; return -1;
} }
/* Open utmp file if not already done. */ __libc_lock_lock (__libc_utmp_lock);
if (utmp_data->ut_fd == -1)
{
setutent_r (utmp_data);
if (utmp_data->ut_fd == -1)
return -1;
}
/* Position file correctly. */ /* Not yet initialized. */
if (lseek (utmp_data->ut_fd, utmp_data->loc_utmp, SEEK_SET) == -1) if ((*__libc_utmp_jump_table->setutent) (0))
return -1; retval = (*__libc_utmp_jump_table->getutid_r) (id, buffer, result);
if (id->ut_type == RUN_LVL || id->ut_type == BOOT_TIME
|| id->ut_type == OLD_TIME || id->ut_type == NEW_TIME)
{
/* Search for next entry with type RUN_LVL, BOOT_TIME,
OLD_TIME, or NEW_TIME. */
while (1)
{
/* Read the next entry. */
if (read (utmp_data->ut_fd, &utmp_data->ubuf, sizeof (struct utmp))
!= sizeof (struct utmp))
{
utmp_data->loc_utmp = 0; /* Mark loc_utmp invalid. */
__set_errno (ESRCH);
return -1;
}
/* Update position pointer. */
utmp_data->loc_utmp += sizeof (struct utmp);
if (id->ut_type == utmp_data->ubuf.ut_type)
break;
}
}
else else
{ *result = NULL;
/* Search for the next entry with the specified ID and with type
INIT_PROCESS, LOGIN_PROCESS, USER_PROCESS, or DEAD_PROCESS. */
while (1) __libc_lock_unlock (__libc_utmp_lock);
{
/* Read the next entry. */
if (read (utmp_data->ut_fd, &utmp_data->ubuf, sizeof (struct utmp))
!= sizeof (struct utmp))
{
utmp_data->loc_utmp = 0; /* Mark loc_utmp invalid. */
__set_errno (ESRCH);
return -1;
}
/* Update position pointer. */ return retval;
utmp_data->loc_utmp += sizeof (struct utmp);
if (( utmp_data->ubuf.ut_type == INIT_PROCESS
|| utmp_data->ubuf.ut_type == LOGIN_PROCESS
|| utmp_data->ubuf.ut_type == USER_PROCESS
|| utmp_data->ubuf.ut_type == DEAD_PROCESS)
&& (strncmp (utmp_data->ubuf.ut_id, id->ut_id, sizeof id->ut_id)
== 0))
break;
}
}
*utmp = &utmp_data->ubuf;
return 0;
#else /* !_HAVE_UT_ID && !_HAVE_UT_TYPE */ #else /* !_HAVE_UT_ID && !_HAVE_UT_TYPE */
__set_errno (ENOSYS); __set_errno (ENOSYS);
return -1; return -1;

View File

@ -1,27 +1,27 @@
/* Copyright (C) 1996 Free Software Foundation, Inc. /* Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version. License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful, The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details. Library General Public License for more details.
You should have received a copy of the GNU Library General Public You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If License along with the GNU C Library; see the file COPYING.LIB. If not,
not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */ Boston, MA 02111-1307, USA. */
#include <utmp.h> #include <utmp.h>
/* The global data defined in setutent.c. */ /* Local buffer to store the result. */
extern struct utmp_data __utmp_data; static struct utmp buffer;
struct utmp * struct utmp *
@ -29,8 +29,8 @@ getutline (const struct utmp *line)
{ {
struct utmp *result; struct utmp *result;
if (__getutline_r (line, &result, &__utmp_data) < 0) if (__getutline_r (line, &buffer, &result) < 0)
return NULL; return NULL;
return (struct utmp *) result; return result;
} }

View File

@ -1,74 +1,55 @@
/* Copyright (C) 1996 Free Software Foundation, Inc. /* Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. Contributed by Ulrich Drepper <drepper@cygnus.com>
and Paul Janzen <pcj@primenet.com>, 1996.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version. License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful, The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details. Library General Public License for more details.
You should have received a copy of the GNU Library General Public You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If License along with the GNU C Library; see the file COPYING.LIB. If not,
not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */ Boston, MA 02111-1307, USA. */
#include <errno.h> #include <errno.h>
#include <libc-lock.h>
#include <string.h> #include <string.h>
#include <unistd.h> #include <unistd.h>
#include <utmp.h> #include <utmp.h>
#include "utmp-private.h"
/* We have to use the lock in getutent_r.c. */
__libc_lock_define (extern, __libc_utmp_lock)
/* The jump table is also in getutent_r.c. */
extern struct utfuncs *__libc_utmp_jump_table;
/* For implementing this function we don't use the getutent_r function
because we can avoid the reposition on every new entry this way. */
int int
__getutline_r (const struct utmp *line, struct utmp **utmp, __getutline_r (const struct utmp *line, struct utmp *buffer,
struct utmp_data *utmp_data) struct utmp **result)
{ {
/* Open utmp file if not already done. */ int retval = -1;
if (utmp_data->ut_fd == -1)
{
__setutent_r (utmp_data);
if (utmp_data->ut_fd == -1)
return -1;
}
/* Position file correctly. */ __libc_lock_lock (__libc_utmp_lock);
if (lseek (utmp_data->ut_fd, utmp_data->loc_utmp, SEEK_SET) == -1)
return -1;
while (1) /* Not yet initialized. */
{ if ((*__libc_utmp_jump_table->setutent) (0))
/* Read the next entry. */ retval = (*__libc_utmp_jump_table->getutline_r) (line, buffer, result);
if (read (utmp_data->ut_fd, &utmp_data->ubuf, sizeof (struct utmp)) else
!= sizeof (struct utmp)) *result = NULL;
{
utmp_data->loc_utmp = 0; /* Mark UTMP_DATA->ubuf invalid. */
__set_errno (ESRCH);
return -1;
}
/* Update position pointer. */ __libc_lock_unlock (__libc_utmp_lock);
utmp_data->loc_utmp += sizeof (struct utmp);
if ( return retval;
#if _HAVE_UT_TYPE - 0
(utmp_data->ubuf.ut_type == USER_PROCESS
|| utmp_data->ubuf.ut_type == LOGIN_PROCESS)
&&
#endif
! strncmp (line->ut_line, utmp_data->ubuf.ut_line,
sizeof line->ut_line))
/* Stop if we found a user or login entry. */
break;
}
*utmp = &utmp_data->ubuf;
return 0;
} }
weak_alias (__getutline_r, getutline_r) weak_alias (__getutline_r, getutline_r)

View File

@ -1,21 +1,21 @@
/* Copyright (C) 1996 Free Software Foundation, Inc. /* Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version. License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful, The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details. Library General Public License for more details.
You should have received a copy of the GNU Library General Public You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If License along with the GNU C Library; see the file COPYING.LIB. If not,
not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */ Boston, MA 02111-1307, USA. */
#include <errno.h> #include <errno.h>
#include <limits.h> #include <limits.h>
@ -43,8 +43,8 @@ tty_name (int fd, char **tty, size_t buf_len)
rv = ttyname_r (fd, buf, buf_len); rv = ttyname_r (fd, buf, buf_len);
if (rv < 0 || memchr (buf, '\0', buf_len)) if (rv < 0 || memchr (buf, '\0', buf_len))
/* We either got an error, or we succeeded and the returned name fit /* We either got an error, or we succeeded and the
in the buffer. */ returned name fit in the buffer. */
break; break;
/* Try again with a longer buffer. */ /* Try again with a longer buffer. */
@ -68,9 +68,9 @@ tty_name (int fd, char **tty, size_t buf_len)
} }
if (rv == 0) if (rv == 0)
*tty = buf; /* Return buffer to the user. */ *tty = buf; /* Return buffer to the user. */
else if (buf != *tty) else if (buf != *tty)
free (buf); /* Free what we malloced when returning an error. */ free (buf); /* Free what we malloced when returning an error. */
return rv; return rv;
} }
@ -86,8 +86,8 @@ login (const struct utmp *ut)
char *tty = _tty; char *tty = _tty;
int found_tty; int found_tty;
const char *ttyp; const char *ttyp;
struct utmp_data data = { -1 };
struct utmp copy = *ut; struct utmp copy = *ut;
struct utmp utbuf;
/* Fill in those fields we supply. */ /* Fill in those fields we supply. */
#if _HAVE_UT_TYPE - 0 #if _HAVE_UT_TYPE - 0
@ -118,26 +118,16 @@ login (const struct utmp *ut)
struct utmp *old; struct utmp *old;
/* Open UTMP file. */ /* Open UTMP file. */
setutent_r (&data); setutent ();
/* Read the record. */ /* Read the record. */
if (getutline_r (&copy, &old, &data) >= 0) getutline_r (&copy, &utbuf, &old);
{
#if _HAVE_UT_TYPE - 0 /* Write the entry. */
/* We have to fake the old entry because this `login' pututline (&copy);
function does not fit well into the UTMP file
handling scheme. */
old->ut_type = copy.ut_type;
#endif
pututline_r (&copy, &data);
}
else if (errno == ESRCH)
/* We didn't find anything. pututline_r will add UT at the end
of the file in this case. */
pututline_r (&copy, &data);
/* Close UTMP file. */ /* Close UTMP file. */
endutent_r (&data); endutent ();
} }
if (tty != _tty) if (tty != _tty)
@ -147,23 +137,18 @@ login (const struct utmp *ut)
/* Update the WTMP file. Here we have to add a new entry. */ /* Update the WTMP file. Here we have to add a new entry. */
if (utmpname (_PATH_WTMP) != 0) if (utmpname (_PATH_WTMP) != 0)
{ {
struct utmp *up;
/* Open the WTMP file. */ /* Open the WTMP file. */
setutent_r (&data); setutent ();
/* Position at end of file. */ /* Position at end of file. */
data.loc_utmp = lseek (data.ut_fd, 0, SEEK_END); while (! getutent_r (&utbuf, &up));
if (data.loc_utmp != -1)
{ /* Write the new entry. */
#if _HAVE_UT_TYPE - 0 pututline (&copy);
/* We have to fake the old entry because this `login'
function does not fit well into the UTMP file handling
scheme. */
data.ubuf.ut_type = copy.ut_type;
#endif
pututline_r (&copy, &data);
}
/* Close WTMP file. */ /* Close WTMP file. */
endutent_r (&data); endutent ();
} }
} }

View File

@ -25,8 +25,7 @@ Boston, MA 02111-1307, USA. */
int int
logout (const char *line) logout (const char *line)
{ {
struct utmp_data data = { ut_fd: -1 }; struct utmp tmp, utbuf;
struct utmp tmp;
struct utmp *ut; struct utmp *ut;
int result = 0; int result = 0;
@ -35,7 +34,7 @@ logout (const char *line)
return 0; return 0;
/* Open UTMP file. */ /* Open UTMP file. */
setutent_r (&data); setutent ();
/* Fill in search information. */ /* Fill in search information. */
#if _HAVE_UT_TYPE - 0 #if _HAVE_UT_TYPE - 0
@ -44,7 +43,7 @@ logout (const char *line)
strncpy (tmp.ut_line, line, sizeof tmp.ut_line); strncpy (tmp.ut_line, line, sizeof tmp.ut_line);
/* Read the record. */ /* Read the record. */
if (getutline_r (&tmp, &ut, &data) >= 0) if (getutline_r (&tmp, &utbuf, &ut) >= 0)
{ {
/* Clear information about who & from where. */ /* Clear information about who & from where. */
bzero (ut->ut_name, sizeof ut->ut_name); bzero (ut->ut_name, sizeof ut->ut_name);
@ -57,12 +56,12 @@ logout (const char *line)
time (&ut->ut_time); time (&ut->ut_time);
#endif #endif
if (pututline_r (ut, &data) >= 0) if (pututline (ut) >= 0)
result = 1; result = 1;
} }
/* Close UTMP file. */ /* Close UTMP file. */
endutent_r (&data); endutent ();
return result; return result;
} }

View File

@ -1,21 +1,21 @@
/* Copyright (C) 1996 Free Software Foundation, Inc. /* Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version. License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful, The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details. Library General Public License for more details.
You should have received a copy of the GNU Library General Public You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If License along with the GNU C Library; see the file COPYING.LIB. If not,
not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */ Boston, MA 02111-1307, USA. */
#include <errno.h> #include <errno.h>
#include <string.h> #include <string.h>

41
login/utmp-private.h Normal file
View File

@ -0,0 +1,41 @@
/* Internal definitions and declarations for UTMP functions.
Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>
and Paul Janzen <pcj@primenet.com>, 1996.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#ifndef _UTMP_PRIVATE_H
#define _UTMP_PRIVATE_H 1
#include <utmp.h>
/* The extra `int' argument for each function shows whether locking is
wanted or not. */
struct utfuncs
{
int (*setutent) (int);
int (*getutent_r) (struct utmp *, struct utmp **);
int (*getutid_r) (const struct utmp *, struct utmp *, struct utmp **);
int (*getutline_r) (const struct utmp *, struct utmp *, struct utmp **);
struct utmp *(*pututline) (const struct utmp *);
void (*endutent) (void);
int (*utmpname) (const char *);
};
#endif /* utmp-private.h */

View File

@ -58,9 +58,11 @@ extern int utmpname __P ((__const char *__file));
extern struct utmp *getutent __P ((void)); extern struct utmp *getutent __P ((void));
/* Rest the input stream to the beginning of the file. */ /* Rest the input stream to the beginning of the file. */
extern void __setutent __P ((void));
extern void setutent __P ((void)); extern void setutent __P ((void));
/* Close the current open file. */ /* Close the current open file. */
extern void __endutent __P ((void));
extern void endutent __P ((void)); extern void endutent __P ((void));
/* Search forward from the current point in the utmp file until the /* Search forward from the current point in the utmp file until the
@ -76,42 +78,19 @@ extern struct utmp *pututline __P ((__const struct utmp *__utmp_ptr));
#ifdef __USE_REENTRANT #ifdef __USE_REENTRANT
/* Define the data structure needed for the reentrant version. */
struct utmp_data
{
int ut_fd;
off_t loc_utmp;
struct utmp ubuf;
};
/* Reentrant versions of the file for handling utmp files. */ /* Reentrant versions of the file for handling utmp files. */
extern int __getutent_r __P ((struct utmp **__utmp, extern int __getutent_r __P ((struct utmp *__buffer, struct utmp **__result));
struct utmp_data *__utmp_data)); extern int getutent_r __P ((struct utmp *__buffer, struct utmp **__result));
extern int getutent_r __P ((struct utmp **__utmp,
struct utmp_data *__utmp_data));
extern void __setutent_r __P ((struct utmp_data *__utmp_data)); extern int __getutid_r __P ((__const struct utmp *__id, struct utmp *__buffer,
extern void setutent_r __P ((struct utmp_data *__utmp_data)); struct utmp **__result));
extern int getutid_r __P ((__const struct utmp *__id, struct utmp *__buffer,
extern void __endutent_r __P ((struct utmp_data *__utmp_data)); struct utmp **__result));
extern void endutent_r __P ((struct utmp_data *__utmp_data));
extern int __getutid_r __P ((__const struct utmp *__id, struct utmp **__utmp,
struct utmp_data *__utmp_data));
extern int getutid_r __P ((__const struct utmp *__id, struct utmp **__utmp,
struct utmp_data *__utmp_data));
extern int __getutline_r __P ((__const struct utmp *__line, extern int __getutline_r __P ((__const struct utmp *__line,
struct utmp **__utmp, struct utmp *__buffer, struct utmp **__result));
struct utmp_data *__utmp_data)); extern int getutline_r __P ((__const struct utmp *__line,
extern int getutline_r __P ((__const struct utmp *__line, struct utmp **__utmp, struct utmp *__buffer, struct utmp **__result));
struct utmp_data *__utmp_data));
extern int __pututline_r __P ((__const struct utmp *__utmp_ptr,
struct utmp_data *__utmp_data));
extern int pututline_r __P ((__const struct utmp *__utmp_ptr,
struct utmp_data *__utmp_data));
#endif /* Use reentrant. */ #endif /* Use reentrant. */

102
login/utmp_db.c Normal file
View File

@ -0,0 +1,102 @@
/* Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>
and Paul Janzen <pcj@primenet.com>, 1996.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <assert.h>
#include <db.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <utmp.h>
#include <sys/stat.h>
#include "utmp-private.h"
/* This is the default name. */
static const char default_file_name[] = _PATH_UTMP_DB;
/* Current file name. */
static const char *file_name = (const char *) default_file_name;
/* Descriptor for database. */
static DB *db_fd;
static char last_date[16];
/* Our local functions. */
static int setutent_db (int reset);
static void endutent_db (void);
static int utmpname_db (const char *name);
/* The jump table for the local functions. */
struct utfuncs __libc_utmp_db_functions =
{
setutent_db,
NULL,
NULL,
NULL,
NULL,
endutent_db,
utmpname_db
};
static int
setutent_db (int reset)
{
return 0;
}
static void
endutent_db (void)
{
}
static int
utmpname_db (const char *name)
{
if (strcmp (name, file_name) != 0)
{
if (strcmp (name, default_file_name) == 0)
{
if (file_name != default_file_name)
free ((char *) file_name);
file_name = default_file_name;
}
else
{
char *new_name = __strdup (name);
if (new_name == NULL)
/* Out of memory. */
return -1;
if (file_name != default_file_name)
free ((char *) file_name);
file_name = new_name;
}
}
return 0;
}

385
login/utmp_file.c Normal file
View File

@ -0,0 +1,385 @@
/* Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>
and Paul Janzen <pcj@primenet.com>, 1996.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <errno.h>
#include <fcntl.h>
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <utmp.h>
#include <sys/file.h>
#include <sys/stat.h>
#include "utmp-private.h"
/* This is the default name. */
static const char default_file_name[] = _PATH_UTMP;
/* Current file name. */
static const char *file_name = (const char *) default_file_name;
/* Descriptor for the file and position. */
static int file_fd = INT_MIN;
static off_t file_offset;
static struct utmp last_entry;
/* Functions defined here. */
static int setutent_file (int reset);
static int getutent_r_file (struct utmp *buffer, struct utmp **result);
static int getutid_r_file (const struct utmp *key, struct utmp *buffer,
struct utmp **result);
static int getutline_r_file (const struct utmp *key, struct utmp *buffer,
struct utmp **result);
static struct utmp *pututline_file (const struct utmp *data);
static void endutent_file (void);
static int utmpname_file (const char *name);
/* Jump table for file functions. */
struct utfuncs __libc_utmp_file_functions =
{
setutent_file,
getutent_r_file,
getutid_r_file,
getutline_r_file,
pututline_file,
endutent_file,
utmpname_file
};
static int
setutent_file (int reset)
{
if (file_fd == INT_MIN)
{
file_fd = open (file_name, O_RDWR);
if (file_fd == -1)
{
/* Hhm, read-write access did not work. Try read-only. */
file_fd = open (file_name, O_RDONLY);
if (file_fd == -1)
{
perror (_("while opening UTMP file"));
return 0;
}
}
file_offset = 0;
/* Make sure the entry won't match. */
last_entry.ut_type = -1;
}
else if (reset)
{
/* Remember we are at beginning of file. */
file_offset = 0;
/* Make sure the entry won't match. */
last_entry.ut_type = -1;
}
return 1;
}
static void
endutent_file (void)
{
if (file_fd >= 0)
close (file_fd);
file_fd = INT_MIN;
}
static int
getutent_r_file (struct utmp *buffer, struct utmp **result)
{
int nbytes;
/* Open utmp file if not already done. */
if (file_fd == INT_MIN)
setutent_file (1);
if (file_fd == -1 || file_offset == -1l)
{
/* Not available. */
*result = NULL;
return -1;
}
/* Read the next entry. */
flock (file_fd, LOCK_SH);
nbytes = read (file_fd, &last_entry, sizeof (struct utmp));
flock (file_fd, LOCK_UN);
if (nbytes!= sizeof (struct utmp))
{
file_offset = -1l;
*result = NULL;
return -1;
}
/* Update position pointer. */
file_offset += sizeof (struct utmp);
memcpy (buffer, &last_entry, sizeof (struct utmp));
*result = buffer;
return 0;
}
/* For implementing this function we don't use the getutent_r function
because we can avoid the reposition on every new entry this way. */
static int
getutline_r_file (const struct utmp *line, struct utmp *buffer,
struct utmp **result)
{
if (file_fd < 0 || file_offset == -1l)
{
*result = NULL;
return -1;
}
while (1)
{
/* Read the next entry. */
if (read (file_fd, &last_entry, sizeof (struct utmp))
!= sizeof (struct utmp))
{
__set_errno (ESRCH);
file_offset = -1l;
*result = NULL;
return -1;
}
/* Stop if we found a user or login entry. */
if (
#if _HAVE_UT_TYPE - 0
(last_entry.ut_type == USER_PROCESS
|| last_entry.ut_type == LOGIN_PROCESS)
&&
#endif
!strncmp (line->ut_line, last_entry.ut_line, sizeof line->ut_line))
break;
file_offset += sizeof (struct utmp);
}
memcpy (buffer, &last_entry, sizeof (struct utmp));
*result = buffer;
return 0;
}
static int
internal_getutid_r (const struct utmp *id, struct utmp *buffer)
{
if (id->ut_type == RUN_LVL || id->ut_type == BOOT_TIME
|| id->ut_type == OLD_TIME || id->ut_type == NEW_TIME)
{
/* Search for next entry with type RUN_LVL, BOOT_TIME,
OLD_TIME, or NEW_TIME. */
while (1)
{
/* Read the next entry. */
if (read (file_fd, buffer, sizeof (struct utmp))
!= sizeof (struct utmp))
{
__set_errno (ESRCH);
file_offset = -1l;
return -1;
}
if (id->ut_type == buffer->ut_type)
break;
file_offset += sizeof (struct utmp);
}
}
else
{
/* Search for the next entry with the specified ID and with type
INIT_PROCESS, LOGIN_PROCESS, USER_PROCESS, or DEAD_PROCESS. */
while (1)
{
/* Read the next entry. */
if (read (file_fd, buffer, sizeof (struct utmp))
!= sizeof (struct utmp))
{
__set_errno (ESRCH);
file_offset = -1l;
return -1;
}
if (( buffer->ut_type == INIT_PROCESS
|| buffer->ut_type == LOGIN_PROCESS
|| buffer->ut_type == USER_PROCESS
|| buffer->ut_type == DEAD_PROCESS)
&& strncmp (buffer->ut_id, id->ut_id, sizeof id->ut_id) == 0)
break;
file_offset += sizeof (struct utmp);
}
}
return 0;
}
/* For implementing this function we don't use the getutent_r function
because we can avoid the reposition on every new entry this way. */
static int
getutid_r_file (const struct utmp *id, struct utmp *buffer,
struct utmp **result)
{
if (file_fd < 0 || file_offset == -1l)
{
*result = NULL;
return -1;
}
if (internal_getutid_r (id, &last_entry) < 0)
{
*result = NULL;
return -1;
}
memcpy (buffer, &last_entry, sizeof (struct utmp));
*result = buffer;
return 0;
}
static struct utmp *
pututline_file (const struct utmp *data)
{
struct utmp buffer;
struct utmp *pbuf;
int found;
if (file_fd < 0)
/* Something went wrong. */
return NULL;
/* Find the correct place to insert the data. */
if (file_offset > 0)
found = 0;
else
if ( last_entry.ut_type == RUN_LVL
|| last_entry.ut_type == BOOT_TIME
|| last_entry.ut_type == OLD_TIME
|| last_entry.ut_type == NEW_TIME
|| (( last_entry.ut_type == INIT_PROCESS
|| last_entry.ut_type == LOGIN_PROCESS
|| last_entry.ut_type == USER_PROCESS
|| last_entry.ut_type == DEAD_PROCESS)
&& !strncmp (last_entry.ut_id, data->ut_id, sizeof data->ut_id)))
found = 1;
else
found = internal_getutid_r (data, &buffer);
/* Try to lock the file. */
if (flock (file_fd, LOCK_EX | LOCK_NB) < 0 && errno != ENOSYS)
{
/* Oh, oh. The file is already locked. Wait a bit and try again. */
sleep (1);
/* This time we ignore the error. */
(void) flock (file_fd, LOCK_EX | LOCK_NB);
}
if (found < 0)
{
/* We append the next entry. */
file_offset = lseek (file_fd, 0, SEEK_END);
if (file_offset % sizeof (struct utmp) != 0)
{
file_offset -= file_offset % sizeof (struct utmp);
ftruncate (file_fd, file_offset);
if (lseek (file_fd, 0, SEEK_END) < 0)
{
(void) flock (file_fd, LOCK_UN);
return NULL;
}
}
}
else
{
/* We replace the just read entry. */
file_offset -= sizeof (struct utmp);
lseek (file_fd, file_offset, SEEK_SET);
}
/* Write the new data. */
if (write (file_fd, data, sizeof (struct utmp)) != sizeof (struct utmp)
/* If we appended a new record this is only partially written.
Remove it. */
&& found < 0)
{
(void) ftruncate (file_fd, file_offset);
pbuf = NULL;
}
else
pbuf = (struct utmp *) data;
/* And unlock the file. */
(void) flock (file_fd, LOCK_UN);
return pbuf;
}
static int
utmpname_file (const char *name)
{
if (strcmp (name, file_name) != 0)
{
if (strcmp (name, default_file_name) == 0)
{
if (file_name != default_file_name)
free ((char *) file_name);
file_name = default_file_name;
}
else
{
char *new_name = __strdup (name);
if (new_name == NULL)
/* Out of memory. */
return -1;
if (file_name != default_file_name)
free ((char *) file_name);
file_name = new_name;
}
}
return 0;
}

View File

@ -97,7 +97,7 @@ INTERNAL (REENTRANT_NAME) (ADD_PARAMS, LOOKUP_TYPE *resbuf, char *buffer,
{ {
no_more = DB_LOOKUP_FCT (&nip, REENTRANT_NAME_STRING, (void **) &fct); no_more = DB_LOOKUP_FCT (&nip, REENTRANT_NAME_STRING, (void **) &fct);
if (no_more) if (no_more)
startp = (service_user *) -1; startp = (service_user *) -1l;
else else
{ {
startp = nip; startp = nip;
@ -118,7 +118,7 @@ INTERNAL (REENTRANT_NAME) (ADD_PARAMS, LOOKUP_TYPE *resbuf, char *buffer,
else else
{ {
fct = start_fct; fct = start_fct;
no_more = (nip = startp) == (service_user *) -1; no_more = (nip = startp) == (service_user *) -1l;
} }
while (no_more == 0) while (no_more == 0)

View File

@ -124,9 +124,9 @@ setup (void **fctp, const char *func_name, int all)
if (startp == NULL) if (startp == NULL)
{ {
no_more = DB_LOOKUP_FCT (&nip, func_name, fctp); no_more = DB_LOOKUP_FCT (&nip, func_name, fctp);
startp = no_more ? (service_user *) -1 : nip; startp = no_more ? (service_user *) -1l : nip;
} }
else if (startp == (service_user *) -1) else if (startp == (service_user *) -1l)
/* No services at all. */ /* No services at all. */
return 1; return 1;
else else

View File

@ -339,10 +339,10 @@ nss_lookup_function (service_user *ni, const char *fct_name)
if (nss_dlerror_run (do_open) != 0) if (nss_dlerror_run (do_open) != 0)
/* Failed to load the library. */ /* Failed to load the library. */
ni->library->lib_handle = (void *) -1; ni->library->lib_handle = (void *) -1l;
} }
if (ni->library->lib_handle == (void *) -1) if (ni->library->lib_handle == (void *) -1l)
/* Library not found => function not found. */ /* Library not found => function not found. */
result = NULL; result = NULL;
else else

View File

@ -25,7 +25,7 @@ headers := sys/utsname.h sys/times.h sys/wait.h sys/types.h unistd.h \
glob.h regex.h wordexp.h fnmatch.h gnu/types.h getopt.h \ glob.h regex.h wordexp.h fnmatch.h gnu/types.h getopt.h \
posix1_lim.h posix2_lim.h posix_opt.h local_lim.h tar.h \ posix1_lim.h posix2_lim.h posix_opt.h local_lim.h tar.h \
utsnamelen.h confname.h waitflags.h waitstatus.h sys/unistd.h \ utsnamelen.h confname.h waitflags.h waitstatus.h sys/unistd.h \
sched.h schedbits.h re_comp.h sched.h schedbits.h re_comp.h wait.h
distribute := confstr.h distribute := confstr.h

View File

@ -76,7 +76,6 @@ typedef unsigned short int ushort;
typedef unsigned int uint; typedef unsigned int uint;
#endif #endif
#ifdef __USE_BSD
/* These size-specific names are used by some of the inet code. */ /* These size-specific names are used by some of the inet code. */
#if !defined (__GNUC__) || __GNUC__ < 2 || __GNUC_MINOR__ < 7 #if !defined (__GNUC__) || __GNUC__ < 2 || __GNUC_MINOR__ < 7
@ -112,7 +111,6 @@ __u_intN_t (64, __DI__);
typedef int register_t __attribute__ ((__mode__ (__word__))); typedef int register_t __attribute__ ((__mode__ (__word__)));
#endif
/* Some code from BIND tests this macro to see if the types above are /* Some code from BIND tests this macro to see if the types above are
defined. */ defined. */

1
posix/wait.h Normal file
View File

@ -0,0 +1 @@
#include <sys/wait.h>

View File

@ -28,15 +28,13 @@ case $1 in
to=`echo $1 | sed 's%^/%%'` to=`echo $1 | sed 's%^/%%'`
if test -d $2; then if test -d $2; then
fromname=. from=`echo $2 | sed 's%/*$%%'`
from=`echo $2 | sed 's%/$%%'`
else else
fromname=`echo $2 | sed 's%.*/\([^/]*\)$%\1%'` from=`echo $2 | sed 's%/*[^/]*$%%'`
from=`echo $2 | sed "s%/*$fromname$%%"`
fi fi
case $from in case "$from" in
/*) from=`echo $from | sed 's%^/%%'` ;; /*) from=`echo $from | sed 's%^/*%%'` ;;
?*) from=`cd $from && pwd | sed 's%^/%%'` ;; ?*) from=`cd $from && pwd | sed 's%^/%%'` ;;
*) from=`pwd | sed 's%^/%%'` ;; *) from=`pwd | sed 's%^/%%'` ;;
esac esac
@ -47,8 +45,8 @@ case $1 in
test "$preto" != "$prefrom" && break test "$preto" != "$prefrom" && break
to=`echo $to | sed 's%^[^/]*/\(.*\)$%\1%'` to=`echo $to | sed 's%^[^/]*/*\(.*\)$%\1%'`
from=`echo $from | sed 's%^[^/]*/\(.*\)$%\1%'` from=`echo $from | sed 's%^[^/]*/*\(.*\)$%\1%'`
done done
while test -n "$from"; do while test -n "$from"; do
@ -63,5 +61,3 @@ case $1 in
ln -s $1 $2 ln -s $1 $2
;; ;;
esac esac
exit 0

View File

@ -9,49 +9,49 @@
# ------------- ------- -------- # ------------- ------- --------
# The interface to -lm depends only on cpu, not on operating system. # The interface to -lm depends only on cpu, not on operating system.
i?86-*-* libm=6 i.86-.*-.* libm=6
m68k-*-* libm=6 m68k-.*-.* libm=6
alpha-*-* libm=6 alpha-.*-.* libm=6
# We provide libc.so.6 for Linux kernel versions 2.0 and later. # We provide libc.so.6 for Linux kernel versions 2.0 and later.
i?86-*-linux* libc=6 i.86-.*-linux.* libc=6
m68k-*-linux* libc=6 m68k-.*-linux.* libc=6
alpha-*-linux* libc=6 alpha-.*-linux.* libc=6
# libmachuser.so.1 corresponds to mach/*.defs as of Utah's UK22 release. # libmachuser.so.1 corresponds to mach/*.defs as of Utah's UK22 release.
*-*-gnu?* libmachuser=1 .*-.*-gnu-gnu.* libmachuser=1
# libhurduser.so.0.0 corresponds to hurd/*.defs as of 7 May 1996. # libhurduser.so.0.0 corresponds to hurd/*.defs as of 7 May 1996.
*-*-gnu?* libhurduser=0.0 .*-.*-gnu-gnu* libhurduser=0.0
# libc.so.0.2 is for the Hurd alpha release 0.2. # libc.so.0.2 is for the Hurd alpha release 0.2.
*-*-gnu?* libc=0.2 .*-.*-gnu-gnu* libc=0.2
# The dynamic loader also requires different names. # The dynamic loader also requires different names.
i?86-*-linux* ld=ld-linux.so.2 i.86-.*-linux.* ld=ld-linux.so.2
# We use the ELF ABI standard name for the default. # We use the ELF ABI standard name for the default.
*-*-* ld=ld.so.1 .*-.*-.* ld=ld.so.1
# The -ldl interface (see <dlfcn.h>) is the same on all platforms. # The -ldl interface (see <dlfcn.h>) is the same on all platforms.
*-*-* libdl=2 .*-.*-.* libdl=2
# So far the -lutil interface is the same on all platforms, except for the # So far the -lutil interface is the same on all platforms, except for the
# `struct utmp' format, which depends on libc. # `struct utmp' format, which depends on libc.
*-*-* libutil=1 .*-.*-.* libutil=1
# Version number 2 is used on other systems for the BIND 4.9.5 resolver # Version number 2 is used on other systems for the BIND 4.9.5 resolver
# interface. # interface.
*-*-* libresolv=2 .*-.*-.* libresolv=2
# Interface revision of nss_* modules. This must match NSS_SHLIB_REVISION # Interface revision of nss_* modules. This must match NSS_SHLIB_REVISION
# in nss/nsswitch.h, which determines the library names used for service # in nss/nsswitch.h, which determines the library names used for service
# names given in /etc/nsswitch.conf. # names given in /etc/nsswitch.conf.
*-*-* libnss_files=1 .*-.*-.* libnss_files=1
*-*-* libnss_dns=1 .*-.*-.* libnss_dns=1
*-*-* libnss_db=1 .*-.*-.* libnss_db=1
# We use libdb.so.2 for the interface in version 1.85 of the Berkeley DB code. # We use libdb.so.2 for the interface in version 1.85 of the Berkeley DB code.
*-*-* libdb=2 .*-.*-.* libdb=2
# This defines the shared library version numbers we will install. # This defines the shared library version numbers we will install.
*-*-* libcrypt=1 .*-.*-.* libcrypt=1

View File

@ -12,9 +12,9 @@
# Library General Public License for more details. # Library General Public License for more details.
# You should have received a copy of the GNU Library General Public # You should have received a copy of the GNU Library General Public
# License along with the GNU C Library; see the file COPYING.LIB. If # License along with the GNU C Library; see the file COPYING.LIB. If not,
# not, write to the Free Software Foundation, Inc., 675 Mass Ave, # write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Cambridge, MA 02139, USA. # Boston, MA 02111-1307, USA.
# #
# Specific makefile for stdio-common. # Specific makefile for stdio-common.
@ -51,6 +51,8 @@ include ../Rules
CFLAGS-_itoa.c = -Wno-unused CFLAGS-_itoa.c = -Wno-unused
CFLAGS-tst-printf.c = -Wno-format CFLAGS-tst-printf.c = -Wno-format
CFLAGS-tstdiomisc.c = -Wno-format CFLAGS-tstdiomisc.c = -Wno-format
CFLAGS-scanf4.c = -Wno-format
CFLAGS-scanf7.c = -Wno-format
ifeq ($(stdio),libio) ifeq ($(stdio),libio)
ifneq (,$(filter %REENTRANT, $(defines))) ifneq (,$(filter %REENTRANT, $(defines)))

View File

@ -245,14 +245,16 @@ struct random_data
extern int __random_r __P ((struct random_data *__buf, int32_t *__result)); extern int __random_r __P ((struct random_data *__buf, int32_t *__result));
extern int random_r __P ((struct random_data *__buf, int32_t *__result)); extern int random_r __P ((struct random_data *__buf, int32_t *__result));
extern int __srandom_r __P ((unsigned int __seed, struct random_data *__buf)); extern int __srandom_r __P ((unsigned int __seed, struct random_data *__buf));
extern int srandom_r __P ((unsigned int __seed, struct random_data *__buf));
extern int __initstate_r __P ((unsigned int __seed, __ptr_t __statebuf, extern int __initstate_r __P ((unsigned int __seed, __ptr_t __statebuf,
size_t __statelen, struct random_data *__buf)); size_t __statelen, struct random_data *__buf));
extern int __setstate_r __P ((__ptr_t __statebuf, struct random_data *__buf));
extern int srandom_r __P ((unsigned int __seed, struct random_data *__buf));
extern int initstate_r __P ((unsigned int __seed, __ptr_t __statebuf, extern int initstate_r __P ((unsigned int __seed, __ptr_t __statebuf,
size_t __statelen, struct random_data *__buf)); size_t __statelen, struct random_data *__buf));
extern int __setstate_r __P ((__ptr_t __statebuf, struct random_data *__buf));
extern int setstate_r __P ((__ptr_t __statebuf, struct random_data *__buf)); extern int setstate_r __P ((__ptr_t __statebuf, struct random_data *__buf));
#endif /* Use reentrant. */ #endif /* Use reentrant. */
#endif /* Use BSD. */ #endif /* Use BSD. */

View File

@ -445,7 +445,8 @@ INTERNAL (STRTOF) (nptr, endptr, group)
/* If no other digit but a '0' is found the result is 0.0. /* If no other digit but a '0' is found the result is 0.0.
Return current read pointer. */ Return current read pointer. */
if ((c < L_('0') || c > L_('9')) && (wint_t) c != decimal && !TOLOWER (c)) if ((c < L_('0') || c > L_('9')) && (wint_t) c != decimal
&& TOLOWER (c) != L_('e'))
{ {
tp = correctly_grouped_prefix (start_of_digits, cp, thousands, grouping); tp = correctly_grouped_prefix (start_of_digits, cp, thousands, grouping);
/* If TP is at the start of the digits, there was no correctly /* If TP is at the start of the digits, there was no correctly

2
sysdeps/alpha/elf/Dist Normal file
View File

@ -0,0 +1,2 @@
crtbegin.S
crtend.S

View File

@ -0,0 +1,91 @@
/* Copyright (C) 1996 Free Software Foundation, Inc.
Contributed by Richard Henderson (rth@tamu.edu)
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/*
* Heads of the constructor/destructor lists.
*/
/* The __*TOR_LIST__ symbols are not global because when this file is used
in a shared library, we do not want the symbol to fall over to the
application's lists. */
.section .ctors,"aw"
.align 3
__CTOR_LIST__:
.quad -1
.section .dtors,"aw"
.align 3
__DTOR_LIST__:
.quad -1
/*
* Fragment of the ELF _fini routine that invokes our dtor cleanup.
*/
.section .fini,"ax"
/* Since the bits of the _fini function are spread across many
object files, each potentially with its own GP, we must
assume we need to load ours. Further, our .fini section
can easily be more than 4MB away from our .text bits so we
can't use bsr. */
br $gp,1f
1: ldgp $gp,0($gp)
jsr $26,__do_global_dtors_aux
/* Must match the alignment we got from crti.o else we get
zero-filled holes in our _fini function and thense SIGILL. */
.align 3
/*
* Invoke our destructors in order.
*/
.text
.align 3
.ent __do_global_dtors_aux
__do_global_dtors_aux:
.frame $sp,16,$26,0
/* GP already loaded in .fini */
lda $sp,-16($sp)
stq $9,8($sp)
stq $26,0($sp)
.mask (1<<26)|(1<<9), -16
.prologue 1
lda $9,__DTOR_LIST__
br 1f
0: jsr $26,($27)
1: ldq $27,8($9)
addq $9,8,$9
bne $27,0b
ldq $26,0($sp)
ldq $9,8($sp)
lda $sp,16($sp)
ret
.end __do_global_dtors_aux

View File

@ -0,0 +1,92 @@
/* Copyright (C) 1996 Free Software Foundation, Inc.
Contributed by Richard Henderson (rth@tamu.edu)
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/*
* Tails of the constructor/destructor lists.
*/
/* The __*TOR_END__ symbols are not global because when this file is used
in a shared library, we do not want the symbol to fall over to the
application's lists. */
.section .ctors,"aw"
.align 3
__CTOR_END__:
.quad 0
.section .dtors,"aw"
.align 3
__DTOR_END__:
.quad 0
/*
* Fragment of the ELF _init routine that invokes our ctor startup
*/
.section .init,"ax"
/* Since the bits of the _init function are spread across many
object files, each potentially with its own GP, we must
assume we need to load ours. Further, our .init section
can easily be more than 4MB away from our .text bits so we
can't use bsr. */
br $gp,1f
1: ldgp $gp,0($gp)
jsr $26,__do_global_ctors_aux
/* Must match the alignment we got from crti.o else we get
zero-filled holes in our _init function and thense SIGILL. */
.align 3
/*
* Invoke our destructors in order.
*/
.text
.align 3
.ent __do_global_ctors_aux
__do_global_ctors_aux:
.frame $sp,16,$26,0
/* GP already loaded in .init. */
lda $sp,-16($sp)
stq $9,8($sp)
stq $26,0($sp)
.mask (1<<26)|(1<<9), -16
.prologue 1
lda $9,__CTOR_END__
br 1f
0: jsr $26,($27)
1: ldq $27,-8($9)
subq $9,8,$9
not $27,$0
bne $0,0b
ldq $26,0($sp)
ldq $9,8($sp)
lda $sp,16($sp)
ret
.end __do_global_ctors_aux

View File

@ -62,6 +62,7 @@
#define _PATH_TTY "/dev/tty" #define _PATH_TTY "/dev/tty"
#define _PATH_UNIX "/vmunix" #define _PATH_UNIX "/vmunix"
#define _PATH_UTMP "/var/run/utmp" #define _PATH_UTMP "/var/run/utmp"
#define _PATH_UTMP_DB "/var/run/utmp.db"
#define _PATH_VI "/usr/bin/vi" #define _PATH_VI "/usr/bin/vi"
#define _PATH_WTMP "/var/log/wtmp" #define _PATH_WTMP "/var/log/wtmp"

View File

@ -59,9 +59,12 @@ openpty(amaster, aslave, name, termp, winp)
static char line[] = "/dev/ptyXX"; static char line[] = "/dev/ptyXX";
register const char *cp1, *cp2; register const char *cp1, *cp2;
register int master, slave, ttygid; register int master, slave, ttygid;
size_t buflen = sysconf (_SC_GETGR_R_SIZE_MAX);
char buffer[buflen];
struct group grbuffer;
struct group *gr; struct group *gr;
if ((gr = getgrnam("tty")) != NULL) if (getgrnam_r("tty", &grbuffer, buffer, buflen, &gr) >= 0)
ttygid = gr->gr_gid; ttygid = gr->gr_gid;
else else
ttygid = -1; ttygid = -1;

View File

@ -52,6 +52,31 @@ struct lastlog
char ll_host[UT_HOSTSIZE]; char ll_host[UT_HOSTSIZE];
}; };
/* Which program created the record. */
enum utlogin
{
unknown,
X,
local,
rlogin,
telnet,
rsh,
ftp,
screen,
splitvt,
xterm
/* More could be added here. */
};
struct exit_status
{
short int e_termination; /* Process termination status. */
short int e_exit; /* Process exit status. */
};
struct utmp struct utmp
{ {
short int ut_type; /* Type of login. */ short int ut_type; /* Type of login. */
@ -61,11 +86,14 @@ struct utmp
char ut_user[UT_NAMESIZE]; /* Username (not NUL terminated). */ char ut_user[UT_NAMESIZE]; /* Username (not NUL terminated). */
#define ut_name ut_user /* Compatible field name for same. */ #define ut_name ut_user /* Compatible field name for same. */
char ut_host[UT_HOSTSIZE]; /* Hostname for remote login. */ char ut_host[UT_HOSTSIZE]; /* Hostname for remote login. */
int ut_exit; /* Process termination/exit status. */ struct exit_status ut_exit; /* The exit status of a process marked
as DEAD_PROCESS. */
long ut_session; /* Session ID, used for windowing. */ long ut_session; /* Session ID, used for windowing. */
struct timeval ut_tv; /* Time entry was made. */ struct timeval ut_tv; /* Time entry was made. */
int32_t ut_addr; /* Internet address of remote host. */ int32_t ut_addr[4]; /* Internet address of remote host. */
char pad[32]; /* Reserved for future use. */ enum utlogin ut_login; /* To store information about source. */
short int ut_syslen; /* Significant length of ut_host. */
char pad[14]; /* Reserved for future use. */
}; };
#define ut_time ut_tv.tv_sec /* Backwards compatibility. */ #define ut_time ut_tv.tv_sec /* Backwards compatibility. */

View File

@ -1,3 +1,3 @@
errnos.awk err_hurd.sub errnos.awk err_hurd.sub
libc-ldscript libc-ldscript
libc_p-ldscript

View File

@ -98,17 +98,20 @@ common-generated += errnos.d stamp-errnos
libc-name = crt libc-name = crt
ifeq (,$(subdir)) ifeq (,$(subdir))
install-others += $(libdir)/libc.a install-others += $(libdir)/libc.a $(libdir)/libc_p.a
$(libdir)/libc.a: $(hurd)/libc-ldscript; $(do-install) $(libdir)/libc.a: $(hurd)/libc-ldscript; $(do-install)
$(libdir)/libc_p.a: $(hurd)/libc_p-ldscript; $(do-install)
endif endif
# For the shared library, we don't need to do the linker script machination. # Make sure these are used to build the libc.so shared object too.
# Instead, we specify the required libraries when building the shared object.
rpcuserlibs := $(common-objpfx)mach/libmachuser.so \ rpcuserlibs := $(common-objpfx)mach/libmachuser.so \
$(common-objpfx)hurd/libhurduser.so $(common-objpfx)hurd/libhurduser.so
$(common-objpfx)libc.so: $(rpcuserlibs) $(common-objpfx)libc.so: $(rpcuserlibs)
rpath-link := $(rpath-link):$(common-objpfx)mach:$(common-objpfx)hurd rpath-link := $(rpath-link):$(common-objpfx)mach:$(common-objpfx)hurd
# And get them into the libc.so ldscript.
$(libdir)/libc.so: $(rpcuserlibs)
# The RPC stubs from these libraries are needed in building the dynamic # The RPC stubs from these libraries are needed in building the dynamic
# linker, too. It must be self-contained, so we link the needed PIC # linker, too. It must be self-contained, so we link the needed PIC
# objects directly into the shared object. # objects directly into the shared object.

View File

@ -0,0 +1,5 @@
/* This linker script is installed as /lib/libc_p.a.
It makes -lc_p become just like -( -lcrt_p -lmachuser_p -lhurduser_p -).
*/
GROUP ( libcrt_p.a libmachuser_p.a libhurduser_p.a )

View File

@ -344,8 +344,11 @@ __getcwd (buf, size)
__set_errno (ENOMEM);/* closedir might have changed it.*/ __set_errno (ENOMEM);/* closedir might have changed it.*/
return NULL; return NULL;
} }
pathp = &buf[pathp - path]; pathp = &buf[pathp - path + size / 2];
path = buf; path = buf;
/* Move current contents up to the end of the buffer.
This is guaranteed to be non-overlapping. */
memcpy (pathp, pathp - size / 2, path + size - pathp);
} }
} }
pathp -= namlen; pathp -= namlen;

View File

@ -1,20 +1,20 @@
/* Copyright (C) 1991, 1995, 1996 Free Software Foundation, Inc. /* Copyright (C) 1991, 1995, 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version. License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful, The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details. Library General Public License for more details.
You should have received a copy of the GNU Library General Public You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If License along with the GNU C Library; see the file COPYING.LIB. If not,
not, write to the Free Software Foundation, Inc., 675 Mass Ave, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Cambridge, MA 02139, USA. */ Boston, MA 02111-1307, USA. */
#include <stddef.h> #include <stddef.h>
#include <errno.h> #include <errno.h>
@ -23,11 +23,10 @@ Cambridge, MA 02139, USA. */
/* Return the login name of the user, or NULL if it can't be determined. /* Return the login name of the user, or NULL if it can't be determined.
The returned pointer, if not NULL, is good only until the next call. */ The returned pointer, if not NULL, is good only until the next call. */
char * char *
getlogin () getlogin (void)
{ {
__set_errno (ENOSYS); __set_errno (ENOSYS);
return NULL; return NULL;
} }
stub_warning (getlogin) stub_warning (getlogin)

View File

@ -1,21 +1,21 @@
/* Reentrant function to return the current login name. Stub version. /* Reentrant function to return the current login name. Stub version.
Copyright (C) 1996 Free Software Foundation, Inc. Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version. License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful, The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details. Library General Public License for more details.
You should have received a copy of the GNU Library General Public You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If License along with the GNU C Library; see the file COPYING.LIB. If not,
not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */ Boston, MA 02111-1307, USA. */
#include <errno.h> #include <errno.h>
#include <unistd.h> #include <unistd.h>

View File

@ -1,20 +1,20 @@
/* Copyright (C) 1991, 1992, 1996 Free Software Foundation, Inc. /* Copyright (C) 1991, 1992, 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version. License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful, The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details. Library General Public License for more details.
You should have received a copy of the GNU Library General Public You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If License along with the GNU C Library; see the file COPYING.LIB. If not,
not, write to the Free Software Foundation, Inc., 675 Mass Ave, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Cambridge, MA 02139, USA. */ Boston, MA 02111-1307, USA. */
#include <errno.h> #include <errno.h>
#include <unistd.h> #include <unistd.h>
@ -34,9 +34,8 @@ getlogin (void)
char tty_pathname[2 + 2 * NAME_MAX]; char tty_pathname[2 + 2 * NAME_MAX];
char *real_tty_path = tty_pathname; char *real_tty_path = tty_pathname;
char *result = NULL; char *result = NULL;
struct utmp_data utmp_data = { ut_fd: -1 };
static char name[UT_NAMESIZE + 1]; static char name[UT_NAMESIZE + 1];
struct utmp *ut, line; struct utmp *ut, line, buffer;
/* Get name of tty connected to fd 0. Return NULL if not a tty or /* Get name of tty connected to fd 0. Return NULL if not a tty or
if fd 0 isn't open. Note that a lot of documentation says that if fd 0 isn't open. Note that a lot of documentation says that
@ -52,9 +51,9 @@ getlogin (void)
real_tty_path += 5; /* Remove "/dev/". */ real_tty_path += 5; /* Remove "/dev/". */
__setutent_r (&utmp_data); __setutent ();
strncpy (line.ut_line, real_tty_path, sizeof line.ut_line); strncpy (line.ut_line, real_tty_path, sizeof line.ut_line);
if (__getutline_r (&line, &ut, &utmp_data) < 0) if (__getutline_r (&line, &buffer, &ut) < 0)
{ {
if (errno == ESRCH) if (errno == ESRCH)
/* The caller expects ENOENT if nothing is found. */ /* The caller expects ENOENT if nothing is found. */
@ -68,7 +67,7 @@ getlogin (void)
result = name; result = name;
} }
__endutent_r (&utmp_data); __endutent ();
return result; return result;
} }

View File

@ -1,21 +1,21 @@
/* Reentrant function to return the current login name. Unix version. /* Reentrant function to return the current login name. Unix version.
Copyright (C) 1991, 1992, 1996 Free Software Foundation, Inc. Copyright (C) 1991, 1992, 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version. License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful, The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details. Library General Public License for more details.
You should have received a copy of the GNU Library General Public You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If License along with the GNU C Library; see the file COPYING.LIB. If not,
not, write to the Free Software Foundation, Inc., 675 Mass Ave, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Cambridge, MA 02139, USA. */ Boston, MA 02111-1307, USA. */
#include <errno.h> #include <errno.h>
#include <unistd.h> #include <unistd.h>
@ -38,8 +38,7 @@ getlogin_r (name, name_len)
char tty_pathname[2 + 2 * NAME_MAX]; char tty_pathname[2 + 2 * NAME_MAX];
char *real_tty_path = tty_pathname; char *real_tty_path = tty_pathname;
int result = 0; int result = 0;
struct utmp_data utmp_data; struct utmp *ut, line, buffer;
struct utmp *ut, line;
{ {
int err; int err;
@ -60,9 +59,9 @@ getlogin_r (name, name_len)
real_tty_path += 5; /* Remove "/dev/". */ real_tty_path += 5; /* Remove "/dev/". */
setutent_r (&utmp_data); __setutent ();
strncpy (line.ut_line, real_tty_path, sizeof line.ut_line); strncpy (line.ut_line, real_tty_path, sizeof line.ut_line);
if (getutline_r (&line, &ut, &utmp_data) < 0) if (__getutline_r (&line, &buffer, &ut) < 0)
{ {
if (errno == ESRCH) if (errno == ESRCH)
/* The caller expects ENOENT if nothing is found. */ /* The caller expects ENOENT if nothing is found. */
@ -85,7 +84,7 @@ getlogin_r (name, name_len)
result = 0; result = 0;
} }
} }
endutent_r (&utmp_data); __endutent ();
return result; return result;
} }

View File

@ -20,6 +20,7 @@ sys/mount.h
sys/mtio.h sys/mtio.h
sys/procfs.h sys/procfs.h
sys/quota.h sys/quota.h
sys/serial.h
sys/socketcall.h sys/socketcall.h
sys/soundcard.h sys/soundcard.h
sys/sysctl.h sys/sysctl.h

View File

@ -8,7 +8,8 @@ sysdep_routines += sysctl clone
sysdep_headers += sys/mount.h sys/acct.h sys/sysctl.h sys/mtio.h \ sysdep_headers += sys/mount.h sys/acct.h sys/sysctl.h sys/mtio.h \
sys/module.h sys/io.h sys/klog.h sys/kdaemon.h \ sys/module.h sys/io.h sys/klog.h sys/kdaemon.h \
sys/user.h syscall-list.h sys/sysmacros.h sys/procfs.h \ sys/user.h syscall-list.h sys/sysmacros.h sys/procfs.h \
sys/debugreg.h sys/kd.h sys/soundcard.h sys/vt.h sys/debugreg.h sys/kd.h sys/soundcard.h sys/vt.h \
sys/serial.h
# Generate the list of SYS_* macros for the system calls (__NR_* macros). # Generate the list of SYS_* macros for the system calls (__NR_* macros).
$(objpfx)syscall-%.h $(objpfx)syscall-%.d: ../sysdeps/unix/sysv/linux/syscall.h $(objpfx)syscall-%.h $(objpfx)syscall-%.d: ../sysdeps/unix/sysv/linux/syscall.h

View File

@ -62,6 +62,7 @@
#define _PATH_TTY "/dev/tty" #define _PATH_TTY "/dev/tty"
#define _PATH_UNIX "/vmlinux" #define _PATH_UNIX "/vmlinux"
#define _PATH_UTMP "/var/run/utmp" #define _PATH_UTMP "/var/run/utmp"
#define _PATH_UTMP_DB "/var/run/utmp.db"
#define _PATH_VI "/usr/bin/vi" #define _PATH_VI "/usr/bin/vi"
#define _PATH_WTMP "/var/log/wtmp" #define _PATH_WTMP "/var/log/wtmp"

View File

@ -0,0 +1,110 @@
/* Copyright (C) 1996 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 Library General Public License as
published by the Free Software Foundation; either version 2 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#ifndef _SYS_SERIAL_H
#define _SYS_SERIAL_H 1
/* Defines for PC AT serial port. */
/* Serial port addresses and IRQs. */
#define PORT_0 0x03F8
#define PORT_1 0x02F8
#define IRQ_0 0x04
#define IRQ_1 0x03
/* Definitions for INS8250 / 16550 chips. */
/* Defined as offsets from the port address (data port). */
#define DAT 0 /* Receive/transmit data. */
#define ICR 1 /* Interrupt control register. */
#define ISR 2 /* Interrupt status register. */
#define LCR 3 /* Line control register. */
#define MCR 4 /* Modem control register. */
#define LSR 5 /* Line status register. */
#define MSR 6 /* Modem status register. */
#define DLL 0 /* Divisor latch (lsb). */
#define DLH 1 /* Divisor latch (msb). */
/* ICR. */
#define RIEN 0x01 /* Enable receiver interrupt. */
#define TIEN 0x02 /* Enable transmitter interrupt. */
#define SIEN 0x04 /* Enable receiver line status interrupt. */
#define MIEN 0x08 /* Enable modem status interrupt. */
/* ISR */
#define FFTMOUT 0x0c /* Fifo rcvr timeout. */
#define RSTATUS 0x06 /* Change in receiver line status. */
#define RxRDY 0x04 /* Receiver data available. */
#define TxRDY 0x02 /* Transmitter holding register empty. */
#define MSTATUS 0x00 /* Change in modem status. */
/* LCR 3
Number of data bits per received/transmitted character. */
#define RXLEN 0x03
#define STOP1 0x00
#define STOP2 0x04
#define PAREN 0x08
#define PAREVN 0x10
#define PARMARK 0x20
#define SNDBRK 0x40
#define DLAB 0x80
/* Baud rate definitions. */
#define ASY9600 12
/* Definitions for character length (data bits) in RXLEN field. */
#define BITS5 0x00
#define BITS6 0x01
#define BITS7 0x02
#define BITS8 0x03
/* MCR. */
#define DTR 0x01 /* Bring up DTR. */
#define RTS 0x02 /* Bring up RTS. */
#define OUT1 0x04
#define OUT2 0x08
#define LOOP 0x10 /* Put chip into loopback state. */
/* LSR */
#define RCA 0x01 /* Receive char available. */
#define OVRRUN 0x02 /* Receive overrun. */
#define PARERR 0x04 /* Parity error. */
#define FRMERR 0x08 /* Framing/CRC error. */
#define BRKDET 0x10 /* Break detected (null char + frame error). */
#define XHRE 0x20 /* Transmit holding register empty. */
#define XSRE 0x40 /* Transmit shift register empty. */
/* MSR */
#define DCTS 0x01 /* CTS has changed state. */
#define DDSR 0x02 /* DSR has changed state. */
#define DRI 0x04 /* RI has changed state. */
#define DDCD 0x08 /* DCD has changed state. */
#define CTS 0x10 /* State of CTS. */
#define DSR 0x20 /* State of DSR. */
#define RI 0x40 /* State of RI. */
#define DCD 0x80 /* State of DCD. */
#define DELTAS(x) ((x) & (DCTS | DDSR | DRI | DDCD))
#define STATES(x) ((x) (CTS | DSR | RI | DCD))
#endif /* sys/serial.h */

View File

@ -125,7 +125,7 @@ $(installed-localtime-file): $(zonedir)/$(localtime) $(objpfx)zic
echo Site timezone NOT reset to Factory.; \ echo Site timezone NOT reset to Factory.; \
else \ else \
rm -f $@T; \ rm -f $@T; \
$(SHELL) $(top_absdir)/rellns-sh $< $@T; \ $(SHELL) $(..)/rellns-sh $< $@T; \
mv -f $@T $@; \ mv -f $@T $@; \
fi fi
endif endif

View File

@ -1,15 +1,23 @@
# @(#)africa 7.15 # @(#)africa 7.16
# This data is by no means authoritative; if you think you know better, # This data is by no means authoritative; if you think you know better,
# go ahead and edit the file (and please send any changes to # go ahead and edit the file (and please send any changes to
# tz@elsie.nci.nih.gov for general use in the future). # tz@elsie.nci.nih.gov for general use in the future).
# From Paul Eggert <eggert@twinsun.com> (1996-09-03): # From Paul Eggert <eggert@twinsun.com> (1996-11-22):
# #
# A good source for time zone historical data outside the U.S. is # A good source for time zone historical data outside the U.S. is
# Thomas G. Shanks, The International Atlas (3rd edition), # Thomas G. Shanks, The International Atlas (3rd edition),
# San Diego: ACS Publications, Inc. (1991). # San Diego: ACS Publications, Inc. (1991).
# Except where otherwise noted, it is the source for the data below. #
# Gwillim Law <LAW@encmail.encompass.com> writes that a good source
# for recent time zone data is the International Air Transport
# Association's Standard Schedules Information Manual (IATA SSIM),
# published semiannually. Law sent in several helpful summaries
# of the IATA's data after 1990.
#
# Except where otherwise noted, Shanks is the source for entries through 1990,
# and IATA SSIM is the source for entries after 1990.
# #
# Another source occasionally used is Edward W. Whitman, World Time Differences, # Another source occasionally used is Edward W. Whitman, World Time Differences,
# Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated), which # Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated), which
@ -255,12 +263,17 @@ Rule Egypt 1957 1958 - Oct 1 0:00 0 -
Rule Egypt 1958 only - May 1 0:00 1:00 S Rule Egypt 1958 only - May 1 0:00 1:00 S
Rule Egypt 1959 1981 - May 1 1:00 1:00 S Rule Egypt 1959 1981 - May 1 1:00 1:00 S
Rule Egypt 1959 1965 - Sep 30 3:00 0 - Rule Egypt 1959 1965 - Sep 30 3:00 0 -
Rule Egypt 1966 max - Oct 1 3:00 0 - Rule Egypt 1966 1990 - Oct 1 3:00 0 -
Rule Egypt 1982 only - Jul 25 1:00 1:00 S Rule Egypt 1982 only - Jul 25 1:00 1:00 S
Rule Egypt 1983 only - Jul 12 1:00 1:00 S Rule Egypt 1983 only - Jul 12 1:00 1:00 S
Rule Egypt 1984 1988 - May 1 1:00 1:00 S Rule Egypt 1984 1988 - May 1 1:00 1:00 S
Rule Egypt 1989 only - May 6 1:00 1:00 S Rule Egypt 1989 only - May 6 1:00 1:00 S
Rule Egypt 1990 max - May 1 1:00 1:00 S Rule Egypt 1990 only - May 1 1:00 1:00 S
Rule Egypt 1991 1994 - May 1 0:00 1:00 S
Rule Egypt 1991 1994 - Oct 1 0:00 0 -
Rule Egypt 1995 max - Apr lastFri 0:00 1:00 S
Rule Egypt 1995 max - Sep lastFri 0:00 0 -
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Africa/Cairo 2:05:00 - LMT 1900 Oct Zone Africa/Cairo 2:05:00 - LMT 1900 Oct
2:00 Egypt EE%sT 2:00 Egypt EE%sT
@ -390,15 +403,15 @@ Rule Libya 1986 only - Oct 3 0:00 0 -
Rule Libya 1987 1989 - Apr 1 0:00 1:00 S Rule Libya 1987 1989 - Apr 1 0:00 1:00 S
Rule Libya 1987 1990 - Oct 1 0:00 0 - Rule Libya 1987 1990 - Oct 1 0:00 0 -
Rule Libya 1990 only - May 4 0:00 1:00 S Rule Libya 1990 only - May 4 0:00 1:00 S
Rule Libya 1996 max - Mar 30 2:00s 1:00 S
Rule Libya 1996 max - Sep 30 2:00s 0 -
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Africa/Tripoli 0:52:44 - LMT 1920 Zone Africa/Tripoli 0:52:44 - LMT 1920
1:00 Libya CE%sT 1959 1:00 Libya CE%sT 1959
2:00 - EET 1982 2:00 - EET 1982
# From Paul Eggert <eggert@twinsun.com> (1995-12-19):
# usno1995 (from OAG) says Libya uses 2:00 all year, as they did before 1982.
# We don't know when they switched back. We'll guess 1991.
1:00 Libya CE%sT 1991 1:00 Libya CE%sT 1991
2:00 - EET 2:00 - EET 1996 Mar 30 3:00
1:00 Libya CE%sT
# Madagascar # Madagascar
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
@ -442,7 +455,7 @@ Zone Indian/Mayotte 3:00:56 - LMT 1911 Jul # Mamoutzou
3:00 - EAT 3:00 - EAT
# Morocco # Morocco
# rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S # RULE NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule Morocco 1939 only - Sep 12 0:00 1:00 S Rule Morocco 1939 only - Sep 12 0:00 1:00 S
Rule Morocco 1939 only - Nov 19 0:00 0 - Rule Morocco 1939 only - Nov 19 0:00 0 -
Rule Morocco 1940 only - Feb 25 0:00 1:00 S Rule Morocco 1940 only - Feb 25 0:00 1:00 S
@ -474,12 +487,15 @@ Zone Africa/Maputo 2:10:20 - LMT 1903 Mar
2:00 - SAT 2:00 - SAT
# Namibia # Namibia
# 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 -
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Africa/Windhoek 1:08:24 - LMT 1892 Feb 8 Zone Africa/Windhoek 1:08:24 - LMT 1892 Feb 8
1:30 - SWAT 1903 Mar # SW Africa Time 1:30 - SWAT 1903 Mar # SW Africa Time
2:00 - SAT 1942 Sep 20 2:00 2:00 - SAT 1942 Sep 20 2:00
2:00 1:00 SAST 1943 Mar 21 2:00 2:00 1:00 SAST 1943 Mar 21 2:00
2:00 - SAT 2:00 Namibia SA%sT
# Niger # Niger
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
@ -618,10 +634,9 @@ Rule Tunisia 1977 only - Sep 24 0:00s 0 -
Rule Tunisia 1978 only - May 1 0:00s 1:00 S Rule Tunisia 1978 only - May 1 0:00s 1:00 S
Rule Tunisia 1978 only - Oct 1 0:00s 0 - Rule Tunisia 1978 only - Oct 1 0:00s 0 -
Rule Tunisia 1988 only - Jun 1 0:00s 1:00 S Rule Tunisia 1988 only - Jun 1 0:00s 1:00 S
Rule Tunisia 1988 max - Sep lastSun 0:00s 0 - Rule Tunisia 1988 1990 - Sep lastSun 0:00s 0 -
Rule Tunisia 1989 only - Mar 26 0:00s 1:00 S Rule Tunisia 1989 only - Mar 26 0:00s 1:00 S
Rule Tunisia 1990 only - May 1 0:00s 1:00 S Rule Tunisia 1990 only - May 1 0:00s 1:00 S
Rule Tunisia 1991 max - Mar lastSun 0:00s 1:00 S
# Shanks gives 0:09 for Paris Mean Time; go with Howse's more precise 0:09:21. # Shanks gives 0:09 for Paris Mean Time; go with Howse's more precise 0:09:21.
# Shanks says the 1911 switch occurred on Mar 9; go with Howse's Mar 11. # Shanks says the 1911 switch occurred on Mar 9; go with Howse's Mar 11.
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]

View File

@ -1,4 +1,4 @@
# @(#)antarctica 7.4 # @(#)antarctica 7.5
# From Paul Eggert (1996-09-03): # From Paul Eggert (1996-09-03):
# To keep things manageable, we list only locations occupied year-round; # To keep things manageable, we list only locations occupied year-round;
@ -8,6 +8,20 @@
# I made up all time zone abbreviations mentioned here; corrections welcome! # I made up all time zone abbreviations mentioned here; corrections welcome!
# FORMAT is `___' and GMTOFF is 0 for locations while uninhabited. # FORMAT is `___' and GMTOFF is 0 for locations while uninhabited.
# These rules are stolen from the `southamerica' file.
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule ArgAQ 1964 1966 - Mar 1 0:00 0 -
Rule ArgAQ 1964 1966 - Oct 15 0:00 1:00 S
Rule ArgAQ 1967 only - Apr 1 0:00 0 -
Rule ArgAQ 1967 1968 - Oct Sun<=7 0:00 1:00 S
Rule ArgAQ 1968 1969 - Apr Sun<=7 0:00 0 -
Rule ArgAQ 1974 only - Jan 23 0:00 1:00 S
Rule ArgAQ 1974 only - May 1 0:00 0 -
Rule ArgAQ 1974 1976 - Oct Sun<=7 0:00 1:00 S
Rule ArgAQ 1975 1977 - Apr Sun<=7 0:00 0 -
Rule ChileAQ 1969 max - Oct Sun>=9 0:00 1:00 S
Rule ChileAQ 1970 max - Mar Sun>=9 0:00 0 -
# Argentina - 6 year-round bases # Argentina - 6 year-round bases
# General Belgrano II # General Belgrano II
@ -118,7 +132,21 @@ Rule NZAQ 1990 max - Mar Sun>=15 2:00s 0 S
# USA - year-round bases # USA - year-round bases
# #
# Palmer, Anvers Island # Palmer, Anvers Island, since 1965 (moved 2 miles in 1968)
#
# From Ethan Dicks <erd@mcmsun5.mcmurdo.gov> (1996-10-06):
# It keeps the same time as Punta Arenas, Chile, because, just like us
# and the South Pole, that's the other end of their supply line....
# I verified with someone who was there that since 1980,
# Palmer has followed Chile. Prior to that, before the Falklands War,
# Palmer used to be supplied from Argentina.
#
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Antarctica/Palmer 0 - ___ 1965
-4:00 ArgAQ AR%sT 1969 Oct 5
-3:00 ArgAQ AR%sT 1982 May
-4:00 ChileAQ CL%sT
#
# #
# McMurdo, Ross Island, since 1956 # McMurdo, Ross Island, since 1956
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]

156
time/asia
View File

@ -1,16 +1,25 @@
# @(#)asia 7.25 # @(#)asia 7.26
# This data is by no means authoritative; if you think you know better, # This data is by no means authoritative; if you think you know better,
# go ahead and edit the file (and please send any changes to # go ahead and edit the file (and please send any changes to
# tz@elsie.nci.nih.gov for general use in the future). # tz@elsie.nci.nih.gov for general use in the future).
# From Paul Eggert <eggert@twinsun.com> (1995-07-24): # From Paul Eggert <eggert@twinsun.com> (1996-11-22):
# #
# A good source for time zone historical data outside the U.S. is # A good source for time zone historical data outside the U.S. is
# Thomas G. Shanks, The International Atlas (3rd edition), # Thomas G. Shanks, The International Atlas (3rd edition),
# San Diego: ACS Publications, Inc. (1991). # San Diego: ACS Publications, Inc. (1991).
# Except where otherwise noted, it is the source for the data below. # Except where otherwise noted, it is the source for the data below.
# #
# Gwillim Law <LAW@encmail.encompass.com> writes that a good source
# for recent time zone data is the International Air Transport
# Association's Standard Schedules Information Manual (IATA SSIM),
# published semiannually. Law sent in several helpful summaries
# of the IATA's data after 1990.
#
# Except where otherwise noted, Shanks is the source for entries through 1990,
# and IATA SSIM is the source for entries after 1990.
#
# Another source occasionally used is Edward W. Whitman, World Time Differences, # Another source occasionally used is Edward W. Whitman, World Time Differences,
# Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated), which # Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated), which
# I found in the UCLA library. # I found in the UCLA library.
@ -24,7 +33,6 @@
# Corrections are welcome! # Corrections are welcome!
# std dst # std dst
# LMT Local Mean Time # LMT Local Mean Time
# LST Local Star Time (Russian ``mestnoe zvezdnoe vremya'')
# 2:00 EET EEST Eastern European Time # 2:00 EET EEST Eastern European Time
# 2:00 IST IDT Israel # 2:00 IST IDT Israel
# 3:00 AST ADT Arabia* # 3:00 AST ADT Arabia*
@ -48,12 +56,22 @@
############################################################################### ###############################################################################
# These rules for Russia are stolen from the `europe' file. # These rules are stolen from the `europe' file.
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule RussiaAsia 1981 1984 - Apr 1 0:00 1:00 S Rule EUAsia 1981 max - Mar lastSun 1:00u 1:00 S
Rule RussiaAsia 1981 1983 - Oct 1 0:00 0 - Rule EUAsia 1996 max - Oct lastSun 1:00u 0 -
Rule RussiaAsia 1984 max - Sep lastSun 2:00s 0 - Rule E-EurAsia 1981 max - Mar lastSun 0:00 1:00 S
Rule RussiaAsia 1985 max - Mar lastSun 2:00s 1:00 S Rule E-EurAsia 1979 1995 - Sep lastSun 0:00 0 -
Rule E-EurAsia 1996 max - Oct lastSun 0:00 0 -
Rule RussiaAsia 1981 1984 - Apr 1 0:00 1:00 S
Rule RussiaAsia 1981 1983 - Oct 1 0:00 0 -
Rule RussiaAsia 1984 1991 - Sep lastSun 2:00s 0 -
Rule RussiaAsia 1985 1991 - Mar lastSun 2:00s 1:00 S
Rule RussiaAsia 1992 only - Mar lastSat 23:00 1:00 S
Rule RussiaAsia 1992 only - Sep lastSat 23:00 0 -
Rule RussiaAsia 1993 max - Mar lastSun 2:00s 1:00 S
Rule RussiaAsia 1993 1995 - Sep lastSun 2:00s 0 -
Rule RussiaAsia 1996 max - Oct lastSun 2:00s 0 -
# Afghanistan # Afghanistan
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
@ -85,10 +103,9 @@ Zone Asia/Baku 3:19:24 - LMT 1924 May 2
3:00 - BAKT 1957 Mar # Baku Time 3:00 - BAKT 1957 Mar # Baku Time
4:00 RussiaAsia BAK%sT 1991 Mar 31 2:00s 4:00 RussiaAsia BAK%sT 1991 Mar 31 2:00s
3:00 1:00 BAKST 1991 Aug 30 # independence 3:00 1:00 BAKST 1991 Aug 30 # independence
3:00 RussiaAsia AZ%sT 1992 # Azerbaijan Time 3:00 RussiaAsia AZ%sT 1992 Sep lastSun 2:00s
3:00 - AZT 4:00 - AZT 1996 # Azerbaijan time
# Shanks has Baku using Russian DST rules after 1991, 4:00 EUAsia AZ%sT
# but usno1995 has Azerbaijan with no DST. Guess no DST after 1991.
# Bahrain # Bahrain
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
@ -287,18 +304,20 @@ Zone Asia/Nicosia 2:13:28 - LMT 1921 Nov 14
# an MP who went on a hunger strike for 11 days to force discussion about it! # an MP who went on a hunger strike for 11 days to force discussion about it!
# We have no details, but we'll guess they didn't move the clocks back in fall. # We have no details, but we'll guess they didn't move the clocks back in fall.
# #
# From Paul Eggert (1995-11-13): # From Mathew Englander <mathew@io.org>, quoting AP (1996-10-23 13:05-04):
# usno1995 has Georgia at 4:00. Guess that Georgia stopped transitions # Instead of putting back clocks at the end of October, Georgia
# after spring 1994 (thus sticking at 4:00). # will stay on daylight savings time this winter to save energy,
# Most likely we're still missing some rule changes between 1991 and 1994. # President Eduard Shevardnadze decreed Wednesday.
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Asia/Tbilisi 2:59:16 - LMT 1880 Zone Asia/Tbilisi 2:59:16 - LMT 1880
2:59:16 - TBMT 1924 May 2 # Tbilisi Mean Time 2:59:16 - TBMT 1924 May 2 # Tbilisi Mean Time
3:00 - TBIT 1957 Mar # Tbilisi Time 3:00 - TBIT 1957 Mar # Tbilisi Time
4:00 RussiaAsia TBI%sT 1991 Mar 31 2:00s 4:00 RussiaAsia TBI%sT 1991 Mar 31 2:00s
3:00 1:00 TBIST 1991 Apr 9 # independence 3:00 1:00 TBIST 1991 Apr 9 # independence
3:00 RussiaAsia GE%sT 1994 Sep 25 2:00s # Georgia Time 3:00 RussiaAsia GE%sT 1992 # Georgia Time
4:00 - GET 3:00 E-EurAsia GE%sT 1994 Sep lastSun
4:00 E-EurAsia GE%sT 1996 Oct lastSun
5:00 - GET
# India # India
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
@ -340,6 +359,13 @@ Rule Iran 1978 1980 - Mar 21 0:00 1:00 S
Rule Iran 1978 only - Oct 21 0:00 0 - Rule Iran 1978 only - Oct 21 0:00 0 -
Rule Iran 1979 only - Sep 19 0:00 0 - Rule Iran 1979 only - Sep 19 0:00 0 -
Rule Iran 1980 only - Sep 23 0:00 0 - Rule Iran 1980 only - Sep 23 0:00 0 -
Rule Iran 1991 only - May 3 0:00s 1:00 S
Rule Iran 1991 only - Sep 20 0:00s 0 -
Rule Iran 1992 only - Mar 22 0:00 1:00 S
Rule Iran 1992 1993 - Sep 23 0:00 0 -
Rule Iran 1993 max - Mar 21 0:00 1:00 S
Rule Iran 1994 1995 - Sep 22 0:00 0 -
Rule Iran 1996 max - Sep 21 0:00 0 -
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Asia/Tehran 3:25:44 - LMT 1916 Zone Asia/Tehran 3:25:44 - LMT 1916
3:25:44 - TMT 1946 # Tehran Mean Time 3:25:44 - TMT 1946 # Tehran Mean Time
@ -353,8 +379,11 @@ Rule Iraq 1982 only - May 1 0:00 1:00 D
Rule Iraq 1982 1984 - Oct 1 0:00 0 S Rule Iraq 1982 1984 - Oct 1 0:00 0 S
Rule Iraq 1983 only - Mar 31 0:00 1:00 D Rule Iraq 1983 only - Mar 31 0:00 1:00 D
Rule Iraq 1984 1985 - Apr 1 0:00 1:00 D Rule Iraq 1984 1985 - Apr 1 0:00 1:00 D
Rule Iraq 1985 max - Sep lastSun 1:00s 0 S Rule Iraq 1985 1990 - Sep lastSun 1:00s 0 S
Rule Iraq 1986 max - Mar lastSun 1:00s 1:00 D Rule Iraq 1986 1990 - Mar lastSun 1:00s 1:00 D
# IATA SSIM (1991/1996) says Apr 1 12:01am UTC; guess the `:01' is a typo.
Rule Iraq 1991 max - Apr 1 3:00s 1:00 D
Rule Iraq 1991 max - Oct 1 3:00s 0 D
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Asia/Baghdad 2:57:40 - LMT 1890 Zone Asia/Baghdad 2:57:40 - LMT 1890
2:57:36 - BMT 1918 # Baghdad Mean Time? 2:57:36 - BMT 1918 # Baghdad Mean Time?
@ -512,9 +541,6 @@ Zone Asia/Ishigaki 8:16:36 - LMT 1896
# Other Japanese possessions are probably like Asia/Tokyo. # Other Japanese possessions are probably like Asia/Tokyo.
# Jordan # Jordan
# From Paul Eggert <eggert@twinsun.com> (1993-11-18):
# Most likely Shanks is merely guessing dates from 1992 on.
# From Shanks (1991):
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule Jordan 1973 only - Jun 6 0:00 1:00 S Rule Jordan 1973 only - Jun 6 0:00 1:00 S
Rule Jordan 1973 1975 - Oct 1 0:00 0 - Rule Jordan 1973 1975 - Oct 1 0:00 0 -
@ -529,40 +555,56 @@ Rule Jordan 1986 1988 - Apr Fri>=1 0:00 1:00 S
Rule Jordan 1986 1990 - Oct Fri>=1 0:00 0 - Rule Jordan 1986 1990 - Oct Fri>=1 0:00 0 -
Rule Jordan 1989 only - May 8 0:00 1:00 S Rule Jordan 1989 only - May 8 0:00 1:00 S
Rule Jordan 1990 only - Apr 27 0:00 1:00 S Rule Jordan 1990 only - Apr 27 0:00 1:00 S
Rule Jordan 1991 only - Apr 19 0:00 1:00 S Rule Jordan 1991 only - Apr 17 0:00 1:00 S
Rule Jordan 1991 only - Sep 27 0:00 0 - Rule Jordan 1991 only - Sep 27 0:00 0 -
Rule Jordan 1992 max - Apr Fri>=1 0:00 1:00 S Rule Jordan 1992 only - Apr 10 0:00 1:00 S
Rule Jordan 1992 max - Oct Fri>=1 0:00 0 - Rule Jordan 1992 1993 - Oct Fri>=1 0:00 0 -
Rule Jordan 1993 max - Apr Fri>=1 0:00 1:00 S
Rule Jordan 1994 only - Sep Fri>=15 0:00 0 -
Rule Jordan 1995 max - Sep Fri>=15 0:00s 0 -
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Asia/Amman 2:23:44 - LMT 1931 Zone Asia/Amman 2:23:44 - LMT 1931
2:00 Jordan EE%sT 2:00 Jordan EE%sT
# Kazakhstan # Kazakhstan
# From Paul Eggert (1996-04-19): # From Paul Eggert (1996-11-22):
# Andrew Evtichov <evti@chevron.com> (1996-04-13) writes that Kazakhstan # Andrew Evtichov <evti@chevron.com> (1996-04-13) writes that Kazakhstan
# stayed in sync with Moscow after 1990, and that Aktau is the biggest city # stayed in sync with Moscow after 1990, and that Aqtobe (formerly Aktyubinsk)
# in western Kazakhstan. Follow Shanks before 1991, Evtichov afterwards. # and Aqtau (formerly Shevchenko) are the largest cities in their zones.
# Guess that Aqtau and Aqtobe diverged in 1995, since that's the first time
# IATA SSIM mentions a third time zone in Kazakhstan.
#
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Asia/Alma-Ata 5:07:48 - LMT 1924 May 2 # or Almaty Zone Asia/Alma-Ata 5:07:48 - LMT 1924 May 2 # or Almaty
5:00 - ALMT 1957 Mar # Alma-Ata Time 5:00 - ALMT 1957 Mar # Alma-Ata Time
6:00 RussiaAsia ALM%sT 1991 Mar 31 2:00s 6:00 RussiaAsia ALM%sT 1991 Mar 31 2:00s
5:00 1:00 ALMST 1991 Sep 29 2:00s 5:00 1:00 ALMST 1991 Sep 29 2:00s
5:00 - ALMT 1992 Jan 19 2:00s 5:00 - ALMT 1992 Jan 19 2:00s
6:00 RussiaAsia ALM%sT 6:00 E-EurAsia ALM%sT
Zone Asia/Aktau 3:21:04 - LMT 1924 May 2 # or Aqtau Zone Asia/Aqtobe 3:48:40 - LMT 1924 May 2
4:00 - AKT 1957 Mar # Aktyubinsk Time
5:00 RussiaAsia AK%sT 1991 Mar 31 2:00s
4:00 1:00 AKTST 1991 Sep 29 2:00s
4:00 - AQTT 1992 Jan 19 2:00s # Aqtobe Time
5:00 E-EurAsia AQT%sT
Zone Asia/Aqtau 3:21:04 - LMT 1924 May 2 # or Aktau
4:00 - SHET 1957 Mar # Fort Shevchenko Time 4:00 - SHET 1957 Mar # Fort Shevchenko Time
5:00 RussiaAsia SHE%sT 1991 Mar 31 2:00s 5:00 RussiaAsia SHE%sT 1991 Mar 31 2:00s
4:00 1:00 AKTST 1991 Sep 29 2:00s 4:00 1:00 AQTST 1991 Sep 29 2:00s
4:00 - AKTT 1992 Jan 19 2:00s # Aktau Time 4:00 - AQTT 1992 Jan 19 2:00s # Aqtau Time
5:00 RussiaAsia AKT%sT 5:00 E-EurAsia AQT%sT 1995 Sep lastSun
4:00 E-EurAsia AQT%sT
# Kirgizstan # Kirgizstan
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule Kirgiz 1992 max - Apr Sun>=7 0:00 1:00 S
Rule Kirgiz 1991 max - Sep lastSun 0:00 0 -
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Asia/Bishkek 4:58:24 - LMT 1924 May 2 Zone Asia/Bishkek 4:58:24 - LMT 1924 May 2
5:00 - FRUT 1957 Mar # Frunze Time 5:00 - FRUT 1957 Mar # Frunze Time
6:00 RussiaAsia FRU%sT 1991 Mar 31 2:00s 6:00 RussiaAsia FRU%sT 1991 Mar 31 2:00s
5:00 1:00 FRUST 1991 Aug 31 # independence 5:00 1:00 FRUST 1991 Aug 31 # independence
5:00 RussiaAsia KG%sT # Kirgizstan Time 5:00 Kirgiz KG%sT # Kirgizstan Time
############################################################################### ###############################################################################
@ -630,10 +672,13 @@ Rule Lebanon 1973 1977 - May 1 0:00 1:00 S
Rule Lebanon 1978 only - Apr 30 0:00 1:00 S Rule Lebanon 1978 only - Apr 30 0:00 1:00 S
Rule Lebanon 1978 only - Sep 30 0:00 0 - Rule Lebanon 1978 only - Sep 30 0:00 0 -
Rule Lebanon 1984 1987 - May 1 0:00 1:00 S Rule Lebanon 1984 1987 - May 1 0:00 1:00 S
Rule Lebanon 1984 max - Oct 16 0:00 0 - Rule Lebanon 1984 1991 - Oct 16 0:00 0 -
Rule Lebanon 1988 only - Jun 1 0:00 1:00 S Rule Lebanon 1988 only - Jun 1 0:00 1:00 S
Rule Lebanon 1989 only - May 10 0:00 1:00 S Rule Lebanon 1989 only - May 10 0:00 1:00 S
Rule Lebanon 1990 max - May 1 0:00 1:00 S Rule Lebanon 1990 1992 - May 1 0:00 1:00 S
Rule Lebanon 1992 only - Oct 4 0:00 0 -
Rule Lebanon 1993 max - Mar lastSun 0:00 1:00 S
Rule Lebanon 1993 max - Sep lastSun 0:00 0 -
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Asia/Beirut 2:22:00 - LMT 1880 Zone Asia/Beirut 2:22:00 - LMT 1880
2:00 Lebanon EE%sT 2:00 Lebanon EE%sT
@ -673,8 +718,11 @@ Zone Indian/Maldives 4:54:00 - LMT 1880 # Male
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule Mongol 1981 1984 - Apr 1 0:00 1:00 S Rule Mongol 1981 1984 - Apr 1 0:00 1:00 S
Rule Mongol 1981 1984 - Oct 1 0:00 0 - Rule Mongol 1981 1984 - Oct 1 0:00 0 -
Rule Mongol 1985 max - Mar lastSun 2:00 1:00 S Rule Mongol 1985 1990 - Mar lastSun 2:00 1:00 S
Rule Mongol 1985 max - Sep lastSun 3:00 0 - Rule Mongol 1985 1990 - Sep lastSun 3:00 0 -
Rule Mongol 1991 max - Mar lastSun 0:00 1:00 S
Rule Mongol 1991 1995 - Sep lastSun 0:00 0 -
Rule Mongol 1996 max - Oct Fri>=22 0:00 0 -
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
#Zone Asia/Dariv 6:14:32 - LMT 1905 Aug #Zone Asia/Dariv 6:14:32 - LMT 1905 Aug
# 6:00 - DART 1978 # Dariv Time # 6:00 - DART 1978 # Dariv Time
@ -712,9 +760,9 @@ Zone Asia/Karachi 4:28:12 - LMT 1907
Rule EgyptAsia 1957 only - May 10 0:00 1:00 S Rule EgyptAsia 1957 only - May 10 0:00 1:00 S
Rule EgyptAsia 1957 1958 - Oct 1 0:00 0 - Rule EgyptAsia 1957 1958 - Oct 1 0:00 0 -
Rule EgyptAsia 1958 only - May 1 0:00 1:00 S Rule EgyptAsia 1958 only - May 1 0:00 1:00 S
Rule EgyptAsia 1959 1981 - May 1 1:00 1:00 S Rule EgyptAsia 1959 1967 - May 1 1:00 1:00 S
Rule EgyptAsia 1959 1965 - Sep 30 3:00 0 - Rule EgyptAsia 1959 1965 - Sep 30 3:00 0 -
Rule EgyptAsia 1966 max - Oct 1 3:00 0 - Rule EgyptAsia 1966 only - Oct 1 3:00 0 -
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Asia/Gaza 2:17:52 - LMT 1900 Oct Zone Asia/Gaza 2:17:52 - LMT 1900 Oct
2:00 - EET 1957 May 10 2:00 - EET 1957 May 10
@ -806,8 +854,16 @@ Rule Syria 1987 1988 - Oct 31 2:00 0 -
Rule Syria 1988 only - Mar 15 2:00 1:00 S Rule Syria 1988 only - Mar 15 2:00 1:00 S
Rule Syria 1989 only - Mar 31 2:00 1:00 S Rule Syria 1989 only - Mar 31 2:00 1:00 S
Rule Syria 1989 only - Oct 1 2:00 0 - Rule Syria 1989 only - Oct 1 2:00 0 -
Rule Syria 1990 max - Apr 1 2:00 1:00 S Rule Syria 1990 only - Apr 1 2:00 1:00 S
Rule Syria 1990 max - Sep 30 2:00 0 - Rule Syria 1990 only - Sep 30 2:00 0 -
Rule Syria 1991 only - Apr 1 0:00 1:00 S
Rule Syria 1991 1992 - Oct 1 0:00 0 -
Rule Syria 1992 only - Apr 8 0:00 1:00 S
Rule Syria 1993 only - Mar 26 0:00 1:00 S
Rule Syria 1993 only - Sep 25 0:00 0 -
# IATA SSIM (1996-09) says 1997-03-31; assume that it should be 1997-04-01.
Rule Syria 1994 max - Apr 1 0:00 1:00 S
Rule Syria 1994 max - Oct 1 0:00 0 -
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Asia/Damascus 2:25:12 - LMT 1920 Zone Asia/Damascus 2:25:12 - LMT 1920
2:00 Syria EE%sT 2:00 Syria EE%sT
@ -820,10 +876,6 @@ Zone Asia/Dushanbe 4:35:12 - LMT 1924 May 2
5:00 1:00 DUSST 1991 Sep 9 # independence 5:00 1:00 DUSST 1991 Sep 9 # independence
5:00 RussiaAsia TJ%sT 1992 5:00 RussiaAsia TJ%sT 1992
5:00 - TJT # Tajikistan Time 5:00 - TJT # Tajikistan Time
# Shanks has Dushanbe at 5:00 (6:00 summer) after 1991,
# but a cable from the American Embassy at Dushanbe
# <URL:http://www.itaiep.doc.gov/bisnis/cables/960703ti.html> (1996-07-02)
# says that Tajikistan is at 5:00. Guess no DST after 1991.
# Thailand # Thailand
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
@ -836,12 +888,10 @@ Zone Asia/Bangkok 6:42:04 - LMT 1880
Zone Asia/Ashkhabad 3:53:32 - LMT 1924 May 2 # or Ashgabat Zone Asia/Ashkhabad 3:53:32 - LMT 1924 May 2 # or Ashgabat
4:00 - ASHT 1957 Mar # Ashkhabad Time 4:00 - ASHT 1957 Mar # Ashkhabad Time
5:00 RussiaAsia ASH%sT 1991 Mar 31 2:00s 5:00 RussiaAsia ASH%sT 1991 Mar 31 2:00s
4:00 1:00 ASHST 1991 Oct 27 # independence 4:00 1:00 ASHST 1991 Sep 29 2:00s
4:00 RussiaAsia TM%sT 1992 # Turkmenistan Time 4:00 - ASHT 1991 Oct 27 # independence
4:00 - TMT 4:00 - TMT 1992 Jan 19 2:00s
# Shanks has Ashkhabad at 4:00 (5:00 summer) after 1991, but 5:00 - TMT # Turkmenistan Time
# DHL <URL:http://www.dhl.com/dhlinfo/country/turkmeni.html> (1996-07-26)
# reports 4:00. Guess no DST after 1991.
# United Arab Emirates # United Arab Emirates
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]

View File

@ -1,4 +1,4 @@
# @(#)australasia 7.29 # @(#)australasia 7.30
# This file also includes Pacific islands. # This file also includes Pacific islands.
# Notes are at the end of this file # Notes are at the end of this file
@ -35,17 +35,33 @@ Zone Australia/Perth 7:43:24 - LMT 1895 Dec
8:00 1:00 WST 1992 Mar Sun>=1 2:00s 8:00 1:00 WST 1992 Mar Sun>=1 2:00s
8:00 - WST 8:00 - WST
# Queensland # Queensland
#
# From Alex Livingston <alex@agsm.unsw.edu.au> (1996-11-01):
# I have heard or read more than once that some resort islands off the coast
# of Queensland chose to keep observing daylight-saving time even after
# Queensland ceased to.
#
# From Paul Eggert (1996-11-22):
# IATA SSIM (1993-02/1994-09) say that the Holiday Islands (Hayman, Lindeman,
# Hamilton) observed DST for two years after the rest of Queensland stopped.
# Hamilton is the largest, but there is also a Hamilton in Victoria,
# so use Lindeman.
#
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule QL 1989 1991 - Oct lastSun 2:00s 1:00 -
Rule QL 1990 1992 - Mar Sun>=1 2:00s 0 -
Rule Holiday 1989 1993 - Oct lastSun 2:00s 1:00 -
Rule Holiday 1990 1994 - Mar Sun>=1 2:00s 0 -
Zone Australia/Brisbane 10:12:08 - LMT 1895 Zone Australia/Brisbane 10:12:08 - LMT 1895
10:00 - EST 1917 Jan 1 0:01 10:00 - EST 1917 Jan 1 0:01
10:00 Aus EST 1971 Oct lastSun 2:00s 10:00 Aus EST 1971 Oct lastSun 2:00s
10:00 1:00 EST 1972 Feb lastSun 2:00s 10:00 1:00 EST 1972 Feb lastSun 2:00s
10:00 - EST 1989 Oct lastSun 2:00s 10:00 QL EST
10:00 1:00 EST 1990 Mar Sun>=1 2:00s Zone Australia/Lindeman 9:55:56 - LMT 1895
10:00 - EST 1990 Oct lastSun 2:00s 10:00 - EST 1917 Jan 1 0:01
10:00 1:00 EST 1991 Mar Sun>=1 2:00s 10:00 Aus EST 1971 Oct lastSun 2:00s
10:00 - EST 1991 Oct lastSun 2:00s 10:00 1:00 EST 1972 Feb lastSun 2:00s
10:00 1:00 EST 1992 Mar Sun>=1 2:00s 10:00 Holiday EST
10:00 - EST
# South Australia # South Australia
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
@ -289,11 +305,13 @@ Rule NZ 1990 max - Oct Sun>=1 2:00s 1:00 D
Rule NZ 1975 only - Feb 23 2:00s 0 S Rule NZ 1975 only - Feb 23 2:00s 0 S
Rule NZ 1976 1989 - Mar Sun>=1 2:00s 0 S Rule NZ 1976 1989 - Mar Sun>=1 2:00s 0 S
Rule NZ 1990 max - Mar Sun>=15 2:00s 0 S Rule NZ 1990 max - Mar Sun>=15 2:00s 0 S
Rule Chatham 1990 max - Oct Sun>=1 2:45s 1:00 D
Rule Chatham 1991 max - Mar Sun>=15 2:45s 0 S
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Pacific/Auckland 11:39:04 - LMT 1868 Zone Pacific/Auckland 11:39:04 - LMT 1868
11:30 NZ NZ%sT 1940 Sep 29 2:00 11:30 NZ NZ%sT 1940 Sep 29 2:00
12:00 NZ NZ%sT 12:00 NZ NZ%sT
Zone Pacific/Chatham 12:45 NZ CHA%sT Zone Pacific/Chatham 12:45 Chatham CHA%sT
# Antipodes Is, Kermadec Is # Antipodes Is, Kermadec Is
@ -375,9 +393,9 @@ Zone Pacific/Funafuti 11:56:52 - LMT 1901
Rule Vanuatu 1983 only - Sep 25 0:00 1:00 S Rule Vanuatu 1983 only - Sep 25 0:00 1:00 S
Rule Vanuatu 1984 1991 - Mar Sun>=23 0:00 0 - Rule Vanuatu 1984 1991 - Mar Sun>=23 0:00 0 -
Rule Vanuatu 1984 only - Oct 23 0:00 1:00 S Rule Vanuatu 1984 only - Oct 23 0:00 1:00 S
Rule Vanuatu 1985 1990 - Sep Sun>=23 0:00 1:00 S Rule Vanuatu 1985 1991 - Sep Sun>=23 0:00 1:00 S
Rule Vanuatu 1991 max - Sep lastSun 0:00 1:00 S Rule Vanuatu 1992 1993 - Jan Sun>=23 0:00 0 -
Rule Vanuatu 1992 max - Mar lastSun 0:00 0 - Rule Vanuatu 1992 only - Oct Sun>=23 0:00 1:00 S
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Pacific/Efate 11:13:16 - LMT 1912 Jan 13 # Vila Zone Pacific/Efate 11:13:16 - LMT 1912 Jan 13 # Vila
11:00 Vanuatu VU%sT # Vanuatu Time 11:00 Vanuatu VU%sT # Vanuatu Time
@ -400,11 +418,19 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901
# go ahead and edit the file (and please send any changes to # go ahead and edit the file (and please send any changes to
# tz@elsie.nci.nih.gov for general use in the future). # tz@elsie.nci.nih.gov for general use in the future).
# From Paul Eggert <eggert@twinsun.com> (1996-01-22); # From Paul Eggert <eggert@twinsun.com> (1996-11-22):
# A good source for time zone historical data outside the U.S. is # A good source for time zone historical data outside the U.S. is
# Thomas G. Shanks, The International Atlas (3rd edition), # Thomas G. Shanks, The International Atlas (3rd edition),
# San Diego: ACS Publications, Inc. (1991). # San Diego: ACS Publications, Inc. (1991).
# Except where noted, it is the source for the data above. #
# Gwillim Law <LAW@encmail.encompass.com> writes that a good source
# for recent time zone data is the International Air Transport
# Association's Standard Schedules Information Manual (IATA SSIM),
# published semiannually. Law sent in several helpful summaries
# of the IATA's data after 1990.
#
# Except where otherwise noted, Shanks is the source for entries through 1990,
# and IATA SSIM is the source for entries after 1990.
# #
# Another source occasionally used is Edward W. Whitman, World Time Differences, # Another source occasionally used is Edward W. Whitman, World Time Differences,
# Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated), which # Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated), which
@ -799,8 +825,11 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901
# time on both the first Sunday in October and the third Sunday in March. # time on both the first Sunday in October and the third Sunday in March.
# As with Australia, we'll assume the tradition is 2:00s, not 2:00. # As with Australia, we'll assume the tradition is 2:00s, not 2:00.
# #
# Shanks gives no data for Chatham, but usno1995 says it's +12:45/+13:45. # From Paul Eggert (1996-11-22):
# Guess NZ switchover rules for now. # Shanks gives no data for Chatham; usno1989 says it's +12:45,
# usno1995 says it's +12:45/+13:45, and IATA SSIM (1991/1996)
# gives the NZ rules but with transitions at 2:45 local standard time.
# Guess that they adopted DST in 1990.
############################################################################### ###############################################################################

View File

@ -1,15 +1,19 @@
# @(#)etcetera 7.5 # @(#)etcetera 7.6
# All of these are set up just so people can "zic -l" to a timezone # These entries are mostly present for historical reasons, so that
# that's right for their area, even if it doesn't have a name or DST rules # people in areas not otherwise covered by the tz files could "zic -l"
# (half hour zones are too much to bother with -- when someone asks!) # to a time zone that was right for their area. These days, the
# tz files cover almost all the inhabited world, so there's little
# need now for the entries that are not on UTC.
Zone Etc/GMT 0 - GMT Zone Etc/GMT 0 - GMT
Link Etc/GMT Etc/UTC Zone Etc/UTC 0 - UTC
Link Etc/GMT Etc/UCT Zone Etc/UCT 0 - UCT
Link Etc/GMT Etc/Universal
Link Etc/UTC Etc/Universal
Link Etc/UTC Etc/Zulu
Link Etc/GMT Etc/Greenwich Link Etc/GMT Etc/Greenwich
Link Etc/GMT Etc/Zulu
Link Etc/GMT Etc/GMT-0 Link Etc/GMT Etc/GMT-0
Link Etc/GMT Etc/GMT+0 Link Etc/GMT Etc/GMT+0
Link Etc/GMT Etc/GMT0 Link Etc/GMT Etc/GMT0

View File

@ -1,14 +1,22 @@
# @(#)europe 7.40 # @(#)europe 7.41
# This data is by no means authoritative; if you think you know better, # This data is by no means authoritative; if you think you know better,
# go ahead and edit the file (and please send any changes to # go ahead and edit the file (and please send any changes to
# tz@elsie.nci.nih.gov for general use in the future). # tz@elsie.nci.nih.gov for general use in the future).
# From Paul Eggert <eggert@twinsun.com> (1996-09-03): # From Paul Eggert <eggert@twinsun.com> (1996-11-22):
# A good source for time zone historical data outside the U.S. is # A good source for time zone historical data outside the U.S. is
# Thomas G. Shanks, The International Atlas (3rd edition), # Thomas G. Shanks, The International Atlas (3rd edition),
# San Diego: ACS Publications, Inc. (1991). # San Diego: ACS Publications, Inc. (1991).
# Except where otherwise noted, it is the source for the data below. #
# Gwillim Law <LAW@encmail.encompass.com> writes that a good source
# for recent time zone data is the International Air Transport
# Association's Standard Schedules Information Manual (IATA SSIM),
# published semiannually. Law sent in several helpful summaries
# of the IATA's data after 1990.
#
# Except where otherwise noted, Shanks is the source for entries through 1990,
# and IATA SSIM is the source for entries after 1990.
# #
# Another source occasionally used is Edward W. Whitman, World Time Differences, # Another source occasionally used is Edward W. Whitman, World Time Differences,
# Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated), which # Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated), which
@ -27,6 +35,7 @@
# 0:00 WET WEST Western Europe # 0:00 WET WEST Western Europe
# 1:00 CET CEST Central Europe # 1:00 CET CEST Central Europe
# 2:00 EET EEST Eastern Europe # 2:00 EET EEST Eastern Europe
# 3:00 MSK MSD Moscow
# #
# See the `africa' file for time zone naming and abbreviation conventions. # See the `africa' file for time zone naming and abbreviation conventions.
# #
@ -826,6 +835,14 @@ Rule C-Eur 1979 1995 - Sep lastSun 2:00s 0 -
Rule C-Eur 1981 max - Mar lastSun 2:00s 1:00 S Rule C-Eur 1981 max - Mar lastSun 2:00s 1:00 S
Rule C-Eur 1996 max - Oct lastSun 2:00s 0 - Rule C-Eur 1996 max - Oct lastSun 2:00s 0 -
# E-Eur differs from EU only in that E-Eur switches at midnight local time.
Rule E-Eur 1977 1980 - Apr Sun>=1 0:00 1:00 S
Rule E-Eur 1977 only - Sep lastSun 0:00 0 -
Rule E-Eur 1978 only - Oct 1 0:00 0 -
Rule E-Eur 1979 1995 - Sep lastSun 0:00 0 -
Rule E-Eur 1981 max - Mar lastSun 0:00 1:00 S
Rule E-Eur 1996 max - Oct lastSun 0:00 0 -
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule Russia 1917 only - Jul 1 23:00 1:00 MST # Moscow Summer Time Rule Russia 1917 only - Jul 1 23:00 1:00 MST # Moscow Summer Time
Rule Russia 1917 only - Dec 28 0:00 0 MMT # Moscow Mean Time Rule Russia 1917 only - Dec 28 0:00 0 MMT # Moscow Mean Time
@ -836,15 +853,20 @@ Rule Russia 1919 only - Jul 1 2:00 1:00 S
Rule Russia 1919 only - Aug 16 0:00 0 - Rule Russia 1919 only - Aug 16 0:00 0 -
Rule Russia 1921 only - Feb 14 23:00 1:00 S Rule Russia 1921 only - Feb 14 23:00 1:00 S
# Shanks gives 1921 Mar 21 for the following transition. # Shanks gives 1921 Mar 21 for the following transition.
# From Andrew A. Chernov <ache@astral.msk.su> (1993-11-12): # From Andrey A. Chernov <ache@astral.msk.su> (1993-11-12):
# My sources says, that it is Mar 20, not 21. # My sources says, that it is Mar 20, not 21.
Rule Russia 1921 only - Mar 20 23:00 2:00 DS Rule Russia 1921 only - Mar 20 23:00 2:00 DS
Rule Russia 1921 only - Sep 1 0:00 1:00 S Rule Russia 1921 only - Sep 1 0:00 1:00 S
Rule Russia 1921 only - Oct 1 0:00 0 - Rule Russia 1921 only - Oct 1 0:00 0 -
Rule Russia 1981 1984 - Apr 1 0:00 1:00 S Rule Russia 1981 1984 - Apr 1 0:00 1:00 S
Rule Russia 1981 1983 - Oct 1 0:00 0 - Rule Russia 1981 1983 - Oct 1 0:00 0 -
Rule Russia 1984 max - Sep lastSun 2:00s 0 - Rule Russia 1984 1991 - Sep lastSun 2:00s 0 -
Rule Russia 1985 max - Mar lastSun 2:00s 1:00 S Rule Russia 1985 1991 - Mar lastSun 2:00s 1:00 S
Rule Russia 1992 only - Mar lastSat 23:00 1:00 S
Rule Russia 1992 only - Sep lastSat 23:00 0 -
Rule Russia 1993 max - Mar lastSun 2:00s 1:00 S
Rule Russia 1993 1995 - Sep lastSun 2:00s 0 -
Rule Russia 1996 max - Oct lastSun 2:00s 0 -
# These are for backward compatibility with older versions. # These are for backward compatibility with older versions.
@ -913,7 +935,8 @@ Rule Albania 1984 only - Oct 1 0:00 0 -
Zone Europe/Tirane 1:19:20 - LMT 1914 Zone Europe/Tirane 1:19:20 - LMT 1914
1:00 - CET 1940 Jun 16 1:00 - CET 1940 Jun 16
1:00 Albania CE%sT 1985 Mar 31 1:00 1:00 Albania CE%sT 1985 Mar 31 1:00
1:00 W-Eur CE%sT 1:00 W-Eur CE%sT 1991
1:00 EU CE%sT
# Andorra # Andorra
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
@ -944,11 +967,13 @@ Zone Europe/Vienna 1:05:20 - LMT 1893 Apr
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Europe/Minsk 1:50:16 - LMT 1880 Zone Europe/Minsk 1:50:16 - LMT 1880
2:30:20 Russia %s 1919 Jul 1 2:00 2:30:20 Russia %s 1919 Jul 1 2:00
3:00 Russia MOS%sT 1922 Oct # Moscow Time 3:00 Russia MSK/MSD 1922 Oct
2:00 - EET 1930 Jun 21 2:00 - EET 1930 Jun 21
3:00 Russia MOS%sT 1991 Mar 31 2:00s 3:00 Russia MSK/MSD 1991 Mar 31 2:00s
2:00 1:00 EEST 1991 Sep 29 2:00s 2:00 1:00 EEST 1991 Sep 29 2:00s
2:00 C-Eur EE%sT 2:00 - EET 1992 Mar 29 0:00
2:00 1:00 EEST 1992 Sep 27 0:00
2:00 Russia EE%sT
# Belgium # Belgium
# Whitman and Shanks disagree; go with Shanks, usually. # Whitman and Shanks disagree; go with Shanks, usually.
@ -1021,7 +1046,8 @@ Zone Europe/Sofia 1:33:16 - LMT 1880
1:00 C-Eur CE%sT 1945 Apr 2 3:00 1:00 C-Eur CE%sT 1945 Apr 2 3:00
2:00 - EET 1979 Mar 31 23:00 2:00 - EET 1979 Mar 31 23:00
2:00 Bulg EE%sT 1982 Sep 26 2:00 2:00 Bulg EE%sT 1982 Sep 26 2:00
2:00 C-Eur EE%sT 2:00 C-Eur EE%sT 1991
2:00 E-Eur EE%sT
# Croatia # Croatia
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
@ -1077,30 +1103,54 @@ Zone Europe/Copenhagen 0:50:20 - LMT 1890
Zone Atlantic/Faeroe -0:27:04 - LMT 1908 Jan 11 # Torshavn Zone Atlantic/Faeroe -0:27:04 - LMT 1908 Jan 11 # Torshavn
0:00 - WET 1981 0:00 - WET 1981
0:00 EU WE%sT 0:00 EU WE%sT
Zone America/Scoresbysund -1:29:00 - LMT 1916 Jul 28 #
# From Paul Eggert (1996-11-22):
# Greenland joined the EU as part of Denmark, obtained home rule on 1979-05-01,
# and left the EU on 1985-02-01. It therefore should have been using EU
# rules at least through 1984. Shanks says Scoresbysund and Godthab
# used C-Eur rules after 1980, but IATA SSIM (1991/1996) says they use EU
# rules since at least 1991. Assume EU rules since 1980.
#
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule Thule 1993 max - Apr Sun>=1 2:00 1:00 D
Rule Thule 1993 max - Oct lastSun 2:00 0 S
#
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone America/Scoresbysund -1:29:00 - LMT 1916 Jul 28 # Ittoqqortoormit
-2:00 - CGT 1980 Apr 6 2:00 -2:00 - CGT 1980 Apr 6 2:00
-2:00 C-Eur CG%sT 1981 Mar 29 -2:00 C-Eur CG%sT 1981 Mar 29
-1:00 C-Eur EG%sT -1:00 EU EG%sT
Zone America/Godthab -3:26:56 - LMT 1916 Jul 28 Zone America/Godthab -3:26:56 - LMT 1916 Jul 28 # Nuuk
-3:00 - WGT 1980 Apr 6 2:00 -3:00 - WGT 1980 Apr 6 2:00
-3:00 C-Eur WG%sT -3:00 EU WG%sT
Zone America/Thule -4:35:08 - LMT 1916 Jul 28 Zone America/Thule -4:35:08 - LMT 1916 Jul 28 # Pituffik
-4:00 - AST -4:00 Thule A%sT
# Estonia # Estonia
# From Peter Ilieve <peter@memex.co.uk> (1994-10-15): # From Peter Ilieve <peter@memex.co.uk> (1994-10-15):
# A relative in Tallinn confirms the accuracy of the data for 1989 onwards # A relative in Tallinn confirms the accuracy of the data for 1989 onwards
# [through 1994] and gives the legal authority for it, # [through 1994] and gives the legal authority for it,
# a regulation of the Government of Estonia, No. 111 of 1989.... # a regulation of the Government of Estonia, No. 111 of 1989....
#
# From Peter Ilieve <peter@aldie.co.uk> (1996-10-28):
# [IATA SSIM (1992/1996) claims that the Baltic republics switch at 01:00s,
# but a relative confirms that Estonia still switches at 02:00s, writing:]
# ``I do not [know] exactly but there are some little different
# (confusing) rules for International Air and Railway Transport Schedules
# conversion in Sunday connected with end of summer time in Estonia....
# A discussion is running about the summer time efficiency and effect on
# human physiology. It seems that Estonia maybe will not change to
# summer time next spring.''
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Europe/Tallinn 1:39:00 - LMT 1880 Zone Europe/Tallinn 1:39:00 - LMT 1880
1:39:00 - TMT 1918 Feb # Tallinn Mean Time 1:39:00 - TMT 1918 Feb # Tallinn Mean Time
1:00 C-Eur CE%sT 1919 Jul 1:00 C-Eur CE%sT 1919 Jul
1:39:00 - TMT 1921 May 1:39:00 - TMT 1921 May
2:00 - EET 1940 Aug 6 2:00 - EET 1940 Aug 6
3:00 - MOST 1941 Sep 15 # Moscow Time 3:00 - MSK 1941 Sep 15
1:00 C-Eur CE%sT 1944 Sep 22 1:00 C-Eur CE%sT 1944 Sep 22
3:00 Russia MOS%sT 1989 Mar 26 2:00s 3:00 Russia MSK/MSD 1989 Mar 26 2:00s
2:00 1:00 EEST 1989 Sep 24 2:00s 2:00 1:00 EEST 1989 Sep 24 2:00s
2:00 C-Eur EE%sT 2:00 C-Eur EE%sT
@ -1418,6 +1468,14 @@ Link Europe/Rome Europe/Vatican
Link Europe/Rome Europe/San_Marino Link Europe/Rome Europe/San_Marino
# Latvia # Latvia
# From Paul Eggert (1996-11-22):
# Rules after 1991 are by extension from Shanks. They contradict
# IATA SSIM (1992/1996), which claims Latvia uses W-Eur rules, but
# Peter Ilieve's relative writes that Latvia switched in September this year,
# so we'll assume that the old C-Eur-style rules still apply.
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule Latvia 1992 max - Mar lastSun 2:00s 1:00 S
Rule Latvia 1992 max - Sep lastSun 2:00s 0 -
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Europe/Riga 1:36:24 - LMT 1880 Zone Europe/Riga 1:36:24 - LMT 1880
1:36:24 - RMT 1918 Apr 15 2:00 #Riga Mean Time 1:36:24 - RMT 1918 Apr 15 2:00 #Riga Mean Time
@ -1426,11 +1484,11 @@ Zone Europe/Riga 1:36:24 - LMT 1880
1:36:24 1:00 LST 1919 May 22 3:00 1:36:24 1:00 LST 1919 May 22 3:00
1:36:24 - RMT 1926 May 11 1:36:24 - RMT 1926 May 11
2:00 - EET 1940 Aug 5 2:00 - EET 1940 Aug 5
3:00 - MOST 1941 Jul # Moscow Time 3:00 - MSK 1941 Jul
1:00 C-Eur CE%sT 1944 Aug 8 1:00 C-Eur CE%sT 1944 Aug 8
3:00 Russia MOS%sT 1991 Mar 31 2:00s 3:00 Russia MSK/MSD 1991 Mar 31 2:00s
2:00 1:00 EEST 1991 Sep 29 2:00s 2:00 1:00 EEST 1991 Sep 29 2:00s
2:00 C-Eur EE%sT 2:00 Latvia EE%sT
# Liechtenstein # Liechtenstein
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
@ -1446,11 +1504,14 @@ Zone Europe/Vilnius 1:41:16 - LMT 1880
1:00 - CET 1920 Jul 12 1:00 - CET 1920 Jul 12
2:00 - EET 1920 Oct 9 2:00 - EET 1920 Oct 9
1:00 - CET 1940 Aug 3 1:00 - CET 1940 Aug 3
3:00 - MOST 1941 Jun 24 # Moscow Time 3:00 - MSK 1941 Jun 24
1:00 C-Eur CE%sT 1944 Aug 1:00 C-Eur CE%sT 1944 Aug
3:00 Russia MOS%sT 1991 Mar 31 2:00s 3:00 Russia MSK/MSD 1991 Mar 31 2:00s
2:00 1:00 EEST 1991 Sep 29 2:00s 2:00 1:00 EEST 1991 Sep 29 2:00s
2:00 C-Eur EE%sT 2:00 C-Eur EE%sT
# From Paul Eggert (1996-11-22):
# IATA SSIM (1992/1996) says Lithuania uses W-Eur rules, but since it is
# known to be wrong about Estonia and Latvia, assume it's wrong here too.
# Luxembourg # Luxembourg
# Whitman disagrees with most of these dates in minor ways; go with Shanks. # Whitman disagrees with most of these dates in minor ways; go with Shanks.
@ -1517,9 +1578,9 @@ Zone Europe/Malta 0:58:04 - LMT 1893 Nov 2 # Valletta
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Europe/Chisinau 1:55:20 - LMT 1924 May 2 Zone Europe/Chisinau 1:55:20 - LMT 1924 May 2
2:00 - EET 1930 Jun 21 2:00 - EET 1930 Jun 21
3:00 Russia MOS%sT 1991 Mar 31 2:00s # Moscow Time 3:00 Russia MSK/MSD 1991 Mar 31 2:00s
2:00 1:00 EEST 1991 Sep 29 2:00s 2:00 1:00 EEST 1991 Sep 29 2:00s
2:00 C-Eur EE%sT 2:00 E-Eur EE%sT
# Monaco # Monaco
# Shanks gives 0:09 for Paris Mean Time; go with Howse's more precise 0:09:21. # Shanks gives 0:09 for Paris Mean Time; go with Howse's more precise 0:09:21.
@ -1631,9 +1692,30 @@ Zone Europe/Warsaw 1:24:00 - LMT 1880
1:00 C-Eur CE%sT 1944 Oct 1:00 C-Eur CE%sT 1944 Oct
1:00 Poland CE%sT 1977 Apr 3 1:00 1:00 Poland CE%sT 1977 Apr 3 1:00
1:00 W-Eur CE%sT 1:00 W-Eur CE%sT
# IATA SSIM (1991/1996) gives EU rules, but the _The Warsaw Voice_
# <URL:http://www.contact.waw.pl/voice/v361/NewsInBrief.shtml>
# (1995-09-24) says the autumn 1995 switch was at 02:00.
# Stick with W-Eur for now.
# Portugal # Portugal
# Gregorian calendar adopted 1582-10-15. # Gregorian calendar adopted 1582-10-15.
#
# From Rui Pedro Salgueiro <rps@inescca.inescc.pt> (1992-11-12):
# Portugal has recently (September, 27) changed timezone
# (from WET to MET or CET) to harmonize with EEC.
#
# Martin Bruckmann <martin@ua.pt> (1996-02-29) reports via Peter Ilieve
# that Portugal is reverting to 0:00 by not moving its clocks this spring.
# The new Prime Minister was fed up with getting up in the dark in the winter.
#
# From Paul Eggert (1996-11-12):
# IATA SSIM (1991-09) reports several 1991-09 and 1992-09 transitions
# at 02:00u, not 01:00u. Assume that these are typos.
# IATA SSIM (1991/1992) reports that the Azores were at -1:00.
# IATA SSIM (1993-02) says +0:00; later issues (through 1996-09) say -1:00.
# Guess that the Azores changed to EU rules in 1992 (since that's when Portugal
# harmonized with the EU), and that they stayed +0:00 that winter.
#
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule Port 1916 only - Jun 17 23:00 1:00 S Rule Port 1916 only - Jun 17 23:00 1:00 S
# Whitman gives 1916 Oct 31; go with Shanks. # Whitman gives 1916 Oct 31; go with Shanks.
@ -1701,23 +1783,16 @@ Zone Europe/Lisbon -0:36:32 - LMT 1884
0:00 Port WE%sT 1966 Apr 3 2:00 0:00 Port WE%sT 1966 Apr 3 2:00
1:00 - CET 1976 Sep 26 1:00 1:00 - CET 1976 Sep 26 1:00
0:00 Port WE%sT 1983 Sep 25 1:00s 0:00 Port WE%sT 1983 Sep 25 1:00s
# From Rui Pedro Salgueiro <rps@inescca.inescc.pt> (1992-11-12): 0:00 W-Eur WE%sT 1992 Sep 27 1:00s
# Portugal has recently (September, 27) changed timezone
# (from WET to MET or CET) to harmonize with EEC.
0:00 EU WE%sT 1992 Sep 27 1:00s
# Martin Bruckmann <martin@ua.pt> (1996-02-29) reports via Peter Ilieve
# that Portugal is reverting to 0:00 by not moving its clocks this spring.
# The new Prime Minister was fed up with getting up in the dark in the winter.
1:00 EU CE%sT 1996 Mar 31 1:00u 1:00 EU CE%sT 1996 Mar 31 1:00u
0:00 EU WE%sT 0:00 EU WE%sT
# We don't know what happened to Madeira or the Azores,
# so we'll just use Shanks for now.
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Atlantic/Azores -1:42:40 - LMT 1884 # Ponta Delgada Zone Atlantic/Azores -1:42:40 - LMT 1884 # Ponta Delgada
-1:55 - HMT 1911 May 24 # Horta Mean Time -1:55 - HMT 1911 May 24 # Horta Mean Time
-2:00 Port AZO%sT 1966 Apr 3 2:00 # Azores Time -2:00 Port AZO%sT 1966 Apr 3 2:00 # Azores Time
-1:00 Port AZO%sT 1983 Sep 25 1:00s -1:00 Port AZO%sT 1983 Sep 25 1:00s
-1:00 W-Eur AZO%sT -1:00 W-Eur AZO%sT 1992 Sep 27 1:00s
0:00 EU WE%sT 1993 Mar 28 1:00u
-1:00 EU AZO%sT
Zone Atlantic/Madeira -1:07:36 - LMT 1884 # Funchal Zone Atlantic/Madeira -1:07:36 - LMT 1884 # Funchal
-1:08 - FMT 1911 May 24 # Funchal Mean Time -1:08 - FMT 1911 May 24 # Funchal Mean Time
-1:00 Port MAD%sT 1966 Apr 3 2:00 # Madeira Time -1:00 Port MAD%sT 1966 Apr 3 2:00 # Madeira Time
@ -1733,38 +1808,62 @@ Rule Romania 1979 only - May 27 0:00 1:00 S
Rule Romania 1979 only - Sep lastSun 0:00 0 - Rule Romania 1979 only - Sep lastSun 0:00 0 -
Rule Romania 1980 only - Apr 5 23:00 1:00 S Rule Romania 1980 only - Apr 5 23:00 1:00 S
Rule Romania 1980 only - Sep lastSun 1:00 0 - Rule Romania 1980 only - Sep lastSun 1:00 0 -
Rule Romania 1991 1993 - Mar lastSun 0:00s 1:00 S
Rule Romania 1991 1993 - Sep lastSun 0:00s 0 -
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Europe/Bucharest 1:44:24 - LMT 1891 Oct Zone Europe/Bucharest 1:44:24 - LMT 1891 Oct
1:44:24 - BMT 1931 Jul 24 # Bucharest MT 1:44:24 - BMT 1931 Jul 24 # Bucharest MT
2:00 Romania EE%sT 1981 Mar 29 2:00s 2:00 Romania EE%sT 1981 Mar 29 2:00s
2:00 C-Eur EE%sT 2:00 C-Eur EE%sT 1991
2:00 Romania EE%sT 1994
2:00 E-Eur EE%sT
# Russia # Russia
# From Shanks (1991): # From Shanks (1991):
# In 1929 the Soviet Union instituted a 5 day week; in 1932 it instituted # In 1929 the Soviet Union instituted a 5 day week; in 1932 it instituted
# a 6 day week; on 1940-06-27 it returned to the Gregorian week. # a 6 day week; on 1940-06-27 it returned to the Gregorian week.
# #
# From Paul Eggert <eggert@twinsun.com> (1996-09-03): # From Paul Eggert <eggert@twinsun.com> (1996-11-22):
# Moscow rules after 1991 are from Andrew A. Chernov <ache@astral.msk.su>. # Except for Moscow after 1919-07-01, I invented the time zone abbreviations,
# I invented the time zone names, and (unless otherwise specified) # and (unless otherwise specified) guessed what happened after 1991.
# guessed what happened after 1991; the clocks were chaotic, and we know little. # Moscow time zone abbreviations after 1919-07-01, and Moscow rules after 1991,
# The rest is from Shanks. # are from Andrey A. Chernov. The rest is from Shanks and the IATA.
#
# From Andrey A. Chernov <ache@nagual.ru> (1996-10-04):
# `MSK' and `MSD' were born and used initially on Moscow computers with
# Unix-like OSes by several developer groups (e.g. Demos group, Kiae group)....
# The next step was the UUCP network, the Relcom predecessor
# (used mainly for mail), and MSK/MSD was actively used there.
#
# From Chris Carrier <72157.3334@CompuServe.COM> (1996-10-30):
# According to a friend of mine who rode the Trans-Siberian Railroad from
# Moscow to Irkutsk in 1995, public air and rail transport in Russia ...
# still follows Moscow time, no matter where in Russia it is located.
# #
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Europe/Moscow 2:30:20 - LMT 1880 Zone Europe/Kaliningrad 1:22:00 - LMT 1893 Apr
2:30:20 Russia %s 1919 Jul 1 2:00 1:00 C-Eur CE%sT 1945
3:00 Russia MOS%sT 1922 Oct # Moscow TIme 2:00 Poland CET 1946
2:00 - EET 1930 Jun 21 3:00 Russia MSK/MSD 1991 Mar 31 2:00s
3:00 Russia MOS%sT 1991 Mar 31 2:00s
2:00 1:00 EEST 1991 Sep 29 2:00s 2:00 1:00 EEST 1991 Sep 29 2:00s
2:00 - EET 1992 Jan 19 2:00s 2:00 - EET 1992 Jan 19 2:00s
3:00 Russia MOS%sT 3:00 Russia MSK/MSD 1994
Zone Europe/Kuybyshev 3:20:36 - LMT 1924 May 2 # IATA SSIM (1994-02) says Kaliningrad is at UTC+2; guess 1994 change.
2:00 Russia EE%sT
Zone Europe/Moscow 2:30:20 - LMT 1880
2:30:20 Russia %s 1919 Jul 1 2:00
3:00 Russia MSK/MSD 1922 Oct
2:00 - EET 1930 Jun 21
3:00 Russia MSK/MSD 1991 Mar 31 2:00s
2:00 1:00 EEST 1991 Sep 29 2:00s
2:00 - EET 1992 Jan 19 2:00s
3:00 Russia MSK/MSD
Zone Europe/Samara 3:20:36 - LMT 1924 May 2
3:00 - KUYT 1957 Mar # Kuybyshev Time 3:00 - KUYT 1957 Mar # Kuybyshev Time
4:00 Russia KUY%sT 1991 Mar 31 2:00s 4:00 Russia KUY%sT 1991 Mar 31 2:00s
3:00 1:00 KUYST 1991 Sep 29 2:00s 3:00 1:00 KUYST 1991 Sep 29 2:00s
3:00 - KUYT 1992 Jan 19 2:00s 3:00 - SAMT 1992 Jan 19 2:00s # Samara Time
4:00 Russia KUY%sT 4:00 Russia SAM%sT
Zone Asia/Yekaterinburg 4:02:34 - LMT 1924 May 2 Zone Asia/Yekaterinburg 4:02:34 - LMT 1924 May 2
4:00 - SVET 1957 Mar # Sverdlovsk Time 4:00 - SVET 1957 Mar # Sverdlovsk Time
5:00 Russia SVE%sT 1991 Mar 31 2:00s 5:00 Russia SVE%sT 1991 Mar 31 2:00s
@ -1916,6 +2015,8 @@ Zone Atlantic/Canary -1:01:36 - LMT 1922 Mar # Las Palmas de Gran C.
0:00 - WET 1980 Apr 6 0:00s 0:00 - WET 1980 Apr 6 0:00s
0:00 1:00 WEST 1980 Sep 28 0:00s 0:00 1:00 WEST 1980 Sep 28 0:00s
0:00 EU WE%sT 0:00 EU WE%sT
# IATA SSIM (1996-09) says the Canaries switch at 2:00u, not 1:00u.
# Ignore this for now, as the Canaries are part of the EU.
# Sweden # Sweden
@ -2026,7 +2127,8 @@ Zone Europe/Istanbul 1:55:52 - LMT 1880
2:00 Turkey EE%sT 1978 Oct 15 2:00 Turkey EE%sT 1978 Oct 15
3:00 Turkey TR%sT 1985 Apr 20 # Turkey Time 3:00 Turkey TR%sT 1985 Apr 20 # Turkey Time
2:00 Turkey EE%sT 1986 2:00 Turkey EE%sT 1986
2:00 C-Eur EE%sT 2:00 C-Eur EE%sT 1991
2:00 EU EE%sT
Link Europe/Istanbul Asia/Istanbul # Istanbul is in both continents. Link Europe/Istanbul Asia/Istanbul # Istanbul is in both continents.
# Ukraine # Ukraine
@ -2053,23 +2155,28 @@ Rule Crimea 1921 only - Feb 14 23:00 1:00 CST
Rule Crimea 1921 only - Mar 21 23:00 2:00 CDST Rule Crimea 1921 only - Mar 21 23:00 2:00 CDST
Rule Crimea 1921 only - Sep 1 0:00 1:00 CST Rule Crimea 1921 only - Sep 1 0:00 1:00 CST
Rule Crimea 1921 only - Oct 1 0:00 0 NMT Rule Crimea 1921 only - Oct 1 0:00 0 NMT
Rule Crimea 1996 max - Mar lastSun 0:00u 1:00 -
Rule Crimea 1996 max - Oct lastSun 0:00u 0 -
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Europe/Kiev 2:02:04 - LMT 1880 Zone Europe/Kiev 2:02:04 - LMT 1880
2:02:04 Ukraine %s 1924 May 2 2:02:04 Ukraine %s 1924 May 2
2:00 - EET 1930 Jun 21 2:00 - EET 1930 Jun 21
3:00 Russia MOS%sT 1990 Jul 17 # Moscow Time 3:00 Russia MSK/MSD 1990 Jul 17
2:00 C-Eur EE%sT 2:00 E-Eur EE%sT 1996
2:00 EU EE%sT
Zone Europe/Simferopol 2:16:24 - LMT 1880 Zone Europe/Simferopol 2:16:24 - LMT 1880
2:08:00 Crimea %s 1924 May 2 2:08:00 Crimea %s 1924 May 2
2:00 - EET 1930 Jun 21 2:00 - EET 1930 Jun 21
3:00 Russia MOS%sT 1991 Mar 31 2:00s 3:00 Russia MSK/MSD 1991 Mar 31 2:00s
2:00 1:00 EEST 1991 Sep 29 2:00s 2:00 1:00 EEST 1991 Sep 29 2:00s
# From Paul Eggert <eggert@twinsun.com> (1994-05-28): # From Paul Eggert <eggert@twinsun.com> (1996-10-21):
# Today's _Economist_ (p 45) reports that Crimea switched # The _Economist_ (1994-05-28, p 45) reports that most of Crimea switched
# from Kiev to Moscow time sometime after the January elections. # from Kiev to Moscow time sometime after the January 1994 elections.
# For now, we'll guess that there was a 2-hour leap forward on March 27. # For now, guess it changed Feb 1.
2:00 C-Eur EE%sT 1994 Mar 27 2:00s 2:00 C-Eur EE%sT 1994 Feb
3:00 Russia MOS%sT # From IATA SSIM (1994/1996), which also says that Kerch is still like Kiev.
3:00 E-Eur MSK/MSD 1996
3:00 Crimea MSK/MSD
# Yugoslavia # Yugoslavia
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]

View File

@ -1,4 +1,4 @@
# @(#)northamerica 7.28 # @(#)northamerica 7.29
# also includes Central America and the Caribbean # also includes Central America and the Caribbean
# This data is by no means authoritative; if you think you know better, # This data is by no means authoritative; if you think you know better,
@ -462,11 +462,19 @@ Link Pacific/Honolulu HST
################################################################################ ################################################################################
# From Paul Eggert <eggert@twinsun.com> (1993-11-18): # From Paul Eggert <eggert@twinsun.com> (1996-11-22):
# A good source for time zone historical data outside the US is # A good source for time zone historical data outside the US is
# Thomas G. Shanks, The International Atlas (3rd edition), # Thomas G. Shanks, The International Atlas (3rd edition),
# San Diego: ACS Publications, Inc. (1991). # San Diego: ACS Publications, Inc. (1991).
# Except where otherwise noted, it is the source for the data below. #
# Gwillim Law <LAW@encmail.encompass.com> writes that a good source
# for recent time zone data is the International Air Transport
# Association's Standard Schedules Information Manual (IATA SSIM),
# published semiannually. Law sent in several helpful summaries
# of the IATA's data after 1990.
#
# Except where otherwise noted, Shanks is the source for entries through 1990,
# and IATA SSIM is the source for entries after 1990.
# #
# Another source occasionally used is Edward W. Whitman, World Time Differences, # Another source occasionally used is Edward W. Whitman, World Time Differences,
# Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated), which # Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated), which
@ -523,7 +531,7 @@ Rule Canada 1974 max - Oct lastSun 2:00 0 S
Rule Canada 1987 max - Apr Sun>=1 2:00 1:00 D Rule Canada 1987 max - Apr Sun>=1 2:00 1:00 D
# Newfoundland # Newfoundland (except Labrador)
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule StJohns 1917 1918 - Apr Sun>=8 2:00 1:00 D Rule StJohns 1917 1918 - Apr Sun>=8 2:00 1:00 D
@ -560,11 +568,23 @@ Rule StJohns 1989 max - Apr Sun>=1 2:00 1:00 D
# St John's has an apostrophe, but Posix file names can't have apostrophes. # St John's has an apostrophe, but Posix file names can't have apostrophes.
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone America/St_Johns -3:30:52 - LMT 1884 Zone America/St_Johns -3:30:52 - LMT 1884
-3:31 StJohns N%sT 1935 Mar 30 -3:30:52 StJohns N%sT 1935 Mar 30
-3:30 StJohns N%sT -3:30 StJohns N%sT
# Labrador, New Brunswick, Nova Scotia, Prince Edward I # east Labrador
# The name `Happy Valley-Goose Bay' is too long; use `Goose Bay'.
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone America/Goose_Bay -4:01:40 - LMT 1884 # Happy Valley-Goose Bay
-3:30:52 StJohns NST 1919
-3:30:52 - NST 1935 Mar 30
-3:30 - NST 1936
-3:30 StJohns N%sT 1966 Mar 15 2:00
-4:00 StJohns A%sT
# west Labrador, New Brunswick, Nova Scotia, Prince Edward I
# From Paul Eggert (1996-06-12): # From Paul Eggert (1996-06-12):
# Shanks writes that since 1970 most of this region has been like Halifax. # Shanks writes that since 1970 most of this region has been like Halifax.
@ -825,9 +845,17 @@ Zone America/Dawson_Creek -8:00:56 - LMT 1884
# Northwest Territories, Yukon # Northwest Territories, Yukon
# From Paul Eggert (1996-06-12): # From Paul Eggert (1996-10-07):
# Dawson switched to PST in 1973. Inuvik switched to MST in 1979. # Dawson switched to PST in 1973. Inuvik switched to MST in 1979.
# Shanks's table for Watson Lake is corrupted, so we have no data there. # Shanks's table for Watson Lake is corrupted, so we have no data there.
# Mathew Englander <mathew@io.org> (1996-10-07) gives the following refs:
# * 1967. Paragraph 28(34)(g) of the Interpretation Act, S.C. 1967-68,
# c. 7 defines Yukon standard time as UTC-9. This is still valid;
# see Interpretation Act, R.S.C. 1985, c. I-21, s. 35(1).
# * C.O. 1973/214 switched Yukon to PST on 1973-10-28 00:00.
# * O.I.C. 1980/02 established DST.
# * O.I.C. 1987/056 changed DST to Apr firstSun 2:00 to Oct lastSun 2:00.
# Shanks says Yukon's 1973-10-28 switch was at 2:00; go with Englander.
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule NT_YK 1918 only - Apr 14 2:00 1:00 D Rule NT_YK 1918 only - Apr 14 2:00 1:00 D
@ -857,7 +885,7 @@ Zone America/Whitehorse -9:00:12 - LMT 1900 Aug 20
-9:00 NT_YK Y%sT 1966 Jul 1 2:00 -9:00 NT_YK Y%sT 1966 Jul 1 2:00
-8:00 NT_YK P%sT -8:00 NT_YK P%sT
Zone America/Dawson -9:17:40 - LMT 1900 Aug 20 Zone America/Dawson -9:17:40 - LMT 1900 Aug 20
-9:00 NT_YK Y%sT 1973 Oct lastSun 2:00 -9:00 NT_YK Y%sT 1973 Oct 28 0:00
-8:00 NT_YK P%sT -8:00 NT_YK P%sT
@ -1070,8 +1098,10 @@ Zone America/Cayman -5:25:32 - LMT 1890 # Georgetown
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule CR 1979 1980 - Feb lastSun 0:00 1:00 D Rule CR 1979 1980 - Feb lastSun 0:00 1:00 D
Rule CR 1979 1980 - Jun Sun>=1 0:00 0 S Rule CR 1979 1980 - Jun Sun>=1 0:00 0 S
Rule CR 1991 only - Jan 19 0:00 1:00 D Rule CR 1991 1992 - Jan Sat>=15 0:00 1:00 D
Rule CR 1991 only - Jul 1 0:00 0 S # IATA SSIM (1991-09) says the following was at 1:00; go with Shanks.
Rule CR 1991 only - Jul 1 0:00 0 S
Rule CR 1992 only - Mar 15 0:00 0 S
# There are too many San Joses elsewhere, so we'll use `Costa Rica'. # There are too many San Joses elsewhere, so we'll use `Costa Rica'.
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone America/Costa_Rica -5:36:20 - LMT 1890 # San Jose Zone America/Costa_Rica -5:36:20 - LMT 1890 # San Jose
@ -1114,10 +1144,11 @@ Rule Cuba 1978 only - May 7 0:00 1:00 D
Rule Cuba 1978 1980 - Oct Sun>=8 0:00 0 S Rule Cuba 1978 1980 - Oct Sun>=8 0:00 0 S
Rule Cuba 1979 1980 - Mar Sun>=15 0:00 1:00 D Rule Cuba 1979 1980 - Mar Sun>=15 0:00 1:00 D
Rule Cuba 1981 1985 - May Sun>=5 0:00 1:00 D Rule Cuba 1981 1985 - May Sun>=5 0:00 1:00 D
Rule Cuba 1981 max - Oct Sun>=8 0:00 0 S Rule Cuba 1981 1990 - Oct Sun>=8 0:00 0 S
Rule Cuba 1986 1989 - Mar Sun>=14 0:00 1:00 D Rule Cuba 1986 1989 - Mar Sun>=14 0:00 1:00 D
Rule Cuba 1990 only - Apr 1 0:00 1:00 D Rule Cuba 1990 max - Apr Sun>=1 0:00 1:00 D
Rule Cuba 1991 max - Mar Sun>=14 0:00 1:00 D Rule Cuba 1991 1995 - Oct Sun>=8 0:00s 0 S
Rule Cuba 1996 max - Oct Sun>=1 0:00s 0 S
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone America/Havana -5:29:28 - LMT 1890 Zone America/Havana -5:29:28 - LMT 1890
@ -1168,6 +1199,8 @@ Rule Guat 1973 only - Nov 25 0:00 1:00 D
Rule Guat 1974 only - Feb 24 0:00 0 S Rule Guat 1974 only - Feb 24 0:00 0 S
Rule Guat 1983 only - May 21 0:00 1:00 D Rule Guat 1983 only - May 21 0:00 1:00 D
Rule Guat 1983 only - Sep 22 0:00 0 S Rule Guat 1983 only - Sep 22 0:00 0 S
Rule Guat 1991 only - Mar 23 0:00 1:00 D
Rule Guat 1991 only - Sep 7 0:00 0 S
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone America/Guatemala -6:02:04 - LMT 1918 Oct 5 Zone America/Guatemala -6:02:04 - LMT 1918 Oct 5
-6:00 Guat C%sT -6:00 Guat C%sT
@ -1177,8 +1210,9 @@ Zone America/Guatemala -6:02:04 - LMT 1918 Oct 5
Rule Haiti 1983 only - May 8 0:00 1:00 D Rule Haiti 1983 only - May 8 0:00 1:00 D
Rule Haiti 1984 1987 - Apr lastSun 0:00 1:00 D Rule Haiti 1984 1987 - Apr lastSun 0:00 1:00 D
Rule Haiti 1983 1987 - Oct lastSun 0:00 0 S Rule Haiti 1983 1987 - Oct lastSun 0:00 0 S
Rule Haiti 1988 max - Apr Sun>=1 2:00 1:00 D # Shanks says AT is 2:00, but IATA SSIM (1991/1996) says 1:00s. Go with IATA.
Rule Haiti 1988 max - Oct lastSun 2:00 0 S Rule Haiti 1988 max - Apr Sun>=1 1:00s 1:00 D
Rule Haiti 1988 max - Oct lastSun 1:00s 0 S
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone America/Port-au-Prince -4:49:20 - LMT 1890 Zone America/Port-au-Prince -4:49:20 - LMT 1890
-4:49 - PPMT 1917 Jan 24 12:00 # P-a-P MT -4:49 - PPMT 1917 Jan 24 12:00 # P-a-P MT
@ -1203,7 +1237,8 @@ Zone America/Tegucigalpa -5:48:52 - LMT 1921 Apr
Zone America/Jamaica -5:07:12 - LMT 1890 # Kingston Zone America/Jamaica -5:07:12 - LMT 1890 # Kingston
-5:07 - KMT 1912 Feb # Kingston Mean Time -5:07 - KMT 1912 Feb # Kingston Mean Time
-5:00 - EST 1974 Jan 6 2:00 -5:00 - EST 1974 Jan 6 2:00
-5:00 US E%sT -5:00 US E%sT 1984
-5:00 - EST
# Martinique # Martinique
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
@ -1222,12 +1257,15 @@ Zone America/Montserrat -4:08:52 - LMT 1911 Jul 1 0:01 # Plymouth
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule Nic 1979 1980 - Mar Sun>=16 0:00 1:00 D Rule Nic 1979 1980 - Mar Sun>=16 0:00 1:00 D
Rule Nic 1979 1980 - Jun Mon>=23 0:00 0 S Rule Nic 1979 1980 - Jun Mon>=23 0:00 0 S
Rule Nic 1992 only - Jan 1 4:00 1:00 D
Rule Nic 1992 only - Sep 24 0:00 0 S
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone America/Managua -5:45:08 - LMT 1890 Zone America/Managua -5:45:08 - LMT 1890
-5:45 - MMT 1934 Jun 23 # Managua Mean Time -5:45 - MMT 1934 Jun 23 # Managua Mean Time
-6:00 - CST 1973 May -6:00 - CST 1973 May
-5:00 - EST 1975 Feb 16 -5:00 - EST 1975 Feb 16
-6:00 Nic C%sT -6:00 Nic C%sT 1993 Jan 1 4:00
-5:00 - EST
# Panama # Panama
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
@ -1268,11 +1306,17 @@ Zone America/St_Vincent -4:04:56 - LMT 1890 # Kingstown
-4:00 - AST -4:00 - AST
# Turks and Caicos # Turks and Caicos
# From Paul Eggert (1996-11-22):
# Shanks says they use US DST rules, but IATA SSIM (1991/1996)
# says they switch at midnight. Go with IATA SSIM.
# 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
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone America/Grand_Turk -4:44:32 - LMT 1890 Zone America/Grand_Turk -4:44:32 - LMT 1890
-5:07 - KMT 1912 Feb # Kingston Mean Time -5:07 - KMT 1912 Feb # Kingston Mean Time
-5:00 - EST 1979 Apr 29 2:00 -5:00 TC E%sT
-5:00 US E%sT
# British Virgin Is # British Virgin Is
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]

View File

@ -1,14 +1,22 @@
# @(#)southamerica 7.14 # @(#)southamerica 7.15
# This data is by no means authoritative; if you think you know better, # This data is by no means authoritative; if you think you know better,
# go ahead and edit the file (and please send any changes to # go ahead and edit the file (and please send any changes to
# tz@elsie.nci.nih.gov for general use in the future). # tz@elsie.nci.nih.gov for general use in the future).
# From Paul Eggert <eggert@twinsun.com> (1996-09-03): # From Paul Eggert <eggert@twinsun.com> (1996-11-22):
# A good source for time zone historical data outside the U.S. is # A good source for time zone historical data outside the U.S. is
# Thomas G. Shanks, The International Atlas (3rd edition), # Thomas G. Shanks, The International Atlas (3rd edition),
# San Diego: ACS Publications, Inc. (1991). # San Diego: ACS Publications, Inc. (1991).
# Except where otherwise noted, it is the source for the data below. #
# Gwillim Law <LAW@encmail.encompass.com> writes that a good source
# for recent time zone data is the International Air Transport
# Association's Standard Schedules Information Manual (IATA SSIM),
# published semiannually. Law sent in several helpful summaries
# of the IATA's data after 1990.
#
# Except where otherwise noted, Shanks is the source for entries through 1990,
# and IATA SSIM is the source for entries after 1990.
# #
# The following abbreviations are used in this file. # The following abbreviations are used in this file.
# Corrections are welcome! # Corrections are welcome!
@ -103,11 +111,64 @@ Rule Arg 1989 1992 - Oct Sun>=15 0:00 1:00 S
# to the time zones (for daylight saving) are now made. # to the time zones (for daylight saving) are now made.
# #
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
#
# Buenos Aires (BA), Distrito Federal (DF), Santa Cruz (SC),
# Tierra del Fuego (TF) & Antartida e Islas
Zone America/Buenos_Aires -3:53:48 - LMT 1894 Nov Zone America/Buenos_Aires -3:53:48 - LMT 1894 Nov
-4:16:44 - CMT 1920 May # Cordoba Mean Time -4:16:44 - CMT 1920 May # Cordoba Mean Time
-4:00 - ART 1930 Dec -4:00 - ART 1930 Dec
-4:00 Arg AR%sT 1969 Oct 5 -4:00 Arg AR%sT 1969 Oct 5
-3:00 Arg AR%sT -3:00 Arg AR%sT
#
# Santa Fe (SF), Entre Rios (ER), Corrientes (CN), Misiones (MN), Chaco (CC),
# Formosa (FM), La Pampa (LP), Chubut (CH)
Zone America/Rosario -4:02:40 - LMT 1894 Nov
-4:16:44 - CMT 1920 May
-4:00 - ART 1930 Dec
-4:00 Arg AR%sT 1969 Oct 5
-3:00 Arg AR%sT 1991 Jul
-3:00 - ART
#
# Cordoba (CB), Santiago del Estero (SE), Salta (SA), Tucuman (TM), La Rioja (LR), San Juan (SJ), San Luis (SL),
# Neuquen (NQ), Rio Negro (RN)
Zone America/Cordoba -4:16:44 - LMT 1894 Nov
-4:16:44 - CMT 1920 May
-4:00 - ART 1930 Dec
-4:00 Arg AR%sT 1969 Oct 5
-3:00 Arg AR%sT 1990 Jul
-3:00 - ART
#
# Jujuy (JY)
Zone America/Jujuy -4:21:12 - LMT 1894 Nov
-4:16:44 - CMT 1920 May
-4:00 - ART 1930 Dec
-4:00 Arg AR%sT 1969 Oct 5
-3:00 Arg AR%sT 1991 Mar 3
-4:00 - WART 1991 Oct 6
-4:00 1:00 WARST 1992 Mar 15
-4:00 - WART 1992 Oct 18
-3:00 - ART
#
# Catamarca (CT)
Zone America/Catamarca -4:23:08 - LMT 1894 Nov
-4:16:44 - CMT 1920 May
-4:00 - ART 1930 Dec
-4:00 Arg AR%sT 1969 Oct 5
-3:00 Arg AR%sT 1990 Jul
-3:00 - ART 1991 Jul
-3:00 Arg AR%sT 1992 Jul
-3:00 - ART
#
# Mendoza (MZ)
Zone America/Mendoza -4:35:16 - LMT 1894 Nov
-4:16:44 - CMT 1920 May
-4:00 - ART 1930 Dec
-4:00 Arg AR%sT 1969 Oct 5
-3:00 Arg AR%sT 1991 Mar 3
-4:00 - WART 1991 Oct 15
-4:00 1:00 WARST 1992 Mar 1
-4:00 - WART 1992 Oct 18
-3:00 - ART
# Aruba # Aruba
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
@ -132,38 +193,55 @@ Zone America/La_Paz -4:32:36 - LMT 1890
# "[America/Porto_Acre]" is for the Territory of Acre; # "[America/Porto_Acre]" is for the Territory of Acre;
# "[America/Noronha]" is for Fernando De Noronha. # "[America/Noronha]" is for Fernando De Noronha.
# From Bob Devine (1988-01-28):
# The only information I found is that there was no DST up to 1985.
# But there was some before 1952!
# From U. S. Naval Observatory (1989-01-16):
# BRAZIL WEST 5 H BEHIND UTC TERRITORY OF ACRE
# BRAZIL WEST 4 H BEHIND UTC ACRE OCT 23, '88-FEB 11,
# BRAZIL '89 (ESTIMATED)
# BRAZIL CENTRAL 4 H BEHIND UTC MANAUS
# BRAZIL CENTRAL 3 H BEHIND UTC MANAUS OCT 23, '88-FEB 11,
# BRAZIL CENTRAL '89 (ESTIMATED)
# BRAZIL EAST 3 H BEHIND UTC COASTAL STATES, RIO, SAO
# BRAZIL EAST PAULO, BRASILIA
# BRAZIL EAST 2 H BEHIND UTC COASTAL STATES, RIO, SAO
# BRAZIL PAULO, BRASILIA OCT 23,
# BRAZIL '88-FEB 11, '89
# BRAZIL (ESTIMATED)
# BRAZIL 2 H BEHIND UTC ATLANTIC ISLANDS, FERNANDO
# BRAZIL DE NORONHA
# BRAZIL 1 H BEHIND UTC OCT 23, '88-FEB 11, '89
# BRAZIL (ESTIMATED)
# BRAZIL 3 H BEHIND UTC FOR MOST MAJOR AIRPORTS.
# From Paul Eggert <eggert@twinsun.com> (1993-11-18): # From Paul Eggert <eggert@twinsun.com> (1993-11-18):
# The mayor of Rio recently attempted to change the time zone rules # The mayor of Rio recently attempted to change the time zone rules
# just in his city, in order to leave more summer time for the tourist trade. # just in his city, in order to leave more summer time for the tourist trade.
# The rule change lasted only part of the day; # The rule change lasted only part of the day;
# the federal government refused to follow the city's rules, and business # the federal government refused to follow the city's rules, and business
# was in a chaos, so the mayor backed down that afternoon. # was in a chaos, so the mayor backed down that afternoon.
# Shanks claims Acre stopped observing DST after 1988 Feb 7, but it
# could just be that his table ran out of room. We're extrapolating # From IATA SSIM (1996-02):
# about time zone changes after 1990 Feb 11. # _Only_ the following states in BR1 observe DST: Rio Grande do Sul (RS),
# Santa Catarina (SC), Parana (PR), Sao Paulo (SP), Rio de Janeiro (RJ),
# Espirito Santo (ES), Minas Gerais (MG), Bahia (BA), Goias (GO),
# Distrito Federal (DF), Tocantins (TO), Sergipe [SE] and Alagoas [AL].
# [The last three states are new to this issue of the IATA SSIM.]
# From Gwillim Law (1996-10-07):
# Geography, history (Tocantins was part of Goias until 1989), and other
# sources of time zone information lead me to believe that AL, SE, and TO were
# always in BR1, and so the only change was whether or not they observed DST....
# The earliest issue of the SSIM I have is 2/91. Each issue from then until
# 9/95 says that DST is observed only in the ten states I quoted from 9/95,
# along with Mato Grosso (MT) and Mato Grosso do Sul (MS), which are in BR2
# (UTC-4).... The other two time zones given for Brazil are BR3, which is
# UTC-5, no DST, and applies only in the state of Acre (AC); and BR4, which is
# UTC-2, and applies to Fernando de Noronha (formerly FN, but I believe it's
# become part of the state of Pernambuco). The boundary between BR1 and BR2
# has never been clearly stated. They've simply been called East and West.
# However, some conclusions can be drawn from another IATA manual: the Airline
# Coding Directory, which lists close to 400 airports in Brazil. For each
# airport it gives a time zone which is coded to the SSIM. From that
# information, I'm led to conclude that the states of Amapa (AP), Ceara (CE),
# Maranhao (MA), Paraiba (PR), Pernambuco (PE), Piaui (PI), and Rio Grande do
# Norte (RN), and the eastern part of Para (PA) are all in BR1 without DST.
# From Paul Eggert (1996-11-22):
# Let's make the following assumptions:
#
# * All data in Shanks are correct through 1990. In particular,
# Shanks was right when he said Acre stopped observing DST in mid-1988.
# * Areas where Shanks reports DST up to 1990, but the IATA reports no DST
# in 1995, stopped observing DST in mid-1990.
#
# Under these assumptions Brazil needs 7 entries to cover all the distinct
# time zone histories since 1970:
#
# Noronha (UTC-2), Fortaleza (UTC-3), and Manaus (UTC-4) stopped observing DST
# in mid-1990.
# Maceio (UTC-3) stopped observing DST in mid-1990, but started again mid-1995.
# Sao Paulo (UTC-3) and Cuiaba (UTC-4) always observed DST.
# Porto Acre (UTC-5) stopped observing DST in mid-1988.
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule Brazil 1931 only - Oct 3 11:00 1:00 D Rule Brazil 1931 only - Oct 3 11:00 1:00 D
@ -185,21 +263,59 @@ Rule Brazil 1986 1987 - Oct Sat<=28 0:00 1:00 D
Rule Brazil 1987 only - Feb 14 0:00 0 S Rule Brazil 1987 only - Feb 14 0:00 0 S
Rule Brazil 1988 only - Feb 7 0:00 0 S Rule Brazil 1988 only - Feb 7 0:00 0 S
Rule Brazil 1989 only - Jan 22 0:00 0 S Rule Brazil 1989 only - Jan 22 0:00 0 S
Rule Brazil 1988 max - Oct Sun>=15 0:00 1:00 D Rule Brazil 1988 1989 - Oct Sun>=10 0:00 1:00 D
Rule Brazil 1990 max - Feb Sun>=8 0:00 0 S Rule Brazil 1990 1991 - Feb Sun>=11 0:00 0 S
Rule Brazil 1990 1992 - Oct Sun>=20 0:00 1:00 D
Rule Brazil 1992 only - Feb 9 0:00 0 S
Rule Brazil 1993 max - Oct Sun>=11 0:00 1:00 D
Rule Brazil 1993 only - Jan 31 0:00 0 S
Rule Brazil 1994 1995 - Feb Sun>=15 0:00 0 S
Rule Brazil 1996 max - Feb Sun>=11 0:00 0 S
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
#
# Fernando de Noronha
Zone America/Noronha -2:09:40 - LMT 1914 Zone America/Noronha -2:09:40 - LMT 1914
-2:00 - FST 1963 Dec 9 -2:00 - FST 1963 Dec 9
-2:00 Brazil F%sT -2:00 Brazil F%sT 1990 Jul
-2:00 - FST
#
# Amapa, east Para, Maranhao, Piaui, Ceara, Rio Grande do Norte, Paraiba,
# Pernambuco (except Fernando de Noronha)
Zone America/Fortaleza -2:34:00 - LMT 1914
-3:00 - EST 1963 Dec 9
-3:00 Brazil E%sT 1990 Jul
-3:00 - EST
#
# Alagoas, Sergipe, Tocantins
Zone America/Maceio -2:22:52 - LMT 1914
-3:00 - EST 1963 Dec 9
-3:00 Brazil E%sT 1990 Jul
-3:00 - EST 1995 Jul
-3:00 Brazil E%sT
#
# Bahia, Goias, Distrito Federal, Minas Gerais, Espirito Santo, Rio de Janeiro,
# Sao Paulo, Parana, Santa Catarina, Rio Grande do Sul
Zone America/Sao_Paulo -3:06:28 - LMT 1914 Zone America/Sao_Paulo -3:06:28 - LMT 1914
-3:00 Brazil E%sT -3:00 Brazil E%sT
Zone America/Manaus -4:00:04 - LMT 1914 #
# Mato Grosso, Mato Grosso do Sul
Zone America/Cuiaba -3:44:20 - LMT 1914
-4:00 - WST 1963 Dec 9 -4:00 - WST 1963 Dec 9
-4:00 Brazil W%sT -4:00 Brazil W%sT
#
# Roraima, west Para, Amazonas, Rondonia
Zone America/Manaus -4:00:04 - LMT 1914
-4:00 - WST 1963 Dec 9
-4:00 Brazil W%sT 1990 Jul
-4:00 - WST
#
# Acre
# Rio_Branco is too ambiguous, since there's a Rio Branco in Uruguay too. # Rio_Branco is too ambiguous, since there's a Rio Branco in Uruguay too.
Zone America/Porto_Acre -4:31:12 - LMT 1914 Zone America/Porto_Acre -4:31:12 - LMT 1914
-5:00 - AST 1963 Dec 9 -5:00 - AST 1963 Dec 9
-5:00 Brazil A%sT -5:00 Brazil A%sT 1988 Jul
-5:00 - AST
# #
# Martin Vaz and Trinidade are like America/Noronha. # Martin Vaz and Trinidade are like America/Noronha.
@ -217,6 +333,8 @@ Rule Chile 1927 1931 - Sep 1 0:00 1:00 S
Rule Chile 1928 1932 - Apr 1 0:00 0 - Rule Chile 1928 1932 - Apr 1 0:00 0 -
Rule Chile 1969 max - Oct Sun>=9 0:00 1:00 S Rule Chile 1969 max - Oct Sun>=9 0:00 1:00 S
Rule Chile 1970 max - Mar Sun>=9 0:00 0 - Rule Chile 1970 max - Mar Sun>=9 0:00 0 -
# IATA SSIM anomalies: (1990-09) says 1990-09-16; (1992-02) says 1992-03-14;
# (1996-09) says 1998-03-08. Ignore these for now.
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone America/Santiago -4:42:40 - LMT 1890 Zone America/Santiago -4:42:40 - LMT 1890
-4:42:40 - SMT 1910 # Santiago Mean Time -4:42:40 - SMT 1910 # Santiago Mean Time
@ -233,10 +351,13 @@ Zone Pacific/Easter -7:17:28 - LMT 1890 # Mataveri
# Colombia # Colombia
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule CO 1992 only - May 2 0:00 1:00 S
Rule CO 1992 only - Dec 31 0:00 0 -
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone America/Bogota -4:56:20 - LMT 1884 Mar 13 Zone America/Bogota -4:56:20 - LMT 1884 Mar 13
-4:56:20 - BMT 1914 Nov 23 # Bogota Mean Time -4:56:20 - BMT 1914 Nov 23 # Bogota Mean Time
-5:00 - COT # Colombia Time -5:00 CO CO%sT # Colombia Time
# Malpelo, Providencia, San Andres # Malpelo, Providencia, San Andres
# no information; probably like America/Bogota # no information; probably like America/Bogota
@ -265,8 +386,9 @@ Rule Falk 1943 only - Jan 1 0:00 0 -
Rule Falk 1983 only - Sep lastSun 0:00 1:00 S Rule Falk 1983 only - Sep lastSun 0:00 1:00 S
Rule Falk 1984 1985 - Apr lastSun 0:00 0 - Rule Falk 1984 1985 - Apr lastSun 0:00 0 -
Rule Falk 1984 only - Sep 16 0:00 1:00 S Rule Falk 1984 only - Sep 16 0:00 1:00 S
Rule Falk 1985 max - Sep Sun>=9 0:00 1:00 S Rule Falk 1985 1995 - Sep Sun>=9 0:00 1:00 S
Rule Falk 1986 max - Apr Sun>=16 0:00 0 - Rule Falk 1986 max - Apr Sun>=16 0:00 0 -
Rule Falk 1996 max - Sep Sun>=8 0:00 1:00 S
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Atlantic/Stanley -3:51:24 - LMT 1890 Zone Atlantic/Stanley -3:51:24 - LMT 1890
-3:51:24 - SMT 1912 Mar 12 # Stanley Mean Time -3:51:24 - SMT 1912 Mar 12 # Stanley Mean Time
@ -285,8 +407,9 @@ Zone America/Cayenne -3:29:20 - LMT 1911 Jul
Zone America/Guyana -3:52:40 - LMT 1915 Mar # Georgetown Zone America/Guyana -3:52:40 - LMT 1915 Mar # Georgetown
-3:45 - GBGT 1966 May 26 # Br Guiana Time -3:45 - GBGT 1966 May 26 # Br Guiana Time
-3:45 - GYT 1975 Jul 31 # Guyana Time -3:45 - GYT 1975 Jul 31 # Guyana Time
-3:00 - GYT -3:00 - GYT 1991
# IATA SSIM (1996-06) says -4:00. Assume a 1991 switch.
-4:00 - GYT
# Paraguay # Paraguay
@ -303,10 +426,17 @@ Zone America/Guyana -3:52:40 - LMT 1915 Mar # Georgetown
Rule Para 1975 1978 - Oct 1 0:00 1:00 S Rule Para 1975 1978 - Oct 1 0:00 1:00 S
Rule Para 1975 1978 - Mar 1 0:00 0 - Rule Para 1975 1978 - Mar 1 0:00 0 -
# Shanks says 1979 was all DST. # Shanks says 1979 was all DST.
Rule Para 1980 max - Apr 1 0:00 0 - Rule Para 1980 1991 - Apr 1 0:00 0 -
Rule Para 1980 1988 - Oct 1 0:00 1:00 S Rule Para 1980 1988 - Oct 1 0:00 1:00 S
Rule Para 1989 only - Oct 22 0:00 1:00 S Rule Para 1989 only - Oct 22 0:00 1:00 S
Rule Para 1990 max - Oct 1 0:00 1:00 S Rule Para 1990 only - Oct 1 0:00 1:00 S
Rule Para 1991 only - Oct 6 0:00 1:00 S
Rule Para 1992 only - Mar 1 0:00 0 -
Rule Para 1992 only - Oct 5 0:00 1:00 S
Rule Para 1993 only - Mar 31 0:00 0 -
Rule Para 1993 max - Oct 1 0:00 1:00 S
Rule Para 1994 1995 - Feb lastSun 0:00 0 -
Rule Para 1996 max - Mar 1 0:00 0 -
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone America/Asuncion -3:50:40 - LMT 1890 Zone America/Asuncion -3:50:40 - LMT 1890
-3:50:40 - AMT 1931 Oct 10 # Asuncion Mean Time -3:50:40 - AMT 1931 Oct 10 # Asuncion Mean Time
@ -324,6 +454,8 @@ Rule Peru 1987 only - Jan 1 0:00 1:00 S
Rule Peru 1987 only - Apr 1 0:00 0 - Rule Peru 1987 only - Apr 1 0:00 0 -
Rule Peru 1990 only - Jan 1 0:00 1:00 S Rule Peru 1990 only - Jan 1 0:00 1:00 S
Rule Peru 1990 only - Apr 1 0:00 0 - Rule Peru 1990 only - Apr 1 0:00 0 -
Rule Peru 1993 only - Jan 1 0:00 1:00 S
Rule Peru 1993 only - Apr 1 0:00 0 -
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone America/Lima -5:08:12 - LMT 1890 Zone America/Lima -5:08:12 - LMT 1890
-5:09 - LMT 1908 Jul 28 # Lima Mean Time -5:09 - LMT 1908 Jul 28 # Lima Mean Time
@ -396,7 +528,10 @@ Rule Uruguay 1988 only - Mar 14 0:00 0 -
Rule Uruguay 1988 only - Dec 11 0:00 1:00 S Rule Uruguay 1988 only - Dec 11 0:00 1:00 S
Rule Uruguay 1989 only - Mar 12 0:00 0 - Rule Uruguay 1989 only - Mar 12 0:00 0 -
Rule Uruguay 1989 only - Oct 29 0:00 1:00 S Rule Uruguay 1989 only - Oct 29 0:00 1:00 S
Rule Uruguay 1990 only - Mar 4 0:00 0 - Rule Uruguay 1990 1992 - Mar Sun>=1 0:00 0 -
Rule Uruguay 1990 1991 - Oct Sun>=21 0:00 1:00 S
Rule Uruguay 1992 1993 - Oct Sun>=15 0:00 1:00 S
Rule Uruguay 1993 only - Feb 28 0:00 0 -
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone America/Montevideo -3:44:44 - LMT 1898 Jun 28 Zone America/Montevideo -3:44:44 - LMT 1898 Jun 28
-3:44:44 - MMT 1920 May 1 # Montevideo MT -3:44:44 - MMT 1920 May 1 # Montevideo MT

View File

@ -31,9 +31,15 @@ AN +1211-06900 America/Curacao
AO -0848+01314 Africa/Luanda AO -0848+01314 Africa/Luanda
AQ -7750+16636 Antarctica/McMurdo McMurdo Station, Ross Island AQ -7750+16636 Antarctica/McMurdo McMurdo Station, Ross Island
AQ -9000+00000 Antarctica/South_Pole Amundsen-Scott Station, South Pole AQ -9000+00000 Antarctica/South_Pole Amundsen-Scott Station, South Pole
AQ -6617+11031 Antarctica/Casey Casey Station, Bailey Peninsula AQ -6448-06406 Antarctica/Palmer Palmer Station, Anvers Island
AQ -6736+06253 Antarctica/Mawson Mawson Station, Holme Bay AQ -6736+06253 Antarctica/Mawson Mawson Station, Holme Bay
AR -3436-05827 America/Buenos_Aires AQ -6617+11031 Antarctica/Casey Casey Station, Bailey Peninsula
AR -3436-05827 America/Buenos_Aires E Argentina (BA, DF, SC, TF)
AR -3257-06040 America/Rosario NE Argentina (SF, ER, CN, MN, CC, FM, LP, CH)
AR -3124-06411 America/Cordoba W Argentina (CB, SA, TM, LR, SJ, SL, NQ, RN)
AR -2411-06518 America/Jujuy Jujuy (JY)
AR -2828-06547 America/Catamarca Catamarca (CT)
AR -3253-06849 America/Mendoza Mendoza (MZ)
AS -1416-17042 Pacific/Pago_Pago AS -1416-17042 Pacific/Pago_Pago
AT +4813+01620 Europe/Vienna AT +4813+01620 Europe/Vienna
AU -3133+15905 Australia/Lord_Howe Lord Howe Island AU -3133+15905 Australia/Lord_Howe Lord Howe Island
@ -41,7 +47,8 @@ AU -4253+14719 Australia/Hobart Tasmania
AU -3749+14458 Australia/Melbourne Victoria AU -3749+14458 Australia/Melbourne Victoria
AU -3352+15113 Australia/Sydney New South Wales - most locations AU -3352+15113 Australia/Sydney New South Wales - most locations
AU -3157+14127 Australia/Broken_Hill New South Wales - Broken Hill AU -3157+14127 Australia/Broken_Hill New South Wales - Broken Hill
AU -2728+15302 Australia/Brisbane Queensland AU -2728+15302 Australia/Brisbane Queensland - most locations
AU -2016+14900 Australia/Lindeman Queensland - Holiday Islands
AU -3455+13835 Australia/Adelaide South Australia AU -3455+13835 Australia/Adelaide South Australia
AU -1228+13050 Australia/Darwin Northern Territory AU -1228+13050 Australia/Darwin Northern Territory
AU -3157+11551 Australia/Perth Western Australia AU -3157+11551 Australia/Perth Western Australia
@ -59,9 +66,12 @@ BJ +0629+00237 Africa/Porto-Novo
BM +3217-06446 Atlantic/Bermuda BM +3217-06446 Atlantic/Bermuda
BN +0456+11455 Asia/Brunei BN +0456+11455 Asia/Brunei
BO -1630-06809 America/La_Paz BO -1630-06809 America/La_Paz
BR -0351-03225 America/Noronha Atlantic islands BR -0351-03225 America/Noronha Fernando de Noronha
BR -2332-04637 America/Sao_Paulo east Brazil BR -0343-03830 America/Fortaleza NE Brazil (AP, east PA, MA, PI, CE, RN, PR, PE)
BR -0308-06001 America/Manaus west Brazil BR -0940-03543 America/Maceio ENE Brazil (AL, SE, TO)
BR -2332-04637 America/Sao_Paulo S & SE Brazil (BA, GO, DF, MG, ES, RJ, SP, PR, SC, RS)
BR -1535-05605 America/Cuiaba SW Brazil (MT, MS)
BR -0308-06001 America/Manaus NW Brazil (RR, west PA, AM, RO)
BR -0934-06731 America/Porto_Acre Acre BR -0934-06731 America/Porto_Acre Acre
BS +2505-07721 America/Nassau BS +2505-07721 America/Nassau
BT +2728+08939 Asia/Thimbu BT +2728+08939 Asia/Thimbu
@ -69,8 +79,9 @@ BW -2545+02555 Africa/Gaborone
BY +5354+02734 Europe/Minsk BY +5354+02734 Europe/Minsk
BZ +1730-08812 America/Belize BZ +1730-08812 America/Belize
CA +4734-05243 America/St_Johns Newfoundland Island CA +4734-05243 America/St_Johns Newfoundland Island
CA +4439-06336 America/Halifax Atlantic Time - Nova Scotia (most locations), New Brunswick, Labrador & PEI CA +4439-06336 America/Halifax Atlantic Time - Nova Scotia (most places), NB, W Labrador, E Quebec & PEI
CA +4612-05957 America/Glace_Bay Atlantic Time - Nova Scotia - places that did not observe DST 1966-1971 CA +4612-05957 America/Glace_Bay Atlantic Time - Nova Scotia - places that did not observe DST 1966-1971
CA +5320-06025 America/Goose_Bay Atlantic Time - E Labrador
CA +6608-06544 America/Pangnirtung Atlantic Time - Northwest Territories CA +6608-06544 America/Pangnirtung Atlantic Time - Northwest Territories
CA +4531-07334 America/Montreal Eastern Time - Ontario & Quebec - most locations CA +4531-07334 America/Montreal Eastern Time - Ontario & Quebec - most locations
CA +4901-08816 America/Nipigon Eastern Time - Ontario & Quebec - places that did not observe DST 1967-1973 CA +4901-08816 America/Nipigon Eastern Time - Ontario & Quebec - places that did not observe DST 1967-1973
@ -189,7 +200,8 @@ KR +3733+12658 Asia/Seoul
KW +2920+04759 Asia/Kuwait KW +2920+04759 Asia/Kuwait
KY +1918-08123 America/Cayman KY +1918-08123 America/Cayman
KZ +4315+07657 Asia/Alma-Ata east Kazakhstan KZ +4315+07657 Asia/Alma-Ata east Kazakhstan
KZ +5016+07302 Asia/Aktau west Kazakhstan KZ +5017+05710 Asia/Aqtobe central Kazakhstan
KZ +4431+05016 Asia/Aqtau west Kazakhstan
LA +1758+10236 Asia/Vientiane LA +1758+10236 Asia/Vientiane
LB +3353+03530 Asia/Beirut LB +3353+03530 Asia/Beirut
LC +1401-06100 America/St_Lucia LC +1401-06100 America/St_Lucia
@ -262,15 +274,16 @@ PY -2516-05740 America/Asuncion
QA +2517+05132 Asia/Qatar QA +2517+05132 Asia/Qatar
RE -2052+05528 Indian/Reunion RE -2052+05528 Indian/Reunion
RO +4426+02606 Europe/Bucharest RO +4426+02606 Europe/Bucharest
RU +5443+02030 Europe/Kaliningrad Moscow-01 - Kaliningrad
RU +5545+03735 Europe/Moscow Moscow+00 - west Russia RU +5545+03735 Europe/Moscow Moscow+00 - west Russia
RU +5312+05009 Europe/Kuybyshev Moscow+01 - Caspian Sea RU +5312+05009 Europe/Samara Moscow+01 - Caspian Sea
RU +5651+06036 Asia/Yekaterinburg Moscow+02 - Urals RU +5651+06036 Asia/Yekaterinburg Moscow+02 - Urals
RU +5500+07324 Asia/Omsk Moscow+03 - west Siberia RU +5500+07324 Asia/Omsk Moscow+03 - west Siberia
RU +5502+08255 Asia/Novosibirsk Moscow+03 - Novosibirsk RU +5502+08255 Asia/Novosibirsk Moscow+03 - Novosibirsk
RU +5601+09250 Asia/Krasnoyarsk Moscow+04 - Yenisei River RU +5601+09250 Asia/Krasnoyarsk Moscow+04 - Yenisei River
RU +5216+10420 Asia/Irkutsk Moscow+05 - Irkutsk RU +5216+10420 Asia/Irkutsk Moscow+05 - Lake Baikal
RU +6200+12940 Asia/Yakutsk Moscow+06 - Lena River RU +6200+12940 Asia/Yakutsk Moscow+06 - Lena River
RU +4310+13156 Asia/Vladivostok Moscow+07 - Vladivostok RU +4310+13156 Asia/Vladivostok Moscow+07 - Amur River
RU +5934+15048 Asia/Magadan Moscow+08 - Magadan & Sakhalin RU +5934+15048 Asia/Magadan Moscow+08 - Magadan & Sakhalin
RU +5301+15839 Asia/Kamchatka Moscow+09 - Kamchatka RU +5301+15839 Asia/Kamchatka Moscow+09 - Kamchatka
RU +6445+17729 Asia/Anadyr Moscow+10 - Bering Sea RU +6445+17729 Asia/Anadyr Moscow+10 - Bering Sea