diff options
author | Dani Moncayo <dmoncayo@gmail.com> | 2014-11-08 22:17:00 +0100 |
---|---|---|
committer | Dani Moncayo <dmoncayo@gmail.com> | 2014-11-08 22:17:00 +0100 |
commit | e7e61abaa9de9a7e8485d1fc52a5aa6ce112620e (patch) | |
tree | 407f048f0ff3cd66af66c52a9b843781b95f3eb8 /build-aux | |
parent | 929201eab134620e5ef79211897c93ba90518122 (diff) |
build-aux/msys-to-w32: always output absolute paths.
Diffstat (limited to 'build-aux')
-rwxr-xr-x | build-aux/msys-to-w32 | 35 |
1 files changed, 19 insertions, 16 deletions
diff --git a/build-aux/msys-to-w32 b/build-aux/msys-to-w32 index f8c3722288..1f9fda49ff 100755 --- a/build-aux/msys-to-w32 +++ b/build-aux/msys-to-w32 @@ -1,5 +1,5 @@ #!/bin/bash -# Convert a MSYS path list to Windows-native format. +# Convert a MSYS path list to absolute, Windows-native format. # Status is zero if successful, nonzero otherwise. # Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -25,20 +25,20 @@ usage="usage: ${me} PATHLIST" help="$usage or: ${me} OPTION -Convert a MSYS path list to Windows-native format. +Convert a MSYS path list to absolute, Windows-native format. PATHLIST should be a colon-separated list of MSYS paths, which will be written to the standard output after performing these transformations: 1. Discard empty paths. 2. Replace: '\' with '/', '//' with '/' and ':' with ';'. -3. Translate each path to Windows-native format. +3. Translate each path to absolute, Windows-native format. -Relative paths or paths starting with '%emacs_dir%' will be passed -verbatim to the standard output. +Paths starting with '%emacs_dir%' will be passed verbatim to the +standard output. -Each non existing absolute path will be translated by looking for its -deepest existing directory, which will be translated and the remainder +Each non existing path will be translated by looking for its deepest +existing directory, which will be translated and the remainder appended. Options: @@ -81,9 +81,6 @@ do if [ "${p:0:11}" = "%emacs_dir%" ] then w32p=$p - elif [ "${p:0:1}" != "/" ] - then - w32p=$p elif [ -d "$p" ] then w32p=$(cd "$p" && pwd -W) @@ -95,17 +92,23 @@ do p=${p//\/\///} p=${p%/} - p1=$p + p1=$p # last candidate tried while : do - p1=${p1%/*} - [ -z "$p1" ] && p1="/" && break - [ -d "$p1" ] && break + p2=${p1%/*} # next candidate to try + [ "$p2" = "$p1" ] && { + # No more candidates to try + echo "Invalid path '$p'." >&2 + exit 1 + } + [ -z "$p2" ] && p2="/" && break + [ -d "$p2" ] && break + p1=$p2 done # translate the existing part and append the rest - w32p=$(cd "${p1}" && pwd -W) - remainder=${p#$p1} + w32p=$(cd "${p2}" && pwd -W) + remainder=${p#$p2} w32p+=/${remainder#/} fi |