iremove control chars - 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 302088dbb8f0eb6bca0c3d97bb2066bad3d5d4c5 /scm/xml2tsv/commit/302088dbb8f0eb6bca0c3d97bb2066bad3d5d4c5.gph bitreich.org 70
1parent 90c501f47d0a32cedca9a4ea27fbe27be9fb3be4 /scm/xml2tsv/commit/90c501f47d0a32cedca9a4ea27fbe27be9fb3be4.gph bitreich.org 70
hAuthor: KatolaZ <katolaz@freaknet.org> URL:mailto:katolaz@freaknet.org bitreich.org 70
iDate: Sun, 5 Jan 2020 06:54:03 +0000 Err bitreich.org 70
i Err bitreich.org 70
iremove control chars Err bitreich.org 70
i Err bitreich.org 70
iDiffstat: Err bitreich.org 70
i M xml2tsv.c | 38 ++++++++++++++++++++----------- Err bitreich.org 70
i Err bitreich.org 70
i1 file changed, 25 insertions(+), 13 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@@ -14,6 +14,7 @@ Err bitreich.org 70
i Err bitreich.org 70
i #include <stdio.h> Err bitreich.org 70
i #include <string.h> Err bitreich.org 70
i+#include <ctype.h> Err bitreich.org 70
i Err bitreich.org 70
i #include "xml.h" Err bitreich.org 70
i #include "config.h" Err bitreich.org 70
i@@ -58,26 +59,37 @@ 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+/* quote_print: quote \\, \n, \t, and strip other ctrl chars */ Err bitreich.org 70
i void quote_print(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+ int i; Err bitreich.org 70
i while (*tmp != '\0'){ Err bitreich.org 70
i len = strcspn(tmp, "\\\n\t"); Err bitreich.org 70
i- fwrite(tmp, 1, len, f); Err bitreich.org 70
i- tmp += len; Err bitreich.org 70
i- if (*tmp == '\n'){ Err bitreich.org 70
i- if (len > 0){ Err bitreich.org 70
i- fprintf(f, "\\n"); Err bitreich.org 70
i+ for(i=0; i<len; i++, tmp++){ Err bitreich.org 70
i+ if (!iscntrl((unsigned char)*tmp)){ Err bitreich.org 70
i+ fwrite(tmp, 1, 1, f); Err bitreich.org 70
i } Err bitreich.org 70
i- tmp ++; Err bitreich.org 70
i- } Err bitreich.org 70
i- else if (*tmp == '\t'){ Err bitreich.org 70
i- fprintf(f, "\\t"); Err bitreich.org 70
i- tmp ++; Err bitreich.org 70
i } Err bitreich.org 70
i- else if (*tmp == '\\'){ Err bitreich.org 70
i- fprintf(f, "\\\\"); Err bitreich.org 70
i- tmp ++; Err bitreich.org 70
i+ switch (*tmp){ Err bitreich.org 70
i+ case '\n': Err bitreich.org 70
i+ if (len > 0){ Err bitreich.org 70
i+ fprintf(f, "\\n"); Err bitreich.org 70
i+ } Err bitreich.org 70
i+ tmp ++; Err bitreich.org 70
i+ break; Err bitreich.org 70
i+ case '\t': Err bitreich.org 70
i+ fprintf(f, "\\t"); Err bitreich.org 70
i+ tmp ++; Err bitreich.org 70
i+ break; Err bitreich.org 70
i+ case '\r': Err bitreich.org 70
i+ fprintf(f, "\\r"); Err bitreich.org 70
i+ tmp ++; Err bitreich.org 70
i+ break; Err bitreich.org 70
i+ case '\\': Err bitreich.org 70
i+ fprintf(f, "\\\\"); Err bitreich.org 70
i+ tmp ++; Err bitreich.org 70
i+ break; Err bitreich.org 70
i } Err bitreich.org 70
i } Err bitreich.org 70
i } Err bitreich.org 70
.
Response:
text/plain