Signed-off-by: Thomas Schwinge <tho...@codesourcery.com> --- linux-user/main.c | 47 ++++++++++++++++++++++++++--------------------- 1 file changed, 26 insertions(+), 21 deletions(-)
diff --git linux-user/main.c linux-user/main.c index 7f81821..50bbadf 100644 --- linux-user/main.c +++ linux-user/main.c @@ -3180,12 +3180,17 @@ void init_task_state(TaskState *ts) ts->sigqueue_table[i].next = NULL; } -static void handle_arg_help(const char *arg) +typedef enum { + ARG_ORIGIN_ENV, + ARG_ORIGIN_CMDLINE +} arg_origin; + +static void handle_arg_help(arg_origin whence, const char *arg) { usage(); } -static void handle_arg_log(const char *arg) +static void handle_arg_log(arg_origin whence, const char *arg) { int mask; @@ -3197,31 +3202,31 @@ static void handle_arg_log(const char *arg) qemu_set_log(mask); } -static void handle_arg_log_filename(const char *arg) +static void handle_arg_log_filename(arg_origin whence, const char *arg) { qemu_set_log_filename(arg); } -static void handle_arg_set_env(const char *arg) +static void handle_arg_set_env(arg_origin whence, const char *arg) { if (envlist_parse_set(envlist, arg) != 0) { usage(); } } -static void handle_arg_unset_env(const char *arg) +static void handle_arg_unset_env(arg_origin whence, const char *arg) { if (envlist_parse_unset(envlist, arg) != 0) { usage(); } } -static void handle_arg_argv0(const char *arg) +static void handle_arg_argv0(arg_origin whence, const char *arg) { argv0 = strdup(arg); } -static void handle_arg_stack_size(const char *arg) +static void handle_arg_stack_size(arg_origin whence, const char *arg) { char *p; guest_stack_size = strtoul(arg, &p, 0); @@ -3236,12 +3241,12 @@ static void handle_arg_stack_size(const char *arg) } } -static void handle_arg_ld_prefix(const char *arg) +static void handle_arg_ld_prefix(arg_origin whence, const char *arg) { interp_prefix = strdup(arg); } -static void handle_arg_pagesize(const char *arg) +static void handle_arg_pagesize(arg_origin whence, const char *arg) { qemu_host_page_size = atoi(arg); if (qemu_host_page_size == 0 || @@ -3251,17 +3256,17 @@ static void handle_arg_pagesize(const char *arg) } } -static void handle_arg_gdb(const char *arg) +static void handle_arg_gdb(arg_origin whence, const char *arg) { gdbstub_port = atoi(arg); } -static void handle_arg_uname(const char *arg) +static void handle_arg_uname(arg_origin whence, const char *arg) { qemu_uname_release = strdup(arg); } -static void handle_arg_cpu(const char *arg) +static void handle_arg_cpu(arg_origin whence, const char *arg) { cpu_model = strdup(arg); if (cpu_model == NULL || is_help_option(cpu_model)) { @@ -3274,13 +3279,13 @@ static void handle_arg_cpu(const char *arg) } #if defined(CONFIG_USE_GUEST_BASE) -static void handle_arg_guest_base(const char *arg) +static void handle_arg_guest_base(arg_origin whence, const char *arg) { guest_base = strtol(arg, NULL, 0); have_guest_base = 1; } -static void handle_arg_reserved_va(const char *arg) +static void handle_arg_reserved_va(arg_origin whence, const char *arg) { char *p; int shift = 0; @@ -3317,17 +3322,17 @@ static void handle_arg_reserved_va(const char *arg) } #endif -static void handle_arg_singlestep(const char *arg) +static void handle_arg_singlestep(arg_origin whence, const char *arg) { singlestep = 1; } -static void handle_arg_strace(const char *arg) +static void handle_arg_strace(arg_origin whence, const char *arg) { do_strace = 1; } -static void handle_arg_version(const char *arg) +static void handle_arg_version(arg_origin whence, const char *arg) { printf("qemu-" TARGET_ARCH " version " QEMU_VERSION QEMU_PKGVERSION ", Copyright (c) 2003-2008 Fabrice Bellard\n"); @@ -3338,7 +3343,7 @@ struct qemu_argument { const char *argv; const char *env; bool has_arg; - void (*handle_opt)(const char *arg); + void (*handle_opt)(arg_origin whence, const char *arg); const char *example; const char *help; }; @@ -3467,7 +3472,7 @@ static int parse_args(int argc, char **argv) r = getenv(arginfo->env); if (r != NULL) { - arginfo->handle_opt(r); + arginfo->handle_opt(ARG_ORIGIN_ENV, r); } } @@ -3492,10 +3497,10 @@ static int parse_args(int argc, char **argv) if (optind >= argc) { usage(); } - arginfo->handle_opt(argv[optind]); + arginfo->handle_opt(ARG_ORIGIN_CMDLINE, argv[optind]); optind++; } else { - arginfo->handle_opt(NULL); + arginfo->handle_opt(ARG_ORIGIN_CMDLINE, NULL); } break; } -- 1.7.10.4