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
This commit is contained in:
parent
74cf6a026e
commit
ca3f3fe68a
2
README
2
README
|
@ -578,7 +578,7 @@ procmail_maildirs.sh file:
|
|||
mkdir -p "${maildir}/.cache"
|
||||
|
||||
if ! test -r "${procmailconfig}"; then
|
||||
echo "Procmail configuration file \"${procmailconfig}\" does not exist or is not readable." >&2
|
||||
printf "Procmail configuration file \"%s\" does not exist or is not readable.\n" "${procmailconfig}" >&2
|
||||
echo "See procmailrc.example for an example." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
# Mark items as read/unread: the input is the read / unread URL per line.
|
||||
|
||||
usage() {
|
||||
echo "usage: $0 <read|unread> [urlfile]" >&2
|
||||
printf "usage: %s <read|unread> [urlfile]\n" "$0" >&2
|
||||
echo "" >&2
|
||||
echo "An urlfile must be specified as an argument or with the environment variable \$SFEED_URL_FILE" >&2
|
||||
exit 1
|
||||
|
|
|
@ -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("&", "\\&");
|
||||
gsub("\"", "\\"");
|
||||
gsub("'"'"'", "\\'");
|
||||
|
|
|
@ -27,7 +27,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
|
||||
|
@ -187,7 +187,7 @@ sighandler() {
|
|||
}
|
||||
|
||||
feeds() {
|
||||
echo "Configuration file \"${config}\" is invalid or does not contain a \"feeds\" function." >&2
|
||||
printf "Configuration file \"%s\" is invalid or does not contain a \"feeds\" function.\n" "${config}" >&2
|
||||
echo "See sfeedrc.example for an example." >&2
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue