18c2ecf20Sopenharmony_ci#!/bin/sh
28c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
38c2ecf20Sopenharmony_ci
48c2ecf20Sopenharmony_ci# bootconfig utility functions
58c2ecf20Sopenharmony_ci
68c2ecf20Sopenharmony_ciXBC_TMPFILE=
78c2ecf20Sopenharmony_ciXBC_BASEDIR=`dirname $0`
88c2ecf20Sopenharmony_ciBOOTCONFIG=${BOOTCONFIG:=$XBC_BASEDIR/../bootconfig}
98c2ecf20Sopenharmony_ciif [ ! -x "$BOOTCONFIG" ]; then
108c2ecf20Sopenharmony_ci	BOOTCONFIG=`which bootconfig`
118c2ecf20Sopenharmony_ci	if [ -z "$BOOTCONFIG" ]; then
128c2ecf20Sopenharmony_ci		echo "Erorr: bootconfig command is not found" 1>&2
138c2ecf20Sopenharmony_ci		exit 1
148c2ecf20Sopenharmony_ci	fi
158c2ecf20Sopenharmony_cifi
168c2ecf20Sopenharmony_ci
178c2ecf20Sopenharmony_cixbc_cleanup() {
188c2ecf20Sopenharmony_ci	if [ "$XBC_TMPFILE" ]; then
198c2ecf20Sopenharmony_ci		rm -f "$XBC_TMPFILE"
208c2ecf20Sopenharmony_ci	fi
218c2ecf20Sopenharmony_ci}
228c2ecf20Sopenharmony_ci
238c2ecf20Sopenharmony_cixbc_init() { # bootconfig-file
248c2ecf20Sopenharmony_ci	xbc_cleanup
258c2ecf20Sopenharmony_ci	XBC_TMPFILE=`mktemp bconf-XXXX`
268c2ecf20Sopenharmony_ci	trap xbc_cleanup EXIT TERM
278c2ecf20Sopenharmony_ci
288c2ecf20Sopenharmony_ci	$BOOTCONFIG -l $1 > $XBC_TMPFILE || exit 1
298c2ecf20Sopenharmony_ci}
308c2ecf20Sopenharmony_ci
318c2ecf20Sopenharmony_cinr_args() { # args
328c2ecf20Sopenharmony_ci	echo $#
338c2ecf20Sopenharmony_ci}
348c2ecf20Sopenharmony_ci
358c2ecf20Sopenharmony_cixbc_get_val() { # key [maxnum]
368c2ecf20Sopenharmony_ci	if [ "$2" ]; then
378c2ecf20Sopenharmony_ci		MAXOPT="-L $2"
388c2ecf20Sopenharmony_ci	fi
398c2ecf20Sopenharmony_ci	grep "^$1 =" $XBC_TMPFILE | cut -d= -f2- | \
408c2ecf20Sopenharmony_ci		sed -e 's/", /" /g' -e "s/',/' /g" | \
418c2ecf20Sopenharmony_ci		xargs $MAXOPT -n 1 echo
428c2ecf20Sopenharmony_ci}
438c2ecf20Sopenharmony_ci
448c2ecf20Sopenharmony_cixbc_has_key() { # key
458c2ecf20Sopenharmony_ci	grep -q "^$1 =" $XBC_TMPFILE
468c2ecf20Sopenharmony_ci}
478c2ecf20Sopenharmony_ci
488c2ecf20Sopenharmony_cixbc_has_branch() { # prefix-key
498c2ecf20Sopenharmony_ci	grep -q "^$1" $XBC_TMPFILE
508c2ecf20Sopenharmony_ci}
518c2ecf20Sopenharmony_ci
528c2ecf20Sopenharmony_cixbc_subkeys() { # prefix-key depth
538c2ecf20Sopenharmony_ci	__keys=`echo $1 | sed "s/\./ /g"`
548c2ecf20Sopenharmony_ci	__s=`nr_args $__keys`
558c2ecf20Sopenharmony_ci	grep "^$1" $XBC_TMPFILE | cut -d= -f1| cut -d. -f$((__s + 1))-$((__s + $2)) | uniq
568c2ecf20Sopenharmony_ci}
57