isome fixes and improvements - xml2tsv - a simple xml-to-tsv converter, based on xmlparser Err bitreich.org 70
1Log /scm/xml2tsv/log.gph bitreich.org 70
1Files /scm/xml2tsv/files.gph bitreich.org 70
1Refs /scm/xml2tsv/refs.gph bitreich.org 70
1Tags /scm/xml2tsv/tag bitreich.org 70
1README /scm/xml2tsv/file/README.md.gph bitreich.org 70
1LICENSE /scm/xml2tsv/file/LICENSE.gph bitreich.org 70
i--- Err bitreich.org 70
1commit 5cb461a629973380fc58050bee2d8d893db7923d /scm/xml2tsv/commit/5cb461a629973380fc58050bee2d8d893db7923d.gph bitreich.org 70
1parent 0fe049559d88b204e73332e205caa8c5936985d6 /scm/xml2tsv/commit/0fe049559d88b204e73332e205caa8c5936985d6.gph bitreich.org 70
hAuthor: Hiltjo Posthuma <hiltjo@codemadness.org> URL:mailto:hiltjo@codemadness.org bitreich.org 70
iDate: Fri, 3 Jan 2020 16:37:46 +0100 Err bitreich.org 70
i Err bitreich.org 70
isome fixes and improvements Err bitreich.org 70
i Err bitreich.org 70
i- print_no_cr: fix for modification of const buffer. Err bitreich.org 70
i- improve buffering of data handlers using the start and end handlers. Err bitreich.org 70
i- add XML entity conversion. Err bitreich.org 70
i- some white-space fixes. Err bitreich.org 70
i Err bitreich.org 70
iDiffstat: Err bitreich.org 70
i M xml2tsv.c | 47 ++++++++++++++++++++----------- Err bitreich.org 70
i Err bitreich.org 70
i1 file changed, 30 insertions(+), 17 deletions(-) Err bitreich.org 70
i--- Err bitreich.org 70
1diff --git a/xml2tsv.c b/xml2tsv.c /scm/xml2tsv/file/xml2tsv.c.gph bitreich.org 70
i@@ -36,13 +36,13 @@ int stack_push(tstack_t *t, const char *c){ Err bitreich.org 70
i return 0; Err bitreich.org 70
i } Err bitreich.org 70
i return -1; Err bitreich.org 70
i-} Err bitreich.org 70
i+} Err bitreich.org 70
i Err bitreich.org 70
i char* stack_pop(tstack_t *t){ Err bitreich.org 70
i if (t->top >= 0) Err bitreich.org 70
i return t->st[t->top--]; Err bitreich.org 70
i return NULL; Err bitreich.org 70
i-} Err bitreich.org 70
i+} Err bitreich.org 70
i Err bitreich.org 70
i char* stack_peek(tstack_t *t){ Err bitreich.org 70
i if (t->top >= 0) Err bitreich.org 70
i@@ -61,17 +61,15 @@ void stack_init(tstack_t *t){ Err bitreich.org 70
i Err bitreich.org 70
i /* utility functions */ Err bitreich.org 70
i Err bitreich.org 70
i-void print_no_cr(FILE *f, const char *c){ Err bitreich.org 70
i- char *tmp = c; Err bitreich.org 70
i- while (c != NULL){ Err bitreich.org 70
i- tmp = strchr(c, '\n'); Err bitreich.org 70
i- if (tmp != NULL) Err bitreich.org 70
i- *tmp = '\0'; Err bitreich.org 70
i- fprintf(f, "%s", c); Err bitreich.org 70
i- if (tmp != NULL) Err bitreich.org 70
i- c = tmp + 1; Err bitreich.org 70
i- else Err bitreich.org 70
i- c = NULL; Err bitreich.org 70
i+void print_no_cr(FILE *f, const char *s){ Err bitreich.org 70
i+ const char *tmp = s; Err bitreich.org 70
i+ size_t len; Err bitreich.org 70
i+ while (*tmp != '\0'){ Err bitreich.org 70
i+ len = strcspn(tmp, "\n"); Err bitreich.org 70
i+ fwrite(tmp, 1, len, f); Err bitreich.org 70
i+ tmp += len; Err bitreich.org 70
i+ if (tmp[len] == '\n') Err bitreich.org 70
i+ tmp++; Err bitreich.org 70
i } Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i@@ -93,14 +91,20 @@ void Err bitreich.org 70
i xmlattr(XMLParser *x, const char *t, size_t tl, const char *a, size_t al, Err bitreich.org 70
i const char *v, size_t vl) Err bitreich.org 70
i { Err bitreich.org 70
i- printf("\t%s=%s", a, v); Err bitreich.org 70
i+ printf("%s", v); Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i void Err bitreich.org 70
i xmlattrentity(XMLParser *x, const char *t, size_t tl, const char *a, size_t al, Err bitreich.org 70
i const char *v, size_t vl) Err bitreich.org 70
i { Err bitreich.org 70
i- printf("attrentity: %s\n", a); Err bitreich.org 70
i+ char buf[16]; Err bitreich.org 70
i+ int n; Err bitreich.org 70
i+ Err bitreich.org 70
i+ if ((n = xml_entitytostr(v, buf, sizeof(buf))) > 0) Err bitreich.org 70
i+ xmlattr(x, t, tl, a, al, buf, (size_t)n); Err bitreich.org 70
i+ else Err bitreich.org 70
i+ xmlattr(x, t, tl, a, al, v, vl); Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i void Err bitreich.org 70
i@@ -111,17 +115,19 @@ xmlattrend(XMLParser *x, const char *t, size_t tl, const char *a, size_t al) Err bitreich.org 70
i void Err bitreich.org 70
i xmlattrstart(XMLParser *x, const char *t, size_t tl, const char *a, size_t al) Err bitreich.org 70
i { Err bitreich.org 70
i+ printf("\t%s=", a); Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i void Err bitreich.org 70
i xmlcdatastart(XMLParser *x) Err bitreich.org 70
i { Err bitreich.org 70
i+ printf("\t"); Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i void Err bitreich.org 70
i xmlcdata(XMLParser *x, const char *d, size_t dl) Err bitreich.org 70
i { Err bitreich.org 70
i- printf("\t%s", d); Err bitreich.org 70
i+ print_no_cr(stdout, d); Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i void Err bitreich.org 70
i@@ -147,7 +153,6 @@ xmlcommentend(XMLParser *x) Err bitreich.org 70
i void Err bitreich.org 70
i xmldata(XMLParser *x, const char *d, size_t dl) Err bitreich.org 70
i { Err bitreich.org 70
i- printf("\t"); Err bitreich.org 70
i print_no_cr(stdout, d); Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i@@ -159,11 +164,19 @@ xmldataend(XMLParser *x) Err bitreich.org 70
i void Err bitreich.org 70
i xmldataentity(XMLParser *x, const char *d, size_t dl) Err bitreich.org 70
i { Err bitreich.org 70
i+ char buf[16]; Err bitreich.org 70
i+ int n; Err bitreich.org 70
i+ Err bitreich.org 70
i+ if ((n = xml_entitytostr(d, buf, sizeof(buf))) > 0) Err bitreich.org 70
i+ xmldata(x, buf, (size_t)n); Err bitreich.org 70
i+ else Err bitreich.org 70
i+ xmldata(x, d, dl); Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i void Err bitreich.org 70
i xmldatastart(XMLParser *x) Err bitreich.org 70
i { Err bitreich.org 70
i+ printf("\t"); Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i void Err bitreich.org 70
.
Response:
text/plain