1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-30 22:43:12 +03:00
1999-10-08  Ulrich Drepper  <drepper@cygnus.com>

	* nis/nss_nisplus/nisplus-parser.c (_nss_nisplus_parse_spent): Fix
	handling of empty entries.
	Patch by Thorsten Kukuk <kukuk@suse.de>.

1999-10-08  Andreas Schwab  <schwab@suse.de>

	* debug/xtrace.sh: Fix quoting bugs.  Implement --help and --version.

1999-10-08  Andreas Schwab  <schwab@suse.de>

	* debug/pcprofiledump.c: Fix typos.

1999-10-07  Andreas Jaeger  <aj@suse.de>

	* math/Makefile (tests): Added basic-tests.

	* math/basic-test.c: New file.  Contains function basic_tests from
	libm-test.

1999-10-07  Andreas Schwab  <schwab@suse.de>

	* malloc/memprof.sh: Fix quoting bugs.

1999-10-08  Ulrich Drepper  <drepper@cygnus.com>

	* timezone/europe: Update from tzdata1999h.
This commit is contained in:
Ulrich Drepper
1999-10-08 17:16:17 +00:00
parent 9640bbe1c1
commit b5c6276a6e
13 changed files with 268 additions and 51 deletions

View File

@ -1,3 +1,32 @@
1999-10-08 Ulrich Drepper <drepper@cygnus.com>
* nis/nss_nisplus/nisplus-parser.c (_nss_nisplus_parse_spent): Fix
handling of empty entries.
Patch by Thorsten Kukuk <kukuk@suse.de>.
1999-10-08 Andreas Schwab <schwab@suse.de>
* debug/xtrace.sh: Fix quoting bugs. Implement --help and --version.
1999-10-08 Andreas Schwab <schwab@suse.de>
* debug/pcprofiledump.c: Fix typos.
1999-10-07 Andreas Jaeger <aj@suse.de>
* math/Makefile (tests): Added basic-tests.
* math/basic-test.c: New file. Contains function basic_tests from
libm-test.
1999-10-07 Andreas Schwab <schwab@suse.de>
* malloc/memprof.sh: Fix quoting bugs.
1999-10-08 Ulrich Drepper <drepper@cygnus.com>
* timezone/europe: Update from tzdata1999h.
1999-10-07 Ulrich Drepper <drepper@cygnus.com> 1999-10-07 Ulrich Drepper <drepper@cygnus.com>
* elf/elf.h: Update from last gABI draft. * elf/elf.h: Update from last gABI draft.

View File

