#!/usr/bin/ksh

Usage="fixproto [-d dir] [-o output] [-b pre] [-a post] [-p proto.h] [-O options] [-s]"

echo=echo
DIR=.proto
OUTPUT=.pro
PROTO_H=proto.h

unset OPTS BEFORE AFTER

while getopts "d:o:b:a:p:O:s" opt
do
    case "$opt" in
    d)		DIR=$OPTARG ;;
    o)		OUTPUT=$OPTARG ;;
    O)		OPTS="$OPTS $OPTARG" ;;
    b)		BEFORE=$OPTARG ;;
    a)		AFTER=$OPTARG ;;
    p)		PROTO_H=$OPTARG ;;
    s)		echo=: ;;
    \?)		echo "$Usage"; exit 1;;
    esac
done
shift $((OPTIND - 1))

if [ $# -lt 1 ]
then
    echo "$Usage"
    exit 2
fi

OPTS=${OPTS-"-As"}
BEFORE=${BEFORE-"$DIR/.preamble"}
AFTER=${AFTER-"$DIR/.postamble"}
if [ "${OUTPUT#*/}" = "$OUTPUT" ]	# If contains no slashes,
then
    OUTPUT=$DIR/$OUTPUT			#   make it part of subdir.
fi

$echo "Possibly out-of-date prototypes:"
for i
do
    $echo "\t$i" 1>&2
    (echo "\n/* $i */"
	${CC:-cc} -E ${CFLAGS} "$i" | mkptypes $OPTS) |
	    sed -e '/^[^(]* inline /d' > "$DIR/${i%.c}.h"
done
cat "$BEFORE" $DIR/* "$AFTER" | sed -e '/^static /d' > "$OUTPUT"

exit 0
