 f938d2c892
			
		
	
	
	f938d2c892
	
	
	
		
			
			The netfilter code had very good documentation: the Netfilter Hacking HOWTO. Noone ever read it. So this time I'm trying something different, using a bit of Knuthiness. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
		
			
				
	
	
		
			58 lines
		
	
	
	
		
			1.2 KiB
			
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
	
		
			1.2 KiB
			
		
	
	
	
		
			Bash
		
	
	
	
	
	
| #! /bin/sh
 | |
| 
 | |
| set -e
 | |
| 
 | |
| PREFIX=$1
 | |
| shift
 | |
| 
 | |
| trap 'rm -r $TMPDIR' 0
 | |
| TMPDIR=`mktemp -d`
 | |
| 
 | |
| exec 3>/dev/null
 | |
| for f; do
 | |
|     while IFS="
 | |
| " read -r LINE; do
 | |
| 	case "$LINE" in
 | |
| 	    *$PREFIX:[0-9]*:\**)
 | |
| 		NUM=`echo "$LINE" | sed "s/.*$PREFIX:\([0-9]*\).*/\1/"`
 | |
| 		if [ -f $TMPDIR/$NUM ]; then
 | |
| 		    echo "$TMPDIR/$NUM already exits prior to $f"
 | |
| 		    exit 1
 | |
| 		fi
 | |
| 		exec 3>>$TMPDIR/$NUM
 | |
| 		echo $f | sed 's,\.\./,,g' > $TMPDIR/.$NUM
 | |
| 		/bin/echo "$LINE" | sed -e "s/$PREFIX:[0-9]*//" -e "s/:\*/*/" >&3
 | |
| 		;;
 | |
| 	    *$PREFIX:[0-9]*)
 | |
| 		NUM=`echo "$LINE" | sed "s/.*$PREFIX:\([0-9]*\).*/\1/"`
 | |
| 		if [ -f $TMPDIR/$NUM ]; then
 | |
| 		    echo "$TMPDIR/$NUM already exits prior to $f"
 | |
| 		    exit 1
 | |
| 		fi
 | |
| 		exec 3>>$TMPDIR/$NUM
 | |
| 		echo $f | sed 's,\.\./,,g' > $TMPDIR/.$NUM
 | |
| 		/bin/echo "$LINE" | sed "s/$PREFIX:[0-9]*//" >&3
 | |
| 		;;
 | |
| 	    *:\**)
 | |
| 		/bin/echo "$LINE" | sed -e "s/:\*/*/" -e "s,/\*\*/,," >&3
 | |
| 		echo >&3
 | |
| 		exec 3>/dev/null
 | |
| 		;;
 | |
| 	    *)
 | |
| 		/bin/echo "$LINE" >&3
 | |
| 		;;
 | |
| 	esac
 | |
|     done < $f
 | |
|     echo >&3
 | |
|     exec 3>/dev/null
 | |
| done
 | |
| 
 | |
| LASTFILE=""
 | |
| for f in $TMPDIR/*; do
 | |
|     if [ "$LASTFILE" != $(cat $TMPDIR/.$(basename $f) ) ]; then
 | |
| 	LASTFILE=$(cat $TMPDIR/.$(basename $f) )
 | |
| 	echo "[ $LASTFILE ]"
 | |
|     fi
 | |
|     cat $f
 | |
| done
 | |
| 
 |