From 2ceb48dfc28f619b1bfe6037e5799ec9d0a0ab31 Mon Sep 17 00:00:00 2001 From: Mart Raudsepp Date: Mon, 17 Dec 2018 00:42:39 +0200 Subject: [PATCH] gtimezone: Fallback to /etc/timezone on Gentoo On non-systemd Gentoo systems the chosen timezone is expressed in /etc/timezone and /etc/localtime may be a copy of the timezone file instead of symlink. Add this path to the fallback test to not regress dates into UTC. --- glib/gtimezone.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/glib/gtimezone.c b/glib/gtimezone.c index df40d852d..3d38b17bf 100644 --- a/glib/gtimezone.c +++ b/glib/gtimezone.c @@ -449,12 +449,17 @@ zone_info_unix (const gchar *identifier, G_FILE_ERROR_INVAL); g_clear_error (&read_link_err); - /* Fallback to the content of /var/db/zoneinfo if /etc/localtime is - * not a symlink. This is where 'tzsetup' program on FreeBSD and - * DragonflyBSD stores the timezone chosen by the user. */ - if (not_a_symlink && g_file_get_contents ("/var/db/zoneinfo", - &resolved_identifier, - NULL, NULL)) + /* Fallback to the content of /var/db/zoneinfo or /etc/timezone + * if /etc/localtime is not a symlink. /var/db/zoneinfo is + * where 'tzsetup' program on FreeBSD and DragonflyBSD stores + * the timezone chosen by the user. /etc/timezone is where user + * choice is expressed on Gentoo OpenRC and others. */ + if (not_a_symlink && (g_file_get_contents ("/var/db/zoneinfo", + &resolved_identifier, + NULL, NULL) || + g_file_get_contents ("/etc/timezone", + &resolved_identifier, + NULL, NULL))) g_strchomp (resolved_identifier); else {