[hackers] [sbase] Audit split(1) || FRIGN
commit 3725d501b39f7c3e8e5cbb681bf74df3ad47fd56
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 Tue Mar 24 2015 - 23:54:17 CET
This archive was generated by hypermail 2.3.0
: Wed Mar 25 2015 - 00:11:48 CET