#!/sbin/runscript
# Copyright 1999-2011 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/app-emulation/open-vm-tools/files/open-vm-tools.initd,v 1.3 2011/07/17 13:23:00 vadimk Exp $

DND_TMPDIR="/tmp/VMwareDnD"
USER_GROUP="root:vmware"
DND_TMPDIR_PERMS="1777"
GUESTD_BIN="/usr/bin/vmtoolsd"
PIDFILE="/var/run/vmtoolsd.pid"
MOUNTPOINT="/proc/fs/vmblock/mountPoint"

depend() {
	before checkfs fsck net X
}

start() {
	if [ "${VM_DRAG_AND_DROP}" == "yes" ];
	then

		if ! grep -q -w vmblock /proc/modules;
		then
			ebegin "Loading vmblock module"
			modprobe vmblock
			eend $?
			sleep 0.25
		fi

		if [[ ! -d "${DND_TMPDIR}" ]];
		then
			# einfo "Creating the VM drag and drop directory"
			mkdir "${DND_TMPDIR}"
			chown "${USER_GROUP}" "${DND_TMPDIR}"
			chmod "${DND_TMPDIR_PERMS}" "${DND_TMPDIR}"
		fi

		# DnD_TMPDIR must exist before vmblock can be mounted
		ebegin "Mounting vmblock device"
		mount -t vmblock none ${MOUNTPOINT}
		eend $?
	fi
	
	ebegin "Starting vmtoolsd"
	start-stop-daemon --user "${USER_GROUP}" --start --quiet --background --make-pidfile --pidfile "${PIDFILE}" --exec ${GUESTD_BIN}
	eend $?
}

stop() {
	local ret
	
	if [ "${VM_DRAG_AND_DROP}" == "yes" ];
	then
		ebegin "Cleaning the contents of ${DND_TMPDIR}"
		# First check, whether ${DND_TMPDIR} isn valid... we shouldn't risk deleting the content of ""/*
		if [[ ! -z "${DND_TMPDIR}" ]] && [[ "${DND_TMPDIR}" != "/" ]];
		then
			rm -rf ${DND_TMPDIR}/*
			ret=0
		else
			eerror "Not cleaning up ${DND_TMPDIR}, please check definition of variable"
			ret=1
		fi
		eend $ret

		ebegin "Unmounting vmblock device"
		if grep -q -w "${MOUNTPOINT}" /proc/mounts;
		then
			umount ${MOUNTPOINT} 1>&2 > /dev/null
		fi
		eend 0
	fi

	ebegin "Stopping vmtoolsd"
	start-stop-daemon --stop --quiet --pidfile "${PIDFILE}"
	eend $?
}
