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);
}
return msg;
}
-int processdelete (char *name)
+char *processdelete (char *name)
{
- int rc = 0;
+ char *msg = NULL;
struct stat sb;
if (STAT (name, &sb) == 0) {
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: */