[pacman-dev] [PATCH 2/6] repo-add: fail early if repo can not be created

Dan McGee dpmcgee at gmail.com
Sat Feb 28 16:37:21 EST 2009


On Thu, Feb 26, 2009 at 2:06 PM, Xavier Chantry <shiningxc at gmail.com> 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 <shiningxc at 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
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


More information about the pacman-dev mailing list