#!/bin/sh
#
MIDIPIX_PATH_DEFAULTS="/c/Midipix /z";

if [ "${1}" = -h ]; then
        echo "usage: $0 [drive_letter [dirname]]";
        exit 1;
elif [ ${#} -eq 0 ]; then
for MIDIPIX_PATH in ${MIDIPIX_PATH_DEFAULTS}; do
	[ -d /cygdrive${MIDIPIX_PATH} ] || continue;
	MIDIPIX_DRIVE=${MIDIPIX_PATH#/};
	MIDIPIX_DRIVE=${MIDIPIX_DRIVE%%/*};
	MIDIPIX_PNAME=${MIDIPIX_PATH#/${MIDIPIX_DRIVE}};
	MIDIPIX_PNAME=${MIDIPIX_PNAME#/};
	break;
done;
else
	MIDIPIX_DRIVE="${1}"; MIDIPIX_PNAME="${2}";
	if [ "${MIDIPIX_DRIVE#*[ 	]*}" != "${MIDIPIX_DRIVE}" ]\
	|| [ "${MIDIPIX_PNAME#*[ 	]*}" != "${MIDIPIX_PNAME}" ]; then
		echo "Error: drive_letter/dirname must not contain SP (\` ') or VT (\`\\\t') characters.";
		exit 1;
	fi;
fi;
MIDIPIX_PATH=/${MIDIPIX_DRIVE}${MIDIPIX_PNAME:+/${MIDIPIX_PNAME}};
if [ ! -d /cygdrive${MIDIPIX_PATH} ]; then
	echo "Error: Midipix path non-existent or invalid (\`${MIDIPIX_PATH}'.)";
	exit 1;
else
	if [ -f /cygdrive${MIDIPIX_PATH}/bin/libpsxscl.log ]; then
		echo Found libpsxscl.log, copying to /cygdrive${MIDIPIX_PATH}/bin/libpsxscl.last.
		cp /cygdrive${MIDIPIX_PATH}/bin/libpsxscl.log	\
			/cygdrive${MIDIPIX_PATH}/bin/libpsxscl.last;
	fi;
	echo "Midipix drive letter.....: ${MIDIPIX_DRIVE}";
	echo "Midipix pathname.........: ${MIDIPIX_PNAME}";
	echo "Absolute Midipix pathname: ${MIDIPIX_PATH}";
	echo --------------------------------------------------------
	echo WARNING: The cygdrive path prefix will be changed to /
	echo whilst the Midipix shell window is running. It will be
	echo reset to its original value of /cygdrive after it exits.
	echo --------------------------------------------------------
	mintty -h always -e /bin/sh -c "
		set -o errexit; stty raw -echo;
		mount --change-cygdrive-prefix /;
		cd ${MIDIPIX_PATH}/native/bin;
		export PATH=${MIDIPIX_PATH}/native/bin:${MIDIPIX_PATH}/native/lib;
		./ntctty.exe -e chroot //${MIDIPIX_PATH#/}/native /bin/bash";
	echo --------------------------------------------------------
	echo Resetting cygdrive path prefix to /.
	echo --------------------------------------------------------
	mount --change-cygdrive-prefix /cygdrive;
fi;
