aboutsummaryrefslogtreecommitdiff
path: root/net/nut/files/30-libhid-ups.head
blob: eebda998ce2fbd72bbc503fafc6ef8ab44ddb799 (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
#!/bin/sh

nut_driver_config() {
	local cfg="$1"
	local nomatch="$2"

	config_get runas "$cfg" runas "nut"
	config_get vendorid "$cfg" vendorid
	config_get productid "$cfg" productid

	[ "$ACTION" = "add" ] && [ -n "$DEVNAME" ] && {
		chmod 0660 /dev/"$DEVNAME"
		chown "${runas:-root}":"$(id -gn "${runas:-root}")" /dev/"$DEVNAME"
	}

	if [ "$nomatch" = "1" ]; then
		[ "$ACTION" = "add" ] && {
			/etc/init.d/nut-server start "$cfg"
		}
	elif [ "$(printf "%04x" 0x"$pvendid")" = "$vendorid" ] && \
		[ "$(printf "%04x" 0x"$pprodid")" = "$productid" ]; then
			[ "$ACTION" = "add" ] && {
				/etc/init.d/nut-server start "$cfg"
			}
			[ "$ACTION" = "remove" ] && {
				/etc/init.d/nut-server stop "$cfg"
			}
			found=1
	fi
}

perform_libhid_action() {
	. /lib/functions.sh

	local vendorid productid runas
	local pvendid pprodid found

	pvendid=${PRODUCT%/*}
	pvendid=${pvendid%/*}
	pprodid=${PRODUCT%/*}
	pprodid=${pprodid##*/}

	config_load nut_server
	config_foreach nut_driver_config driver 0
	[ "$found" != "1" ] && config_foreach nut_driver_config driver 1
	/etc/init.d/nut-server start upsd
}

[ -n "$PRODUCT" ] && case "$PRODUCT" in