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();
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"));
* 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);
}
}
#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))
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);
#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;
}