cygwin-wrapper (2329B)
1 #!/bin/sh 2 # This Source Code Form is subject to the terms of the Mozilla Public 3 # License, v. 2.0. If a copy of the MPL was not distributed with this 4 # file, You can obtain one at http://mozilla.org/MPL/2.0/. 5 6 # 7 # Stupid wrapper to avoid win32 dospath/cygdrive issues 8 # Try not to spawn programs from within this file. If the stuff in here looks royally 9 # confusing, see bug: http://bugzilla.mozilla.org/show_bug.cgi?id=206643 10 # and look at the older versions of this file that are easier to read, but 11 # do basically the same thing 12 # 13 14 prog=$1 15 shift 16 if test -z "$prog"; then 17 exit 0 18 fi 19 20 # If $CYGDRIVE_MOUNT was not set in configure, give $mountpoint the results of mount -p 21 mountpoint=$CYGDRIVE_MOUNT 22 if test -z "$mountpoint"; then 23 mountpoint=`mount -p` 24 if test -z "$mountpoint"; then 25 print "Cannot determine cygwin mount points. Exiting" 26 exit 1 27 fi 28 fi 29 30 # Delete everything but "/cygdrive" (or other mountpoint) from mount=`mount -p` 31 mountpoint=${mountpoint#*/} 32 mountpoint=/${mountpoint%%[!A-Za-z0-9_]*} 33 mountpoint=${mountpoint%/} 34 35 args="" 36 up="" 37 if test "${prog}" = "-up"; then 38 up=1 39 prog=${1} 40 shift 41 fi 42 43 process=1 44 45 # Convert the mountpoint in parameters to Win32 filenames 46 # For instance: /cygdrive/c/foo -> c:/foo 47 for i in "${@}" 48 do 49 if test "${i}" = "-wrap"; then 50 process=1 51 else 52 if test "${i}" = "-nowrap"; then 53 process= 54 else 55 if test -n "${process}"; then 56 if test -n "${up}"; then 57 pathname=${i#-I[a-zA-Z]:/} 58 if ! test "${pathname}" = "${i}"; then 59 no_i=${i#-I} 60 driveletter=${no_i%%:*} 61 i=-I${mountpoint}/${driveletter}/${pathname} 62 fi 63 else 64 eval 'leader=${i%%'${mountpoint}'/[a-zA-Z]/*}' 65 if ! test "${leader}" = "${i}"; then 66 eval 'pathname=${i#'${leader}${mountpoint}'/[a-zA-Z]/}' 67 eval 'no_mountpoint=${i#'${leader}${mountpoint}'/}' 68 driveletter=${no_mountpoint%%/*} 69 i=${leader}${driveletter}:/${pathname} 70 fi 71 fi 72 fi 73 74 args="${args} ${i}" 75 fi 76 fi 77 done 78 79 exec $prog $args