aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dfm.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/dfm.c b/dfm.c
index 797700d..d6b6612 100644
--- a/dfm.c
+++ b/dfm.c
@@ -3548,12 +3548,16 @@ static inline void
fm_watch_handle(struct fm *p)
{
for (cut n = {0};;) {
- switch (fs_watch_pump(&p->p, &n.d, &n.l)) {
- case '!': fm_dir_refresh(p); return;
+ char r = fs_watch_pump(&p->p, &n.d, &n.l);
+ if (!r) return;
+ if (r == '!' || !n.l) {
+ fm_dir_refresh(p);
+ return;
+ }
+ switch (r) {
case '+': fm_dir_add(p, n); break;
case '-': fm_dir_del(p, n); break;
case '~': fm_dir_del(p, n); fm_dir_add(p, n); break;
- default: return;
}
}
}