From 89819b3f9268062ee54c35a16876474414d94bf5 Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Sat, 14 Jun 2008 10:48:28 -0500 Subject: repo-*: allow use of readlink or realpath Linux coreutils provides readlink, and BSD systems tend to have realpath available. Both commands provide similar functionality but of course have different names. Add a check for either and use what is available. While doing this, also unify some of the differences that have cropped up between repo-add and repo-remove. Signed-off-by: Dan McGee --- scripts/repo-add.sh.in | 23 +++++++++++++++++------ scripts/repo-remove.sh.in | 20 ++++++++++++++++---- 2 files changed, 33 insertions(+), 10 deletions(-) diff --git a/scripts/repo-add.sh.in b/scripts/repo-add.sh.in index e90f0e89..53a7da50 100644 --- a/scripts/repo-add.sh.in +++ b/scripts/repo-add.sh.in @@ -103,8 +103,8 @@ write_list_entry() { # arg1 - path to delta db_write_delta() { - # blank out all variables and set deltafile - local deltafile=$(readlink -f "$1") + # blank out all variables and set deltafile to absolute path + local deltafile=$($realpath "$1") local filename=$(basename "$deltafile") local deltavars pkgname fromver tover arch csize md5sum @@ -134,8 +134,8 @@ db_write_delta() # arg1 - path to package db_write_entry() { - # blank out all variables and set pkgfile - local pkgfile=$(readlink -f "$1") + # blank out all variables and set pkgfile to an absolute path + local pkgfile=$($realpath "$1") local pkgname pkgver pkgdesc url builddate packager csize size \ group depend backup license replaces provides conflict force \ _groups _depends _backups _licenses _replaces _provides _conflicts \ @@ -278,6 +278,16 @@ if [ $# -lt 2 ]; then exit 1 fi +# check for and store the name of a realpath-like program +if [ $(type -t realpath) ]; then + realpath='realpath' +elif [ $(type -t readlink) ]; then + realpath='readlink -f' +else + error "$(gettext "Either realpath or readlink are required by repo-add.")" + exit 1 # $E_MISSING_PROGRAM +fi + # source system and user makepkg.conf if [ -r "$confdir/makepkg.conf" ]; then source "$confdir/makepkg.conf" @@ -304,7 +314,8 @@ for arg in "$@"; do elif [ "$arg" == "--quiet" -o "$arg" == "-q" ]; then QUIET=1 elif [ -z "$REPO_DB_FILE" ]; then - REPO_DB_FILE=$(readlink -f "$arg") + # store absolute path to repo DB + REPO_DB_FILE=$($realpath "$arg") if ! test_repo_db_file; then error "$(gettext "Repository file '%s' is not a proper pacman database.")" "$REPO_DB_FILE" exit 1 @@ -331,7 +342,7 @@ done # if all operations were a success, re-zip database if [ $success -eq 1 ]; then - msg "$(gettext "Creating updated database file %s")" "$REPO_DB_FILE" + msg "$(gettext "Creating updated database file '%s'")" "$REPO_DB_FILE" pushd "$gstmpdir" 2>&1 >/dev/null if [ -n "$(ls)" ]; then diff --git a/scripts/repo-remove.sh.in b/scripts/repo-remove.sh.in index 08786eec..a650bcfd 100644 --- a/scripts/repo-remove.sh.in +++ b/scripts/repo-remove.sh.in @@ -126,6 +126,16 @@ if [ $# -lt 2 ]; then exit 1 fi +# check for and store the name of a realpath-like program +if [ $(type -t realpath) ]; then + realpath='realpath' +elif [ $(type -t readlink) ]; then + realpath='readlink -f' +else + error "$(gettext "Either realpath or readlink are required by repo-add.")" + exit 1 # $E_MISSING_PROGRAM +fi + # source system and user makepkg.conf if [ -r "$confdir/makepkg.conf" ]; then source "$confdir/makepkg.conf" @@ -149,9 +159,10 @@ for arg in "$@"; do if [ "$arg" == "--quiet" -o "$arg" == "-q" ]; then QUIET=1 elif [ -z "$REPO_DB_FILE" ]; then - REPO_DB_FILE=$(readlink -f "$arg") + # store absolute path to repo DB + REPO_DB_FILE=$($realpath "$arg") if ! test_repo_db_file; then - error "$(gettext "Repository file '%s' is not a proper pacman database.")\n" "$REPO_DB_FILE" + error "$(gettext "Repository file '%s' is not a proper pacman database.")" "$REPO_DB_FILE" exit 1 elif [ -f "$REPO_DB_FILE" ]; then msg "$(gettext "Extracting database to a temporary location...")" @@ -170,12 +181,13 @@ done # if all operations were a success, re-zip database if [ $success -eq 1 ]; then - msg "$(gettext "Creating updated database file '%s'...")" "$REPO_DB_FILE" + msg "$(gettext "Creating updated database file '%s'")" "$REPO_DB_FILE" pushd "$gstmpdir" 2>&1 >/dev/null if [ -n "$(ls)" ]; then [ -f "${REPO_DB_FILE}.old" ] && rm "${REPO_DB_FILE}.old" [ -f "$REPO_DB_FILE" ] && mv "$REPO_DB_FILE" "${REPO_DB_FILE}.old" + case "$DB_COMPRESSION" in gz) TAR_OPT="z" ;; bz2) TAR_OPT="j" ;; @@ -194,6 +206,6 @@ else fi # remove the temp directory used to unzip -[ -d "$gstmpdir" ] && rm -rf $gstmpdir +[ -d "$gstmpdir" ] && rm -rf "$gstmpdir" # vim: set ts=2 sw=2 noet: -- cgit v1.2.3-70-g09d2