summaryrefslogtreecommitdiff
path: root/sfeed_markread
diff options
context:
space:
mode:
Diffstat (limited to 'sfeed_markread')
-rwxr-xr-xsfeed_markread35
1 files changed, 35 insertions, 0 deletions
diff --git a/sfeed_markread b/sfeed_markread
new file mode 100755
index 0000000..d0f80e2
--- /dev/null
+++ b/sfeed_markread
@@ -0,0 +1,35 @@
+#!/bin/sh
+# Mark items as read/unread: the input is the read / unread URL per line.
+
+usage() {
+ echo "usage: $0 <read|unread> [urlfile]" >&2
+ echo "" >&2
+ echo "An urlfile must be specified as an argument or with the environment variable \$SFEED_URL_FILE" >&2
+ exit 1
+}
+
+urlfile="${2:-${SFEED_URL_FILE}}"
+if test -z "${urlfile}"; then
+ usage
+fi
+
+case "$1" in
+read)
+ cat >> "${urlfile}"
+ ;;
+unread)
+ tmp=$(mktemp)
+ trap "rm -f ${tmp}" EXIT
+ test -f "${urlfile}" || touch "${urlfile}" 2>/dev/null
+ LC_CTYPE=C awk -F '\t' '
+ { FILENR += (FNR == 1) }
+ FILENR == 1 { urls[$0] = 1 }
+ FILENR == 2 { if (!urls[$0]) { print $0 } }
+ END { exit(FILENR != 2) }' \
+ "-" "${urlfile}" > "${tmp}" && \
+ cp "${tmp}" "${urlfile}"
+ ;;
+*)
+ usage
+ ;;
+esac