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