mirror of git://sourceware.org/git/glibc.git
[BZ #154]
Update. 2004-08-09 Ulrich Drepper <drepper@redhat.com> * time/tzset.c (tzset_internal): If TZ is not set do not compare old and new tz value since it might be /etc/localtime in both cases although the file changed. [BZ #154] Patch by Christian Franke <franke@computer.org>. * time/tzfile.c (__tzfile_read): Determine dev/ino of file. Compare with values of previously opened file. Don't do anything is they match.
This commit is contained in:
parent
c14e91352e
commit
fe6cc2ae09
11
ChangeLog
11
ChangeLog
|
@ -1,3 +1,14 @@
|
||||||
|
2004-08-09 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
|
* time/tzset.c (tzset_internal): If TZ is not set do not compare
|
||||||
|
old and new tz value since it might be /etc/localtime in both
|
||||||
|
cases although the file changed. [BZ #154]
|
||||||
|
Patch by Christian Franke <franke@computer.org>.
|
||||||
|
|
||||||
|
* time/tzfile.c (__tzfile_read): Determine dev/ino of file.
|
||||||
|
Compare with values of previously opened file. Don't do anything
|
||||||
|
is they match.
|
||||||
|
|
||||||
2004-08-08 Ulrich Drepper <drepper@redhat.com>
|
2004-08-08 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
* elf/dl-load.c (_dl_map_object): If __RTLD_CALLMAP flag is set,
|
* elf/dl-load.c (_dl_map_object): If __RTLD_CALLMAP flag is set,
|
||||||
|
|
|
@ -24,11 +24,14 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
|
||||||
#define NOID
|
#define NOID
|
||||||
#include <timezone/tzfile.h>
|
#include <timezone/tzfile.h>
|
||||||
|
|
||||||
int __use_tzfile;
|
int __use_tzfile;
|
||||||
|
static dev_t tzfile_dev;
|
||||||
|
static ino64_t tzfile_ino;
|
||||||
|
|
||||||
struct ttinfo
|
struct ttinfo
|
||||||
{
|
{
|
||||||
|
@ -97,6 +100,7 @@ __tzfile_read (const char *file, size_t extra, char **extrap)
|
||||||
size_t total_size;
|
size_t total_size;
|
||||||
size_t types_idx;
|
size_t types_idx;
|
||||||
size_t leaps_idx;
|
size_t leaps_idx;
|
||||||
|
int was_using_tzfile = __use_tzfile;
|
||||||
|
|
||||||
__use_tzfile = 0;
|
__use_tzfile = 0;
|
||||||
|
|
||||||
|
@ -154,6 +158,25 @@ __tzfile_read (const char *file, size_t extra, char **extrap)
|
||||||
if (f == NULL)
|
if (f == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
/* Get information about the file. */
|
||||||
|
struct stat64 st;
|
||||||
|
if (fstat64 (fileno (f), &st) != 0)
|
||||||
|
{
|
||||||
|
fclose (f);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (was_using_tzfile && tzfile_ino == st.st_ino && tzfile_dev == st.st_dev)
|
||||||
|
{
|
||||||
|
/* It's the same file. No further work needed. */
|
||||||
|
fclose (f);
|
||||||
|
__use_tzfile = 1;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Remember the inode and device number. */
|
||||||
|
tzfile_dev = st.st_dev;
|
||||||
|
tzfile_ino = st.st_ino;
|
||||||
|
|
||||||
/* No threads reading this stream. */
|
/* No threads reading this stream. */
|
||||||
__fsetlocking (f, FSETLOCKING_BYCALLER);
|
__fsetlocking (f, FSETLOCKING_BYCALLER);
|
||||||
|
|
||||||
|
|
|
@ -159,10 +159,7 @@ tzset_internal (always)
|
||||||
|
|
||||||
/* Examine the TZ environment variable. */
|
/* Examine the TZ environment variable. */
|
||||||
tz = getenv ("TZ");
|
tz = getenv ("TZ");
|
||||||
if (tz == NULL)
|
if (tz && *tz == '\0')
|
||||||
/* No user specification; use the site-wide default. */
|
|
||||||
tz = TZDEFAULT;
|
|
||||||
else if (*tz == '\0')
|
|
||||||
/* User specified the empty string; use UTC explicitly. */
|
/* User specified the empty string; use UTC explicitly. */
|
||||||
tz = "Universal";
|
tz = "Universal";
|
||||||
|
|
||||||
|
@ -177,6 +174,10 @@ tzset_internal (always)
|
||||||
/* No change, simply return. */
|
/* No change, simply return. */
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (tz == NULL)
|
||||||
|
/* No user specification; use the site-wide default. */
|
||||||
|
tz = TZDEFAULT;
|
||||||
|
|
||||||
tz_rules[0].name = NULL;
|
tz_rules[0].name = NULL;
|
||||||
tz_rules[1].name = NULL;
|
tz_rules[1].name = NULL;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue