# 2023-04-23 13:00:00.133769 UTC (+0000) sfeed 1.8 was released. sfeed is a tool to convert RSS or Atom feeds from XML to a TAB-separated file. It can be found at: * git://git.codemadness.org/sfeed * gopher://codemadness.org/1/git/sfeed * https://codemadness.org/releases/sfeed/ * gopher://codemadness.org/1/releases/sfeed/ sfeed has the following small changes compared to 1.7: Fixes: * sfeed_update: fail early if creating a temporary directory or status file fails. * sfeed_atom, sfeed_json, sfeed_mbox: Fix reading past the buffer with an escaped NUL byte (\ NUL). Note that this could not happen with output from sfeed itself. Only if it was manipulated. * sfeed_curses: fix (very hard to trigger) memleak when getline() returns EOF for lazyloaded items. * sfeed parser: * Improve parsing RFC2822 obsolete short year. * Use errno ENOMEM instead of EOVERFLOW. This matches the behaviour of setting errno for malloc/calloc on the following systems too: glibc, musl libc, OpenBSD libc. * date to unix timestamp: fix incorrect int type to long. Found while testing sfeed on 16-bit MS-DOS with Open Watcom (for "fun" :)). * Makefile: remove duplicate CPPFLAGS for sfeed_curses Features: * sfeed_json: add JSON output format tool. This formats the TSV data to JSON. It uses a subset of JSON Feed 1.1: https://www.jsonfeed.org/version/1.1/ Optimizations: * sfeed_atom: save a few bytes in the output by removing the type="text" attribute, because for Atom the default for the type is text. * Slightly reduce stack size for translating XML entities. A numeric entity could use 5 bytes, so use a round number of 8 bytes. Misc: * sfeed: simplify time calculation and make it slightly easier to read. This also fixes a calculation (possibly a compiler bug) with Open Watcom 1.9. * Remove the sfeed name in some outputs ("branding"). Documentation: * Fix some typos and improve code comments, in particular about the time parsing. * README: sfeed_download example: change youtube-dl to yt-dlp: this is an active maintained fork. * README: add error checking for temporary files in the examples. Aside from the above changes there have been lots of testing on different and strange systems and the test-cases have been expanded to cover some cases. These tests are in a separate repo. Some tested strange systems: * SerenityOS: gophers://codemadness.org/9/paste/sfeed-serenityos.webm partially works. The core base utilities like sort are limited and non-POSIX though, so sfeed_update doesn't work directly there. * MS-DOS (16-bit and 32-bit extender) using Open Watcom 1.9. Works fine using a 32-bit extender. No 2038-support with 64-bit time_t though, just _unsigned_ 32-bit :) Tested these less-used systems or compilers can be fun and also discover (pedantic) bugs. While adding JSON Feed output support (sfeed_json) I also wrote a parser for it to read the data. It can convert from JSON Feed to Atom. It can also convert directly from JSON Feed to sfeed(5). It is available at: https://git.codemadness.org/jfconvert/files.html I want to thank people for sharing their experiences and scripts and nice comments. Donations can be send to: https://codemadness.org/donate/ ... or feel free to subscribe to Bitreich OnlyFans: gopher://bitreich.org/1/onlyfans :) Thanks, Hiltjo