From 20308ad253f58db8c9a4939056e72c4acff1c0f0 Mon Sep 17 00:00:00 2001 From: Alexey Gladkov Date: Thu, 16 Dec 2021 22:25:18 +0300 Subject: ALT: wall line size --- src/dowall.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/dowall.c b/src/dowall.c index 83b2828..951d24d 100644 --- a/src/dowall.c +++ b/src/dowall.c @@ -163,9 +163,8 @@ void wall(const char *text, int remote) struct utmp *utmp; time_t t; char term[UT_LINESIZE+ strlen(_PATH_DEV) + 1]; - char line[256]; + char line[263], header[256], date[21]; char hostname[HOST_NAME_MAX+1]; - char *date, *p; char *user, *tty; int fd, flags; @@ -190,20 +189,21 @@ void wall(const char *text, int remote) /* Get the time */ time(&t); - date = ctime(&t); - for(p = date; *p && *p != '\n'; p++) - ; - *p = 0; - + strftime(date, sizeof(date), "%F %T", localtime(&t)); + if (remote) { - snprintf(line, sizeof(line), - "\r\nRemote broadcast message (%s):\r\n\r\n", + snprintf(header, sizeof(header), + "Remote broadcast message (%s):", date); } else { - snprintf(line, sizeof(line), - "\r\nBroadcast message from %s@%s %s(%s):\r\n\r\n", - user, hostname, tty, date); + int len = (int)sizeof(header) - + sizeof("Broadcast message from @ ():") - + strlen(user) - strlen(tty) - strlen(date); + snprintf(header, sizeof(header), + "Broadcast message from %s@%.*s %s(%s):", + user, (len > 0 ? len : 0), hostname, tty, date); } + snprintf(line, sizeof(line), "\007\r\n%s\r\n\r\n", header); /* * Fork to avoid us hanging in a write() -- 2.25.4