From f8dc1ef0c37bacd06113ee52189680c3c107f5a1 Mon Sep 17 00:00:00 2001 From: Laurent MAZET Date: Wed, 15 Jan 2025 11:22:34 +0100 Subject: [PATCH] clean processdelete --- fm.c | 8 ++++---- function.c | 23 +++++++++++++---------- function.h | 2 +- 3 files changed, 18 insertions(+), 15 deletions(-) diff --git a/fm.c b/fm.c index cd9f7e6..9afb235 100644 --- a/fm.c +++ b/fm.c @@ -329,11 +329,11 @@ int main (int argc, char *argv[]) current = list[panel]->tab + i; if (current->selected) { char *src = strdupcat (dirname[panel], SEPARATOR, current->name, NULL); - if (processdelete (src) != 0) { - char *buf = strdupcat ("Can't delete '", src, "'", NULL); - msgwindow (buf, winscreen, 0); + char *msg = processdelete (src); + if (msg) { + msgwindow (msg, winscreen, 0); getch (); - free (buf); + free (msg); } free (src); } diff --git a/function.c b/function.c index 8082cb8..44d2acc 100644 --- a/function.c +++ b/function.c @@ -452,9 +452,9 @@ char *processcopy (char *dest, char *src) return msg; } -int processdelete (char *name) +char *processdelete (char *name) { - int rc = 0; + char *msg = NULL; struct stat sb; if (STAT (name, &sb) == 0) { @@ -463,33 +463,36 @@ int processdelete (char *name) if (dir != NULL) { struct dirent *dp = NULL; - while (((dp = readdir (dir)) != NULL) && (rc == 0)) { + while (((dp = readdir (dir)) != NULL) && (msg == NULL)) { if ((strcmp (dp->d_name, ".") == 0) || (strcmp (dp->d_name, "..") == 0)) { continue; } char *next = strdupcat (name, SEPARATOR, dp->d_name, NULL); - rc = processdelete (next); + msg = processdelete (next); free (next); } closedir (dir); - if (rc == 0) { + if (msg == NULL) { VERBOSE (DEBUG, fprintf (stderr, "rmdir '%s'\n", name)); - rc = rmdir (name); + if (rmdir (name) != 0) { + msg = strdupcat ("Can't remove directory '", name, "'"); + } } } else { - rc = 1; + msg = strdupcat ("Can't open directory '", name, "'"); } } else { VERBOSE (DEBUG, fprintf (stderr, "unlink '%s'\n", name)); - rc = unlink (name); + if (unlink (name) != 0) { + msg = strdupcat ("Can't remove file '", name, "'"); + } } } else { VERBOSE (ERROR, fprintf (stderr, "can't stat on file '%s'\n", name)); exit (1); - rc = 1; } - return rc; + return msg; } /* vim: set ts=4 sw=4 et: */ diff --git a/function.h b/function.h index 9735d11..7f1dd05 100644 --- a/function.h +++ b/function.h @@ -49,7 +49,7 @@ int filterlist (list_t *list, char *regex); char *processcopy (char *dest, char *src); -int processdelete (char *src); +char *processdelete (char *src); #endif /* __FUNCTION_H__ */ -- 2.30.2