v1.0 (unreleased) ==== * Simplified the sfeed(5) format: * The formatted time field is removed. * The feedtype field (values "atom" or "rss") is removed. To convert your files from the previous format to the changed format you can just remove the fields: cd ~/.sfeed/feeds for i in *; do cut -f 1,3-8 "$i" > /tmp/t; mv /tmp/t "$i"; done * Simpler and much faster time parsing in sfeed(1): like timegm(3), this is also more portable. * 2038-proof: support 64-bit time_t, output truncated as long long int. * The format programs now use the localtime and a shorter time format: "yyyy-mm-dd HH:MM" instead of "yyyy-mm-dd HH:MM:SS timezone". If you run the programs on a system in a different timezone make sure to update the TZ environment variable or change the source-code to show the UTC offset. Minor fixes: * Check errno (ERANGE) when parsing UNIX timestamp from a sfeed(5) file. * sfeed_frames: don't make title of content a HTML anchor if it's empty. * sfeed_frames: make the filename of the content file more unique: use the UNIX timestamp in the filename. This makes sure it won't overwrite older content files anymore which had the same title, but a different timestamp. Documentation: * Add sfeed(5) man page which explains the feed file format, this information is also still available in sfeed(1). * Rewrite some sentences so it is hopefully more clear. v0.9.1 ====== * Improved `make dist` rule in Makefile: don't build binaries before packaging the source files. Package the source files in the relative path sfeed-VERSION/. v0.9 ==== Features: --------- * sfeed_update: feeds are now by default updated concurrently for an increase in performance. * sfeed_update: Auto-detect XML character set encoding (sfeed_xmlenc). * sfeed_update: don't send user-agent by default (used to send: curl+version). * Removed the dependency on libexpat, using a custom XML parser (xml.*), this parser is also non-validating, it will not check the XML for errors or stop parsing if it contains errors (which is good). * On OpenBSD 5.9+ the sfeed tools can now use pledge(2) as a security mitigation. Most tools only require "stdio" and read-only filesystem access. To enable it the CPPFLAGS -DUSE_PLEDGE can be used, see the file: config.mk. * Added (optional) format tools: * Add sfeed_frames, a formatting program to output feeds as a HTML file with frames. It's optimized to look good in older browsers that don't necesarily support CSS or modern HTML, like links. See the man page for more details. * Add sfeed_mbox: format feeds to mbox format. * Add sfeed_tail: poll files or stdin and print unique/unseen items to stdout, this is inspired from RSSTail. * Add sfeed_web: find RSS/Atom feeds from web-pages. Documentation: -------------- * Changed to mandoc (semantic) for the documentation format, for older systems man pages can be created with mandoc -Tman. * Major improvements to the documentation quality. License: -------- * Changed license from MIT to ISC (simpler wording). Bug fixes: ---------- * sfeed_update: fix issue with merging failed feeds, the date from the last (possibly failed) request would be used and passed as HTTP If-Modified-Since, so data would be missed, see commit 77a603a904087dd9fd3350da029f279f076e4f4b for more info. * Fix possible TOCTOU in sfeed_frames. * Fix crash with repeated tags: in Atom feeds. * Path truncations are now treated as fatal errors. * Remove use of deprecated (POSIX) functions: timegm, utime. * Fix off-by-one in string_append when reallocating buffer. * Parsing datetime strings containing timezone suffix to UNIX timestamps was wrong. UNIX timestamps are in UTC+0 time. For simplicity sake output parsed datetime strings in a formatted manner without converting the time to the user selected timezone YYYY-mm-dd HH:MM:SS (UTC[+-][HHMM])|tz . * Also to determine if an item is new - by comparing the UNIX timestamp - don't take into account timezones, because setenv(TZ,...) is just ugly and I don't use it. * Lots of small fixes for compatibility with RSS / Atom feeds. * Many more improvements, I'll keep a more detailed list in the future. v0.8 ==== No history