mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2025-12-28 21:02:25 +01:00
the directory is so packages can ship config. User may want override those in the config file so we let the config file win. This is also consistent with sysctl.
67 lines
1.2 KiB
Plaintext
67 lines
1.2 KiB
Plaintext
#!/sbin/openrc-run
|
|
|
|
description="Set sysfs variables from /etc/sysfs.conf and /etc/sysfs.d/*.conf"
|
|
conffile=/etc/sysfs.conf
|
|
confdir=/etc/sysfs.d
|
|
|
|
depend() {
|
|
need sysfs
|
|
}
|
|
|
|
setval() {
|
|
local value="$1" attrib="$2"
|
|
# Some fields need a terminating newline, others
|
|
# need the terminating newline to be absent :-(
|
|
echo -n "$value" > "$attrib" 2>/dev/null \
|
|
|| echo "$value" > "$attrib"
|
|
}
|
|
|
|
load_conffile() {
|
|
local file="$1"
|
|
while read line; do
|
|
local line=${line%%#*}
|
|
local cmd= attrib= value=
|
|
set -- $line
|
|
if [ $# -eq 0 ]; then
|
|
continue
|
|
fi
|
|
case "$1$3" in
|
|
mode=) cmd=chmod
|
|
attrib="$2"
|
|
value="$4"
|
|
;;
|
|
owner=) cmd=chown
|
|
attrib="$2"
|
|
value="$4"
|
|
;;
|
|
*) if [ "$2" = "=" ]; then
|
|
cmd=setval
|
|
attrib="$1"
|
|
value="$3"
|
|
fi
|
|
;;
|
|
esac
|
|
if ! [ -e "/sys/$attrib" ]; then
|
|
eerror "$attrib: unknown attribute"
|
|
continue
|
|
fi
|
|
if [ -z "$attrib" ] || [ -z "$value" ]; then
|
|
eerror "syntax error in $file: '$line'"
|
|
continue
|
|
fi
|
|
$cmd "$value" "/sys/$attrib"
|
|
done < "$file"
|
|
}
|
|
|
|
start() {
|
|
[ -r "$conffile" -o -d "$confdir" ] || return 0
|
|
ebegin "Setting sysfs variables"
|
|
for file in $confdir/*.conf $conffile; do
|
|
[ -r "$file" ] || continue
|
|
load_conffile "$file" || return 1
|
|
done
|
|
eend 0
|
|
|
|
}
|
|
|