@ -81,6 +81,9 @@ COLUMNS=${COLUMNS:-80}
# If `TERM' is not set, set it to `xterm'. # If `TERM' is not set, set it to `xterm'.
TERM=${TERM:-xterm} TERM=${TERM:-xterm}
# The data file to process, if any.
data=
# Process arguments. But stop as soon as the program name is found. # Process arguments. But stop as soon as the program name is found.
while test $# -gt 0; do while test $# -gt 0; do
case "$1" in case "$1" in
@ -94,6 +97,12 @@ while test $# -gt 0; do
--d=* | --da=* | --dat=* | --data=*) --d=* | --da=* | --dat=* | --data=*)
data=${1##*=} data=${1##*=}
;; ;;
-? | --h | --he | --hel | --help)
do_help
;;
--v | --ve | --ver | --vers | --versi | --versio | --version)
do_version
;;
--) --)
# Stop processing arguments. # Stop processing arguments.
shift shift
@ -133,9 +142,9 @@ fi
printf "%-20s %-*s %6s\n" Function $(expr $COLUMNS - 30) File Line printf "%-20s %-*s %6s\n" Function $(expr $COLUMNS - 30) File Line
for i in $(seq 1 $COLUMNS); do echo -n -; done; echo for i in $(seq 1 $COLUMNS); do echo -n -; done; echo
if test -n "$data"; then if test -n "$data"; then
eval $pcprofiledump $data | $pcprofiledump "$data" |
sed 's/this = \([^,]*\).*/\1/' | sed 's/this = \([^,]*\).*/\1/' |
addr2line -fC -e $program | addr2line -fC -e "$program" |
while read fct; do while read fct; do
read file read file
if test "$fct" != '??' -a "$file" != '??:0'; then if test "$fct" != '??' -a "$file" != '??:0'; then
@ -146,9 +155,9 @@ else
fifo=$(mktemp -u ${TMPDIR:-/tmp}/xprof.XXXXXX) fifo=$(mktemp -u ${TMPDIR:-/tmp}/xprof.XXXXXX)
mkfifo -m 0600 $fifo || exit 1 mkfifo -m 0600 $fifo || exit 1
# Now start the program and let it write to the FIFO. # Now start the program and let it write to the FIFO.
eval $TERM -T "'xtrace - $program $*'" -e /bin/sh -c "'LD_PRELOAD=$pcprofileso PCPROFILE_OUTPUT=$fifo $program $*; read $fifo'" & $TERM -T "xtrace - $program $*" -e /bin/sh -c "LD_PRELOAD=$pcprofileso PCPROFILE_OUTPUT=$fifo $program $*; read $fifo" &
termpid=$! termpid=$!
eval $pcprofiledump $fifo | $pcprofiledump $fifo |
sed 's/this = \([^,]*\).*/\1/' | sed 's/this = \([^,]*\).*/\1/' |
addr2line -fC -e $program | addr2line -fC -e $program |
while read fct; do while read fct; do

View File

@ -1,3 +1,7 @@
1999-10-08 Ulrich Drepper <drepper@cygnus.com>
* shlib-versions: New file.
1999-10-07 Ulrich Drepper <drepper@cygnus.com> 1999-10-07 Ulrich Drepper <drepper@cygnus.com>
* Makefile: New file. * Makefile: New file.

View File

@ -0,0 +1,2 @@
# The thread debug library
.*-.*-linux.* libthread_db=1

View File

@ -19,7 +19,7 @@
Boston, MA 02111-1307, USA. */ Boston, MA 02111-1307, USA. */
#include "thread_dbP.h" #include "thread_dbP.h"
#include <gnu/lib-names.h>
td_err_e td_err_e
td_ta_get_nthreads (const td_thragent_t *ta, int *np) td_ta_get_nthreads (const td_thragent_t *ta, int *np)
@ -29,7 +29,7 @@ td_ta_get_nthreads (const td_thragent_t *ta, int *np)
LOG (__FUNCTION__); LOG (__FUNCTION__);
/* Access the variable `__pthread_handles_num'. */ /* Access the variable `__pthread_handles_num'. */
if (ps_pglobal_lookup (ta->ph, "libpthread.so.0", "__pthread_handles_num", if (ps_pglobal_lookup (ta->ph, LIBPTHREAD_SO, "__pthread_handles_num",
&addr) != PS_OK) &addr) != PS_OK)
return TD_ERR; /* XXX Other error value? */ return TD_ERR; /* XXX Other error value? */

View File

