about summary refs log tree commit diff
path: root/xe.c
diff options
context:
space:
mode:
authorChristian Neukirchen <chneukirchen@gmail.com>2016-01-16 22:15:27 +0100
committerChristian Neukirchen <chneukirchen@gmail.com>2016-01-16 22:15:27 +0100
commit821697dbee3e2d0acafb26b6567ff9690d2a9b29 (patch)
tree8cb5251c236f22bb642121461790044ebb5f6667 /xe.c
parent01f9f2a5f906058eb21b69a224e9f13e69529aeb (diff)
downloadxe-821697dbee3e2d0acafb26b6567ff9690d2a9b29.tar.gz
xe-821697dbee3e2d0acafb26b6567ff9690d2a9b29.tar.xz
xe-821697dbee3e2d0acafb26b6567ff9690d2a9b29.zip
fix -a which was broken due to a clashing variable name
Diffstat (limited to 'xe.c')
-rw-r--r--xe.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/xe.c b/xe.c
index e287542..bd781a3 100644
--- a/xe.c
+++ b/xe.c
@@ -43,6 +43,8 @@ static char **args;
 static size_t argslen;
 static size_t argscap;
 
+static char **inargs;
+
 static char *line = 0;
 static size_t linelen = 0;
 
@@ -50,8 +52,8 @@ static char *
 getarg()
 {
 	if (aflag || Aflag) {
-		if (args && *args)
-			return *args++;
+		if (inargs && *inargs)
+			return *inargs++;
 		else
 			return 0;
 	}
@@ -272,29 +274,28 @@ main(int argc, char *argv[], char *envp[])
 	if (aflag) {  // find first -- in argv
 		for (i = 1; i < argc; i++)
 			if (strcmp(argv[i], "--") == 0) {
-				args = argv + i+1;
+				inargs = argv + i+1;
 				cmdend = i;
 				break;
 			}
 		if (sflag) {  // e.g. on xe -s 'echo $1' -a 1 2 3
 			cmdend = optind;
-			args = argv + cmdend;
+			inargs = argv + cmdend;
 		}
 	} else if (Aflag) {  // find first argsep after optind
 		for (i = optind; i < argc; i++) {
 			if (strcmp(argv[i], argsep) == 0) {
-				args = argv + i+1;
+				inargs = argv + i+1;
 				cmdend = i;
 				break;
 			}
 		}
 	}
 
-	while ((arg = getarg())) {
-keeparg:
+	arg = getarg();
+	while (arg) {
 		buflen = 0;
 		argslen = 0;
-		push_overflowed = 0;
 
 		if (sflag) {
 			pusharg("/bin/sh");