From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 10 18:56:27 2014 Received: (at submit) by debbugs.gnu.org; 10 Mar 2014 22:56:27 +0000 Received: from localhost ([127.0.0.1]:60650 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WN97T-0006wL-4M for submit@debbugs.gnu.org; Mon, 10 Mar 2014 18:56:27 -0400 Received: from eggs.gnu.org ([208.118.235.92]:49986) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WN97Q-0006w2-B3 for submit@debbugs.gnu.org; Mon, 10 Mar 2014 18:56:24 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WN97J-00013N-7q for submit@debbugs.gnu.org; Mon, 10 Mar 2014 18:56:23 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: * X-Spam-Status: No, score=1.6 required=5.0 tests=BAYES_40,DATE_IN_PAST_03_06, T_DKIM_INVALID autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:41035) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WN97J-00013J-5Z for submit@debbugs.gnu.org; Mon, 10 Mar 2014 18:56:17 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51645) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WN97D-00057K-6o for bug-gnu-emacs@gnu.org; Mon, 10 Mar 2014 18:56:17 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WN977-00010S-1v for bug-gnu-emacs@gnu.org; Mon, 10 Mar 2014 18:56:11 -0400 Received: from caiajhbdcbef.dreamhost.com ([208.97.132.145]:47317 helo=homiemail-a38.g.dreamhost.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WN976-00010I-T6 for bug-gnu-emacs@gnu.org; Mon, 10 Mar 2014 18:56:04 -0400 Received: from homiemail-a38.g.dreamhost.com (localhost [127.0.0.1]) by homiemail-a38.g.dreamhost.com (Postfix) with ESMTP id 0B7AA10AFAE for ; Mon, 10 Mar 2014 15:56:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=jidanni.org; h=from:to :subject:date:message-id:mime-version:content-type; s= jidanni.org; bh=DSWgAk048mYnwtR8kFudFbjc7oA=; b=jvWrIXRe/4dtfd7w 5smd4LLhnXTQ/zK//JUXEyDDkTiUU1ZvmB/2rTb8zbG5hnHOxskaPKoQxKeaHxAR gyoSrPWf9SLc8JxbaURyTOj7g5QTGUvlpMJxdCyP1qawwuk/q1dK44jPwsow6+td D7d9TlCQWRzpntdyt/8tBT1nBrE= Received: from jidanni.org (114-26-44-89.dynamic.hinet.net [114.26.44.89]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) (Authenticated sender: jidanni@jidanni.org) by homiemail-a38.g.dreamhost.com (Postfix) with ESMTPSA id 8315F10AFAD for ; Mon, 10 Mar 2014 15:56:03 -0700 (PDT) From: =?utf-8?B?56mN5Li55bC8?= Dan Jacobson To: bug-gnu-emacs@gnu.org Subject: dired-do-rename susceptible to .../~/... hijack Date: Tue, 11 Mar 2014 02:10:07 +0800 Message-ID: <87eh2aq60w.fsf@jidanni.org> MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -3.9 (---) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.9 (---) R runs the command dired-do-rename, which is an interactive autoloaded compiled Lisp function in `dired-aux.el'. Using it, I got this strange error: Move `/home/jidanni/.cpanm/work/1327389327.6650' to `/tmp/1327389327.6650' failed: (file-error Opening output file permission denied /home/jidanni/perl5/lib/perl5/i486-linux-gnu-thread-multi-64int/.meta/accessors-1.01/MYMETA.json) Well it turns out emacs' file name simplifying rules are being applied in inappropriate places like when encountering /home/jidanni/.cpanm/work/1327389327.6650/accessors-1.01/~/perl5/lib/perl5/i486-linux-gnu-thread-multi-64int/.meta/accessors-1.01: total 16 drwxr-xr-x 2 jidanni 4096 2012-01-24 . drwxr-xr-x 3 jidanni 4096 2012-01-24 .. -r--r--r-- 1 jidanni 1374 2012-01-24 MYMETA.json -r--r--r-- 1 jidanni 456 2012-01-24 install.json One must use /bin/mv and not dired-do-rename to get the job done right. One can even think of ways the bad guys could exploit this to chip away at arbitrary files. $ apt-cache policy emacs-snapshot emacs-snapshot: Installed: 2:20140101-1 From debbugs-submit-bounces@debbugs.gnu.org Sat Oct 22 22:20:50 2016 Received: (at 16984) by debbugs.gnu.org; 23 Oct 2016 02:20:50 +0000 Received: from localhost ([127.0.0.1]:46705 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1by8P4-00012H-DC for submit@debbugs.gnu.org; Sat, 22 Oct 2016 22:20:50 -0400 Received: from mail-it0-f49.google.com ([209.85.214.49]:38863) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1by8P2-000120-R2; Sat, 22 Oct 2016 22:20:49 -0400 Received: by mail-it0-f49.google.com with SMTP id 66so79060682itl.1; Sat, 22 Oct 2016 19:20:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version:content-transfer-encoding; bh=StDGif7hBnijeDg4LYpacSTQzlrPZKo54dKzUtxlB/c=; b=SQYzKTCHMwQEG66h1wnoSEbQbBp0Mo6vfRD+mh42Ui1xygYZhMYlpvf8La0hr2yndq 3sfVOX8vivDy5tCOiBRhNU3AolmSxqkaL/GGE0fVMtGTJvcL91hZk1B8Re4DgXQUHKuK +3xvm6rlYj9qCMi/sLcg8PQmQ2HYT+dK5ez7G/HbJBzpEZzUX2/RR7BBShFUT7R8ZGRx tMWSCVdBo5RqVZ05Y3iwDtF/o0AkKTuU9ebZttRlqseO2rowAndd1+t0kV5zmTWMOr2Z ZV98tE1rbsxPo25wcBF04edhiopF3pfagwVIH79JbIjE7RdxGcflqxbC6DrDicbIwO+a E+KA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:from:to:cc:subject:references:date :in-reply-to:message-id:user-agent:mime-version :content-transfer-encoding; bh=StDGif7hBnijeDg4LYpacSTQzlrPZKo54dKzUtxlB/c=; b=mxwBKXsSQpeF1ppBpkVN76ySsIRRM4Ifl+yqjNOnDw2Ks56JxUBGSyKvCdMzQeo5T9 Ud42VnlqkK5/UvDxtLv2n3wFqb0oAmGysKUIOmP8UMQhJFGgYjUBItMHgmbMTo4pm0W6 kHgm8jB41KHLRjgivB2StZE10t/EQeSK6vLrQ6UW7TgOfiaNBDVgmudBcZtRJHrM+bAR VuM8FpQT6Kb20nk97QoNjsD1Gdyx1a3qka5lK4OimSpRqnaKpBexfGhG4xv3kWVM9Iu6 QMDVjnAmb4A9w0fiF8wIrzrS0ugNYAleapG8DJ6/3irD+tUAVxvqx+ky0a6trTZu/CSB mHSA== X-Gm-Message-State: ABUngvdv4VzKJnGBqOyjwsHLObaFvCjCNBslcmteHWpdccyt/lqKlh9Q4dT5tf4JR3rmkA== X-Received: by 10.36.89.206 with SMTP id p197mr7447922itb.103.1477189243113; Sat, 22 Oct 2016 19:20:43 -0700 (PDT) Received: from zony ([45.2.7.130]) by smtp.googlemail.com with ESMTPSA id e6sm2865178ite.2.2016.10.22.19.20.42 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sat, 22 Oct 2016 19:20:42 -0700 (PDT) From: npostavs@users.sourceforge.net To: =?utf-8?B?56mN5Li55bC8?= Dan Jacobson Subject: Re: bug#16984: dired-do-rename susceptible to .../~/... hijack References: <87eh2aq60w.fsf@jidanni.org> Date: Sat, 22 Oct 2016 22:21:20 -0400 In-Reply-To: <87eh2aq60w.fsf@jidanni.org> (=?utf-8?B?IuepjeS4ueWwvA==?= Dan Jacobson"'s message of "Tue, 11 Mar 2014 02:10:07 +0800") Message-ID: <87pomrst3z.fsf@users.sourceforge.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 16984 Cc: 16984@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) tags 16984 confirmed found 16984 25.1 quit =E7=A9=8D=E4=B8=B9=E5=B0=BC Dan Jacobson writes: > R runs the command dired-do-rename, which is an interactive autoloaded > compiled Lisp function in `dired-aux.el'. > > Using it, I got this strange error: > > Move `/home/jidanni/.cpanm/work/1327389327.6650' to `/tmp/1327389327.6650= ' failed: > (file-error Opening output file permission denied > /home/jidanni/perl5/lib/perl5/i486-linux-gnu-thread-multi-64int/.meta/acc= essors-1.01/MYMETA.json) > > Well it turns out emacs' file name simplifying rules are being applied > in inappropriate places like when encountering > > /home/jidanni/.cpanm/work/1327389327.6650/accessors-1.01/~/perl5/lib/pe= rl5/i486-linux-gnu-thread-multi-64int/.meta/accessors-1.01: The essential problem seems to be that there is no way to escape filenames from substitute-in-file-name to protect a file named "~", therefore read-file-name-default can never return a filename in a directory with that name. From debbugs-submit-bounces@debbugs.gnu.org Sun Oct 23 02:50:45 2016 Received: (at 16984) by debbugs.gnu.org; 23 Oct 2016 06:50:45 +0000 Received: from localhost ([127.0.0.1]:47122 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1byCcH-0001H4-Bb for submit@debbugs.gnu.org; Sun, 23 Oct 2016 02:50:45 -0400 Received: from eggs.gnu.org ([208.118.235.92]:34022) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1byCcF-0001Gl-JC for 16984@debbugs.gnu.org; Sun, 23 Oct 2016 02:50:43 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1byCc7-0007fs-8A for 16984@debbugs.gnu.org; Sun, 23 Oct 2016 02:50:38 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-0.3 required=5.0 tests=BAYES_40,RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:58139) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1byCc7-0007fl-1v; Sun, 23 Oct 2016 02:50:35 -0400 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:2436 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128) (Exim 4.82) (envelope-from ) id 1byCc6-00060y-92; Sun, 23 Oct 2016 02:50:34 -0400 Date: Sun, 23 Oct 2016 09:50:30 +0300 Message-Id: <837f8zpnih.fsf@gnu.org> From: Eli Zaretskii To: npostavs@users.sourceforge.net In-reply-to: <87pomrst3z.fsf@users.sourceforge.net> (npostavs@users.sourceforge.net) Subject: Re: bug#16984: dired-do-rename susceptible to .../~/... hijack References: <87eh2aq60w.fsf@jidanni.org> <87pomrst3z.fsf@users.sourceforge.net> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.3 (-----) X-Debbugs-Envelope-To: 16984 Cc: 16984@debbugs.gnu.org, jidanni@jidanni.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Eli Zaretskii Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.3 (-----) > From: npostavs@users.sourceforge.net > Date: Sat, 22 Oct 2016 22:21:20 -0400 > Cc: 16984@debbugs.gnu.org > > The essential problem seems to be that there is no way to escape > filenames from substitute-in-file-name to protect a file named "~", > therefore read-file-name-default can never return a filename in a > directory with that name. What about the "/:" quoting? It works for me, when I type "/:" before the name of the file which has a '~' character embedded in it. From debbugs-submit-bounces@debbugs.gnu.org Fri Oct 28 22:26:39 2016 Received: (at 16984) by debbugs.gnu.org; 29 Oct 2016 02:26:40 +0000 Received: from localhost ([127.0.0.1]:34553 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1c0JLz-00029I-Jz for submit@debbugs.gnu.org; Fri, 28 Oct 2016 22:26:39 -0400 Received: from mail-it0-f42.google.com ([209.85.214.42]:38552) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1c0JLy-00028x-3A; Fri, 28 Oct 2016 22:26:38 -0400 Received: by mail-it0-f42.google.com with SMTP id q124so9339663itd.1; Fri, 28 Oct 2016 19:26:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=nfYtEYwAhu/MlTF4mCElsXcfKvk6zR9uTG6ew5T6anA=; b=FK5viuN2yVhLkvMXYIym4YKFs6FH6YBqVoUD54qy8orjYJFLvjWnNGynUN9FZE4sP4 drZfdX8QHrVPDsCeP6u/rUxDHQlCuMwbSgMC5+KS8Uvb00U/KZ/NEaeO4s+/VT5n/CSq 8rAiyZlYeKvjVglziE/j0ZsvasPdUnw82QWYRlK8ik1B3AhuNnpqkgGC0tJmvVcmMLw3 wQ1HklrMYbcrzqoiyeqUoylUvnoEy9OYT4QVr/fav5e4BF6rWHSY10+8akeMLvAXSXpG 3GLXFB+yGTEAFXlcnKWLmejpb0fg50sRwRMTMUrLkvPnrLgJYAdhZaMyJFEF9aXgsYVu bmAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:from:to:cc:subject:references:date :in-reply-to:message-id:user-agent:mime-version; bh=nfYtEYwAhu/MlTF4mCElsXcfKvk6zR9uTG6ew5T6anA=; b=Kj1r1BO9wBZoLa1LzdGTFLIFnYmOXfalAuscX20meyC9v+NLyyqezw7ANv/BjwvnBI m1aFB8lPdhsMqsm4woDfqHcXp7EE+BCau5OOIwtdJmdYe3C0v03p89a1K1BaAzbo7cf7 UgReufSk/wao0vhfXwUMDsKYWWeYM5H8izxKvIY6XbemAe7CIkV1NNLcn5dY8V2aJx5H JlSFvI1CjW0oFTRZM6Nt9hhCuYNDawOWNsFvPwWSLjdLwQbdF8gptu5S2HHcBSuNhcjq j9K6prCMjmEeHCnCR3R32AiREk9nSFkZM+QSKujQwjts7mKKatHl0rFXwyuV6aQheYIg k21g== X-Gm-Message-State: ABUngvd2VOxSPzA0dZu5nT/4n2QjxUtSJtS1aaMkir0o1uexFHLh0OTjvBfSFbDe7Yx3Tg== X-Received: by 10.36.222.85 with SMTP id d82mr1197317itg.111.1477707992515; Fri, 28 Oct 2016 19:26:32 -0700 (PDT) Received: from zony ([45.2.7.130]) by smtp.googlemail.com with ESMTPSA id b133sm3428223ita.1.2016.10.28.19.26.31 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 28 Oct 2016 19:26:31 -0700 (PDT) From: npostavs@users.sourceforge.net To: Eli Zaretskii Subject: Re: bug#16984: dired-do-rename susceptible to .../~/... hijack References: <87eh2aq60w.fsf@jidanni.org> <87pomrst3z.fsf@users.sourceforge.net> <837f8zpnih.fsf@gnu.org> Date: Fri, 28 Oct 2016 22:27:13 -0400 In-Reply-To: <837f8zpnih.fsf@gnu.org> (Eli Zaretskii's message of "Sun, 23 Oct 2016 09:50:30 +0300") Message-ID: <87pomjrita.fsf@users.sourceforge.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: 0.2 (/) X-Debbugs-Envelope-To: 16984 Cc: 16984@debbugs.gnu.org, jidanni@jidanni.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.2 (/) --=-=-= Content-Type: text/plain severity 16984 minor tags 16984 patch quit Eli Zaretskii writes: >> From: npostavs@users.sourceforge.net >> Date: Sat, 22 Oct 2016 22:21:20 -0400 >> Cc: 16984@debbugs.gnu.org >> >> The essential problem seems to be that there is no way to escape >> filenames from substitute-in-file-name to protect a file named "~", >> therefore read-file-name-default can never return a filename in a >> directory with that name. > > What about the "/:" quoting? It works for me, when I type "/:" before > the name of the file which has a '~' character embedded in it. Ah, yes it works, as documented in `(emacs) Quoted File Names'. I think it would be nicer if Emacs' file prompts defaulted to insert this as needed, here's a patch to do that: --=-=-= Content-Type: text/plain Content-Disposition: attachment; filename=v1-0001-Quote-filenames-containing-in-prompts.patch Content-Description: patch >From 4b45ab051deaec0f65fa0caa7a5ecb1dff5c8cab Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Thu, 27 Oct 2016 22:17:11 -0400 Subject: [PATCH v1] Quote filenames containing '~' in prompts When in a directory named '~', the default value given by `read-file-name' should be quoted by prepending '/:', in order to prevent it from being interpreted as referring to the $HOME directory (Bug #16984). * lisp/minibuffer.el (minibuffer-maybe-quote-filename): New function. (completion--sifn-requote, read-file-name-default): Use it instead of `minibuffer--double-dollars'. * test/lisp/files-tests.el (files-test-read-file-in-~): Test it. --- lisp/minibuffer.el | 23 ++++++++++++++++------- test/lisp/files-tests.el | 23 +++++++++++++++++++++++ 2 files changed, 39 insertions(+), 7 deletions(-) diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el index 175189c..7999e7b 100644 --- a/lisp/minibuffer.el +++ b/lisp/minibuffer.el @@ -2251,6 +2251,15 @@ minibuffer--double-dollars (replace-regexp-in-string "\\$" (lambda (dollar) (concat dollar dollar)) str)) +(defun minibuffer-maybe-quote-filename (filename) + "Protect FILENAME from `substitute-in-file-name', as needed. +Useful to give the user default values that won't be substituted." + (if (and (not (string-prefix-p "/:" filename)) + (file-name-absolute-p filename) + (string-match-p "/~" filename)) + (concat "/:" filename) + (minibuffer--double-dollars filename))) + (defun completion--make-envvar-table () (mapcar (lambda (enventry) (substring enventry 0 (string-match-p "=" enventry))) @@ -2420,7 +2429,7 @@ completion--sifn-requote (substitute-in-file-name (substring qstr 0 (1- qpos))))) (setq qpos (1- qpos))) - (cons qpos #'minibuffer--double-dollars)))) + (cons qpos #'minibuffer-maybe-quote-filename)))) (defalias 'completion--file-name-table (completion-table-with-quoting #'completion-file-name-table @@ -2596,10 +2605,10 @@ read-file-name-default (let ((insdef (cond ((and insert-default-directory (stringp dir)) (if initial - (cons (minibuffer--double-dollars (concat dir initial)) - (length (minibuffer--double-dollars dir))) - (minibuffer--double-dollars dir))) - (initial (cons (minibuffer--double-dollars initial) 0))))) + (cons (minibuffer-maybe-quote-filename (concat dir initial)) + (length (minibuffer-maybe-quote-filename dir))) + (minibuffer-maybe-quote-filename dir))) + (initial (cons (minibuffer-maybe-quote-filename initial) 0))))) (let ((completion-ignore-case read-file-name-completion-ignore-case) (minibuffer-completing-file-name t) @@ -2693,7 +2702,7 @@ read-file-name-default ;; with what we will actually return. As an exception, ;; if that's the same as the second item in ;; file-name-history, it's really a repeat (Bug#4657). - (let ((val1 (minibuffer--double-dollars val))) + (let ((val1 (minibuffer-maybe-quote-filename val))) (if history-delete-duplicates (setcdr file-name-history (delete val1 (cdr file-name-history)))) @@ -2703,7 +2712,7 @@ read-file-name-default (if add-to-history ;; Add the value to the history--but not if it matches ;; the last value already there. - (let ((val1 (minibuffer--double-dollars val))) + (let ((val1 (minibuffer-maybe-quote-filename val))) (unless (and (consp file-name-history) (equal (car file-name-history) val1)) (setq file-name-history diff --git a/test/lisp/files-tests.el b/test/lisp/files-tests.el index 80d5e5b..f4ccd5c 100644 --- a/test/lisp/files-tests.el +++ b/test/lisp/files-tests.el @@ -220,5 +220,28 @@ files-test-bug-18141-file (should-not yes-or-no-p-prompts) (should (equal kill-emacs-args '(nil))))) +(ert-deftest files-test-read-file-in-~ () + "Test file prompting in directory named '~'. +If we are in a directory named '~', the default value should not +be $HOME." + (cl-letf (((symbol-function 'completing-read) + (lambda (_prompt _coll &optional _pred _req init _hist def _) + (or def init))) + (dir (make-temp-file "read-file-name-test" t))) + (unwind-protect + (let ((subdir (expand-file-name "./~/"))) + (make-directory subdir t) + (with-temp-buffer + (setq default-directory subdir) + (should-not (equal + (expand-file-name (read-file-name "File: ")) + (expand-file-name "~/"))) + ;; Don't overquote either! + (setq default-directory (concat "/:" subdir)) + (should-not (equal + (expand-file-name (read-file-name "File: ")) + (concat "/:/:" subdir))))) + (delete-directory dir 'recursive)))) + (provide 'files-tests) ;;; files-tests.el ends here -- 2.9.3 --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Sat Oct 29 03:01:43 2016 Received: (at 16984) by debbugs.gnu.org; 29 Oct 2016 07:01:43 +0000 Received: from localhost ([127.0.0.1]:35234 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1c0NeB-0002G3-43 for submit@debbugs.gnu.org; Sat, 29 Oct 2016 03:01:43 -0400 Received: from eggs.gnu.org ([208.118.235.92]:57575) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1c0Ne9-0002Fr-8r for 16984@debbugs.gnu.org; Sat, 29 Oct 2016 03:01:41 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1c0Ne3-0001Ya-0Q for 16984@debbugs.gnu.org; Sat, 29 Oct 2016 03:01:36 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.4 required=5.0 tests=BAYES_20,RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:47716) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1c0Ndw-0001TY-9a; Sat, 29 Oct 2016 03:01:28 -0400 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:4681 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128) (Exim 4.82) (envelope-from ) id 1c0Ndv-0006VO-JP; Sat, 29 Oct 2016 03:01:28 -0400 Date: Sat, 29 Oct 2016 10:01:36 +0300 Message-Id: <83pomjr63z.fsf@gnu.org> From: Eli Zaretskii To: npostavs@users.sourceforge.net In-reply-to: <87pomjrita.fsf@users.sourceforge.net> (npostavs@users.sourceforge.net) Subject: Re: bug#16984: dired-do-rename susceptible to .../~/... hijack References: <87eh2aq60w.fsf@jidanni.org> <87pomrst3z.fsf@users.sourceforge.net> <837f8zpnih.fsf@gnu.org> <87pomjrita.fsf@users.sourceforge.net> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -6.4 (------) X-Debbugs-Envelope-To: 16984 Cc: 16984@debbugs.gnu.org, jidanni@jidanni.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Eli Zaretskii Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -6.4 (------) > From: npostavs@users.sourceforge.net > Cc: 16984@debbugs.gnu.org, jidanni@jidanni.org > Date: Fri, 28 Oct 2016 22:27:13 -0400 > > > What about the "/:" quoting? It works for me, when I type "/:" before > > the name of the file which has a '~' character embedded in it. > > Ah, yes it works, as documented in `(emacs) Quoted File Names'. I think > it would be nicer if Emacs' file prompts defaulted to insert this as > needed, here's a patch to do that: This is good for master, but please wait for a few days in case someone would like to comment or object. Thanks. From debbugs-submit-bounces@debbugs.gnu.org Sat Oct 29 09:24:18 2016 Received: (at 16984) by debbugs.gnu.org; 29 Oct 2016 13:24:19 +0000 Received: from localhost ([127.0.0.1]:36155 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1c0TcQ-0007lh-ON for submit@debbugs.gnu.org; Sat, 29 Oct 2016 09:24:18 -0400 Received: from mout.gmx.net ([212.227.15.18]:64297) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1c0TcO-0007lR-Jr for 16984@debbugs.gnu.org; Sat, 29 Oct 2016 09:24:17 -0400 Received: from detlef.gmx.de ([93.209.77.133]) by mail.gmx.com (mrgmx001) with ESMTPSA (Nemesis) id 0Lee2I-1cfZzD1TYM-00qT7Q; Sat, 29 Oct 2016 15:23:53 +0200 From: Michael Albinus To: Eli Zaretskii Subject: Re: bug#16984: dired-do-rename susceptible to .../~/... hijack References: <87eh2aq60w.fsf@jidanni.org> <87pomrst3z.fsf@users.sourceforge.net> <837f8zpnih.fsf@gnu.org> <87pomjrita.fsf@users.sourceforge.net> <83pomjr63z.fsf@gnu.org> Date: Sat, 29 Oct 2016 15:23:51 +0200 In-Reply-To: <83pomjr63z.fsf@gnu.org> (Eli Zaretskii's message of "Sat, 29 Oct 2016 10:01:36 +0300") Message-ID: <87eg2zb860.fsf@gmx.de> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:dYw3jaaIdcf4xI+iarYwLTFi+6AUa1iYnRPblvfx3QNNQnWORIb Hro83ATURHUQq0OWBCbtFb7zITJOuuqSTuNIdWDuKM99cCIWD944tq6rrne7jZYfrkmRa/b gqP6OCymEE1oW0I+ckNSJX6O3CYHFnsB1qtzsLCjXmZCNz8IzLNEh3MMn2URcR8x2QSXzEo Cn6P22qndGToMgBNBxwvA== X-UI-Out-Filterresults: notjunk:1;V01:K0:44D42jVZ8WY=:sxMcCtonsOxZua9Qg9Ubpo Cw52gwife9RQ0/XTJ3frWuDD7FmY3dH+ub5/8dBR+L+5zOn9GSI2vFX4juo0CnSe5BOipljyR MWvcXys0O0WZHnx1IJb9ttwbzA9q2bpblq7l8X68c8TPPQhUVCcDu/+kaZRnTcmApxzTh6YDM /zuapey4Ebx+plIG0Z3cFd6bOrSOf73G30eB37/ur2M/Bf58LI0Nl/1jodPbj2sq15D00rSZL PkabdyJEy5sQVC2mpbjRG4aOGImPbXqmnmQvL1cEGXFHg0feP+gXXfLq7IN5X5i/cGD+eMbN1 bl7fyVosm5t0H2fAZazXInbl6sFjhQmEDfmqJqIfM4wELd/PkfL6FoNe8/UwK8C1wLNy8Ux5o Zm2HqVdCNjEiCTkkYcLfLgRgU6r20uNcWu3bl5dZ8Xu8Grt40a3tG6OOgaoqP9jdzOuntI4ld gTcTD1L3MgODI/+kRWUvTKkGoEZWRVyNGQoUsupGS9pqXIQ0UrFg8pkP/PwuKcLV6hmaDbRb3 MHF+9BhqE3wM5DOpJ/KH03YdmRhXYgGoLQamflnoH/OAfzKthRj/G4lu2+CGJz+JqFz5dB7Fc 0RTLtDeh6lE8qGpo2ufLMUVwSeZTRhNyNZirp7iBreOBA3ZFK4Oa8oLlRBrzYAmny2uJfF8Pt 8wV7Q/XBHo99waGch++T0Jg7we+vjZyFCxj/6xGJUPXSFIjCtRfi4m4n72kHpezcURubxHIgg SNzJDVaforxpEna3K136jfGdN//hVU6mL07bTDEgYVenNDzO/e6njbN6916g4UKJiFFX627i8 lYXqQJd X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 16984 Cc: jidanni@jidanni.org, 16984@debbugs.gnu.org, npostavs@users.sourceforge.net X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) Eli Zaretskii writes: >> From: npostavs@users.sourceforge.net >> Cc: 16984@debbugs.gnu.org, jidanni@jidanni.org >> Date: Fri, 28 Oct 2016 22:27:13 -0400 >> >> > What about the "/:" quoting? It works for me, when I type "/:" before >> > the name of the file which has a '~' character embedded in it. >> >> Ah, yes it works, as documented in `(emacs) Quoted File Names'. I think >> it would be nicer if Emacs' file prompts defaulted to insert this as >> needed, here's a patch to do that: > > This is good for master, but please wait for a few days in case > someone would like to comment or object. Prefixing with "/:" would also deactivate all file name handlers. The file name "/ssh:user@host:/path/~/file" would be handled literally, which is wrong. > Thanks. Best regards, Michael. From debbugs-submit-bounces@debbugs.gnu.org Sat Oct 29 11:54:24 2016 Received: (at 16984) by debbugs.gnu.org; 29 Oct 2016 15:54:24 +0000 Received: from localhost ([127.0.0.1]:36755 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1c0Vxf-00032B-Re for submit@debbugs.gnu.org; Sat, 29 Oct 2016 11:54:24 -0400 Received: from mail-it0-f54.google.com ([209.85.214.54]:38218) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1c0Vxd-00031z-IS for 16984@debbugs.gnu.org; Sat, 29 Oct 2016 11:54:21 -0400 Received: by mail-it0-f54.google.com with SMTP id q124so29845229itd.1 for <16984@debbugs.gnu.org>; Sat, 29 Oct 2016 08:54:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=V78qI5FDnBImTaJX2sWHBQ8Um1ESRznsxEdsQajSpxg=; b=O5fQVaxYVQqI2fsdn9vc1fzGB8pAFzzM8YiIjegc1BW6W7JXJWyIG1GGVxrlivtpRF t2CHNrOlUq8OnPVe5AIhk1qBHClsv4vzaheHx7ojs2vFg1iejI8lqFPzzoIgNMgXvipm 7OEXgNRdD7F78m5J4e7bgpJ/WaLbPt8DnCpbIer2sQcJgqDpEhqKEuYIC9jn73tE0dhN AiAgvLYskLpUyJgcIhJCtidjNQeYtqUQh4LAjaHThuYaLOBHN/TMumyDwQtoRDVGwsMc HPzS4Nij9RaRvVyyulYqNfKTngiGttAjK+j2P9hrCqZou06oYETPY8TJEVlBoHVNXewk 0NOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:from:to:cc:subject:references:date :in-reply-to:message-id:user-agent:mime-version; bh=V78qI5FDnBImTaJX2sWHBQ8Um1ESRznsxEdsQajSpxg=; b=CYXM/Mv+ifdZ4uVmr0vzdnAv3YFi9FtTY60wilwKgywAVsLkxpjL1hzU9Z2bUd1MTq I2s1bviogshFcEiu71ccqL0JOB3BDAzgNr8CBqk60AERu+Cwzig/VX6GmmhOuj1gnDHU CFx3W48S7IlEgjMimdzoTsrCVAIwEtsxhlIkVoylnsKL9ds1wO2om9boPHXR6m2GgpRk tG4a9odNXJuswvDR2SnIosoXu/Eaos72xYObiiDoIHvCxqW7oMybEqfxjuZjukRoFIup UxsEMbAZNQwb9PX43QGKIoDWnwmFzk1rdo+IJ/K4eDpaw3f551gg5Q/QsGiMeYXjeZ/G 0/YA== X-Gm-Message-State: ABUngvcxzjryLUQqzg1KATJp4LXkS0exS2UxOo6tKmd8nG435qZnDP51bMART0zaOFefRA== X-Received: by 10.36.57.5 with SMTP id l5mr2898777ita.26.1477756455925; Sat, 29 Oct 2016 08:54:15 -0700 (PDT) Received: from zony ([45.2.7.130]) by smtp.googlemail.com with ESMTPSA id 70sm7136814iou.3.2016.10.29.08.54.14 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sat, 29 Oct 2016 08:54:15 -0700 (PDT) From: npostavs@users.sourceforge.net To: Michael Albinus Subject: Re: bug#16984: dired-do-rename susceptible to .../~/... hijack References: <87eh2aq60w.fsf@jidanni.org> <87pomrst3z.fsf@users.sourceforge.net> <837f8zpnih.fsf@gnu.org> <87pomjrita.fsf@users.sourceforge.net> <83pomjr63z.fsf@gnu.org> <87eg2zb860.fsf@gmx.de> Date: Sat, 29 Oct 2016 11:54:56 -0400 In-Reply-To: <87eg2zb860.fsf@gmx.de> (Michael Albinus's message of "Sat, 29 Oct 2016 15:23:51 +0200") Message-ID: <87h97vqhf3.fsf@users.sourceforge.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 16984 Cc: Eli Zaretskii , 16984@debbugs.gnu.org, jidanni@jidanni.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) --=-=-= Content-Type: text/plain Michael Albinus writes: > Eli Zaretskii writes: > >>> From: npostavs@users.sourceforge.net >>> Cc: 16984@debbugs.gnu.org, jidanni@jidanni.org >>> Date: Fri, 28 Oct 2016 22:27:13 -0400 >>> >>> > What about the "/:" quoting? It works for me, when I type "/:" before >>> > the name of the file which has a '~' character embedded in it. >>> >>> Ah, yes it works, as documented in `(emacs) Quoted File Names'. I think >>> it would be nicer if Emacs' file prompts defaulted to insert this as >>> needed, here's a patch to do that: >> >> This is good for master, but please wait for a few days in case >> someone would like to comment or object. > > Prefixing with "/:" would also deactivate all file name handlers. The > file name "/ssh:user@host:/path/~/file" would be handled literally, > which is wrong. Ah, good point. How about checking (find-file-name-handler filename 'substitute-in-file-name): --=-=-= Content-Type: text/plain Content-Disposition: attachment; filename=v2-0001-Quote-filenames-containing-in-prompts.patch Content-Description: patch v2 >From f5a6fbca230f79745be979df4d73550a201fcc53 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Thu, 27 Oct 2016 22:17:11 -0400 Subject: [PATCH v2] Quote filenames containing '~' in prompts When in a directory named '~', the default value given by `read-file-name' should be quoted by prepending '/:', in order to prevent it from being interpreted as referring to the $HOME directory (Bug #16984). * lisp/minibuffer.el (minibuffer-maybe-quote-filename): New function. (completion--sifn-requote, read-file-name-default): Use it instead of `minibuffer--double-dollars'. * test/lisp/files-tests.el (files-test-read-file-in-~): Test it. --- lisp/minibuffer.el | 27 ++++++++++++++++++++------- test/lisp/files-tests.el | 23 +++++++++++++++++++++++ 2 files changed, 43 insertions(+), 7 deletions(-) diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el index 175189c..217bcac 100644 --- a/lisp/minibuffer.el +++ b/lisp/minibuffer.el @@ -2251,6 +2251,19 @@ minibuffer--double-dollars (replace-regexp-in-string "\\$" (lambda (dollar) (concat dollar dollar)) str)) +(defun minibuffer-maybe-quote-filename (filename) + "Protect FILENAME from `substitute-in-file-name', as needed. +Useful to give the user default values that won't be substituted." + (if (and (not (string-prefix-p "/:" filename)) + (file-name-absolute-p filename) + (string-match-p "/~" filename) + (not (let ((handler (find-file-name-handler + filename 'substitute-in-file-name))) + (and handler + (funcall handler 'substitute-in-file-name filename))))) + (concat "/:" filename) + (minibuffer--double-dollars filename))) + (defun completion--make-envvar-table () (mapcar (lambda (enventry) (substring enventry 0 (string-match-p "=" enventry))) @@ -2420,7 +2433,7 @@ completion--sifn-requote (substitute-in-file-name (substring qstr 0 (1- qpos))))) (setq qpos (1- qpos))) - (cons qpos #'minibuffer--double-dollars)))) + (cons qpos #'minibuffer-maybe-quote-filename)))) (defalias 'completion--file-name-table (completion-table-with-quoting #'completion-file-name-table @@ -2596,10 +2609,10 @@ read-file-name-default (let ((insdef (cond ((and insert-default-directory (stringp dir)) (if initial - (cons (minibuffer--double-dollars (concat dir initial)) - (length (minibuffer--double-dollars dir))) - (minibuffer--double-dollars dir))) - (initial (cons (minibuffer--double-dollars initial) 0))))) + (cons (minibuffer-maybe-quote-filename (concat dir initial)) + (length (minibuffer-maybe-quote-filename dir))) + (minibuffer-maybe-quote-filename dir))) + (initial (cons (minibuffer-maybe-quote-filename initial) 0))))) (let ((completion-ignore-case read-file-name-completion-ignore-case) (minibuffer-completing-file-name t) @@ -2693,7 +2706,7 @@ read-file-name-default ;; with what we will actually return. As an exception, ;; if that's the same as the second item in ;; file-name-history, it's really a repeat (Bug#4657). - (let ((val1 (minibuffer--double-dollars val))) + (let ((val1 (minibuffer-maybe-quote-filename val))) (if history-delete-duplicates (setcdr file-name-history (delete val1 (cdr file-name-history)))) @@ -2703,7 +2716,7 @@ read-file-name-default (if add-to-history ;; Add the value to the history--but not if it matches ;; the last value already there. - (let ((val1 (minibuffer--double-dollars val))) + (let ((val1 (minibuffer-maybe-quote-filename val))) (unless (and (consp file-name-history) (equal (car file-name-history) val1)) (setq file-name-history diff --git a/test/lisp/files-tests.el b/test/lisp/files-tests.el index 80d5e5b..f4ccd5c 100644 --- a/test/lisp/files-tests.el +++ b/test/lisp/files-tests.el @@ -220,5 +220,28 @@ files-test-bug-18141-file (should-not yes-or-no-p-prompts) (should (equal kill-emacs-args '(nil))))) +(ert-deftest files-test-read-file-in-~ () + "Test file prompting in directory named '~'. +If we are in a directory named '~', the default value should not +be $HOME." + (cl-letf (((symbol-function 'completing-read) + (lambda (_prompt _coll &optional _pred _req init _hist def _) + (or def init))) + (dir (make-temp-file "read-file-name-test" t))) + (unwind-protect + (let ((subdir (expand-file-name "./~/"))) + (make-directory subdir t) + (with-temp-buffer + (setq default-directory subdir) + (should-not (equal + (expand-file-name (read-file-name "File: ")) + (expand-file-name "~/"))) + ;; Don't overquote either! + (setq default-directory (concat "/:" subdir)) + (should-not (equal + (expand-file-name (read-file-name "File: ")) + (concat "/:/:" subdir))))) + (delete-directory dir 'recursive)))) + (provide 'files-tests) ;;; files-tests.el ends here -- 2.9.3 --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Sat Oct 29 12:22:28 2016 Received: (at 16984) by debbugs.gnu.org; 29 Oct 2016 16:22:28 +0000 Received: from localhost ([127.0.0.1]:36759 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1c0WOq-0003h4-AY for submit@debbugs.gnu.org; Sat, 29 Oct 2016 12:22:28 -0400 Received: from mout.gmx.net ([212.227.17.20]:56969) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1c0WOo-0003gs-TY for 16984@debbugs.gnu.org; Sat, 29 Oct 2016 12:22:27 -0400 Received: from detlef.gmx.de ([87.146.50.156]) by mail.gmx.com (mrgmx101) with ESMTPSA (Nemesis) id 0LkCU2-1ccKBN2V8k-00cBaO; Sat, 29 Oct 2016 18:22:03 +0200 From: Michael Albinus To: npostavs@users.sourceforge.net Subject: Re: bug#16984: dired-do-rename susceptible to .../~/... hijack References: <87eh2aq60w.fsf@jidanni.org> <87pomrst3z.fsf@users.sourceforge.net> <837f8zpnih.fsf@gnu.org> <87pomjrita.fsf@users.sourceforge.net> <83pomjr63z.fsf@gnu.org> <87eg2zb860.fsf@gmx.de> <87h97vqhf3.fsf@users.sourceforge.net> Date: Sat, 29 Oct 2016 18:22:01 +0200 In-Reply-To: <87h97vqhf3.fsf@users.sourceforge.net> (npostavs's message of "Sat, 29 Oct 2016 11:54:56 -0400") Message-ID: <874m3vazx2.fsf@gmx.de> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:ZdP1kTFnZKl6IVeiubmuprKVFZNAKnWbJVCM+jWwhgOEvUF0Pmr WrOEw5rWy7lczX92Q99smgCWFXyB1VQNePAk5qtTWXsCHjFbmAqPvgz6++aqocsZExScAmy ybM4X0AIysFVbYPxcG7AD37D4j5ct/0EWTPSkQXMiIdHF2wbNI2TWtDTE9BxhEbV/wuVwN4 so6tabKfNBCK0Sac4w52Q== X-UI-Out-Filterresults: notjunk:1;V01:K0:Eja3Xbmvj3E=:DE1YEcGJ0XBWj/ScXpgOLJ mb/DviNYgKyjohRbCNbEtm/00/IKcBnfLp180ondpYKZsD2gjJrnpgswvMG9ADSML0hx3B2ba i9aeTEvGs6PtYfh51WZ/Nd8EEPYt/rwyG3rcMZR2MsCiRA0ttldKBgL3q0sf1E7q6YHQ/8o3Z 86MN0jMDlfL39J8nfzoTEajaheK4u67IYgFqofGaXPXLy+BxKxCWxLX0I0ejvL3Odj3FomIZR 9+SSgrCpmNSix2dLUkUexGCjniPtxiGJu76h6UbSkQmQAsO2Y2aCprViSD6CtVYeRqOpcIxNS 8sC+/uj0l29tb1GdzbJPeJiepIVhvGzHNjUW5X24qs9Z03DETY28x/dt/PNougmjQYofsaStD JoOyLUlAJi7eMgR6KpDmPQjRTHn3XmK7JjPd5OKIu/TxZD/4+UUr9Hftmr5yJ8/XiIYMnNSvS 0lgBaDcKppP4MBuXVYX4uc4y2Rp/L50fAQxIP3pVqUy6WcMbqJtFY/ur8lXdLjy0ibO2M5u5i Ia59omUsHKzojbV5Ghi4CrUg6LNXXauQ0J9GzqwCDLGXq2maRh37QXZtrwH0+QtHbvON2AGZ6 ti8cxPjUSNe/pL1MdwyTzlyqkMUJSBoV5WU1FAGTN+yuKNsDuRmj+FscYbfvUc5JAilxpSNVI hIxIInFG86xSe28hTbkXpuoB4/Ipi06UBHfcPCquONPwi5r+1JEkmwwCjD6m4Fx3IENmlZQXn 8G4dreL4sLLZmSwRbNwbALOMx9uxB8nUcE5nBkhVGiAASc3DH9Wz72obhBaWRIeC/j6R/EgUe 2gx8YLi X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 16984 Cc: Eli Zaretskii , 16984@debbugs.gnu.org, jidanni@jidanni.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) npostavs@users.sourceforge.net writes: >> Prefixing with "/:" would also deactivate all file name handlers. The >> file name "/ssh:user@host:/path/~/file" would be handled literally, >> which is wrong. > > Ah, good point. How about checking (find-file-name-handler filename > 'substitute-in-file-name): > > + (not (let ((handler (find-file-name-handler > + filename 'substitute-in-file-name))) > + (and handler > + (funcall handler 'substitute-in-file-name filename))))) I would rather use (not (file-remote-p file-name)) This fixes the problem for local file names, but not for remote ones. "/ssh:user@host:/path/~/file" would still be expanded to something like "/ssh:user@host:/home/user/file". Well, better than nothing. What do people think to use the "/:" prefix also for the local part of remote file names? Then one could use "/ssh:user@host:/:/path/~/file", making substitute-in-file-name a noop. Best regards, Michael. From debbugs-submit-bounces@debbugs.gnu.org Mon Oct 31 20:41:49 2016 Received: (at 16984) by debbugs.gnu.org; 1 Nov 2016 00:41:49 +0000 Received: from localhost ([127.0.0.1]:38417 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1c1N9B-0008GE-3E for submit@debbugs.gnu.org; Mon, 31 Oct 2016 20:41:49 -0400 Received: from mail-yw0-f181.google.com ([209.85.161.181]:36005) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1c1N98-0008Fy-Hs for 16984@debbugs.gnu.org; Mon, 31 Oct 2016 20:41:47 -0400 Received: by mail-yw0-f181.google.com with SMTP id l124so21596028ywb.3 for <16984@debbugs.gnu.org>; Mon, 31 Oct 2016 17:41:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=afKRmubCy4HUOuV72SuCSdcOxy48adntfGbTVsGqltU=; b=txfuZuOUSWRQin4sogzi5AbRIs01eb2S6crr1r9/kBqvoK6dEDXlXKEJ+U716llUJ+ hKfXGkSvOvD6OwEu+N3e2yIGWP8nUvsWdeKDGNvWbCwznp1x3SKZcAD4ge9KABYkS3vX dluYKt6gJfucYOwcDO7uMSImunjHbgt/bUHlqqbHHSXijTBonXL8ZFl+C31Rxirn0P+Q XQuVX2jeed9HbzK0EJSuwihnugqy/HWr1ElgMG9H1TnWBqKuwLwA2J5D//JZQJlVKXf9 ZzN3BNhdfyOipGIzOysHvXwxq1dy0CM1KvAKwdNbSlvrMOGjwI6o+eNxtB6GqiorL/Pw 2r9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:from:to:cc:subject:references:date :in-reply-to:message-id:user-agent:mime-version; bh=afKRmubCy4HUOuV72SuCSdcOxy48adntfGbTVsGqltU=; b=PfblBpnJjkDaOQ+dDxiaD3aDefWiUvDbZ0SGhTbfcoAMsUeCMO1WQ+4CfMRA5y/pZx Dx8uDKCf6+diQrgP5ONn6zfPcuoqtKgUiFxvEtbqLUp4xbKMuBEiJJDAzEFrnW0Dn0UZ LmnoofApfSrdoCU/+JdWaLPILshXSislEysuVtf//JsI8p/+q4SX8truScNNi8Kx9qth Nl2yv8+LOodSLrfct87wxAru2p8MFCMvZhR6De1Lp1AwG6rDiIDDRgSxm/bbddaB4Y53 tOIZlQwc9ntAxT2BXTWrKrombmGNkKjAUBGgoddzImMdZ+yYZbHRwyKpuLNEURXfTR4O 7F0A== X-Gm-Message-State: ABUngvc64+Ctgq1D12zUWMmN6zvv/r6WYtqr+/p2gA5e6CBeNmNQcKB7ByPO4MGKs9wctA== X-Received: by 10.36.99.67 with SMTP id j64mr9427445itc.119.1477960900907; Mon, 31 Oct 2016 17:41:40 -0700 (PDT) Received: from zony ([45.2.7.130]) by smtp.googlemail.com with ESMTPSA id y189sm11408666ioy.28.2016.10.31.17.41.39 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 31 Oct 2016 17:41:40 -0700 (PDT) From: npostavs@users.sourceforge.net To: Michael Albinus Subject: Re: bug#16984: dired-do-rename susceptible to .../~/... hijack References: <87eh2aq60w.fsf@jidanni.org> <87pomrst3z.fsf@users.sourceforge.net> <837f8zpnih.fsf@gnu.org> <87pomjrita.fsf@users.sourceforge.net> <83pomjr63z.fsf@gnu.org> <87eg2zb860.fsf@gmx.de> <87h97vqhf3.fsf@users.sourceforge.net> <874m3vazx2.fsf@gmx.de> Date: Mon, 31 Oct 2016 20:42:22 -0400 In-Reply-To: <874m3vazx2.fsf@gmx.de> (Michael Albinus's message of "Sat, 29 Oct 2016 18:22:01 +0200") Message-ID: <87wpgoowsx.fsf@users.sourceforge.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: 0.5 (/) X-Debbugs-Envelope-To: 16984 Cc: Eli Zaretskii , 16984@debbugs.gnu.org, jidanni@jidanni.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.5 (/) --=-=-= Content-Type: text/plain Michael Albinus writes: >> >> + (not (let ((handler (find-file-name-handler >> + filename 'substitute-in-file-name))) >> + (and handler >> + (funcall handler 'substitute-in-file-name filename))))) > > I would rather use (not (file-remote-p file-name)) Okay. --=-=-= Content-Type: text/plain Content-Disposition: attachment; filename=v3-0001-Quote-filenames-containing-in-prompts.patch Content-Description: patch v3 >From 93854ddb9a15d4809f1dcf80b11784ddd4a31ed4 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Thu, 27 Oct 2016 22:17:11 -0400 Subject: [PATCH v3] Quote filenames containing '~' in prompts When in a directory named '~', the default value given by `read-file-name' should be quoted by prepending '/:', in order to prevent it from being interpreted as referring to the $HOME directory (Bug #16984). * lisp/minibuffer.el (minibuffer-maybe-quote-filename): New function. (completion--sifn-requote, read-file-name-default): Use it instead of `minibuffer--double-dollars'. * test/lisp/files-tests.el (files-test-read-file-in-~): Test it. --- lisp/minibuffer.el | 24 +++++++++++++++++------- test/lisp/files-tests.el | 23 +++++++++++++++++++++++ 2 files changed, 40 insertions(+), 7 deletions(-) diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el index 175189c..5cbe243 100644 --- a/lisp/minibuffer.el +++ b/lisp/minibuffer.el @@ -2251,6 +2251,16 @@ minibuffer--double-dollars (replace-regexp-in-string "\\$" (lambda (dollar) (concat dollar dollar)) str)) +(defun minibuffer-maybe-quote-filename (filename) + "Protect FILENAME from `substitute-in-file-name', as needed. +Useful to give the user default values that won't be substituted." + (if (and (not (string-prefix-p "/:" filename)) + (file-name-absolute-p filename) + (string-match-p "/~" filename) + (not (file-remote-p filename))) + (concat "/:" filename) + (minibuffer--double-dollars filename))) + (defun completion--make-envvar-table () (mapcar (lambda (enventry) (substring enventry 0 (string-match-p "=" enventry))) @@ -2420,7 +2430,7 @@ completion--sifn-requote (substitute-in-file-name (substring qstr 0 (1- qpos))))) (setq qpos (1- qpos))) - (cons qpos #'minibuffer--double-dollars)))) + (cons qpos #'minibuffer-maybe-quote-filename)))) (defalias 'completion--file-name-table (completion-table-with-quoting #'completion-file-name-table @@ -2596,10 +2606,10 @@ read-file-name-default (let ((insdef (cond ((and insert-default-directory (stringp dir)) (if initial - (cons (minibuffer--double-dollars (concat dir initial)) - (length (minibuffer--double-dollars dir))) - (minibuffer--double-dollars dir))) - (initial (cons (minibuffer--double-dollars initial) 0))))) + (cons (minibuffer-maybe-quote-filename (concat dir initial)) + (length (minibuffer-maybe-quote-filename dir))) + (minibuffer-maybe-quote-filename dir))) + (initial (cons (minibuffer-maybe-quote-filename initial) 0))))) (let ((completion-ignore-case read-file-name-completion-ignore-case) (minibuffer-completing-file-name t) @@ -2693,7 +2703,7 @@ read-file-name-default ;; with what we will actually return. As an exception, ;; if that's the same as the second item in ;; file-name-history, it's really a repeat (Bug#4657). - (let ((val1 (minibuffer--double-dollars val))) + (let ((val1 (minibuffer-maybe-quote-filename val))) (if history-delete-duplicates (setcdr file-name-history (delete val1 (cdr file-name-history)))) @@ -2703,7 +2713,7 @@ read-file-name-default (if add-to-history ;; Add the value to the history--but not if it matches ;; the last value already there. - (let ((val1 (minibuffer--double-dollars val))) + (let ((val1 (minibuffer-maybe-quote-filename val))) (unless (and (consp file-name-history) (equal (car file-name-history) val1)) (setq file-name-history diff --git a/test/lisp/files-tests.el b/test/lisp/files-tests.el index 80d5e5b..f4ccd5c 100644 --- a/test/lisp/files-tests.el +++ b/test/lisp/files-tests.el @@ -220,5 +220,28 @@ files-test-bug-18141-file (should-not yes-or-no-p-prompts) (should (equal kill-emacs-args '(nil))))) +(ert-deftest files-test-read-file-in-~ () + "Test file prompting in directory named '~'. +If we are in a directory named '~', the default value should not +be $HOME." + (cl-letf (((symbol-function 'completing-read) + (lambda (_prompt _coll &optional _pred _req init _hist def _) + (or def init))) + (dir (make-temp-file "read-file-name-test" t))) + (unwind-protect + (let ((subdir (expand-file-name "./~/"))) + (make-directory subdir t) + (with-temp-buffer + (setq default-directory subdir) + (should-not (equal + (expand-file-name (read-file-name "File: ")) + (expand-file-name "~/"))) + ;; Don't overquote either! + (setq default-directory (concat "/:" subdir)) + (should-not (equal + (expand-file-name (read-file-name "File: ")) + (concat "/:/:" subdir))))) + (delete-directory dir 'recursive)))) + (provide 'files-tests) ;;; files-tests.el ends here -- 2.9.3 --=-=-= Content-Type: text/plain > > This fixes the problem for local file names, but not for remote > ones. "/ssh:user@host:/path/~/file" would still be expanded to something > like "/ssh:user@host:/home/user/file". Well, better than nothing. > > What do people think to use the "/:" prefix also for the local part of > remote file names? Then one could use "/ssh:user@host:/:/path/~/file", > making substitute-in-file-name a noop. Makes sense to me. --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Sun Dec 04 14:07:10 2016 Received: (at 16984) by debbugs.gnu.org; 4 Dec 2016 19:07:10 +0000 Received: from localhost ([127.0.0.1]:56180 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cDc7y-0006aW-LF for submit@debbugs.gnu.org; Sun, 04 Dec 2016 14:07:10 -0500 Received: from mout.gmx.net ([212.227.17.22]:63918) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cDc7x-0006aI-83 for 16984@debbugs.gnu.org; Sun, 04 Dec 2016 14:07:09 -0500 Received: from detlef.gmx.de ([93.209.64.147]) by mail.gmx.com (mrgmx102 [212.227.17.168]) with ESMTPSA (Nemesis) id 0MaE4a-1by8ZZ2z1c-00Jtdw; Sun, 04 Dec 2016 20:06:45 +0100 From: Michael Albinus To: npostavs@users.sourceforge.net Subject: Re: bug#16984: dired-do-rename susceptible to .../~/... hijack References: <87eh2aq60w.fsf@jidanni.org> <87pomrst3z.fsf@users.sourceforge.net> <837f8zpnih.fsf@gnu.org> <87pomjrita.fsf@users.sourceforge.net> <83pomjr63z.fsf@gnu.org> <87eg2zb860.fsf@gmx.de> <87h97vqhf3.fsf@users.sourceforge.net> <874m3vazx2.fsf@gmx.de> <87wpgoowsx.fsf@users.sourceforge.net> Date: Sun, 04 Dec 2016 20:06:43 +0100 In-Reply-To: <87wpgoowsx.fsf@users.sourceforge.net> (npostavs's message of "Mon, 31 Oct 2016 20:42:22 -0400") Message-ID: <874m2jpl8c.fsf@gmx.de> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:xXbtztIpm+x+HfpD+dWHtzUnKWCL+9H7OO9NbT4v73NxVbrn2DD Vy3BOQRw9S6ep718FY5B3ikdIC1+6L4T9pF2Q4lo3YhfrPNzox9e3IDlFWB97Z0Ou1Jmkut l3VzcBuJZtAh0kME3bQT6XRRhbTkXxjCmHYLsWr9trATQwolkXwU8etuXkMKlasVyPPZiy8 HfLWtkdhNE6JRjq2IV+GA== X-UI-Out-Filterresults: notjunk:1;V01:K0:XLg8JQ+kLW0=:Nay/gapw8AZSj9LtDXqMUF 21fnnM0cKzBtIzs6R/1YXSdvcSHpAWBIaCfScGoIZGGGzo2e/Ybw/cL/K72Gfq+YoqqEacB35 Sc4oTsegOoHtaRJkQER8cxys2EFZ56dHkhZS166hu4YObPl3nxDta9xYruOEZ1L52u38NLYJY W7qC/J+64GsYlNBjbVMUGSVaqIQhyDwFp63pGku9RLHwwRM0jShIfXiUlYSqAkeI7CIG2l+Pw 03dnU5PBTKlrH0UK4rZ2IVKR83Aof0Dgbw0clfr9it5mFn+mbSu99gNy1Rlr/jS4gdVJONvyN 4Uvrji6YRp9dIjSWzfxwtJPJWic5mlH7cnR3r7QAjzUUamKCS+D8dPe38SSKvi4LYL7/Q+VWQ h+8xvDdPquZGRjUjgtXrzgm+BE6rQwPPbCGMDqfTKxlKgU9TCT8aGGP7I7lUDCDD6Svf/3Ib6 pA49QEjazVeSpgdNRs4tEaeAHqE+Cu8w8CVImftln3NjWeBw0TGbsouFcF1yNN899E4TwTQO2 YgNBlJPCtVd9a5OYIuJXjG4oSBbc/jmH73mnklR8r7r8mu5IBSZO7Ogqg6HEz/aPLHQ0mC5HR AeqcMjTf9bZASPX3x2FxrckHZQxXiDnt5Xcy9TJujvzm8vHQJ9U7k7h02YkUYmvlI4x7vdoC6 Rn2HGeJcpbQJDfuMvND8ITGpDF2pelXfTR9hionuAUrU3tEYPA8m8Yp8IiPrK2Y6yTCwIra5k qorjluFyTuL1/x6pWLpkWDnDQ5RRAKHAg51Jz/IJyvL6m54+QU8q7CJ4CDyQSCSjkjUyFF5dS nbp1lb9 X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 16984 Cc: Eli Zaretskii , 16984@debbugs.gnu.org, jidanni@jidanni.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) npostavs@users.sourceforge.net writes: Hi Noam, >> This fixes the problem for local file names, but not for remote >> ones. "/ssh:user@host:/path/~/file" would still be expanded to something >> like "/ssh:user@host:/home/user/file". Well, better than nothing. >> >> What do people think to use the "/:" prefix also for the local part of >> remote file names? Then one could use "/ssh:user@host:/:/path/~/file", >> making substitute-in-file-name a noop. > > Makes sense to me. I've added a patch to master which allows quoting the local part of the file name. Maybe you could rewrite your patch, using this feature. There are also three new functions tramp-quoted-name-p, tramp-quote-name and tramp-unquote-name. Maybe it is worth to expose them more generally, as file-name-quoted-p, file-name-quote and file-name-unquote. Best regards, Michael. From debbugs-submit-bounces@debbugs.gnu.org Wed Dec 07 20:46:11 2016 Received: (at 16984) by debbugs.gnu.org; 8 Dec 2016 01:46:12 +0000 Received: from localhost ([127.0.0.1]:60526 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cEnml-0002eb-Hv for submit@debbugs.gnu.org; Wed, 07 Dec 2016 20:46:11 -0500 Received: from mail-io0-f196.google.com ([209.85.223.196]:34276) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cEnmj-0002YW-HP for 16984@debbugs.gnu.org; Wed, 07 Dec 2016 20:46:09 -0500 Received: by mail-io0-f196.google.com with SMTP id r94so413613ioe.1 for <16984@debbugs.gnu.org>; Wed, 07 Dec 2016 17:46:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=hJuppN9iLAupi+LKLcc4b9USxlWzcYQNMtjOrxhFOG8=; b=uMpdFFHjrSaSR9c18jSKNyy1WX8SySemM2MWxXra95Iqyyo6TumcpXVg/siC3WQkMr cbD6KBALTVAE2Z5BlX8+VjnOubwXY8BH0aBYB1hZpskw01gqKrHy9b9caXvDhrF1pCsK Sq+itzUcP6uAcTkZFi5u7GG9gAnArDGkCXNbFspOceE3ocSykBT377/U2PFbjbv8zOoH IzhYxLfT4m2FjtHnn5avC8FxDb1ua1D9pSqeN6meDbRTqaGbFMqhjmmw2Sye8IpAlWyI y4YcJ6XYPHnWkYyVPdbKcUsOd3ujPBtR2wjW0ariEYonb2aHSUoZwguXqzJQVliKtbi1 khuQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:from:to:cc:subject:references:date :in-reply-to:message-id:user-agent:mime-version; bh=hJuppN9iLAupi+LKLcc4b9USxlWzcYQNMtjOrxhFOG8=; b=XIS/k50mB15kV+AMMN1u9oKeaZiMKqzKPpBYlWIxaRvbraTX7jyMDdgH+st0ZNvfUf aSEc00z2fsl/OjeLB8BLbVFVkSbvxk6A3VieLiuzTF2BHNQfU59Cjt1e7R58hi6fOh/W I8g2Rf98TmFUBBhXVmXnE1SP7KtWgxGUHWRcqSdhd9ilji/QJX37B/mbHilCecR8a/xg zW4I/wFUdF5R4YhOwr9GnDj7CGWOFpKDWfFfnyeenLF60jt03qQjxnw0mee5ZiYnbzSj 4NRFwxNAmmOw99WMAyYf7I9u0pYraplWXANB5O86TDKdBWVm82RQ6l1t8ugYFIqdJ7br VQkw== X-Gm-Message-State: AKaTC00+/90z7tFMMZs55aMuMWqWjl3FEW3t8y5hBmSjb8fDqZy/bMsaUBfphQRhZ67Dpw== X-Received: by 10.36.50.214 with SMTP id j205mr4878538ita.33.1481161563843; Wed, 07 Dec 2016 17:46:03 -0800 (PST) Received: from zony ([45.2.7.65]) by smtp.googlemail.com with ESMTPSA id n206sm296358itg.1.2016.12.07.17.46.02 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 07 Dec 2016 17:46:02 -0800 (PST) From: npostavs@users.sourceforge.net To: Michael Albinus Subject: Re: bug#16984: dired-do-rename susceptible to .../~/... hijack References: <87eh2aq60w.fsf@jidanni.org> <87pomrst3z.fsf@users.sourceforge.net> <837f8zpnih.fsf@gnu.org> <87pomjrita.fsf@users.sourceforge.net> <83pomjr63z.fsf@gnu.org> <87eg2zb860.fsf@gmx.de> <87h97vqhf3.fsf@users.sourceforge.net> <874m3vazx2.fsf@gmx.de> <87wpgoowsx.fsf@users.sourceforge.net> <874m2jpl8c.fsf@gmx.de> Date: Wed, 07 Dec 2016 20:47:03 -0500 In-Reply-To: <874m2jpl8c.fsf@gmx.de> (Michael Albinus's message of "Sun, 04 Dec 2016 20:06:43 +0100") Message-ID: <87a8c7fazs.fsf@users.sourceforge.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: 0.5 (/) X-Debbugs-Envelope-To: 16984 Cc: Eli Zaretskii , 16984@debbugs.gnu.org, jidanni@jidanni.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.5 (/) --=-=-= Content-Type: text/plain Michael Albinus writes: > npostavs@users.sourceforge.net writes: >>> >>> What do people think to use the "/:" prefix also for the local part of >>> remote file names? Then one could use "/ssh:user@host:/:/path/~/file", >>> making substitute-in-file-name a noop. >> >> Makes sense to me. > > I've added a patch to master which allows quoting the local part of the > file name. Maybe you could rewrite your patch, using this feature. > Something like this? --=-=-= Content-Type: text/plain Content-Disposition: attachment; filename=v4-0001-Quote-filenames-containing-in-prompts.patch Content-Description: patch >From f3c88e481346b40a9afaa6359eef2f2449908284 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Thu, 27 Oct 2016 22:17:11 -0400 Subject: [PATCH v4] Quote filenames containing '~' in prompts When in a directory named '~', the default value given by `read-file-name' should be quoted by prepending '/:', in order to prevent it from being interpreted as referring to the $HOME directory (Bug #16984). * lisp/minibuffer.el (minibuffer-maybe-quote-filename): New function. (completion--sifn-requote, read-file-name-default): Use it instead of `minibuffer--double-dollars'. * test/lisp/files-tests.el (files-test-read-file-in-~): Test it. --- lisp/minibuffer.el | 28 ++++++++++++++++++++-------- test/lisp/files-tests.el | 23 +++++++++++++++++++++++ 2 files changed, 43 insertions(+), 8 deletions(-) diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el index 175189c..8cc0687 100644 --- a/lisp/minibuffer.el +++ b/lisp/minibuffer.el @@ -87,7 +87,8 @@ ;;; Code: -(eval-when-compile (require 'cl-lib)) +(eval-when-compile (require 'cl-lib) + (require 'tramp)) ;; For `tramp-quote-name'. ;;; Completion table manipulation @@ -2251,6 +2252,17 @@ minibuffer--double-dollars (replace-regexp-in-string "\\$" (lambda (dollar) (concat dollar dollar)) str)) +(defun minibuffer-maybe-quote-filename (filename) + "Protect FILENAME from `substitute-in-file-name', as needed. +Useful to give the user default values that won't be substituted." + (if (and (not (string-prefix-p "/:" filename)) + (file-name-absolute-p filename) + (string-match-p "/~" filename)) + (if (file-remote-p filename) + (tramp-quote-name filename) + (concat "/:" filename)) + (minibuffer--double-dollars filename))) + (defun completion--make-envvar-table () (mapcar (lambda (enventry) (substring enventry 0 (string-match-p "=" enventry))) @@ -2420,7 +2432,7 @@ completion--sifn-requote (substitute-in-file-name (substring qstr 0 (1- qpos))))) (setq qpos (1- qpos))) - (cons qpos #'minibuffer--double-dollars)))) + (cons qpos #'minibuffer-maybe-quote-filename)))) (defalias 'completion--file-name-table (completion-table-with-quoting #'completion-file-name-table @@ -2596,10 +2608,10 @@ read-file-name-default (let ((insdef (cond ((and insert-default-directory (stringp dir)) (if initial - (cons (minibuffer--double-dollars (concat dir initial)) - (length (minibuffer--double-dollars dir))) - (minibuffer--double-dollars dir))) - (initial (cons (minibuffer--double-dollars initial) 0))))) + (cons (minibuffer-maybe-quote-filename (concat dir initial)) + (length (minibuffer-maybe-quote-filename dir))) + (minibuffer-maybe-quote-filename dir))) + (initial (cons (minibuffer-maybe-quote-filename initial) 0))))) (let ((completion-ignore-case read-file-name-completion-ignore-case) (minibuffer-completing-file-name t) @@ -2693,7 +2705,7 @@ read-file-name-default ;; with what we will actually return. As an exception, ;; if that's the same as the second item in ;; file-name-history, it's really a repeat (Bug#4657). - (let ((val1 (minibuffer--double-dollars val))) + (let ((val1 (minibuffer-maybe-quote-filename val))) (if history-delete-duplicates (setcdr file-name-history (delete val1 (cdr file-name-history)))) @@ -2703,7 +2715,7 @@ read-file-name-default (if add-to-history ;; Add the value to the history--but not if it matches ;; the last value already there. - (let ((val1 (minibuffer--double-dollars val))) + (let ((val1 (minibuffer-maybe-quote-filename val))) (unless (and (consp file-name-history) (equal (car file-name-history) val1)) (setq file-name-history diff --git a/test/lisp/files-tests.el b/test/lisp/files-tests.el index 80d5e5b..f4ccd5c 100644 --- a/test/lisp/files-tests.el +++ b/test/lisp/files-tests.el @@ -220,5 +220,28 @@ files-test-bug-18141-file (should-not yes-or-no-p-prompts) (should (equal kill-emacs-args '(nil))))) +(ert-deftest files-test-read-file-in-~ () + "Test file prompting in directory named '~'. +If we are in a directory named '~', the default value should not +be $HOME." + (cl-letf (((symbol-function 'completing-read) + (lambda (_prompt _coll &optional _pred _req init _hist def _) + (or def init))) + (dir (make-temp-file "read-file-name-test" t))) + (unwind-protect + (let ((subdir (expand-file-name "./~/"))) + (make-directory subdir t) + (with-temp-buffer + (setq default-directory subdir) + (should-not (equal + (expand-file-name (read-file-name "File: ")) + (expand-file-name "~/"))) + ;; Don't overquote either! + (setq default-directory (concat "/:" subdir)) + (should-not (equal + (expand-file-name (read-file-name "File: ")) + (concat "/:/:" subdir))))) + (delete-directory dir 'recursive)))) + (provide 'files-tests) ;;; files-tests.el ends here -- 2.9.3 --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 08 03:23:27 2016 Received: (at 16984) by debbugs.gnu.org; 8 Dec 2016 08:23:28 +0000 Received: from localhost ([127.0.0.1]:60714 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cEtzD-0005tM-NA for submit@debbugs.gnu.org; Thu, 08 Dec 2016 03:23:27 -0500 Received: from mout.gmx.net ([212.227.15.18]:61158) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cEtzC-0005t8-2x for 16984@debbugs.gnu.org; Thu, 08 Dec 2016 03:23:26 -0500 Received: from detlef.gmx.de ([87.146.62.109]) by mail.gmx.com (mrgmx003 [212.227.17.190]) with ESMTPSA (Nemesis) id 0MGBB1-1cTV683DwF-00FA5W; Thu, 08 Dec 2016 09:23:03 +0100 From: Michael Albinus To: npostavs@users.sourceforge.net Subject: Re: bug#16984: dired-do-rename susceptible to .../~/... hijack References: <87eh2aq60w.fsf@jidanni.org> <87pomrst3z.fsf@users.sourceforge.net> <837f8zpnih.fsf@gnu.org> <87pomjrita.fsf@users.sourceforge.net> <83pomjr63z.fsf@gnu.org> <87eg2zb860.fsf@gmx.de> <87h97vqhf3.fsf@users.sourceforge.net> <874m3vazx2.fsf@gmx.de> <87wpgoowsx.fsf@users.sourceforge.net> <874m2jpl8c.fsf@gmx.de> <87a8c7fazs.fsf@users.sourceforge.net> Date: Thu, 08 Dec 2016 09:23:01 +0100 In-Reply-To: <87a8c7fazs.fsf@users.sourceforge.net> (npostavs's message of "Wed, 07 Dec 2016 20:47:03 -0500") Message-ID: <8760muu8wq.fsf@gmx.de> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:7zTDx2N4mLAnEcL5UFKLIdH4BSGd1ZqSJAuDIkBsEm8/F7nC5iZ McW7cgW0OT5H0Mo5Am9CHaehj2agqE2J04AUvm9fQj95A1tjDTwI4MRsu72UWWCR7h50e4s l0Z+pZrgx6BdbCdJoQ+mpTqJbSe52V8O41fx1t/M6Nvyu25gtOgq6ndrKHC8+F/fy8S5TqC StPj7/IOLzIRWdabiXaXw== X-UI-Out-Filterresults: notjunk:1;V01:K0:gHRGasrEsIs=:wNck+GzZrHBddKEbUJDD02 U52PlDh7mtxk2Q5Vd+kY1RkHV+vBkDV2ZaMQgfvXeclzUZRJEGSrUzYbMfFT6XtNZgYIzgGHm zmikpKiD+y8BCCblL3EhwnY/LOzBAGwTO3Eq5K4LTFTgd7NSevJ65/xr5/8T0IJLzvcz5fKCv nqmyPyXA47bTpTjNS8XnYZ9HLvckTmKiWHikwPxHjXfQnAcjhI288771QXCSrZ4zo69xF/U7O VoABJc2Bpfj93b2S6nh1DT32XQ1ePVRYixVZqr2VIU23cm3dtH93FlS0o5s0HnmiEfDYY1NMF EmySD8k+zlpJxrUPtp8Kww7B8WRAxEHMfObXhDbYebc5ij+709+9Ny6RclWQcYBjCHj+2I3Bv mD8Gf+ujMDhvA7RH44bFUdSufINLuhmhZGLs36nj7ZBFwg90sQjGWFD11uOnYdhife36RkqIN cqi13DGFsyjCbgQaidU7VjS7wV20kRYDPevLxIO63zfjE7B88mYzTxRzyEhKMCoXm6uzzsptW ep2n++OsBmFXSCPZTfGsBZUe//ixq9oyABraWKEtI3+D3ztdtugPnIB3ThpvTUOju0dnD6LGK lZyEQ8QxkQcQXG8oEsqMWQ0pwtGvElMmQlV3eCmsG8rRXNX1sCTBDX4KXzOqmgKQzXDeN3hxk qKxIoBGpwhzOB81WSwwPJ1hfMeLvZnbM3YSLnxpGl0AfTXLbOLomVOfSiMA474pPk9xRcnqez NtYbcG+UOZVeXOn8ieJNtfd/iOMb+jhFCuiMdepnoznAqo4alfv8K+tLCVE2S6IFnyI6TqzLq WOLxAFj X-Spam-Score: -0.2 (/) X-Debbugs-Envelope-To: 16984 Cc: Eli Zaretskii , 16984@debbugs.gnu.org, jidanni@jidanni.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.2 (/) npostavs@users.sourceforge.net writes: Hi Noam, >> I've added a patch to master which allows quoting the local part of the >> file name. Maybe you could rewrite your patch, using this feature. > > Something like this? > + (if (file-remote-p filename) > + (tramp-quote-name filename) > + (concat "/:" filename)) `tramp-quote-name' works for both local and remote file names, so you could remove the test `(file-remote-p filename)'. As said in the other mail, it shall be made available as `file-name-quote', therefore. Eli? Best regards, Michael. From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 08 09:38:44 2016 Received: (at 16984) by debbugs.gnu.org; 8 Dec 2016 14:38:44 +0000 Received: from localhost ([127.0.0.1]:60900 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cEzqN-0007wq-VW for submit@debbugs.gnu.org; Thu, 08 Dec 2016 09:38:44 -0500 Received: from mail-io0-f193.google.com ([209.85.223.193]:35348) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cEzqL-0007wc-K4 for 16984@debbugs.gnu.org; Thu, 08 Dec 2016 09:38:42 -0500 Received: by mail-io0-f193.google.com with SMTP id f73so413741ioe.2 for <16984@debbugs.gnu.org>; Thu, 08 Dec 2016 06:38:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=Ea1G+d3OM1ey34QR87OSBm8lnogzK6j+7k4H6w3MErM=; b=a4X6WMtiBLMhYSQuPszC9P9czNDdKQVaQ/tliQTJ5VGf4UlIh9hYJISyj95zXgt+Ss MDGKFfTcaEhCqYemMem2L8pYywalF21U8DMTjboNYm+/w6er3mCrMOxATpctyIREcYTQ tzEI0OAT03benBYwc1gOlka35BD+BxbnZOSGdp7ttForxbKwGuq1I2Zl0nR3840F+xRT O9WksR5fou4OrqaczZyyRBbEuk05ODYD9YXPPtbTep9ENWl6ZzP1CTpLDu+bPWWA20/J EL+Evj/YAi2m53nwTeyC+12oWe2v3XnjIzSLDxPEQsemMXeiiAZTT9Wm4jBUE+GItAhW PNdQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:from:to:cc:subject:references:date :in-reply-to:message-id:user-agent:mime-version; bh=Ea1G+d3OM1ey34QR87OSBm8lnogzK6j+7k4H6w3MErM=; b=MeMd++Fw9XGUu+Zca3yc9YJXpJzPWlXuC4UHQo8+ODu/hQe+n8+O1hIET0kTUTa31t ottl7S/YWyZxlgjFE4TZU4jiH/vL1ER59fllrJc81KExkXY3rrjnOZgI5Vghwc3aVe0u twlKAimZth3xgif8UZ3e28M9Dl3OnuHSI0r5scDh7rNRBnd4b79EJOxhAqjiI7zJ9ZLR R3RWx7dqyUfRIMn4nD3zOAw7DL7zDmD0Gvn2wFjx8CkPcf+R8hzDHbC469/yTT1McSgw 5fTJMGr/bdlYIBoVCa9D1vEJDkGFxRopQywFDiNXY0F5GdBB08O0yXi3tpD7P+QfggAd N00A== X-Gm-Message-State: AKaTC026ENIoA4F+thTq3g8Imn5WBV7fAhfc9pMmAAH9R3HvEFDvHRTFAGP/TDu2VgNY3A== X-Received: by 10.36.233.69 with SMTP id f66mr1891979ith.83.1481207915095; Thu, 08 Dec 2016 06:38:35 -0800 (PST) Received: from zony ([45.2.7.65]) by smtp.googlemail.com with ESMTPSA id n206sm1320266itg.1.2016.12.08.06.38.34 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 08 Dec 2016 06:38:34 -0800 (PST) From: npostavs@users.sourceforge.net To: Michael Albinus Subject: Re: bug#16984: dired-do-rename susceptible to .../~/... hijack References: <87eh2aq60w.fsf@jidanni.org> <87pomrst3z.fsf@users.sourceforge.net> <837f8zpnih.fsf@gnu.org> <87pomjrita.fsf@users.sourceforge.net> <83pomjr63z.fsf@gnu.org> <87eg2zb860.fsf@gmx.de> <87h97vqhf3.fsf@users.sourceforge.net> <874m3vazx2.fsf@gmx.de> <87wpgoowsx.fsf@users.sourceforge.net> <874m2jpl8c.fsf@gmx.de> <87a8c7fazs.fsf@users.sourceforge.net> <8760muu8wq.fsf@gmx.de> Date: Thu, 08 Dec 2016 09:39:35 -0500 In-Reply-To: <8760muu8wq.fsf@gmx.de> (Michael Albinus's message of "Thu, 08 Dec 2016 09:23:01 +0100") Message-ID: <874m2efpso.fsf@users.sourceforge.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.5 (/) X-Debbugs-Envelope-To: 16984 Cc: Eli Zaretskii , 16984@debbugs.gnu.org, jidanni@jidanni.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.5 (/) Michael Albinus writes: > npostavs@users.sourceforge.net writes: > > `tramp-quote-name' works for both local and remote file names, so you > could remove the test `(file-remote-p filename)'. Oh, I somehow had it in my mind that `concat' doesn't work with nil, I must have mixed it up with `insert'. Also, I guess most of the filename tests should actually be looking at only the localname, so it should go more like this: (defun minibuffer-maybe-quote-filename (filename) "Protect FILENAME from `substitute-in-file-name', as needed. Useful to give the user default values that won't be substituted." (let ((local (file-remote-p filename 'localname))) (if (and (not (string-prefix-p "/:" local)) (file-name-absolute-p filename) (string-match-p "/~" local)) (tramp-quote-name filename) (minibuffer--double-dollars filename)))) Regarding `tramp-quoted-name-p', you should use (string-match "\\`/:" ...) or (string-prefix-p "/:" ...), not (string-match "^/:" ...) as the latter could get confused by newlines in filenames (of the first two, I find the `string-prefix-p' version clearer). From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 08 09:59:10 2016 Received: (at 16984) by debbugs.gnu.org; 8 Dec 2016 14:59:11 +0000 Received: from localhost ([127.0.0.1]:34684 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cF0AA-0000Ry-Oa for submit@debbugs.gnu.org; Thu, 08 Dec 2016 09:59:10 -0500 Received: from mout.gmx.net ([212.227.17.22]:62491) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cF0A8-0000Rj-Ku for 16984@debbugs.gnu.org; Thu, 08 Dec 2016 09:59:09 -0500 Received: from detlef.gmx.de ([87.146.62.109]) by mail.gmx.com (mrgmx102 [212.227.17.168]) with ESMTPSA (Nemesis) id 0LobGI-1cr54O026U-00gV2u; Thu, 08 Dec 2016 15:58:46 +0100 From: Michael Albinus To: npostavs@users.sourceforge.net Subject: Re: bug#16984: dired-do-rename susceptible to .../~/... hijack References: <87eh2aq60w.fsf@jidanni.org> <87pomrst3z.fsf@users.sourceforge.net> <837f8zpnih.fsf@gnu.org> <87pomjrita.fsf@users.sourceforge.net> <83pomjr63z.fsf@gnu.org> <87eg2zb860.fsf@gmx.de> <87h97vqhf3.fsf@users.sourceforge.net> <874m3vazx2.fsf@gmx.de> <87wpgoowsx.fsf@users.sourceforge.net> <874m2jpl8c.fsf@gmx.de> <87a8c7fazs.fsf@users.sourceforge.net> <8760muu8wq.fsf@gmx.de> <874m2efpso.fsf@users.sourceforge.net> Date: Thu, 08 Dec 2016 15:58:43 +0100 In-Reply-To: <874m2efpso.fsf@users.sourceforge.net> (npostavs's message of "Thu, 08 Dec 2016 09:39:35 -0500") Message-ID: <87twaefows.fsf@gmx.de> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:WKZZLt2efAVc4yHD7swusbOEeY4KpbsBJ0Uzhyk90RLCxyEJO+u F6fMB5sd74mnJj+i+JD078gfwIpI6n5WFyNJTnvO3DiuJfJqcxCDsMbyuWJv6QRC/hAr425 gAOJm3WrwPb90bOZq2btyVTGzZUUSHENdPst83j5iKCPwpT2HL/Mh0JJqx74DmutHQ3ATlP PSLBlT3XaaDwYqG31jrpA== X-UI-Out-Filterresults: notjunk:1;V01:K0:31lVhBEGBVM=:41fjRwpJrOdT29LQhBi5pr RQPhXV0WCJY3u/G0BD3p06RSIfF1WpOUrRZQvfT9xC8NHc0MFP36KV1fcBFgvCwlfszCj8wu1 F3NPFIGj8sH/CO4ppNAtqUBM6UVNw8Njp0KTrfMRn8096folPsUkg+x+YwBvnI4fGsFHpFB66 HCouKF0wyBLR5hGhkIbWGpYuVynmZ4EfKaZatCbOlBFrq1kiHOFGhHkftDHHizueFTsSsnyrn aWIglbaQBZcwGkY/MtygeJAAEfhk3PcfUU/sOD+gF9CZHJ/MKkOPYp8EkGitOtpwaimRS3lJv G4o+7CCUDlhsLu/IBzxCDJ3ozeRVmfm5kF8fQRrDAeQSMyf7ErHLzCYDKdxXvxeNC0m4u/YEN wBCsQsJrwHcWxwE+5wAEMb5p8BMj423GeY4cvT+D/XZliz0ThyENxwyiaJqodzZ5uZJLIlaWS jGkYkKnf7bPOAF1EX/dp9Wh69rksNYDpkgg5sMRMDUAVFU3oSIdQoCrmDfkA+tD61OA61tEeH B86LIvBZ1e5yevpH3jzFLzxZHgJ8vOnIE8457W3bZ3THpwHxYRfC532J24rfZGyhWebLbOYCR VMhy2BYfTwbUgPCTIHJnu+Lu82Z8AnHjtKh+XHPLaFO5QMCv9RNJSdU8xGmhcPK6/82nkaTGm Foado4KPOXIPYAd2GvBqa4IJgAsewSkcZhk/RjWFt+DPJQyiBR6RHI/ivRKQyxZqgmgmGyRad ky7BTXgUvSUkRNOv57yMvIdxbANXvZJNsqMrTRznCyHtueLHQ9WlrxOIHg3+HiSk6u7pLPbkS srDOaZu X-Spam-Score: -0.2 (/) X-Debbugs-Envelope-To: 16984 Cc: Eli Zaretskii , 16984@debbugs.gnu.org, jidanni@jidanni.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.2 (/) npostavs@users.sourceforge.net writes: Hi Noam, > (let ((local (file-remote-p filename 'localname))) Well, this is (file-local-name filename) these days. > Regarding `tramp-quoted-name-p', you should use (string-match "\\`/:" > ...) or (string-prefix-p "/:" ...), not (string-match "^/:" ...) as the > latter could get confused by newlines in filenames (of the first two, I > find the `string-prefix-p' version clearer). In general you are right. But we don't support newlines in file names; at least Tramp doesn't, so it makes no difference using "^/:" or "\\`/:". `string-prefix-p' is the best choice indeed, and I thought about, but Tramp cannot apply it yet. It has been introduced in Emacs 24.1, and Tramp still supports Emacs 23. Well, NEWS.24 says that it exists already since Emacs 23.2, but there is still Emacs 23.1, which is supported by Tramp. Best regards, Michael. From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 08 10:58:47 2016 Received: (at 16984) by debbugs.gnu.org; 8 Dec 2016 15:58:47 +0000 Received: from localhost ([127.0.0.1]:34728 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cF15q-0003pX-Vt for submit@debbugs.gnu.org; Thu, 08 Dec 2016 10:58:47 -0500 Received: from eggs.gnu.org ([208.118.235.92]:38709) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cF15p-0003pK-E2 for 16984@debbugs.gnu.org; Thu, 08 Dec 2016 10:58:45 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cF15j-0001Qd-Ke for 16984@debbugs.gnu.org; Thu, 08 Dec 2016 10:58:40 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-4.9 required=5.0 tests=BAYES_00,RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:41907) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cF15b-0001NX-Ad; Thu, 08 Dec 2016 10:58:31 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:2371 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cF15a-0004P9-Ga; Thu, 08 Dec 2016 10:58:30 -0500 Date: Thu, 08 Dec 2016 17:58:56 +0200 Message-Id: <83bmwmif9b.fsf@gnu.org> From: Eli Zaretskii To: Michael Albinus In-reply-to: <8760muu8wq.fsf@gmx.de> (message from Michael Albinus on Thu, 08 Dec 2016 09:23:01 +0100) Subject: Re: bug#16984: dired-do-rename susceptible to .../~/... hijack References: <87eh2aq60w.fsf@jidanni.org> <87pomrst3z.fsf@users.sourceforge.net> <837f8zpnih.fsf@gnu.org> <87pomjrita.fsf@users.sourceforge.net> <83pomjr63z.fsf@gnu.org> <87eg2zb860.fsf@gmx.de> <87h97vqhf3.fsf@users.sourceforge.net> <874m3vazx2.fsf@gmx.de> <87wpgoowsx.fsf@users.sourceforge.net> <874m2jpl8c.fsf@gmx.de> <87a8c7fazs.fsf@users.sourceforge.net> <8760muu8wq.fsf@gmx.de> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -8.0 (--------) X-Debbugs-Envelope-To: 16984 Cc: jidanni@jidanni.org, 16984@debbugs.gnu.org, npostavs@users.sourceforge.net X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Eli Zaretskii Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -8.0 (--------) > From: Michael Albinus > Cc: 16984@debbugs.gnu.org, Eli Zaretskii , jidanni@jidanni.org > Date: Thu, 08 Dec 2016 09:23:01 +0100 > > As said in the other mail, it shall be made available as > `file-name-quote', therefore. Eli? Are you asking me about the function's name? file-name-quote is OK with me. From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 08 11:00:05 2016 Received: (at 16984) by debbugs.gnu.org; 8 Dec 2016 16:00:05 +0000 Received: from localhost ([127.0.0.1]:34732 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cF177-0003s9-9n for submit@debbugs.gnu.org; Thu, 08 Dec 2016 11:00:05 -0500 Received: from eggs.gnu.org ([208.118.235.92]:39084) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cF174-0003r8-3u for 16984@debbugs.gnu.org; Thu, 08 Dec 2016 11:00:02 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cF16y-0001tQ-6g for 16984@debbugs.gnu.org; Thu, 08 Dec 2016 10:59:57 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-4.9 required=5.0 tests=BAYES_00,RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:41933) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cF16s-0001rt-2R; Thu, 08 Dec 2016 10:59:50 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:2372 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cF16r-0006Yi-8X; Thu, 08 Dec 2016 10:59:49 -0500 Date: Thu, 08 Dec 2016 18:00:16 +0200 Message-Id: <83a8c6if73.fsf@gnu.org> From: Eli Zaretskii To: npostavs@users.sourceforge.net In-reply-to: <874m2efpso.fsf@users.sourceforge.net> (npostavs@users.sourceforge.net) Subject: Re: bug#16984: dired-do-rename susceptible to .../~/... hijack References: <87eh2aq60w.fsf@jidanni.org> <87pomrst3z.fsf@users.sourceforge.net> <837f8zpnih.fsf@gnu.org> <87pomjrita.fsf@users.sourceforge.net> <83pomjr63z.fsf@gnu.org> <87eg2zb860.fsf@gmx.de> <87h97vqhf3.fsf@users.sourceforge.net> <874m3vazx2.fsf@gmx.de> <87wpgoowsx.fsf@users.sourceforge.net> <874m2jpl8c.fsf@gmx.de> <87a8c7fazs.fsf@users.sourceforge.net> <8760muu8wq.fsf@gmx.de> <874m2efpso.fsf@users.sourceforge.net> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -8.0 (--------) X-Debbugs-Envelope-To: 16984 Cc: michael.albinus@gmx.de, 16984@debbugs.gnu.org, jidanni@jidanni.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Eli Zaretskii Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -8.0 (--------) > From: npostavs@users.sourceforge.net > Cc: 16984@debbugs.gnu.org, Eli Zaretskii , jidanni@jidanni.org > Date: Thu, 08 Dec 2016 09:39:35 -0500 > > (defun minibuffer-maybe-quote-filename (filename) > "Protect FILENAME from `substitute-in-file-name', as needed. > Useful to give the user default values that won't be substituted." > (let ((local (file-remote-p filename 'localname))) > (if (and (not (string-prefix-p "/:" local)) > (file-name-absolute-p filename) > (string-match-p "/~" local)) > (tramp-quote-name filename) > (minibuffer--double-dollars filename)))) Is the argument guaranteed to come from expand-file-name? If not, it should also accept file names matching "\~" on MS platforms. Thanks. From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 08 11:25:45 2016 Received: (at 16984) by debbugs.gnu.org; 8 Dec 2016 16:25:46 +0000 Received: from localhost ([127.0.0.1]:34741 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cF1Vx-0004Sa-Ne for submit@debbugs.gnu.org; Thu, 08 Dec 2016 11:25:45 -0500 Received: from mout.gmx.net ([212.227.15.15]:55539) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cF1Vv-0004SL-3M for 16984@debbugs.gnu.org; Thu, 08 Dec 2016 11:25:43 -0500 Received: from detlef.gmx.de ([87.146.62.109]) by mail.gmx.com (mrgmx002 [212.227.17.190]) with ESMTPSA (Nemesis) id 0LtaDM-1cgUXb0ioO-010x9R; Thu, 08 Dec 2016 17:25:19 +0100 From: Michael Albinus To: Eli Zaretskii Subject: Re: bug#16984: dired-do-rename susceptible to .../~/... hijack References: <87eh2aq60w.fsf@jidanni.org> <87pomrst3z.fsf@users.sourceforge.net> <837f8zpnih.fsf@gnu.org> <87pomjrita.fsf@users.sourceforge.net> <83pomjr63z.fsf@gnu.org> <87eg2zb860.fsf@gmx.de> <87h97vqhf3.fsf@users.sourceforge.net> <874m3vazx2.fsf@gmx.de> <87wpgoowsx.fsf@users.sourceforge.net> <874m2jpl8c.fsf@gmx.de> <87a8c7fazs.fsf@users.sourceforge.net> <8760muu8wq.fsf@gmx.de> <83bmwmif9b.fsf@gnu.org> Date: Thu, 08 Dec 2016 17:25:17 +0100 In-Reply-To: <83bmwmif9b.fsf@gnu.org> (Eli Zaretskii's message of "Thu, 08 Dec 2016 17:58:56 +0200") Message-ID: <87k2bawfpu.fsf@gmx.de> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:22T1FM+KFcRDiMXToGVdc1j9IHDVidfmZFx4woVkiQAniEHzneS FvYuCqklumCzg7NHA6TDZSB00s4+P82C7sEA0YZ5KTCLZnSmn8lXO+M4qGSq5ia8AcbbUk0 8l9BiOn0IqBPC8b7UCyYYFGVTlAQqfUiA/wt5ePTDO++2v+EE2X9sJgDlMcj8Wqn7wsab6I 4TDLVcG+oqL+SYHVCIlzQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:5ytVsTdpyro=:4Di+i5bojbu7Ke0jw3/rq5 yhcaZMs3llAqRYII+WNgNhtOrHNskUA4wHxCBulPsis1XbZPYDQxBHjKemLqSyYVrzQtH4BIF /Wppl8/ir8IJFnfqZYzoxES5VtHGz/dsSbAc7lXGq3S4p83pp7c19Oo2Pq+IATSTtGTX8wuHn 6VnHAw+3mjPFTHhrO/07snr4gOMfbriudu+ShGEbGv9NC5WyAxYm3VqqUoOlMIbwgIqL6uK46 s/ZGkSGnw7za9po0lWlpVeKavWPzWGX4683zzb5z//WNZ5o8+hofSCIhMS2W5+L2NS+AMAYQZ kCfNQEY/PhXlYH1M6krRxFuhD/b3ANfc9pFk+ReIYxnbEHkWbXFAoEUC+VIf5T0YFtaJNJ3wO 6c2ZHFv9vdBqziY1CEchyWchInSJE7R27WyvIG2qKz0Qfs4urhq7rybbPKBpOVrvPjvTTkv+B 2LOxf1CqedjRy6srOzHMzr6cCqn81q24KjCf6R8uVsGS1XhCNoop8lfP3GfUxrBUGGmM3SlBS MN/LKd2XN4jWV1ib2sGjwtuEA1bdY6LS+uhapghxWnXXAyNx6/RS6m/mJTuGdxcDnwASWRVve H7s6IOiV1ts1YYJbBWAfuHqeCGu8tt2h8KdpUzvC0UZjpBOka2BoxJ/jtKV65T66iy+MdfICl a4Yz/KHx8go4QRsgmKlurg6PRgvKf4+4SYyt/HsRDeggIfTTFMPg7i1xnhrOOgnjJmHVPKVsO Fz5HNX8VpkFXXy+Vd2Z0bM+gadqjiaLNZE12PUo+5SjrAiAh5gkFjOs6yL1zqgBL6uQOkLUGd H6k5ZIK X-Spam-Score: -0.2 (/) X-Debbugs-Envelope-To: 16984 Cc: jidanni@jidanni.org, 16984@debbugs.gnu.org, npostavs@users.sourceforge.net X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.2 (/) Eli Zaretskii writes: >> As said in the other mail, it shall be made available as >> `file-name-quote', therefore. Eli? > > Are you asking me about the function's name? file-name-quote is OK > with me. The question was rather whether this function (and file-name-unquote, file-name-quoted-p) shall be exposed in files.el. I understand your answer that you agree :-) Best regards, Michael. From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 08 12:03:58 2016 Received: (at 16984) by debbugs.gnu.org; 8 Dec 2016 17:03:58 +0000 Received: from localhost ([127.0.0.1]:34767 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cF26w-0005L8-3p for submit@debbugs.gnu.org; Thu, 08 Dec 2016 12:03:58 -0500 Received: from mout.gmx.net ([212.227.15.19]:59905) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cF26u-0005Kv-TE for 16984@debbugs.gnu.org; Thu, 08 Dec 2016 12:03:57 -0500 Received: from detlef.gmx.de ([87.146.62.109]) by mail.gmx.com (mrgmx001 [212.227.17.190]) with ESMTPSA (Nemesis) id 0Ld0fQ-1cwvYs0jOS-00iC0x; Thu, 08 Dec 2016 18:03:34 +0100 From: Michael Albinus To: npostavs@users.sourceforge.net Subject: Re: bug#16984: dired-do-rename susceptible to .../~/... hijack References: <87eh2aq60w.fsf@jidanni.org> <87pomrst3z.fsf@users.sourceforge.net> <837f8zpnih.fsf@gnu.org> <87pomjrita.fsf@users.sourceforge.net> <83pomjr63z.fsf@gnu.org> <87eg2zb860.fsf@gmx.de> <87h97vqhf3.fsf@users.sourceforge.net> <874m3vazx2.fsf@gmx.de> <87wpgoowsx.fsf@users.sourceforge.net> <874m2jpl8c.fsf@gmx.de> <87a8c7fazs.fsf@users.sourceforge.net> <8760muu8wq.fsf@gmx.de> <874m2efpso.fsf@users.sourceforge.net> <87twaefows.fsf@gmx.de> Date: Thu, 08 Dec 2016 18:03:32 +0100 In-Reply-To: <87twaefows.fsf@gmx.de> (Michael Albinus's message of "Thu, 08 Dec 2016 15:58:43 +0100") Message-ID: <87fulywdy3.fsf@gmx.de> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:iz0GbN0O/KC3Yvf7X13A/SI+mFWO7veYZXhf2vyPqptZfVmTTx5 yYB7nG9UW/JfsdtmJ45zWMTu/w+nZFYHvh2CZtOOXYtyQcy4RmEUevzFs8ApfZoGmsUYx9q I8ELcdWJ3q2F+orjYXEr60wJXlpNfsrME7JSJnPVRFb/d5hOy/bbiRpRdCW02/lcfYEARtj MhBKOtVCGSFt68MTCzkuA== X-UI-Out-Filterresults: notjunk:1;V01:K0:xrg4k6LGYkc=:Rgbla9Hl2BdTBc3nvsAGNE UPfYMBWpz2G/oPfQJArl4P1B8ECa8FFaEQ5YQwRjfN1og4ft3cUuGoQ8aTQRKNFtr0nEfd3PE pTJfGVLsJQVVtcUL+71pL9fxkT6QCUMvNUkc3k0VVmq+TG1C8qvmyk26Nja+1PesURSVo2CcL yYv76XmKxNXuJNY96n5zCLZJybY+IzfZLsRlhJZwgPraH7kMmNyvFzTr+WdIaYGSyrJ8jAt68 F+WNb+JygFOsOQg0d7uaJg4p2uYkQyT2B/JCAd9YxuoE8ygdx0KqLw/wfe5OhvBcedjm56Fx7 8kDrwTcd+CDz3wG+KWWzQgtPElcwiaCHkbxFnR7PSx+PRzQv2RpoBAHvGlMegVKkZ6V4nd8T/ FaqWd/tuUqaAGyCEOipMsRIpnc4E2woiC2qGfSo6gWPNZctFDugIE4oW/oIZLnB8TOCgfWut7 E0KZ++p4h5lemFet2VTBEHoVUpFOG6aWzWey/LahlwatG2SHtEiJNEzxgzGCD2AWCyRmp4oVu krlxDiwG4SehEeMpJnMrBL+FBPdipWiJeBNwZ2av6FglvyvpP6lzk5LZMJU1s4u9YAbJTY3uc VMdJts3PFYV20bf0d60c1NNOAM3uyUPrWOAnJhj/kIEZoq4lbYTVQQf7z7qIw/sqw0R/YfTGI xtdUu5E2BcHkYsEIJPOTwjXgRqNjCyetKUrL5HHgRSHlSfLDs8mrlXgs4gu7MR0DWziDMOHen paPShRFuFN1j9OJHxlSdZYUWdnErpsfztiZQ5DGD64gw4e3HBgxccqZPN4IwIHA84G/ubtmDW a+GGKdQ X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 16984 Cc: Eli Zaretskii , 16984@debbugs.gnu.org, jidanni@jidanni.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) Michael Albinus writes: Hi Noam, >> Regarding `tramp-quoted-name-p', you should use (string-match "\\`/:" >> ...) or (string-prefix-p "/:" ...), not (string-match "^/:" ...) as the >> latter could get confused by newlines in filenames (of the first two, I >> find the `string-prefix-p' version clearer). I have committed now a patch to the master, providing file-name-quoted-p, file-name-quote and file-name-unquote. You might use them, instead of their tramp-* counterparts. I will add later on the text for the elisp manual, and for NEWS. Best regards, Michael. From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 08 12:23:18 2016 Received: (at 16984) by debbugs.gnu.org; 8 Dec 2016 17:23:18 +0000 Received: from localhost ([127.0.0.1]:34781 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cF2Pe-0007Vi-CM for submit@debbugs.gnu.org; Thu, 08 Dec 2016 12:23:18 -0500 Received: from eggs.gnu.org ([208.118.235.92]:33040) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cF2Pc-0007VV-F7 for 16984@debbugs.gnu.org; Thu, 08 Dec 2016 12:23:16 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cF2PW-0002He-Iu for 16984@debbugs.gnu.org; Thu, 08 Dec 2016 12:23:11 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-4.9 required=5.0 tests=BAYES_00,RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:43030) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cF2PQ-0002Fg-1i; Thu, 08 Dec 2016 12:23:04 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:2525 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cF2PP-0004EF-5z; Thu, 08 Dec 2016 12:23:03 -0500 Date: Thu, 08 Dec 2016 19:23:30 +0200 Message-Id: <837f7aibcd.fsf@gnu.org> From: Eli Zaretskii To: Michael Albinus In-reply-to: <87k2bawfpu.fsf@gmx.de> (message from Michael Albinus on Thu, 08 Dec 2016 17:25:17 +0100) Subject: Re: bug#16984: dired-do-rename susceptible to .../~/... hijack References: <87eh2aq60w.fsf@jidanni.org> <87pomrst3z.fsf@users.sourceforge.net> <837f8zpnih.fsf@gnu.org> <87pomjrita.fsf@users.sourceforge.net> <83pomjr63z.fsf@gnu.org> <87eg2zb860.fsf@gmx.de> <87h97vqhf3.fsf@users.sourceforge.net> <874m3vazx2.fsf@gmx.de> <87wpgoowsx.fsf@users.sourceforge.net> <874m2jpl8c.fsf@gmx.de> <87a8c7fazs.fsf@users.sourceforge.net> <8760muu8wq.fsf@gmx.de> <83bmwmif9b.fsf@gnu.org> <87k2bawfpu.fsf@gmx.de> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -8.0 (--------) X-Debbugs-Envelope-To: 16984 Cc: jidanni@jidanni.org, 16984@debbugs.gnu.org, npostavs@users.sourceforge.net X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Eli Zaretskii Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -8.0 (--------) > From: Michael Albinus > Cc: npostavs@users.sourceforge.net, 16984@debbugs.gnu.org, jidanni@jidanni.org > Date: Thu, 08 Dec 2016 17:25:17 +0100 > > Eli Zaretskii writes: > > >> As said in the other mail, it shall be made available as > >> `file-name-quote', therefore. Eli? > > > > Are you asking me about the function's name? file-name-quote is OK > > with me. > > The question was rather whether this function (and file-name-unquote, > file-name-quoted-p) shall be exposed in files.el. I understand your > answer that you agree :-) Yes, thanks. From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 08 23:55:51 2016 Received: (at 16984) by debbugs.gnu.org; 9 Dec 2016 04:55:51 +0000 Received: from localhost ([127.0.0.1]:35076 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cFDDq-0008Qv-Tn for submit@debbugs.gnu.org; Thu, 08 Dec 2016 23:55:51 -0500 Received: from mail-io0-f195.google.com ([209.85.223.195]:33743) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cFDDo-0008Qh-VR for 16984@debbugs.gnu.org; Thu, 08 Dec 2016 23:55:49 -0500 Received: by mail-io0-f195.google.com with SMTP id p13so4543337ioi.0 for <16984@debbugs.gnu.org>; Thu, 08 Dec 2016 20:55:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=JthuOrWGGQdISE7pQEp/JdqjGRTcLk9I11JEE8+OPyM=; b=OfXssmWbT8jHvIdvqbleVNwyNJd0CT/jkAOkXmqb5VrMa71w1LM9qN83IOx2A5R3z7 NFuUKagsfWEXAd9iO61JTQYwnxvqH91eREhIx3PwyIMFX4hSWHNTRfhyCfEaiN1PyJxQ 6pOCLCJiKiqkjs2aiPYkKVwGrMtupxoeH/I4Fl7rYGpb0CcnJTB7drw/XYyzcW3bpHr/ IptcaC2EShC5NjV2H2+k52alKbK4TpJTzJy0mk59IU55PCVw597WKT5iT7cP8dhN7uQ6 iTkmp4QQUfXg6ym2G0kR98gcvOHpqwcoQbaViHSdnU1NgGx3VjcOFPDat/dEpm8XIiz9 ZrVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:from:to:cc:subject:references:date :in-reply-to:message-id:user-agent:mime-version; bh=JthuOrWGGQdISE7pQEp/JdqjGRTcLk9I11JEE8+OPyM=; b=ijWdS0dajMkf6xMSWc0AlSn/d3zwXTQbazeHx6CIGhdSIuc8cpEvvAjboQiy4BSMpY bmHVwShcuVf71/axNvc9cEmH/A5koeEyEGzVvQhK2yh17ef8CU44Kf0BRXe2BaZEthK2 1yoaWIBWZUsUh8eAR4P3eop5U5i2eIjpfrHiK+LqenUWcGLE4hIsiqMaL2OXRKBTuOmY P2q2jERHc1qbhDwxhXlEjpzkUlbSTQLGNaTsLfhy+jkh37PL8ksE7aBpVlqKMuOL83oL zZjreSdrs+dH0hL2VJFkCkLDPFp2AbSxmEELnXzz9aMfRzPQ3CZhc2OfnirNnXSkjDCd AQWg== X-Gm-Message-State: AKaTC02EWnfkyaGEA0xTTgCwpPvjcDvPkJORNDpYe6IdV5+azxNnLx2uCLyKAP9X/iKGdQ== X-Received: by 10.36.219.196 with SMTP id c187mr5193211itg.23.1481259343268; Thu, 08 Dec 2016 20:55:43 -0800 (PST) Received: from zony ([45.2.7.65]) by smtp.googlemail.com with ESMTPSA id j201sm7736183ita.20.2016.12.08.20.55.42 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 08 Dec 2016 20:55:42 -0800 (PST) From: npostavs@users.sourceforge.net To: Eli Zaretskii Subject: Re: bug#16984: dired-do-rename susceptible to .../~/... hijack References: <87eh2aq60w.fsf@jidanni.org> <87pomrst3z.fsf@users.sourceforge.net> <837f8zpnih.fsf@gnu.org> <87pomjrita.fsf@users.sourceforge.net> <83pomjr63z.fsf@gnu.org> <87eg2zb860.fsf@gmx.de> <87h97vqhf3.fsf@users.sourceforge.net> <874m3vazx2.fsf@gmx.de> <87wpgoowsx.fsf@users.sourceforge.net> <874m2jpl8c.fsf@gmx.de> <87a8c7fazs.fsf@users.sourceforge.net> <8760muu8wq.fsf@gmx.de> <874m2efpso.fsf@users.sourceforge.net> <83a8c6if73.fsf@gnu.org> Date: Thu, 08 Dec 2016 23:56:43 -0500 In-Reply-To: <83a8c6if73.fsf@gnu.org> (Eli Zaretskii's message of "Thu, 08 Dec 2016 18:00:16 +0200") Message-ID: <87vautem44.fsf@users.sourceforge.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: 0.5 (/) X-Debbugs-Envelope-To: 16984 Cc: michael.albinus@gmx.de, 16984@debbugs.gnu.org, jidanni@jidanni.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.5 (/) --=-=-= Content-Type: text/plain Eli Zaretskii writes: >> From: npostavs@users.sourceforge.net >> Cc: 16984@debbugs.gnu.org, Eli Zaretskii , jidanni@jidanni.org >> Date: Thu, 08 Dec 2016 09:39:35 -0500 >> >> (defun minibuffer-maybe-quote-filename (filename) >> "Protect FILENAME from `substitute-in-file-name', as needed. >> Useful to give the user default values that won't be substituted." >> (let ((local (file-remote-p filename 'localname))) >> (if (and (not (string-prefix-p "/:" local)) >> (file-name-absolute-p filename) >> (string-match-p "/~" local)) >> (tramp-quote-name filename) >> (minibuffer--double-dollars filename)))) > > Is the argument guaranteed to come from expand-file-name? If not, it > should also accept file names matching "\~" on MS platforms. I think it does, but I'm not entirely sure. Better safe than sorry? --=-=-= Content-Type: text/plain Content-Disposition: attachment; filename=v5-0001-Quote-filenames-containing-in-prompts.patch Content-Description: patch >From 1fc91a2a9fe7f9f0118edc047080718d11659c3f Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Thu, 27 Oct 2016 22:17:11 -0400 Subject: [PATCH v5] Quote filenames containing '~' in prompts When in a directory named '~', the default value given by `read-file-name' should be quoted by prepending '/:', in order to prevent it from being interpreted as referring to the $HOME directory (Bug#16984). * lisp/minibuffer.el (minibuffer-maybe-quote-filename): New function. (completion--sifn-requote, read-file-name-default): Use it instead of `minibuffer--double-dollars'. * test/lisp/files-tests.el (files-test-read-file-in-~): Test it. --- lisp/minibuffer.el | 25 ++++++++++++++++++------- test/lisp/files-tests.el | 23 +++++++++++++++++++++++ 2 files changed, 41 insertions(+), 7 deletions(-) diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el index 175189c..576b804 100644 --- a/lisp/minibuffer.el +++ b/lisp/minibuffer.el @@ -2251,6 +2251,17 @@ minibuffer--double-dollars (replace-regexp-in-string "\\$" (lambda (dollar) (concat dollar dollar)) str)) +(defun minibuffer-maybe-quote-filename (filename) + "Protect FILENAME from `substitute-in-file-name', as needed. +Useful to give the user default values that won't be substituted." + (if (and (not (file-name-quoted-p filename)) + (file-name-absolute-p filename) + (string-match-p (if (memq system-type '(windows-nt ms-dos)) + "[/\\\\]~" "/~") + (file-local-name filename))) + (file-name-quote filename) + (minibuffer--double-dollars filename))) + (defun completion--make-envvar-table () (mapcar (lambda (enventry) (substring enventry 0 (string-match-p "=" enventry))) @@ -2420,7 +2431,7 @@ completion--sifn-requote (substitute-in-file-name (substring qstr 0 (1- qpos))))) (setq qpos (1- qpos))) - (cons qpos #'minibuffer--double-dollars)))) + (cons qpos #'minibuffer-maybe-quote-filename)))) (defalias 'completion--file-name-table (completion-table-with-quoting #'completion-file-name-table @@ -2596,10 +2607,10 @@ read-file-name-default (let ((insdef (cond ((and insert-default-directory (stringp dir)) (if initial - (cons (minibuffer--double-dollars (concat dir initial)) - (length (minibuffer--double-dollars dir))) - (minibuffer--double-dollars dir))) - (initial (cons (minibuffer--double-dollars initial) 0))))) + (cons (minibuffer-maybe-quote-filename (concat dir initial)) + (length (minibuffer-maybe-quote-filename dir))) + (minibuffer-maybe-quote-filename dir))) + (initial (cons (minibuffer-maybe-quote-filename initial) 0))))) (let ((completion-ignore-case read-file-name-completion-ignore-case) (minibuffer-completing-file-name t) @@ -2693,7 +2704,7 @@ read-file-name-default ;; with what we will actually return. As an exception, ;; if that's the same as the second item in ;; file-name-history, it's really a repeat (Bug#4657). - (let ((val1 (minibuffer--double-dollars val))) + (let ((val1 (minibuffer-maybe-quote-filename val))) (if history-delete-duplicates (setcdr file-name-history (delete val1 (cdr file-name-history)))) @@ -2703,7 +2714,7 @@ read-file-name-default (if add-to-history ;; Add the value to the history--but not if it matches ;; the last value already there. - (let ((val1 (minibuffer--double-dollars val))) + (let ((val1 (minibuffer-maybe-quote-filename val))) (unless (and (consp file-name-history) (equal (car file-name-history) val1)) (setq file-name-history diff --git a/test/lisp/files-tests.el b/test/lisp/files-tests.el index 80d5e5b..f4ccd5c 100644 --- a/test/lisp/files-tests.el +++ b/test/lisp/files-tests.el @@ -220,5 +220,28 @@ files-test-bug-18141-file (should-not yes-or-no-p-prompts) (should (equal kill-emacs-args '(nil))))) +(ert-deftest files-test-read-file-in-~ () + "Test file prompting in directory named '~'. +If we are in a directory named '~', the default value should not +be $HOME." + (cl-letf (((symbol-function 'completing-read) + (lambda (_prompt _coll &optional _pred _req init _hist def _) + (or def init))) + (dir (make-temp-file "read-file-name-test" t))) + (unwind-protect + (let ((subdir (expand-file-name "./~/"))) + (make-directory subdir t) + (with-temp-buffer + (setq default-directory subdir) + (should-not (equal + (expand-file-name (read-file-name "File: ")) + (expand-file-name "~/"))) + ;; Don't overquote either! + (setq default-directory (concat "/:" subdir)) + (should-not (equal + (expand-file-name (read-file-name "File: ")) + (concat "/:/:" subdir))))) + (delete-directory dir 'recursive)))) + (provide 'files-tests) ;;; files-tests.el ends here -- 2.9.3 --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Fri Dec 09 03:06:04 2016 Received: (at 16984) by debbugs.gnu.org; 9 Dec 2016 08:06:04 +0000 Received: from localhost ([127.0.0.1]:35157 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cFGBw-0006qc-6E for submit@debbugs.gnu.org; Fri, 09 Dec 2016 03:06:04 -0500 Received: from mout.gmx.net ([212.227.15.15]:60247) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cFGBu-0006q5-Bj for 16984@debbugs.gnu.org; Fri, 09 Dec 2016 03:06:02 -0500 Received: from detlef.gmx.de ([87.146.53.17]) by mail.gmx.com (mrgmx003 [212.227.17.190]) with ESMTPSA (Nemesis) id 0MYP57-1cB32o38l7-00VBAp; Fri, 09 Dec 2016 09:05:39 +0100 From: Michael Albinus To: npostavs@users.sourceforge.net Subject: Re: bug#16984: dired-do-rename susceptible to .../~/... hijack References: <87eh2aq60w.fsf@jidanni.org> <87pomrst3z.fsf@users.sourceforge.net> <837f8zpnih.fsf@gnu.org> <87pomjrita.fsf@users.sourceforge.net> <83pomjr63z.fsf@gnu.org> <87eg2zb860.fsf@gmx.de> <87h97vqhf3.fsf@users.sourceforge.net> <874m3vazx2.fsf@gmx.de> <87wpgoowsx.fsf@users.sourceforge.net> <874m2jpl8c.fsf@gmx.de> <87a8c7fazs.fsf@users.sourceforge.net> <8760muu8wq.fsf@gmx.de> <874m2efpso.fsf@users.sourceforge.net> <83a8c6if73.fsf@gnu.org> <87vautem44.fsf@users.sourceforge.net> Date: Fri, 09 Dec 2016 09:05:37 +0100 In-Reply-To: <87vautem44.fsf@users.sourceforge.net> (npostavs's message of "Thu, 08 Dec 2016 23:56:43 -0500") Message-ID: <8760mtwmr2.fsf@gmx.de> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:/tdeC+1nF/h07EiwdVZEAj2TUlp2IzF/M6Co1dlaor5X3qNSo31 z3ddzGr4OM2T4EMLdcip3ZTMmFcBv4J9gUo5oBDu1gnaZScyZYwzjZPfr7+vKllOt5+o6jY 0NoRPe3obAZsiQMa/jfPCBjWAfwRZGsoRsOie25HDD1XBsHOINSjCFZjTABxDJwic5suYGx M8vNSG1XBFcP/ibB6A+2w== X-UI-Out-Filterresults: notjunk:1;V01:K0:PxZdGpaDAS8=:s3tGe2wdIWPdNam+abWze0 zpk/wzqGfPRHEwxFzNnDODQCjhRInq7dOAQN//L+oaHrgFrOvhKWz/STNZTrNtVKRicVcjYRS WClVd3kL3Myb1hc9kWJtu7ciNmS3kUPS/u/KnAcg/B21eGuN7czhowMnyv/3gc2b1ZElbXSsq nhJXx02BVVOO+jNl6DnAXLjlS0DNRqkHtvJVv2UDP7NvVAc8LCq8GP7OhoIZ24Y3RuLo34GZk lHbwYg11FBKAMgbWftzD/GXwBODGe5tjPaQzofdC/4RgVOGrFc17uPqO3KC0RM9nMI2UTkPv3 Asgbi1VnffpeutwsMd8lYMLpQjmQTAdAqFPcuNPtSz3aqOUzdAPq0L2zGHd54bx/sjM7C62yY NfIYGfSjr6uKwH6BkdtCoVWwjVMHoEioMXCQdjrX3/L12dSyjL5jaoveGpJTNG8ds61/e3D9X 3Lg6hfxszs/0Ti4002nV9uBI+nfi18SAMno+ZlZ8kneOeQ/bB64jqTj0tClT/t3E47MCsEAEl e/ftA8LdMHMdWck7slnUjx6UGXPBf1Y4Jdi52NBOxo2gUdWzxDwjrR944tVUsGYKF8dP+YbsH q4f3a/XKps2uDKiYkRo1EpynoAtR/cWIzPMJJbigrE5QNhk6fHE1+1hEBmIr8+POL/vFPURBH s5fOcf87sqEkOpBX6cK5aH6l2QdGEwI+94fDU8eh8rdxK36AX03G2yn12TwPRNPMb7/lsvu3T 9FxSjZ9A4942P279Re/pKRNfSP6E5iAbnkODt+x4dgTIbORuf3C0Ykfrq3TgKjCLlwNfrq74a Qk2lewK X-Spam-Score: -0.2 (/) X-Debbugs-Envelope-To: 16984 Cc: Eli Zaretskii , 16984@debbugs.gnu.org, jidanni@jidanni.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.2 (/) npostavs@users.sourceforge.net writes: > Subject: [PATCH v5] Quote filenames containing '~' in prompts LGTM. Best regards, Michael. From debbugs-submit-bounces@debbugs.gnu.org Fri Dec 09 03:19:12 2016 Received: (at 16984) by debbugs.gnu.org; 9 Dec 2016 08:19:12 +0000 Received: from localhost ([127.0.0.1]:35179 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cFGOe-0007Do-Jx for submit@debbugs.gnu.org; Fri, 09 Dec 2016 03:19:12 -0500 Received: from eggs.gnu.org ([208.118.235.92]:37598) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cFGOc-0007DZ-NY for 16984@debbugs.gnu.org; Fri, 09 Dec 2016 03:19:10 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cFGOW-0001nZ-Lf for 16984@debbugs.gnu.org; Fri, 09 Dec 2016 03:19:05 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-3.5 required=5.0 tests=BAYES_05,RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:52750) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cFGOH-0001aQ-5u; Fri, 09 Dec 2016 03:18:49 -0500 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3376 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1cFGOG-0006or-7D; Fri, 09 Dec 2016 03:18:48 -0500 Date: Fri, 09 Dec 2016 10:19:17 +0200 Message-Id: <83wpf9h5ve.fsf@gnu.org> From: Eli Zaretskii To: npostavs@users.sourceforge.net In-reply-to: <87vautem44.fsf@users.sourceforge.net> (npostavs@users.sourceforge.net) Subject: Re: bug#16984: dired-do-rename susceptible to .../~/... hijack References: <87eh2aq60w.fsf@jidanni.org> <87pomrst3z.fsf@users.sourceforge.net> <837f8zpnih.fsf@gnu.org> <87pomjrita.fsf@users.sourceforge.net> <83pomjr63z.fsf@gnu.org> <87eg2zb860.fsf@gmx.de> <87h97vqhf3.fsf@users.sourceforge.net> <874m3vazx2.fsf@gmx.de> <87wpgoowsx.fsf@users.sourceforge.net> <874m2jpl8c.fsf@gmx.de> <87a8c7fazs.fsf@users.sourceforge.net> <8760muu8wq.fsf@gmx.de> <874m2efpso.fsf@users.sourceforge.net> <83a8c6if73.fsf@gnu.org> <87vautem44.fsf@users.sourceforge.net> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -8.0 (--------) X-Debbugs-Envelope-To: 16984 Cc: michael.albinus@gmx.de, 16984@debbugs.gnu.org, jidanni@jidanni.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Eli Zaretskii Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -8.0 (--------) > From: npostavs@users.sourceforge.net > Cc: 16984@debbugs.gnu.org, michael.albinus@gmx.de, jidanni@jidanni.org > Date: Thu, 08 Dec 2016 23:56:43 -0500 > > > Is the argument guaranteed to come from expand-file-name? If not, it > > should also accept file names matching "\~" on MS platforms. > > I think it does, but I'm not entirely sure. Better safe than sorry? Definitely, thanks. From debbugs-submit-bounces@debbugs.gnu.org Sun Dec 11 21:56:35 2016 Received: (at 16984) by debbugs.gnu.org; 12 Dec 2016 02:56:35 +0000 Received: from localhost ([127.0.0.1]:38605 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cGGn5-0002Aa-Hf for submit@debbugs.gnu.org; Sun, 11 Dec 2016 21:56:35 -0500 Received: from mail-io0-f172.google.com ([209.85.223.172]:34234) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cGGn3-0002AH-86; Sun, 11 Dec 2016 21:56:33 -0500 Received: by mail-io0-f172.google.com with SMTP id p42so154581645ioo.1; Sun, 11 Dec 2016 18:56:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=QQecKAbhbvsdyZhxU3tMjeH0dfwGiPTHE6PrGrxKOKQ=; b=G4Ecg8ih/d2/UIh7AmxTZLG4qaHfbbZOJVtFh0vNxlk6W6pBvk5TFqBwJavBEUWfzJ 7XWCNW4b7JOAz4umVtA9kSS8Vqv9HVBwcW17NJSKxzmqSWnJlzBb/dl1zg5+jTS99c5x 6pcmVCzSqiikjIyCyjZzBsYOa13gmg2Qh2cEBFCKhDReszGQsZhlL8CHZ+e2I8k6sHl6 Gmys0gK/0ZkDHrAmTnA0fjzPge8WZzWM/NpBcnlkwLJOXEcQOdaE1V//jEyYh9DOKOZW AVu3xFzF9n583aWL4g1zbeBUBGIqA+dmQxnYiCtDizPp/J8oU91e1qGa+7BZlqDKwmhT 88FQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:from:to:cc:subject:references:date :in-reply-to:message-id:user-agent:mime-version; bh=QQecKAbhbvsdyZhxU3tMjeH0dfwGiPTHE6PrGrxKOKQ=; b=PaY6h7XkQwdTF+x0mvO138KLsatWFCMT7hBpl4Gs19eFaY2B+13k9mO3cxoEzqy6mp rkrbE9s26MFfcM1KYpZLLLdCcCZLaIGhlzBF+lGMMrrI/2V9dm6MooxL21zw8wa9HBsS ygBepTWY5YeffcVKrLt9EasmOkeoXbluNn7kfDn3/suC9kxpxmaDNhK7XRVO1POlwEnn dGUBZieXMids0gnMbb4QFpFMY8HpVSlvbfPpDqse7RdydHj+ZoDw+mxBdm9KGgVWM09T mVUwlXJ+uld6OVbN434sieguMmkNlQ6pUjaVB6BNp1Mf7Pg3iX+LNuSOWjX4PLZtn7es 4pQg== X-Gm-Message-State: AKaTC008OtKvMB3xP8PAv0jJOY6NLyV4rxOhXLdqejYhyZJGv3/mKdmDGNt+BAhUUk2IRQ== X-Received: by 10.107.164.35 with SMTP id n35mr41276367ioe.171.1481511387636; Sun, 11 Dec 2016 18:56:27 -0800 (PST) Received: from zony ([45.2.7.65]) by smtp.googlemail.com with ESMTPSA id h69sm11202623ith.5.2016.12.11.18.56.26 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sun, 11 Dec 2016 18:56:26 -0800 (PST) From: npostavs@users.sourceforge.net To: Michael Albinus Subject: Re: bug#16984: dired-do-rename susceptible to .../~/... hijack References: <87eh2aq60w.fsf@jidanni.org> <87pomrst3z.fsf@users.sourceforge.net> <837f8zpnih.fsf@gnu.org> <87pomjrita.fsf@users.sourceforge.net> <83pomjr63z.fsf@gnu.org> <87eg2zb860.fsf@gmx.de> <87h97vqhf3.fsf@users.sourceforge.net> <874m3vazx2.fsf@gmx.de> <87wpgoowsx.fsf@users.sourceforge.net> <874m2jpl8c.fsf@gmx.de> <87a8c7fazs.fsf@users.sourceforge.net> <8760muu8wq.fsf@gmx.de> <874m2efpso.fsf@users.sourceforge.net> <83a8c6if73.fsf@gnu.org> <87vautem44.fsf@users.sourceforge.net> <8760mtwmr2.fsf@gmx.de> Date: Sun, 11 Dec 2016 21:57:28 -0500 In-Reply-To: <8760mtwmr2.fsf@gmx.de> (Michael Albinus's message of "Fri, 09 Dec 2016 09:05:37 +0100") Message-ID: <87r35ddfc7.fsf@users.sourceforge.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.5 (/) X-Debbugs-Envelope-To: 16984 Cc: Eli Zaretskii , 16984@debbugs.gnu.org, jidanni@jidanni.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.5 (/) tags 16984 fixed close 16984 26.1 quit Michael Albinus writes: > npostavs@users.sourceforge.net writes: > >> Subject: [PATCH v5] Quote filenames containing '~' in prompts > > LGTM. > > Best regards, Michael. Pushed as a92a027d58cb. From unknown Wed Jun 18 23:07:39 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Mon, 09 Jan 2017 12:24:03 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator