summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorallanjude <allanjude@FreeBSD.org>2015-08-08 18:37:20 +0000
committerallanjude <allanjude@FreeBSD.org>2015-08-08 18:37:20 +0000
commite6fc39bbd338f1a527813cdda66721a2149f83a7 (patch)
tree6389bd5b51d9df65a0db9c4d294f22ae193f5251
parent33c52eed1855d2984aa791416cb5bb850d2097fa (diff)
downloadFreeBSD-src-e6fc39bbd338f1a527813cdda66721a2149f83a7.zip
FreeBSD-src-e6fc39bbd338f1a527813cdda66721a2149f83a7.tar.gz
fix regression in xargs -Px (introduced in r286289) and add regression tests
PR: 202152 Submitted by: jbeich (original), Nikolai Lifanov (final) Reviewed by: jbeich Approved by: bapt (mentor) Differential Revision: https://reviews.freebsd.org/D3330
-rw-r--r--usr.bin/xargs/tests/Makefile3
-rw-r--r--usr.bin/xargs/tests/regress.0P1.out4
-rw-r--r--usr.bin/xargs/tests/regress.P1.out1
-rw-r--r--usr.bin/xargs/tests/regress.n2P0.out4
-rw-r--r--usr.bin/xargs/tests/regress.sh5
-rw-r--r--usr.bin/xargs/xargs.c6
6 files changed, 17 insertions, 6 deletions
diff --git a/usr.bin/xargs/tests/Makefile b/usr.bin/xargs/tests/Makefile
index 2004d79..cd14813 100644
--- a/usr.bin/xargs/tests/Makefile
+++ b/usr.bin/xargs/tests/Makefile
@@ -10,13 +10,16 @@ FILES+= regress.0.out
FILES+= regress.0I.out
FILES+= regress.0J.out
FILES+= regress.0L.out
+FILES+= regress.0P1.out
FILES+= regress.I.out
FILES+= regress.J.out
FILES+= regress.L.out
+FILES+= regress.P1.out
FILES+= regress.R.out
FILES+= regress.in
FILES+= regress.n1.out
FILES+= regress.n2.out
+FILES+= regress.n2P0.out
FILES+= regress.n3.out
FILES+= regress.normal.out
FILES+= regress.quotes.in
diff --git a/usr.bin/xargs/tests/regress.0P1.out b/usr.bin/xargs/tests/regress.0P1.out
new file mode 100644
index 0000000..a95e9a2
--- /dev/null
+++ b/usr.bin/xargs/tests/regress.0P1.out
@@ -0,0 +1,4 @@
+quick ' brown fox jumped
+over "the lazy dog
+quick brown fox jumped over the lazy dog
+
diff --git a/usr.bin/xargs/tests/regress.P1.out b/usr.bin/xargs/tests/regress.P1.out
new file mode 100644
index 0000000..cc32a92
--- /dev/null
+++ b/usr.bin/xargs/tests/regress.P1.out
@@ -0,0 +1 @@
+quick brown fox jumped over the lazy dog
diff --git a/usr.bin/xargs/tests/regress.n2P0.out b/usr.bin/xargs/tests/regress.n2P0.out
new file mode 100644
index 0000000..4fa3f55
--- /dev/null
+++ b/usr.bin/xargs/tests/regress.n2P0.out
@@ -0,0 +1,4 @@
+quick brown
+fox jumped
+over the
+lazy dog
diff --git a/usr.bin/xargs/tests/regress.sh b/usr.bin/xargs/tests/regress.sh
index 316365d..c75136c 100644
--- a/usr.bin/xargs/tests/regress.sh
+++ b/usr.bin/xargs/tests/regress.sh
@@ -1,6 +1,6 @@
# $FreeBSD$
-echo 1..13
+echo 1..16
REGRESSION_START($1)
@@ -8,14 +8,17 @@ REGRESSION_TEST(`normal', `xargs echo The <${SRCDIR}/regress.in')
REGRESSION_TEST(`I', `xargs -I% echo The % % % %% % % <${SRCDIR}/regress.in')
REGRESSION_TEST(`J', `xargs -J% echo The % again. <${SRCDIR}/regress.in')
REGRESSION_TEST(`L', `xargs -L3 echo <${SRCDIR}/regress.in')
+REGRESSION_TEST(`P1', `xargs -P1 echo <${SRCDIR}/regress.in')
REGRESSION_TEST(`R', `xargs -I% -R1 echo The % % % %% % % <${SRCDIR}/regress.in')
REGRESSION_TEST(`n1', `xargs -n1 echo <${SRCDIR}/regress.in')
REGRESSION_TEST(`n2', `xargs -n2 echo <${SRCDIR}/regress.in')
+REGRESSION_TEST(`n2P0',`xargs -n2 -P0 echo <${SRCDIR}/regress.in')
REGRESSION_TEST(`n3', `xargs -n3 echo <${SRCDIR}/regress.in')
REGRESSION_TEST(`0', `xargs -0 -n1 echo <${SRCDIR}/regress.0.in')
REGRESSION_TEST(`0I', `xargs -0 -I% echo The % %% % <${SRCDIR}/regress.0.in')
REGRESSION_TEST(`0J', `xargs -0 -J% echo The % again. <${SRCDIR}/regress.0.in')
REGRESSION_TEST(`0L', `xargs -0 -L2 echo <${SRCDIR}/regress.0.in')
+REGRESSION_TEST(`0P1', `xargs -0 -P1 echo <${SRCDIR}/regress.0.in')
REGRESSION_TEST(`quotes', `xargs -n1 echo <${SRCDIR}/regress.quotes.in')
REGRESSION_END()
diff --git a/usr.bin/xargs/xargs.c b/usr.bin/xargs/xargs.c
index c69a23a..c56ab60 100644
--- a/usr.bin/xargs/xargs.c
+++ b/usr.bin/xargs/xargs.c
@@ -166,15 +166,11 @@ main(int argc, char *argv[])
oflag = 1;
break;
case 'P':
- maxprocs = strtonum(optarg, 1, INT_MAX, &errstr);
+ maxprocs = strtonum(optarg, 0, INT_MAX, &errstr);
if (errstr)
errx(1, "-P %s: %s", optarg, errstr);
if (getrlimit(RLIMIT_NPROC, &rl) != 0)
errx(1, "getrlimit failed");
- if (*endptr != '\0')
- errx(1, "invalid number for -P option");
- if (maxprocs < 0)
- errx(1, "value for -P option should be >= 0");
if (maxprocs == 0 || maxprocs > rl.rlim_cur)
maxprocs = rl.rlim_cur;
break;
OpenPOWER on IntegriCloud