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:
		| @@ -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 | ||||||
|   | |||||||
| @@ -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" | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Daniel Golle
					Daniel Golle