Page MenuHomeFreeBSD

D41757.diff
No OneTemporary

D41757.diff

diff --git a/usr.bin/split/split.c b/usr.bin/split/split.c
--- a/usr.bin/split/split.c
+++ b/usr.bin/split/split.c
@@ -91,7 +91,7 @@
setlocale(LC_ALL, "");
dflag = false;
- while ((ch = getopt(argc, argv, "0123456789a:b:cdl:n:p:")) != -1)
+ while ((ch = getopt(argc, argv, "0::1::2::3::4::5::6::7::8::9::a:b:cdl:n:p:")) != -1)
switch (ch) {
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
@@ -99,17 +99,15 @@
* Undocumented kludge: split was originally designed
* to take a number after a dash.
*/
- if (numlines == 0) {
- p = argv[optind - 1];
- if (p[0] == '-' && p[1] == ch && !p[2])
- numlines = strtol(++p, &ep, 10);
- else
- numlines =
- strtol(argv[optind] + 1, &ep, 10);
- if (numlines <= 0 || *ep)
- errx(EX_USAGE,
- "%s: illegal line count", optarg);
- }
+ if (numlines != 0)
+ usage();
+ numlines = ch - '0';
+ p = optarg ? optarg : "";
+ while (numlines >= 0 && *p >= '0' && *p <= '9')
+ numlines = numlines * 10 + *p++ - '0';
+ if (numlines <= 0 || *p != '\0')
+ errx(EX_USAGE, "%c%s: illegal line count", ch,
+ optarg ? optarg : "");
break;
case 'a': /* Suffix length */
if ((sufflen = strtol(optarg, &ep, 10)) <= 0 || *ep)
diff --git a/usr.bin/split/tests/split_test.sh b/usr.bin/split/tests/split_test.sh
--- a/usr.bin/split/tests/split_test.sh
+++ b/usr.bin/split/tests/split_test.sh
@@ -220,6 +220,25 @@
atf_check -o file:input cat xab
}
+atf_test_case undocumented_kludge
+undocumented_kludge_body()
+{
+ seq 5000 >input
+ atf_check split -1000 input
+ atf_check -o file:xae seq 4001 5000
+ atf_check split -d1000 input
+ atf_check -o file:x04 seq 4001 5000
+}
+
+atf_test_case duplicate_linecount
+duplicate_linecount_body()
+{
+ atf_check -s exit:64 -e ignore split -5 -5 /dev/null
+ atf_check -s exit:64 -e ignore split -l5 -5 /dev/null
+ atf_check -s exit:64 -e ignore split -5 -l5 /dev/null
+ atf_check -s exit:64 -e ignore split -l5 -l5 /dev/null
+}
+
atf_init_test_cases()
{
atf_add_test_case bytes
@@ -231,4 +250,6 @@
atf_add_test_case pattern
atf_add_test_case autoextend
atf_add_test_case continue
+ atf_add_test_case undocumented_kludge
+ atf_add_test_case duplicate_linecount
}

File Metadata

Mime Type
text/plain
Expires
Fri, Nov 15, 2:27 AM (10 h, 46 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
14637049
Default Alt Text
D41757.diff (2 KB)

Event Timeline