summaryrefslogtreecommitdiff
path: root/sfeed_opml_export
diff options
context:
space:
mode:
Diffstat (limited to 'sfeed_opml_export')
-rwxr-xr-xsfeed_opml_export24
1 files changed, 14 insertions, 10 deletions
diff --git a/sfeed_opml_export b/sfeed_opml_export
index eb22520..f949488 100755
--- a/sfeed_opml_export
+++ b/sfeed_opml_export
@@ -7,19 +7,19 @@ loadconfig() {
if [ "$1" != "" ]; then
# get absolute path of config file required for including.
config="$1"
- path=$(readlink -f "${config}" 2>/dev/null)
+ configpath=$(readlink -f "${config}" 2>/dev/null)
else
# default config location.
config="$HOME/.sfeed/sfeedrc"
- path="${config}"
+ configpath="${config}"
fi
# config is loaded here to be able to override $sfeedpath or functions.
- if [ -r "${path}" ]; then
- . "${path}"
+ if [ -r "${configpath}" ] && [ -f "${configpath}" ]; then
+ . "${configpath}"
else
- echo "Configuration file \"${config}\" cannot be read." >&2
- echo "See sfeedrc.example for an example." >&2
+ printf "Configuration file \"%s\" cannot be read.\n" "${config}" >&2
+ echo "See the sfeedrc.example file or the sfeedrc(5) man page 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.
@@ -38,12 +38,16 @@ cat <<!
<?xml version="1.0" encoding="UTF-8"?>
<opml version="1.0">
<head>
- <title>OPML export from sfeed</title>
+ <title>OPML export</title>
</head>
<body>
!
-feeds | awk -F '\t' '{
+feeds | LC_ALL=C awk '
+BEGIN {
+ FS = "\x1f"; RS = "\x1e";
+}
+{
gsub("&", "\\&amp;");
gsub("\"", "\\&quot;");
gsub("'"'"'", "\\&#39;");