diff options
author | Sebastian Pipping <sebastian@pipping.org> | 2022-10-24 01:40:33 +0200 |
---|---|---|
committer | Sebastian Pipping <sebastian@pipping.org> | 2022-10-24 16:00:45 +0200 |
commit | 894b98d9b39a5ffa26caaff4cc9444c14642cb87 (patch) | |
tree | b695d9f431e76712dc52dc6621fed2d6ed8ff8d0 | |
parent | 37386fd2d3fa798f3c5bd94366f3efe66e31dec5 (diff) | |
download | libexpat-git-894b98d9b39a5ffa26caaff4cc9444c14642cb87.tar.gz |
examples: Be consistent across examples regarding read looping and main exit
-rw-r--r-- | expat/examples/elements.c | 12 | ||||
-rw-r--r-- | expat/examples/outline.c | 14 |
2 files changed, 18 insertions, 8 deletions
diff --git a/expat/examples/elements.c b/expat/examples/elements.c index cf7d29e2..a2673d37 100644 --- a/expat/examples/elements.c +++ b/expat/examples/elements.c @@ -85,8 +85,16 @@ main(void) { XML_SetUserData(parser, &depth); XML_SetElementHandler(parser, startElement, endElement); do { - size_t len = fread(buf, 1, sizeof(buf), stdin); - done = len < sizeof(buf); + const size_t len = fread(buf, 1, sizeof(buf), stdin); + + if (ferror(stdin)) { + fprintf(stderr, "Read error\n"); + XML_ParserFree(parser); + return 1; + } + + done = feof(stdin); + if (XML_Parse(parser, buf, (int)len, done) == XML_STATUS_ERROR) { fprintf(stderr, "Parse error at line %" XML_FMT_INT_MOD "u:\n%" XML_FMT_STR "\n", diff --git a/expat/examples/outline.c b/expat/examples/outline.c index d553d234..4f2490f3 100644 --- a/expat/examples/outline.c +++ b/expat/examples/outline.c @@ -86,27 +86,29 @@ main(void) { if (! parser) { fprintf(stderr, "Couldn't allocate memory for parser\n"); - exit(-1); + return 1; } XML_SetUserData(parser, &depth); XML_SetElementHandler(parser, startElement, endElement); do { - int len; + const size_t len = fread(buf, 1, sizeof(buf), stdin); - len = (int)fread(buf, 1, BUFSIZ, stdin); if (ferror(stdin)) { fprintf(stderr, "Read error\n"); - exit(-1); + XML_ParserFree(parser); + return 1; } + done = feof(stdin); - if (XML_Parse(parser, buf, len, done) == XML_STATUS_ERROR) { + if (XML_Parse(parser, buf, (int)len, done) == XML_STATUS_ERROR) { fprintf(stderr, "Parse error at line %" XML_FMT_INT_MOD "u:\n%" XML_FMT_STR "\n", XML_GetCurrentLineNumber(parser), XML_ErrorString(XML_GetErrorCode(parser))); - exit(-1); + XML_ParserFree(parser); + return 1; } } while (! done); XML_ParserFree(parser); |