linux/tools/lguest/extract
<<
>>
Prefs
   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