clean processdelete
authorLaurent MAZET <laurent.mazet@thalesgroup.com>
Wed, 15 Jan 2025 10:22:34 +0000 (11:22 +0100)
committerLaurent MAZET <laurent.mazet@thalesgroup.com>
Wed, 15 Jan 2025 10:22:34 +0000 (11:22 +0100)
fm.c
function.c
function.h

diff --git a/fm.c b/fm.c
index cd9f7e6e5b955685fff2afc1c150f1e0fa8bc62e..9afb23558994ff2a3d6d469e9360f49a16e946b1 100644 (file)
--- 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);
                     }
index 8082cb8e0ac8df276f9aba3248386d7d0069715c..44d2acc50c96532e4ec31346e857acd82d339140 100644 (file)
@@ -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: */
index 9735d110df590e212596a58e381eee77980f0a21..7f1dd05596fa60a1e7fff3c9b85b312db6a8a24e 100644 (file)
@@ -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__ */