unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: Michael Albinus <michael.albinus@gmx.de>
Cc: kzhr@d1.dion.ne.jp, emacs-devel@gnu.org
Subject: Re: Multibyte and unibyte file names
Date: Wed, 23 Jan 2013 22:05:58 +0200	[thread overview]
Message-ID: <83a9rzmzq1.fsf@gnu.org> (raw)
In-Reply-To: <87mwvz1y9s.fsf@gmx.de>

> From: Michael Albinus <michael.albinus@gmx.de>
> Cc: emacs-devel@gnu.org,  Kazuhiro Ito <kzhr@d1.dion.ne.jp>
> Date: Wed, 23 Jan 2013 20:42:55 +0100
> 
> >      (defun tramp-handle-file-name-directory (file)
> >        "Like `file-name-directory' but aware of Tramp files."
> >        ;; Everything except the last filename thing is the directory.  We
> >        ;; cannot apply `with-parsed-tramp-file-name', because this expands
> >        ;; the remote file name parts.  This is a problem when we are in
> >        ;; file name completion.
> >        (let ((v (tramp-dissect-file-name file t)))
> > 	 ;; Run the command on the localname portion only.
> > 	 (tramp-make-tramp-file-name
> > 	  (tramp-file-name-method v)
> > 	  (tramp-file-name-user v)
> > 	  (tramp-file-name-host v)
> > 	  (tramp-run-real-handler
> > 	   'file-name-directory (list (or (tramp-file-name-localname v) ""))))))
> >
> >     which on Windows means that, e.g.
> >
> >       (let ((file-name-coding-system 'cp1252))
> > 	(file-name-directory "/eliz@fencepost.gnu.org:漢字/"))
> >
> >        => "/eliz@fencepost.gnu.org:  /"
> >
> >    And there are other similar handlers in Tramp (e.g., the
> >    file-name-nondirectory handler) which do the same.  IOW, they seem
> >    to _assume_ that the corresponding "real" handler never needs to
> >    encode the file name.  A false assumption.
> 
> Tramp is not prepared to handle encoded file names.

I didn't try to imply it should.  Tramp should not, however, delegate
its handlers' job to "native" implementations, because those cannot,
in general, be assumed to DTRT for the remote host.

For example, in the particular case of file-name-directory, I think
Tramp should simply do its job by a straightforward removal of the
portion after the last slash in Lisp, instead of calling the native
implementation.

> I agree, Tramp shall check carefully what a file name encoding is. This
> must be added to the code.

Sorry, I don't follow.  File names in Lisp are not encoded in any
way.  You only need to encode them when you pass them to commands
executed on the remote host, and decode the results that are output by
those remote commands.

> There might be a chance to switch to en_US.UTF-8 on the remote side. But
> even here I would propose to start with the unibyte subset. "en_US",
> because Tramp parses the output of commands, which must not be
> localized.

Why "must not be localized"?

> Other encodings but UTF-8 will be hard to support. It is not only that
> Tramp calls "native" file name primitives, there are also several
> parsing routines for commands on the remote side, which have their
> expectations on file name syntax and their encodings.

I'm afraid I don't follow here, either.  Emacs is well equipped to
do code conversions from and to almost any encoding out there.  The
only problem is to know which encoding to use when communicating with
the commands on the remote host.  What am I missing?




  reply	other threads:[~2013-01-23 20:05 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-23 17:45 Multibyte and unibyte file names Eli Zaretskii
2013-01-23 18:08 ` Paul Eggert
2013-01-23 19:04   ` Eli Zaretskii
2013-01-23 23:38     ` Paul Eggert
2013-01-23 19:42 ` Michael Albinus
2013-01-23 20:05   ` Eli Zaretskii [this message]
2013-01-23 20:58     ` Michael Albinus
2013-01-24 16:37       ` Eli Zaretskii
2013-01-23 21:09 ` Stefan Monnier
2013-01-24 17:02   ` Eli Zaretskii
2013-01-24 18:25     ` Stefan Monnier
2013-01-24 18:38       ` Eli Zaretskii
2013-01-25  0:06         ` Stefan Monnier
2013-01-25  7:37           ` Eli Zaretskii
2013-01-25 11:36             ` Stefan Monnier
2013-01-25 20:31               ` Eli Zaretskii
2013-01-25 22:28                 ` Stefan Monnier
2013-01-26 10:54                   ` Eli Zaretskii
2013-01-26 11:34                     ` Stefan Monnier
2013-01-26 13:16                       ` Eli Zaretskii
2013-01-26 22:11                         ` Stefan Monnier
2013-01-27  7:03                           ` Eli Zaretskii
2013-01-27  8:46                             ` Andreas Schwab
2013-01-27  9:40                               ` Eli Zaretskii
2013-01-28  1:55                             ` Stefan Monnier
2013-01-28 14:44                               ` Eli Zaretskii
2013-01-28 15:21                                 ` Stefan Monnier
2013-02-02 17:19                                   ` Eli Zaretskii
2013-01-26 13:20                       ` Stephen J. Turnbull
2013-01-26  3:04                 ` Stephen J. Turnbull
2013-01-26 11:27                   ` Eli Zaretskii
2013-01-26 13:03                     ` Stephen J. Turnbull
2013-01-26 13:36                       ` Eli Zaretskii
2013-01-26 16:26                         ` Paul Eggert
2013-01-26 18:30                           ` Stephen J. Turnbull
2013-01-26 17:10                         ` Stephen J. Turnbull
2013-01-26 17:33                           ` Eli Zaretskii
2013-01-26 18:06                             ` Paul Eggert
2013-01-26 18:20                               ` Eli Zaretskii
2013-01-26 18:56                             ` Stephen J. Turnbull
2013-01-26 21:40                               ` Stefan Monnier
2013-01-26 21:44                             ` Stefan Monnier
2013-01-27  6:14                               ` Eli Zaretskii
2013-01-26 16:05                   ` Richard Stallman
2013-01-26 17:57                     ` Stephen J. Turnbull
2013-01-26 22:16                     ` Stefan Monnier
2013-01-24 10:00 ` Michael Albinus
2013-01-24 16:40   ` 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=83a9rzmzq1.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    --cc=kzhr@d1.dion.ne.jp \
    --cc=michael.albinus@gmx.de \
    /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).