diff options
-rw-r--r-- | TODO | 9 | ||||
-rw-r--r-- | xml.c | 30 |
2 files changed, 30 insertions, 9 deletions
@@ -1,3 +1,12 @@ +[ ] check read errors: + ferror, return code of fread, fwrite, fclose... + +[x] handle invalid value in strtoul. +[x] compile with -Wextra and use (void) to ignore unused parameters? +[x] use uint32_t for codepointtoutf8? + +[ ] separate codepointtoutf8 and entity handling from sfeed.c into xml.c? + [ ] test again on: - Linux (glibc+gcc, musl-gcc, clang, tcc). - OpenBSD @@ -1,13 +1,20 @@ +#include <ctype.h> #include <stdio.h> -#include <string.h> #include <stdlib.h> -#include <ctype.h> +#include <string.h> #include "xml.h" static __inline__ int /* like getc(), but do some smart buffering */ -xmlparser_getnext(XMLParser *x) { - return fgetc(x->fp); +xmlparser_getnext(XMLParser *x) +{ + int c; + if(ferror(x->fp)) + return EOF; + if(feof(x->fp)) + return EOF; + c = fgetc(x->fp); + return c; #if 0 if(x->readoffset >= x->readlastbytes) { x->readoffset = 0; @@ -19,7 +26,8 @@ xmlparser_getnext(XMLParser *x) { } static __inline__ void -xmlparser_parseattrs(XMLParser *x) { +xmlparser_parseattrs(XMLParser *x) +{ size_t namelen = 0, valuelen; int c, endsep, endname = 0; @@ -113,7 +121,8 @@ xmlparser_parseattrs(XMLParser *x) { } static __inline__ void -xmlparser_parsecomment(XMLParser *x) { +xmlparser_parsecomment(XMLParser *x) +{ size_t datalen = 0, i = 0; int c; @@ -158,7 +167,8 @@ xmlparser_parsecomment(XMLParser *x) { * */ static __inline__ void -xmlparser_parsecdata(XMLParser *x) { +xmlparser_parsecdata(XMLParser *x) +{ size_t datalen = 0, i = 0; int c; @@ -195,13 +205,15 @@ xmlparser_parsecdata(XMLParser *x) { } void -xmlparser_init(XMLParser *x, FILE *fp) { +xmlparser_init(XMLParser *x, FILE *fp) +{ memset(x, 0, sizeof(XMLParser)); x->fp = fp; } void -xmlparser_parse(XMLParser *x) { +xmlparser_parse(XMLParser *x) +{ int c, ispi; size_t datalen, tagdatalen, taglen; |