On Tue, Jun 3, 2008 at 4:53 PM, Antonio Huete Jimenez
<[EMAIL PROTECTED]> wrote:
> repo-add uses readlink -f in linux to find out file's real path. readlink is
> part of coreutils.
> I've found that readlink in BSD don't support -f option so we need to use
> realpath instead.
>
> Attached you can find a mini-patch.

Please use inline patches next time so we can more easily comment
inline, thanks. You may want to even read up on using git-send-email.
I've marked my comments below with **** since I don't have the benefit
of reply markers. Besides what I mention below, I think this patch
looks OK and we can apply this. I would also ask that you add it to
repo-remove and replace the use of readlink there as well with a call
to fullpath.

>From b1142fa6d3b182161d6348bf0942eb3b94f40e3a Mon Sep 17 00:00:00 2001
From: Antonio Huete Jimenez <[EMAIL PROTECTED]>
Date: Tue, 3 Jun 2008 00:26:06 +0200
Subject: [PATCH] Let repo-add to use realpath instead readlink in BSD
environments.

---
 po/es.po               |    3 +++
 scripts/repo-add.sh.in |   18 +++++++++++++++---
 2 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/po/es.po b/po/es.po
index e53b92b..5a98562 100644
--- a/po/es.po
+++ b/po/es.po
@@ -1780,6 +1780,9 @@ msgstr "%s no fue encontrado"
 msgid "could not find %s-%s-%s-%s%s - aborting"
 msgstr "No se pudo encontrar %s-%s-%s-%s%s - abortando"

+msgid "Couldn't use neither realpath nor readlink to canonicalize."
+msgstr "Fallo al encontrar realpath o readlink."
+
 #~ msgid "error: failed to add target '%s' (%s)"
 #~ msgstr "error: fallo al procesar '%s' (%s)"

diff --git a/scripts/repo-add.sh.in b/scripts/repo-add.sh.in
index e90f0e8..9b77e39 100644
--- a/scripts/repo-add.sh.in
+++ b/scripts/repo-add.sh.in
@@ -31,6 +31,18 @@ REPO_DB_FILE=""
 # ensure we have a sane umask set
 umask 0022

+fullpath() {
+       if type -p realpath; then
+               realpath "$@"
+               echo soy de realpath
****Hmm? Debugging stuff?
+       elif type -p readlink; then
+               readlink -f "$@"
+               echo soy de readlink
+       else
+               error "$(gettext "Couldn't use neither realpath nor readlink to
canonicalize.")"
***Either the realpath or readlink utility is required!
and probaly also add an exit 1 here?
+       fi
+}
+
 msg() {
        [ $QUIET -ne 0 ] && return
        local mesg=$1; shift
@@ -104,7 +116,7 @@ write_list_entry() {
 db_write_delta()
 {
        # blank out all variables and set deltafile
-       local deltafile=$(readlink -f "$1")
+       local deltafile=$(fullpath "$1")
        local filename=$(basename "$deltafile")
        local deltavars pkgname fromver tover arch csize md5sum

@@ -135,7 +147,7 @@ db_write_delta()
 db_write_entry()
 {
        # blank out all variables and set pkgfile
-       local pkgfile=$(readlink -f "$1")
+       local pkgfile=$(fullpath "$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 \
@@ -304,7 +316,7 @@ 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")
+               REPO_DB_FILE=$(fullpath -f "$arg")
**** You left the -f arg in here by accident I'm assuming.

                if ! test_repo_db_file; then
                        error "$(gettext "Repository file '%s' is not a proper 
pacman
database.")" "$REPO_DB_FILE"
                        exit 1
-- 
1.5.5.1

_______________________________________________
pacman-dev mailing list
[email protected]
http://archlinux.org/mailman/listinfo/pacman-dev

Reply via email to