changeset 121:933766b0bd4b

Allow applets with optarg string NULL to use toy.optargs[].
author Rob Landley <rob@landley.net>
date Fri, 01 Jun 2007 13:41:24 -0400
parents 4dc8017fdb0e
children ee49aa0dc731
files main.c toys/toysh.c
diffstat 2 files changed, 6 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/main.c	Fri Jun 01 11:46:56 2007 -0400
+++ b/main.c	Fri Jun 01 13:41:24 2007 -0400
@@ -58,18 +58,19 @@
 	toys.argv = argv;
 	toys.exitval = 1;
 	if (which->options) get_optflags();
+	else toys.optargs = argv+1;
 }
 
 // Run a toy.
 void toy_exec(char *argv[])
 {
 	struct toy_list *which;
-	
+
 	which = toy_find(argv[0]);
 	if (!which) return;
 
 	toy_init(which, argv);
-	
+
 	exit(toys.which->toy_main());
 }
 
--- a/toys/toysh.c	Fri Jun 01 11:46:56 2007 -0400
+++ b/toys/toysh.c	Fri Jun 01 13:41:24 2007 -0400
@@ -184,14 +184,14 @@
 
 int cd_main(void)
 {
-	char *dest = toys.argv[1] ? toys.argv[1]: getenv("HOME");
+	char *dest = *toys.optargs ? *toys.optargs : getenv("HOME");
 	if (chdir(dest)) error_exit("chdir %s",dest);
 	return 0;
 }
 
 int exit_main(void)
 {	
-	exit(toys.argv[1] ? atoi(toys.argv[1]) : 0);
+	exit(*toys.optargs ? atoi(*toys.optargs) : 0);
 }
 
 int toysh_main(void)
@@ -203,7 +203,7 @@
 	if (CFG_TOYSH_TTY) {
 		if (isatty(0)) toys.optflags |= 1;
 	}
-	f = toys.argv[1] ? xfopen(toys.argv[1], "r") : NULL;
+	f = *toys.optargs ? xfopen(*toys.optargs, "r") : NULL;
 	if (command) handle(command);
 	else {
 		unsigned cmdlen=0;