diff options
| author | Denys Vlasenko <dvlasenk@redhat.com> | 2011-02-25 15:55:44 +0100 |
|---|---|---|
| committer | Denys Vlasenko <dvlasenk@redhat.com> | 2011-02-25 15:55:44 +0100 |
| commit | c00b15ff52f89ada9770453580e5828fd466e9c5 (patch) | |
| tree | e17de93d9efda6ae58616b2debf9dce819919793 /src/lib | |
| parent | 2951be08071ebe14b69e2da92a67e7d0a844e89a (diff) | |
| download | abrt-c00b15ff52f89ada9770453580e5828fd466e9c5.tar.gz abrt-c00b15ff52f89ada9770453580e5828fd466e9c5.tar.xz abrt-c00b15ff52f89ada9770453580e5828fd466e9c5.zip | |
change stealing semantics from copy to move
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/abrt_dbus.c | 17 | ||||
| -rw-r--r-- | src/lib/abrt_dbus.h | 3 | ||||
| -rw-r--r-- | src/lib/dump_dir.c | 5 |
3 files changed, 21 insertions, 4 deletions
diff --git a/src/lib/abrt_dbus.c b/src/lib/abrt_dbus.c index 8843158b..5d8d861d 100644 --- a/src/lib/abrt_dbus.c +++ b/src/lib/abrt_dbus.c @@ -817,7 +817,7 @@ int32_t call_DeleteDebugDump(const char *dump_dir_name) return result; } -int connect_to_abrtd_and_call_DeleteDebugDump(const char *dump_dir_name) +static int connect_to_abrtd_and_call_DeleteDebugDump(const char *dump_dir_name) { DBusError err; dbus_error_init(&err); @@ -847,3 +847,18 @@ int connect_to_abrtd_and_call_DeleteDebugDump(const char *dump_dir_name) return ret; } + +int delete_dump_dir_possibly_using_abrtd(const char *dump_dir_name) +{ + /* Try to delete it ourselves */ + struct dump_dir *dd = dd_opendir(dump_dir_name, DD_OPEN_READONLY); + if (dd) + { + if (dd->locked) /* it is not readonly */ + return dd_delete(dd); + dd_close(dd); + } + + VERB1 log("Deleting '%s' via abrtd dbus call", dump_dir_name); + return connect_to_abrtd_and_call_DeleteDebugDump(dump_dir_name); +} diff --git a/src/lib/abrt_dbus.h b/src/lib/abrt_dbus.h index dd07cb0c..8f559980 100644 --- a/src/lib/abrt_dbus.h +++ b/src/lib/abrt_dbus.h @@ -88,7 +88,8 @@ int log_dbus_error(const char *msg, DBusError *err); int32_t call_DeleteDebugDump(const char *dump_dir_name); /* Connect to system bus, find abrtd, perform "DeleteDebugDump" call, close g_dbus_conn */ -int connect_to_abrtd_and_call_DeleteDebugDump(const char *dump_dir_name); +/* now static: int connect_to_abrtd_and_call_DeleteDebugDump(const char *dump_dir_name); */ +int delete_dump_dir_possibly_using_abrtd(const char *dump_dir_name); /* diff --git a/src/lib/dump_dir.c b/src/lib/dump_dir.c index 379e968e..3ba2f059 100644 --- a/src/lib/dump_dir.c +++ b/src/lib/dump_dir.c @@ -572,11 +572,12 @@ static int delete_file_dir(const char *dir, bool skip_lock_file) return r; } -void dd_delete(struct dump_dir *dd) +int dd_delete(struct dump_dir *dd) { - delete_file_dir(dd->dd_dir, /*skip_lock_file:*/ true); + int r = delete_file_dir(dd->dd_dir, /*skip_lock_file:*/ true); dd->locked = 0; /* delete_file_dir already removed .lock */ dd_close(dd); + return r; } static char *load_text_file(const char *path, unsigned flags) |