@ -21,6 +21,7 @@
#include <stddef.h> #include <stddef.h>
#include <stdlib.h> #include <stdlib.h>
#include <gnu/lib-names.h>
#include "thread_dbP.h" #include "thread_dbP.h"
@ -33,7 +34,7 @@ td_ta_new (struct ps_prochandle *ps, td_thragent_t **ta)
LOG (__FUNCTION__); LOG (__FUNCTION__);
/* See whether the library contains the necessary symbols. */ /* See whether the library contains the necessary symbols. */
if (ps_pglobal_lookup (ps, "libpthread.so.0", "__pthread_threads_debug", if (ps_pglobal_lookup (ps, LIBPTHREAD_SO, "__pthread_threads_debug",
&addr) != PS_OK) &addr) != PS_OK)
return TD_LIBTHREAD; return TD_LIBTHREAD;
@ -47,7 +48,7 @@ td_ta_new (struct ps_prochandle *ps, td_thragent_t **ta)
(*ta)->ph = ps; (*ta)->ph = ps;
/* See whether the library contains the necessary symbols. */ /* See whether the library contains the necessary symbols. */
if (ps_pglobal_lookup (ps, "libpthread.so.0", "__pthread_handles", if (ps_pglobal_lookup (ps, LIBPTHREAD_SO, "__pthread_handles",
&addr) != PS_OK) &addr) != PS_OK)
{ {
free_return: free_return:
@ -58,7 +59,7 @@ td_ta_new (struct ps_prochandle *ps, td_thragent_t **ta)
(*ta)->handles = (struct pthread_handle_struct *) addr; (*ta)->handles = (struct pthread_handle_struct *) addr;
if (ps_pglobal_lookup (ps, "libpthread.so.0", "pthread_keys", if (ps_pglobal_lookup (ps, LIBPTHREAD_SO, "pthread_keys",
&addr) != PS_OK) &addr) != PS_OK)
goto free_return; goto free_return;
@ -68,7 +69,7 @@ td_ta_new (struct ps_prochandle *ps, td_thragent_t **ta)
/* Find out about the maximum number of threads. Old implementations /* Find out about the maximum number of threads. Old implementations
don't provide this information. In this case we assume that the don't provide this information. In this case we assume that the
debug library is compiled with the same values. */ debug library is compiled with the same values. */
if (ps_pglobal_lookup (ps, "libpthread.so.0", if (ps_pglobal_lookup (ps, LIBPTHREAD_SO,
"__linuxthreads_pthread_threads_max", &addr) != PS_OK) "__linuxthreads_pthread_threads_max", &addr) != PS_OK)
(*ta)->pthread_threads_max = PTHREAD_THREADS_MAX; (*ta)->pthread_threads_max = PTHREAD_THREADS_MAX;
else else
@ -79,7 +80,7 @@ td_ta_new (struct ps_prochandle *ps, td_thragent_t **ta)
} }
/* Similar for the maximum number of thread local data keys. */ /* Similar for the maximum number of thread local data keys. */
if (ps_pglobal_lookup (ps, "libpthread.so.0", if (ps_pglobal_lookup (ps, LIBPTHREAD_SO,
"__linuxthreads_pthread_keys_max", &addr) != PS_OK) "__linuxthreads_pthread_keys_max", &addr) != PS_OK)
(*ta)->pthread_keys_max = PTHREAD_KEYS_MAX; (*ta)->pthread_keys_max = PTHREAD_KEYS_MAX;
else else
@ -90,7 +91,7 @@ td_ta_new (struct ps_prochandle *ps, td_thragent_t **ta)
} }
/* And for the size of the second level arrays for the keys. */ /* And for the size of the second level arrays for the keys. */
if (ps_pglobal_lookup (ps, "libpthread.so.0", if (ps_pglobal_lookup (ps, LIBPTHREAD_SO,
"__linuxthreads_pthread_sizeof_descr", &addr) "__linuxthreads_pthread_sizeof_descr", &addr)
!= PS_OK) != PS_OK)
(*ta)->sizeof_descr = offsetof (struct _pthread_descr_struct, p_startfct); (*ta)->sizeof_descr = offsetof (struct _pthread_descr_struct, p_startfct);
@ -101,7 +102,7 @@ td_ta_new (struct ps_prochandle *ps, td_thragent_t **ta)
} }
/* Similar for the maximum number of thread local data keys. */ /* Similar for the maximum number of thread local data keys. */
if (ps_pglobal_lookup (ps, "libpthread.so.0", if (ps_pglobal_lookup (ps, LIBPTHREAD_SO,
"__linuxthreads_pthread_keys_max", &addr) != PS_OK) "__linuxthreads_pthread_keys_max", &addr) != PS_OK)
(*ta)->pthread_keys_max = PTHREAD_KEYS_MAX; (*ta)->pthread_keys_max = PTHREAD_KEYS_MAX;
else else

