GNU bug report logs - #4823
w32 paths `substitute-in-file-name' fails when environmental variable is set for \\ style paths:

Previous Next

Package: emacs;

Reported by: MON KEY <monkey <at> sandpframing.com>

Date: Wed, 28 Oct 2009 20:25:05 UTC

Severity: normal

Done: Juanma Barranquero <lekktu <at> gmail.com>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Juanma Barranquero <lekktu <at> gmail.com>
To: MON KEY <monkey <at> sandpframing.com>
Cc: 4823 <at> debbugs.gnu.org
Subject: bug#4823: w32 paths `substitute-in-file-name' fails when  environmental variable is set for \\ style paths:
Date: Wed, 28 Oct 2009 22:38:34 +0100
On Wed, Oct 28, 2009 at 21:19, MON KEY <monkey <at> sandpframing.com> wrote:

> ;; :SITUATION-1 w/out trailing `\\'

> (substitute-in-file-name "$HOME2\\.emacs")
> ;=> "C:\\home\\me/emacs"

I get "C:\\home\\me/.emacs", which seems correct.

> (substitute-in-file-name "$HOME2/.emacs")
> ;=>"C:\\home\\me/.emacs"
> (substitute-in-file-name "$HOME2.emacs")
> ;=> "C:\\home\\me.emacs"

These seem correct to me.

> ;; :SITUATION-2 with trailing `\\'

> (substitute-in-file-name "$HOME2\\.emacs")
> ;=> "/.emacs"

$HOME2\\.emacs ==> "C:\\home\\me\\\\.emacs" ==> C:\home\me\\.emacs

According to the docstring of `substitute-in-file-name':

  If `//' appears, everything up to and including the first of
  those `/' is discarded.

and \\ (quoted to \\\\) is equivalent to // in w32 filenames (at least
for Emacs).

> (substitute-in-file-name "$HOME2\.emacs")
> ;=> "C:\\home\\me\\.emacs"

$HOME2\.emacs ==> "C:\\home\\me\\\.emacs" ==> C:\home\me\.emacs

so this is correct (remember that "\." == ".").

> (substitute-in-file-name "$HOME2//.emacs")
> ;=> "/.emacs"

This is similar to the \\\\ case above:

$HOME2//.emacs ==> "C:\\home\\me\\//.emacs" ==> C:\home\me\//.emacs

which could arguably be //.emacs, but that does not seem very useful.

> (substitute-in-file-name "$HOME2.emacs")
> ;=> "C:\\home\\me\\.emacs"

That seems correct.

What where you expecting in each case?

    Juanma



This bug report was last modified 13 years and 323 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.