#!/bin/sh
# unansi
# can't cope with function pointer prototypes...
#
# * replaces fn prototypes with forward declarations
# * junks void arg in fn delarators
# * reformats fn declarators: return type, id/args, "{" on separate lines
# * parses arg list with ansi2knr to remove ansi-style typing
#
# uses:	unproto.sed, re-ansi.sed, ansi2knr

# ETC=/home/usr/its/ray/etc
# ETC=/networks/pub/doug/kr
UNPROTOSED=$ETC/unproto.sed
REANSISED=$ETC/re-ansi.sed
KDIR="K+R"
LOG=$KDIR/proto.log

test -d $KDIR || mkdir $KDIR
if [ -f $LOG ]
then	mv -f $LOG $LOG.was
else	touch $LOG
fi

for i in `ls *.[ch]`
do	sed -f $UNPROTOSED $i > $i.proto
	sed -f $REANSISED $i.proto > $i.re-ansi
	ansi2knr $i.re-ansi $i.knr
	if ( cmp -s $i $i.knr )
	then	echo $i: no change
		rm $i.proto $i.re-ansi $i.knr
	else	echo $i: converted
		echo $i >> $LOG
		diff $i $i.knr >> $LOG
		echo >> $LOG
		mv -f $i Archive/$i.orig
		mv $i.knr $i
		rm $i.proto $i.re-ansi
	fi
done
