From 5a20d0e9d76521830ae548225f846a4f199a1fed Mon Sep 17 00:00:00 2001 From: FRIGN Date: Sun, 1 Feb 2015 00:55:22 +0100 Subject: [PATCH] Finish up cols(1) --- README | 2 +- cols.1 | 22 ++++++++++++---------- cols.c | 6 +++--- 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/README b/README index cb845ba..cbf4929 100644 --- a/README +++ b/README @@ -18,7 +18,7 @@ The following tools are implemented ('*' == finished, '#' == UTF-8 support, =* chroot non-posix none =* cksum yes none cmp yes none - cols non-posix none +#* cols non-posix none =* comm yes none = cp no -H, (-i), -L =* cron non-posix none diff --git a/cols.1 b/cols.1 index 95e6b56..c51388f 100644 --- a/cols.1 +++ b/cols.1 @@ -1,4 +1,4 @@ -.Dd December 8, 2014 +.Dd February 1, 2015 .Dt COLS 1 .Os sbase .Sh NAME @@ -6,34 +6,36 @@ .Nd columnize output .Sh SYNOPSIS .Nm -.Op Fl c Ar chars +.Op Fl c Ar num .Op Ar file ... .Sh DESCRIPTION .Nm -reads each file in sequence and writes them to stdout, in as many vertical +reads each +.Ar file +in sequence and writes them to stdout, in as many vertical columns as will fit in -.Ar chars +.Ar num character columns. If no .Ar file is given, .Nm reads from stdin. .Sh OPTIONS -.Bl -tag -width xxxxxxxx +.Bl -tag -width Ds .It Fl c Ar chars -Specifies the maximum number of character columns to use +Set the maximum number of character columns to use (unless the input contains lines longer than -.Ar chars +.Ar num characters). By default cols tries to figure out the width of the output -device, if that fails it defaults to 65 chars. +device. If that fails, it defaults to 65 chars. .El .Sh HISTORY .Nm -is similar to the mc(1) command on Plan 9. It was renamed to +is similar to mc(1) in Plan 9. It was renamed to .Nm to avoid the name collision with the popular file manager Midnight Commander. -.Sh BUGS +.Sh CAVEATS This implementation of .Nm assumes that each UTF-8 code point occupies one character cell, diff --git a/cols.c b/cols.c index fce4c19..ce0018c 100644 --- a/cols.c +++ b/cols.c @@ -12,7 +12,7 @@ #include "util.h" static size_t chars = 65; -static int cflag; +static int cflag; static struct linebuf b = EMPTY_LINEBUF; static size_t n_columns; @@ -58,8 +58,8 @@ main(int argc, char *argv[]) for (l = 0; l < b.nlines; ++l) { len = utflen(b.lines[l]); bytes = strlen(b.lines[l]); - if (len > 0 && b.lines[l][bytes-1] == '\n') { - b.lines[l][bytes-1] = '\0'; + if (len > 0 && b.lines[l][bytes - 1] == '\n') { + b.lines[l][bytes - 1] = '\0'; --len; } if (len > maxlen)