aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-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)
628 return NILP (watch_list) ? Qnil : assoc_no_quit (descriptor, watch_list); 628 return NILP (watch_list) ? Qnil : assoc_no_quit (descriptor, watch_list);
629} 629}
630 630
631DEFUN ("w32notify-valid-p", Fw32notify_valid_p, Sw32notify_valid_p, 1, 1, 0,
632 doc: /* "Check a watch specified by its WATCH-DESCRIPTOR for validity.
633
634WATCH-DESCRIPTOR should be an object returned by `w32notify-add-watch'.
635
636A watch can become invalid if the directory it watches is deleted, or if
637the watcher thread exits abnormally for any other reason. */)
638 (Lisp_Object watch_descriptor)
639{
640 Lisp_Object watch_object = Fassoc (watch_descriptor, watch_list);
641
642 if (!NILP (watch_object))
643 {
644 struct notification *dirwatch =
645 (struct notification *)XINTPTR (watch_descriptor);
646 if (w32_valid_pointer_p (dirwatch, sizeof(struct notification))
647 && dirwatch->dir != NULL)
648 return Qt;
649 }
650
651 return Qnil;
652}
653
631void 654void
632globals_of_w32notify (void) 655globals_of_w32notify (void)
633{ 656{
@@ -648,6 +671,7 @@ syms_of_w32notify (void)
648 671
649 defsubr (&Sw32notify_add_watch); 672 defsubr (&Sw32notify_add_watch);
650 defsubr (&Sw32notify_rm_watch); 673 defsubr (&Sw32notify_rm_watch);
674 defsubr (&Sw32notify_valid_p);
651 675
652 staticpro (&watch_list); 676 staticpro (&watch_list);
653 677