chiark / gitweb /
mkaptsrc: Perl's scoping for named subroutines is bobbins.
[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