#!/bin/sh


sed -e 's/#.*$//' -e '/^ *$/d' formats.lst | (
NAMELIST=
FILTLIST="get_none_filtdat"
READLIST="rdtape_none"
PARAMLIST=
while read NAME PARAMS
do
	NAMELIST="$NAMELIST\"$NAME\", "
	FILTLIST="$FILTLIST, \\
    get_${NAME}_filtdat"
	READLIST="$READLIST, \\
    rdtape_$NAME"
	PARAMLIST="$PARAMLIST \\
    {\"$NAME\", `echo $PARAMS | sed -e 's/ *$//' -e 's/  */, /g'`},"
done

NAMELIST=`echo $NAMELIST | sed 's/,$//'`
PARAMLIST=`echo "$PARAMLIST" | sed 's/,$//'`

cat << EOF
/*
 * This file is automatically generated from formats.lst, do not edit by
 * hand as changes will be lost.
 */

#define FORMAT_NAME_LIST $NAMELIST

#define FORMAT_FILTER_LIST $FILTLIST

#define FORMAT_READ_LIST $READLIST

#define FMT_ARRAY_SIZE `echo none $NAMELIST | wc -w`

#define FMT_PARAM_LIST $PARAMLIST

#ifdef RDTAPE_NEEDDEFS
#if NeedFunctionPrototype
#define VOIDPARAM void
#define INTPARAM int
#else
#define VOIDPARAM
#define INTPARAM
#endif

EOF

echo $FILTLIST | tr ' ,' '\012 ' | (
while read FILTER
do
	echo "extern filtdat_t *$FILTER(VOIDPARAM);"
done
)
echo $READLIST | tr ' ,' '\012 ' | (
while read READER
do
	echo "extern int $READER(INTPARAM);"
done
)

echo '#endif'

echo "FORMATSOURCES = $READLIST," | sed 's/,/.c/' > formats.mk

) > formats.h
