^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) #!/bin/sh
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) # SPDX-License-Identifier: GPL-2.0-only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) # bootconfig utility functions
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) XBC_TMPFILE=
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) XBC_BASEDIR=`dirname $0`
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) BOOTCONFIG=${BOOTCONFIG:=$XBC_BASEDIR/../bootconfig}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) if [ ! -x "$BOOTCONFIG" ]; then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) BOOTCONFIG=`which bootconfig`
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) if [ -z "$BOOTCONFIG" ]; then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) echo "Erorr: bootconfig command is not found" 1>&2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) exit 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) xbc_cleanup() {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) if [ "$XBC_TMPFILE" ]; then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) rm -f "$XBC_TMPFILE"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) xbc_init() { # bootconfig-file
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) xbc_cleanup
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) XBC_TMPFILE=`mktemp bconf-XXXX`
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) trap xbc_cleanup EXIT TERM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) $BOOTCONFIG -l $1 > $XBC_TMPFILE || exit 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) nr_args() { # args
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) echo $#
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) xbc_get_val() { # key [maxnum]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) if [ "$2" ]; then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) MAXOPT="-L $2"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) grep "^$1 =" $XBC_TMPFILE | cut -d= -f2- | \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) sed -e 's/", /" /g' -e "s/',/' /g" | \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) xargs $MAXOPT -n 1 echo
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) xbc_has_key() { # key
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) grep -q "^$1 =" $XBC_TMPFILE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) xbc_has_branch() { # prefix-key
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) grep -q "^$1" $XBC_TMPFILE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) xbc_subkeys() { # prefix-key depth
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) __keys=`echo $1 | sed "s/\./ /g"`
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) __s=`nr_args $__keys`
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) grep "^$1" $XBC_TMPFILE | cut -d= -f1| cut -d. -f$((__s + 1))-$((__s + $2)) | uniq
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) }