From bf0c9c3becbe1f4e42a836f8564b62c18529ef55 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Fri, 25 Oct 2013 20:31:44 +0200 Subject: turn makeabs into a proper cleanPath() normalize away all ".." and ".". fewer surprises that way. Change-Id: Iaa56c634aed5c8351966eaea7a73b85cb8235ead Reviewed-by: Joerg Bornemann Reviewed-by: Thiago Macieira --- config.tests/unix/makeabs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'config.tests/unix') diff --git a/config.tests/unix/makeabs b/config.tests/unix/makeabs index 4df26f769f..d2f65d19e9 100755 --- a/config.tests/unix/makeabs +++ b/config.tests/unix/makeabs @@ -15,13 +15,13 @@ elif [ "$OSTYPE" = "msys" -a -z "${FILE##[a-zA-Z]:[/\\]*}" ]; then true else RES="$PWD/$FILE" - test -d "$RES" && RES="$RES/" - RES=`echo "$RES" | sed "s,/\(\./\)*,/,g"` - -# note: this will only strip 1 /path/../ from RES, i.e. given /a/b/c/../../../, it returns /a/b/../../ - RES=`echo "$RES" | sed "s,\(/[^/]*/\)\.\./,/,g"` - - RES=`echo "$RES" | sed "s,//,/,g" | sed "s,/$,,"` fi +RES=$RES/ +while true; do + nres=`echo "$RES" | sed "s,/[^/][^/]*/\.\./,/,g; s,/\./,/,g"` + test x"$nres" = x"$RES" && break + RES=$nres +done +RES=`echo "$RES" | sed "s,//,/,g; s,/$,,"` echo $RES #return -- cgit v1.2.3