Infrastructure, first drop of toy shell, and a bit of work on df.
diff --git a/toys.h b/toys.h
index ec1ad76..4bf29b7 100644
--- a/toys.h
+++ b/toys.h
@@ -6,43 +6,59 @@
  * Licensed under GPL version 2, see file LICENSE in this tarball for details.
  */
 
+#include <limits.h>
+#include <stdarg.h>
 #include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
 #include <strings.h>
+#include <unistd.h>
 
-/*
-name
-main()
-struct
-usage (short long example info)
-path (/usr/sbin)
-*/
+#include "lib/lib.h"
 
+int cd_main(void);
+int exit_main(void);
 int toybox_main(void);
 int toysh_main(void);
 int df_main(void);
 
+#define TOYFLAG_USR      (1<<0)
+#define TOYFLAG_BIN      (1<<1)
+#define TOYFLAG_SBIN     (1<<2)
+#define TOYMASK_LOCATION ((1<<4)-1)
+
+#define TOYFLAG_NOFORK   (1<<4)
+
 extern struct toy_list {
 	char *name;
 	int (*toy_main)(void);
+	int flags;
 } toy_list[];
-struct toy_list *find_toy_by_name(char *name);
+struct toy_list *toy_find(char *name);
 
 // Global context for this applet.
 
 extern struct toy_context {
-	struct toy_list *which;
+	struct toy_list *which;  // Which entry in toy_list is this one?
+	int exitval;             // Value error_exit feeds to exit()
 	int argc;
 	char **argv;
 	char buf[4096];
 } toys;
 
+struct exit_data {;};
+struct cd_data {;};
 struct toybox_data {;};
 struct toysh_data {;};
 struct df_data {;};
 
 union toy_union {
+	struct exit_data exit;
+	struct cd_data cd;
 	struct toybox_data toybox;
 	struct toysh_data toysh;
 	struct df_data df;
 } toy;
 
+// I need a real config system.
+#define CFG_TOYS_FREE 0