diff options
author | Isaac Dunham <ibid.ag@gmail.com> | 2014-04-12 17:26:44 -0500 |
---|---|---|
committer | Isaac Dunham <ibid.ag@gmail.com> | 2014-04-12 17:26:44 -0500 |
commit | 931425ca05b93348dd497598af077d16cdc1cd3c (patch) | |
tree | 1c5d8a9c9cf0d9953b8d74077b762e1d87b6fdf0 /toys/other/hello.c | |
parent | 669f332aafe1afdbbfbe4b7c1c8fdab6fa2cec1d (diff) | |
download | toybox-931425ca05b93348dd497598af077d16cdc1cd3c.tar.gz |
roadmap: describe glibc commands.
Some glibc commands are irrelevant because they're for functionality
that is excluded from musl (mtrace, rpc*, localedef, iconvconfig, nscd).
getconf and catchsegv look like candidates for the development toolchain;
locale and iconv were already triaged.
getent is pretty lame, but it and the timezone stuff (tzselect zic
zdump) are the only new possibly interesting commands.
Diffstat (limited to 'toys/other/hello.c')
-rw-r--r-- | toys/other/hello.c | 56 |
1 files changed, 42 insertions, 14 deletions
diff --git a/toys/other/hello.c b/toys/other/hello.c index eb80972e..b909ed53 100644 --- a/toys/other/hello.c +++ b/toys/other/hello.c @@ -8,17 +8,28 @@ // Accept many different kinds of command line argument: USE_HELLO(NEWTOY(hello, "(walrus)(blubber):;(also):e@d*c#b:a", TOYFLAG_USR|TOYFLAG_BIN)) +USE_HELLO_ALIAS(NEWTOY(hello_alias, "b:dq", TOYFLAG_USR|TOYFLAG_BIN)) config HELLO bool "hello" default n help - usage: hello [-a] [-b string] [-c number] [-d list] [-e count] [...] + usage: hello [-a] [-b STRING] [-c NUMBER] [-d LIST] [-e COUNT] [...] A hello world program. You don't need this. Mostly used as an example/skeleton file for adding new commands, occasionally nice to test kernel booting via "init=/bin/hello". + +config HELLO_ALIAS + bool "hello_alias" + default n + depends on HELLO + help + usage: hello_alias [-dq] [-b NUMBER] + + Example of a second command with different arguments in the same source + file as the first. Allows shared infrastructure not added to lib. */ #define FOR_hello @@ -27,12 +38,19 @@ config HELLO // Hello doesn't use these globals, they're here for example/skeleton purposes. GLOBALS( - char *b_string; - long c_number; - struct arg_list *d_list; - long e_count; - char *also_string; - char *blubber_string; + union { + struct { + char *b_string; + long c_number; + struct arg_list *d_list; + long e_count; + char *also_string; + char *blubber_string; + } h; + struct { + long b_number; + } a; + }; int more_globals; ) @@ -47,15 +65,25 @@ void hello_main(void) if (toys.optflags) printf("flags=%x\n", toys.optflags); if (toys.optflags & FLAG_a) printf("Saw a\n"); - if (toys.optflags & FLAG_b) printf("b=%s\n", TT.b_string); - if (toys.optflags & FLAG_c) printf("c=%ld\n", TT.c_number); - while (TT.d_list) { - printf("d=%s\n", TT.d_list->arg); - TT.d_list = TT.d_list->next; + if (toys.optflags & FLAG_b) printf("b=%s\n", TT.h.b_string); + if (toys.optflags & FLAG_c) printf("c=%ld\n", TT.h.c_number); + while (TT.h.d_list) { + printf("d=%s\n", TT.h.d_list->arg); + TT.h.d_list = TT.h.d_list->next; } - if (TT.e_count) printf("e was seen %ld times\n", TT.e_count); + if (TT.h.e_count) printf("e was seen %ld times\n", TT.h.e_count); for (optargs = toys.optargs; *optargs; optargs++) printf("optarg=%s\n", *optargs); if (toys.optflags & FLAG_walrus) printf("Saw --walrus\n"); - if (TT.blubber_string) printf("--blubber=%s\n", TT.blubber_string); + if (TT.h.blubber_string) printf("--blubber=%s\n", TT.h.blubber_string); +} + +#define CLEANUP_hello +#define FOR_hello_alias +#include "generated/flags.h" + +void hello_alias_main(void) +{ + printf("hello world %x\n", toys.optflags); + if (toys.optflags & FLAG_b) printf("b=%ld", TT.a.b_number); } |