|  | #!/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 | 
|  | } |