#!/bin/sh

. /etc/control.d/functions

CONFIG=/etc/udev/rules.d/60-advcan.rules
DEVICE=/dev/can[0-7]

new_fmode public 666 root root
new_fmode group 660 root advcan
new_fmode restricted 600 root root

new_subst public \
        '^KERNEL=="advcan\[0-9\]\*",[[:space:]]*MODE="0666",[[:space:]]*GROUP="[^"]*",[[:space:]]*SYMLINK\+="can%n"[[:space:]]*$' \
        's/^KERNEL=="advcan\[0-9\]\*",[[:space:]]*MODE="[^"]*",[[:space:]]*GROUP="[^"]*",[[:space:]]*SYMLINK+="can%n"[[:space:]]*$/KERNEL=="advcan\[0-9\]\*", MODE="0666", GROUP="root", SYMLINK+="can%n"/g'
new_subst group \
        '^KERNEL=="advcan\[0-9\]\*",[[:space:]]*MODE="0660",[[:space:]]*GROUP="advcan",[[:space:]]*SYMLINK\+="can%n"[[:space:]]*$' \
        's/^KERNEL=="advcan\[0-9\]\*",[[:space:]]*MODE="[^"]*",[[:space:]]*GROUP="[^"]*",[[:space:]]*SYMLINK+="can%n"[[:space:]]*$/KERNEL=="advcan\[0-9\]\*", MODE="0660", GROUP="advcan", SYMLINK+="can%n"/g'
new_subst restricted \
        '^KERNEL=="advcan\[0-9\]\*",[[:space:]]*MODE="0600",[[:space:]]*GROUP="[^"]*",[[:space:]]*SYMLINK\+="can%n"[[:space:]]*$' \
        's/^KERNEL=="advcan\[0-9\]\*",[[:space:]]*MODE="[^"]*",[[:space:]]*GROUP="[^"]*",[[:space:]]*SYMLINK+="can%n"[[:space:]]*$/KERNEL=="advcan\[0-9\]\*", MODE="0600", GROUP="root", SYMLINK+="can%n"/g'

new_summary "ADVCan support (advcan)"
new_help public "Any user can use ADVCan driver"
new_help group "Only \"advcan\" group members can use ADVCan driver"
new_help restricted "Only root can use ADVCan driver"

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

is_builtin_mode "$*" && exit 0

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