]> diplodocus.org Git - nmh/commitdiff
dlocaltime(): Only call tzset(3) once.
authorRalph Corderoy <ralph@inputplus.co.uk>
Fri, 11 Nov 2016 00:38:29 +0000 (00:38 +0000)
committerRalph Corderoy <ralph@inputplus.co.uk>
Fri, 11 Nov 2016 00:38:29 +0000 (00:38 +0000)
This avoids the stat(2) of /etc/localtime per message scan if TZ isn't
set in the environment;  that's the default case on this Linux system.
I can't see a way the TZ environment variable is likely to change
between messages, or that it's intended an invocation of scan(1), say,
copes with the timezone shifting underneath it by /etc/localtime being
changed.

sbr/dtime.c

index 066a72d..89f5dde 100644 (file)
@@ -108,7 +108,14 @@ dlocaltime (time_t *clock)
     if (tm->tm_isdst)                  /* if DST is in effect */
        tw.tw_zone -= 60;               /* reset to normal offset */
 #else
-    tzset();
+    {
+        static bool deja_vu;
+
+        if (!deja_vu) {
+            deja_vu = true;
+            tzset();
+        }
+    }
     tw.tw_zone = -(timezone / 60);
 #endif