From 628fb1fbae2a9e3e8fc3add070bceb5557973029 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Thu, 16 Dec 2010 18:28:07 +0100 Subject: create_dump_dir: add base_dir_name parameter. This makes python wrappers more usable. src/report-python/test_full demonstrates how pyhton programs can run reporting now. Signed-off-by: Denys Vlasenko --- src/lib/create_dump_dir.c | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) (limited to 'src/lib') diff --git a/src/lib/create_dump_dir.c b/src/lib/create_dump_dir.c index 8735de27..2125dea4 100644 --- a/src/lib/create_dump_dir.c +++ b/src/lib/create_dump_dir.c @@ -19,11 +19,42 @@ #include "abrtlib.h" -struct dump_dir *create_dump_dir(crash_data_t *crash_data) +static struct dump_dir *try_dd_create(const char *base_dir_name, const char *dir_name) { - char *path = xasprintf(LOCALSTATEDIR"/run/abrt/tmp-%lu-%lu", (long)getpid(), (long)time(NULL)); + char *path = concat_path_file(base_dir_name, dir_name); struct dump_dir *dd = dd_create(path, getuid()); free(path); + return dd; +} + +struct dump_dir *create_dump_dir(crash_data_t *crash_data, const char *base_dir_name) +{ + char dir_name[sizeof("abrt-tmp-%lu-%lu") + sizeof(long)*3 * 2]; + sprintf(dir_name, "abrt-tmp-%lu-%lu", (long)getpid(), (long)time(NULL)); + + struct dump_dir *dd; + if (base_dir_name) + dd = try_dd_create(base_dir_name, dir_name); + else + { + /* Try /var/run/abrt */ + dd = try_dd_create(LOCALSTATEDIR"/run/abrt", dir_name); + /* Try $HOME/tmp */ + if (!dd) + { + char *home = getenv("HOME"); + if (home && home[0]) + { + home = concat_path_file(home, "tmp"); + /*mkdir(home, 0777); - do we want this? */ + dd = try_dd_create(home, dir_name); + free(home); + } + } + /* Try /tmp */ + if (!dd) + dd = try_dd_create("/tmp", dir_name); + } if (!dd) return NULL; -- cgit