/* name: chtml.t purpose: test some of the functions in the chunk html library. author: george j. carrette $Id: chtmlt.c,v 1.16 1998/06/22 12:43:44 gjc Exp $ */ #include #include #include #include "chtml.h" static void example(char *(*fcn)(char *,char *),char *what,char *data) {char *result; result = (*fcn)(data,NULL); printf("%s(%s) => %s\n",what,data,(result) ? result : "NULL"); chtml_memfree(result);} static char *get(char *name,void *arg) {if (name[0] == '\'') return(&name[1]); else return("1");} static char *ptest1(char *str,char *ignored) {CHTML_STRITEM table = NULL; char *value; chtml_stritem_kinsert_qs(&table,str); value = chtml_stritem_get_qs(table,NULL,0,NULL); chtml_stritem_free(&table); return(value);} static char *ptest2(char *str,char *ignored) {CHTML_STRITEM table = NULL; char *value; chtml_stritem_kinsert_qs(&table,str); value = chtml_stritem_get_qs(table,NULL,0,"a","b",NULL); chtml_stritem_free(&table); return(value);} static void putinbuff(char *str,void *arg) {size_t len; char **ptr = (char **) arg; len = strlen(str); memcpy(*ptr,str,len+1); *ptr += len;} int main(int argc,char **argv) {struct chtml *x,*y; char *fname = (argc > 1) ? argv[1] : "homes.html-bin"; char *oname = (argc > 2) ? argv[2] : "usercount"; char *buff,*ptr; printf("%s\n",chtml_ident()); if (!(x = chtml_load(fname,NULL))) {perror(fname); exit(1);} chtml_debug_print(x,NULL); printf("Looking up object named %s\n",oname); if ((y = chtml_object(oname,x))) chtml_debug_print(y,NULL); else printf("Error: not found.\n"); printf("Output size = %ld\n",chtml_size_write(get,NULL,x)); printf("size_limit(200) = %ld\n", chtml_size_write_limit(get,NULL,x,200)); printf("size_limit(200000) = %ld\n", chtml_size_write_limit(get,NULL,x,200000)); buff = (char *) malloc(chtml_size_write(get,NULL,x) + 1); ptr = buff; chtml_do_write(get,NULL,x,putinbuff,&ptr); printf("string buffer is %d long\n",strlen(buff)); free(buff); ptr = buff = NULL; chtml_do_write(get,NULL,x,(void (*)(char *,void *))fputs,stdout); chtml_free(x); x = NULL; example(chtml_html_encode,"html_encode","&\"abc\""); example(chtml_url_encode,"url_encode","foo bar/baz % bomb"); example(chtml_url_decode,"url_decode","foo+bar%2Fbaz++%25+bomb"); example(ptest1,"qs/parse/unparse","a=1&b=2&c=3&a=11&k"); example(ptest2,"qs/parse/unparse a,b","a=1&b=2&c=3&a=11&k"); return(0);}