While this is most likely the result of user error, as repo-remove
doesn't accept globs, using 'package*' as the pkgname will result in an
endless loop of the following message being printed:

  -> Removing existing entry 'package**'...

This happens because find_pkgentry() fails to account the case where
globbing fails and the expression is taken literally. Fix that by
checking the existence of the file before doing anything else.

Signed-off-by: Rafael Ascensão <[email protected]>
---
 scripts/repo-add.sh.in | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/scripts/repo-add.sh.in b/scripts/repo-add.sh.in
index 57413df5..123bb796 100644
--- a/scripts/repo-add.sh.in
+++ b/scripts/repo-add.sh.in
@@ -120,10 +120,12 @@ find_pkgentry() {
        local pkgentry
 
        for pkgentry in "$tmpdir/db/$pkgname"*; do
-               name=${pkgentry##*/}
-               if [[ ${name%-*-*} = $pkgname ]]; then
-                       echo $pkgentry
-                       return 0
+               if [[ -e $pkgentry ]]; then
+                       name=${pkgentry##*/}
+                       if [[ ${name%-*-*} = $pkgname ]]; then
+                               echo $pkgentry
+                               return 0
+                       fi
                fi
        done
        return 1
-- 
2.21.0

Reply via email to