aboutsummaryrefslogtreecommitdiff
path: root/toys
diff options
context:
space:
mode:
authorlandley <landley@driftwood>2006-09-28 17:18:51 -0400
committerlandley <landley@driftwood>2006-09-28 17:18:51 -0400
commitc56215062c961402515daeef8330ed75cd94af29 (patch)
tree7d29fd9f966e8392c180ec7a918d52b5ffb6a299 /toys
parent13bab2f09e9189c2b1e83ae37a1134108f9479cf (diff)
downloadtoybox-c56215062c961402515daeef8330ed75cd94af29.tar.gz
Next snapshot. Tries to grab something out of lib in order to build, I have
an empty "blah.c" in there to make it happy but I'm not checking that in.
Diffstat (limited to 'toys')
-rw-r--r--toys/df.c7
-rw-r--r--toys/main.c95
2 files changed, 7 insertions, 95 deletions
diff --git a/toys/df.c b/toys/df.c
new file mode 100644
index 00000000..05c4b6c4
--- /dev/null
+++ b/toys/df.c
@@ -0,0 +1,7 @@
+/* vi: set ts=4 : */
+#include "toys.h"
+
+int df_main(void)
+{
+ printf("toys.which->name=%s\n",toys.which->name);
+}
diff --git a/toys/main.c b/toys/main.c
deleted file mode 100644
index bd15d602..00000000
--- a/toys/main.c
+++ /dev/null
@@ -1,95 +0,0 @@
-/* vi: set ts=4 :*/
-/* Toybox infrastructure.
- *
- * Copyright 2006 Rob Landley <rob@landley.net>
- *
- * Licensed under GPL version 2, see file LICENSE in this tarball for details.
- */
-
-#include <stdio.h>
-#include <strings.h>
-
-/*
-name
-main()
-struct
-usage (short long example info)
-path (/usr/sbin)
-*/
-
-int toybox_main(void)
-{
- printf("toybox\n");
- return 0;
-}
-
-int toysh_main(void)
-{
- printf("toysh\n");
-}
-
-// The monster fun applet list.
-
-struct toy_list {
- char *name;
- int (*toy_main)(void);
-} toy_list[] = {
- {"toybox", toybox_main},
- {"toysh", toysh_main}
-};
-
-// Global context for this applet.
-
-struct toy_context {
- struct toy_list *which;
- int argc;
- char **argv;
- char buf[4096];
-// toy_union toydata;
-} toys;
-
-struct toy_list *find_toy_by_name(char *name)
-{
- int top, bottom, middle;
-
- // If the name starts with "toybox", accept that as a match. Otherwise
- // skip the first entry, which is out of order.
-
- if (!strncmp(name,"toybox",6)) return toy_list;
- bottom=1;
-
- // Binary search to find this applet.
-
- top=(sizeof(toy_list)/sizeof(struct toy_list))-1;
- for(;;) {
- int result;
-
- middle=(top+bottom)/2;
- if(middle<bottom || middle>top) return NULL;
- result = strcmp(name,toy_list[middle].name);
- if(!result) return toy_list+middle;
- if(result<0) top=--middle;
- else bottom=++middle;
- }
-}
-
-int main(int argc, char *argv[])
-{
- char *name;
-
- // Record command line arguments.
- toys.argc = argc;
- toys.argv = argv;
-
- // Figure out which applet got called.
- name = rindex(argv[0],'/');
- if (!name) name = argv[0];
- else name++;
- toys.which = find_toy_by_name(name);
-
- if (!toys.which) {
- dprintf(2,"No behavior for %s\n",name);
- return 1;
- }
- return toys.which->toy_main();
-}