[CRIU] [PATCH 2/3] criu/config: allow init_config properly handle -h/--help

Andrei Vagin avagin at virtuozzo.com
Thu May 10 00:08:35 MSK 2018


On Wed, May 09, 2018 at 05:17:51PM +0300, Mike Rapoport wrote:
> When config parsing was split into a separate part the handling of
> -h/--help option during init_config was broken. Fix it.
> 
> Signed-off-by: Mike Rapoport <rppt at linux.vnet.ibm.com>
> ---
>  criu/config.c          | 11 ++++++-----
>  criu/crtools.c         |  5 ++++-
>  criu/include/crtools.h |  5 +++--
>  3 files changed, 13 insertions(+), 8 deletions(-)
> 
> diff --git a/criu/config.c b/criu/config.c
> index 5ff433c..bfaa057 100644
> --- a/criu/config.c
> +++ b/criu/config.c
> @@ -184,16 +184,15 @@ static void init_configuration(int argc, char *argv[], int defaults_forbidden)
>  	}
>  }
>  
> -void init_config(int argc, char **argv, int *global_cfg_argc, int *user_cfg_argc)
> +int init_config(int argc, char **argv, int *global_cfg_argc, int *user_cfg_argc,
> +		bool *usage_error)
>  {
>  	int help_or_configs;
> -	bool usage_error;
>  
>  	help_or_configs = passed_help_or_defaults_forbidden(argc, argv);
>  	if (help_or_configs == 1) {
> -		usage_error = false;
> -		printf("goto usage: %d\n", usage_error);
> -		return;
> +		*usage_error = false;
> +		return 1;


>  	}
>  
>  	init_configuration(argc, argv, (help_or_configs == DEFAULT_CONFIGS_FORBIDDEN));
> @@ -201,4 +200,6 @@ void init_config(int argc, char **argv, int *global_cfg_argc, int *user_cfg_argc
>  		*global_cfg_argc = count_elements(global_conf);
>  	if (user_conf != NULL)
>  		*user_cfg_argc = count_elements(user_conf);
> +
> +	return 0;
>  }
> diff --git a/criu/crtools.c b/criu/crtools.c
> index d9645ad..6326797 100644
> --- a/criu/crtools.c
> +++ b/criu/crtools.c
> @@ -391,7 +391,10 @@ int main(int argc, char *argv[], char *envp[])
>  		return cr_service_work(atoi(argv[2]));
>  	}
>  
> -	init_config(argc, argv, &global_cfg_argc, &user_cfg_argc);
> +	ret = init_config(argc, argv, &global_cfg_argc, &user_cfg_argc,
> +			  &usage_error);
> +	if (ret)
		usage_error = false;

But I think we don't need this. We will detect the -h options, when we
will parse command line arguments.

> +		goto usage;
>  
>  	while (1) {
>  		idx = -1;
> diff --git a/criu/include/crtools.h b/criu/include/crtools.h
> index 234894f..5ffacb6 100644
> --- a/criu/include/crtools.h
> +++ b/criu/include/crtools.h
> @@ -32,8 +32,9 @@ extern int cr_lazy_pages(bool daemon);
>  extern int check_add_feature(char *arg);
>  extern void pr_check_features(const char *offset, const char *sep, int width);
>  
> -extern void init_config(int argc, char **argv,
> -			int *global_cfg_argc, int *user_cfg_argc);
> +extern int init_config(int argc, char **argv,
> +		       int *global_cfg_argc, int *user_cfg_argc,
> +		       bool *usage_error);
>  
>  #define PPREP_HEAD_INACTIVE	((struct pprep_head *)-1)
>  
> -- 
> 2.7.4
> 


More information about the CRIU mailing list