| #!/bin/sh |
| # SPDX-License-Identifier: GPL-2.0-only |
| |
| # bootconfig utility functions |
| |
| XBC_TMPFILE= |
| XBC_BASEDIR=`dirname $0` |
| BOOTCONFIG=${BOOTCONFIG:=$XBC_BASEDIR/../bootconfig} |
| if [ ! -x "$BOOTCONFIG" ]; then |
| BOOTCONFIG=`which bootconfig` |
| if [ -z "$BOOTCONFIG" ]; then |
| echo "Erorr: bootconfig command is not found" 1>&2 |
| exit 1 |
| fi |
| fi |
| |
| xbc_cleanup() { |
| if [ "$XBC_TMPFILE" ]; then |
| rm -f "$XBC_TMPFILE" |
| fi |
| } |
| |
| xbc_init() { # bootconfig-file |
| xbc_cleanup |
| XBC_TMPFILE=`mktemp bconf-XXXX` |
| trap xbc_cleanup EXIT TERM |
| |
| $BOOTCONFIG -l $1 > $XBC_TMPFILE || exit 1 |
| } |
| |
| nr_args() { # args |
| echo $# |
| } |
| |
| xbc_get_val() { # key [maxnum] |
| if [ "$2" ]; then |
| MAXOPT="-L $2" |
| fi |
| grep "^$1 =" $XBC_TMPFILE | cut -d= -f2- | \ |
| sed -e 's/", /" /g' -e "s/',/' /g" | \ |
| xargs $MAXOPT -n 1 echo |
| } |
| |
| xbc_has_key() { # key |
| grep -q "^$1 =" $XBC_TMPFILE |
| } |
| |
| xbc_has_branch() { # prefix-key |
| grep -q "^$1" $XBC_TMPFILE |
| } |
| |
| xbc_subkeys() { # prefix-key depth [subkey-pattern] |
| __keys=`echo $1 | sed "s/\./ /g"` |
| __s=`nr_args $__keys` |
| grep "^$1$3" $XBC_TMPFILE | cut -d= -f1| cut -d. -f$((__s + 1))-$((__s + $2)) | uniq |
| } |