Merge branch 'clock-utc'

This commit is contained in:
Daniel Eklöf 2021-09-12 21:00:11 +02:00
commit 12f7802537
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
3 changed files with 13 additions and 4 deletions

View file

@ -53,7 +53,7 @@
* tags: percentage formatter, for range tags: `{tag_name:%}`. * tags: percentage formatter, for range tags: `{tag_name:%}`.
* tags: percentage tag formatter, for range tags: `{tag_name:%}`. * tags: percentage tag formatter, for range tags: `{tag_name:%}`.
* tags: kb/mb/gb, and kib/mib/gib tag formatters. * tags: kb/mb/gb, and kib/mib/gib tag formatters.
* clock: add a config option to show UTC time.
### Changed ### Changed

View file

@ -29,6 +29,10 @@ clock - This module provides the current date and time
: string : string
: no : no
: *strftime* formatter for the _date_ date (default=*%x*) : *strftime* formatter for the _date_ date (default=*%x*)
| utc
: bool
: no
: Use GMT instead of local timezone (default=false)
# EXAMPLES # EXAMPLES

View file

@ -22,6 +22,7 @@ struct private {
} update_granularity; } update_granularity;
char *date_format; char *date_format;
char *time_format; char *time_format;
bool utc;
}; };
static void static void
@ -46,7 +47,7 @@ content(struct module *mod)
{ {
const struct private *m = mod->private; const struct private *m = mod->private;
time_t t = time(NULL); time_t t = time(NULL);
struct tm *tm = localtime(&t); struct tm *tm = m->utc ? gmtime(&t) : localtime(&t);
char date_str[1024]; char date_str[1024];
strftime(date_str, sizeof(date_str), m->date_format, tm); strftime(date_str, sizeof(date_str), m->date_format, tm);
@ -131,12 +132,13 @@ run(struct module *mod)
} }
static struct module * static struct module *
clock_new(struct particle *label, const char *date_format, const char *time_format) clock_new(struct particle *label, const char *date_format, const char *time_format, bool utc)
{ {
struct private *m = calloc(1, sizeof(*m)); struct private *m = calloc(1, sizeof(*m));
m->label = label; m->label = label;
m->date_format = strdup(date_format); m->date_format = strdup(date_format);
m->time_format = strdup(time_format); m->time_format = strdup(time_format);
m->utc = utc;
static const char *const seconds_formatters[] = { static const char *const seconds_formatters[] = {
"%c", "%c",
@ -178,11 +180,13 @@ from_conf(const struct yml_node *node, struct conf_inherit inherited)
const struct yml_node *c = yml_get_value(node, "content"); const struct yml_node *c = yml_get_value(node, "content");
const struct yml_node *date_format = yml_get_value(node, "date-format"); const struct yml_node *date_format = yml_get_value(node, "date-format");
const struct yml_node *time_format = yml_get_value(node, "time-format"); const struct yml_node *time_format = yml_get_value(node, "time-format");
const struct yml_node *utc = yml_get_value(node, "utc");
return clock_new( return clock_new(
conf_to_particle(c, inherited), conf_to_particle(c, inherited),
date_format != NULL ? yml_value_as_string(date_format) : "%x", date_format != NULL ? yml_value_as_string(date_format) : "%x",
time_format != NULL ? yml_value_as_string(time_format) : "%H:%M"); time_format != NULL ? yml_value_as_string(time_format) : "%H:%M",
utc != NULL ? yml_value_as_bool(utc) : false);
} }
static bool static bool
@ -191,6 +195,7 @@ verify_conf(keychain_t *chain, const struct yml_node *node)
static const struct attr_info attrs[] = { static const struct attr_info attrs[] = {
{"date-format", false, &conf_verify_string}, {"date-format", false, &conf_verify_string},
{"time-format", false, &conf_verify_string}, {"time-format", false, &conf_verify_string},
{"utc", false, &conf_verify_bool},
MODULE_COMMON_ATTRS, MODULE_COMMON_ATTRS,
}; };