mirror of
https://github.com/Llewellynvdm/conky.git
synced 2024-12-24 11:55:43 +00:00
cleanup times_in_seconds enhancement
This also adds code to unset the variable before reloading the config.
This commit is contained in:
parent
45a183d840
commit
b9f1dc7283
11
src/common.c
11
src/common.c
@ -34,6 +34,7 @@
|
|||||||
#include "logging.h"
|
#include "logging.h"
|
||||||
#include "net_stat.h"
|
#include "net_stat.h"
|
||||||
#include "specials.h"
|
#include "specials.h"
|
||||||
|
#include "timeinfo.h"
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <sys/time.h>
|
#include <sys/time.h>
|
||||||
@ -218,6 +219,11 @@ void format_seconds(char *buf, unsigned int n, long seconds)
|
|||||||
long days;
|
long days;
|
||||||
int hours, minutes;
|
int hours, minutes;
|
||||||
|
|
||||||
|
if (times_in_seconds()) {
|
||||||
|
snprintf(buf, n, "%ld", seconds);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
days = seconds / 86400;
|
days = seconds / 86400;
|
||||||
seconds %= 86400;
|
seconds %= 86400;
|
||||||
hours = seconds / 3600;
|
hours = seconds / 3600;
|
||||||
@ -237,6 +243,11 @@ void format_seconds_short(char *buf, unsigned int n, long seconds)
|
|||||||
long days;
|
long days;
|
||||||
int hours, minutes;
|
int hours, minutes;
|
||||||
|
|
||||||
|
if (times_in_seconds()) {
|
||||||
|
snprintf(buf, n, "%ld", seconds);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
days = seconds / 86400;
|
days = seconds / 86400;
|
||||||
seconds %= 86400;
|
seconds %= 86400;
|
||||||
hours = seconds / 3600;
|
hours = seconds / 3600;
|
||||||
|
42
src/conky.c
42
src/conky.c
@ -167,7 +167,6 @@ int top_io;
|
|||||||
int top_running;
|
int top_running;
|
||||||
#endif
|
#endif
|
||||||
int output_methods;
|
int output_methods;
|
||||||
char times_in_seconds = 0;
|
|
||||||
static int extra_newline;
|
static int extra_newline;
|
||||||
enum x_initialiser_state x_initialised = NO;
|
enum x_initialiser_state x_initialised = NO;
|
||||||
static volatile int g_signal_pending;
|
static volatile int g_signal_pending;
|
||||||
@ -727,6 +726,11 @@ static inline void format_media_player_time(char *buf, const int size,
|
|||||||
{
|
{
|
||||||
int days, hours, minutes;
|
int days, hours, minutes;
|
||||||
|
|
||||||
|
if (times_in_seconds()) {
|
||||||
|
snprintf(buf, size, "%d", seconds);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
days = seconds / (24 * 60 * 60);
|
days = seconds / (24 * 60 * 60);
|
||||||
seconds %= (24 * 60 * 60);
|
seconds %= (24 * 60 * 60);
|
||||||
hours = seconds / (60 * 60);
|
hours = seconds / (60 * 60);
|
||||||
@ -1508,11 +1512,7 @@ void generate_text_internal(char *p, int p_max_size,
|
|||||||
|
|
||||||
generate_text_internal(buf, max_user_text, *obj->sub, cur);
|
generate_text_internal(buf, max_user_text, *obj->sub, cur);
|
||||||
obj->data.s = buf;
|
obj->data.s = buf;
|
||||||
if(times_in_seconds) {
|
print_format_time(obj, p, p_max_size);
|
||||||
print_format_time(obj, p, p_max_size);
|
|
||||||
} else {
|
|
||||||
NORM_ERR("Enable \"times_in_seconds\" to use $format_time");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
/* mail stuff */
|
/* mail stuff */
|
||||||
OBJ(mails) {
|
OBJ(mails) {
|
||||||
@ -1939,18 +1939,10 @@ void generate_text_internal(char *p, int p_max_size,
|
|||||||
}
|
}
|
||||||
#endif /* X11 */
|
#endif /* X11 */
|
||||||
OBJ(uptime_short) {
|
OBJ(uptime_short) {
|
||||||
if(times_in_seconds) {
|
format_seconds_short(p, p_max_size, (int) cur->uptime);
|
||||||
snprintf(p, p_max_size, "%d", (int) cur->uptime);
|
|
||||||
} else {
|
|
||||||
format_seconds_short(p, p_max_size, (int) cur->uptime);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
OBJ(uptime) {
|
OBJ(uptime) {
|
||||||
if(times_in_seconds) {
|
format_seconds(p, p_max_size, (int) cur->uptime);
|
||||||
snprintf(p, p_max_size, "%d", (int) cur->uptime);
|
|
||||||
} else {
|
|
||||||
format_seconds(p, p_max_size, (int) cur->uptime);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
OBJ(user_names) {
|
OBJ(user_names) {
|
||||||
@ -1963,7 +1955,7 @@ void generate_text_internal(char *p, int p_max_size,
|
|||||||
snprintf(p, p_max_size, "%s", cur->users.times);
|
snprintf(p, p_max_size, "%s", cur->users.times);
|
||||||
}
|
}
|
||||||
OBJ(user_time) {
|
OBJ(user_time) {
|
||||||
update_user_time(obj->data.s, times_in_seconds);
|
update_user_time(obj->data.s);
|
||||||
snprintf(p, p_max_size, "%s", cur->users.ctime);
|
snprintf(p, p_max_size, "%s", cur->users.ctime);
|
||||||
}
|
}
|
||||||
OBJ(user_number) {
|
OBJ(user_number) {
|
||||||
@ -2027,18 +2019,10 @@ void generate_text_internal(char *p, int p_max_size,
|
|||||||
OBJ(mpd_status)
|
OBJ(mpd_status)
|
||||||
mpd_printf("%s", status);
|
mpd_printf("%s", status);
|
||||||
OBJ(mpd_elapsed) {
|
OBJ(mpd_elapsed) {
|
||||||
if(times_in_seconds) {
|
format_media_player_time(p, p_max_size, mpd_get_info()->elapsed);
|
||||||
snprintf(p, p_max_size, "%d", mpd_get_info()->elapsed);
|
|
||||||
} else {
|
|
||||||
format_media_player_time(p, p_max_size, mpd_get_info()->elapsed);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
OBJ(mpd_length) {
|
OBJ(mpd_length) {
|
||||||
if(times_in_seconds) {
|
format_media_player_time(p, p_max_size, mpd_get_info()->length);
|
||||||
snprintf(p, p_max_size, "%d", mpd_get_info()->length);
|
|
||||||
} else {
|
|
||||||
format_media_player_time(p, p_max_size, mpd_get_info()->length);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
OBJ(mpd_percent) {
|
OBJ(mpd_percent) {
|
||||||
percent_print(p, p_max_size, (int)(mpd_get_info()->progress * 100));
|
percent_print(p, p_max_size, (int)(mpd_get_info()->progress * 100));
|
||||||
@ -4459,6 +4443,8 @@ static void set_default_configurations(void)
|
|||||||
stuff_in_uppercase = 0;
|
stuff_in_uppercase = 0;
|
||||||
info.users.number = 1;
|
info.users.number = 1;
|
||||||
|
|
||||||
|
set_times_in_seconds(0);
|
||||||
|
|
||||||
#ifdef TCP_PORT_MONITOR
|
#ifdef TCP_PORT_MONITOR
|
||||||
/* set default connection limit */
|
/* set default connection limit */
|
||||||
tcp_portmon_set_max_connections(0);
|
tcp_portmon_set_max_connections(0);
|
||||||
@ -4923,7 +4909,7 @@ char load_config_file(const char *f)
|
|||||||
}
|
}
|
||||||
#endif /* X11 */
|
#endif /* X11 */
|
||||||
CONF("times_in_seconds") {
|
CONF("times_in_seconds") {
|
||||||
times_in_seconds = string_to_bool(value);
|
set_times_in_seconds(string_to_bool(value));
|
||||||
}
|
}
|
||||||
CONF("out_to_console") {
|
CONF("out_to_console") {
|
||||||
if(string_to_bool(value)) {
|
if(string_to_bool(value)) {
|
||||||
|
@ -309,7 +309,7 @@ extern struct information info;
|
|||||||
|
|
||||||
/* defined in users.c */
|
/* defined in users.c */
|
||||||
void update_users(void);
|
void update_users(void);
|
||||||
void update_user_time(char *tty, char times_in_seconds);
|
void update_user_time(char *tty);
|
||||||
|
|
||||||
/* defined in conky.c */
|
/* defined in conky.c */
|
||||||
extern double current_update_time, last_update_time, update_interval;
|
extern double current_update_time, last_update_time, update_interval;
|
||||||
|
@ -36,11 +36,23 @@
|
|||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <logging.h>
|
#include <logging.h>
|
||||||
|
|
||||||
|
char print_times_in_seconds = 0;
|
||||||
|
|
||||||
struct tztime_s {
|
struct tztime_s {
|
||||||
char *tz; /* timezone variable */
|
char *tz; /* timezone variable */
|
||||||
char *fmt; /* time display formatting */
|
char *fmt; /* time display formatting */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void set_times_in_seconds(char val)
|
||||||
|
{
|
||||||
|
print_times_in_seconds = val;
|
||||||
|
}
|
||||||
|
|
||||||
|
char times_in_seconds(void)
|
||||||
|
{
|
||||||
|
return print_times_in_seconds;
|
||||||
|
}
|
||||||
|
|
||||||
void scan_time(struct text_object *obj, const char *arg)
|
void scan_time(struct text_object *obj, const char *arg)
|
||||||
{
|
{
|
||||||
obj->data.opaque = strndup(arg ? arg : "%F %T", text_buffer_size);
|
obj->data.opaque = strndup(arg ? arg : "%F %T", text_buffer_size);
|
||||||
@ -150,6 +162,11 @@ void print_format_time(struct text_object *obj, char *p, unsigned int p_max_size
|
|||||||
int minutes, hours, days, weeks;
|
int minutes, hours, days, weeks;
|
||||||
char show_minutes = 0, show_hours = 0, show_days = 0, show_weeks = 0, hidestring;
|
char show_minutes = 0, show_hours = 0, show_days = 0, show_weeks = 0, hidestring;
|
||||||
|
|
||||||
|
if (!times_in_seconds()) {
|
||||||
|
NORM_ERR("Enable \"times_in_seconds\" to use $format_time");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
errno = 0;
|
errno = 0;
|
||||||
seconds = strtod(obj->data.s, ¤tchar);
|
seconds = strtod(obj->data.s, ¤tchar);
|
||||||
if(errno == 0 && obj->data.s != currentchar) {
|
if(errno == 0 && obj->data.s != currentchar) {
|
||||||
|
@ -30,6 +30,10 @@
|
|||||||
#ifndef _TIMEINFO_H
|
#ifndef _TIMEINFO_H
|
||||||
#define _TIMEINFO_H
|
#define _TIMEINFO_H
|
||||||
|
|
||||||
|
/* for the times_in_seconds configuration variable and it's users */
|
||||||
|
void set_times_in_seconds(char);
|
||||||
|
char times_in_seconds(void);
|
||||||
|
|
||||||
/* since time and utime are quite equal, certain functions
|
/* since time and utime are quite equal, certain functions
|
||||||
* are shared in between both text object types. */
|
* are shared in between both text object types. */
|
||||||
|
|
||||||
|
12
src/users.c
12
src/users.c
@ -93,7 +93,7 @@ static void user_time(char *ptr)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
static void tty_user_time(char *ptr, char *tty, char times_in_seconds)
|
static void tty_user_time(char *ptr, char *tty)
|
||||||
{
|
{
|
||||||
time_t real, diff, log_in;
|
time_t real, diff, log_in;
|
||||||
char buf[BUFLEN] = "";
|
char buf[BUFLEN] = "";
|
||||||
@ -111,11 +111,7 @@ static void tty_user_time(char *ptr, char *tty, char times_in_seconds)
|
|||||||
|
|
||||||
time(&real);
|
time(&real);
|
||||||
diff = difftime(real, log_in);
|
diff = difftime(real, log_in);
|
||||||
if(times_in_seconds) {
|
format_seconds(buf, BUFLEN, diff);
|
||||||
snprintf(buf, BUFLEN, "%d", (int) diff);
|
|
||||||
} else {
|
|
||||||
format_seconds(buf, BUFLEN, diff);
|
|
||||||
}
|
|
||||||
strncpy(ptr, buf, BUFLEN-1);
|
strncpy(ptr, buf, BUFLEN-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -133,7 +129,7 @@ static void users_alloc(struct information *ptr)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void update_user_time(char *tty, char times_in_seconds)
|
void update_user_time(char *tty)
|
||||||
{
|
{
|
||||||
struct information *current_info = &info;
|
struct information *current_info = &info;
|
||||||
char temp[BUFLEN] = "";
|
char temp[BUFLEN] = "";
|
||||||
@ -142,7 +138,7 @@ void update_user_time(char *tty, char times_in_seconds)
|
|||||||
current_info->users.ctime = malloc(text_buffer_size);
|
current_info->users.ctime = malloc(text_buffer_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
tty_user_time(temp, tty, times_in_seconds);
|
tty_user_time(temp, tty);
|
||||||
|
|
||||||
if (temp != NULL) {
|
if (temp != NULL) {
|
||||||
if (current_info->users.ctime) {
|
if (current_info->users.ctime) {
|
||||||
|
Loading…
Reference in New Issue
Block a user