summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2023-12-09improve compatibility with zsh as a non-interactive shellHiltjo Posthuma
In zsh the variables $path and $status are special. https://zsh.sourceforge.io/Doc/Release/Parameters.html#index-path https://zsh.sourceforge.io/Doc/Release/Parameters.html#index-status (No promises I will keep up with this insanity in the future though)
2023-11-30sfeed_json: fix name of url field for attachmentsHiltjo Posthuma
This was a typo: "url:" should be "url".
2023-09-22sfeed_curses: mark functions as staticNRK
no reason for them not to be `static` and this also silences -Wmissing-prototypes warning (note: most of this patch was done by a sed(1) command.)
2023-09-22sfeed_gopher: mark function as staticNRK
2023-08-18bump version to 1.9Hiltjo Posthuma
2023-08-15improve wording and small typosHiltjo Posthuma
2023-08-09Makefile: change -lcurses to -lncurses for Gentoo in the commentHiltjo Posthuma
Reported by commodorian, thanks!
2023-08-01sfeed_update.1: remove mentioning of / in path names hereHiltjo Posthuma
This is documented in the sfeedrc.5 also where it is more suitable.
2023-08-01sfeed_curses.1: fix 2 typosHiltjo Posthuma
2023-08-01sfeed_json.1: make the formatting consistent with other similar man pagesHiltjo Posthuma
Such as sfeed_atom.1 or sfeed_twtxt.1
2023-07-31fix typo: current -> currentlyHiltjo Posthuma
Reported by Allan Wind, thanks!
2023-07-07sfeed_markread: fail early if creating a temporary file failedHiltjo Posthuma
2023-07-07sfeedrc.5: document each feed name should be uniqueHiltjo Posthuma
Asked via e-mail. This confused a person which converted an OPML file which yielded an sfeedrc with duplicate names or multiple "unnamed" entries. This caused sfeed_update to fail, because it tried to merge files with the same name and causing a race-condition because the temporary file with the same name was already moved.
2023-07-07sfeed_curses: move one line down when marking an item as read or unreadHiltjo Posthuma
I don't mind either behaviour, but it has been suggested by a few people. For example the mutt mail client also has this behaviour.
2023-07-02sfeedrc.5: remove branding (shaken, not stirred)Hiltjo Posthuma
2023-06-09sfeedrc.5: improve example by setting a different User-AgentHiltjo Posthuma
This is useful for sites that block clients that don't have a User-Agent header set.
2023-06-09README: improve note about CDNs and user-agent blockingHiltjo Posthuma
Prompted by a question from a user. Specificly mention reddit.com now blocks clients which don't set the User-Agent header. It is specificly mentioned because there is a reddit feed in the example sfeedrc.
2023-06-09add comment to reference to the man pages and README fileHiltjo Posthuma
These file contain examples and more details and may be overlooked/forgotten.
2023-06-09sfeed_update/sfeedrc: add url as parameter to the filter() and order() functionHiltjo Posthuma
This might make it easier to set filters or ordering by pattern matching on a group of feeds by the feed URL. For example youtube or reddit feeds. Another way which was already possible is prefixing names with for example: "reddit somename" or "yt somename".
2023-05-16improve to use proper includesHiltjo Posthuma
Reduce using some of the unneeded sys/* headers too. This makes it slightly more portable or easier to port also.
2023-05-16README: RSS 0.90+ is supported, not 0.91+Hiltjo Posthuma
See also: https://www.rssboard.org/rss-0-9-0
2023-05-15sfeed_atom: gmtime_r make it consistent with sfeed_mboxHiltjo Posthuma
When gmtime_r is called to get the current time show the same error message as sfeed_mbox does.
2023-05-15fix typoHiltjo Posthuma
2023-05-14sfeed_gopher: reduce scope and shadowing a variableHiltjo Posthuma
2023-05-14sfeed_curses.c: make struct urls static like the other variablesHiltjo Posthuma
2023-05-14xml.h: _XML_H_: macro name with an underscore is a reserved identifierHiltjo Posthuma
Found with clang -Wreserved-macro-identifier See also: https://wiki.sei.cmu.edu/confluence/display/c/DCL37-C.+Do+not+declare+or+define+a+reserved+identifier
2023-05-07iterate on previous commit which adds $SFEED_NEW_MAX_SECSHiltjo Posthuma
Separate the common pattern to get the time to compare new items in format tools to the new util function: getcomparetime(). Some changes and notes: - Change it so it is OK to set this value to 0 or negative (in the future). - sfeed_curses: truncating newmaxsecs to an int would limit the value too much. - Just use strtotime() and parse the value to time_t. This is a signed long (32-bit, until 2038) or signed long long (64-bit) on most platforms. - sfeed_curses gets the comparison time on reload aswell and it needs errno = 0, because it uses die(). time() is not guaranteed to set an errno if it fails. - Rename environment variable to $SFEED_NEW_AGE.
2023-05-07sfeed: datetounix: code-style, change , to separate lines (-Wcomma)Hiltjo Posthuma
2023-05-07sfeed_{curses,frames,gopher,html,plain}: SFEED_NEW_MAX_SECSAlvar Penning
By introducing the new environment variable $SFEED_NEW_MAX_SECS in all sfeed_* utilities marking feeds as new based on comparing their age, it is now possible to override this age limit. This allows, for example, to be notified about new feeds within the last hour with SFEED_NEW_MAX_SECS=3600 sfeed_plain ~/.sfeed/feeds/* while creating a beautiful web report for last week's news by SFEED_NEW_MAX_SECS=604800 sfeed_html ~/.sfeed/feeds/*
2023-04-23bump version to 1.8Hiltjo Posthuma
2023-04-14use errno ENOMEM instead of EOVERFLOWHiltjo Posthuma
This matches the behaviour of setting errno for malloc/calloc on the following systems too: glibc, musl libc, OpenBSD libc. It is also more portable for (older) systems.
2023-04-14slightly reduce stack size for entitiesHiltjo Posthuma
A numeric entity could be 5 bytes, so use a round number of 8 bytes.
2023-04-13atom, json, mbox: fix reading past the buffer with an escaped NUL byte (\ NUL)Hiltjo Posthuma
This would skip checking the end of the string of checking a NUL byte, because the iteration was done before checking it. It would proceed into the data that comes after. Note that sfeed itself can't generate such malformed data itself. Example input: 0 title link content\ html Would incorrect print "contenthtml" as the content.
2023-04-12fix some typosHiltjo Posthuma
2023-04-10sfeed_json: add JSON output format toolHiltjo Posthuma
This outputs the TSV data to JSON. It uses a subset of JSON Feed 1.1: https://www.jsonfeed.org/version/1.1/
2023-04-10sfeed.c: slightly reduce stack size for entitiesHiltjo Posthuma
A numeric entity could be 5 bytes, so use a round number of 8 bytes. No other change intended and no performance difference noticed.
2023-04-10remove sfeed "branding" in outputsHiltjo Posthuma
Technically for sfeed_atom this violates the RFC standard. There must be an author in the feed or for an item. However sfeed is not the author, it is a generator. All readers will read these feeds anyway. https://www.rfc-editor.org/rfc/rfc4287#section-4.1.1 "atom:feed elements MUST contain one or more atom:author elements, unless all of the atom:feed element's child atom:entry elements contain at least one atom:author element." *shrug*
2023-04-10sfeed_atom: in Atom the default for a type is textHiltjo Posthuma
Save a few bytes in the output by removing it. https://www.rfc-editor.org/rfc/rfc4287 3.1.1. The "type" Attribute The title is an atomTextConstruct.
2023-04-07sfeed.c: datetounix: add commentsHiltjo Posthuma
2023-04-06README: sfeed_download: change youtube-dl to yt-dlpHiltjo Posthuma
This is an active maintained fork.
2023-04-06README: improve error checking for temporary files in examplesHiltjo Posthuma
Similar to the recent fix for sfeed_update in commit 5a27c58675ddf4113d64a84f715cb3fecb681a6d
2023-04-06README: fix typo JSONfeed -> JSON FeedHiltjo Posthuma
https://www.jsonfeed.org/version/1.1/
2023-04-05sfeed_update: fail early if creating a temporary directory or status file failsHiltjo Posthuma
If creating a temporary directory for the feed files failed then $sfeedtmpdir would be empty and it would try to: mkdir -p "/feed" touch "/feed/ok" After failing it would also still try to process all the feeds. Now just fail early. mktemp or touch themselve will print the actual error to stderr.
2023-03-26sfeed.c: parsetime improve parsing RFC2822 obsolete short yearHiltjo Posthuma
https://datatracker.ietf.org/doc/html/rfc2822#section-4.3 "Where a two or three digit year occurs in a date, the year is to be interpreted as follows: If a two digit year is encountered whose value is between 00 and 49, the year is interpreted by adding 2000, ending up with a value between 2000 and 2049. If a two digit year is encountered with a value between 50 and 99, or any three digit year is encountered, the year is interpreted by adding 1900." Improvement on commit 7086670e4335714e1df982bf1058082b7400b653 For example (output from TZ=UTC sfeed_plain): input: Sun, 26 Jul 049 19:26:34 was: 2049-07-26 19:26 now: 1949-07-26 19:26 (because this is a 3-digit year) input: Sun, 26 Jul 1 19:26:34 was: 2001-07-26 19:26 now: 0001-07-26 19:26 (because this is a 1-digit year and doesn't match the short year rule) input: Sun, 26 Jul 001 19:26:34 was: 2001-07-26 19:26 now: 1901-07-26 19:26 (because this is a 3 digit year) These cases are all added to the tests in the sfeed_tests repo (times.xml file).
2023-03-26sfeed.c: datetounix: simplify calculation and make it slightly easier to readHiltjo Posthuma
This also fixes a calculation (possibly a compiler bug) with Open Watcom 1.9.
2023-03-26README: add Open Watcom as a tested compilerHiltjo Posthuma
Tested sfeed, sfeed_plain and sfeed_html for now. There are minor changes required for sfeed and some additional compatibility function changes required to make the format tools compile. Rough list of changes required: - xml.c: rename getchar_unlocked -> getchar - sfeed.c: EOVERFLOW -> ENOMEM - wcwidth: just filter ASCII range < 32 = -1 and > 127 = 0, rest = 1. - getline - localtime_r -> just do a localtime + memcpy. Make sure to increase stack size when compiling: owcc -k32768 -Os -s -o sfeed.exe sfeed.c util.c xml.c Resulting .exe binary is 27KB, 17KB compressed with UPX. The HTML output looks fine in Netscape Navigator and Internet Explorer 3 :)
2023-03-26sfeed.c: datetounix: fix incorrect int type to longHiltjo Posthuma
Found while testing sfeed on MS-DOS with Open Watcom (for fun :)). There an int is 16-bit and sfeed incorrectly wrapped the value, which produced incorrect parsed UNIX timestamps as output.
2023-03-14Makefile: remove duplicate CPPFLAGS for sfeed_cursesHiltjo Posthuma
2023-03-07sfeed_curses: fix (very hard to trigger) memleak when getline() returns EOF ↵Hiltjo Posthuma
for lazyloaded items Fix the code pattern of freeing the line when getline returns -1 but no error flag is set on the stream (such as EOF). Note that on errors (even ENOMEM: out-of-memory) an error flag is set on the stream and the process would exit and clean up all it's resources. This would be very hard to trigger. The following conditions would have to be true: * Lazyloading of items is enabled: SFEED_LAZYLOAD=1 is set. * Items of the feed are read and their offsets stored. * The line is read/lazy-loaded again by it's offset but returns EOF (not a read error) this time. This could maybe happen if the feed file was changed and made smaller while sfeed_curses is running and the remembered offset is now beyond the file. Note that the sfeed_curses(1) man page describes a workaround for a similar condition by sending SIGHUP if the sfeed(5) data was changed to reload the feed file. References: * https://man.openbsd.org/getline "It is the responsibility of the caller to free(3) *lineptr when it is no longer needed. Even when it fails, getdelim() may update *lineptr." * https://pubs.opengroup.org/onlinepubs/9699919799/functions/getline.html
2023-02-25bump version to 1.7Hiltjo Posthuma