mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-11-10 19:36:18 +01:00
gtimezone: consider a leading : in TZ environment variable
When set to represent a zoneinfo file, TZ may start with :, therefore glib needs to check it and ignore the first char when building the resulting filename, or it won't be found. Also, the path could be absolute, in which case it is wrong to append /usr/share/timezone https://bugzilla.gnome.org/show_bug.cgi?id=664237
This commit is contained in:
parent
b98b63187a
commit
1faed130dc
@ -368,6 +368,10 @@ g_time_zone_new (const gchar *identifier)
|
|||||||
{
|
{
|
||||||
gchar *filename;
|
gchar *filename;
|
||||||
|
|
||||||
|
/* identifier can be a relative or absolute path name;
|
||||||
|
if relative, it is interpreted starting from /usr/share/timezone
|
||||||
|
while the POSIX standard says it should start with :,
|
||||||
|
glibc allows both syntaxes, so we should too */
|
||||||
if (identifier != NULL)
|
if (identifier != NULL)
|
||||||
{
|
{
|
||||||
const gchar *tzdir;
|
const gchar *tzdir;
|
||||||
@ -376,7 +380,13 @@ g_time_zone_new (const gchar *identifier)
|
|||||||
if (tzdir == NULL)
|
if (tzdir == NULL)
|
||||||
tzdir = "/usr/share/zoneinfo";
|
tzdir = "/usr/share/zoneinfo";
|
||||||
|
|
||||||
filename = g_build_filename (tzdir, identifier, NULL);
|
if (*identifier == ':')
|
||||||
|
identifier ++;
|
||||||
|
|
||||||
|
if (g_path_is_absolute (identifier))
|
||||||
|
filename = g_strdup (identifier);
|
||||||
|
else
|
||||||
|
filename = g_build_filename (tzdir, identifier, NULL);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
filename = g_strdup ("/etc/localtime");
|
filename = g_strdup ("/etc/localtime");
|
||||||
|
Loading…
Reference in New Issue
Block a user