henesyinit from p9fd787fda5 years agoHistory
47 lines · 1.1 KB · Text
RawDownload
#!/bin/rc echo \'#include "stdinc.h"#include "dat.h"#include "fns.h"#include "httpd.h"#include "xml.h"' sed -n '/<struct/,/<\/struct>/{	s/^[^<]+</</	t cleart:cleart	s/<struct name="(.*)" type="(.*)">.*/void xml\1(Hio *hout, \2s, char *tag, int indent){\n	xmlIndent(hout, indent);\n	hprint(hout, "<%s", tag);\n	hprint(hout, ">\\n");/	t start	s/<field name="(.*)" val="(.*)" type="(.*)"\/>.*/	xml\3(hout, \2, "\1");\n	hprint(hout, ">\\n");/	t field	s/<array name="(.*)" val="(.*)" elems="(.*)" type="(.*)"\/>.*/	xmlIndent(hout, indent + 1);\n	hprint(hout, "<\1s>\\n");\n	for(i = 0; i < \3; i++)\n		xml\4(hout, \2, "\1", indent + 2);\n	xmlIndent(hout, indent + 1);\n	hprint(hout, "<\/\1s>\\n");/	t array	s/<\/struct>/	xmlIndent(hout, indent);\n	hprint(hout, "<\/%s>\\n", tag);\n}\n/	t produce}b:start	h	b:field	x	s/	hprint\(hout, ">\\n"\);//g	x	H	b:array	H	x	s/{\n/&	int i;\n\n/	s/^	int i;\n\n	int i;\n/	int i;\n/	x	b:produce	H	g	s/\n\n/\n/g	s/	hprint.hout, ">\\n".;\n	xmlIndent.hout, indent.;\n	hprint.*/	hprint(hout, "\/>\\n");/	p' $1