sbase

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

commit 3725d501b39f7c3e8e5cbb681bf74df3ad47fd56
parent 4d946a274ff868fad9908d5ded6b555971085a56
Author: FRIGN <dev@frign.de>
Date:   Tue, 17 Mar 2015 22:59:48 +0100

Audit split(1)

1) Refactor manpage, add STANDARDS section.
2) Boolean-style-changes.
3) Update usage, reflecting num-idiom also changed in the manpage.
4) Refactor error messages.
5) Also fclose stdin.
6) Empty line before return.

Diffstat:
MREADME | 4++--
Msplit.1 | 62++++++++++++++++++++++++++++++++------------------------------
Msplit.c | 26++++++++++++--------------
3 files changed, 46 insertions(+), 46 deletions(-)

diff --git a/README b/README @@ -56,7 +56,7 @@ The following tools are implemented ('*' == finished, '#' == UTF-8 support, #*| printf yes none =*| pwd yes none = readlink non-posix none -=* renice yes none +=*| renice yes none =*| rm yes none (-i) =*| rmdir yes none # sed @@ -67,7 +67,7 @@ The following tools are implemented ('*' == finished, '#' == UTF-8 support, =*| sha512sum non-posix none =*| sleep yes none sort no -m, -o, -d, -f, -i -=* split yes none +=*| split yes none =*| sponge non-posix none #* strings yes none =* sync non-posix none diff --git a/split.1 b/split.1 @@ -1,4 +1,4 @@ -.Dd January 30, 2015 +.Dd March 17, 2015 .Dt SPLIT 1 .Os sbase .Sh NAME @@ -6,43 +6,45 @@ .Nd split up a file .Sh SYNOPSIS .Nm -.Op Fl a Ar len -.Op Fl b Ar bytes[k|m|g] +.Op Fl a Ar num +.Op Fl b Ar num[k|m|g] | Fl l Ar num .Op Fl d -.Op Fl l Ar lines -.Op Ar input Op Ar prefix +.Op Ar file Op Ar prefix .Sh DESCRIPTION .Nm -reads a file, splitting it into smaller files, every -.Ar bytes -bytes -or -.Ar lines -lines. If +splits +.Ar file +into files with 1000 lines each, named with +.Ar prefix +"x" followed by 2-digit alphabetical count suffixes. +If .Nm -runs out of filenames before all the data can be written, it stops at the -last valid filename, leaving all the written data on the disk. -The -.Fl b -and -.Fl l -flags are mutually exclusive. Only the last one specified will be obeyed. +runs out of suffixes, it stops after the last valid filename. .Sh OPTIONS .Bl -tag -width Ds -.It Fl a Ar len -Set the suffix length to -.Ar len -characters long. -.It Fl b Ar bytes[k|m|g] +.It Fl a Ar num +Set suffix length to +.Ar num +characters. +The default is 2. +.It Fl b Ar num[k|m|g] | Fl l Ar num Start a new file every -.Ar bytes -bytes. The units k, m, and g are case insensitive, and powers of 2, not 10. +.Ar num +bytes | lines. +The units k, m, and g are case insensitive and powers of 2, not 10. +The default is 1000 lines. .It Fl d -Use decimal suffixes rather than alphabetical. -.It Fl l Ar lines -Start a new file every -.Ar lines -lines. +Use decimal rather than alphabetical suffixes. .El .Sh SEE ALSO .Xr cat 1 +.Sh STANDARDS +The +.Nm +utility is compliant with the +.St -p1003.1-2008 +specification. +.Pp +The +.Op Fl d +flag and g unit are an extension to that specification. diff --git a/split.c b/split.c @@ -17,9 +17,8 @@ itostr(char *str, int x, int n) str[n] = start + (x % base); x /= base; } - if (x) - return -1; - return 0; + + return x ? -1 : 0; } static FILE * @@ -34,27 +33,25 @@ nextfile(FILE *f, char *buf, int plen, int slen) if (!(f = fopen(buf, "w"))) eprintf("'%s':", buf); + return f; } static void usage(void) { - eprintf("usage: %s [-a len] [-b bytes[k|m|g]] [-d] [-l lines] " - "[input [prefix]]\n", argv0); + eprintf("usage: %s [-a num] [-b num[k|m|g] | -l num] [-d] " + "[file [prefix]]\n", argv0); } int main(int argc, char *argv[]) { FILE *in = stdin, *out = NULL; - char name[NAME_MAX + 1]; - char *prefix = "x"; - char *file = NULL; - char *tmp, *end; size_t size = 1000, scale = 1, n; - int ch, plen, slen = 2, always = 0; long l; + int ch, plen, slen = 2, always = 0; + char name[NAME_MAX + 1], *prefix = "x", *file = NULL, *tmp, *end; ARGBEGIN { case 'a': @@ -111,9 +108,9 @@ main(int argc, char *argv[]) eprintf("names cannot exceed %d bytes\n", NAME_MAX); estrlcpy(name, prefix, sizeof(name)); - if (file && strcmp(file, "-") != 0) { + if (file && strcmp(file, "-")) { if (!(in = fopen(file, "r"))) - eprintf("'%s':", file); + eprintf("fopen %s:", file); } n = 0; @@ -126,9 +123,10 @@ main(int argc, char *argv[]) n += (always || ch == '\n'); putc(ch, out); } - if (in != stdin) - fclose(in); + + fclose(in); if (out) fclose(out); + return 0; }