[lvm-devel] dev-peter-config-profiles - refactor: factor out common part of the code to open and read config files

Peter Rajnoha prajnoha at fedoraproject.org
Wed Jun 26 14:55:39 UTC 2013


Gitweb:        http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=e09cffe14e6710ba3bb3598a6719ff3b2d70a440
Commit:        e09cffe14e6710ba3bb3598a6719ff3b2d70a440
Parent:        9233e6d0bb5b3b21cc67fd0baae3fb4cb099bdcb
Author:        Peter Rajnoha <prajnoha at redhat.com>
AuthorDate:    Tue Jun 25 12:25:23 2013 +0200
Committer:     Peter Rajnoha <prajnoha at redhat.com>
CommitterDate: Wed Jun 26 16:53:49 2013 +0200

refactor: factor out common part of the code to open and read config files

---
 lib/commands/toolcontext.c |   57 +++++++++++++++++++++++++------------------
 1 files changed, 33 insertions(+), 24 deletions(-)

diff --git a/lib/commands/toolcontext.c b/lib/commands/toolcontext.c
index 79c25a5..e0da663 100644
--- a/lib/commands/toolcontext.c
+++ b/lib/commands/toolcontext.c
@@ -528,11 +528,41 @@ static int _init_tags(struct cmd_context *cmd, struct dm_config_tree *cft)
 	return 1;
 }
 
+static struct dm_config_tree *_open_and_read_config_file(const char *config_file)
+{
+	struct dm_config_tree *cft;
+	struct stat info;
+
+	if (!(cft = config_file_open(config_file, 0))) {
+		log_error("config_tree allocation failed");
+		return NULL;
+	}
+
+	/* Is there a config file? */
+	if (stat(config_file, &info) == -1) {
+		if (errno == ENOENT)
+			return cft;
+		log_sys_error("stat", config_file);
+		goto bad;
+	}
+
+	log_very_verbose("Loading config file: %s", config_file);
+	if (!config_file_read(cft)) {
+		log_error("Failed to load config file %s", config_file);
+		goto bad;
+	}
+
+	return cft;
+bad:
+	config_file_destroy(cft);
+	return NULL;
+}
+
+
 static int _load_config_file(struct cmd_context *cmd, const char *tag)
 {
 	static char config_file[PATH_MAX] = "";
 	const char *filler = "";
-	struct stat info;
 	struct config_tree_list *cfl;
 
 	if (*tag)
@@ -549,32 +579,11 @@ static int _load_config_file(struct cmd_context *cmd, const char *tag)
 		return 0;
 	}
 
-	if (!(cfl->cft = config_file_open(config_file, 0))) {
-		log_error("config_tree allocation failed");
-		return 0;
-	}
-
-	/* Is there a config file? */
-	if (stat(config_file, &info) == -1) {
-		if (errno == ENOENT) {
-			dm_list_add(&cmd->config_files, &cfl->list);
-			goto out;
-		}
-		log_sys_error("stat", config_file);
-		config_file_destroy(cfl->cft);
-		return 0;
-	}
-
-	log_very_verbose("Loading config file: %s", config_file);
-	if (!config_file_read(cfl->cft)) {
-		log_error("Failed to load config file %s", config_file);
-		config_file_destroy(cfl->cft);
-		return 0;
-	}
+	if (!(cfl->cft = _open_and_read_config_file(config_file)))
+		return_0;
 
 	dm_list_add(&cmd->config_files, &cfl->list);
 
-      out:
 	if (*tag) {
 		if (!_init_tags(cmd, cfl->cft))
 			return_0;




More information about the lvm-devel mailing list