mkaptsrc: Use `local' for tracking paintedness of tags.
[distorted-bits] / expand-list
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