Commit graph

8 commits

Author SHA1 Message Date
Bert Münnich a20173a42d Detect all file overwrites in autoreload_inotify
mv(1) inside the same filesystem was not detected.

Supporting this case made it necessary to always watch the directory. Turns out
the logic and state keeping between arl_setup() and arl_handle() is easier,
when using different watch descriptors for the file and the directory and not
using a oneshot descriptor for the file.

Requiring an absolute canonical path for arl_setup() simplifies dir and base
name splitting. No need for dirname(3) and basename(3) anymore.
2017-05-17 20:20:39 +02:00
Bert Münnich de3d7827ce Compiler independent buffer alignment 2017-05-17 20:15:35 +02:00
Bert Münnich 0e1a85d224 Read all available inotify events
Loop reading from inotify fd in arl_handle(); requires non-blocking inotify fd.
2017-05-17 20:14:36 +02:00
Bert Münnich 6695cd4c34 Simplify inotify cleanup 2017-05-17 20:14:20 +02:00
Bert Münnich 8bce80fdae Revised error reporting in autoreload_inotify
No repeated error messages after failed initialization. No error messages on
failed inotify_rm_watch().
2017-05-17 20:13:32 +02:00
Bert Münnich 9ac8fc62df Fix code-style in autoreload_inotify.c 2017-05-17 20:12:22 +02:00
Bert Münnich 3724d3fc17 Revised autoreload interface
Make the header only contain the public interface and nothing from the
implementation. All functions get a handle to their self object, like the img_
and tns_ and win_ functions. All necessary data (file path) is also passed as
an argument, so that no extern redeclarations are needed.

Make arl_setup_dir() private, it's not called outside the module.

Make arl_handle() return true if the file has changed, so that the reloading of
the file can be done by the caller.
2017-05-17 20:07:32 +02:00
Max Voit edb117e3bd Add autoreload support by inotify (and dummy backend nop) 2017-05-17 15:52:40 +02:00