diff options
Diffstat (limited to 'toys/other')
-rw-r--r-- | toys/other/hello.c | 56 | ||||
-rw-r--r-- | toys/other/vconfig.c | 14 |
2 files changed, 55 insertions, 15 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); } diff --git a/toys/other/vconfig.c b/toys/other/vconfig.c index d2422529..5a737c78 100644 --- a/toys/other/vconfig.c +++ b/toys/other/vconfig.c @@ -47,6 +47,18 @@ void vconfig_main(void) memset(&request, 0, sizeof(struct vlan_ioctl_args)); cmd = toys.optargs[0]; +//add ADD_VLAN_CMD 4094 0 // ADD_VLAN_CMD +//rem DEL_VLAN_CMD 0 0 // DEL_VLAN_CMD +//set_ingress_map INT_MAX 0 // SET_VLAN_INGRESS_PRIORITY_CMD +//set_egress_map // SET_VLAN_EGRESS_PRIORITY_CMD +//GET_VLAN_INGRESS_PRIORITY_CMD, +//GET_VLAN_EGRESS_PRIORITY_CMD, +//set_name_type // SET_VLAN_NAME_TYPE_CMD +//set_flag // SET_VLAN_FLAG_CMD, +//GET_VLAN_REALDEV_NAME_CMD, +//GET_VLAN_VID_CMD + + if (!strcmp(cmd, "set_name_type")) { char *types[] = {"VLAN_PLUS_VID", "DEV_PLUS_VID", "VLAN_PLUS_VID_NO_PAD", "DEV_PLUS_VID_NO_PAD"}; @@ -65,7 +77,7 @@ void vconfig_main(void) } // Store interface name - xstrncpy(request.device1, toys.optargs[1], 16); + xstrncpy(request.device1, toys.optargs[1], 23); if (!strcmp(cmd, "add")) { request.cmd = ADD_VLAN_CMD; |