commit 93f397c19641e0c1da7ab41cbd91c57b0a750f9a
parent 242559a6cdfe5ad7d021a50995bda916ee41dfc8
Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date: Mon, 17 Nov 2014 00:04:58 +0100
code-style, ugly test-code (remove later)
Diffstat:
M | TODO | | | 9 | +++++++++ |
M | xml.c | | | 30 | +++++++++++++++++++++--------- |
2 files changed, 30 insertions(+), 9 deletions(-)
diff --git a/TODO b/TODO
@@ -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
diff --git a/xml.c b/xml.c
@@ -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;