emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] master ef5b1a2: Report file-notify-error in w32notify.c


From: Eli Zaretskii
Subject: [Emacs-diffs] master ef5b1a2: Report file-notify-error in w32notify.c
Date: Mon, 14 Sep 2015 07:32:35 +0000

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

    Report file-notify-error in w32notify.c
    
    * src/w32notify.c (report_w32notify_error): New function.
    (Fw32notify_add_watch, Fw32notify_rm_watch): Use it to report
    errors, instead of calling report_file_error.  (Bug#21432)
---
 src/w32notify.c |   29 ++++++++++++++++++++++-------
 1 files changed, 22 insertions(+), 7 deletions(-)

diff --git a/src/w32notify.c b/src/w32notify.c
index fa4ad01..efd9e56 100644
--- a/src/w32notify.c
+++ b/src/w32notify.c
@@ -464,6 +464,21 @@ filter_list_to_flags (Lisp_Object filter_list)
   return flags;
 }
 
+/* Like report_file_error, but reports a file-notify-error instead.  */
+static void
+report_w32notify_error (const char *string, Lisp_Object name)
+{
+  Lisp_Object data = CONSP (name) || NILP (name) ? name : list1 (name);
+  synchronize_system_messages_locale ();
+  char *str = strerror (errno);
+  Lisp_Object errstring
+    = code_convert_string_norecord (build_unibyte_string (str),
+                                   Vlocale_coding_system, 0);
+  Lisp_Object errdata = Fcons (errstring, data);
+
+  xsignal (Qfile_notify_error, Fcons (build_string (string), errdata));
+}
+
 DEFUN ("w32notify-add-watch", Fw32notify_add_watch,
        Sw32notify_add_watch, 3, 3, 0,
        doc: /* Add a watch for filesystem events pertaining to FILE.
@@ -528,8 +543,8 @@ generate notifications correctly, though.  */)
       || (w32_major_version == 5 && w32_major_version < 1))
     {
       errno = ENOSYS;
-      report_file_error ("Watching filesystem events is not supported",
-                        Qnil);
+      report_w32notify_error ("Watching filesystem events is not supported",
+                             Qnil);
     }
 
   /* filenotify.el always passes us a directory, either the parent
@@ -573,11 +588,11 @@ generate notifications correctly, though.  */)
                                              Vlocale_coding_system, 0);
          else
            lisp_errstr = build_string (errstr);
-         report_file_error ("Cannot watch file",
-                            Fcons (lisp_errstr, Fcons (file, Qnil)));
+         report_w32notify_error ("Cannot watch file",
+                                 Fcons (lisp_errstr, Fcons (file, Qnil)));
        }
       else
-       report_file_error ("Cannot watch file", Fcons (file, Qnil));
+       report_w32notify_error ("Cannot watch file", Fcons (file, Qnil));
     }
   /* Store watch object in watch list. */
   watch_descriptor = make_pointer_integer (dirwatch);
@@ -611,8 +626,8 @@ WATCH-DESCRIPTOR should be an object returned by 
`w32notify-add-watch'.  */)
     }
 
   if (status == -1)
-    report_file_error ("Invalid watch descriptor", Fcons (watch_descriptor,
-                                                         Qnil));
+    report_w32notify_error ("Invalid watch descriptor", Fcons 
(watch_descriptor,
+                                                              Qnil));
 
   return Qnil;
 }



reply via email to

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