index : pacman | |
Archlinux32 fork of pacman | gitolite user |
summaryrefslogtreecommitdiff |
author | Dan McGee <dan@archlinux.org> | 2009-09-23 21:15:53 -0500 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2009-09-23 21:15:53 -0500 |
commit | 7f14f185a2d05650e1f99f4ec40d60b597e8b0c7 (patch) | |
tree | 4790c21396586a7f61f7d78350bdba0e35e18c43 /scripts/repo-add.sh.in | |
parent | 20aa17c276c35e08c7a8e2aa20410b99a20f8129 (diff) |
-rw-r--r-- | scripts/repo-add.sh.in | 16 |
diff --git a/scripts/repo-add.sh.in b/scripts/repo-add.sh.in index a1e5f7f4..c8380c4e 100644 --- a/scripts/repo-add.sh.in +++ b/scripts/repo-add.sh.in @@ -306,9 +306,14 @@ check_repo_db() fi if [ -f "$REPO_DB_FILE" ]; then - if ! bsdtar -tqf "$REPO_DB_FILE" '*/desc' 2>&1 >/dev/null; then - error "$(gettext "Repository file '%s' is not a proper pacman database.")" "$REPO_DB_FILE" - exit 1 + # there are two situations we can have here- a DB with some entries, + # or a DB with no contents at all. + if ! bsdtar -tqf "$REPO_DB_FILE" '*/desc' >/dev/null 2>&1; then + # check empty case + if [ -n "$(bsdtar -tqf "$REPO_DB_FILE" '*' 2>/dev/null)" ]; then + error "$(gettext "Repository file '%s' is not a proper pacman database.")" "$REPO_DB_FILE" + exit 1 + fi fi msg "$(gettext "Extracting database to a temporary location...")" bsdtar -xf "$REPO_DB_FILE" -C "$tmpdir" @@ -484,8 +489,9 @@ if [ $success -eq 1 ]; then if [ -n "$(ls)" ]; then bsdtar -c${TAR_OPT}f "$filename" * else - # the database will be moved to .old below, and there will be no new one to replace it - error "$(gettext "All packages have been removed from the database. Deleting '%s'.")" "$REPO_DB_FILE" + # we have no packages remaining? zip up some emptyness + warning "$(gettext "No packages remain, creating empty database.")" + bsdtar -c${TAR_OPT}f "$filename" -T /dev/null fi cd "$startdir" |