avoid binary led parameters, better handle :link triggers (#7337)

This commit is contained in:
Paolo 2024-10-06 12:22:45 +02:00 committed by GitHub
parent 8b9fd1507e
commit 2960ffaff2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 12 additions and 7 deletions

View File

@ -4,7 +4,7 @@
[Unit]
Description=Armbian leds state
After=timers.target
After=sysinit.target
Conflicts=shutdown.target
DefaultDependencies=no

View File

@ -35,18 +35,25 @@ function store_led() {
# In case the trigger is any of the kbd-*, don't store any other parameter
# This avoids num/scroll/capslock from being restored at startup
# In case trigger is representing link-state for any network, don't store its previous state
# This avoids ghost wan/lan/etc (led up while cable unplugged)
[[ "$TRIGGER_VALUE" =~ kbd-* || "$TRIGGER_VALUE" == *":link" ]] && return
[[ "$TRIGGER_VALUE" =~ kbd-* ]] && return
COMMAND_PARAMS="$CMD_FIND $PATH/ -maxdepth 1 -type f ! -iname uevent ! -iname trigger -perm /u+w -printf %f\\n"
PARAMS=$($COMMAND_PARAMS)
# In case trigger is representing link-state for any network, use
# bash substitution to remove the brightness parameter and avoid
# ghost wan/lan/etc (led up while cable unplugged)
[[ "$TRIGGER_VALUE" == *":link" ]] && PARAMS=${PARAMS//"brightness"/}
for PARAM in $PARAMS; do
PARAM_PATH="$PATH/$PARAM"
VALUE=$(<$PARAM_PATH)
# If the variable contains non-printable characters
# suppose it contains binary and skip it
[[ "$VALUE" =~ [[:cntrl:]] ]] && continue
echo "$PARAM=$VALUE" >> $DESTINATION
done
@ -60,9 +67,7 @@ for LED in /sys/class/leds/*; do
[[ -d "$LED" ]] || continue
# Skip saving state for directories starting with enP e.g. enP1p1s0-0::lan enP2p1s0-2::lan etc. etc.
if [[ "$(/usr/bin/basename "$LED")" == enP* ]]; then
continue
fi
[[ "$(/usr/bin/basename "$LED")" == enP* ]] && continue
store_led $LED $STATE_PATH
echo >> $STATE_PATH