#!/bin/sh
rm -f gen_res.c gen_res.h
cat >> gen_res.c <<'EoF'
/* DO NOT EDIT. Automatically generated file. */
#define ETAGSIZE 40
typedef struct resindex { char *name; unsigned char *data; int len; char etag[ETAGSIZE+1];} resindex;
EoF
cp gen_res.c gen_res.h
cat >> gen_res.h <<'EoF'
extern resindex *resindexdata;
resindex *res_find(resindex *index, char *name);
EoF
cat >> gen_res.c <<'EoF'
#include <string.h>
EoF
# generate the contents
find . -type f | sed "s:^\./::g" | grep -v "^gen.sh\$\|^gen_res.c\$\|^gen_res.h\$" | while read f ; do
	name=`echo $f | tr -c "a-zA-Z0-9" "_" | sed "s/^\([0-9]\)/_\1/g"`
	echo "static unsigned char $name[]={\"\\" >> gen_res.c
	cat $f | hexdump -v -e '"\\""x" 1/1 "%02X"' | sed "s/\(....................................................................\)/\1#@/g" | tr '#@' '\\
' >> gen_res.c
	echo '"};' >> gen_res.c
done
# generate the listing
(
echo ""
echo "static resindex resindexstaticdata[]={"
find . -type f | sed "s:^\./::g" | grep -v "^gen.sh\$\|^gen_res.c\$\|^gen_res.h\$" | while read f ; do
	name=`echo $f | tr -c "a-zA-Z0-9" "_" | sed "s/^\([0-9]\)/_\1/g"`
	echo "{\"$f\",$name,`wc -c $f | cut -d ' '  -f 1`,{\"`sha1sum $f | cut -d ' '  -f 1 | tr -dc 0-9a-f`\"}},"
done
echo "{NULL,NULL,0}};"
) >> gen_res.c
echo "resindex *resindexdata=resindexstaticdata;" >> gen_res.c
cat >>gen_res.c <<'EoF'
resindex *
res_find(resindex *index, char *name)
{
	int i;
	if(index==NULL || name==NULL)
		return(NULL);
	for(i=0;index[i].name!=NULL;i++) {
		if(strcmp(index[i].name,name)==0)
			return(index+i);
	}
	return(NULL);
}
EoF

exit 0