diff options
-rw-r--r-- | lisp/ChangeLog | 5 | ||||
-rw-r--r-- | lisp/filenotify.el | 3 | ||||
-rw-r--r-- | src/ChangeLog | 6 | ||||
-rw-r--r-- | src/w32notify.c | 22 |
4 files changed, 27 insertions, 9 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 50f587d1126..3ff0a40b2e4 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2013-11-27 Eli Zaretskii <eliz@gnu.org> + + * filenotify.el (file-notify-add-watch): Don't special-case + w32notify when computing the directory to watch. + 2013-11-27 Glenn Morris <rgm@gnu.org> Make bootstrap without generated uni-*.el files possible again. diff --git a/lisp/filenotify.el b/lisp/filenotify.el index c980d720714..72ee0ced785 100644 --- a/lisp/filenotify.el +++ b/lisp/filenotify.el @@ -237,8 +237,7 @@ FILE is the name of the file whose event is being reported." (let* ((handler (find-file-name-handler file 'file-notify-add-watch)) (dir (directory-file-name - (if (or (and (not handler) (eq file-notify--library 'w32notify)) - (file-directory-p file)) + (if (file-directory-p file) file (file-name-directory file)))) desc func l-flags) diff --git a/src/ChangeLog b/src/ChangeLog index 7b518fdc239..b43f758cec4 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2013-11-27 Eli Zaretskii <eliz@gnu.org> + + * w32notify.c (Fw32notify_add_watch): If the argument FILE is a + directory, watch it and not its parent. + (add_watch): Allow empty string in FILE. + 2013-11-27 Martin Rudalics <rudalics@gmx.at> * window.c (Fset_window_start, window_resize_apply) diff --git a/src/w32notify.c b/src/w32notify.c index a48a83daf53..1f2ef83b2fd 100644 --- a/src/w32notify.c +++ b/src/w32notify.c @@ -324,7 +324,7 @@ add_watch (const char *parent_dir, const char *file, BOOL subdirs, DWORD flags) HANDLE hdir; struct notification *dirwatch = NULL; - if (!file || !*file) + if (!file) return NULL; hdir = CreateFile (parent_dir, @@ -526,13 +526,21 @@ generate notifications correctly, though. */) report_file_error ("GetFullPathName failed", Fcons (lisp_errstr, Fcons (file, Qnil))); } - /* We need the parent directory without the slash that follows it. - If BASENAME is NULL, the argument was the root directory on its - drive. */ - if (basename) - basename[-1] = '\0'; + /* filenotify.el always passes us a directory, either the parent + directory of a file to be watched, or the directory to be + watched. */ + if (file_directory_p (parent_dir)) + basename = ""; else - subdirs = TRUE; + { + /* This should only happen if we are called directly, not via + filenotify.el. If BASENAME is NULL, the argument was the + root directory on its drive. */ + if (basename) + basename[-1] = '\0'; + else + subdirs = TRUE; + } if (!NILP (Fmember (Qsubtree, filter))) subdirs = TRUE; |