From: <emacs@kosowsky.org>
To: Ted Zlatanov <tzz@lifelogs.com>
Cc: emacs@kosowsky.org, 15648@debbugs.gnu.org
Subject: bug#15648: 24.2.50; gnutls SSL connection to IMAP server causes emacs to crash completely
Date: Sun, 03 Nov 2013 10:12:27 -0500 [thread overview]
Message-ID: <21110.26587.721061.28128@consult.pretender> (raw)
In-Reply-To: <87y555socz.fsf@flea.lifelogs.com>
Ted Zlatanov wrote at about 06:42:36 -0500 on Sunday, November 3, 2013:
> On Fri, 25 Oct 2013 21:52:24 -0400 Stefan Monnier <monnier@iro.umontreal.ca> wrote:
>
> SM> It's a cleaner workaround, but I'd rather we come up with an actual fix.
> SM> Do you think you can try to make a patch that adds (in files.el) a new
> SM> function meant to turn an Elisp file name into an OS file name or return
> SM> nil if the file can't be accessed by OS primitives? This function would
> SM> just delegate its work to the file-name-handler if any, and otherwise
> SM> just return its argument unchanged.
>
> Would any C-facing code, then, need to apply this function before
> passing a filename to the OS? Or do you think this function belongs in
> every package, which is a much bigger list of potential fixes?
Looking through files.el, I noticed that there is a function that
seems to be similar in intent.
The function is called convert-standard-filename. All it really does
currently is replace invalid characters/filenames for
cygwin/windows-nt/ms-dos.
So one potential solution would be to add a hook to the file name
handler at the beginning of this function and then add this function
to the (optional) functions that Magic file handlers could
address. Thus, for example, magic file types like 'cygwin-mount' would
use this hook while magic file types like 'ange-ftp' would
intentionally not have a file handler here since they would presumably
never touch actual local file system files.
There are however 3 problems with this approach:
1. This would require adding a new (lower-level) function to the list
of functions requiring a magic file handler and it might take some
time for each maintainer to add the required handler to their Magic
code.
2. Since some functions already handle conversion using higher order
primitives like expand-file-name or true-filename (see #3), the
file name conversion would often be duplicated.
3. Indeed (surprise, surprise), most of the core functions in files.el
actually use 'expand-file-name' to expand the file name sometime
before referencing a file. In fact, expand-file-name is called 64
times and file-truename is called 13 times in the files.el elisp
code. (Conversely, convert-standard-filename is only called by the
functions make-auto-save-file-name and make-backup-file-name-1.)
So, it seems that calling 'expand-file-name' or 'file-truename' far
from being a "hack" is actually the standard way that emacs uses to
generate an OS-accessible file name. In particular, the workhorse
primitives find-file-noselect and find-file-noselect1 both use
'expand-file-name'.
Given that adding 'expand-file-name' seems to be standard usage for
creating OS-accessible file names, I don't see why we wouldn't
want to use the same paradigm for expanding file names before passing
them off to C-code (like gnutls) that bypasses the standard elisp file
access primitives. Indeed, such usage should be required best practice
precisely to avoid the problems uncovered in gnutls.el.
So, I guess short of rewriting many of the functions in files.el to
consistently pass file names through some lower level OS-conversion
primitive rather than using expand-file-name or file-truename and
short of similarly adding such a lower level primitive to all relevant
Magic file handlers (including avoiding duplicate calls when higher
level primitives like expand-file-name have already been used), I
think that my proposed patch is not only simpler but also more
consistent with the current usage in files.el
next prev parent reply other threads:[~2013-11-03 15:12 UTC|newest]
Thread overview: 80+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-18 18:29 bug#15648: 24.2.50; gnutls SSL connection to IMAP server causes emacs to crash completely emacs
2013-10-18 19:38 ` Glenn Morris
2013-10-20 20:24 ` emacs
2013-10-21 14:22 ` bug#15648: 24.2.50; gnutls SSL connection to IMAP server causes emacs to crash completely, " Ted Zlatanov
2013-10-21 19:30 ` emacs
2013-10-22 13:27 ` Ted Zlatanov
2013-10-22 15:23 ` emacs
2013-10-22 15:41 ` emacs
2013-10-22 19:10 ` emacs
2013-10-22 20:06 ` Ted Zlatanov
2013-10-22 20:22 ` emacs
2013-10-22 20:34 ` Eli Zaretskii
2013-10-22 22:27 ` emacs
2013-10-23 2:51 ` Eli Zaretskii
2013-10-23 4:17 ` emacs
2013-10-23 14:52 ` Ted Zlatanov
2013-10-23 17:25 ` emacs
2013-10-23 18:07 ` Eli Zaretskii
2013-10-23 18:58 ` Ted Zlatanov
2013-10-23 23:45 ` emacs
2013-10-24 0:13 ` emacs
2013-10-24 10:59 ` Ted Zlatanov
2013-10-24 14:10 ` emacs
2013-10-24 15:48 ` Ted Zlatanov
2013-10-24 17:02 ` emacs
2013-10-24 17:57 ` Stefan Monnier
2013-10-24 18:42 ` emacs
2013-10-25 0:59 ` Stefan Monnier
2013-10-25 13:59 ` emacs
2013-10-26 1:52 ` Stefan Monnier
2013-10-29 5:13 ` emacs
2013-11-03 11:42 ` Ted Zlatanov
2013-11-03 15:12 ` emacs [this message]
2013-11-03 17:32 ` Eli Zaretskii
2013-11-03 19:12 ` emacs
2013-11-04 16:28 ` Ted Zlatanov
2013-11-04 16:58 ` Eli Zaretskii
2013-11-11 19:12 ` emacs
2013-11-11 19:42 ` Ted Zlatanov
2013-11-11 20:00 ` emacs
2013-11-11 20:00 ` Achim Gratz
2013-11-11 23:58 ` Ted Zlatanov
2013-11-12 0:45 ` emacs
2013-11-11 20:06 ` Eli Zaretskii
2013-11-11 21:53 ` emacs
2013-11-12 3:56 ` Eli Zaretskii
2013-11-12 15:19 ` emacs
2013-11-12 17:42 ` Eli Zaretskii
[not found] ` <<83ppq51pq8.fsf@gnu.org>
2013-11-12 18:08 ` Drew Adams
2013-11-03 21:37 ` Stefan Monnier
2013-10-23 15:16 ` bug#15648: 24.2.50; gnutls SSL connection to IMAP server causes emacs to crash completely, " Eli Zaretskii
2013-10-23 17:12 ` emacs
2013-10-23 18:00 ` Eli Zaretskii
2013-10-23 19:49 ` emacs
2013-10-24 2:46 ` Eli Zaretskii
2013-10-25 3:17 ` emacs
2013-10-25 14:09 ` Eli Zaretskii
2013-10-25 15:38 ` Ted Zlatanov
2013-10-25 18:37 ` Eli Zaretskii
2013-11-03 17:30 ` Eli Zaretskii
2013-11-04 16:44 ` Ted Zlatanov
2013-11-04 17:06 ` Eli Zaretskii
2013-11-04 18:05 ` Ted Zlatanov
2013-11-04 22:14 ` emacs
2013-11-05 2:30 ` Ted Zlatanov
2013-11-05 23:11 ` emacs
2013-11-05 23:16 ` Alp Aker
2013-11-05 23:54 ` emacs
2013-11-11 15:53 ` Ted Zlatanov
2013-11-11 19:40 ` emacs
2013-11-11 20:11 ` Eli Zaretskii
2013-11-11 21:56 ` emacs
2013-11-12 3:58 ` Eli Zaretskii
2013-11-12 15:23 ` emacs
2013-11-06 3:51 ` Eli Zaretskii
2013-11-06 5:45 ` emacs
2013-10-22 15:43 ` bug#15648: 24.2.50; gnutls SSL connection to IMAP server causes emacs to crash completely, " Eli Zaretskii
2013-10-22 20:03 ` Ted Zlatanov
2013-10-22 20:35 ` Andy Moreton
2013-10-22 20:45 ` Eli Zaretskii
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=21110.26587.721061.28128@consult.pretender \
--to=emacs@kosowsky.org \
--cc=15648@debbugs.gnu.org \
--cc=tzz@lifelogs.com \
/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).