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> --- scripts/repo-add.sh.in | 18 +++++++++++++++--- 1 files changed, 15 insertions(+), 3 deletions(-)
diff --git a/scripts/repo-add.sh.in b/scripts/repo-add.sh.in index b12188c..a967506 100644 --- a/scripts/repo-add.sh.in +++ b/scripts/repo-add.sh.in @@ -326,9 +326,21 @@ for arg in "$@"; do fi msg "$(gettext "Extracting database to a temporary location...")" bsdtar -xf "$REPO_DB_FILE" -C "$gstmpdir" - elif [ "$cmd" == "repo-remove" ]; then - error "$(gettext "Repository file '%s' was not found.")" "$REPO_DB_FILE" - exit 1 + else + case "$cmd" in + repo-remove) + error "$(gettext "Repository file '%s' was not found.")" "$REPO_DB_FILE" + exit 1 + ;; + 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" This seems scary to me- is there any reason to blow it away like this? It also makes the repo-add process non-atomic- someone could access
On Thu, Feb 26, 2009 at 2:06 PM, Xavier Chantry <shiningxc@gmail.com> wrote: the database and fail while you are adding 10 packages, correct?
+ ;; + esac fi else if [ "$cmd" == "repo-add" ]; then -- 1.6.1.3
Also agree with Allan's style comments, and I am not sure why vim indents like it does. -Dan