com_rm(): In force mode, don't complain if no paths matched.
authorAndre Noll <maan@tuebingen.mpg.de>
Mon, 31 Aug 2015 20:00:17 +0000 (22:00 +0200)
committerAndre Noll <maan@tuebingen.mpg.de>
Mon, 31 Aug 2015 20:00:17 +0000 (22:00 +0200)
The documentation says that the rm command stays silent and exits
successfully if none of the given patterns matched any path of the
audio file table.

This was true until commit b02b7155 (com_rm(): Return negative on
errors), which effectively made -f a no-op by mistake. Since then
the rm command prints an error message and fails if there is no
match.

This patch restores the documented behaviour.

aft.c

diff --git a/aft.c b/aft.c
index bfa4ce1ab7e29f56a418abdeb574aa4526e29c57..a5da1a929e8c5c34920aab8d798d1a7f64cb3e68 100644 (file)
--- a/aft.c
+++ b/aft.c
@@ -2150,9 +2150,10 @@ static int com_rm_callback(struct afs_callback_arg *aca)
        ret = for_each_matching_row(&pmd);
        if (ret < 0)
                goto out;
-       if (pmd.num_matches == 0)
-               ret = -E_NO_MATCH;
-       else if (flags & RM_FLAG_VERBOSE)
+       if (pmd.num_matches == 0) {
+               if (!(flags & RM_FLAG_FORCE))
+                       ret = -E_NO_MATCH;
+       } else if (flags & RM_FLAG_VERBOSE)
                para_printf(&aca->pbout, "removed %u file(s)\n",
                        pmd.num_matches);
 out: