From: Stefan Monnier <monnier@iro.umontreal.ca>
To: Thierry Volpiatto <thierry.volpiatto@gmail.com>
Cc: 10489@debbugs.gnu.org, Michael Albinus <michael.albinus@gmx.de>
Subject: bug#10489: 24.0.92; dired-do-copy may create infinite directory hierarchy
Date: Tue, 21 Feb 2012 17:51:21 -0500 [thread overview]
Message-ID: <jwvvcmz24ib.fsf-monnier+emacs@gnu.org> (raw)
In-Reply-To: <87mx8b3nvb.fsf@gmail.com> (Thierry Volpiatto's message of "Tue, 21 Feb 2012 21:58:16 +0100")
>>> so what is the state of this bug and what do you plan for this?
>>
>>> As a reminder, we needed:
>>
>>> 1) A function to compare filenames locally.
>>> 2) A tramp handler for this function.
>>> 3) A function to check if file1 is subdir of file2, locally also.
>>> 4) A tramp handler for this one also?
>>
>>> We have more or less 1 and 3, need tramp handlers for them.
>>
>>> What else is needed?
>>
>> Just before we try and solve this problem the hard way:
>> I just tried:
>>
>> % ln -s erlang-otp erl
>> % cp -r erl/lib erlang-otp/lib/inviso/
> We have to check if "erlang-otp/lib/inviso/" is a subdir of "erl/lib"
> to resolve this, right?
No, we just have to check if during the recursive copy we're trying to
read one of the directories we've just made.
>> So it seems that the coreutils guys have found it sufficient to detect
>> the inf-loop after the fact and interrupt the operation at that point
>> rather than to try and predict that the cp will loop and don't perform
>> it at all.
> Do we have to strictly follow this?
No, it's just an alternative approach. The potential advantage is that
it does not require figuring out whether a file is within some
directory, it only requires checking actual equality between two
directories.
Another approach is to first get the complete list of files and only
copy them afterwards. This doesn't require any comparison at all and
completely avoids the risk of inf-loop.
>> It might be easier to get a solution that catches all cases that way:
>> remember the name and identity (inode/file-attributes/younameit) of
>> the top directory we create,
> "erl/lib"?
No, we don't create erl/lib (it's the source instead), the top-level dir
we create is "erlang-otp/lib/inviso/lib".
>> and whenever we're about to copy a directory of the same name,
> Not sure to fully understand this, do you mean "and whenever we're
> about to copy the CONTENTS of a directory of the same name?"
In the recursive loop, the distinction between copying a directory and
copying its contents is not really relevant to this problem (the
recursive call says "copy foo and its contents").
Stefan
next prev parent reply other threads:[~2012-02-21 22:51 UTC|newest]
Thread overview: 174+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-12 19:35 bug#10489: 24.0.92; dired-do-copy may create infinite directory hierarchy Michael Heerdegen
2012-01-12 21:33 ` Thierry Volpiatto
2012-01-13 7:23 ` Eli Zaretskii
2012-01-13 8:38 ` Thierry Volpiatto
2012-01-13 10:31 ` Eli Zaretskii
2012-01-13 11:19 ` Thierry Volpiatto
2012-01-13 12:01 ` Juanma Barranquero
2012-01-13 12:41 ` Eli Zaretskii
2012-01-13 13:01 ` Michael Albinus
2012-01-13 13:11 ` Juanma Barranquero
2012-01-13 13:13 ` Juanma Barranquero
2012-01-13 13:18 ` Juanma Barranquero
2012-01-13 13:32 ` Michael Albinus
2012-01-13 13:27 ` Stefan Monnier
2012-01-13 14:06 ` Thierry Volpiatto
2012-01-13 14:44 ` Michael Albinus
2012-01-13 15:13 ` Stefan Monnier
2012-01-13 15:17 ` Juanma Barranquero
2012-01-13 15:29 ` Michael Albinus
2012-01-13 16:59 ` Drew Adams
2012-01-13 9:38 ` Thierry Volpiatto
2012-01-13 9:49 ` Michael Albinus
2012-01-13 11:00 ` Thierry Volpiatto
2012-01-13 12:48 ` Michael Albinus
2012-01-13 13:55 ` Thierry Volpiatto
2012-01-13 14:14 ` Drew Adams
2012-01-13 15:06 ` Juanma Barranquero
2012-01-13 15:14 ` Michael Albinus
2012-01-13 18:43 ` Thierry Volpiatto
2012-01-13 18:57 ` Drew Adams
2012-01-13 19:11 ` Thierry Volpiatto
2012-01-13 19:21 ` Drew Adams
2012-01-13 19:35 ` Michael Albinus
2012-01-13 20:56 ` Drew Adams
2012-01-13 18:59 ` Thierry Volpiatto
2012-01-13 19:04 ` Michael Albinus
2012-01-13 19:17 ` Thierry Volpiatto
2012-01-14 8:00 ` Eli Zaretskii
2012-01-14 10:25 ` Thierry Volpiatto
2012-01-15 12:50 ` Michael Albinus
2012-01-15 17:20 ` Thierry Volpiatto
2012-01-15 17:31 ` Thierry Volpiatto
2012-01-15 18:24 ` Michael Albinus
2012-01-15 19:09 ` Thierry Volpiatto
2012-01-15 19:49 ` Michael Albinus
2012-01-15 21:01 ` Thierry Volpiatto
2012-01-16 8:58 ` Thierry Volpiatto
2012-01-16 13:56 ` Stefan Monnier
2012-01-16 14:13 ` Michael Albinus
2012-01-16 15:18 ` Stefan Monnier
2012-01-16 15:27 ` Michael Albinus
2012-01-16 21:40 ` Stefan Monnier
2012-02-21 16:53 ` Thierry Volpiatto
2012-02-21 17:59 ` Stefan Monnier
2012-02-21 19:46 ` Michael Albinus
2012-02-21 20:58 ` Thierry Volpiatto
2012-02-21 22:51 ` Stefan Monnier [this message]
2012-02-22 21:37 ` Thierry Volpiatto
2012-02-22 22:00 ` Stefan Monnier
2012-02-23 6:15 ` Thierry Volpiatto
2012-02-23 16:01 ` Thierry Volpiatto
2012-02-23 17:18 ` Stefan Monnier
2012-02-23 22:10 ` Thierry Volpiatto
2012-02-24 5:37 ` Thierry Volpiatto
2012-02-24 7:16 ` Thierry Volpiatto
2012-02-24 9:19 ` Eli Zaretskii
2012-02-24 9:49 ` Thierry Volpiatto
2012-02-24 12:18 ` Thierry Volpiatto
2012-02-24 12:54 ` Michael Albinus
2012-02-24 13:36 ` Thierry Volpiatto
2012-02-24 15:00 ` Michael Albinus
2012-02-24 14:33 ` Eli Zaretskii
2012-02-24 15:19 ` Michael Albinus
2012-02-24 19:42 ` Eli Zaretskii
2012-02-24 20:35 ` Michael Albinus
2012-02-25 6:21 ` Eli Zaretskii
2012-02-27 8:39 ` Michael Albinus
2012-02-27 17:40 ` Eli Zaretskii
2012-02-24 14:45 ` Thierry Volpiatto
2012-02-24 15:23 ` Michael Albinus
2012-02-24 14:39 ` Eli Zaretskii
2012-02-24 14:50 ` Thierry Volpiatto
2012-02-24 15:26 ` Michael Albinus
2012-02-24 15:52 ` Thierry Volpiatto
2012-02-24 16:17 ` Michael Albinus
2012-02-24 16:02 ` Thierry Volpiatto
2012-02-24 16:15 ` Drew Adams
2012-02-24 16:25 ` Michael Albinus
2012-02-24 16:42 ` Drew Adams
2012-02-24 17:04 ` Michael Albinus
2012-02-24 16:21 ` Michael Albinus
2012-02-24 17:23 ` Thierry Volpiatto
2012-02-24 18:43 ` Michael Albinus
2012-02-24 20:06 ` Thierry Volpiatto
2012-02-24 20:04 ` Eli Zaretskii
2012-02-24 20:33 ` Michael Albinus
2012-02-24 21:54 ` Thierry Volpiatto
2012-02-25 8:56 ` Michael Albinus
2012-02-25 9:08 ` Thierry Volpiatto
2012-02-26 9:48 ` Michael Albinus
2012-02-26 19:48 ` Thierry Volpiatto
2012-02-26 21:40 ` Stefan Monnier
2012-02-27 6:45 ` Thierry Volpiatto
2012-02-27 7:45 ` Stefan Monnier
2012-02-27 8:04 ` Thierry Volpiatto
2012-02-27 10:34 ` Stefan Monnier
2012-02-27 11:06 ` Thierry Volpiatto
2012-02-27 11:10 ` Michael Albinus
2012-02-27 11:34 ` Thierry Volpiatto
2012-02-27 13:24 ` Stefan Monnier
2012-02-27 14:59 ` Thierry Volpiatto
2012-02-27 17:38 ` Stefan Monnier
2012-02-27 18:34 ` Thierry Volpiatto
2012-02-27 19:08 ` Michael Albinus
2012-02-27 19:33 ` Thierry Volpiatto
2012-02-27 19:49 ` Michael Albinus
2012-02-27 21:58 ` Stefan Monnier
2012-02-27 22:11 ` Thierry Volpiatto
2012-02-28 6:12 ` Thierry Volpiatto
2012-02-28 7:14 ` Thierry Volpiatto
2012-02-28 7:34 ` Michael Albinus
2012-02-28 8:15 ` Thierry Volpiatto
2012-02-28 8:31 ` Michael Albinus
2012-02-28 9:34 ` Thierry Volpiatto
2012-02-28 10:15 ` Michael Albinus
2012-02-28 19:29 ` Stefan Monnier
2012-02-28 19:53 ` Michael Albinus
2012-02-29 2:01 ` Stefan Monnier
2012-02-29 11:04 ` Michael Albinus
2012-02-29 16:48 ` Stefan Monnier
2012-02-29 17:52 ` Thierry Volpiatto
2012-03-01 2:33 ` Stefan Monnier
2012-03-01 8:37 ` Michael Albinus
2012-02-27 10:40 ` Thierry Volpiatto
2012-02-27 11:03 ` Michael Albinus
2012-02-27 11:29 ` Thierry Volpiatto
2012-02-27 14:19 ` Drew Adams
2012-02-27 13:54 ` Chong Yidong
2012-02-27 15:15 ` Thierry Volpiatto
2012-02-25 7:05 ` Eli Zaretskii
2012-02-25 9:56 ` Stefan Monnier
2012-02-25 13:05 ` Michael Albinus
2012-02-25 15:36 ` Michael Albinus
2012-02-25 15:53 ` Thierry Volpiatto
2012-02-25 22:41 ` Stefan Monnier
2012-02-26 9:21 ` Michael Albinus
2012-02-26 21:38 ` Stefan Monnier
2012-02-27 8:19 ` Michael Albinus
2012-02-27 10:39 ` Stefan Monnier
2012-02-25 13:03 ` Michael Albinus
2012-02-25 14:35 ` Stefan Monnier
2012-02-25 14:56 ` Lennart Borgman
2012-02-21 19:43 ` Michael Albinus
2012-02-21 21:03 ` Thierry Volpiatto
2012-01-16 14:09 ` Andreas Schwab
2012-01-16 19:14 ` Thierry Volpiatto
2012-01-17 6:06 ` Thierry Volpiatto
2012-01-21 13:01 ` Thierry Volpiatto
2012-01-21 16:02 ` Thierry Volpiatto
2012-01-13 19:43 ` Stefan Monnier
2012-01-13 22:51 ` Michael Albinus
2012-01-14 1:55 ` Stefan Monnier
2012-01-14 8:59 ` Eli Zaretskii
2012-01-14 14:19 ` Stefan Monnier
2012-01-14 15:55 ` Eli Zaretskii
2012-01-15 5:59 ` Thierry Volpiatto
2012-01-15 12:40 ` Michael Albinus
2012-01-15 17:28 ` Thierry Volpiatto
2012-01-13 15:31 ` Drew Adams
2012-01-13 15:41 ` Eli Zaretskii
2012-01-13 16:56 ` Drew Adams
2012-01-15 18:42 ` Drew Adams
2012-01-13 10:32 ` Eli Zaretskii
2012-03-22 2:18 ` Michael Heerdegen
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=jwvvcmz24ib.fsf-monnier+emacs@gnu.org \
--to=monnier@iro.umontreal.ca \
--cc=10489@debbugs.gnu.org \
--cc=michael.albinus@gmx.de \
--cc=thierry.volpiatto@gmail.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).