Finish up cols(1)

This commit is contained in:
FRIGN 2015-02-01 00:55:22 +01:00
parent 7cdb24d085
commit 5a20d0e9d7
3 changed files with 16 additions and 14 deletions

2
README
View File

@ -18,7 +18,7 @@ The following tools are implemented ('*' == finished, '#' == UTF-8 support,
=* chroot non-posix none =* chroot non-posix none
=* cksum yes none =* cksum yes none
cmp yes none cmp yes none
cols non-posix none #* cols non-posix none
=* comm yes none =* comm yes none
= cp no -H, (-i), -L = cp no -H, (-i), -L
=* cron non-posix none =* cron non-posix none

22
cols.1
View File

@ -1,4 +1,4 @@
.Dd December 8, 2014 .Dd February 1, 2015
.Dt COLS 1 .Dt COLS 1
.Os sbase .Os sbase
.Sh NAME .Sh NAME
@ -6,34 +6,36 @@
.Nd columnize output .Nd columnize output
.Sh SYNOPSIS .Sh SYNOPSIS
.Nm .Nm
.Op Fl c Ar chars .Op Fl c Ar num
.Op Ar file ... .Op Ar file ...
.Sh DESCRIPTION .Sh DESCRIPTION
.Nm .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 columns as will fit in
.Ar chars .Ar num
character columns. If no character columns. If no
.Ar file .Ar file
is given, is given,
.Nm .Nm
reads from stdin. reads from stdin.
.Sh OPTIONS .Sh OPTIONS
.Bl -tag -width xxxxxxxx .Bl -tag -width Ds
.It Fl c Ar chars .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 (unless the input contains lines longer than
.Ar chars .Ar num
characters). By default cols tries to figure out the width of the output 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 .El
.Sh HISTORY .Sh HISTORY
.Nm .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 .Nm
to avoid the name collision with the popular file manager to avoid the name collision with the popular file manager
Midnight Commander. Midnight Commander.
.Sh BUGS .Sh CAVEATS
This implementation of This implementation of
.Nm .Nm
assumes that each UTF-8 code point occupies one character cell, assumes that each UTF-8 code point occupies one character cell,

6
cols.c
View File

@ -12,7 +12,7 @@
#include "util.h" #include "util.h"
static size_t chars = 65; static size_t chars = 65;
static int cflag; static int cflag;
static struct linebuf b = EMPTY_LINEBUF; static struct linebuf b = EMPTY_LINEBUF;
static size_t n_columns; static size_t n_columns;
@ -58,8 +58,8 @@ main(int argc, char *argv[])
for (l = 0; l < b.nlines; ++l) { for (l = 0; l < b.nlines; ++l) {
len = utflen(b.lines[l]); len = utflen(b.lines[l]);
bytes = strlen(b.lines[l]); bytes = strlen(b.lines[l]);
if (len > 0 && b.lines[l][bytes-1] == '\n') { if (len > 0 && b.lines[l][bytes - 1] == '\n') {
b.lines[l][bytes-1] = '\0'; b.lines[l][bytes - 1] = '\0';
--len; --len;
} }
if (len > maxlen) if (len > maxlen)