#!/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