diff options
-rw-r--r-- | src/shutdownd.c | 18 | ||||
-rw-r--r-- | src/utmp-wtmp.c | 17 |
2 files changed, 13 insertions, 22 deletions
diff --git a/src/shutdownd.c b/src/shutdownd.c index 7f5e66dbec..d889824536 100644 --- a/src/shutdownd.c +++ b/src/shutdownd.c @@ -107,15 +107,10 @@ static void warn_wall(struct shutdownd_command *c) { if (c->wall_message[0]) utmp_wall(c->wall_message); else { - time_t s; - char buf[27]; + char date[FORMAT_TIMESTAMP_MAX]; const char* prefix; char *l; - s = c->elapse / USEC_PER_SEC; - ctime_r(&s, buf); - - if (c->mode == 'H') prefix = "The system is going down for system halt at"; else if (c->mode == 'P') @@ -125,7 +120,9 @@ static void warn_wall(struct shutdownd_command *c) { else assert_not_reached("Unknown mode!"); - if (asprintf(&l, "%s %s!", prefix, strstrip(buf)) < 0) + if (asprintf(&l, "%s %s!", + prefix, + format_timestamp(date, sizeof(date), c->elapse)) < 0) log_error("Failed to allocate wall message"); else { utmp_wall(l); @@ -260,8 +257,7 @@ int main(int argc, char *argv[]) { goto finish; else if (k > 0 && c.elapse > 0) { struct itimerspec its; - char buf[27]; - + char date[FORMAT_TIMESTAMP_MAX]; if (c.warn_wall) { /* Send wall messages every so often */ @@ -294,11 +290,9 @@ int main(int argc, char *argv[]) { goto finish; } - ctime_r(&its.it_value.tv_sec, buf); - sd_notifyf(false, "STATUS=Shutting down at %s...", - strstrip(buf)); + format_timestamp(date, sizeof(date), c.elapse)); } } diff --git a/src/utmp-wtmp.c b/src/utmp-wtmp.c index de3805e004..77baaffacf 100644 --- a/src/utmp-wtmp.c +++ b/src/utmp-wtmp.c @@ -290,10 +290,9 @@ finish: int utmp_wall(const char *message) { struct utmpx *u; - char date[26]; + char date[FORMAT_TIMESTAMP_MAX]; char *text = NULL, *hn = NULL, *un = NULL, *tty = NULL; int r; - time_t t; if (!(hn = gethostname_malloc()) || !(un = getlogname_malloc())) { @@ -301,18 +300,16 @@ int utmp_wall(const char *message) { goto finish; } - if ((r = getttyname_malloc(&tty)) < 0) - goto finish; - - time(&t); - assert_se(ctime_r(&t, date)); - delete_chars(date, "\n\r"); + getttyname_malloc(&tty); if (asprintf(&text, "\a\r\n" - "Broadcast message from %s@%s on %s (%s):\r\n\r\n" + "Broadcast message from %s@%s%s%s (%s):\r\n\r\n" "%s\r\n\r\n", - un, hn, tty, date, message) < 0) { + un, hn, + tty ? " on " : "", strempty(tty), + format_timestamp(date, sizeof(date), now(CLOCK_REALTIME)), + message) < 0) { r = -ENOMEM; goto finish; } |