| 1 | #! /bin/sh |
| 2 | ### |
| 3 | ### Expand a list of symbolic references to other lists. |
| 4 | |
| 5 | expand () { |
| 6 | slaves="" |
| 7 | for i in "$@"; do |
| 8 | case "$i" in |
| 9 | :*) |
| 10 | name=${i#:} |
| 11 | eval found=\${set_$name+t}\${set_$name-nil} set=\${set_$name} |
| 12 | case "$found" in |
| 13 | nil) echo >&2 "$0: no such set \`$name'"; exit 1 ;; |
| 14 | esac |
| 15 | slaves="$slaves $set" |
| 16 | ;; |
| 17 | *) |
| 18 | slaves="$slaves $i" |
| 19 | ;; |
| 20 | esac |
| 21 | done |
| 22 | echo $slaves |
| 23 | } |
| 24 | |
| 25 | defset () { |
| 26 | setname=$1; shift |
| 27 | eval set_$setname='$(expand "$@")' |
| 28 | } |
| 29 | |
| 30 | case $# in |
| 31 | 0 | 1) |
| 32 | echo >&2 "Usage: $0 FILE ITEM|:LIST ..." |
| 33 | exit 1 |
| 34 | ;; |
| 35 | esac |
| 36 | |
| 37 | . "$1"; shift |
| 38 | expand "$@" |
| 39 | |