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

Mike Rapoport rppt at linux.vnet.ibm.com
Wed May 9 17:17:51 MSK 2018


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)
+		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