/* 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);}