[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