]> Sergey Matveev's repositories - nnn.git/commitdiff
Disable dir watch in filter mode
authorArun Prakash Jana <engineerarun@gmail.com>
Tue, 22 Aug 2017 21:58:26 +0000 (03:28 +0530)
committerArun Prakash Jana <engineerarun@gmail.com>
Wed, 23 Aug 2017 03:59:21 +0000 (09:29 +0530)
nnn.c

diff --git a/nnn.c b/nnn.c
index 4c8ac9434657c0a4df6ffee2372069e3f8a89106..981a443bdfb65ee8c1773837f45e199f58c25c7c 100644 (file)
--- a/nnn.c
+++ b/nnn.c
@@ -785,21 +785,35 @@ nextsel(char **run, char **env, int *presel)
 
        if (c == 0)
                c = getch();
-       else
+       else {
                *presel = 0;
 
+               /* Unwatch dir if we are still in a filtered view */
+#ifdef LINUX_INOTIFY
+               if (inotify_wd >= 0) {
+                       inotify_rm_watch(inotify_fd, inotify_wd);
+                       inotify_wd = -1;
+               }
+#elif defined(BSD_KQUEUE)
+               if (event_fd >= 0) {
+                       close(event_fd);
+                       event_fd = -1;
+               }
+#endif
+       }
+
        if (c == -1) {
                ++idle;
-#ifdef LINUX_INOTIFY
+
                /* Do not check for directory changes in du
                 * mode. A redraw forces du calculation.
                 * Check for changes every odd second.
                 */
-               if (!cfg.blkorder && inotify_wd >= 0 && idle & 1)
-                       if (read(inotify_fd, inotify_buf, EVENT_BUF_LEN) > 0)
+#ifdef LINUX_INOTIFY
+               if (!cfg.blkorder && inotify_wd >= 0 && idle & 1 && read(inotify_fd, inotify_buf, EVENT_BUF_LEN) > 0)
 #elif defined(BSD_KQUEUE)
-               if (!cfg.blkorder && event_fd >= 0 && idle & 1)
-                       if (kevent(kq, events_to_monitor, NUM_EVENT_SLOTS, event_data, NUM_EVENT_FDS, &gtimeout) > 0)
+               if (!cfg.blkorder && event_fd >= 0 && idle & 1
+                   && kevent(kq, events_to_monitor, NUM_EVENT_SLOTS, event_data, NUM_EVENT_FDS, &gtimeout) > 0)
 #endif
                                c = CONTROL('L');
        } else
@@ -2492,7 +2506,7 @@ nochange:
                                break;
 
                        /* Open the descriptor to currently open directory */
-                       fd = open(path, O_RDONLY | O_DIRECTORY | O_NOATIME);
+                       fd = open(path, O_RDONLY | O_DIRECTORY);
                        if (fd == -1) {
                                printwarn();
                                goto nochange;