exit_signal: simplify the "we have changed execution domain" logic
[linux-2.6.git] / tools / lguest / extract
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