Age | Commit message (Collapse) | Author |
|
This include is not needed. It was intended for ssize_t but this is already
defined by stdio.h for getline().
|
|
This also makes the programs exit with a non-zero status when a read or write
error occurs.
This makes checking the exit status more reliable in scripts.
A simple example to simulate a disk with no space left:
curl -s 'https://codemadness.org/atom.xml' | sfeed > f
/mnt/test: write failed, file system is full
echo $?
0
Which now produces:
curl -s 'https://codemadness.org/atom.xml' | sfeed > f
/mnt/test: write failed, file system is full
write error: <stdout>
echo $?
1
Tested with a small mfs on OpenBSD, fstab entry:
swap /mnt/test mfs rw,nodev,nosuid,-s=1M 0 0
|
|
Use errx, time(NULL) does not set errno. For sfeed_curses reset errno so it
doesn't print a random error if it failed.
POSIX recommends checking against (time_t)-1 on failure.
Note that some implementation, like the OpenBSD man page says time() cannot
fail.
|
|
These are BSD functions.
- HaikuOS now compiles without having to use libbsd.
- Tested on SerenityOS (for fun), which doesn't have these functions (yet).
With a small change to support wcwidth() sfeed works on SerenityOS.
|
|
This title format now matches the one with sfeed_curses. It shows the count to
the most left and makes it more readable imho. It also works better when the
titlebar is small.
|
|
Make a huge difference (cuts the time in half to process the same amount of
lines) on atleast glibc 2.30 on Void Linux. Seems to make no difference on
OpenBSD.
- This removes atleast one heap allocation per line (checked with valgrind).
This is because glibc will strdup() the environment variable $TZ and free it
each time, which is pointless here and wasteful.
- localtime_r does not require to set the variables like tzname.
In glibc-2.30/time/tzset.c in __tz_convert is the following code and comment:
/* Update internal database according to current TZ setting.
POSIX.1 8.3.7.2 says that localtime_r is not required to set tzname.
This is a good idea since this allows at least a bit more parallelism. */
tzset_internal (tp == &_tmbuf && use_localtime);
This makes it always tzset() and inspect the environment $TZ etc. While with
localtime_r it will only initialize it once:
static void tzset_internal (int always) {
[...]
if (is_initialized && !always)
return;
|
|
Since commit 276d5789fd91d1cbe84b7baee736dea28b1e04c0 if the time is empty or
could not be parsed then it is shown/aligned as a blank space instead of being
skipped.
An oversight in this change was that items should be counted and set in
`isnew`.
This commit fixes the uninitialized variable and possible miscounting.
|
|
Handle it appropriately in the context of each format tool. Output the item but
keep it blanked.
NOTE: maybe in sfeed_twtxt it should use the current time instead?
|
|
There's no need for a dynamic struct feed **. The required size is known
(argc). Just allocate it in one go.
|
|
- remove a check that has no use/can never happen.
- remove the return value as it's unused and the input size is known.
- fix an old comment that doesn't reflect what the function does anymore.
|
|
The previous style was not bold:
<b><a href="">some link</a></b>
The following link is now bold:
<a href=""><b>some link</b></a>
|
|
This improves output with Dillo, w3m and possibly other simple browsers.
- Dillo has a bug where it resets its block-style after <h2> when it is inside
<pre>. Then it ignores newlines (inside <pre>) and the links are inlined.
- w3m does not have a (line)margin for h2.
|
|
|
|
|
|
Do not send referer header if the browser supports this tag. This makes sure in
some browsers where referer hiding is not setup this header is still hidden.
The proper way is to setup your browser environment however to strip/change the
referer header and trim your browser footprint.
|
|
declare UTF-8 before <title>
|
|
|
|
sfeed_frames used to write HTML pages for each entry for each feed. This can
be useful but had security issues, because the context of the content changes.
sfeed_frames is now a HTML version which works better with browsers that don't
support CSS or tables well like w3m and lynx. It is now an alternative for
sfeed_html.
- Don't reference and embed HTML content for security reasons. This was
documented under "SECURITY CONSIDERATIONS" in the man page.
- Tighten pledge(2).
- Simplify
|
|
|
|
this makes sure tail -f with multiple files ignores the ==> file <== lines too.
|
|
|
|
|
|
this entity is XHTML, it is not supported by some (older) browsers.
|
|
reasons:
- HTML table rendering is extremely slow (invalidate because of resizing cells etc).
- whitespace wrapping does not work properly in ancient browsers, links(1).
|
|
|
|
this makes sure if an item has the same title but is posted or updated at a
different time it will not overwrite the file.
|
|
|
|
... as a bonus it also saves an allocation.
|
|
- less overhead (we only need GMT time) so no setenv("TZ", ...) tzset() crap.
- timezone format (for example %z in strptime) is non-standard,
this will add some lines of code and some complexity to our code though, but
the trade-off is worth it imho.
|
|
|
|
use 0777 and 0666 permissions, it will respect the process umask (generally 0022), so
0755 and 0644 effectively.
|
|
no need to stat and then mkdir, this is a (theoretical) race-condition too.
|
|
|
|
|
|
... it did not abort, but set it anyway. I think cpath implies
fattr, it makes sense.
|
|
check errno EEXIST (file exist? -> ignore), handle other errno codes as errors.
... also make sure to fflush write before modifying file access and modification
timestamps or it will be overwritten again.
|
|
... and use futimens() in favor of deprecated utime().
a minor difference in behaviour is now filetimes are only updated when the
file doesn't exist.
minor cleanup: remove namelen, its variable was unused (reported by cppcheck).
|
|
|
|
- pledge tools and add define to enable it on platforms that support it, currently
only OpenBSD 5.9+
- separate getline and parseline functionality.
- use murmur3 hash instead of jenkins1: faster and less collisions.
- make some error messages a bit more clear, for example with path truncation.
- some small cleanups, move printutf8pad to util.
|
|
|
|
|
|
|
|
as input: an empty string or non-digit characters are digits are considered an
error now. Still, for the format tools output the formatted time string as
time_t 0 on a parse error.
|
|
|
|
This prevents unnecessary path-truncation in some cases, with the side-effect
it can overwrite items with the same title more often.
We handle path truncation as a fatal error, so this was annoying.
|
|
|
|
|
|
... put specific formatting-logic per program (printcontent()).
|
|
- Only escape characters in "content" field, these can contain newlines.
- Trim newlines and tabs, etc from the title, id and author fields.
- Make decodefield, xmlencode functions easier to "chain" without allocatting
new buffers.
- Move printutf8pad from util (only used by sfeed_plain) to sfeed_plain.
- Update README, still need to update the man-page and improve the documentation
in general.
- Code cleanup.
|
|
|