From 74cf6a026e13a6e275d37bc17014908a76b41042 Mon Sep 17 00:00:00 2001 From: Hiltjo Posthuma Date: Wed, 23 Mar 2022 19:38:30 +0100 Subject: shellscripts: use [ for test consistently --- sfeed_markread | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'sfeed_markread') diff --git a/sfeed_markread b/sfeed_markread index a40e572..4c509f3 100755 --- a/sfeed_markread +++ b/sfeed_markread @@ -9,7 +9,7 @@ usage() { } urlfile="${2:-${SFEED_URL_FILE}}" -if test -z "${urlfile}"; then +if [ -z "${urlfile}" ]; then usage fi @@ -20,7 +20,7 @@ read) unread) tmp=$(mktemp) trap "rm -f ${tmp}" EXIT - test -f "${urlfile}" || touch "${urlfile}" 2>/dev/null + [ -f "${urlfile}" ] || touch "${urlfile}" 2>/dev/null LC_ALL=C awk -F '\t' ' { FILENR += (FNR == 1) } FILENR == 1 { urls[$0] = 1 } -- cgit v1.2.3 From ca3f3fe68ae72fec6f607278bf88d30ab1497627 Mon Sep 17 00:00:00 2001 From: Hiltjo Posthuma Date: Fri, 25 Mar 2022 15:43:47 +0100 Subject: 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 --- README | 2 +- sfeed_markread | 2 +- sfeed_opml_export | 12 ++++++++---- sfeed_update | 4 ++-- 4 files changed, 12 insertions(+), 8 deletions(-) (limited to 'sfeed_markread') diff --git a/README b/README index 6ce4231..9658ab6 100644 --- a/README +++ b/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 diff --git a/sfeed_markread b/sfeed_markread index 4c509f3..b262bdd 100755 --- a/sfeed_markread +++ b/sfeed_markread @@ -2,7 +2,7 @@ # Mark items as read/unread: the input is the read / unread URL per line. usage() { - echo "usage: $0 [urlfile]" >&2 + printf "usage: %s [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 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 < ! -feeds | awk -F '\t' '{ +feeds | LC_ALL=C awk ' +BEGIN { + FS = "\x1f"; RS = "\x1e"; +} +{ gsub("&", "\\&"); gsub("\"", "\\""); gsub("'"'"'", "\\'"); diff --git a/sfeed_update b/sfeed_update index 2e54a59..857f537 100755 --- a/sfeed_update +++ b/sfeed_update @@ -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 } -- cgit v1.2.3 From 92e833940f8a418157e84f8c1827c40a6a8a44c3 Mon Sep 17 00:00:00 2001 From: Hiltjo Posthuma Date: Fri, 7 Jul 2023 11:47:31 +0200 Subject: sfeed_markread: fail early if creating a temporary file failed --- sfeed_markread | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'sfeed_markread') diff --git a/sfeed_markread b/sfeed_markread index b262bdd..cad71bc 100755 --- a/sfeed_markread +++ b/sfeed_markread @@ -18,7 +18,7 @@ read) cat >> "${urlfile}" ;; unread) - tmp=$(mktemp) + tmp="$(mktemp)" || exit 1 trap "rm -f ${tmp}" EXIT [ -f "${urlfile}" ] || touch "${urlfile}" 2>/dev/null LC_ALL=C awk -F '\t' ' -- cgit v1.2.3