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);
}