REPO_DB_FILE does not need to be an absolute path anymore so no need to
call realpath.

Signed-off-by: Xavier Chantry <[email protected]>
---
 scripts/repo-add.sh.in |   31 +++++++++++++++----------------
 1 files changed, 15 insertions(+), 16 deletions(-)

diff --git a/scripts/repo-add.sh.in b/scripts/repo-add.sh.in
index 6b10527..7a271c4 100644
--- a/scripts/repo-add.sh.in
+++ b/scripts/repo-add.sh.in
@@ -317,7 +317,7 @@ for arg in "$@"; do
                QUIET=1
        elif [ -z "$REPO_DB_FILE" ]; then
                # store absolute path to repo DB
-               REPO_DB_FILE=$($realpath "$arg")
+               REPO_DB_FILE="$arg"
                if [ -f "$REPO_DB_FILE" ]; then
                        if ! (bsdtar -tf "$REPO_DB_FILE" | grep -q "/desc"); 
then
                                error "$(gettext "Repository file '%s' is not a 
proper pacman database.")" "$REPO_DB_FILE"
@@ -359,27 +359,26 @@ done
 # if all operations were a success, re-zip database
 if [ $success -eq 1 ]; then
        msg "$(gettext "Creating updated database file '%s'")" "$REPO_DB_FILE"
-       pushd "$gstmpdir" 2>&1 >/dev/null
 
-       if [ -n "$(ls)" ]; then
-               [ -f "${REPO_DB_FILE}.old" ] && rm "${REPO_DB_FILE}.old"
-               [ -f "$REPO_DB_FILE" ] && mv "$REPO_DB_FILE" 
"${REPO_DB_FILE}.old"
-
-               case "$REPO_DB_FILE" in
-                       *tar.gz)  TAR_OPT="z" ;;
-                       *tar.bz2) TAR_OPT="j" ;;
-                       *) warning "$(gettext "'%s' does not have a valid 
archive extension.")" \
-                                  "$REPO_DB_FILE" ;;
-               esac
+       case "$REPO_DB_FILE" in
+               *tar.gz)  TAR_OPT="z" ;;
+               *tar.bz2) TAR_OPT="j" ;;
+               *) warning "$(gettext "'%s' does not have a valid archive 
extension.")" \
+               "$REPO_DB_FILE" ;;
+       esac
+
+       filename=$(basename "$REPO_DB_FILE")
 
-               bsdtar -c${TAR_OPT}f "$REPO_DB_FILE" *
+       pushd "$gstmpdir" 2>&1 >/dev/null
+       if [ -n "$(ls)" ]; then
+               bsdtar -c${TAR_OPT}f "$filename" *
        else
-               # we should only end up with an empty db after a remove of the 
last package in the database
                error "$(gettext "All packages have been removed from the 
database. Deleting '%s'.")" "$REPO_DB_FILE"
-               rm "$REPO_DB_FILE"
        fi
-
        popd 2>&1 >/dev/null
+
+       [ -f "$REPO_DB_FILE" ] && mv -f "$REPO_DB_FILE" "${REPO_DB_FILE}.old"
+       [ -f "$gstmpdir/$filename" ] && mv "$gstmpdir/$filename" "$REPO_DB_FILE"
 else
        msg "$(gettext "No packages modified, nothing to do.")"
 fi
-- 
1.6.1.3

_______________________________________________
pacman-dev mailing list
[email protected]
http://www.archlinux.org/mailman/listinfo/pacman-dev

Reply via email to