xbc.sh 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #!/bin/sh
  2. # SPDX-License-Identifier: GPL-2.0-only
  3. # bootconfig utility functions
  4. XBC_TMPFILE=
  5. XBC_BASEDIR=`dirname $0`
  6. BOOTCONFIG=${BOOTCONFIG:=$XBC_BASEDIR/../bootconfig}
  7. if [ ! -x "$BOOTCONFIG" ]; then
  8. BOOTCONFIG=`which bootconfig`
  9. if [ -z "$BOOTCONFIG" ]; then
  10. echo "Erorr: bootconfig command is not found" 1>&2
  11. exit 1
  12. fi
  13. fi
  14. xbc_cleanup() {
  15. if [ "$XBC_TMPFILE" ]; then
  16. rm -f "$XBC_TMPFILE"
  17. fi
  18. }
  19. xbc_init() { # bootconfig-file
  20. xbc_cleanup
  21. XBC_TMPFILE=`mktemp bconf-XXXX`
  22. trap xbc_cleanup EXIT TERM
  23. $BOOTCONFIG -l $1 > $XBC_TMPFILE || exit 1
  24. }
  25. nr_args() { # args
  26. echo $#
  27. }
  28. xbc_get_val() { # key [maxnum]
  29. if [ "$2" ]; then
  30. MAXOPT="-L $2"
  31. fi
  32. grep "^$1 =" $XBC_TMPFILE | cut -d= -f2- | \
  33. sed -e 's/", /" /g' -e "s/',/' /g" | \
  34. xargs $MAXOPT -n 1 echo
  35. }
  36. xbc_has_key() { # key
  37. grep -q "^$1 =" $XBC_TMPFILE
  38. }
  39. xbc_has_branch() { # prefix-key
  40. grep -q "^$1" $XBC_TMPFILE
  41. }
  42. xbc_subkeys() { # prefix-key depth [subkey-pattern]
  43. __keys=`echo $1 | sed "s/\./ /g"`
  44. __s=`nr_args $__keys`
  45. grep "^$1$3" $XBC_TMPFILE | cut -d= -f1| cut -d. -f$((__s + 1))-$((__s + $2)) | uniq
  46. }