From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Thierry Volpiatto Newsgroups: gmane.emacs.devel Subject: Re: bug in copy-directory Date: Mon, 07 Feb 2011 17:02:17 +0100 Message-ID: <87zkq7x27q.fsf@gmail.com> References: <87ipxaidea.fsf@gmail.com> <878vy59ejz.fsf@stupidchicken.com> <87lj23ickn.fsf@stupidchicken.com> <87sjway8i3.fsf@gmx.de> <87wrll2ebe.fsf@stupidchicken.com> <87hbcot7gq.fsf@gmx.de> <87ei7qrdp0.fsf@gmail.com> <87ipx2dayh.fsf@gmx.de> <87y65yyxfu.fsf@gmail.com> <87d3n8xkeq.fsf@gmail.com> <878vxw6r4m.fsf@gmx.de> <87pqr790b0.fsf@gmail.com> <87oc6r7gjc.fsf@gmx.de> <87ipwz8t92.fsf@gmail.com> <878vxt69k7.fsf@stupidchicken.com> <874o8hbc9q.fsf@gmx.de> <87y65txele.fsf@gmail.com> <87tyghxdgx.fsf@gmail.com> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Trace: dough.gmane.org 1297094823 30409 80.91.229.12 (7 Feb 2011 16:07:03 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Mon, 7 Feb 2011 16:07:03 +0000 (UTC) Cc: emacs-devel@gnu.org To: Stefan Monnier Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Mon Feb 07 17:06:55 2011 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1PmTbx-00059a-Az for ged-emacs-devel@m.gmane.org; Mon, 07 Feb 2011 17:06:45 +0100 Original-Received: from localhost ([127.0.0.1]:49468 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PmTY1-0008Jm-M1 for ged-emacs-devel@m.gmane.org; Mon, 07 Feb 2011 11:02:42 -0500 Original-Received: from [140.186.70.92] (port=49385 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PmTXl-0008G2-Hn for emacs-devel@gnu.org; Mon, 07 Feb 2011 11:02:28 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PmTXi-0004pR-RO for emacs-devel@gnu.org; Mon, 07 Feb 2011 11:02:23 -0500 Original-Received: from mail-bw0-f41.google.com ([209.85.214.41]:62014) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PmTXi-0004p3-Hq for emacs-devel@gnu.org; Mon, 07 Feb 2011 11:02:22 -0500 Original-Received: by bwz16 with SMTP id 16so5166719bwz.0 for ; Mon, 07 Feb 2011 08:02:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version:content-type; bh=+g804gXy3MaunPoqwz5Qa/he/YtgFEg+V4pswumergc=; b=DTSXgcK3tPV2r9b8Pmf2p1MU9pCRWMK350KvNNv5KJYVxhMnSS2sILS5JLhsZDDwjn 1DQEMhiApqvcZP5S5Gx5qFARDrm0B60UX29aGJLBFp3ninK8olFa0DzRdG3FBja+YiM6 9izeL6p24TVMWXpzBcoYS4VyNweMPdN0oHcGY= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version:content-type; b=DtEKbfxm/32WyrJ5R5TiLcaXGbvHfSRPNZVIWe95cH6/HYK3cLzM6KniJLHHeXb0Me +gHGtMDnlMn6qPpL0xJL+l1jV0FVLt29+pyV36WZ8auNQhFuqT3g+X1z/ZLQloyhDh9p xlfw/sYqXI6DOzR1jGneyeUjon9vhrRenXrd4= Original-Received: by 10.204.52.136 with SMTP id i8mr9497491bkg.74.1297094540889; Mon, 07 Feb 2011 08:02:20 -0800 (PST) Original-Received: from thierry-MM061 (98.78.88-79.rev.gaoland.net [79.88.78.98]) by mx.google.com with ESMTPS id f20sm2126123bkf.16.2011.02.07.08.02.18 (version=TLSv1/SSLv3 cipher=RC4-MD5); Mon, 07 Feb 2011 08:02:19 -0800 (PST) In-Reply-To: (Stefan Monnier's message of "Mon, 07 Feb 2011 10:22:36 -0500") User-Agent: Gnus/5.110011 (No Gnus v0.11) Emacs/23.2.93 (gnu/linux) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Received-From: 209.85.214.41 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:135678 Archived-At: --=-=-= Content-Type: text/plain Stefan Monnier writes: >> If you want to be able to do: >> (copy-directory "/tmp/test" "~/") >> We will have to fallback to a function copy-directory1 used by dired and >> a copy-directory function/command that ALWAYS use last arg of >> copy-directory1. > > That sounds to me like the right thing to do (copy-directory already > has many arguments, and adding one which will (almost) always need to > be passed doesn't sound too attractive). > > But you say it in a tone that seems to imply it's undesirable: could you > explain why you think it's undesirable? No, i agree to use copy-directory without adding extra arguments. i.e (copy-directory "/tmp/test" "~/") The problem we have actually is to make something that: - work in interactive call to copy-directory (M-x copy-directory) - work non--interactively ==> (copy-directory "/tmp/test" "~/") - work from dired. If you have only one function copy-directory that work fine in case 2, it will fail in dired because dired already does a part of the job of this function (maybe because long time ago dired-create-files has been wrote on this bug), and if you make it work in dired it will fail in directs calls to copy-directory. So to achieve the 3 cases above i propose: - Make a copy-directory1 function that work with dired (like ancient code). - call copy-directory1 in dired-copy-file-recursive. - Make a copy-directory function/command that reuse copy-directory1 without extra args (like it was before, last arg is parents). This actually works and is IMHO the best solution.(see patch) Otherwise you have to call in dired-do-copy dired-create-files something like this: ,---- | (dired-create-files | fn (symbol-name action) files | ;; CANDIDATE is the destination. | (if (file-directory-p candidate) | ;; When CANDIDATE is a directory, build file-name in this directory. | ;; Else we use CANDIDATE. | #'(lambda (from) | (let ((target (expand-file-name (file-name-nondirectory from) candidate))) | (if (file-directory-p target) candidate target))) | #'(lambda (from) candidate)) | marker) `---- but in this case the NAME-CONSTRUCTOR returns wrong value for message, but not for executing code (it does the right thing) So in this case a rewrite (partial) of dired-create-files is needed in addition of modification of dired-do-copy call to dired-create-files. (with possible breakage of symlinking etc...) -- A+ Thierry Get my Gnupg key: gpg --keyserver pgp.mit.edu --recv-keys 59F29997 --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=patch-copy-dir5 Content-Transfer-Encoding: base64 cGF0Y2gtY29weS1kaXI1CgpGcm9tOiBUaGllcnJ5IFZvbHBpYXR0byA8dGhpZXJyeS52b2xwaWF0 dG9AZ21haWwuY29tPgoKCi0tLQogbGlzcC9kaXJlZC1hdXguZWwgfCAgICAyICstCiBsaXNwL2Zp bGVzLmVsICAgICB8ICAgNTQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgMzAgaW5zZXJ0aW9ucygrKSwgMjYgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGlzcC9kaXJlZC1hdXguZWwgYi9saXNwL2RpcmVkLWF1 eC5lbAppbmRleCAyOGIyODVmLi5iMjZjZTBhIDEwMDY0NAotLS0gYS9saXNwL2RpcmVkLWF1eC5l bAorKysgYi9saXNwL2RpcmVkLWF1eC5lbApAQCAtMTI0Miw3ICsxMjQyLDcgQEAgU3BlY2lhbCB2 YWx1ZSBgYWx3YXlzJyBzdXBwcmVzc2VzIGNvbmZpcm1hdGlvbi4iCiAJICAgICAob3IgKGVxIHJl Y3Vyc2l2ZSAnYWx3YXlzKQogCQkgKHllcy1vci1uby1wIChmb3JtYXQgIlJlY3Vyc2l2ZSBjb3Bp ZXMgb2YgJXM/ICIgZnJvbSkpKSkKIAk7OyBUaGlzIGlzIGEgZGlyZWN0b3J5LgotCShjb3B5LWRp cmVjdG9yeSBmcm9tIHRvIGRpcmVkLWNvcHktcHJlc2VydmUtdGltZSkKKwkoY29weS1kaXJlY3Rv cnkxIGZyb20gdG8gZGlyZWQtY29weS1wcmVzZXJ2ZS10aW1lKQogICAgICAgOzsgTm90IGEgZGly ZWN0b3J5LgogICAgICAgKG9yIHRvcCAoZGlyZWQtaGFuZGxlLW92ZXJ3cml0ZSB0bykpCiAgICAg ICAoY29uZGl0aW9uLWNhc2UgZXJyCmRpZmYgLS1naXQgYS9saXNwL2ZpbGVzLmVsIGIvbGlzcC9m aWxlcy5lbAppbmRleCA3YWM4OGY4Li4zMmNlNTBiIDEwMDY0NAotLS0gYS9saXNwL2ZpbGVzLmVs CisrKyBiL2xpc3AvZmlsZXMuZWwKQEAgLTQ3MjMsMzEgKzQ3MjMsOCBAQCBJZiBSRUNVUlNJVkUg aXMgbm9uLW5pbCwgYWxsIGZpbGVzIGluIERJUkVDVE9SWSBhcmUgZGVsZXRlZCBhcyB3ZWxsLiIK IAkJIGRpcmVjdG9yeSAnZnVsbCBkaXJlY3RvcnktZmlsZXMtbm8tZG90LWZpbGVzLXJlZ2V4cCkp KQogICAgICAgKGRlbGV0ZS1kaXJlY3RvcnktaW50ZXJuYWwgZGlyZWN0b3J5KSkpKSkKIAotKGRl ZnVuIGNvcHktZGlyZWN0b3J5IChkaXJlY3RvcnkgbmV3bmFtZSAmb3B0aW9uYWwga2VlcC10aW1l CisoZGVmdW4gY29weS1kaXJlY3RvcnkxIChkaXJlY3RvcnkgbmV3bmFtZSAmb3B0aW9uYWwga2Vl cC10aW1lCiAJCQkJIHBhcmVudHMgY29weS1hcy1zdWJkaXIpCi0gICJDb3B5IERJUkVDVE9SWSB0 byBORVdOQU1FLiAgQm90aCBhcmdzIG11c3QgYmUgc3RyaW5ncy4KLVRoaXMgZnVuY3Rpb24gYWx3 YXlzIHNldHMgdGhlIGZpbGUgbW9kZXMgb2YgdGhlIG91dHB1dCBmaWxlcyB0byBtYXRjaAotdGhl IGNvcnJlc3BvbmRpbmcgaW5wdXQgZmlsZS4KLQotVGhlIHRoaXJkIGFyZyBLRUVQLVRJTUUgbm9u LW5pbCBtZWFucyBnaXZlIHRoZSBvdXRwdXQgZmlsZXMgdGhlIHNhbWUKLWxhc3QtbW9kaWZpZWQg dGltZSBhcyB0aGUgb2xkIG9uZXMuICAoVGhpcyB3b3JrcyBvbiBvbmx5IHNvbWUgc3lzdGVtcy4p Ci1BIHByZWZpeCBhcmcgbWFrZXMgS0VFUC1USU1FIG5vbi1uaWwuCi0KLU9wdGlvbmFsIGFyZyBQ QVJFTlRTIHNheXMgd2hldGhlciB0byBjcmVhdGUgcGFyZW50IGRpcmVjdG9yaWVzIGlmCi10aGV5 IGRvbid0IGV4aXN0LiAgV2hlbiBjYWxsZWQgaW50ZXJhY3RpdmVseSwgUEFSRU5UUyBpcyB0Lgot Ci1XaGVuIE5FV05BTUUgaXMgYW4gZXhpc3RpbmcgZGlyZWN0b3J5LCBjb3B5IERJUkVDVE9SWSBp bnRvIGEKLXN1YmRpcmVjdG9yeSBvZiBORVdOQU1FIGlmIG9wdGlvbmFsIGFyZyBDT1BZLUFTLVNV QkRJUiBpcwotbm9uLW5pbCwgb3RoZXJ3aXNlIGNvcHkgdGhlIGNvbnRlbnRzIG9mIERJUkVDVE9S WSBpbnRvIE5FV05BTUUuCi1XaGVuIGNhbGxlZCBpbnRlcmFjdGl2ZWx5LCBjb3B5IGludG8gYSBz dWJkaXJlY3RvcnkgYnkgZGVmYXVsdC4iCi0gIChpbnRlcmFjdGl2ZQotICAgKGxldCAoKGRpciAo cmVhZC1kaXJlY3RvcnktbmFtZQotCSAgICAgICAiQ29weSBkaXJlY3Rvcnk6ICIgZGVmYXVsdC1k aXJlY3RvcnkgZGVmYXVsdC1kaXJlY3RvcnkgdCBuaWwpKSkKLSAgICAgKGxpc3QgZGlyCi0JICAg KHJlYWQtZmlsZS1uYW1lCi0JICAgIChmb3JtYXQgIkNvcHkgZGlyZWN0b3J5ICVzIHRvOiAiIGRp cikKLQkgICAgZGVmYXVsdC1kaXJlY3RvcnkgZGVmYXVsdC1kaXJlY3RvcnkgbmlsIG5pbCkKLQkg ICBjdXJyZW50LXByZWZpeC1hcmcgdCB0KSkpCiAgIDs7IElmIGRlZmF1bHQtZGlyZWN0b3J5IGlz IGEgcmVtb3RlIGRpcmVjdG9yeSwgbWFrZSBzdXJlIHdlIGZpbmQgaXRzCiAgIDs7IGNvcHktZGly ZWN0b3J5IGhhbmRsZXIuCiAgIChsZXQgKChoYW5kbGVyIChvciAoZmluZC1maWxlLW5hbWUtaGFu ZGxlciBkaXJlY3RvcnkgJ2NvcHktZGlyZWN0b3J5KQpAQCAtNDc4OSw3ICs0NzY2LDcgQEAgV2hl biBjYWxsZWQgaW50ZXJhY3RpdmVseSwgY29weSBpbnRvIGEgc3ViZGlyZWN0b3J5IGJ5IGRlZmF1 bHQuIgogCQkgICAgICAgKGZpbGUtbmFtZS1ub25kaXJlY3RvcnkgZmlsZSkgbmV3bmFtZSkpCiAJ ICAgICAgKGF0dHJzIChmaWxlLWF0dHJpYnV0ZXMgZmlsZSkpKQogCSAgKGNvbmQgKChmaWxlLWRp cmVjdG9yeS1wIGZpbGUpCi0JCSAoY29weS1kaXJlY3RvcnkgZmlsZSB0YXJnZXQga2VlcC10aW1l IHBhcmVudHMgbmlsKSkKKwkJIChjb3B5LWRpcmVjdG9yeTEgZmlsZSB0YXJnZXQga2VlcC10aW1l IHBhcmVudHMgbmlsKSkKIAkJKChzdHJpbmdwIChjYXIgYXR0cnMpKSA7IFN5bWJvbGljIGxpbmsK IAkJIChtYWtlLXN5bWJvbGljLWxpbmsgKGNhciBhdHRycykgdGFyZ2V0IHQpKQogCQkodApAQCAt NDc5OSw2ICs0Nzc2LDMzIEBAIFdoZW4gY2FsbGVkIGludGVyYWN0aXZlbHksIGNvcHkgaW50byBh IHN1YmRpcmVjdG9yeSBieSBkZWZhdWx0LiIKICAgICAgIChzZXQtZmlsZS1tb2RlcyBuZXduYW1l IChmaWxlLW1vZGVzIGRpcmVjdG9yeSkpCiAgICAgICAoaWYga2VlcC10aW1lCiAJICAoc2V0LWZp bGUtdGltZXMgbmV3bmFtZSAobnRoIDUgKGZpbGUtYXR0cmlidXRlcyBkaXJlY3RvcnkpKSkpKSkp CisKKyhkZWZ1biBjb3B5LWRpcmVjdG9yeSAoZGlyZWN0b3J5IG5ld25hbWUgJm9wdGlvbmFsIGtl ZXAtdGltZSBwYXJlbnRzKQorICAiQ29weSBESVJFQ1RPUlkgdG8gTkVXTkFNRS4gIEJvdGggYXJn cyBtdXN0IGJlIHN0cmluZ3MuCitUaGlzIGZ1bmN0aW9uIGFsd2F5cyBzZXRzIHRoZSBmaWxlIG1v ZGVzIG9mIHRoZSBvdXRwdXQgZmlsZXMgdG8gbWF0Y2gKK3RoZSBjb3JyZXNwb25kaW5nIGlucHV0 IGZpbGUuCisKK1RoZSB0aGlyZCBhcmcgS0VFUC1USU1FIG5vbi1uaWwgbWVhbnMgZ2l2ZSB0aGUg b3V0cHV0IGZpbGVzIHRoZSBzYW1lCitsYXN0LW1vZGlmaWVkIHRpbWUgYXMgdGhlIG9sZCBvbmVz LiAgKFRoaXMgd29ya3Mgb24gb25seSBzb21lIHN5c3RlbXMuKQorQSBwcmVmaXggYXJnIG1ha2Vz IEtFRVAtVElNRSBub24tbmlsLgorCitPcHRpb25hbCBhcmcgUEFSRU5UUyBzYXlzIHdoZXRoZXIg dG8gY3JlYXRlIHBhcmVudCBkaXJlY3RvcmllcyBpZgordGhleSBkb24ndCBleGlzdC4gIFdoZW4g Y2FsbGVkIGludGVyYWN0aXZlbHksIFBBUkVOVFMgaXMgdC4KKworV2hlbiBORVdOQU1FIGlzIGFu IGV4aXN0aW5nIGRpcmVjdG9yeSwgY29weSBESVJFQ1RPUlkgaW50byBhCitzdWJkaXJlY3Rvcnkg b2YgTkVXTkFNRSBpZiBvcHRpb25hbCBhcmcgQ09QWS1BUy1TVUJESVIgaXMKK25vbi1uaWwsIG90 aGVyd2lzZSBjb3B5IHRoZSBjb250ZW50cyBvZiBESVJFQ1RPUlkgaW50byBORVdOQU1FLgorV2hl biBjYWxsZWQgaW50ZXJhY3RpdmVseSwgY29weSBpbnRvIGEgc3ViZGlyZWN0b3J5IGJ5IGRlZmF1 bHQuIgorICAoaW50ZXJhY3RpdmUKKyAgIChsZXQgKChkaXIgKHJlYWQtZGlyZWN0b3J5LW5hbWUK KwkgICAgICAgIkNvcHkgZGlyZWN0b3J5OiAiIGRlZmF1bHQtZGlyZWN0b3J5IGRlZmF1bHQtZGly ZWN0b3J5IHQgbmlsKSkpCisgICAgIChsaXN0IGRpcgorCSAgIChyZWFkLWZpbGUtbmFtZQorCSAg ICAoZm9ybWF0ICJDb3B5IGRpcmVjdG9yeSAlcyB0bzogIiBkaXIpCisJICAgIGRlZmF1bHQtZGly ZWN0b3J5IGRlZmF1bHQtZGlyZWN0b3J5IG5pbCBuaWwpCisJICAgY3VycmVudC1wcmVmaXgtYXJn IHQpKSkKKyAgKGNvcHktZGlyZWN0b3J5MSBkaXJlY3RvcnkgbmV3bmFtZSBrZWVwLXRpbWUgcGFy ZW50cyAnY29weS1hcy1zdWJkaXIpKQorCiAMCiAocHV0ICdyZXZlcnQtYnVmZmVyLWZ1bmN0aW9u ICdwZXJtYW5lbnQtbG9jYWwgdCkKIChkZWZ2YXIgcmV2ZXJ0LWJ1ZmZlci1mdW5jdGlvbiBuaWwK --=-=-=--