#!/bin/sh
#
# (c) 2014 by zzzZZ for NI

PROG=$(basename $0)
devices="/tmp/devices.txt"
MOUNTBASE=/media

mountedevices() {
	sleep $1
	mdev -s
}

search4devices() {
test -e $devices && rm $devices
echo "$(mount | grep -E "/dev/sd|/dev/sr|/dev/mmcblk" | cut -d" " -f1,2,3)" > $devices.tmp 

while read line
do
	test "${line:0:1}" = "" && continue
	BLKID=$(blkid $(echo $line | cut -d" " -f1))
	eval ${BLKID#*:}
	echo "$line type $TYPE ($LABEL)," >> $devices
done < $devices.tmp
rm $devices.tmp

echo "~GSuche und Mounte neue Devices" >> $devices
}

device="firstrun"
while [ "$device" != "" ]; do
	(msgbox title="Mountpoints verwalten" popup="~cSuche Mountpoints..." cyclic=0) &
	search4devices
	killall msgbox
	device=$(msgbox title="Mountpoints verwalten" msg="~cVerf~ugbare Mountpoints" order=1 select="$(cat $devices)" echo=1)
	if [ "$device" != "" ]; then
		if [ "$(echo $device | cut -d" " -f1)" = "~GSuche" ]; then
			(msgbox popup="~cSuche nach neuen Devices. Bitte warten..." timeout=60 cyclic=0) &
			mountedevices 0
			#msgbox msg="~cSuche beendet." timeout=3
			killall msgbox
		else
			if [ "$(msgbox title="Best~atigung" msg="Mountpoint $(echo $device | cut -d" " -f3) aush~angen?" select="ja,nein" default=2 echo=1)" == "ja" ]; then
				(msgbox popup="~cbitte warten..." cyclic=0) &
				sync; sleep 3
				umount $(echo $device | cut -d" " -f3)
				rc=$?
				killall msgbox
				if [ "$rc" != "0" ]; then
					msgbox msg="Fehler beim umount. RC:$rc" timeout=10
				else
					rmdir $(echo $device | cut -d" " -f3)
					OLDPWD=$PWD
					cd $MOUNTBASE
					for i in *; do
						[ -L "$i" ] || continue
						TARGET=$(readlink "$i")
						if echo $device | cut -d" " -f3 | grep -E $TARGET > /dev/null; then
							rm "$i"
						fi
					done
					cd $OLDPWD
			
					if echo $device | grep -E "/dev/sr"; then
						if [ "$(msgbox title="Best~atigung" msg="Umount erfolgreich. ~nMedium auswerfen?" select="ja,nein" default=1 echo=1)" == "ja" ]; then
							eject -T $(echo $device | cut -d" " -f1)
							if [ "$(msgbox title="Best~atigung" msg="Schublade wieder schlie~zen und remount durchf~uhren?" select="ja,nein" default=1 echo=1)" == "ja" ]; then
								eject -t $(echo $device | cut -d" " -f1)
								mountedevices 10 &	#10 Sekunden sleep vor mdev sollte fuer das Laufwerk wohl reichen
								msgbox msg="~cVersuche $(echo $device | cut -d" " -f3) erneut zu mounten." timeout=3
							fi
						fi
					else
						msgbox msg="~cUmount erfolgreich." timeout=3
					fi
			
				fi
			fi
		fi
	fi
done

test -e $devices && rm $devices