sbase

suckless unix tools
git clone git://git.2f30.org/sbase.git
Log | Files | Refs | README | LICENSE

commit 5a20d0e9d76521830ae548225f846a4f199a1fed
parent 7cdb24d085e4226ee98a26ec914421f4b407abf1
Author: FRIGN <dev@frign.de>
Date:   Sun Feb  1 00:55:22 +0100

Finish up cols(1)

Diffstat:
README | 2+-
cols.1 | 22++++++++++++----------
cols.c | 6+++---
3 files changed, 16 insertions(+), 14 deletions(-)
diff --git 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 @@ -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 @@ -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)