changeset 146:99e651512aa4

Get toysh.c to start using the option parsing logic, and some minor cleanup.
author Rob Landley <rob@landley.net>
date Fri, 19 Oct 2007 19:12:48 -0500
parents 8affb8850366
children ec6e13b2495d
files toys/toylist.h toys/toysh.c
diffstat 2 files changed, 15 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/toys/toylist.h	Tue Oct 16 01:49:05 2007 -0500
+++ b/toys/toylist.h	Fri Oct 19 19:12:48 2007 -0500
@@ -18,6 +18,9 @@
 	long units;
 };
 
+// Still to go: "E:jJ:L:m:O:"
+#define MKE2FS_OPTSTRING "<1>2g:Fnqm#N#i#b#"
+
 struct mke2fs_data {
 	// Command line arguments.
 	long blocksize;
@@ -55,12 +58,16 @@
 	long length;
 };
 
-// "E:jJ:L:m:O:"
-#define MKE2FS_OPTSTRING "<1>2Fnqm#N#i#b#"
+struct toysh_data {
+	char *command;
+};
 
 extern union toy_union {
 	struct df_data df;
 	struct mke2fs_data mke2fs;
+	struct sleep_data sleep;
+	struct touch_data touch;
+	struct toysh_data toysh;
 } toy;
 
 #define TOYFLAG_USR      (1<<0)
--- a/toys/toysh.c	Tue Oct 16 01:49:05 2007 -0500
+++ b/toys/toysh.c	Fri Oct 19 19:12:48 2007 -0500
@@ -14,6 +14,8 @@
 
 #include "toys.h"
 
+#define TT toy.toysh
+
 // A single executable, its arguments, and other information we know about it.
 #define TOYSH_FLAG_EXIT    1
 #define TOYSH_FLAG_SUSPEND 2
@@ -196,7 +198,6 @@
 
 int toysh_main(void)
 {
-	char *command=NULL;
 	FILE *f;
 
 	// Set up signal handlers and grab control of this tty.
@@ -204,15 +205,16 @@
 		if (isatty(0)) toys.optflags |= 1;
 	}
 	f = *toys.optargs ? xfopen(*toys.optargs, "r") : NULL;
-	if (command) handle(command);
+	if (TT.command) handle(TT.command);
 	else {
-		unsigned cmdlen=0;
+		unsigned cmdlen = 0;
 		for (;;) {
+			char *command = 0;
 			if (!f) putchar('$');
 			if (1 > getline(&command, &cmdlen, f ? : stdin)) break;
 			handle(command);
+			free(command);
 		}
-		if (CFG_TOYBOX_FREE) free(command);
 	}
 		
 	return 1;