diff options
author | Hiltjo Posthuma <hiltjo@codemadness.org> | 2017-12-10 13:36:41 +0100 |
---|---|---|
committer | Hiltjo Posthuma <hiltjo@codemadness.org> | 2017-12-10 13:36:41 +0100 |
commit | dd00baa7ecde11cd7a6858203ee372db3b6dea60 (patch) | |
tree | 7f8701d73676f947d60341bf7c4c70d53de02537 | |
parent | 7d1a09873ed080ad438adf4ad4d2800f93cc0271 (diff) |
sfeed_opml_import/sfeed_opml_export: allow " and \ in fields
make sure to escape them.
-rwxr-xr-x | sfeed_opml_export | 11 | ||||
-rw-r--r-- | sfeed_opml_import.c | 10 |
2 files changed, 17 insertions, 4 deletions
diff --git a/sfeed_opml_export b/sfeed_opml_export index 9665792..212b3c6 100755 --- a/sfeed_opml_export +++ b/sfeed_opml_export @@ -22,11 +22,20 @@ loadconfig() { fi } +# escape(s) +escape() { + printf '%s' "$1" | sed 's@"@\"@g' +} + # override feeds function to ouput opml XML. # feed(name, feedurl, [basesiteurl], [encoding]) feed() { + name=$(escape "$1") + xmlurl=$(escape "$2") + htmlurl=$(escape "$3") + printf '\t<outline title="%s" text="%s" xmlUrl="%s" htmlUrl="%s"/>\n' \ - "$1" "$1" "$2" "$3" + "${name}" "${name}" "${xmlurl}" "${htmlurl}" } # load config file. diff --git a/sfeed_opml_import.c b/sfeed_opml_import.c index fdee71a..46aed03 100644 --- a/sfeed_opml_import.c +++ b/sfeed_opml_import.c @@ -16,9 +16,13 @@ static char url[2048], text[256], title[256]; static void printsafe(const char *s) { - for (; *s; s++) - if (!iscntrl((int)*s) && *s != '\'' && *s != '\\') - putchar((int)*s); + for (; *s; s++) { + if (iscntrl((int)*s)) + continue; + if (*s == '\\' || *s == '\'') + putchar('\\'); + putchar((int)*s); + } } static void |