On 07/12/2012 04:05 PM, Jiri Moskovcak wrote:
---
src/lib/abrt_sock.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/src/lib/abrt_sock.c b/src/lib/abrt_sock.c
index b2c9928..f4a5d77 100644
--- a/src/lib/abrt_sock.c
+++ b/src/lib/abrt_sock.c
@@ -62,6 +62,19 @@ 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)
{
+
+ struct stat stat_buf;
+ int res = stat(dump_dir_name, &stat_buf);
+ /* don't try to delete the dir if the stat fails */
+ if (res != 0)
+ {
+ if (errno == ENOENT)
+ {
+ error_msg(_("Directory '%s' doesn't exist"),
dump_dir_name);
+ }
+ return res;
+ }
+
/* Try to delete it ourselves */
struct dump_dir *dd = dd_opendir(dump_dir_name, DD_OPEN_READONLY);
if (dd)
You can just check for "if (errno == ENOENT || errno == ENOTDIR)"
after you see dd == NULL:
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);
}
else
{
if (errno == ENOENT || errno == ENOTDIR)
/* No such dir, no point in trying to talk over socket */
return;
}
VERB1 log("Deleting '%s' via abrtd", dump_dir_name);
return connect_to_abrtd_and_call_DeleteDebugDump(dump_dir_name);
}