summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Stapelberg <michael@stapelberg.de>2011-04-21 20:49:22 +0200
committerMichael Stapelberg <michael@stapelberg.de>2011-04-21 20:50:14 +0200
commit4fa8a4e0ab52d5e804e3d85c04281d392c767b22 (patch)
tree5b72d54482ba3512f27fca5e878563185567a38c
parent686b8798aa725eb5303d154c193e30766bd00094 (diff)
get time at the beginning of the loop
-rw-r--r--i3status.c12
-rw-r--r--include/i3status.h3
-rw-r--r--src/print_time.c7
3 files changed, 11 insertions, 11 deletions
diff --git a/i3status.c b/i3status.c
index e4a3e4c..d219b3c 100644
--- a/i3status.c
+++ b/i3status.c
@@ -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);
}
}
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(&current_time);
if (current_tm == NULL) {
return;
}