summaryrefslogtreecommitdiffstats
path: root/main/open-vm-tools/open-vm-tools.initd
blob: 45a94a37eabc1e41f388b9f99e933c6068528df9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#!/sbin/runscript
# Copyright 1999-2007 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.2 2009/12/20 14:05:43 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 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 $?
}