summaryrefslogtreecommitdiffstats
path: root/src/lib
diff options
context:
space:
mode:
authorDenys Vlasenko <dvlasenk@redhat.com>2010-12-16 18:28:07 +0100
committerDenys Vlasenko <dvlasenk@redhat.com>2010-12-16 18:28:07 +0100
commit628fb1fbae2a9e3e8fc3add070bceb5557973029 (patch)
tree7e46ad228722cf5b6e7f4b54b9100d6cf638a135 /src/lib
parent93d5d8a317ec9294bbd6dcc6bd8baec0c2b63b1b (diff)
downloadabrt-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.c35
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;