Age | Commit message (Collapse) | Author |
|
... and simplify example in README.
|
|
char *line is a global variable (reused pointer to line buffer).
|
|
This is useful for example for podcasts (audio attachment), newsposts (usually
some image) or comic strips (link to page, image as enclosure).
thanks leot for the feedback!
|
|
- Better checking and verbose logging (on failure) of each stage:
fetchfeed, filter, merge, order, convertencoding. This makes sure on out-of-memory,
disk-space or other resource limits the output is not corrupted.
- This also has the added advantage it runs less processes (piped) at the same
time.
- Clear previous unneeded file to preserve space in /tmp
(/tmp is often mounted as mfs/tmpfs).
- Add logging function (able to override), use more logical logging format (pun
intended).
- Code-style: order overridable functions in execution order.
|
|
make the procmail example safer due to account process limits.
|
|
|
|
This reduces much function call overhead. getnext is defined in xml.h for
inline optimization. sfeed only uses one XML parser context per program, this
allows further optimizations of the compiler also.
On OpenBSD it was noticable because of retpoline etc function call overhead.
Using clang and a 500MB test XML file reduces processing time from +- 12s to
5s.
Tested using some crazy optimization flags:
SFEED_CFLAGS = -O3 -std=c99 -DGETNEXT=getchar_unlocked -fno-ret-protector \
-mno-retpoline -static
A GETNEXT macro is also nice for programs which mmap(2) some big XML file. Then
you can simply define:
#define GETNEXT() (off >= len ? EOF : reg[off++])
|
|
declare UTF-8 before <title>
|
|
|
|
|
|
on OpenBSD: make COMPATOBJ=
|
|
this allows to override x->getnext to expand to global context parsing and
allows the compiler to optimize this inline.
also remove checking if the x->getnext function exists (just crash hard).
|
|
POSIX says about snprintf:
"If an output error was encountered, these functions shall return a
negative value".
So check for < 0 instead of -1. Afaik all implementations return -1 though.
|
|
|
|
|
|
this style change is useful for my local coverage profile.
|
|
|
|
|
|
|
|
In RSS2 (but not RSS0.9), a <link> is optional and it can also be specified by
<guid isPermaLink="true"> (permalink is "true" by default).
When a <link> is also present this will be used instead of the GUID permalink.
|
|
|
|
the Atom link parsing is more strict now and checks the rel attribute. When the
rel attribute is empty it is handled as a normal link ("alternate").
This makes sure when an link with an other type is specified (such as
"enclosure", "related", "self" or "via") before a link it is not used.
sfeed does not handle enclosures, but the code is reworked so it is very simple
to add this. Enclosures are often used for example to attach some image to a
newspost or an audio file to a podcast.
|
|
|
|
|
|
|
|
|
|
change installed doc from /usr/local/share/sfeed to /usr/local/share/doc/sfeed
|
|
Noticed in the webcomic "amphibian":
http://amphibian.com/feeds/atom
|
|
... and abstract printing timetamp and uri to string_print_{timestamp,uri}
similar to string_print_trimmed (normal string) and string_print_encoded
(content).
Noticed with whitespace around the field in the webcomic "amphibian":
http://amphibian.com/feeds/atom
|
|
|
|
|
|
|
|
This was removed before, because of potential security issues in commit
b7e288a96418e1ea5e7904ab2896edb3f4615a10
Thanks trqx for the feedback.
|
|
|
|
|
|
this also makes packaging slightly simpler.
|
|
Man pages:
- sfeed_update: fix: fetchfeed parameter documentation.
- sfeed_update: fix/update: urls in sfeedrc.example.
- sfeed_update: document maxjobs variable.
- sfeedrc: document filter and order functions here.
- more semantic keywords: function arguments and some Nm.
README:
- Document more clearly sfeedrc is a shellscript at the first usage "steps".
- Add newsboat OPML export and import to sfeed_update example.
- Document the Makefile is POSIX (not some GNU/Makefile).
- Add reference to my tool hurl: a HTTP/HTTPS/Gopher file grab client.
- Describe the reason/usefulness of the filter example.
- Describe how to override curl(1), an optional dependency.
With feedback from lich, thanks!
|
|
|
|
- reduce amount of data to check.
- remove unnecesary checks from (now) internal functions.
|
|
|
|
|
|
+ change "append" to "change".
|
|
The files are now checked every 10 seconds instead of 1 second.
NOTE: ofcourse it still first checks the filesize and modification time and
only then proceeds.
|
|
in scripts empty output should be checked.
|
|
|
|
- Stricter parsing of tags, no whitespace stripping after <.
- For end tags the "internal" context x->tag would be "/sometag". Make sure
this matches exactly with the parameter tag.
- Reset tagname after parsing an end tag.
- Make end tag handling more consistent.
- Remove temporary variable taglen.
|
|
|
|
|
|
|
|
|