#!/bin/sh

. /etc/control.d/functions

RULES=/lib/udev/rules.d/60-fuse.rules
BINARY=/usr/bin/fusermount

setup_rule() {
	new_subst "$1" \
		"^[[:space:]]*KERNEL==\"fuse\",[[:space:]]*MODE=\"$2\",[[:space:]]*GROUP=\"$3\",[[:space:]]*ENV{ACL_MANAGE}=\"1\"[[:space:]]*\$" \
		"s/^[[:space:]]*KERNEL==\"fuse\",.*\$/KERNEL==\"fuse\", MODE=\"$2\", GROUP=\"$3\", ENV{ACL_MANAGE}=\"1\"/"
}

setup_rule public 0666 fuse
setup_rule fuseonly 0660 fuse
setup_rule wheelonly 0660 wheel
setup_rule restricted 0600 root

new_fmode public 4711 root root
new_fmode fuseonly 4710 root fuse
new_fmode wheelonly 4710 root wheel
new_fmode restricted 700 root root

new_help public "Any user can execute $BINARY"
new_help fuseonly "Only \"fuse\" group members can execute $BINARY"
new_help wheelonly "Only \"wheel\" group members can execute $BINARY"
new_help restricted "Only root can execute $BINARY"

case "$*" in
	status|'')
		STATUS1="`control_fmode "$BINARY" status`" || exit 1
		STATUS2="`control_subst "$RULES"  status`" || exit 1
		[ "$STATUS1" = "$STATUS2" ] || STATUS1='unknown'
		echo "$STATUS1"
		;;
	*)
		is_builtin_mode "$*" || {
			control_subst "$RULES"  "$*" || exit 1
			udevadm trigger --subsystem-match=misc --sysname-match=fuse || exit 1
		}
		control_fmode "$BINARY" "$*" || exit 1
		;;
esac
