about summary refs log tree commit diff
path: root/xe.c
diff options
context:
space:
mode:
Diffstat (limited to 'xe.c')
-rw-r--r--xe.c10
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;