[Spice-devel] [PATCH v3 fixup1 x11spice 2/3] Simplify the expression of argument parsing.
Frediano Ziglio
fziglio at redhat.com
Fri Jul 26 08:14:55 UTC 2019
>
> This fixes a bug with --config=handling.
>
> Removed old testing code as obsolete instead of updating unused code.
>
> Signed-off-by: Jeremy White <jwhite at codeweavers.com>
Acked the series
Frediano
> ---
> v2: Simplify even further.
> v3: Add a commit message about the removal of unused code, do not group
> static and public functions
> ---
> src/main.c | 8 +-------
> src/options.c | 51 +++++++++++++++++++++++----------------------------
> src/options.h | 5 +----
> 3 files changed, 25 insertions(+), 39 deletions(-)
>
> diff --git a/src/main.c b/src/main.c
> index f18311c9..cecadc8d 100644
> --- a/src/main.c
> +++ b/src/main.c
> @@ -67,13 +67,7 @@ int main(int argc, char *argv[])
> ** Parse arguments
> **----------------------------------------------------------------------*/
> options_init(&session.options);
> - options_handle_user_config(argc, argv, &session.options);
> - options_from_config(&session.options);
> - rc = options_parse_arguments(argc, argv, &session.options);
> - if (rc)
> - goto exit;
> -
> - rc = options_process_io(&session.options);
> + rc = options_load(&session.options, argc, argv);
> if (rc)
> goto exit;
>
> diff --git a/src/options.c b/src/options.c
> index cff4ac17..f57a902f 100644
> --- a/src/options.c
> +++ b/src/options.c
> @@ -160,7 +160,7 @@ static void usage(char *argv0)
> printf("%s [--minimize]\n", indent);
> }
>
> -int options_handle_ssl(options_t *options, const char *spec)
> +static int options_handle_ssl(options_t *options, const char *spec)
> {
> char *save = NULL;
> char *in = g_strdup(spec);
> @@ -202,7 +202,7 @@ int options_handle_ssl(options_t *options, const char
> *spec)
> return rc;
> }
>
> -void options_handle_ssl_file_options(options_t *options,
> +static void options_handle_ssl_file_options(options_t *options,
> GKeyFile *userkey, GKeyFile *systemkey)
> {
> options->ssl.enabled = bool_option(userkey, systemkey, "ssl",
> "enabled");
> @@ -214,17 +214,7 @@ void options_handle_ssl_file_options(options_t *options,
> string_option(&options->ssl.ciphersuite, userkey, systemkey, "ssl",
> "ciphersuite");
> }
>
> -void options_handle_user_config(int argc, char *argv[], options_t *options)
> -{
> - int i;
> - for (i = 1; i < argc - 1; i++)
> - if (strcmp(argv[i], "--config") == 0 || strcmp(argv[i], "-config")
> == 0) {
> - options->user_config_file = g_strdup(argv[i + 1]);
> - i++;
> - }
> -}
> -
> -int options_parse_arguments(int argc, char *argv[], options_t *options)
> +static int options_parse_arguments(int argc, char *argv[], options_t
> *options)
> {
> int rc;
> int longindex = 0;
> @@ -254,6 +244,7 @@ int options_parse_arguments(int argc, char *argv[],
> options_t *options)
> {0, 0, 0, 0}
> };
>
> + optind = 1; /* Allow reuse of this function */
> while (1) {
> rc = getopt_long_only(argc, argv, "", long_options, &longindex);
> if (rc == -1) {
> @@ -348,7 +339,7 @@ int options_parse_arguments(int argc, char *argv[],
> options_t *options)
> return rc;
> }
>
> -void options_from_config(options_t *options)
> +static void options_from_config(options_t *options)
> {
> GKeyFile *userkey = g_key_file_new();
> GKeyFile *systemkey = NULL;
> @@ -467,7 +458,7 @@ static int generate_password(options_t *options)
> return 0;
> }
>
> -int options_process_io(options_t *options)
> +static int options_process_io(options_t *options)
> {
> int rc;
> if (options->password_file) {
> @@ -487,6 +478,23 @@ int options_process_io(options_t *options)
> return 0;
> }
>
> +int options_load(options_t *options, int argc, char *argv[])
> +{
> + int rc;
> +
> + rc = options_parse_arguments(argc, argv, options);
> + if (rc == 0) {
> + options_from_config(options);
> + /* We parse command line arguments a second time to ensure
> + ** that command line options take precedence over config files */
> + rc = options_parse_arguments(argc, argv, options);
> + if (rc == 0)
> + rc = options_process_io(options);
> + }
> + return rc;
> +}
> +
> +
> int options_impossible_config(options_t *options)
> {
> if (options->spice_password)
> @@ -500,16 +508,3 @@ int options_impossible_config(options_t *options)
>
> return 1;
> }
> -
> -#if defined(OPTIONS_MAIN)
> -int main(int argc, char *argv[])
> -{
> - options_t options;
> -
> - options_init(&options);
> - options_parse_arguments(argc, argv, &options);
> - options_from_config(&options);
> - g_message("Options parsed");
> - options_free(&options);
> -}
> -#endif
> diff --git a/src/options.h b/src/options.h
> index 6155984b..e7cdece1 100644
> --- a/src/options.h
> +++ b/src/options.h
> @@ -73,11 +73,8 @@ typedef struct {
> ** Prototypes
> **--------------------------------------------------------------------------*/
> void options_init(options_t *options);
> -void options_handle_user_config(int argc, char *argv[], options_t *options);
> -int options_parse_arguments(int argc, char *argv[], options_t *options);
> -int options_process_io(options_t *options);
> void options_free(options_t *options);
> -void options_from_config(options_t *options);
> +int options_load(options_t *options, int argc, char *argv[]);
> int options_impossible_config(options_t *options);
>
> #endif
More information about the Spice-devel
mailing list