#!/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
