diff options
author | Leah Neukirchen <leah@vuxu.org> | 2017-11-02 13:55:24 +0100 |
---|---|---|
committer | Leah Neukirchen <leah@vuxu.org> | 2017-11-02 13:55:24 +0100 |
commit | aed173459e4004022deae04619ab42edd5830d30 (patch) | |
tree | 7f11c7cfc06acf81f5caae5f1d3df01df7ecf1f9 /xe.c | |
parent | de6272295d5ce3927edae7a0ed9599f3831e138f (diff) | |
download | xe-aed173459e4004022deae04619ab42edd5830d30.tar.gz xe-aed173459e4004022deae04619ab42edd5830d30.tar.xz xe-aed173459e4004022deae04619ab42edd5830d30.zip |
wait for enough jobs to finish before asking for more input
This helps -F fail immediately after execution, not after reading the next line.
Diffstat (limited to 'xe.c')
-rw-r--r-- | xe.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/xe.c b/xe.c index 100d196..25e6aa0 100644 --- a/xe.c +++ b/xe.c @@ -681,10 +681,15 @@ main(int argc, char *argv[], char *envp[]) exit(1); } - while ((arg = getarg())) { + while (1) { buflen = 0; argslen = 0; + while (runjobs >= maxjobs) + mywait(); + if (!(arg = getarg())) + break; + int n; for (n = optind, i = n + 1; n < cmdend; n = i + 1) { char *pat = argv[n]; @@ -721,6 +726,9 @@ main(int argc, char *argv[], char *envp[]) while (1) { // check if there is an arg from a previous iteration if (!keeparg) { + while (runjobs >= maxjobs) + mywait(); + arg = getarg(); if (!arg) break; |