diff options
author | Jiri Moskovcak <jmoskovc@redhat.com> | 2011-02-17 15:44:20 +0100 |
---|---|---|
committer | Jiri Moskovcak <jmoskovc@redhat.com> | 2011-02-17 15:44:20 +0100 |
commit | 406b2cffd5e9120bea74ab01479039714ce9e2d5 (patch) | |
tree | d2bf7a52531a8b9071eeaa0c5ec0ab051bbe41ea | |
parent | 502c13505f5306f1c167de786c4bd4cb759a228b (diff) | |
download | abrt-406b2cffd5e9120bea74ab01479039714ce9e2d5.tar.gz abrt-406b2cffd5e9120bea74ab01479039714ce9e2d5.tar.xz abrt-406b2cffd5e9120bea74ab01479039714ce9e2d5.zip |
move steal_directory() into libreport
-rw-r--r-- | src/cli/CLI.cpp | 41 | ||||
-rw-r--r-- | src/include/abrtlib.h | 3 | ||||
-rw-r--r-- | src/lib/Makefile.am | 3 | ||||
-rw-r--r-- | src/lib/steal_directory.c | 41 | ||||
-rw-r--r-- | src/lib/steal_directory.h | 1 |
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); |