summaryrefslogtreecommitdiffstats
path: root/term-utils/wall.c
diff options
context:
space:
mode:
authorSami Kerola2014-07-27 20:52:25 +0200
committerSami Kerola2014-07-28 22:15:18 +0200
commit93d7baf250495b2385c369afd48137a7363ae4c2 (patch)
tree08121718070abfedaca897cca60ae99eded43e16 /term-utils/wall.c
parentlogger: add hostname to rfc3164 message (diff)
downloadkernel-qcow2-util-linux-93d7baf250495b2385c369afd48137a7363ae4c2.tar.gz
kernel-qcow2-util-linux-93d7baf250495b2385c369afd48137a7363ae4c2.tar.xz
kernel-qcow2-util-linux-93d7baf250495b2385c369afd48137a7363ae4c2.zip
wall: wrap message header when it exceeds 79 characters
Header truncation started to happen more often after commit d81c30553f4fb49173d38f69edff4b0b67a18b65 that made the header to be longer. Signed-off-by: Sami Kerola <kerolasa@iki.fi>
Diffstat (limited to 'term-utils/wall.c')
-rw-r--r--term-utils/wall.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/term-utils/wall.c b/term-utils/wall.c
index 598e9f28c..acada294a 100644
--- a/term-utils/wall.c
+++ b/term-utils/wall.c
@@ -202,6 +202,8 @@ static char *makemsg(char *fname, char **mvec, int mvecsz,
char *whom, *where, *date;
struct passwd *pw;
time_t now;
+ ssize_t len;
+ int i;
if (!(whom = getlogin()) || !*whom)
whom = (pw = getpwuid(getuid())) ? pw->pw_name : "???";
@@ -232,7 +234,10 @@ static char *makemsg(char *fname, char **mvec, int mvecsz,
fprintf(fp, "\r%*s\r\n", TERM_WIDTH, " ");
sprintf(lbuf, _("Broadcast message from %s@%s (%s) (%s):"),
whom, hostname, where, date);
- fprintf(fp, "%-*.*s\007\007\r\n", TERM_WIDTH, TERM_WIDTH, lbuf);
+ len = strlen(lbuf);
+ for (i = 0; 0 < len; i++)
+ len -= fprintf(fp, "%-*.*s\007\007\r\n", TERM_WIDTH, TERM_WIDTH,
+ lbuf + (i * TERM_WIDTH)) + 4;
free(hostname);
free(date);
}