summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXavier Chantry <shiningxc@gmail.com>2009-02-26 18:16:23 +0100
committerDan McGee <dan@archlinux.org>2009-05-23 19:27:32 +0200
commit30e2496775897644fb397b32e8bdf0ae2f827216 (patch)
treef0a9dd7fe44526acaa56e3d057d4307fdfdd359a
parent35b9dfc3805821cb504231a5e5ce5a8694278fb7 (diff)
downloadpacman-30e2496775897644fb397b32e8bdf0ae2f827216.tar.gz
pacman-30e2496775897644fb397b32e8bdf0ae2f827216.tar.xz
repo-add: fail early if repo can not be created
Before this commit, the repo creation could fail after all packages have been added to the database. Now this will be detected before adding anything. Signed-off-by: Xavier Chantry <shiningxc@gmail.com> Signed-off-by: Dan McGee <dan@archlinux.org>
-rw-r--r--scripts/repo-add.sh.in14
1 files changed, 12 insertions, 2 deletions
diff --git a/scripts/repo-add.sh.in b/scripts/repo-add.sh.in
index 14bd00e4..7c12aaf2 100644
--- a/scripts/repo-add.sh.in
+++ b/scripts/repo-add.sh.in
@@ -312,10 +312,20 @@ check_repo_db()
msg "$(gettext "Extracting database to a temporary location...")"
bsdtar -xf "$REPO_DB_FILE" -C "$tmpdir"
else
- if [ "$cmd" == "repo-remove" ]; then
+ case "$cmd" in
+ repo-remove)
error "$(gettext "Repository file '%s' was not found.")" "$REPO_DB_FILE"
exit 1
- fi
+ ;;
+ repo-add)
+ # check if the file can be created (write permission, directory existence, etc)
+ if ! touch "$REPO_DB_FILE"; then
+ error "$(gettext "Repository file '%s' could not be created.")" "$REPO_DB_FILE"
+ exit 1
+ fi
+ rm -f "$REPO_DB_FILE"
+ ;;
+ esac
fi
}