[lttng-dev] [PATCH 1/3] Improve delete of configuration

Francis Giraldeau francis.giraldeau at gmail.com
Mon May 28 13:00:26 EDT 2012


Adding functions to encapsulate the configuration delete. Test if path to
configuration exists before attempting to remove it.

Signed-off-by: Francis Giraldeau <francis.giraldeau at gmail.com>
---
 src/bin/lttng/conf.c |   36 +++++++++++++++++++++++++++++++++++-
 src/bin/lttng/conf.h |    2 ++
 2 files changed, 37 insertions(+), 1 deletion(-)

diff --git a/src/bin/lttng/conf.c b/src/bin/lttng/conf.c
index 6f290b7..fe6898e 100644
--- a/src/bin/lttng/conf.c
+++ b/src/bin/lttng/conf.c
@@ -154,15 +154,49 @@ void config_destroy(char *path)
 		return;
 	}
 
+	if (!config_exists(config_path))
+		goto done;
+
+	DBG("Removing %s\n", config_path);
 	ret = remove(config_path);
 	if (ret < 0) {
 		perror("remove config file");
 	}
-
+done:
 	free(config_path);
 }
 
 /*
+ *  config_destroy_default
+ *
+ *  Destroys the default config
+ */
+
+void config_destroy_default(void)
+{
+	char *path = config_get_default_path();
+	if (path == NULL)
+		return;
+	config_destroy(path);
+}
+
+/*
+ *  config_exists
+ *
+ *  Returns 1 if config exists, 0 otherwise
+ */
+int config_exists(const char *path)
+{
+	int ret;
+	struct stat info;
+
+	ret = stat(path, &info);
+	if (ret < 0)
+		return 0;
+	return S_ISREG(info.st_mode) || S_ISDIR(info.st_mode);
+}
+
+/*
  *  config_read_session_name
  *
  *  Returns the session name from the config file.
diff --git a/src/bin/lttng/conf.h b/src/bin/lttng/conf.h
index 1c471da..2cb04b0 100644
--- a/src/bin/lttng/conf.h
+++ b/src/bin/lttng/conf.h
@@ -21,6 +21,8 @@
 #define CONFIG_FILENAME ".lttngrc"
 
 void config_destroy(char *path);
+void config_destroy_default(void);
+int config_exists(const char *path);
 int config_init(char *path);
 int config_add_session_name(char *path, char *name);
 char *config_get_default_path(void);
-- 
1.7.9.5




More information about the lttng-dev mailing list