diff options
| author | Michael Stapelberg | 2011-04-21 20:49:22 +0200 | 
|---|---|---|
| committer | Michael Stapelberg | 2011-04-21 20:50:14 +0200 | 
| commit | 4fa8a4e0ab52d5e804e3d85c04281d392c767b22 (patch) | |
| tree | 5b72d54482ba3512f27fca5e878563185567a38c | |
| parent | document the path option in sample config (diff) | |
get time at the beginning of the loop
| -rw-r--r-- | i3status.c | 12 | ||||
| -rw-r--r-- | include/i3status.h | 3 | ||||
| -rw-r--r-- | src/print_time.c | 7 | 
3 files changed, 11 insertions, 11 deletions
| @@ -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(¤t_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(¤t_time, NULL); -                struct timespec ts = {interval - 1, (10e5 - current_time.tv_usec) * 1000}; +                struct timeval current_timeval; +                gettimeofday(¤t_timeval, NULL); +                struct timespec ts = {interval - 1, (10e5 - current_timeval.tv_usec) * 1000};                  nanosleep(&ts, NULL);          }  } diff --git a/include/i3status.h b/include/i3status.h index 1bcf86a..501340a 100644 --- a/include/i3status.h +++ b/include/i3status.h @@ -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); diff --git a/src/print_time.c b/src/print_time.c index 2cf2ab3..9c9df90 100644 --- a/src/print_time.c +++ b/src/print_time.c @@ -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(¤t_time);          if (current_tm == NULL) {                  return;          } | 
