1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-02 02:10:46 -08:00

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)
This commit is contained in:
Eli Zaretskii 2015-09-14 10:31:17 +03:00
parent 12629d2857
commit ef5b1a22bb

View file

@ -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;
}