. /lib/functions.sh migrate_led_sysfs() { local cfg="$1"; shift local tuples="$@" local sysfs local name config_get sysfs ${cfg} sysfs config_get name ${cfg} name [ -z "${sysfs}" ] && return for tuple in ${tuples}; do local old=${tuple%=*} local new=${tuple#*=} local new_sysfs new_sysfs=$(echo ${sysfs} | sed "s/${old}/${new}/") [ "${new_sysfs}" = "${sysfs}" ] && continue uci set system.${cfg}.sysfs="${new_sysfs}" logger -t led-migration "sysfs option of LED \"${name}\" updated to ${new_sysfs}" done; } remove_devicename_led_sysfs() { local cfg="$1"; shift local exceptions="$@" local sysfs local name local new_sysfs config_get sysfs ${cfg} sysfs config_get name ${cfg} name # only continue if two or more colons are present echo "${sysfs}" | grep -q ":.*:" || return for exception in ${exceptions}; do # no change if exceptions provided as argument are found for devicename echo "${sysfs}" | grep -q "^${exception}:" && return done new_sysfs=$(echo ${sysfs} | sed "s/^[^:]*://") uci set system.${cfg}.sysfs="${new_sysfs}" logger -t led-migration "sysfs option of LED \"${name}\" updated to ${new_sysfs}" } migrate_leds() { config_load system config_foreach migrate_led_sysfs led "$@" } remove_devicename_leds() { config_load system config_foreach remove_devicename_led_sysfs led "$@" } migrations_apply() { local realm="$1" [ -n "$(uci changes ${realm})" ] && uci -q commit ${realm} }