time-util: treat /etc/localtime missing as UTC
authorLennart Poettering <lennart@poettering.net>
Wed, 13 Nov 2019 09:32:26 +0000 (10:32 +0100)
committerLennart Poettering <lennart@poettering.net>
Wed, 13 Nov 2019 09:39:14 +0000 (10:39 +0100)
src/basic/time-util.c

index f5be619..9e123d8 100644 (file)
@@ -1387,13 +1387,22 @@ bool clock_supported(clockid_t clock) {
         }
 }
 
-int get_timezone(char **tz) {
+int get_timezone(char **ret) {
         _cleanup_free_ char *t = NULL;
         const char *e;
         char *z;
         int r;
 
         r = readlink_malloc("/etc/localtime", &t);
+        if (r == -ENOENT) {
+                /* If the symlink does not exist, assume "UTC", like glibc does*/
+                z = strdup("UTC");
+                if (!z)
+                        return -ENOMEM;
+
+                *ret = z;
+                return 0;
+        }
         if (r < 0)
                 return r; /* returns EINVAL if not a symlink */
 
@@ -1408,7 +1417,7 @@ int get_timezone(char **tz) {
         if (!z)
                 return -ENOMEM;
 
-        *tz = z;
+        *ret = z;
         return 0;
 }