#! /bin/sh
### BEGIN INIT INFO
# Provides:          fuse
# Required-Start:    
# Should-Start:      udev
# Required-Stop:     
# Default-Start:     S
# Default-Stop:
# Short-Description: Start and stop fuse.
# Description:       Load the fuse module and mount the fuse control
#	filesystem.
### END INIT INFO

set -e

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
MOUNTPOINT=/sys/fs/fuse/connections

# Gracefully exit if the package has been removed.
which fusermount &>/dev/null || exit 5

case "$1" in
    start|restart|force-reload)
	if ! grep -qw fuse /proc/filesystems; then
		echo -n "Loading fuse module"
		if ! modprobe fuse >/dev/null 2>&1; then
			echo " failed!"
			exit 1
		else
			echo "."
		fi
	else
		echo "Fuse filesystem already available."
	fi
	if grep -qw fusectl /proc/filesystems && \
	   ! grep -qw $MOUNTPOINT /proc/mounts; then
		echo -n "Mounting fuse control filesystem"
		if ! mount -t fusectl fusectl $MOUNTPOINT >/dev/null 2>&1; then
			echo " failed!"
			exit 1
		else
			echo "."
		fi
	else
		echo "Fuse control filesystem already available."
	fi
	;;
    stop)
	if ! grep -qw fuse /proc/filesystems; then
		echo "Fuse filesystem not loaded."
		exit 7
	fi
	if grep -qw $MOUNTPOINT /proc/mounts; then
		echo -n "Unmounting fuse control filesystem"
		if ! umount $MOUNTPOINT >/dev/null 2>&1; then
			echo " failed!"
		else
			echo "."
		fi
	else
		echo "Fuse control filesystem not mounted."
	fi
	if grep -qw "^fuse" /proc/modules; then
		echo -n "Unloading fuse module"
		if ! rmmod fuse >/dev/null 2>&1; then
			echo " failed!"
		else
			echo "."
		fi
	else
		echo "Fuse module not loaded."
	fi
	;;
    status)
	echo -n "Checking fuse filesystem"
	if ! grep -qw fuse /proc/filesystems; then
		echo " not available."
		exit 3
	else
		echo " ok."
	fi
	;;
  *)
	echo "Usage: $0 {start|stop|restart|force-reload|status}"
	exit 1
	;;
esac

exit 0
