summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcls%seawood.org <devnull@localhost>2004-08-18 23:18:56 +0000
committercls%seawood.org <devnull@localhost>2004-08-18 23:18:56 +0000
commit83ee4c186f568e2bf6721bcc9328a0520c65a4c8 (patch)
tree33994d56a626319af1db572184b49357d81e74cb
parent8de42a9c5d4f1f00fce38012037342ff602c92c8 (diff)
downloadnspr-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-xbuild/cygwin-wrapper72
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