mirror of
https://sourceware.org/git/glibc.git
synced 2025-01-03 08:11:08 +00:00
Force rereading TZDEFRULES after it was used to set DST rules only (bug #19253)
If the TZDEFRULES file was used to set the DST rules when $TZ didn't provide any we need to make sure that the next time it is used we recompute everything as __tzfile_default changes some setting from what is provided by TZDEFRULES.
This commit is contained in:
parent
97ee300903
commit
c83196b0df
11
ChangeLog
11
ChangeLog
@ -1,3 +1,14 @@
|
||||
2016-01-11 Andreas Schwab <schwab@suse.de>
|
||||
|
||||
[BZ #19253]
|
||||
* time/tzfile.c (__tzfile_default): Invalidate tzfile attribute
|
||||
cache when TZDEFRULES was used.
|
||||
* time/tst-tzname.c: New file.
|
||||
* time/Makefile (test): Add tst-tzname.
|
||||
(tst-tzname-ENV, CPPFLAGS-tst-tzname.c): Define.
|
||||
* timezone/Makefile (test-zones): Add $(posixrules-file).
|
||||
($(testdata)/$(posixrules-file)): New rule.
|
||||
|
||||
2016-01-10 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
Fix doc quoting problems with Texinfo 5
|
||||
|
@ -37,7 +37,8 @@ aux := era alt_digit lc-time-cleanup
|
||||
tests := test_time clocktest tst-posixtz tst-strptime tst_wcsftime \
|
||||
tst-getdate tst-mktime tst-mktime2 tst-ftime_l tst-strftime \
|
||||
tst-mktime3 tst-strptime2 bug-asctime bug-asctime_r bug-mktime1 \
|
||||
tst-strptime3 bug-getdate1 tst-strptime-whitespace tst-ftime
|
||||
tst-strptime3 bug-getdate1 tst-strptime-whitespace tst-ftime \
|
||||
tst-tzname
|
||||
|
||||
include ../Rules
|
||||
|
||||
@ -63,4 +64,7 @@ CFLAGS-test_time.c = -Wno-format
|
||||
tst-getdate-ENV= DATEMSK=datemsk TZDIR=${common-objpfx}timezone/testdata
|
||||
test_time-ARGS= EST5EDT CST
|
||||
|
||||
tst-tzname-ENV = TZDIR=${common-objpfx}timezone/testdata
|
||||
CPPFLAGS-tst-tzname.c = -DTZDEFRULES='"$(posixrules-file)"'
|
||||
|
||||
bug-getdate1-ARGS = ${objpfx}bug-getdate1-fmt
|
||||
|
50
time/tst-tzname.c
Normal file
50
time/tst-tzname.c
Normal file
@ -0,0 +1,50 @@
|
||||
/* Test that tzset sets tzname correctly (BZ #19253).
|
||||
Copyright (C) 2015 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <time.h>
|
||||
|
||||
static int
|
||||
do_test (void)
|
||||
{
|
||||
int result = 0;
|
||||
|
||||
setenv ("TZ", TZDEFRULES, 1);
|
||||
tzset ();
|
||||
const char *stdtz = strdup (tzname[0]);
|
||||
setenv ("TZ", "STD-1DST", 1);
|
||||
tzset ();
|
||||
if (strcmp (tzname[0], "STD") != 0)
|
||||
{
|
||||
printf ("FAIL: TZ=STD-1DST, tzname[0] = %s\n", tzname[0]);
|
||||
result = 1;
|
||||
}
|
||||
setenv ("TZ", TZDEFRULES, 1);
|
||||
tzset ();
|
||||
if (strcmp (tzname[0], stdtz) != 0)
|
||||
{
|
||||
printf ("FAIL: TZ=%s, tzname[0] = %s\n", TZDEFRULES, tzname[0]);
|
||||
result = 1;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
#define TEST_FUNCTION do_test ()
|
||||
#include "../test-skeleton.c"
|
@ -628,6 +628,12 @@ __tzfile_default (const char *std, const char *dst,
|
||||
__timezone = -types[0].offset;
|
||||
|
||||
compute_tzname_max (stdlen + dstlen);
|
||||
|
||||
/* Invalidate the tzfile attribute cache to force rereading
|
||||
TZDEFRULES the next time it is used. */
|
||||
tzfile_dev = 0;
|
||||
tzfile_ino = 0;
|
||||
tzfile_mtime = 0;
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -40,7 +40,8 @@ ifeq ($(run-built-tests),yes)
|
||||
# List zones generated by separate commands running zic on the host.
|
||||
# Each such zic run counts as a separate test.
|
||||
test-zones := America/New_York Etc/UTC UTC Europe/Berlin \
|
||||
Australia/Melbourne America/Sao_Paulo Asia/Tokyo
|
||||
Australia/Melbourne America/Sao_Paulo Asia/Tokyo \
|
||||
$(posixrules-file)
|
||||
tests-special += $(addprefix $(testdata)/, $(test-zones))
|
||||
endif
|
||||
|
||||
@ -91,6 +92,8 @@ zic-deps = $(objpfx)zic $(leapseconds) yearistype
|
||||
|
||||
$(testdata)/America/New_York: northamerica $(zic-deps)
|
||||
$(build-testdata)
|
||||
$(testdata)/$(posixrules-file): $(testdata)/America/New_York
|
||||
$(make-link); $(evaluate-test)
|
||||
$(testdata)/Etc/UTC: etcetera $(zic-deps)
|
||||
$(build-testdata)
|
||||
# Use a pattern rule to indicate the command produces both targets at once.
|
||||
|
Loading…
Reference in New Issue
Block a user