]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
wall: wrap message header when it exceeds 79 characters
authorSami Kerola <kerolasa@iki.fi>
Sun, 27 Jul 2014 18:52:25 +0000 (19:52 +0100)
committerSami Kerola <kerolasa@iki.fi>
Mon, 28 Jul 2014 20:15:18 +0000 (21:15 +0100)
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>
term-utils/wall.c

index 598e9f28c59f2ba79ffd0954f80bd28f2f6f9f38..acada294a39b459d76fd079fc7c7671294e55c06 100644 (file)
@@ -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);
        }