#!/bin/sh # Mark items as read/unread: the input is the read / unread URL per line. usage() { echo "usage: $0 [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 [ -z "${urlfile}" ]; then usage fi case "$1" in read) cat >> "${urlfile}" ;; unread) tmp=$(mktemp) trap "rm -f ${tmp}" EXIT [ -f "${urlfile}" ] || touch "${urlfile}" 2>/dev/null LC_ALL=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