mirror of
https://github.com/freebsd/freebsd-src
synced 2024-10-15 04:43:53 +00:00
xargs: fix exit code when using -P
currently when xargs runs in parallel mode (e.g. -P2), it somtimes incorrectly returns zero exit code. this commit fix it and also adds tests. Reviewed by: mjg PR: 267110
This commit is contained in:
parent
b136983a8a
commit
0ca740d9a6
|
@ -1,6 +1,6 @@
|
|||
# $FreeBSD$
|
||||
|
||||
echo 1..16
|
||||
echo 1..20
|
||||
|
||||
REGRESSION_START($1)
|
||||
|
||||
|
@ -21,4 +21,9 @@ 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_TEST_FREEFORM(`parallel1', `echo /var/empty /var/empty | xargs -n1 -P2 test -d; [ $? = 0 ]')
|
||||
REGRESSION_TEST_FREEFORM(`parallel2', `echo /var/empty /var/empty/nodir | xargs -n1 -P2 test -d; [ $? = 1 ]')
|
||||
REGRESSION_TEST_FREEFORM(`parallel3', `echo /var/empty/nodir /var/empty | xargs -n1 -P2 test -d; [ $? = 1 ]')
|
||||
REGRESSION_TEST_FREEFORM(`parallel4', `echo /var/empty/nodir /var/empty/nodir | xargs -n1 -P2 test -d; [ $? = 1 ]')
|
||||
|
||||
REGRESSION_END()
|
||||
|
|
|
@ -315,8 +315,10 @@ parse_input(int argc, char *argv[])
|
|||
switch (ch = getchar()) {
|
||||
case EOF:
|
||||
/* No arguments since last exec. */
|
||||
if (p == bbp)
|
||||
xexit(*av, rval);
|
||||
if (p == bbp) {
|
||||
waitchildren(*av, 1);
|
||||
exit(rval);
|
||||
}
|
||||
goto arg1;
|
||||
case ' ':
|
||||
case '\t':
|
||||
|
@ -406,8 +408,10 @@ arg1: if (insingle || indouble) {
|
|||
*xp++ = *avj;
|
||||
}
|
||||
prerun(argc, av);
|
||||
if (ch == EOF || foundeof)
|
||||
xexit(*av, rval);
|
||||
if (ch == EOF || foundeof) {
|
||||
waitchildren(*av, 1);
|
||||
exit(rval);
|
||||
}
|
||||
p = bbp;
|
||||
xp = bxp;
|
||||
count = 0;
|
||||
|
|
Loading…
Reference in a new issue