xref: /linux-6.15/tools/bootconfig/scripts/xbc.sh (revision f134ebb2)
17e66ef00SMasami Hiramatsu#!/bin/sh
27e66ef00SMasami Hiramatsu# SPDX-License-Identifier: GPL-2.0-only
37e66ef00SMasami Hiramatsu
47e66ef00SMasami Hiramatsu# bootconfig utility functions
57e66ef00SMasami Hiramatsu
67e66ef00SMasami HiramatsuXBC_TMPFILE=
77e66ef00SMasami HiramatsuXBC_BASEDIR=`dirname $0`
87e66ef00SMasami HiramatsuBOOTCONFIG=${BOOTCONFIG:=$XBC_BASEDIR/../bootconfig}
97e66ef00SMasami Hiramatsuif [ ! -x "$BOOTCONFIG" ]; then
107e66ef00SMasami Hiramatsu	BOOTCONFIG=`which bootconfig`
117e66ef00SMasami Hiramatsu	if [ -z "$BOOTCONFIG" ]; then
127e66ef00SMasami Hiramatsu		echo "Erorr: bootconfig command is not found" 1>&2
137e66ef00SMasami Hiramatsu		exit 1
147e66ef00SMasami Hiramatsu	fi
157e66ef00SMasami Hiramatsufi
167e66ef00SMasami Hiramatsu
177e66ef00SMasami Hiramatsuxbc_cleanup() {
187e66ef00SMasami Hiramatsu	if [ "$XBC_TMPFILE" ]; then
197e66ef00SMasami Hiramatsu		rm -f "$XBC_TMPFILE"
207e66ef00SMasami Hiramatsu	fi
217e66ef00SMasami Hiramatsu}
227e66ef00SMasami Hiramatsu
237e66ef00SMasami Hiramatsuxbc_init() { # bootconfig-file
247e66ef00SMasami Hiramatsu	xbc_cleanup
257e66ef00SMasami Hiramatsu	XBC_TMPFILE=`mktemp bconf-XXXX`
267e66ef00SMasami Hiramatsu	trap xbc_cleanup EXIT TERM
277e66ef00SMasami Hiramatsu
287e66ef00SMasami Hiramatsu	$BOOTCONFIG -l $1 > $XBC_TMPFILE || exit 1
297e66ef00SMasami Hiramatsu}
307e66ef00SMasami Hiramatsu
317e66ef00SMasami Hiramatsunr_args() { # args
327e66ef00SMasami Hiramatsu	echo $#
337e66ef00SMasami Hiramatsu}
347e66ef00SMasami Hiramatsu
357e66ef00SMasami Hiramatsuxbc_get_val() { # key [maxnum]
367e66ef00SMasami Hiramatsu	if [ "$2" ]; then
377e66ef00SMasami Hiramatsu		MAXOPT="-L $2"
387e66ef00SMasami Hiramatsu	fi
397e66ef00SMasami Hiramatsu	grep "^$1 =" $XBC_TMPFILE | cut -d= -f2- | \
407e66ef00SMasami Hiramatsu		sed -e 's/", /" /g' -e "s/',/' /g" | \
417e66ef00SMasami Hiramatsu		xargs $MAXOPT -n 1 echo
427e66ef00SMasami Hiramatsu}
437e66ef00SMasami Hiramatsu
447e66ef00SMasami Hiramatsuxbc_has_key() { # key
457e66ef00SMasami Hiramatsu	grep -q "^$1 =" $XBC_TMPFILE
467e66ef00SMasami Hiramatsu}
477e66ef00SMasami Hiramatsu
487e66ef00SMasami Hiramatsuxbc_has_branch() { # prefix-key
497e66ef00SMasami Hiramatsu	grep -q "^$1" $XBC_TMPFILE
507e66ef00SMasami Hiramatsu}
517e66ef00SMasami Hiramatsu
52*f134ebb2SMasami Hiramatsuxbc_subkeys() { # prefix-key depth [subkey-pattern]
537e66ef00SMasami Hiramatsu	__keys=`echo $1 | sed "s/\./ /g"`
547e66ef00SMasami Hiramatsu	__s=`nr_args $__keys`
55*f134ebb2SMasami Hiramatsu	grep "^$1$3" $XBC_TMPFILE | cut -d= -f1| cut -d. -f$((__s + 1))-$((__s + $2)) | uniq
567e66ef00SMasami Hiramatsu}
57