[hackers] [sbase] Audit split(1) || FRIGN

From: <git_AT_suckless.org>
Date: Thu, 19 Mar 2015 11:13:24 +0100 (CET)

commit fb95dc3eb3058bddd844c5115279e630dfb059ba
Author: FRIGN <dev_AT_frign.de>
Date: Tue Mar 17 22:59:48 2015 +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.

diff --git a/README b/README
index 0ba3392..9ca1c74 100644
--- a/README
+++ b/README
_AT_@ -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
_AT_@ -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
index 83c39cb..1aa1a90 100644
--- a/split.1
+++ b/split.1
_AT_@ -1,4 +1,4 @@
-.Dd January 30, 2015
+.Dd March 17, 2015
 .Dt SPLIT 1
 .Os sbase
 .Sh NAME
_AT_@ -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
index b68635f..c0aa87e 100644
--- a/split.c
+++ b/split.c
_AT_@ -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 *
_AT_@ -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':
_AT_@ -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;
_AT_@ -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;
 }
Received on Thu Mar 19 2015 - 11:13:24 CET

This archive was generated by hypermail 2.3.0 : Thu Mar 19 2015 - 11:24:24 CET