emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 12629d2: Implement w32notify-valid-p


From: Eli Zaretskii
Subject: [Emacs-diffs] master 12629d2: Implement w32notify-valid-p
Date: Mon, 14 Sep 2015 07:03:10 +0000

branch: master
commit 12629d2857ba2a7c8a6b6a6b61f28a179d2c92a7
Author: Eli Zaretskii <address@hidden>
Commit: Eli Zaretskii <address@hidden>

    Implement w32notify-valid-p
    
    * src/w32notify.c (Fw32notify_valid_p): New function.  (Bug#21432)
    
    * lisp/filenotify.el (w32notify-valid-p): No longer an alias for
    'identity'.
---
 lisp/filenotify.el |    1 -
 src/w32notify.c    |   24 ++++++++++++++++++++++++
 2 files changed, 24 insertions(+), 1 deletions(-)

diff --git a/lisp/filenotify.el b/lisp/filenotify.el
index 9a48c5e..002c5a5 100644
--- a/lisp/filenotify.el
+++ b/lisp/filenotify.el
@@ -359,7 +359,6 @@ DESCRIPTOR should be an object returned by 
`file-notify-add-watch'."
 
 ;; Temporary declarations.
 (defalias 'gfile-valid-p 'identity)
-(defalias 'w32notify-valid-p 'identity)
 
 (defun file-notify-valid-p (descriptor)
   "Check a watch specified by its DESCRIPTOR.
diff --git a/src/w32notify.c b/src/w32notify.c
index ab6cd12..fa4ad01 100644
--- a/src/w32notify.c
+++ b/src/w32notify.c
@@ -628,6 +628,29 @@ w32_get_watch_object (void *desc)
   return NILP (watch_list) ? Qnil : assoc_no_quit (descriptor, watch_list);
 }
 
+DEFUN ("w32notify-valid-p", Fw32notify_valid_p, Sw32notify_valid_p, 1, 1, 0,
+       doc: /* "Check a watch specified by its WATCH-DESCRIPTOR for validity.
+
+WATCH-DESCRIPTOR should be an object returned by `w32notify-add-watch'.
+
+A watch can become invalid if the directory it watches is deleted, or if
+the watcher thread exits abnormally for any other reason.  */)
+     (Lisp_Object watch_descriptor)
+{
+  Lisp_Object watch_object = Fassoc (watch_descriptor, watch_list);
+
+  if (!NILP (watch_object))
+    {
+      struct notification *dirwatch =
+       (struct notification *)XINTPTR (watch_descriptor);
+      if (w32_valid_pointer_p (dirwatch, sizeof(struct notification))
+         && dirwatch->dir != NULL)
+       return Qt;
+    }
+
+  return Qnil;
+}
+
 void
 globals_of_w32notify (void)
 {
@@ -648,6 +671,7 @@ syms_of_w32notify (void)
 
   defsubr (&Sw32notify_add_watch);
   defsubr (&Sw32notify_rm_watch);
+  defsubr (&Sw32notify_valid_p);
 
   staticpro (&watch_list);
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]