#!/bin/sh

. /etc/control.d/functions

CONFIG=/etc/udev/rules.d/90-kqemu.rules
DEVICE=/dev/kqemu

new_fmode public 666 root root
new_fmode kqemu 660 root kqemu
new_fmode restricted 600 root root

new_subst public \
	'^KERNEL=="kqemu",[[:space:]]*MODE="0666",[[:space:]]*GROUP="[^"]*"[[:space:]]*$' \
	's/^KERNEL=="kqemu",[[:space:]]*MODE="[^"]*",[[:space:]]*GROUP="[^"]*"[[:space:]]*$/KERNEL=="kqemu", MODE="0666", GROUP="root"/g'
new_subst kqemu \
	'^KERNEL=="kqemu",[[:space:]]*MODE="0660",[[:space:]]*GROUP="kqemu"[[:space:]]*$' \
	's/^KERNEL=="kqemu",[[:space:]]*MODE="[^"]*",[[:space:]]*GROUP="[^"]*"[[:space:]]*$/KERNEL=="kqemu", MODE="0660", GROUP="kqemu"/g'
new_subst restricted \
	'^KERNEL=="kqemu",[[:space:]]*MODE="0600",[[:space:]]*GROUP="[^"]*"[[:space:]]*$' \
	's/^KERNEL=="kqemu",[[:space:]]*MODE="[^"]*",[[:space:]]*GROUP="[^"]*"[[:space:]]*$/KERNEL=="kqemu", MODE="0600", GROUP="root"/g'

new_summary "QEMU Accelerator (kqemu)"
new_help public "Any user can use kqemu"
new_help kqemu "Only \"kqemu\" group members can use kqemu"
new_help restricted "Only root can use kqemu"

control_subst "$CONFIG" "$*" || exit 1

is_builtin_mode "$*" || {
	# Fix device permissions if udev is not used for some reason
	if [ -c "$DEVICE" ]; then
		control_fmode "$DEVICE" "$*" || exit 1
	fi

	# Make udev apply permissions and additional rules if any
	if mountpoint -q /dev && [ -w /sys/class/misc/kqemu/uevent ]; then
		echo add > /sys/class/misc/kqemu/uevent ||:
	fi
}
