Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 03548297 authored by Ken Sumrall's avatar Ken Sumrall
Browse files

Do not exit early on errors when -f is specified

When running with the -f option, do not stop recursion or proccessing
command line args if an error occurs.  Continue trying to remove all
the items specified on the command line.  However, still return an
error status if some files could not be removed.

Change-Id: I83d66babe833da8a68aad68248647ba0601c5d32
parent 13495a1c
Loading
Loading
Loading
Loading
+11 −4
Original line number Diff line number Diff line
@@ -45,9 +45,11 @@ static int unlink_recursive(const char* name, int flags)
            continue;
        sprintf(dn, "%s/%s", name, de->d_name);
        if (unlink_recursive(dn, flags) < 0) {
            if (!(flags & OPT_FORCE)) {
                fail = 1;
                break;
            }
        }
        errno = 0;
    }
    /* in case readdir or unlink_recursive failed */
@@ -71,6 +73,7 @@ int rm_main(int argc, char *argv[])
    int ret;
    int i, c;
    int flags = 0;
    int something_failed = 0;

    if (argc < 2)
        return usage();
@@ -110,10 +113,14 @@ int rm_main(int argc, char *argv[])

        if (ret < 0) {
            fprintf(stderr, "rm failed for %s, %s\n", argv[i], strerror(errno));
            if (!(flags & OPT_FORCE)) {
                return -1;
            } else {
                something_failed = 1;
            }
        }
    }

    return 0;
    return something_failed;
}