#
# Desktop functions
#					Shuu Yamaguchi <shuu@dotAster.com>
# $Id: func_desktop,v 1.6 2004/04/07 14:34:45 shuu Exp shuu $

if [ -n "$MURASAKI_FUNC_DESKTOP" ];then
	return
fi
MURASAKI_FUNC_DESKTOP=1

. ${MURASAKI_SCRIPT_DIR}/func_lock

FSTAB=/etc/fstab
FSTAB_SAVE=${FSTAB}.murasaki_save
KEY="_etc_fstab"
GENERATE_HEADER='# auto-generated by murasaki'

# GNOME(nautilus)
# $DEV: hotplugable block device name
desktop_gnome_start()
{
	lock_file $KEY

	grep "$GENERATE_HEADER" ${FSTAB} >/dev/null
	if [ $? -ne 0 ];then
		echo "$GENERATE_HEADER" >> ${FSTAB}
	fi
	echo "/dev/${DEV}    ${MNT}    auto    noauto,users,exec,dev,suid    0 0" >> ${FSTAB}

	unlock_file $KEY
}

desktop_gnome_stop()
{
	lock_file $KEY

	TMPFILE=${FSTAB}.murasaki_tmp
	grep -v "^/dev/${DEV}" ${FSTAB} > ${TMPFILE}
	mv -f ${TMPFILE} ${FSTAB}

	HEAD_NUM=`grep -n "$GENERATE_HEADER" ${FSTAB} | cut -d: -f 1`
	FILE_NUM=`wc -l ${FSTAB} | cut -b 1-7`
	grep -v "^$GENERATE_HEADER" ${FSTAB} > ${TMPFILE}
	mv -f ${TMPFILE} ${FSTAB}

	unlock_file $KEY
}

# Only "GNONE" is supported now.
kind_of_desktop()
{
	DESKTOP_KIND="GNOME";
}

save_fstab()
{
	if [ ! -f ${FSTAB_SAVE} ];then
		lock_file $KEY

		mv -f ${FSTAB} ${FSTAB_SAVE}
		cp -f ${FSTAB_SAVE} ${FSTAB}

		unlock_file $KEY
	fi
}

restore_fstab()
{
	if [ -f ${FSTAB_SAVE} ]; then
		mv -f ${FSTAB_SAVE} ${FSTAB}
	fi
}

desktop_start()
{
	kind_of_desktop
	save_fstab
	if [ "${DESKTOP_KIND}" = "GNOME" ];then
		desktop_gnome_start
	fi
}

desktop_stop()
{
	kind_of_desktop
	if [ "${DESKTOP_KIND}" = "GNOME" ];then
		desktop_gnome_stop
	fi
}
