1#! /bin/sh
2
3set -e
4
5PREFIX=$1
6shift
7
8trap 'rm -r $TMPDIR' 0
9TMPDIR=`mktemp -d`
10
11exec 3>/dev/null
12for f; do
13    while IFS="
14" read -r LINE; do
15	case "$LINE" in
16	    *$PREFIX:[0-9]*:\**)
17		NUM=`echo "$LINE" | sed "s/.*$PREFIX:\([0-9]*\).*/\1/"`
18		if [ -f $TMPDIR/$NUM ]; then
19		    echo "$TMPDIR/$NUM already exits prior to $f"
20		    exit 1
21		fi
22		exec 3>>$TMPDIR/$NUM
23		echo $f | sed 's,\.\./,,g' > $TMPDIR/.$NUM
24		/bin/echo "$LINE" | sed -e "s/$PREFIX:[0-9]*//" -e "s/:\*/*/" >&3
25		;;
26	    *$PREFIX:[0-9]*)
27		NUM=`echo "$LINE" | sed "s/.*$PREFIX:\([0-9]*\).*/\1/"`
28		if [ -f $TMPDIR/$NUM ]; then
29		    echo "$TMPDIR/$NUM already exits prior to $f"
30		    exit 1
31		fi
32		exec 3>>$TMPDIR/$NUM
33		echo $f | sed 's,\.\./,,g' > $TMPDIR/.$NUM
34		/bin/echo "$LINE" | sed "s/$PREFIX:[0-9]*//" >&3
35		;;
36	    *:\**)
37		/bin/echo "$LINE" | sed -e "s/:\*/*/" -e "s,/\*\*/,," >&3
38		echo >&3
39		exec 3>/dev/null
40		;;
41	    *)
42		/bin/echo "$LINE" >&3
43		;;
44	esac
45    done < $f
46    echo >&3
47    exec 3>/dev/null
48done
49
50LASTFILE=""
51for f in $TMPDIR/*; do
52    if [ "$LASTFILE" != $(cat $TMPDIR/.$(basename $f) ) ]; then
53	LASTFILE=$(cat $TMPDIR/.$(basename $f) )
54	echo "[ $LASTFILE ]"
55    fi
56    cat $f
57done
58
59