diff options
author | Denys Vlasenko <dvlasenk@redhat.com> | 2010-12-16 18:28:07 +0100 |
---|---|---|
committer | Denys Vlasenko <dvlasenk@redhat.com> | 2010-12-16 18:28:07 +0100 |
commit | 628fb1fbae2a9e3e8fc3add070bceb5557973029 (patch) | |
tree | 7e46ad228722cf5b6e7f4b54b9100d6cf638a135 /src/lib | |
parent | 93d5d8a317ec9294bbd6dcc6bd8baec0c2b63b1b (diff) | |
download | abrt-628fb1fbae2a9e3e8fc3add070bceb5557973029.tar.gz abrt-628fb1fbae2a9e3e8fc3add070bceb5557973029.tar.xz abrt-628fb1fbae2a9e3e8fc3add070bceb5557973029.zip |
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 <dvlasenk@redhat.com>
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/create_dump_dir.c | 35 |
1 files changed, 33 insertions, 2 deletions
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; |