diff options
author | allanjude <allanjude@FreeBSD.org> | 2015-08-08 18:37:20 +0000 |
---|---|---|
committer | allanjude <allanjude@FreeBSD.org> | 2015-08-08 18:37:20 +0000 |
commit | e6fc39bbd338f1a527813cdda66721a2149f83a7 (patch) | |
tree | 6389bd5b51d9df65a0db9c4d294f22ae193f5251 /usr.bin/xargs | |
parent | 33c52eed1855d2984aa791416cb5bb850d2097fa (diff) | |
download | FreeBSD-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
Diffstat (limited to 'usr.bin/xargs')
-rw-r--r-- | usr.bin/xargs/tests/Makefile | 3 | ||||
-rw-r--r-- | usr.bin/xargs/tests/regress.0P1.out | 4 | ||||
-rw-r--r-- | usr.bin/xargs/tests/regress.P1.out | 1 | ||||
-rw-r--r-- | usr.bin/xargs/tests/regress.n2P0.out | 4 | ||||
-rw-r--r-- | usr.bin/xargs/tests/regress.sh | 5 | ||||
-rw-r--r-- | usr.bin/xargs/xargs.c | 6 |
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; |