summaryrefslogtreecommitdiff
path: root/sfeed_opml_export
diff options
context:
space:
mode:
authorHiltjo Posthuma <hiltjo@codemadness.org>2022-03-25 15:43:47 +0100
committerHiltjo Posthuma <hiltjo@codemadness.org>2022-03-25 15:55:44 +0100
commitca3f3fe68ae72fec6f607278bf88d30ab1497627 (patch)
tree7b8d4830351f368e2302cc9fa779d2bbab897e77 /sfeed_opml_export
parent74cf6a026e13a6e275d37bc17014908a76b41042 (diff)
change echo to printf and for sfeed_opml_export use a control-character separator
echo is unportable in this way and names containing characters like an option (-n) or backslash or escape codes (\e, \n, etc) could be messy. For awk set LC_ALL=C for simple collation. This makes sfeed_opml_export slower in some shells that don't have printf builtin though. For example with about 150 feeds in a config file it is a bit slower on OpenBSD ksh. time ./sfeed_opml_export | wc -l 152 0m00.29s real 0m00.05s user 0m00.20s system time sfeed_opml_export | wc -l 152 0m00.02s real 0m00.00s user 0m00.03s system
Diffstat (limited to 'sfeed_opml_export')
-rwxr-xr-xsfeed_opml_export12
1 files changed, 8 insertions, 4 deletions
diff --git a/sfeed_opml_export b/sfeed_opml_export
index eb22520..2a9396a 100755
--- a/sfeed_opml_export
+++ b/sfeed_opml_export
@@ -18,7 +18,7 @@ loadconfig() {
if [ -r "${path}" ]; then
. "${path}"
else
- echo "Configuration file \"${config}\" cannot be read." >&2
+ printf "Configuration file \"%s\" cannot be read.\n" "${config}" >&2
echo "See sfeedrc.example for an example." >&2
exit 1
fi
@@ -27,8 +27,8 @@ loadconfig() {
# override feed function to output OPML XML.
# feed(name, feedurl, [basesiteurl], [encoding])
feed() {
- # TABs, newlines and echo options in field values are not checked.
- echo "$1 $2"
+ # uses the characters 0x1f and 0x1e as a separator.
+ printf '%s\037%s\036' "$1" "$2"
}
# load config file.
@@ -43,7 +43,11 @@ cat <<!
<body>
!
-feeds | awk -F '\t' '{
+feeds | LC_ALL=C awk '
+BEGIN {
+ FS = "\x1f"; RS = "\x1e";
+}
+{
gsub("&", "\\&amp;");
gsub("\"", "\\&quot;");
gsub("'"'"'", "\\&#39;");