summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJiri Moskovcak <jmoskovc@redhat.com>2011-02-17 15:44:20 +0100
committerJiri Moskovcak <jmoskovc@redhat.com>2011-02-17 15:44:20 +0100
commit406b2cffd5e9120bea74ab01479039714ce9e2d5 (patch)
treed2bf7a52531a8b9071eeaa0c5ec0ab051bbe41ea
parent502c13505f5306f1c167de786c4bd4cb759a228b (diff)
downloadabrt-406b2cffd5e9120bea74ab01479039714ce9e2d5.tar.gz
abrt-406b2cffd5e9120bea74ab01479039714ce9e2d5.tar.xz
abrt-406b2cffd5e9120bea74ab01479039714ce9e2d5.zip
move steal_directory() into libreport
-rw-r--r--src/cli/CLI.cpp41
-rw-r--r--src/include/abrtlib.h3
-rw-r--r--src/lib/Makefile.am3
-rw-r--r--src/lib/steal_directory.c41
-rw-r--r--src/lib/steal_directory.h1
5 files changed, 47 insertions, 42 deletions
diff --git a/src/cli/CLI.cpp b/src/cli/CLI.cpp
index 2d236e5c..b0d6bdf6 100644
--- a/src/cli/CLI.cpp
+++ b/src/cli/CLI.cpp
@@ -198,47 +198,6 @@ static void print_crash_info(crash_data_t *crash_data, bool show_backtrace)
}
}
-static struct dump_dir *steal_directory(const char *base_dir, const char *dump_dir_name)
-{
- const char *base_name = strrchr(dump_dir_name, '/');
- if (base_name)
- base_name++;
- else
- base_name = dump_dir_name;
-
- struct dump_dir *dd_dst;
- unsigned count = 100;
- char *dst_dir_name = concat_path_file(base_dir, base_name);
- while (1)
- {
- dd_dst = dd_create(dst_dir_name, (uid_t)-1);
- free(dst_dir_name);
- if (dd_dst)
- break;
- if (--count == 0)
- {
- error_msg("Can't create new dump dir in '%s'", base_dir);
- goto ret;
- }
- struct timeval tv;
- gettimeofday(&tv, NULL);
- dst_dir_name = xasprintf("%s/%s.%u", base_dir, base_name, (int)tv.tv_usec);
- }
-
- log("Creating copy in '%s'", dd_dst->dd_dir);
- if (copy_file_recursive(dump_dir_name, dd_dst->dd_dir) < 0)
- {
- /* error. copy_file_recursive already emitted error message */
- /* Don't leave half-copied dir lying around */
- dd_delete(dd_dst);
- xfunc_die();
- }
-
- ret:
- return dd_dst;
-}
-
-
/* Program options */
enum
{
diff --git a/src/include/abrtlib.h b/src/include/abrtlib.h
index bb3dddc2..c5959b34 100644
--- a/src/include/abrtlib.h
+++ b/src/include/abrtlib.h
@@ -250,6 +250,9 @@ void parse_release_for_rhts(const char *pRelease, char **product, char **version
#define load_conf_file abrt_load_conf_file
bool load_conf_file(const char *pPath, map_string_h *settings, bool skipKeysWithoutValue);
+#define steal_directory abrt_steal_directory
+struct dump_dir *steal_directory(const char *base_dir, const char *dump_dir_name);
+
#ifdef __cplusplus
}
#endif
diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am
index aece0533..5879e2e3 100644
--- a/src/lib/Makefile.am
+++ b/src/lib/Makefile.am
@@ -41,7 +41,8 @@ libreport_la_SOURCES = \
abrt_types.c \
hooklib.c hooklib.h \
parse_release.c \
- parse_options.c parse_options.h
+ parse_options.c parse_options.h \
+ steal_directory.c steal_directory.h
libreport_la_CPPFLAGS = \
-Wall -Werror \
-I$(srcdir)/../include/report -I$(srcdir)/../include \
diff --git a/src/lib/steal_directory.c b/src/lib/steal_directory.c
new file mode 100644
index 00000000..25b84272
--- /dev/null
+++ b/src/lib/steal_directory.c
@@ -0,0 +1,41 @@
+#include "abrtlib.h"
+
+struct dump_dir *steal_directory(const char *base_dir, const char *dump_dir_name)
+{
+ const char *base_name = strrchr(dump_dir_name, '/');
+ if (base_name)
+ base_name++;
+ else
+ base_name = dump_dir_name;
+
+ struct dump_dir *dd_dst;
+ unsigned count = 100;
+ char *dst_dir_name = concat_path_file(base_dir, base_name);
+ while (1)
+ {
+ dd_dst = dd_create(dst_dir_name, (uid_t)-1);
+ free(dst_dir_name);
+ if (dd_dst)
+ break;
+ if (--count == 0)
+ {
+ error_msg("Can't create new dump dir in '%s'", base_dir);
+ goto ret;
+ }
+ struct timeval tv;
+ gettimeofday(&tv, NULL);
+ dst_dir_name = xasprintf("%s/%s.%u", base_dir, base_name, (int)tv.tv_usec);
+ }
+
+ log("Creating copy in '%s'", dd_dst->dd_dir);
+ if (copy_file_recursive(dump_dir_name, dd_dst->dd_dir) < 0)
+ {
+ /* error. copy_file_recursive already emitted error message */
+ /* Don't leave half-copied dir lying around */
+ dd_delete(dd_dst);
+ xfunc_die();
+ }
+
+ ret:
+ return dd_dst;
+}
diff --git a/src/lib/steal_directory.h b/src/lib/steal_directory.h
new file mode 100644
index 00000000..6b8e0620
--- /dev/null
+++ b/src/lib/steal_directory.h
@@ -0,0 +1 @@
+struct dump_dir *steal_directory(const char *base_dir, const char *dump_dir_name);