View File

@ -291,7 +291,7 @@ extern td_err_e td_init (void);
/* Historical relict. Should not be used anymore. */ /* Historical relict. Should not be used anymore. */
extern td_err_e td_log (void); extern td_err_e td_log (void);
/* Generate new thread debu librarz handle for process PS. */ /* Generate new thread debug library handle for process PS. */
extern td_err_e td_ta_new (struct ps_prochandle *__ps, td_thragent_t **__ta); extern td_err_e td_ta_new (struct ps_prochandle *__ps, td_thragent_t **__ta);
/* Free resources allocated for TA. */ /* Free resources allocated for TA. */
@ -316,7 +316,7 @@ extern td_err_e td_ta_map_lwp2thr (const td_thragent_t *__ta, lwpid_t __lwpid,
td_thrhandle_t *__th); td_thrhandle_t *__th);
/* Call for each thread is process associated with TA the callback function /* Call for each thread in a process associated with TA the callback function
CALLBACK. */ CALLBACK. */
extern td_err_e td_ta_thr_iter (const td_thragent_t *__ta, extern td_err_e td_ta_thr_iter (const td_thragent_t *__ta,
td_thr_iter_f *__callback, void *__cbdata_p, td_thr_iter_f *__callback, void *__cbdata_p,
@ -344,7 +344,7 @@ extern td_err_e td_ta_enable_stats (const td_thragent_t *__ta, int __enable);
/* Reset statistics. */ /* Reset statistics. */
extern td_err_e td_ta_reset_stats (const td_thragent_t *__ta); extern td_err_e td_ta_reset_stats (const td_thragent_t *__ta);
/* Retrieve statitics from process associated with TA. */ /* Retrieve statistics from process associated with TA. */
extern td_err_e td_ta_get_stats (const td_thragent_t *__ta, extern td_err_e td_ta_get_stats (const td_thragent_t *__ta,
td_ta_stats_t *__statsp); td_ta_stats_t *__statsp);

View File

@ -201,6 +201,7 @@ fi
add_env="LD_PRELOAD=$memprofso" add_env="LD_PRELOAD=$memprofso"
# Generate data file name. # Generate data file name.
datafile=
if test -n "$data"; then if test -n "$data"; then
datafile="$data" datafile="$data"
elif test -n "$png"; then elif test -n "$png"; then
@ -229,21 +230,22 @@ if test -n "$notimer"; then
fi fi
# Execute the program itself. # Execute the program itself.
eval $add_env $* eval $add_env '"$@"'
result=$? result=$?
# Generate the PNG data file is wanted and there is something to generate # Generate the PNG data file if wanted and there is something to generate
# it from. # it from.
if test -n "$png" -a -s "$datafile"; then if test -n "$png" -a -n "$datafile" -a -s "$datafile"; then
# Append extension .png if it isn't already there. # Append extension .png if it isn't already there.
if test $png = ${png%*.png}; then case $png in
png="$png.png" *.png) ;;
fi *) png="$png.png" ;;
eval $memprofstat $memprofstat_args $datafile $png esac
$memprofstat $memprofstat_args "$datafile" "$png"
fi fi
if test -z "$data" -a -n $datafile; then if test -z "$data" -a -n "$datafile"; then
rm -f $datafile rm -f "$datafile"
fi fi
exit $result exit $result

View File

@ -77,7 +77,7 @@ distribute += $(long-c-yes:=.c)
# Rules for the test suite. # Rules for the test suite.
tests = test-float test-double $(test-longdouble-$(long-double-fcts)) \ tests = test-float test-double $(test-longdouble-$(long-double-fcts)) \
test-ifloat test-idouble test-matherr test-fenv \ test-ifloat test-idouble test-matherr test-fenv \
atest-exp atest-sincos atest-exp2 atest-exp atest-sincos atest-exp2 basic-test
# We do the `long double' tests only if this data type is available and # We do the `long double' tests only if this data type is available and
# distinct from `double'. # distinct from `double'.
test-longdouble-yes = test-ldouble test-ildoubl test-longdouble-yes = test-ldouble test-ildoubl

