diff options
author | cls%seawood.org <devnull@localhost> | 2004-08-18 23:18:56 +0000 |
---|---|---|
committer | cls%seawood.org <devnull@localhost> | 2004-08-18 23:18:56 +0000 |
commit | 83ee4c186f568e2bf6721bcc9328a0520c65a4c8 (patch) | |
tree | 33994d56a626319af1db572184b49357d81e74cb | |
parent | 8de42a9c5d4f1f00fce38012037342ff602c92c8 (diff) | |
download | nspr-hg-83ee4c186f568e2bf6721bcc9328a0520c65a4c8.tar.gz |
Update comments and use enhanced cygwin-wrapper script for nspr & ldap.
Thanks to Brian Bober <netdragon@gmail.com> for the patch.
Bug #245918 r=cls
-rwxr-xr-x | build/cygwin-wrapper | 72 |
1 files changed, 62 insertions, 10 deletions
diff --git a/build/cygwin-wrapper b/build/cygwin-wrapper index 3da3c508..679f0a11 100755 --- a/build/cygwin-wrapper +++ b/build/cygwin-wrapper @@ -1,23 +1,75 @@ #!/bin/sh # # Stupid wrapper to avoid win32 dospath/cygdrive issues +# Try not to spawn programs from within this file. If the stuff in here looks royally +# confusing, see bug: http://bugzilla.mozilla.org/show_bug.cgi?id=206643 +# and look at the older versions of this file that are easier to read, but +# do basically the same thing # + prog=$1 shift if test -z "$prog"; then exit 0 fi -mountpoint=`mount -p | awk '{ if (/^\//) { print $1; exit } }'` + +# If $CYGDRIVE_MOUNT was not set in configure, give $mountpoint the results of mount -p +mountpoint=$CYGDRIVE_MOUNT if test -z "$mountpoint"; then - print "Cannot determine cygwin mount points. Exiting" - exit 1 + mountpoint=`mount -p` + if test -z "$mountpoint"; then + print "Cannot determine cygwin mount points. Exiting" + exit 1 + fi fi -mountpoint=`echo $mountpoint | sed 's|/$||'` -if test "$prog" = "-up"; then - prog=$1 - shift - args=`echo $* | sed -e "s|-I\([a-zA-Z]\):/|-I${mountpoint}/\1/|g;"` -else - args=`echo $* | sed -e "s|${mountpoint}/\([a-zA-Z]\)/|\1:/|g;"` + +# Delete everything but "/cygdrive" (or other mountpoint) from mount=`mount -p` +mountpoint=${mountpoint#*/} +mountpoint=/${mountpoint%%[!A-Za-z0-9_]*} +mountpoint=${mountpoint%/} + +args="" +up="" +if test "${prog}" = "-up"; then + up=1 + prog=${1} + shift fi + +process=1 + +# Convert the mountpoint in parameters to Win32 filenames +# For instance: /cygdrive/c/foo -> c:/foo +for i in "${@}" +do + if test "${i}" = "-wrap"; then + process=1 + else + if test "${i}" = "-nowrap"; then + process= + else + if test -n "${process}"; then + if test -n "${up}"; then + pathname=${i#-I[a-zA-Z]:/} + if ! test "${pathname}" = "${i}"; then + no_i=${i#-I} + driveletter=${no_i%%:*} + i=-I${mountpoint}/${driveletter}/${pathname} + fi + else + eval 'leader=${i%%'${mountpoint}'/[a-zA-Z]/*}' + if ! test "${leader}" = "${i}"; then + eval 'pathname=${i#'${leader}${mountpoint}'/[a-zA-Z]/}' + eval 'no_mountpoint=${i#'${leader}${mountpoint}'/}' + driveletter=${no_mountpoint%%/*} + i=${leader}${driveletter}:/${pathname} + fi + fi + fi + + args="${args} ${i}" + fi + fi +done + exec $prog $args |