Browse code

Skeleton server (shamelessly ripped from newslettersan)

Dario Rodriguez authored on 25/04/2015 09:55:24
Showing 1 changed files
1 1
new file mode 100755
... ...
@@ -0,0 +1,50 @@
1
+#!/bin/sh
2
+rm -f gen_res.c gen_res.h
3
+cat >> gen_res.c <<'EoF'
4
+/* DO NOT EDIT. Automatically generated file. */
5
+#define ETAGSIZE 40
6
+typedef struct resindex { char *name; unsigned char *data; int len; char etag[ETAGSIZE+1];} resindex;
7
+EoF
8
+cp gen_res.c gen_res.h
9
+cat >> gen_res.h <<'EoF'
10
+extern resindex *resindexdata;
11
+resindex *res_find(resindex *index, char *name);
12
+EoF
13
+cat >> gen_res.c <<'EoF'
14
+#include <string.h>
15
+EoF
16
+# generate the contents
17
+find . -type f | sed "s:^\./::g" | grep -v "^gen.sh\$\|^gen_res.c\$\|^gen_res.h\$" | while read f ; do
18
+	name=`echo $f | tr -c "a-zA-Z0-9" "_" | sed "s/^\([0-9]\)/_\1/g"`
19
+	echo "static unsigned char $name[]={\"\\" >> gen_res.c
20
+	cat $f | hexdump -v -e '"\\""x" 1/1 "%02X"' | sed "s/\(....................................................................\)/\1#@/g" | tr '#@' '\\
21
+' >> gen_res.c
22
+	echo '"};' >> gen_res.c
23
+done
24
+# generate the listing
25
+(
26
+echo ""
27
+echo "static resindex resindexstaticdata[]={"
28
+find . -type f | sed "s:^\./::g" | grep -v "^gen.sh\$\|^gen_res.c\$\|^gen_res.h\$" | while read f ; do
29
+	name=`echo $f | tr -c "a-zA-Z0-9" "_" | sed "s/^\([0-9]\)/_\1/g"`
30
+	echo "{\"$f\",$name,`wc -c $f | cut -d ' '  -f 1`,{\"`sha1sum $f | cut -d ' '  -f 1 | tr -dc 0-9a-f`\"}},"
31
+done
32
+echo "{NULL,NULL,0}};"
33
+) >> gen_res.c
34
+echo "resindex *resindexdata=resindexstaticdata;" >> gen_res.c
35
+cat >>gen_res.c <<'EoF'
36
+resindex *
37
+res_find(resindex *index, char *name)
38
+{
39
+	int i;
40
+	if(index==NULL || name==NULL)
41
+		return(NULL);
42
+	for(i=0;index[i].name!=NULL;i++) {
43
+		if(strcmp(index[i].name,name)==0)
44
+			return(index+i);
45
+	}
46
+	return(NULL);
47
+}
48
+EoF
49
+
50
+exit 0