[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 2 of 2] xl: Introduce helper macro for option parsing
ping? On Fri, 2012-11-30 at 11:21 +0000, Ian Campbell wrote: > # HG changeset patch > # User Ian Campbell <ijc@xxxxxxxxxxxxxx> > # Date 1354274264 0 > # Node ID d4cc790b47d8735ae3f2b0c4707bfa58f90a2cd3 > # Parent b63fbacd5037e79bc4f40429453cb59816f94793 > xl: Introduce helper macro for option parsing. > > Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx> > --- > v2: > - s/FOREACH_OPT/SWITCH_FOREACH_OPT/ > - Document the macro > > diff -r b63fbacd5037 -r d4cc790b47d8 tools/libxl/xl_cmdimpl.c > --- a/tools/libxl/xl_cmdimpl.c Fri Nov 30 11:17:44 2012 +0000 > +++ b/tools/libxl/xl_cmdimpl.c Fri Nov 30 11:17:44 2012 +0000 > @@ -2297,6 +2297,10 @@ static int64_t parse_mem_size_kb(const c > > #define COMMON_LONG_OPTS {"help", 0, 0, 'h'} > > +/* > + * Callers should use SWITCH_FOREACH_OPT in preference to calling this > + * directly. > + */ > static int def_getopt(int argc, char * const argv[], > const char *optstring, > const struct option *longopts, > @@ -2335,6 +2339,57 @@ static int def_getopt(int argc, char * c > return -1; > } > > +/* > + * Wraps def_getopt into a convenient loop+switch to process all arguments. > + * > + * _opt: an int variable, holds the current option during processing. > + * _opts: short options, as per getopt_long(3)'s optstring argument. > + * _lopts: long options, as per getopt_long(3)'s longopts argument. May > + * be null. > + * _help: name of this command, for usage string. > + * _req: number of non-option command line parameters which are > required. > + * > + * In addition the calling context is expected to contain variables > + * "argc" and "argv" in the conventional C-style: > + * main(int argc, char **argv) > + * manner. > + * > + * Callers should treat SWITCH_FOREACH_OPT as they would a switch > + * statement over the value of _opt. Each option given in _opts (or > + * _lopts) should be handled by a case statement as if it were inside > + * a switch statement. > + * > + * In addition to the options provided in _opts callers must handle > + * two additional pseudo options: > + * 0 -- generated if the user passes a -h option. help will be printed, > + * caller should return 0. > + * 2 -- generated if the user does not provided _req non-option arguments, > + * caller should return 2. > + * > + * Example: > + * > + * int main_foo(int argc, char **argv) { > + * int opt; > + * > + * SWITCH_FOREACH_OPT(opt, "blah", NULL, "foo", 0) { > + * case 0: case2: > + * return opt; > + * case 'b': > + * ... handle b option... > + * break; > + * case 'l': > + * ... handle l option ... > + * break; > + * case etc etc... > + * } > + * ... do something useful with the options ... > + * } > + */ > +#define SWITCH_FOREACH_OPT(_opt, _opts, _lopts, _help, _req) \ > + while (((_opt) = def_getopt(argc, argv, (_opts), (_lopts), \ > + (_help), (_req))) != -1) \ > + switch (opt) > + > static int set_memory_max(uint32_t domid, const char *mem) > { > int64_t memorykb; > @@ -2358,8 +2413,10 @@ int main_memmax(int argc, char **argv) > char *mem; > int rc; > > - if ((opt = def_getopt(argc, argv, "", NULL, "mem-max", 2)) != -1) > + SWITCH_FOREACH_OPT(opt, "", NULL, "mem-max", 2) { > + case 0: case 2: > return opt; > + } > > domid = find_domain(argv[optind]); > mem = argv[optind + 1]; > @@ -2392,8 +2449,10 @@ int main_memset(int argc, char **argv) > int opt = 0; > const char *mem; > > - if ((opt = def_getopt(argc, argv, "", NULL, "mem-set", 2)) != -1) > + SWITCH_FOREACH_OPT(opt, "", NULL, "mem-set", 2) { > + case 0: case 2: > return opt; > + } > > domid = find_domain(argv[optind]); > mem = argv[optind + 1]; > @@ -2431,8 +2490,10 @@ int main_cd_eject(int argc, char **argv) > int opt = 0; > const char *virtdev; > > - if ((opt = def_getopt(argc, argv, "", NULL, "cd-eject", 2)) != -1) > - return opt; > + SWITCH_FOREACH_OPT(opt, "", NULL, "cd-eject", 2) { > + case 0: case 2: > + return opt; > + } > > domid = find_domain(argv[optind]); > virtdev = argv[optind + 1]; > @@ -2448,8 +2509,10 @@ int main_cd_insert(int argc, char **argv > const char *virtdev; > char *file = NULL; /* modified by cd_insert tokenising it */ > > - if ((opt = def_getopt(argc, argv, "", NULL, "cd-insert", 3)) != -1) > + SWITCH_FOREACH_OPT(opt, "", NULL, "cd-insert", 3) { > + case 0: case 2: > return opt; > + } > > domid = find_domain(argv[optind]); > virtdev = argv[optind + 1]; > @@ -2465,24 +2528,22 @@ int main_console(int argc, char **argv) > int opt = 0, num = 0; > libxl_console_type type = 0; > > - while ((opt = def_getopt(argc, argv, "n:t:", NULL, "console", 1)) != -1) > { > - switch (opt) { > - case 0: case 2: > - return opt; > - case 't': > - if (!strcmp(optarg, "pv")) > - type = LIBXL_CONSOLE_TYPE_PV; > - else if (!strcmp(optarg, "serial")) > - type = LIBXL_CONSOLE_TYPE_SERIAL; > - else { > - fprintf(stderr, "console type supported are: pv, serial\n"); > - return 2; > - } > - break; > - case 'n': > - num = atoi(optarg); > - break; > - } > + SWITCH_FOREACH_OPT(opt, "n:t:", NULL, "console", 1) { > + case 0: case 2: > + return opt; > + case 't': > + if (!strcmp(optarg, "pv")) > + type = LIBXL_CONSOLE_TYPE_PV; > + else if (!strcmp(optarg, "serial")) > + type = LIBXL_CONSOLE_TYPE_SERIAL; > + else { > + fprintf(stderr, "console type supported are: pv, serial\n"); > + return 2; > + } > + break; > + case 'n': > + num = atoi(optarg); > + break; > } > > domid = find_domain(argv[optind]); > @@ -2505,14 +2566,12 @@ int main_vncviewer(int argc, char **argv > uint32_t domid; > int opt, autopass = 0; > > - while ((opt = def_getopt(argc, argv, "ah", opts, "vncviewer", 1)) != -1) > { > - switch (opt) { > - case 0: case 2: > - return opt; > - case 'a': > - autopass = 1; > - break; > - } > + SWITCH_FOREACH_OPT(opt, "ah", opts, "vncviewer", 1) { > + case 0: case 2: > + return opt; > + case 'a': > + autopass = 1; > + break; > } > > domid = find_domain(argv[optind]); > @@ -2545,8 +2604,10 @@ int main_pcilist(int argc, char **argv) > uint32_t domid; > int opt; > > - if ((opt = def_getopt(argc, argv, "", NULL, "pci-list", 1)) != -1) > + SWITCH_FOREACH_OPT(opt, "", NULL, "pci-list", 1) { > + case 0: case 2: > return opt; > + } > > domid = find_domain(argv[optind]); > > @@ -2584,14 +2645,12 @@ int main_pcidetach(int argc, char **argv > int force = 0; > const char *bdf = NULL; > > - while ((opt = def_getopt(argc, argv, "f", NULL, "pci-detach", 2)) != -1) > { > - switch (opt) { > - case 0: case 2: > - return opt; > - case 'f': > - force = 1; > - break; > - } > + SWITCH_FOREACH_OPT(opt, "f", NULL, "pci-detach", 2) { > + case 0: case 2: > + return opt; > + case 'f': > + force = 1; > + break; > } > > domid = find_domain(argv[optind]); > @@ -2626,8 +2685,10 @@ int main_pciattach(int argc, char **argv > int opt; > const char *bdf = NULL, *vs = NULL; > > - if ((opt = def_getopt(argc, argv, "", NULL, "pci-attach", 2)) != -1) > + SWITCH_FOREACH_OPT(opt, "", NULL, "pci-attach", 2) { > + case 0: case 2: > return opt; > + } > > domid = find_domain(argv[optind]); > bdf = argv[optind + 1]; > @@ -2660,8 +2721,10 @@ int main_pciassignable_list(int argc, ch > { > int opt; > > - if ((opt = def_getopt(argc, argv, "", NULL, "pci-assignable-list", 0)) > != -1) > + SWITCH_FOREACH_OPT(opt, "", NULL, "pci-assignable-list", 0) { > + case 0: case 2: > return opt; > + } > > pciassignable_list(); > return 0; > @@ -2692,11 +2755,9 @@ int main_pciassignable_add(int argc, cha > int opt; > const char *bdf = NULL; > > - while ((opt = def_getopt(argc, argv, "", NULL, "pci-assignable-add", 1)) > != -1) { > - switch (opt) { > - case 0: case 2: > - return opt; > - } > + SWITCH_FOREACH_OPT(opt, "", NULL, "pci-assignable-add", 1) { > + case 0: case 2: > + return opt; > } > > bdf = argv[optind]; > @@ -2731,14 +2792,12 @@ int main_pciassignable_remove(int argc, > const char *bdf = NULL; > int rebind = 0; > > - while ((opt = def_getopt(argc, argv, "r", NULL, "pci-assignable-remove", > 1)) != -1) { > - switch (opt) { > - case 0: case 2: > - return opt; > - case 'r': > - rebind=1; > - break; > - } > + SWITCH_FOREACH_OPT(opt, "r", NULL, "pci-assignable-remove", 1) { > + case 0: case 2: > + return opt; > + case 'r': > + rebind=1; > + break; > } > > bdf = argv[optind]; > @@ -3549,34 +3608,31 @@ int main_restore(int argc, char **argv) > {0, 0, 0, 0} > }; > > - while ((opt = def_getopt(argc, argv, "FhcpdeVA", > - opts, "restore", 1)) != -1) { > - switch (opt) { > - case 0: case 2: > - return opt; > - case 'c': > - console_autoconnect = 1; > - break; > - case 'p': > - paused = 1; > - break; > - case 'd': > - debug = 1; > - break; > - case 'F': > - daemonize = 0; > - break; > - case 'e': > - daemonize = 0; > - monitor = 0; > - break; > - case 'V': > - vnc = 1; > - break; > - case 'A': > - vnc = vncautopass = 1; > - break; > - } > + SWITCH_FOREACH_OPT(opt, "FhcpdeVA", opts, "restore", 1) { > + case 0: case 2: > + return opt; > + case 'c': > + console_autoconnect = 1; > + break; > + case 'p': > + paused = 1; > + break; > + case 'd': > + debug = 1; > + break; > + case 'F': > + daemonize = 0; > + break; > + case 'e': > + daemonize = 0; > + monitor = 0; > + break; > + case 'V': > + vnc = 1; > + break; > + case 'A': > + vnc = vncautopass = 1; > + break; > } > > if (argc-optind == 1) { > @@ -3613,24 +3669,22 @@ int main_migrate_receive(int argc, char > int debug = 0, daemonize = 1, monitor = 1, remus = 0; > int opt; > > - while ((opt = def_getopt(argc, argv, "Fedr", NULL, "migrate-receive", > 0)) != -1) { > - switch (opt) { > - case 0: case 2: > - return opt; > - case 'F': > - daemonize = 0; > - break; > - case 'e': > - daemonize = 0; > - monitor = 0; > - break; > - case 'd': > - debug = 1; > - break; > - case 'r': > - remus = 1; > - break; > - } > + SWITCH_FOREACH_OPT(opt, "Fedr", NULL, "migrate-receive", 0) { > + case 0: case 2: > + return opt; > + case 'F': > + daemonize = 0; > + break; > + case 'e': > + daemonize = 0; > + monitor = 0; > + break; > + case 'd': > + debug = 1; > + break; > + case 'r': > + remus = 1; > + break; > } > > if (argc-optind != 0) { > @@ -3652,14 +3706,12 @@ int main_save(int argc, char **argv) > int checkpoint = 0; > int opt; > > - while ((opt = def_getopt(argc, argv, "c", NULL, "save", 2)) != -1) { > - switch (opt) { > - case 0: case 2: > - return opt; > - case 'c': > - checkpoint = 1; > - break; > - } > + SWITCH_FOREACH_OPT(opt, "c", NULL, "save", 2) { > + case 0: case 2: > + return opt; > + case 'c': > + checkpoint = 1; > + break; > } > > if (argc-optind > 3) { > @@ -3685,27 +3737,25 @@ int main_migrate(int argc, char **argv) > char *host; > int opt, daemonize = 1, monitor = 1, debug = 0; > > - while ((opt = def_getopt(argc, argv, "FC:s:ed", NULL, "migrate", 2)) != > -1) { > - switch (opt) { > - case 0: case 2: > - return opt; > - case 'C': > - config_filename = optarg; > - break; > - case 's': > - ssh_command = optarg; > - break; > - case 'F': > - daemonize = 0; > - break; > - case 'e': > - daemonize = 0; > - monitor = 0; > - break; > - case 'd': > - debug = 1; > - break; > - } > + SWITCH_FOREACH_OPT(opt, "FC:s:ed", NULL, "migrate", 2) { > + case 0: case 2: > + return opt; > + case 'C': > + config_filename = optarg; > + break; > + case 's': > + ssh_command = optarg; > + break; > + case 'F': > + daemonize = 0; > + break; > + case 'e': > + daemonize = 0; > + monitor = 0; > + break; > + case 'd': > + debug = 1; > + break; > } > > domid = find_domain(argv[optind]); > @@ -3729,8 +3779,10 @@ int main_dump_core(int argc, char **argv > { > int opt; > > - if ((opt = def_getopt(argc, argv, "", NULL, "dump-core", 2)) != -1) > + SWITCH_FOREACH_OPT(opt, "", NULL, "dump-core", 2) { > + case 0: case 2: > return opt; > + } > > core_dump_domain(find_domain(argv[optind]), argv[optind + 1]); > return 0; > @@ -3740,8 +3792,10 @@ int main_pause(int argc, char **argv) > { > int opt; > > - if ((opt = def_getopt(argc, argv, "", NULL, "pause", 1)) != -1) > + SWITCH_FOREACH_OPT(opt, "", NULL, "pause", 1) { > + case 0: case 2: > return opt; > + } > > pause_domain(find_domain(argv[optind])); > > @@ -3752,8 +3806,10 @@ int main_unpause(int argc, char **argv) > { > int opt; > > - if ((opt = def_getopt(argc, argv, "", NULL, "unpause", 1)) != -1) > + SWITCH_FOREACH_OPT(opt, "", NULL, "unpause", 1) { > + case 0: case 2: > return opt; > + } > > unpause_domain(find_domain(argv[optind])); > > @@ -3764,8 +3820,10 @@ int main_destroy(int argc, char **argv) > { > int opt; > > - if ((opt = def_getopt(argc, argv, "", NULL, "destroy", 1)) != -1) > + SWITCH_FOREACH_OPT(opt, "", NULL, "destroy", 1) { > + case 0: case 2: > return opt; > + } > > destroy_domain(find_domain(argv[optind])); > return 0; > @@ -3787,20 +3845,18 @@ static int main_shutdown_or_reboot(int d > {0, 0, 0, 0} > }; > > - while ((opt = def_getopt(argc, argv, "awF", opts, what, 0)) != -1) { > - switch (opt) { > - case 0: case 2: > - return opt; > - case 'a': > - all = 1; > - break; > - case 'w': > - wait_for_it = 1; > - break; > - case 'F': > - fallback_trigger = 1; > - break; > - } > + SWITCH_FOREACH_OPT(opt, "awF", opts, what, 0) { > + case 0: case 2: > + return opt; > + case 'a': > + all = 1; > + break; > + case 'w': > + wait_for_it = 1; > + break; > + case 'F': > + fallback_trigger = 1; > + break; > } > > if (!argv[optind] && !all) { > @@ -3871,23 +3927,18 @@ int main_list(int argc, char **argv) > libxl_dominfo *info, *info_free=0; > int nb_domain, rc; > > - while ((opt = def_getopt(argc, argv, "lvhZ", opts, "list", 0)) != -1) { > - switch (opt) { > - case 0: case 2: > - return opt; > - case 'l': > - details = 1; > - break; > - case 'h': > - help("list"); > - return 0; > - case 'v': > - verbose = 1; > - break; > - case 'Z': > - context = 1; > - break; > - } > + SWITCH_FOREACH_OPT(opt, "lvhZ", opts, "list", 0) { > + case 0: case 2: > + return opt; > + case 'l': > + details = 1; > + break; > + case 'v': > + verbose = 1; > + break; > + case 'Z': > + context = 1; > + break; > } > > if (optind >= argc) { > @@ -3933,8 +3984,10 @@ int main_vm_list(int argc, char **argv) > { > int opt; > > - if ((opt = def_getopt(argc, argv, "", NULL, "vm-list", 0)) != -1) > + SWITCH_FOREACH_OPT(opt, "", NULL, "vm-list", 0) { > + case 0: case 2: > return opt; > + } > > list_vm(); > return 0; > @@ -3964,45 +4017,40 @@ int main_create(int argc, char **argv) > argc--; argv++; > } > > - while ((opt = def_getopt(argc, argv, "Fhnqf:pcdeVA", opts, "create", 0)) > != -1) { > - switch (opt) { > - case 0: case 2: > - return opt; > - case 'f': > - filename = optarg; > - break; > - case 'p': > - paused = 1; > - break; > - case 'c': > - console_autoconnect = 1; > - break; > - case 'd': > - debug = 1; > - break; > - case 'F': > - daemonize = 0; > - break; > - case 'e': > - daemonize = 0; > - monitor = 0; > - break; > - case 'h': > - help("create"); > - return 0; > - case 'n': > - dryrun_only = 1; > - break; > - case 'q': > - quiet = 1; > - break; > - case 'V': > - vnc = 1; > - break; > - case 'A': > - vnc = vncautopass = 1; > - break; > - } > + SWITCH_FOREACH_OPT(opt, "Fhnqf:pcdeVA", opts, "create", 0) { > + case 0: case 2: > + return opt; > + case 'f': > + filename = optarg; > + break; > + case 'p': > + paused = 1; > + break; > + case 'c': > + console_autoconnect = 1; > + break; > + case 'd': > + debug = 1; > + break; > + case 'F': > + daemonize = 0; > + break; > + case 'e': > + daemonize = 0; > + monitor = 0; > + break; > + case 'n': > + dryrun_only = 1; > + break; > + case 'q': > + quiet = 1; > + break; > + case 'V': > + vnc = 1; > + break; > + case 'A': > + vnc = vncautopass = 1; > + break; > } > > extra_config[0] = '\0'; > @@ -4070,17 +4118,15 @@ int main_config_update(int argc, char ** > argc--; argv++; > } > > - while ((opt = def_getopt(argc, argv, "dhqf:", opts, "config_update", 0)) > != -1) { > - switch (opt) { > - case 0: case 2: > - return opt; > - case 'd': > - debug = 1; > - break; > - case 'f': > - filename = optarg; > - break; > - } > + SWITCH_FOREACH_OPT(opt, "dhqf:", opts, "config_update", 0) { > + case 0: case 2: > + return opt; > + case 'd': > + debug = 1; > + break; > + case 'f': > + filename = optarg; > + break; > } > > extra_config[0] = '\0'; > @@ -4168,8 +4214,11 @@ int main_button_press(int argc, char **a > fprintf(stderr, "WARNING: \"button-press\" is deprecated. " > "Please use \"trigger\"\n"); > > - if ((opt = def_getopt(argc, argv, "", NULL, "button-press", 2)) != -1) > + > + SWITCH_FOREACH_OPT(opt, "", NULL, "button-press", 2) { > + case 0: case 2: > return opt; > + } > > button_press(find_domain(argv[optind]), argv[optind + 1]); > > @@ -4309,8 +4358,10 @@ int main_vcpulist(int argc, char **argv) > { > int opt; > > - if ((opt = def_getopt(argc, argv, "", NULL, "cpu-list", 0)) != -1) > + SWITCH_FOREACH_OPT(opt, "", NULL, "cpu-list", 0) { > + case 0: case 2: > return opt; > + } > > vcpulist(argc - optind, argv + optind); > return 0; > @@ -4370,8 +4421,10 @@ int main_vcpupin(int argc, char **argv) > { > int opt; > > - if ((opt = def_getopt(argc, argv, "", NULL, "vcpu-pin", 3)) != -1) > + SWITCH_FOREACH_OPT(opt, "", NULL, "vcpu-pin", 3) { > + case 0: case 2: > return opt; > + } > > vcpupin(find_domain(argv[optind]), argv[optind+1] , argv[optind+2]); > return 0; > @@ -4406,8 +4459,10 @@ int main_vcpuset(int argc, char **argv) > { > int opt; > > - if ((opt = def_getopt(argc, argv, "", NULL, "vcpu-set", 2)) != -1) > + SWITCH_FOREACH_OPT(opt, "", NULL, "vcpu-set", 2) { > + case 0: case 2: > return opt; > + } > > vcpuset(find_domain(argv[optind]), argv[optind+1]); > return 0; > @@ -4589,14 +4644,12 @@ int main_info(int argc, char **argv) > }; > int numa = 0; > > - while ((opt = def_getopt(argc, argv, "hn", opts, "info", 0)) != -1) { > - switch (opt) { > - case 0: case 2: > - return opt; > - case 'n': > - numa = 1; > - break; > - } > + SWITCH_FOREACH_OPT(opt, "hn", opts, "info", 0) { > + case 0: case 2: > + return opt; > + case 'n': > + numa = 1; > + break; > } > > print_info(numa); > @@ -4630,8 +4683,10 @@ int main_sharing(int argc, char **argv) > libxl_dominfo *info, *info_free = NULL; > int nb_domain, rc; > > - if ((opt = def_getopt(argc, argv, "", NULL, "sharing", 0)) != -1) > + SWITCH_FOREACH_OPT(opt, "", NULL, "sharing", 0) { > + case 0: case 2: > return opt; > + } > > if (optind >= argc) { > info = libxl_list_domain(ctx, &nb_domain); > @@ -4911,36 +4966,34 @@ int main_sched_credit(int argc, char **a > {0, 0, 0, 0} > }; > > - while ((opt = def_getopt(argc, argv, "d:w:c:p:t:r:hs", opts, > "sched-credit", 0)) != -1) { > - switch (opt) { > - case 0: case 2: > - return opt; > - case 'd': > - dom = optarg; > - break; > - case 'w': > - weight = strtol(optarg, NULL, 10); > - opt_w = 1; > - break; > - case 'c': > - cap = strtol(optarg, NULL, 10); > - opt_c = 1; > - break; > - case 't': > - tslice = strtol(optarg, NULL, 10); > - opt_t = 1; > - break; > - case 'r': > - ratelimit = strtol(optarg, NULL, 10); > - opt_r = 1; > - break; > - case 's': > - opt_s = 1; > - break; > - case 'p': > - cpupool = optarg; > - break; > - } > + SWITCH_FOREACH_OPT(opt, "d:w:c:p:t:r:hs", opts, "sched-credit", 0) { > + case 0: case 2: > + return opt; > + case 'd': > + dom = optarg; > + break; > + case 'w': > + weight = strtol(optarg, NULL, 10); > + opt_w = 1; > + break; > + case 'c': > + cap = strtol(optarg, NULL, 10); > + opt_c = 1; > + break; > + case 't': > + tslice = strtol(optarg, NULL, 10); > + opt_t = 1; > + break; > + case 'r': > + ratelimit = strtol(optarg, NULL, 10); > + opt_r = 1; > + break; > + case 's': > + opt_s = 1; > + break; > + case 'p': > + cpupool = optarg; > + break; > } > > if ((cpupool || opt_s) && (dom || opt_w || opt_c)) { > @@ -5030,21 +5083,19 @@ int main_sched_credit2(int argc, char ** > {0, 0, 0, 0} > }; > > - while ((opt = def_getopt(argc, argv, "d:w:p:h", opts, "sched-credit2", > 0)) != -1) { > - switch (opt) { > - case 0: case 2: > - return opt; > - case 'd': > - dom = optarg; > - break; > - case 'w': > - weight = strtol(optarg, NULL, 10); > - opt_w = 1; > - break; > - case 'p': > - cpupool = optarg; > - break; > - } > + SWITCH_FOREACH_OPT(opt, "d:w:p:h", opts, "sched-credit2", 0) { > + case 0: case 2: > + return opt; > + case 'd': > + dom = optarg; > + break; > + case 'w': > + weight = strtol(optarg, NULL, 10); > + opt_w = 1; > + break; > + case 'p': > + cpupool = optarg; > + break; > } > > if (cpupool && (dom || opt_w)) { > @@ -5105,37 +5156,35 @@ int main_sched_sedf(int argc, char **arg > {0, 0, 0, 0} > }; > > - while ((opt = def_getopt(argc, argv, "d:p:s:l:e:w:c:h", opts, > "sched-sedf", 0)) != -1) { > - switch (opt) { > - case 0: case 2: > - return opt; > - case 'd': > - dom = optarg; > - break; > - case 'p': > - period = strtol(optarg, NULL, 10); > - opt_p = 1; > - break; > - case 's': > - slice = strtol(optarg, NULL, 10); > - opt_s = 1; > - break; > - case 'l': > - latency = strtol(optarg, NULL, 10); > - opt_l = 1; > - break; > - case 'e': > - extra = strtol(optarg, NULL, 10); > - opt_e = 1; > - break; > - case 'w': > - weight = strtol(optarg, NULL, 10); > - opt_w = 1; > - break; > - case 'c': > - cpupool = optarg; > - break; > - } > + SWITCH_FOREACH_OPT(opt, "d:p:s:l:e:w:c:h", opts, "sched-sedf", 0) { > + case 0: case 2: > + return opt; > + case 'd': > + dom = optarg; > + break; > + case 'p': > + period = strtol(optarg, NULL, 10); > + opt_p = 1; > + break; > + case 's': > + slice = strtol(optarg, NULL, 10); > + opt_s = 1; > + break; > + case 'l': > + latency = strtol(optarg, NULL, 10); > + opt_l = 1; > + break; > + case 'e': > + extra = strtol(optarg, NULL, 10); > + opt_e = 1; > + break; > + case 'w': > + weight = strtol(optarg, NULL, 10); > + opt_w = 1; > + break; > + case 'c': > + cpupool = optarg; > + break; > } > > if (cpupool && (dom || opt_p || opt_s || opt_l || opt_e || opt_w)) { > @@ -5202,8 +5251,10 @@ int main_domid(int argc, char **argv) > int opt; > const char *domname = NULL; > > - if ((opt = def_getopt(argc, argv, "", NULL, "domid", 1)) != -1) > + SWITCH_FOREACH_OPT(opt, "", NULL, "domid", 1) { > + case 0: case 2: > return opt; > + } > > domname = argv[optind]; > > @@ -5224,8 +5275,10 @@ int main_domname(int argc, char **argv) > char *domname = NULL; > char *endptr = NULL; > > - if ((opt = def_getopt(argc, argv, "", NULL, "domname", 1)) != -1) > + SWITCH_FOREACH_OPT(opt, "", NULL, "domname", 1) { > + case 0: case 2: > return opt; > + } > > domid = strtol(argv[optind], &endptr, 10); > if (domid == 0 && !strcmp(endptr, argv[optind])) { > @@ -5252,8 +5305,10 @@ int main_rename(int argc, char **argv) > int opt; > const char *dom, *new_name; > > - if ((opt = def_getopt(argc, argv, "", NULL, "rename", 2)) != -1) > + SWITCH_FOREACH_OPT(opt, "", NULL, "rename", 2) { > + case 0: case 2: > return opt; > + } > > dom = argv[optind++]; > new_name = argv[optind]; > @@ -5276,8 +5331,10 @@ int main_trigger(int argc, char **argv) > const char *trigger_name = NULL; > libxl_trigger trigger; > > - if ((opt = def_getopt(argc, argv, "", NULL, "trigger", 2)) != -1) > + SWITCH_FOREACH_OPT(opt, "", NULL, "trigger", 2) { > + case 0: case 2: > return opt; > + } > > domid = find_domain(argv[optind++]); > > @@ -5306,8 +5363,10 @@ int main_sysrq(int argc, char **argv) > int opt; > const char *sysrq = NULL; > > - if ((opt = def_getopt(argc, argv, "", NULL, "sysrq", 2)) != -1) > + SWITCH_FOREACH_OPT(opt, "", NULL, "sysrq", 2) { > + case 0: case 2: > return opt; > + } > > domid = find_domain(argv[optind++]); > > @@ -5329,8 +5388,10 @@ int main_debug_keys(int argc, char **arg > int opt; > char *keys; > > - if ((opt = def_getopt(argc, argv, "", NULL, "debug-keys", 1)) != -1) > + SWITCH_FOREACH_OPT(opt, "", NULL, "debug-keys", 1) { > + case 0: case 2: > return opt; > + } > > keys = argv[optind]; > > @@ -5349,14 +5410,12 @@ int main_dmesg(int argc, char **argv) > char *line; > int opt, ret = 1; > > - while ((opt = def_getopt(argc, argv, "c", NULL, "dmesg", 0)) != -1) { > - switch (opt) { > - case 0: case 2: > - return opt; > - case 'c': > - clear = 1; > - break; > - } > + SWITCH_FOREACH_OPT(opt, "c", NULL, "dmesg", 0) { > + case 0: case 2: > + return opt; > + case 'c': > + clear = 1; > + break; > } > > cr = libxl_xen_console_read_start(ctx, clear); > @@ -5375,8 +5434,10 @@ int main_top(int argc, char **argv) > { > int opt; > > - if ((opt = def_getopt(argc, argv, "", NULL, "top", 0)) != -1) > + SWITCH_FOREACH_OPT(opt, "", NULL, "top", 0) { > + case 0: case 2: > return opt; > + } > > return system("xentop"); > } > @@ -5392,8 +5453,10 @@ int main_networkattach(int argc, char ** > int i; > unsigned int val; > > - if ((opt = def_getopt(argc, argv, "", NULL, "network-attach", 1)) != -1) > + SWITCH_FOREACH_OPT(opt, "", NULL, "network-attach", 1) { > + case 0: case 2: > return opt; > + } > > if (argc-optind > 11) { > help("network-attach"); > @@ -5479,8 +5542,10 @@ int main_networklist(int argc, char **ar > libxl_nicinfo nicinfo; > int nb, i; > > - if ((opt = def_getopt(argc, argv, "", NULL, "network-list", 1)) != -1) > + SWITCH_FOREACH_OPT(opt, "", NULL, "network-list", 1) { > + case 0: case 2: > return opt; > + } > > /* Idx BE MAC Hdl Sta evch txr/rxr BE-path */ > printf("%-3s %-2s %-17s %-6s %-5s %-6s %5s/%-5s %-30s\n", > @@ -5516,8 +5581,10 @@ int main_networkdetach(int argc, char ** > int opt; > libxl_device_nic nic; > > - if ((opt = def_getopt(argc, argv, "", NULL, "network-detach", 2)) != -1) > + SWITCH_FOREACH_OPT(opt, "", NULL, "network-detach", 2) { > + case 0: case 2: > return opt; > + } > > domid = find_domain(argv[optind]); > > @@ -5547,8 +5614,10 @@ int main_blockattach(int argc, char **ar > libxl_device_disk disk = { 0 }; > XLU_Config *config = 0; > > - if ((opt = def_getopt(argc, argv, "", NULL, "block-attach", 2)) != -1) > + SWITCH_FOREACH_OPT(opt, "", NULL, "block-attach", 2) { > + case 0: case 2: > return opt; > + } > > if (domain_qualifier_to_domid(argv[optind], &fe_domid, 0) < 0) { > fprintf(stderr, "%s is an invalid domain identifier\n", > argv[optind]); > @@ -5582,8 +5651,10 @@ int main_blocklist(int argc, char **argv > libxl_device_disk *disks; > libxl_diskinfo diskinfo; > > - if ((opt = def_getopt(argc, argv, "", NULL, "block-list", 1)) != -1) > + SWITCH_FOREACH_OPT(opt, "", NULL, "block-list", 1) { > + case 0: case 2: > return opt; > + } > > printf("%-5s %-3s %-6s %-5s %-6s %-8s %-30s\n", > "Vdev", "BE", "handle", "state", "evt-ch", "ring-ref", "BE-path"); > @@ -5618,8 +5689,10 @@ int main_blockdetach(int argc, char **ar > int opt, rc = 0; > libxl_device_disk disk; > > - if ((opt = def_getopt(argc, argv, "", NULL, "block-detach", 2)) != -1) > + SWITCH_FOREACH_OPT(opt, "", NULL, "block-detach", 2) { > + case 0: case 2: > return opt; > + } > > domid = find_domain(argv[optind]); > > @@ -5643,8 +5716,10 @@ int main_vtpmattach(int argc, char **arg > unsigned int val; > uint32_t domid; > > - if ((opt = def_getopt(argc, argv, "", NULL, "vtpm-attach", 1)) != -1) > + SWITCH_FOREACH_OPT(opt, "", NULL, "vtpm-attach", 1) { > + case 0: case 2: > return opt; > + } > > if (domain_qualifier_to_domid(argv[optind], &domid, 0) < 0) { > fprintf(stderr, "%s is an invalid domain identifier\n", > argv[optind]); > @@ -5696,8 +5771,10 @@ int main_vtpmlist(int argc, char **argv) > libxl_vtpminfo vtpminfo; > int nb, i; > > - if ((opt = def_getopt(argc, argv, "", NULL, "vtpm-list", 1)) != -1) > + SWITCH_FOREACH_OPT(opt, "", NULL, "vtpm-list", 1) { > + case 0: case 2: > return opt; > + } > > /* Idx BE UUID Hdl Sta evch rref BE-path */ > printf("%-3s %-2s %-36s %-6s %-5s %-6s %-5s %-10s\n", > @@ -5736,8 +5813,10 @@ int main_vtpmdetach(int argc, char **arg > libxl_device_vtpm vtpm; > libxl_uuid uuid; > > - if ((opt = def_getopt(argc, argv, "", NULL, "vtpm-detach", 2)) != -1) > + SWITCH_FOREACH_OPT(opt, "", NULL, "vtpm-detach", 2) { > + case 0: case 2: > return opt; > + } > > domid = find_domain(argv[optind]); > > @@ -5928,14 +6007,12 @@ int main_uptime(int argc, char **argv) > int nb_doms = 0; > int opt; > > - while ((opt = def_getopt(argc, argv, "s", NULL, "uptime", 1)) != -1) { > - switch (opt) { > - case 0: case 2: > - return opt; > - case 's': > - short_mode = 1; > - break; > - } > + SWITCH_FOREACH_OPT(opt, "s", NULL, "uptime", 1) { > + case 0: case 2: > + return opt; > + case 's': > + short_mode = 1; > + break; > } > > for (;(dom = argv[optind]) != NULL; nb_doms++,optind++) > @@ -5955,17 +6032,15 @@ int main_tmem_list(int argc, char **argv > int all = 0; > int opt; > > - while ((opt = def_getopt(argc, argv, "al", NULL, "tmem-list", 0)) != -1) > { > - switch (opt) { > - case 0: case 2: > - return opt; > - case 'l': > - use_long = 1; > - break; > - case 'a': > - all = 1; > - break; > - } > + SWITCH_FOREACH_OPT(opt, "al", NULL, "tmem-list", 0) { > + case 0: case 2: > + return opt; > + case 'l': > + use_long = 1; > + break; > + case 'a': > + all = 1; > + break; > } > > dom = argv[optind]; > @@ -5996,14 +6071,12 @@ int main_tmem_freeze(int argc, char **ar > int all = 0; > int opt; > > - while ((opt = def_getopt(argc, argv, "a", NULL, "tmem-freeze", 0)) != > -1) { > - switch (opt) { > - case 0: case 2: > - return opt; > - case 'a': > - all = 1; > - break; > - } > + SWITCH_FOREACH_OPT(opt, "a", NULL, "tmem-freeze", 0) { > + case 0: case 2: > + return opt; > + case 'a': > + all = 1; > + break; > } > > dom = argv[optind]; > @@ -6029,14 +6102,12 @@ int main_tmem_thaw(int argc, char **argv > int all = 0; > int opt; > > - while ((opt = def_getopt(argc, argv, "a", NULL, "tmem-thaw", 0)) != -1) { > - switch (opt) { > - case 0: case 2: > - return opt; > - case 'a': > - all = 1; > - break; > - } > + SWITCH_FOREACH_OPT(opt, "a", NULL, "tmem-thaw", 0) { > + case 0: case 2: > + return opt; > + case 'a': > + all = 1; > + break; > } > > dom = argv[optind]; > @@ -6064,26 +6135,24 @@ int main_tmem_set(int argc, char **argv) > int all = 0; > int opt; > > - while ((opt = def_getopt(argc, argv, "aw:c:p:", NULL, "tmem-set", 0)) != > -1) { > - switch (opt) { > - case 0: case 2: > - return opt; > - case 'a': > - all = 1; > - break; > - case 'w': > - weight = strtol(optarg, NULL, 10); > - opt_w = 1; > - break; > - case 'c': > - cap = strtol(optarg, NULL, 10); > - opt_c = 1; > - break; > - case 'p': > - compress = strtol(optarg, NULL, 10); > - opt_p = 1; > - break; > - } > + SWITCH_FOREACH_OPT(opt, "aw:c:p:", NULL, "tmem-set", 0) { > + case 0: case 2: > + return opt; > + case 'a': > + all = 1; > + break; > + case 'w': > + weight = strtol(optarg, NULL, 10); > + opt_w = 1; > + break; > + case 'c': > + cap = strtol(optarg, NULL, 10); > + opt_c = 1; > + break; > + case 'p': > + compress = strtol(optarg, NULL, 10); > + opt_p = 1; > + break; > } > > dom = argv[optind]; > @@ -6125,20 +6194,18 @@ int main_tmem_shared_auth(int argc, char > int all = 0; > int opt; > > - while ((opt = def_getopt(argc, argv, "au:A:", NULL, "tmem-shared-auth", > 0)) != -1) { > - switch (opt) { > - case 0: case 2: > - return opt; > - case 'a': > - all = 1; > - break; > - case 'u': > - uuid = optarg; > - break; > - case 'A': > - autharg = optarg; > - break; > - } > + SWITCH_FOREACH_OPT(opt, "au:A:", NULL, "tmem-shared-auth", 0) { > + case 0: case 2: > + return opt; > + case 'a': > + all = 1; > + break; > + case 'u': > + uuid = optarg; > + break; > + case 'A': > + autharg = optarg; > + break; > } > > dom = argv[optind]; > @@ -6175,8 +6242,10 @@ int main_tmem_freeable(int argc, char ** > int opt; > int mb; > > - if ((opt = def_getopt(argc, argv, "", NULL, "tmem-freeable", 0)) != -1) > + SWITCH_FOREACH_OPT(opt, "", NULL, "tmem-freeale", 0) { > + case 0: case 2: > return opt; > + } > > mb = libxl_tmem_freeable(ctx); > if (mb == -1) > @@ -6215,17 +6284,15 @@ int main_cpupoolcreate(int argc, char ** > libxl_cputopology *topology; > int rc = -ERROR_FAIL; > > - while ((opt = def_getopt(argc, argv, "hnf:", opts, "cpupool-create", 0)) > != -1) { > - switch (opt) { > - case 0: case 2: > - return opt; > - case 'f': > - filename = optarg; > - break; > - case 'n': > - dryrun_only = 1; > - break; > - } > + SWITCH_FOREACH_OPT(opt, "hnf:", opts, "cpupool-create", 0) { > + case 0: case 2: > + return opt; > + case 'f': > + filename = optarg; > + break; > + case 'n': > + dryrun_only = 1; > + break; > } > > memset(extra_config, 0, sizeof(extra_config)); > @@ -6400,14 +6467,12 @@ int main_cpupoollist(int argc, char **ar > char *name; > int ret = 0; > > - while ((opt = def_getopt(argc, argv, "hc", opts, "cpupool-list", 1)) != > -1) { > - switch (opt) { > - case 0: case 2: > - break; > - case 'c': > - opt_cpus = 1; > - break; > - } > + SWITCH_FOREACH_OPT(opt, "hc", opts, "cpupool-list", 1) { > + case 0: case 2: > + break; > + case 'c': > + opt_cpus = 1; > + break; > } > > if (optind < argc) { > @@ -6467,8 +6532,10 @@ int main_cpupooldestroy(int argc, char * > const char *pool; > uint32_t poolid; > > - if ((opt = def_getopt(argc, argv, "", NULL, "cpupool-destroy", 1)) != -1) > + SWITCH_FOREACH_OPT(opt, "", NULL, "cpupool-destroy", 1) { > + case 0: case 2: > return opt; > + } > > pool = argv[optind]; > > @@ -6488,8 +6555,10 @@ int main_cpupoolrename(int argc, char ** > const char *new_name; > uint32_t poolid; > > - if ((opt = def_getopt(argc, argv, "", NULL, "cpupool-rename", 2)) != -1) > + SWITCH_FOREACH_OPT(opt, "", NULL, "cpupool-rename", 2) { > + case 0: case 2: > return opt; > + } > > pool = argv[optind++]; > > @@ -6518,8 +6587,10 @@ int main_cpupoolcpuadd(int argc, char ** > int node; > int n; > > - if ((opt = def_getopt(argc, argv, "", NULL, "cpupool-cpu-add", 2)) != -1) > + SWITCH_FOREACH_OPT(opt, "", NULL, "cpupool-cpu-add", 2) { > + case 0: case 2: > return opt; > + } > > pool = argv[optind++]; > node = -1; > @@ -6562,8 +6633,10 @@ int main_cpupoolcpuremove(int argc, char > int node; > int n; > > - if ((opt = def_getopt(argc, argv, "", NULL, "cpupool-cpu-remove", 2)) != > -1) > + SWITCH_FOREACH_OPT(opt, "", NULL, "cpupool-cpu-remove", 2) { > + case 0: case 2: > return opt; > + } > > pool = argv[optind++]; > node = -1; > @@ -6605,8 +6678,10 @@ int main_cpupoolmigrate(int argc, char * > const char *dom; > uint32_t domid; > > - if ((opt = def_getopt(argc, argv, "", NULL, "cpupool-migrate", 2)) != -1) > + SWITCH_FOREACH_OPT(opt, "", NULL, "cpupool-migrate", 2) { > + case 0: case 2: > return opt; > + } > > dom = argv[optind++]; > pool = argv[optind]; > @@ -6645,8 +6720,11 @@ int main_cpupoolnumasplit(int argc, char > libxl_cputopology *topology; > libxl_dominfo info; > > - if ((opt = def_getopt(argc, argv, "", NULL, "cpupool-numa-split", 0)) != > -1) > + SWITCH_FOREACH_OPT(opt, "", NULL, "cpupool-numa-split", 0) { > + case 0: case 2: > return opt; > + } > + > ret = 0; > > poolinfo = libxl_list_cpupool(ctx, &n_pools); > @@ -6898,27 +6976,24 @@ int main_remus(int argc, char **argv) > r_info.blackhole = 0; > r_info.compression = 1; > > - while ((opt = def_getopt(argc, argv, "bui:s:e", NULL, "remus", 2)) != > -1) { > - switch (opt) { > - case 0: case 2: > - return opt; > - > - case 'i': > - r_info.interval = atoi(optarg); > - break; > - case 'b': > - r_info.blackhole = 1; > - break; > - case 'u': > - r_info.compression = 0; > - break; > - case 's': > - ssh_command = optarg; > - break; > - case 'e': > - daemonize = 0; > - break; > - } > + SWITCH_FOREACH_OPT(opt, "bui:s:e", NULL, "remus", 2) { > + case 0: case 2: > + return opt; > + case 'i': > + r_info.interval = atoi(optarg); > + break; > + case 'b': > + r_info.blackhole = 1; > + break; > + case 'u': > + r_info.compression = 0; > + break; > + case 's': > + ssh_command = optarg; > + break; > + case 'e': > + daemonize = 0; > + break; > } > > domid = find_domain(argv[optind]); > > _______________________________________________ > Xen-devel mailing list > Xen-devel@xxxxxxxxxxxxx > http://lists.xen.org/xen-devel _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |