sfeed_markread 742 B

123456789101112131415161718192021222324252627282930313233343536
  1. #!/bin/sh
  2. # Mark items as read/unread: the input is the read / unread URL per line.
  3. usage() {
  4. printf "usage: %s <read|unread> [urlfile]\n" "$0" >&2
  5. echo "" >&2
  6. echo "An urlfile must be specified as an argument or with the environment variable \$SFEED_URL_FILE" >&2
  7. exit 1
  8. }
  9. urlfile="${2:-${SFEED_URL_FILE}}"
  10. if [ -z "${urlfile}" ]; then
  11. usage
  12. fi
  13. case "$1" in
  14. read)
  15. cat >> "${urlfile}"
  16. ;;
  17. unread)
  18. tmp=$(mktemp)
  19. trap "rm -f ${tmp}" EXIT
  20. [ -f "${urlfile}" ] || touch "${urlfile}" 2>/dev/null
  21. LC_ALL=C awk -F '\t' '
  22. { FILENR += (FNR == 1) }
  23. FILENR == 1 { urls[$0] = 1 }
  24. FILENR == 2 { if (!urls[$0]) { print $0 } }
  25. END { exit(FILENR != 2) }' \
  26. "-" "${urlfile}" > "${tmp}" && \
  27. cp "${tmp}" "${urlfile}"
  28. ;;
  29. *)
  30. usage
  31. ;;
  32. esac