base-files: functions: introduce new helper functions

Introduce cmdline_get_var() to /lib/function.sh and make use of it in
export_rootdev() in /lib/upgrade/common.sh, making the code more
simple and removing one level of indentation.
Introduce get_partition_by_name() to /lib/upgrade/common.sh which is
useful on non-EFI GPT platforms like mt7622.
Remove some dead-code while at it.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
This commit is contained in:
Daniel Golle 2021-03-31 13:47:35 +01:00
parent 0bc5ecf2d0
commit bb107ad9c1
No known key found for this signature in database
GPG key ID: 5A8F39C31C3217CA
2 changed files with 67 additions and 62 deletions

View file

@ -384,4 +384,14 @@ board_name() {
[ -e /tmp/sysinfo/board_name ] && cat /tmp/sysinfo/board_name || echo "generic" [ -e /tmp/sysinfo/board_name ] && cat /tmp/sysinfo/board_name || echo "generic"
} }
cmdline_get_var() {
local var=$1
local cmdlinevar tmp
for cmdlinevar in $(cat /proc/cmdline); do
tmp=${cmdlinevar##${var}}
[ "=" = "${tmp:0:1}" ] && echo ${tmp:1}
done
}
[ -z "$IPKG_INSTROOT" ] && [ -f /lib/config/uci.sh ] && . /lib/config/uci.sh [ -z "$IPKG_INSTROOT" ] && [ -f /lib/config/uci.sh ] && . /lib/config/uci.sh

View file

@ -147,22 +147,9 @@ part_magic_fat() {
} }
export_bootdevice() { export_bootdevice() {
local cmdline bootdisk rootpart uuid blockdev uevent line class local cmdline uuid blockdev uevent line class
local MAJOR MINOR DEVNAME DEVTYPE local MAJOR MINOR DEVNAME DEVTYPE
local rootpart="$(cmdline_get_var root)"
if read cmdline < /proc/cmdline; then
case "$cmdline" in
*root=*)
rootpart="${cmdline##*root=}"
rootpart="${rootpart%% *}"
;;
esac
case "$bootdisk" in
/dev/*)
uevent="/sys/class/block/${bootdisk##*/}/uevent"
;;
esac
case "$rootpart" in case "$rootpart" in
PARTUUID=[a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9]-[a-f0-9][a-f0-9]) PARTUUID=[a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9]-[a-f0-9][a-f0-9])
@ -212,7 +199,6 @@ export_bootdevice() {
export BOOTDEV_MINOR=$MINOR export BOOTDEV_MINOR=$MINOR
return 0 return 0
fi fi
fi
return 1 return 1
} }
@ -242,6 +228,15 @@ hex_le32_to_cpu() {
echo "$@" echo "$@"
} }
get_partition_by_name() {
for partname in /sys/class/block/$1/*/name; do
[ "$(cat ${partname})" = "$2" ] && {
basename ${partname%%/name}
break
}
done
}
get_partitions() { # <device> <filename> get_partitions() { # <device> <filename>
local disk="$1" local disk="$1"
local filename="$2" local filename="$2"