about summary refs log tree commit diff
path: root/xe.c
diff options
context:
space:
mode:
authorChristian Neukirchen <chneukirchen@gmail.com>2015-11-02 22:32:48 +0100
committerChristian Neukirchen <chneukirchen@gmail.com>2015-11-02 22:33:04 +0100
commit9a2bef433271cd830d318e5b17efc38ac74e34a3 (patch)
tree80edc95fe716dcc2589b6212362536e434dc147d /xe.c
parent7f9da0f4ea465bd15572ea4c2b063fe4f66d7c8f (diff)
downloadxe-9a2bef433271cd830d318e5b17efc38ac74e34a3.tar.gz
xe-9a2bef433271cd830d318e5b17efc38ac74e34a3.tar.xz
xe-9a2bef433271cd830d318e5b17efc38ac74e34a3.zip
-R to fail when no arguments are passed
Diffstat (limited to 'xe.c')
-rw-r--r--xe.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/xe.c b/xe.c
index 2578b6d..f9c7206 100644
--- a/xe.c
+++ b/xe.c
@@ -29,7 +29,8 @@ static char *sflag;
 static int maxatonce = 1;
 static int maxjobs = 1;
 static int runjobs = 0;
-static int aflag, kflag, nflag, vflag;
+static int Rflag, aflag, kflag, nflag, vflag;
+static int iterations = 0;
 
 static char *
 xstrdup(const char *s)
@@ -143,6 +144,7 @@ run(char *cmd[])
 	if (runjobs >= maxjobs)
 		mywait();
 	runjobs++;
+	iterations++;
 
 	if (vflag || nflag)
 		trace(cmd);
@@ -181,12 +183,13 @@ main(int argc, char *argv[])
 	int i, cmdend;
 	char *arg, **cmd;
 
-	while ((c = getopt(argc, argv, "+0A:I:N:aj:kns:v")) != -1)
+	while ((c = getopt(argc, argv, "+0A:I:N:Raj:kns:v")) != -1)
 		switch(c) {
 		case '0': delim = '\0'; break;
 		case 'A': argsep = optarg; aflag++; break;
 		case 'I': replace = optarg; break;
 		case 'N': maxatonce = atoi(optarg); break;
+		case 'R': Rflag++; break;
 		case 'a': aflag++; break;
 		case 'j': maxjobs = atoi(optarg); break;
 		case 'k': kflag++; break;
@@ -195,7 +198,7 @@ main(int argc, char *argv[])
 		case 'v': vflag++; break;
 		default:
 			fprintf(stderr, 
-			    "Usage: %s [-0knv] [-I arg] [-N maxargs] [-j maxjobs] COMMAND...\n"
+			    "Usage: %s [-0Rknv] [-I arg] [-N maxargs] [-j maxjobs] COMMAND...\n"
 			    "     | -s SHELLSCRIPT\n"
 			    "     | -a COMMAND... -- ARGS...\n"
 			    "     | -A ARGSEP COMMAND... ARGSEP ARGS...\n",
@@ -263,5 +266,7 @@ main(int argc, char *argv[])
 
 	free(cmd);
 	free(getarg_line);
+	if (Rflag && iterations == 0)
+		return 122;
 	return 0;
 }