On Thu, Feb 26, 2009 at 2:06 PM, Xavier Chantry <[email protected]> wrote: > 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 <[email protected]> > --- > 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 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 _______________________________________________ pacman-dev mailing list [email protected] http://www.archlinux.org/mailman/listinfo/pacman-dev
