summaryrefslogtreecommitdiff
path: root/src/w32notify.c
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2015-09-14 10:02:04 +0300
committerEli Zaretskii <eliz@gnu.org>2015-09-14 10:02:04 +0300
commit12629d2857ba2a7c8a6b6a6b61f28a179d2c92a7 (patch)
treef860393729cf5c4d7887a6deeabbf6977e58d7ff /src/w32notify.c
parent7a3f3183cd8faff8901ead547711e1c90ea02efe (diff)
downloademacs-12629d2857ba2a7c8a6b6a6b61f28a179d2c92a7.tar.gz
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'.
Diffstat (limited to 'src/w32notify.c')
-rw-r--r--src/w32notify.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/w32notify.c b/src/w32notify.c
index ab6cd12ab93..fa4ad01636b 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);