| #!/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 |
| |
| # If $CYGDRIVE_MOUNT was not set in configure, give $mountpoint the results of mount -p |
| mountpoint=$CYGDRIVE_MOUNT |
| if test -z "$mountpoint"; then |
| mountpoint=`mount -p` |
| if test -z "$mountpoint"; then |
| print "Cannot determine cygwin mount points. Exiting" |
| exit 1 |
| fi |
| fi |
| |
| # 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 |