GNU bug report logs -
#10489
24.0.92; dired-do-copy may create infinite directory hierarchy
Previous Next
Reported by: michael_heerdegen <at> web.de
Date: Thu, 12 Jan 2012 19:36:01 UTC
Severity: important
Tags: patch
Merged with 11130
Found in version 24.0.92
Done: Chong Yidong <cyd <at> gnu.org>
Bug is archived. No further changes may be made.
Full log
Message #23 received at 10489 <at> debbugs.gnu.org (full text, mbox):
> From: Thierry Volpiatto <thierry.volpiatto <at> gmail.com>
> Cc: 10489 <at> debbugs.gnu.org
> Date: Fri, 13 Jan 2012 09:38:30 +0100
>
> > I don't think this will solves all the use cases. File names are not
> > strings, you cannot compare them as literal strings and hope to plumb
> > all the leaks.
> A test with `equal' is already used in `dired-create-files',
> (equal from to)
> Is it the correct way to compare two filenames?
I don't see how `equal' could help, unless someone teaches it to treat
strings that are file names specially. I don't see such treatment in
the current sources.
> > Some situations which I think this patch will not handle correctly:
> >
> > . file names with different letter-case on a case-insensitive file
> > system
> Can you provide example or better a recipe.
emacs -Q
C-x d ~ RET
<go to the line showing "Test">
C ~/test RET
yes RET
> > . relative vs absolute file names
> Same.
M-: (dired-copy-file-recursive "foo/../Test" "./Test" t) RET
> > . file names that are hard links to the same directory (this includes
> > the infamous 8+3 short aliases on Windows)
> Don't know on Windows, (My knowledge of links in windows is very
> limited)
> here it is difficult (impossible as User) to Hardlink a directory:
>
> --8<---------------cut here---------------start------------->8---
> man ln:
> -d, -F, --directory
> allow the superuser to attempt to hard link directories
> (note: will probably fail due to system restrictions,
> even for the superuser)
> --8<---------------cut here---------------end--------------->8---
We don't disallow superusers from using Emacs, nor restrict Emacs
usage only to filesystems where links to directories are impossible,
do we? ;-)
And what about symlinks?
On Windows, you can have "C:/PROGRA~1" be the alias of
"C:/Program Files", for example.
Bottom line, I think you need:
. make both file names absolute by calling expand-file-name on each
. resolve links by calling file-truename on each (this will handle
the 8+3 alias issue, as well as, AFAIK, the issue with links)
. compare case-insensitively on MS-Windows and MS-DOS
This bug report was last modified 13 years and 58 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.