while ((opt = getopt_long(argc, argv, optstring, longopts, NULL)) == '?') {
if (optopt == 'h') {
help(helpstr);
- return 0;
+ exit(0);
}
fprintf(stderr, "option `%c' not supported.\n", optopt);
}
if (opt == 'h') {
help(helpstr);
- return 0;
+ exit(0);
}
if (opt != -1)
return opt;
fprintf(stderr, "'xl %s' requires at least %d argument%s.\n\n",
helpstr, reqargs, reqargs > 1 ? "s" : "");
help(helpstr);
- return 2;
+ exit(2);
}
return -1;
}
* `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 immediately return 0.
- * 2 -- generated if the user does not provided `num_required_opts`
- * non-option arguments, caller should immediately return 2.
+ * In addition to the options provided in opts the macro will handle
+ * the "help" option and enforce a minimum number of non-option
+ * command line pearameters as follows:
+ * -- if the user passes a -h or --help option. help will be printed,
+ * and the macro will cause the process to exit with code 0.
+ * -- if the user does not provided `num_required_opts` non-option
+ * arguments, the macro will cause the process to exit with code 2.
*
* Example:
*
* int opt;
*
* SWITCH_FOREACH_OPT(opt, "blah", NULL, "foo", 0) {
- * case 0: case2:
- * return opt;
* case 'b':
* ... handle b option...
* break;
int rc;
SWITCH_FOREACH_OPT(opt, "", NULL, "mem-max", 2) {
- case 0: case 2:
- return opt;
+ /* No options */
}
domid = find_domain(argv[optind]);
const char *mem;
SWITCH_FOREACH_OPT(opt, "", NULL, "mem-set", 2) {
- case 0: case 2:
- return opt;
+ /* No options */
}
domid = find_domain(argv[optind]);
const char *virtdev;
SWITCH_FOREACH_OPT(opt, "", NULL, "cd-eject", 2) {
- case 0: case 2:
- return opt;
+ /* No options */
}
domid = find_domain(argv[optind]);
char *file = NULL; /* modified by cd_insert tokenising it */
SWITCH_FOREACH_OPT(opt, "", NULL, "cd-insert", 3) {
- case 0: case 2:
- return opt;
+ /* No options */
}
domid = find_domain(argv[optind]);
libxl_console_type type = 0;
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;
int opt, autopass = 0;
SWITCH_FOREACH_OPT(opt, "ah", opts, "vncviewer", 1) {
- case 0: case 2:
- return opt;
case 'a':
autopass = 1;
break;
int opt;
SWITCH_FOREACH_OPT(opt, "", NULL, "pci-list", 1) {
- case 0: case 2:
- return opt;
+ /* No options */
}
domid = find_domain(argv[optind]);
const char *bdf = NULL;
SWITCH_FOREACH_OPT(opt, "f", NULL, "pci-detach", 2) {
- case 0: case 2:
- return opt;
case 'f':
force = 1;
break;
const char *bdf = NULL, *vs = NULL;
SWITCH_FOREACH_OPT(opt, "", NULL, "pci-attach", 2) {
- case 0: case 2:
- return opt;
+ /* No options */
}
domid = find_domain(argv[optind]);
int opt;
SWITCH_FOREACH_OPT(opt, "", NULL, "pci-assignable-list", 0) {
- case 0: case 2:
- return opt;
+ /* No options */
}
pciassignable_list();
const char *bdf = NULL;
SWITCH_FOREACH_OPT(opt, "", NULL, "pci-assignable-add", 1) {
- case 0: case 2:
- return opt;
+ /* No options */
}
bdf = argv[optind];
int rebind = 0;
SWITCH_FOREACH_OPT(opt, "r", NULL, "pci-assignable-remove", 1) {
- case 0: case 2:
- return opt;
case 'r':
rebind=1;
break;
};
SWITCH_FOREACH_OPT(opt, "FhcpdeVA", opts, "restore", 1) {
- case 0: case 2:
- return opt;
case 'c':
console_autoconnect = 1;
break;
int opt;
SWITCH_FOREACH_OPT(opt, "Fedr", NULL, "migrate-receive", 0) {
- case 0: case 2:
- return opt;
case 'F':
daemonize = 0;
break;
int opt;
SWITCH_FOREACH_OPT(opt, "c", NULL, "save", 2) {
- case 0: case 2:
- return opt;
case 'c':
checkpoint = 1;
break;
int opt, daemonize = 1, monitor = 1, debug = 0;
SWITCH_FOREACH_OPT(opt, "FC:s:ed", NULL, "migrate", 2) {
- case 0: case 2:
- return opt;
case 'C':
config_filename = optarg;
break;
int opt;
SWITCH_FOREACH_OPT(opt, "", NULL, "dump-core", 2) {
- case 0: case 2:
- return opt;
+ /* No options */
}
core_dump_domain(find_domain(argv[optind]), argv[optind + 1]);
int opt;
SWITCH_FOREACH_OPT(opt, "", NULL, "pause", 1) {
- case 0: case 2:
- return opt;
+ /* No options */
}
pause_domain(find_domain(argv[optind]));
int opt;
SWITCH_FOREACH_OPT(opt, "", NULL, "unpause", 1) {
- case 0: case 2:
- return opt;
+ /* No options */
}
unpause_domain(find_domain(argv[optind]));
int opt;
SWITCH_FOREACH_OPT(opt, "", NULL, "destroy", 1) {
- case 0: case 2:
- return opt;
+ /* No options */
}
destroy_domain(find_domain(argv[optind]));
};
SWITCH_FOREACH_OPT(opt, "awF", opts, what, 0) {
- case 0: case 2:
- return opt;
case 'a':
all = 1;
break;
int nb_domain, rc;
SWITCH_FOREACH_OPT(opt, "lvhZ", opts, "list", 0) {
- case 0: case 2:
- return opt;
case 'l':
details = 1;
break;
int opt;
SWITCH_FOREACH_OPT(opt, "", NULL, "vm-list", 0) {
- case 0: case 2:
- return opt;
+ /* No options */
}
list_vm();
}
SWITCH_FOREACH_OPT(opt, "Fhnqf:pcdeVA", opts, "create", 0) {
- case 0: case 2:
- return opt;
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;
SWITCH_FOREACH_OPT(opt, "", NULL, "button-press", 2) {
- case 0: case 2:
- return opt;
+ /* No options */
}
button_press(find_domain(argv[optind]), argv[optind + 1]);
int opt;
SWITCH_FOREACH_OPT(opt, "", NULL, "cpu-list", 0) {
- case 0: case 2:
- return opt;
+ /* No options */
}
vcpulist(argc - optind, argv + optind);
int opt;
SWITCH_FOREACH_OPT(opt, "", NULL, "vcpu-pin", 3) {
- case 0: case 2:
- return opt;
+ /* No options */
}
vcpupin(find_domain(argv[optind]), argv[optind+1] , argv[optind+2]);
int opt;
SWITCH_FOREACH_OPT(opt, "", NULL, "vcpu-set", 2) {
- case 0: case 2:
- return opt;
+ /* No options */
}
vcpuset(find_domain(argv[optind]), argv[optind+1]);
int numa = 0;
SWITCH_FOREACH_OPT(opt, "hn", opts, "info", 0) {
- case 0: case 2:
- return opt;
case 'n':
numa = 1;
break;
int nb_domain, rc;
SWITCH_FOREACH_OPT(opt, "", NULL, "sharing", 0) {
- case 0: case 2:
- return opt;
+ /* No options */
}
if (optind >= argc) {
};
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;
};
SWITCH_FOREACH_OPT(opt, "d:w:p:h", opts, "sched-credit2", 0) {
- case 0: case 2:
- return opt;
case 'd':
dom = 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;
const char *domname = NULL;
SWITCH_FOREACH_OPT(opt, "", NULL, "domid", 1) {
- case 0: case 2:
- return opt;
+ /* No options */
}
domname = argv[optind];
char *endptr = NULL;
SWITCH_FOREACH_OPT(opt, "", NULL, "domname", 1) {
- case 0: case 2:
- return opt;
+ /* No options */
}
domid = strtol(argv[optind], &endptr, 10);
const char *dom, *new_name;
SWITCH_FOREACH_OPT(opt, "", NULL, "rename", 2) {
- case 0: case 2:
- return opt;
+ /* No options */
}
dom = argv[optind++];
libxl_trigger trigger;
SWITCH_FOREACH_OPT(opt, "", NULL, "trigger", 2) {
- case 0: case 2:
- return opt;
+ /* No options */
}
domid = find_domain(argv[optind++]);
const char *sysrq = NULL;
SWITCH_FOREACH_OPT(opt, "", NULL, "sysrq", 2) {
- case 0: case 2:
- return opt;
+ /* No options */
}
domid = find_domain(argv[optind++]);
char *keys;
SWITCH_FOREACH_OPT(opt, "", NULL, "debug-keys", 1) {
- case 0: case 2:
- return opt;
+ /* No options */
}
keys = argv[optind];
int opt, ret = 1;
SWITCH_FOREACH_OPT(opt, "c", NULL, "dmesg", 0) {
- case 0: case 2:
- return opt;
case 'c':
clear = 1;
break;
int opt;
SWITCH_FOREACH_OPT(opt, "", NULL, "top", 0) {
- case 0: case 2:
- return opt;
+ /* No options */
}
return system("xentop");
unsigned int val;
SWITCH_FOREACH_OPT(opt, "", NULL, "network-attach", 1) {
- case 0: case 2:
- return opt;
+ /* No options */
}
if (argc-optind > 11) {
int nb, i;
SWITCH_FOREACH_OPT(opt, "", NULL, "network-list", 1) {
- case 0: case 2:
- return opt;
+ /* No options */
}
/* Idx BE MAC Hdl Sta evch txr/rxr BE-path */
libxl_device_nic nic;
SWITCH_FOREACH_OPT(opt, "", NULL, "network-detach", 2) {
- case 0: case 2:
- return opt;
+ /* No options */
}
domid = find_domain(argv[optind]);
XLU_Config *config = 0;
SWITCH_FOREACH_OPT(opt, "", NULL, "block-attach", 2) {
- case 0: case 2:
- return opt;
+ /* No options */
}
if (domain_qualifier_to_domid(argv[optind], &fe_domid, 0) < 0) {
libxl_diskinfo diskinfo;
SWITCH_FOREACH_OPT(opt, "", NULL, "block-list", 1) {
- case 0: case 2:
- return opt;
+ /* No options */
}
printf("%-5s %-3s %-6s %-5s %-6s %-8s %-30s\n",
libxl_device_disk disk;
SWITCH_FOREACH_OPT(opt, "", NULL, "block-detach", 2) {
- case 0: case 2:
- return opt;
+ /* No options */
}
domid = find_domain(argv[optind]);
uint32_t domid;
SWITCH_FOREACH_OPT(opt, "", NULL, "vtpm-attach", 1) {
- case 0: case 2:
- return opt;
+ /* No options */
}
if (domain_qualifier_to_domid(argv[optind], &domid, 0) < 0) {
int nb, i;
SWITCH_FOREACH_OPT(opt, "", NULL, "vtpm-list", 1) {
- case 0: case 2:
- return opt;
+ /* No options */
}
/* Idx BE UUID Hdl Sta evch rref BE-path */
libxl_uuid uuid;
SWITCH_FOREACH_OPT(opt, "", NULL, "vtpm-detach", 2) {
- case 0: case 2:
- return opt;
+ /* No options */
}
domid = find_domain(argv[optind]);
int opt;
SWITCH_FOREACH_OPT(opt, "s", NULL, "uptime", 1) {
- case 0: case 2:
- return opt;
case 's':
short_mode = 1;
break;
int opt;
SWITCH_FOREACH_OPT(opt, "al", NULL, "tmem-list", 0) {
- case 0: case 2:
- return opt;
case 'l':
use_long = 1;
break;
int opt;
SWITCH_FOREACH_OPT(opt, "a", NULL, "tmem-freeze", 0) {
- case 0: case 2:
- return opt;
case 'a':
all = 1;
break;
int opt;
SWITCH_FOREACH_OPT(opt, "a", NULL, "tmem-thaw", 0) {
- case 0: case 2:
- return opt;
case 'a':
all = 1;
break;
int opt;
SWITCH_FOREACH_OPT(opt, "aw:c:p:", NULL, "tmem-set", 0) {
- case 0: case 2:
- return opt;
case 'a':
all = 1;
break;
int opt;
SWITCH_FOREACH_OPT(opt, "au:A:", NULL, "tmem-shared-auth", 0) {
- case 0: case 2:
- return opt;
case 'a':
all = 1;
break;
int mb;
SWITCH_FOREACH_OPT(opt, "", NULL, "tmem-freeale", 0) {
- case 0: case 2:
- return opt;
+ /* No options */
}
mb = libxl_tmem_freeable(ctx);
int rc = -ERROR_FAIL;
SWITCH_FOREACH_OPT(opt, "hnf:", opts, "cpupool-create", 0) {
- case 0: case 2:
- return opt;
case 'f':
filename = optarg;
break;
int ret = 0;
SWITCH_FOREACH_OPT(opt, "hc", opts, "cpupool-list", 1) {
- case 0: case 2:
- break;
case 'c':
opt_cpus = 1;
break;
uint32_t poolid;
SWITCH_FOREACH_OPT(opt, "", NULL, "cpupool-destroy", 1) {
- case 0: case 2:
- return opt;
+ /* No options */
}
pool = argv[optind];
uint32_t poolid;
SWITCH_FOREACH_OPT(opt, "", NULL, "cpupool-rename", 2) {
- case 0: case 2:
- return opt;
+ /* No options */
}
pool = argv[optind++];
int n;
SWITCH_FOREACH_OPT(opt, "", NULL, "cpupool-cpu-add", 2) {
- case 0: case 2:
- return opt;
+ /* No options */
}
pool = argv[optind++];
int n;
SWITCH_FOREACH_OPT(opt, "", NULL, "cpupool-cpu-remove", 2) {
- case 0: case 2:
- return opt;
+ /* No options */
}
pool = argv[optind++];
uint32_t domid;
SWITCH_FOREACH_OPT(opt, "", NULL, "cpupool-migrate", 2) {
- case 0: case 2:
- return opt;
+ /* No options */
}
dom = argv[optind++];
libxl_dominfo info;
SWITCH_FOREACH_OPT(opt, "", NULL, "cpupool-numa-split", 0) {
- case 0: case 2:
- return opt;
+ /* No options */
}
ret = 0;
r_info.compression = 1;
SWITCH_FOREACH_OPT(opt, "bui:s:e", NULL, "remus", 2) {
- case 0: case 2:
- return opt;
case 'i':
r_info.interval = atoi(optarg);
break;