chiark / gitweb /
Don't call clock_getting unnecessarily at startup.
authorBen Harris <bjh21@bjh21.me.uk>
Sat, 24 Nov 2018 01:30:34 +0000 (01:30 +0000)
committerBen Harris <bjh21@bjh21.me.uk>
Sat, 8 Dec 2018 22:30:09 +0000 (22:30 +0000)
If the use has specified -s or -f, we don't need to initialise our
idea of the displayed time from CLOCK_REALTIME.

clunk.c

diff --git a/clunk.c b/clunk.c
index 5a0ad119a63cca5c675fcfa195512416909971fa..a924bbaf48b78898a0fe969af8a3326b813010f8 100644 (file)
--- a/clunk.c
+++ b/clunk.c
@@ -199,6 +199,7 @@ init(int argc, char **argv)
        int opt;
 
        tzset();
+
        if (sigemptyset(&signals_to_block) != 0 ||
            sigaddset(&signals_to_block, SIGINT) != 0 ||
            sigaddset(&signals_to_block, SIGTERM) != 0)
@@ -211,11 +212,6 @@ init(int argc, char **argv)
        if (timer_create(CLOCK_REALTIME, &sev, &main_timer) != 0)
                err(1, "timer_create");
 
-       if (clock_gettime(CLOCK_REALTIME, &ts) != 0)
-               err(1, "clock_gettime");
-       if (localtime_r(&ts.tv_sec, &displayed) == NULL)
-               err(1, "localtime_r");
-       displayed.tm_sec = (displayed.tm_sec >= 30) ? 30 : 0;
        while ((opt = getopt(argc, argv, "f:g:s:")) != -1) {
                switch (opt) {
                case 'f':
@@ -234,6 +230,13 @@ init(int argc, char **argv)
        /* Allow -s to override state read from file. */
        if (statestr != NULL)
                init_statestring(statestr);
+       if (statefile == NULL && statestr == NULL) {
+               if (clock_gettime(CLOCK_REALTIME, &ts) != 0)
+                       err(1, "clock_gettime");
+               if (localtime_r(&ts.tv_sec, &displayed) == NULL)
+                       err(1, "localtime_r");
+               displayed.tm_sec = (displayed.tm_sec >= 30) ? 30 : 0;
+       }
 }
 
 enum need_adjust { STOP, TICK, ADVANCE };