]>
Commit | Line | Data |
---|---|---|
f938d2c8 RR |
1 | #! /bin/sh |
2 | ||
3 | set -e | |
4 | ||
5 | PREFIX=$1 | |
6 | shift | |
7 | ||
8 | trap 'rm -r $TMPDIR' 0 | |
9 | TMPDIR=`mktemp -d` | |
10 | ||
11 | exec 3>/dev/null | |
12 | for 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 | |
48 | done | |
49 | ||
50 | LASTFILE="" | |
51 | for 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 | |
57 | done | |
58 |