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

Signed-off-by: Francis Giraldeau <[email protected]>
---
 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


_______________________________________________
lttng-dev mailing list
[email protected]
http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev

Reply via email to