SMOLNET PORTAL home about changes
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
Original URLgopher://bitreich.org/0/scm/xml2tsv/commit/5cb461a6299733...
Content-Typetext/plain; charset=utf-8