Improve Cygwin path-stripping code (fixes issue #67)
authorSebastian Schuberth <sschuberth@gmail.com>
Wed, 24 Oct 2012 13:19:16 +0000 (24 15:19 +0200)
committerSebastian Schuberth <sschuberth@gmail.com>
Sun, 28 Oct 2012 14:00:19 +0000 (28 15:00 +0100)
Using awk to strip any Cygwin path creates a null-byte at the end of the
string. This makes the last item in the path unresolvable and causes child
processes that are not dependent on msys-1.0.dll to inherit POSIX rather
than Windows paths. Fix this by not using awk at all.

Reported-by: John Stevenson <john-stevenson@blueyonder.co.uk>
Signed-off-by: Sebastian Schuberth <sschuberth@gmail.com>
etc/profile

index 1f3a001..4439ed6 100644 (file)
@@ -24,9 +24,7 @@ fi
 # strip out cygwin paths from PATH
 case "$PATH" in
 */cygwin/*)
-       PATH="$(awk -vRS=: -vORS=: '!/cygwin/' <<< "$PATH")"
-       # awk always adds a trailing separator
-       export PATH="${PATH%:}"
+       export PATH=$(p=$(echo $PATH | tr ":" "\n" | grep -vi "/cygwin/" | tr "\n" ":"); echo ${p%:})
        ;;
 esac