]> git.sur5r.net Git - i3/i3status/commitdiff
get time at the beginning of the loop
authorMichael Stapelberg <michael@stapelberg.de>
Thu, 21 Apr 2011 18:49:22 +0000 (20:49 +0200)
committerMichael Stapelberg <michael@stapelberg.de>
Thu, 21 Apr 2011 18:50:14 +0000 (20:50 +0200)
i3status.c
include/i3status.h
src/print_time.c

index e4a3e4c1d5c3db141cf0ebbe7dd5dee29c095420..d219b3c95dcd8ab322c828dfa7dd5d0761895e95 100644 (file)
@@ -322,6 +322,10 @@ int main(int argc, char *argv[]) {
         int interval = cfg_getint(cfg_general, "interval");
 
         while (1) {
+                time_t current_time = time(NULL);
+                struct tm *current_tm = NULL;
+                if (current_time != (time_t) -1)
+                        current_tm = localtime(&current_time);
                 for (j = 0; j < cfg_size(cfg, "order"); j++) {
                         if (j > 0)
                                 print_seperator();
@@ -350,7 +354,7 @@ int main(int argc, char *argv[]) {
                                 print_load(cfg_getstr(sec, "format"));
 
                         CASE_SEC("time")
-                                print_time(cfg_getstr(sec, "format"));
+                                print_time(cfg_getstr(sec, "format"), current_tm);
 
                         CASE_SEC("ddate")
                                 print_ddate(cfg_getstr(sec, "format"));
@@ -371,9 +375,9 @@ int main(int argc, char *argv[]) {
                  * we don’t use sleep(interval) but we sleep until the next
                  * second (with microsecond precision) plus (interval-1)
                  * seconds. */
-                struct timeval current_time;
-                gettimeofday(&current_time, NULL);
-                struct timespec ts = {interval - 1, (10e5 - current_time.tv_usec) * 1000};
+                struct timeval current_timeval;
+                gettimeofday(&current_timeval, NULL);
+                struct timespec ts = {interval - 1, (10e5 - current_timeval.tv_usec) * 1000};
                 nanosleep(&ts, NULL);
         }
 }
index 1bcf86abf8274e0e60d1b35d632fc5f6515a20cf..501340acf89be171f944b2335c6bd89f58b2724c 100644 (file)
@@ -5,6 +5,7 @@ enum { O_DZEN2, O_XMOBAR, O_NONE } output_format;
 
 #include <stdbool.h>
 #include <confuse.h>
+#include <time.h>
 
 #define BEGINS_WITH(haystack, needle) (strncmp(haystack, needle, strlen(needle)) == 0)
 #define max(a, b) ((a) > (b) ? (a) : (b))
@@ -61,7 +62,7 @@ char *endcolor() __attribute__ ((pure));
 void print_ipv6_info(const char *format_up, const char *format_down);
 void print_disk_info(const char *path, const char *format);
 void print_battery_info(int number, const char *format, bool last_full_capacity);
-void print_time(const char *format);
+void print_time(const char *format, struct tm *current_tm);
 void print_ddate(const char *format);
 const char *get_ip_addr();
 void print_wireless_info(const char *interface, const char *format_up, const char *format_down);
index 2cf2ab3ad22e8bb73f69f0b6865cf6af0d1ea5c1..9c9df901319ca3e9d69bfc14e69a5c8432d4c522 100644 (file)
@@ -3,14 +3,9 @@
 #include <stdio.h>
 #include <stdlib.h>
 
-void print_time(const char *format) {
+void print_time(const char *format, struct tm *current_tm) {
         static char part[512];
         /* Get date & time */
-        time_t current_time = time(NULL);
-        if (current_time == (time_t) -1) {
-                return;
-        }
-        struct tm *current_tm = localtime(&current_time);
         if (current_tm == NULL) {
                 return;
         }