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