123
math/basic-test.c Normal file
View File

@ -0,0 +1,123 @@
/* Copyright (C) 1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Andreas Jaeger <aj@suse.de>, 1999.
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 <math.h>
#include <float.h>
#include <stdio.h>
static int errors = 0;
static void
check (const char *testname, int result)
{
if (!result) {
printf ("Failure: %s\n", testname);
errors++;
}
}
#define TEST_FUNC(NAME, FLOAT, NANFUNC, EPSILON, HUGEVAL) \
static void \
NAME (void) \
{ \
/* Variables are declared volatile to forbid some compiler \
optimizations. */ \
volatile FLOAT Inf_var, NaN_var, zero_var, one_var; \
FLOAT x1, x2; \
\
zero_var = 0.0; \
one_var = 1.0; \
NaN_var = zero_var/zero_var; \
Inf_var = one_var / zero_var; \
\
(void) &zero_var; \
(void) &one_var; \
(void) &NaN_var; \
(void) &Inf_var; \
\
\
check (#FLOAT " isinf (inf) == 1", isinf (Inf_var) == 1); \
check (#FLOAT " isinf (-inf) == -1", isinf (-Inf_var) == -1); \
check (#FLOAT " !isinf (1)", !(isinf (one_var))); \
check (#FLOAT " !isinf (NaN)", !(isinf (NaN_var))); \
\
check (#FLOAT " isnan (NaN)", isnan (NaN_var)); \
check (#FLOAT " isnan (-NaN)", isnan (-NaN_var)); \
check (#FLOAT " !isnan (1)", !(isnan (one_var))); \
check (#FLOAT " !isnan (inf)", !(isnan (Inf_var))); \
\
check (#FLOAT " inf == inf", Inf_var == Inf_var); \
check (#FLOAT " -inf == -inf", -Inf_var == -Inf_var); \
check (#FLOAT " inf != -inf", Inf_var != -Inf_var); \
check (#FLOAT " NaN != NaN", NaN_var != NaN_var); \
\
/* \
the same tests but this time with NAN from <bits/nan.h> \
NAN is a double const \
*/ \
check (#FLOAT " isnan (NAN)", isnan (NAN)); \
check (#FLOAT " isnan (-NAN)", isnan (-NAN)); \
check (#FLOAT " !isinf (NAN)", !(isinf (NAN))); \
check (#FLOAT " !isinf (-NAN)", !(isinf (-NAN))); \
check (#FLOAT " NAN != NAN", NAN != NAN); \
\
/* \
And again with the value returned by the `nan' function. \
*/ \
check (#FLOAT " isnan (NAN)", isnan (NANFUNC (""))); \
check (#FLOAT " isnan (-NAN)", isnan (-NANFUNC (""))); \
check (#FLOAT " !isinf (NAN)", !(isinf (NANFUNC ("")))); \
check (#FLOAT " !isinf (-NAN)", !(isinf (-NANFUNC ("")))); \
check (#FLOAT " NAN != NAN", NANFUNC ("") != NANFUNC ("")); \
\
/* test if EPSILON is ok */ \
x1 = 1.0; \
x2 = x1 + EPSILON; \
check (#FLOAT " 1 != 1+EPSILON", x1 != x2); \
\
x1 = 1.0; \
x2 = x1 - EPSILON; \
check (#FLOAT " 1 != 1-EPSILON", x1 != x2); \
\
/* test if HUGE_VALx is ok */ \
x1 = HUGEVAL; \
check (#FLOAT " isinf (HUGE_VALx) == +1", isinf (x1) == +1); \
x1 = - HUGEVAL; \
check (#FLOAT " isinf (-HUGE_VALx) == -1", isinf (x1) == -1); \
}
TEST_FUNC (float_test, float, nanf, FLT_EPSILON, HUGE_VALF)
TEST_FUNC (double_test, double, nan, DBL_EPSILON, HUGE_VAL)
#ifndef NO_LONG_DOUBLE
TEST_FUNC (ldouble_test, long double, nan, LDBL_EPSILON, HUGE_VALL)
#endif
int
main (void)
{
float_test ();
double_test ();
#ifndef NO_LONG_DOUBLE
ldouble_test ();
#endif
return errors != 0;
}

View File

@ -307,7 +307,8 @@ _nss_nisplus_parse_spent (nis_result *result, struct spwd *sp,
first_unused += (len + 1); first_unused += (len + 1);
sp->sp_lstchg = sp->sp_min = sp->sp_max = sp->sp_warn = sp->sp_inact = sp->sp_lstchg = sp->sp_min = sp->sp_max = sp->sp_warn = sp->sp_inact =
sp->sp_expire = sp->sp_flag = -1; sp->sp_expire = -1;
sp->sp_flag = ~0ul;
if (NISENTRYLEN (0, 7, result) > 0) if (NISENTRYLEN (0, 7, result) > 0)
{ {
@ -316,49 +317,56 @@ _nss_nisplus_parse_spent (nis_result *result, struct spwd *sp,
line = NISENTRYVAL (0, 7, result); line = NISENTRYVAL (0, 7, result);
cp = strchr (line, ':'); cp = strchr (line, ':');
if (cp == NULL) if (cp == NULL)
return 0; return 1;
*cp++ = '\0'; *cp++ = '\0';
sp->sp_lstchg = atol (line); if (*line)
sp->sp_lstchg = atol (line);
line = cp; line = cp;
cp = strchr (line, ':'); cp = strchr (line, ':');
if (cp == NULL) if (cp == NULL)
return 0; return 1;
*cp++ = '\0'; *cp++ = '\0';
sp->sp_min = atol (line); if (*line)
sp->sp_min = atol (line);
line = cp; line = cp;
cp = strchr (line, ':'); cp = strchr (line, ':');
if (cp == NULL) if (cp == NULL)
return 0; return 1;
*cp++ = '\0'; *cp++ = '\0';
sp->sp_max = atol (line); if (*line)
sp->sp_max = atol (line);
line = cp; line = cp;
cp = strchr (line, ':'); cp = strchr (line, ':');
if (cp == NULL) if (cp == NULL)
return 0; return 1;
*cp++ = '\0'; *cp++ = '\0';
sp->sp_warn = atol (line); if (*line)
sp->sp_warn = atol (line);
line = cp; line = cp;
cp = strchr (line, ':'); cp = strchr (line, ':');
if (cp == NULL) if (cp == NULL)
return 0; return 1;
*cp++ = '\0'; *cp++ = '\0';
sp->sp_inact = atol (line); if (*line)
sp->sp_inact = atol (line);
line = cp; line = cp;
cp = strchr (line, ':'); cp = strchr (line, ':');
if (cp == NULL) if (cp == NULL)
return 0; return 1;
*cp++ = '\0'; *cp++ = '\0';
sp->sp_expire = atol (line); if (*line)
sp->sp_expire = atol (line);
line = cp; line = cp;
if (line == NULL) if (line == NULL)
return 0; return 1;
sp->sp_flag = atol (line); if (*line)
sp->sp_flag = atol (line);
} }
return 1; return 1;

View File

@ -1,4 +1,4 @@
# @(#)europe 7.64 # @(#)europe 7.65
# 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
@ -723,6 +723,23 @@
# clear whether the islands were using GMT or local time then. The # clear whether the islands were using GMT or local time then. The
# changes in Alderney and Guernsey were at the same 2am GMT time as # changes in Alderney and Guernsey were at the same 2am GMT time as
# for Great Britain; the order for Jersey is more interesting. # for Great Britain; the order for Jersey is more interesting.
#
# From Paul Eggert (1999-10-06):
# Mark Brader kindly translated the 1916 Jersey order from the French.
# It says that the 1916 transitions were 05-20 and 09-30 at midnight.
# Presumably this was 24:00, two hours earlier than Great Britain.
# It also says that after 1916 they'll sync with Great Britain.
# From Joseph S. Myers (1999-09-28):
# I have the 1918 orders for Guernsey, Alderney (both changing on same
# dates as UK, 2am GMT) and Sark (same dates; start and end at 2am,
# start "temps de Greenwich" (not specified as "temps moyen de
# Greenwich" which was used in the other orders) and end in an
# unspecified zone). For Jersey the same file (Public Record Office: HO
# 45/10892/357138) includes letters to the effect that in 1918 and 1919
# the States of Jersey agreed the same start and end dates as the UK
# (times unspecified, and it was the 1916 Jersey order that specified
# change at midnight of an unspecified zone).
# From Joseph S. Myers <jsm28@hermes.cam.ac.uk> (1998-01-06): # From Joseph S. Myers <jsm28@hermes.cam.ac.uk> (1998-01-06):
# #
@ -1304,6 +1321,15 @@ Zone America/Thule -4:35:08 - LMT 1916 Jul 28 # Pituffik
# for their standard and summer times. He says no, they use "suveaeg" # for their standard and summer times. He says no, they use "suveaeg"
# (summer time) and "talveaeg" (winter time). # (summer time) and "talveaeg" (winter time).
# From <a href="http://www.baltictimes.com/">The Baltic Times</a> (1999-09-09)
# via Steffen Thorsen:
# This year will mark the last time Estonia shifts to summer time,
# a council of the ruling coalition announced Sept. 6....
# But what this could mean for Estonia's chances of joining the European
# Union are still unclear. In 1994, the EU declared summer time compulsory
# for all member states until 2001. Brussels has yet to decide what to do
# after that.
# 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
@ -1315,7 +1341,8 @@ Zone Europe/Tallinn 1:39:00 - LMT 1880
3:00 Russia MSK/MSD 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 1998 Sep 22 2:00 C-Eur EE%sT 1998 Sep 22
2:00 EU EE%sT 2:00 EU EE%sT 2000
2:00 - EET
# Finland # Finland
# #
@ -1715,6 +1742,24 @@ Zone Europe/Vaduz 0:38:04 - LMT 1894 Jun
1:00 EU CE%sT 1:00 EU CE%sT
# Lithuania # Lithuania
# 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.
# From Marius Gedminas <mgedmin@pub.osf.lt> (1998-08-07):
# I would like to inform that in this year Lithuanian time zone
# (Europe/Vilnius) was changed.
# From <a href="http://www.elta.lt/">ELTA</a> No. 972 (2582) (1999-09-29),
# via Steffen Thorsen:
# Lithuania has shifted back to the second time zone (GMT plus two hours)
# to be valid here starting from October 31,
# as decided by the national government on Wednesday....
# The Lithuanian government also announced plans to consider a
# motion to give up shifting to summer time in spring, as it was
# already done by Estonia.
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Europe/Vilnius 1:41:16 - LMT 1880 Zone Europe/Vilnius 1:41:16 - LMT 1880
1:24:00 - WMT 1917 # Warsaw Mean Time 1:24:00 - WMT 1917 # Warsaw Mean Time
@ -1728,14 +1773,8 @@ Zone Europe/Vilnius 1:41:16 - LMT 1880
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 1998 2:00 C-Eur EE%sT 1998
2:00 - EET 1998 Mar 29 1:00u 2:00 - EET 1998 Mar 29 1:00u
1:00 EU CE%sT 1:00 EU CE%sT 1999 Oct 31 1:00u
# From Paul Eggert (1996-11-22): 2:00 EU EE%sT
# 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.
# From Marius Gedminas <mgedmin@pub.osf.lt> (1998-08-07):
# I would like to inform that in this year Lithuanian time zone
# (Europe/Vilnius) was changed.
# 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.