diff options
author | unknown <bar@bar.mysql.r18.ru> | 2002-12-31 13:00:41 +0400 |
---|---|---|
committer | unknown <bar@bar.mysql.r18.ru> | 2002-12-31 13:00:41 +0400 |
commit | 2fff4f018341df87d8217203883ff08be8cb840a (patch) | |
tree | be5341a8ce5c06afb62b520382fece3e0ff48a43 /mysys/test_xml.c | |
parent | bc090e5ab27286da3c0f4fa4d19dfac1ae4c819a (diff) | |
download | mariadb-git-2fff4f018341df87d8217203883ff08be8cb840a.tar.gz |
XML parser
Diffstat (limited to 'mysys/test_xml.c')
-rw-r--r-- | mysys/test_xml.c | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/mysys/test_xml.c b/mysys/test_xml.c new file mode 100644 index 00000000000..d97d6561681 --- /dev/null +++ b/mysys/test_xml.c @@ -0,0 +1,89 @@ +#include <stdio.h> +#include <string.h> +#include <unistd.h> +#include <fcntl.h> +#include "my_xml.h" + +static void mstr(char *str,const char *src,uint l1,uint l2) +{ + l1 = l1<l2 ? l1 : l2; + memcpy(str,src,l1); + str[l1]='\0'; +} + +static int dstr(MY_XML_PARSER *st,const char *attr, uint len) +{ + char str[1024]; + + mstr(str,attr,len,sizeof(str)-1); + printf("VALUE '%s'\n",str); + return MY_XML_OK; +} + +static int bstr(MY_XML_PARSER *st,const char *attr, uint len) +{ + char str[1024]; + + mstr(str,attr,len,sizeof(str)-1); + printf("ENTER %s\n",str); + return MY_XML_OK; +} + + +static int estr(MY_XML_PARSER *st,const char *attr, uint len) +{ + char str[1024]; + + mstr(str,attr,len,sizeof(str)-1); + printf("LEAVE %s\n",str); + return MY_XML_OK; +} + +static void usage(const char *prog) +{ + printf("Usage:\n"); + printf("%s xmlfile\n",prog); +} + +int main(int ac, char **av) +{ + char str[1024*64]=""; + const char *fn; + int f; + uint len; + MY_XML_PARSER p; + + if (ac<2) + { + usage(av[0]); + return 0; + } + + fn=av[1]?av[1]:"test.xml"; + if ((f=open(fn,O_RDONLY))<0) + { + fprintf(stderr,"Err '%s'\n",fn); + return 1; + } + + len=read(f,str,sizeof(str)-1); + str[len]='\0'; + + my_xml_parser_create(&p); + + my_xml_set_enter_handler(&p,bstr); + my_xml_set_value_handler(&p,dstr); + my_xml_set_leave_handler(&p,estr); + + if (MY_XML_OK!=(f=my_xml_parse(&p,str,len))) + { + printf("ERROR at line %d pos %d '%s'\n", + my_xml_error_lineno(&p)+1, + my_xml_error_pos(&p), + my_xml_error_string(&p)); + } + + my_xml_parser_free(&p); + + return 0; +} |