unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Paul Eggert <eggert@cs.ucla.edu>
To: Eli Zaretskii <eliz@gnu.org>
Cc: Emacs-devel@gnu.org
Subject: Re: Improve reporting of I/O, access errors for Emacs
Date: Thu, 12 Sep 2019 13:32:16 -0700	[thread overview]
Message-ID: <ba6acf65-635b-b9a4-8769-940c01e3ed04@cs.ucla.edu> (raw)
In-Reply-To: <83a7b91f6l.fsf@gnu.org>

On 9/12/19 12:34 PM, Eli Zaretskii wrote:
> We should just set
> errno and return an error indication, and then let the caller deal
> with that.

I don't see how that could work. Callers are typically written in Lisp, 
and so can't see errno.

For example, suppose Lisp code calls (file-symlink-p "/a/b/c") and Emacs 
cannot tell whether /a/b/c is a symbolic link because of an I/O error, 
or because of a timeout in network access, or because /a is a symlink 
into an unreadable directory, or whatever. If file-symlink-p merely 
returns nil, there's no way for the Lisp code to know that there was an 
exceptional situation and the Lisp code will continue based on the 
incorrect assumption that /a/b/c was not a symlink.

Instead of signaling these exceptional conditions, we could extend each 
  primitive with a new optional argument saying what to do on failure. 
For example, (file-symlink-p "/a/b/c" t) could signal an exception or 
return a special value for these exceptional cases, whereas 
(file-symlink-p "/a/b/c" nil) would simply return nil. However, such an 
extension would require changes to Lisp code if it is intended to be 
reliable, and most Lisp code would not be changed and would continue to 
be unreliable in these exceptional situations. In contrast, the proposed 
patch means  existing Lisp code will gain reliability without needing to 
be changed.

> That's too small a sample, so it doesn't prove much in my book, sorry.

I've looked at and experimented with a reasonable amount of Elisp code, 
and haven't run into problems with the proposed patch. What's your 
contrary intuition based on? Can you give a realistic example of the 
problems you see from the patch?



  reply	other threads:[~2019-09-12 20:32 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-12  8:22 Improve reporting of I/O, access errors for Emacs Paul Eggert
2019-09-12 18:04 ` Eli Zaretskii
2019-09-12 18:27   ` Paul Eggert
2019-09-12 19:34     ` Eli Zaretskii
2019-09-12 20:32       ` Paul Eggert [this message]
2019-09-13  7:37         ` Eli Zaretskii
2019-09-18  2:25           ` Paul Eggert
2019-09-18  9:50             ` Richard Copley
2019-09-16 11:07 ` Richard Copley
2019-09-16 14:53   ` Eli Zaretskii
2019-09-16 18:11     ` Richard Copley

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ba6acf65-635b-b9a4-8769-940c01e3ed04@cs.ucla.edu \
    --to=eggert@cs.ucla.edu \
    --cc=Emacs-devel@gnu.org \
    --cc=eliz@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).