X-Loop: help-debbugs@HIDDEN
Subject: bug#36831: enhance 'directory not empty' message
Resent-From: Alex Mantel <alexmantel93@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-coreutils@HIDDEN
Resent-Date: Sun, 28 Jul 2019 20:29:01 +0000
Resent-Message-ID: <handler.36831.B.156434569911514 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: report 36831
X-GNU-PR-Package: coreutils
X-GNU-PR-Keywords:
To: 36831 <at> debbugs.gnu.org
X-Debbugs-Original-To: bug-coreutils@HIDDEN
Received: via spool by submit <at> debbugs.gnu.org id=B.156434569911514
(code B ref -1); Sun, 28 Jul 2019 20:29:01 +0000
Received: (at submit) by debbugs.gnu.org; 28 Jul 2019 20:28:19 +0000
Received: from localhost ([127.0.0.1]:47231 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1hrpmE-0002ze-QS
for submit <at> debbugs.gnu.org; Sun, 28 Jul 2019 16:28:19 -0400
Received: from lists.gnu.org ([209.51.188.17]:60179)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <alexmantel93@HIDDEN>) id 1hroNg-0004Wp-72
for submit <at> debbugs.gnu.org; Sun, 28 Jul 2019 14:58:52 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:38767)
by lists.gnu.org with esmtp (Exim 4.86_2)
(envelope-from <alexmantel93@HIDDEN>) id 1hroNe-00005V-Tx
for bug-coreutils@HIDDEN; Sun, 28 Jul 2019 14:58:52 -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,
FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,HTML_MESSAGE,URIBL_BLOCKED
autolearn=disabled version=3.3.2
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
(envelope-from <alexmantel93@HIDDEN>) id 1hroNd-0006oM-P1
for bug-coreutils@HIDDEN; Sun, 28 Jul 2019 14:58:50 -0400
Received: from mail-ed1-x52e.google.com ([2a00:1450:4864:20::52e]:37628)
by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16)
(Exim 4.71) (envelope-from <alexmantel93@HIDDEN>)
id 1hroNd-0006nI-GS
for bug-coreutils@HIDDEN; Sun, 28 Jul 2019 14:58:49 -0400
Received: by mail-ed1-x52e.google.com with SMTP id w13so57458061eds.4
for <bug-coreutils@HIDDEN>; Sun, 28 Jul 2019 11:58:49 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
h=to:from:subject:message-id:date:user-agent:mime-version
:content-language;
bh=7kDi5fFd3isXSwWfk43SYE4N6QYi3s0lpb238ERMQu8=;
b=GfDuumdI+y2gLGgWpOqFpR+q6Psaa07OeUAsTdStsfcs1AylH8B2hUG1NDQM131nZE
OfhvBLZTXrGYRr1jAIu6SMzTlZt4n/yi/96yixFrhC+LX6RUcjVCgTOa9nPLIR5SFfUd
93uauiqBX4TlMNMjrTrPEiYZQpW9Q10vkf2EKjxPEf1XiEvNPD1PKwnX400xlIzqAxSZ
Y7HfUi4GX/TPQElkD0zWvaXQMHdgFr6AZL54Vbde6+NzfNARdP9yBXXpoz4Ns3akcmLm
RJactnuopzxGZLQdpSecpA3KnZvidwrBPr9SbF5yrRxVdcI97h6vXHKF+zrCrR1yjuh9
zF2w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20161025;
h=x-gm-message-state:to:from:subject:message-id:date:user-agent
:mime-version:content-language;
bh=7kDi5fFd3isXSwWfk43SYE4N6QYi3s0lpb238ERMQu8=;
b=gCHRaSAtfexyMST9pA9kV0ljuFNlC/qJPvbeWMxo3C7K3MYoVtVDBY9N+6nX4UbQGE
oUyl9+7EmVYswgBQz2sbfF1zGmIu2haP46LQ1wXcNh+TxodW98YAOL3lbctE6lxtI/vg
MOP2ERmtUAhGe1Q74L+HxALHHThM+pJCFTOyPnsgriW2dwtdbAHjrrmQAA2KjqSd/O1S
qU6JvqcYOEceprpQaFrbxf08LJevtQPvNAusR7ijLMBEYTlOiF7n0RZYWbckEgrTjMBf
vU5H/q1dNeCZ9ALgub39pzciXkZAJIFBLDF8uJGgPKvN1HHCUUYBoedr2xRPCdM3hB0w
3fRg==
X-Gm-Message-State: APjAAAWvjd6q7LfseaMijvEEH/koje1CFYNd8Q9lpuWex6wbeWzIJ+71
1nf8UChmFsWkTb0xIeaE8j4ymAUG
X-Google-Smtp-Source: APXvYqw0folWMPSpwAV03kS3UBMEMuMi5xDkf56qL0PCT8NE5OoyQKFjZfGVyax9Mnegm2BU7xsebg==
X-Received: by 2002:a50:ac24:: with SMTP id v33mr92544554edc.30.1564340327615;
Sun, 28 Jul 2019 11:58:47 -0700 (PDT)
Received: from ?IPv6:2001:16b8:68cb:0:62f6:77ff:febe:55f5?
(200116b868cb000062f677fffebe55f5.dip.versatel-1u1.de.
[2001:16b8:68cb:0:62f6:77ff:febe:55f5])
by smtp.gmail.com with ESMTPSA id b30sm15889988ede.88.2019.07.28.11.58.46
for <bug-coreutils@HIDDEN>
(version=TLS1_3 cipher=AEAD-AES128-GCM-SHA256 bits=128/128);
Sun, 28 Jul 2019 11:58:46 -0700 (PDT)
From: Alex Mantel <alexmantel93@HIDDEN>
Message-ID: <cb555fd7-efe3-3a00-5ce9-2b15e6ff5243@HIDDEN>
Date: Sun, 28 Jul 2019 20:58:59 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
Thunderbird/60.7.2
MIME-Version: 1.0
Content-Type: multipart/alternative;
boundary="------------D5E3B0345694F4B70C03080A"
Content-Language: en-US-large
X-detected-operating-system: by eggs.gnu.org: Genre and OS details not
recognized.
X-Received-From: 2a00:1450:4864:20::52e
X-Spam-Score: -1.1 (-)
X-Mailman-Approved-At: Sun, 28 Jul 2019 16:28:17 -0400
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -2.1 (--)
This is a multi-part message in MIME format.
--------------D5E3B0345694F4B70C03080A
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 8bit
i couldn't use move:
  $ mv thing/ ../things
   mv: cannot move 'thing' to '../things/things': Directory not empty
An i can not move it. i do not understand why. I have to google and find
at stackoverflow:
   Though its man page doesn't document it, mv will refuse to rename a
   directory to another directory if the target directory contains files.
   This is a good thing in your case because you turn out to want to
   merge the content of the source into the target, which mv will not do.
https://askubuntu.com/questions/269775/mv-directory-not-empty
Ah, the target directory does exist! Hmm... But i'd like the message to
be like:
  $ mv thing/ ../things
  mv: cannot move 'thing' to '../things/things': Targetdirectory not empty
                                                 ^ this little thing here,
                                                   it explains everyting.
Change text from 'Directory not empty' to 'Targetdirectory not empty'.
--------------D5E3B0345694F4B70C03080A
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: 8bit
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<p><font face="Bitstream Vera Sans Mono">i couldn't use move: <br>
<br>
  $ mv thing/ ../things<br>
   mv: cannot move 'thing' to '../things/things': Directory not
empty<br>
<br>
An i can not move it. i do not understand why. I have to google
and find <br>
at stackoverflow:<br>
<br>
   Though its man page doesn't document it, mv will refuse to
rename a <br>
   directory to another directory if the target directory
contains files. <br>
   This is a good thing in your case because you turn out to
want to <br>
   merge the content of the source into the target, which mv
will not do.<br>
<br>
  Â
<a class="moz-txt-link-freetext" href="https://askubuntu.com/questions/269775/mv-directory-not-empty">https://askubuntu.com/questions/269775/mv-directory-not-empty</a><br>
<br>
Ah, the target directory does exist! Hmm... But i'd like the
message to be like:<br>
<br>
  $ mv thing/ ../things<br>
  mv: cannot move 'thing' to '../things/things':
Targetdirectory not empty<br>
 <br>
                                                 ^ this little
thing here,<br>
                                                   it explains
everyting.<br>
<br>
Change text from 'Directory not empty' to 'Targetdirectory not
empty'.<br>
</font></p>
</body>
</html>
--------------D5E3B0345694F4B70C03080A--
Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) Content-Type: text/plain; charset=utf-8 X-Loop: help-debbugs@HIDDEN From: help-debbugs@HIDDEN (GNU bug Tracking System) To: Alex Mantel <alexmantel93@HIDDEN> Subject: bug#36831: Acknowledgement (enhance 'directory not empty' message) Message-ID: <handler.36831.B.156434569911514.ack <at> debbugs.gnu.org> References: <cb555fd7-efe3-3a00-5ce9-2b15e6ff5243@HIDDEN> X-Gnu-PR-Message: ack 36831 X-Gnu-PR-Package: coreutils Reply-To: 36831 <at> debbugs.gnu.org Date: Sun, 28 Jul 2019 20:29:02 +0000 Thank you for filing a new bug report with debbugs.gnu.org. This is an automatically generated reply to let you know your message has been received. Your message is being forwarded to the package maintainers and other interested parties for their attention; they will reply in due course. Your message has been sent to the package maintainer(s): bug-coreutils@HIDDEN If you wish to submit further information on this problem, please send it to 36831 <at> debbugs.gnu.org. Please do not send mail to help-debbugs@HIDDEN unless you wish to report a problem with the Bug-tracking system. --=20 36831: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D36831 GNU Bug Tracking System Contact help-debbugs@HIDDEN with problems
X-Loop: help-debbugs@HIDDEN
Subject: bug#36831: enhance 'directory not empty' message
Resent-From: Assaf Gordon <assafgordon@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-coreutils@HIDDEN
Resent-Date: Mon, 29 Jul 2019 06:29:02 +0000
Resent-Message-ID: <handler.36831.B36831.15643816999107 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 36831
X-GNU-PR-Package: coreutils
X-GNU-PR-Keywords:
To: Alex Mantel <alexmantel93@HIDDEN>
Cc: 36831 <at> debbugs.gnu.org
Received: via spool by 36831-submit <at> debbugs.gnu.org id=B36831.15643816999107
(code B ref 36831); Mon, 29 Jul 2019 06:29:02 +0000
Received: (at 36831) by debbugs.gnu.org; 29 Jul 2019 06:28:19 +0000
Received: from localhost ([127.0.0.1]:47596 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1hrz8t-0002Mn-6M
for submit <at> debbugs.gnu.org; Mon, 29 Jul 2019 02:28:19 -0400
Received: from mail-pg1-f169.google.com ([209.85.215.169]:40472)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <assafgordon@HIDDEN>) id 1hrz8r-0002Mb-3V
for 36831 <at> debbugs.gnu.org; Mon, 29 Jul 2019 02:28:17 -0400
Received: by mail-pg1-f169.google.com with SMTP id w10so27702477pgj.7
for <36831 <at> debbugs.gnu.org>; Sun, 28 Jul 2019 23:28:17 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
h=date:from:to:cc:subject:message-id:references:mime-version
:content-disposition:content-transfer-encoding:in-reply-to
:user-agent; bh=LBG8jokQCN0oGhnQ7ApFBW+/zoO4GrkG+/DZ8VGqmsE=;
b=EzL/ajvFxSwfmIkKR6y1NnBVcjm67/NBM5eUcGIFUivucN4vNLNzDgZVMzHoO+TplV
g0nDvlax4uombdeOW2oweMujWbOZ1PdPjUsosaU3DynS+Gux5vpAjLhinTQ+0iQlxNGy
sFw+WCEsbJCv4s5VTX5mHGQcniaUyvKXN7jUvB3QC5XTZD/2ZH1Y/6mqwTnOqBdfIhyo
0Pu1u7ESBHH3fAQVHoIR9lmRxiV47aEqNgf+dsF8cTXD5D3FDdudiSsOFsirWU4/pL6y
fx9fb3b1BYKyJqPnConHU9Gwruqjhb7KC0koiTey3AjDr1bs6P2PaPsrV5c8gDLIB2VA
iPsg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20161025;
h=x-gm-message-state:date:from:to:cc:subject:message-id:references
:mime-version:content-disposition:content-transfer-encoding
:in-reply-to:user-agent;
bh=LBG8jokQCN0oGhnQ7ApFBW+/zoO4GrkG+/DZ8VGqmsE=;
b=eIL33XxV/VSo/MR+k9vwmUCWdjmIYQisAT5LgI/Wh/U7vaA5dJbQKPCacLNAzgouRE
E/BI0XnJ0d76eAzMzbyedDyUxog2Ov842qh0VusSpuK+A1WS1hhmKBtLdAk8Bde2S0Sg
GCB0v812vqFFWXq3Jr24PaInbtY/eeyfHTFrkU2+6K+a8vNm2Yfh549etre8pgXAelyi
hU2H/s/juxFn2WUrcb/h6UtFEMSMXj7t+VydAPvWX2ef9dTNuO6Ug6PxOEIVs5K4k/x4
J0svpdvaWCy8yMuDYLTr5p7Ae4zkoxauHrZRnbcAXAaaYlfsunjaLCTaGRt6eik+t3Tp
JKJw==
X-Gm-Message-State: APjAAAU5eOmxlgW0LhlEYyeqqTd1kXItClohz93k012H0BbzkO+oRlvq
lvLA/lj+MWRBlzp3f/C48KgJGn/v
X-Google-Smtp-Source: APXvYqzVNguux3Q4mX7Ke8pjqhMjU74hphIu2KZwQTv9v4pnslsA4WrtdNIAk0pKNIkT/a3/ARAqiQ==
X-Received: by 2002:a17:90a:9301:: with SMTP id
p1mr109959312pjo.22.1564381690555;
Sun, 28 Jul 2019 23:28:10 -0700 (PDT)
Received: from tomato (moose.housegordon.com. [184.68.105.38])
by smtp.gmail.com with ESMTPSA id b30sm86635409pfr.117.2019.07.28.23.28.08
(version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256);
Sun, 28 Jul 2019 23:28:08 -0700 (PDT)
Received: by tomato (Postfix, from userid 1000)
id AA33A680D44; Mon, 29 Jul 2019 00:28:07 -0600 (MDT)
Date: Mon, 29 Jul 2019 00:28:07 -0600
From: Assaf Gordon <assafgordon@HIDDEN>
Message-ID: <20190729062807.GE2676@HIDDEN>
References: <cb555fd7-efe3-3a00-5ce9-2b15e6ff5243@HIDDEN>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="24zk1gE8NUlDmwG9"
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <cb555fd7-efe3-3a00-5ce9-2b15e6ff5243@HIDDEN>
User-Agent: Mutt/1.11.4 (2019-03-13)
X-Spam-Score: 0.0 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
--24zk1gE8NUlDmwG9
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
Hello,
On Sun, Jul 28, 2019 at 08:58:59PM +0200, Alex Mantel wrote:
[...]
> Ah, the target directory does exist! Hmm... But i'd like the message to be
> like:
>
> $ mv thing/ ../things
> mv: cannot move 'thing' to '../things/things': Targetdirectory not empty
>
> ^ this little thing here,
> it explains everyting.
>
> Change text from 'Directory not empty' to 'Targetdirectory not empty'.
Thanks for the report.
To clarify, the scenario is:
$ mkdir A B B/A
$ touch A/bar B/A/foo
$ mv A B
mv: cannot move 'A' to 'B/A': Directory not empty
And the reason (as you've found out) is that the target directory 'B/A'
is not empty (has the 'foo' file in it).
Had this been allowed, moving 'A' to 'B/A' would result in the 'foo'
file disappearing.
---
How is a user expecting to know this error is about that target
directory?
There is a bit of a trade-off here between user-friendliness (especially
for non-technical user) and more technical knowledge.
If we go one step 'lower' to the programming interface, almost all
sources mention this is about the 'target' directory not being empty:
POSIX's says:
https://pubs.opengroup.org/onlinepubs/009695399/functions/rename.html
[EEXIST] or [ENOTEMPTY]
The link named by new is a directory that is not an empty directory.
Linux's rename(2) manual page says:
ENOTEMPTY or EEXIST
newpath is a nonempty directory, that is, contains entries
other than "." and "..".
FreeBSD's rename(2) manual page says:
[ENOTEMPTY] The to argument is a directory and is not empty.
AIX rename(2) manual page says:
ENOTEMPTY
The ToPath parameter specifies an existing directory that is
not empty.
So there is some merit in claiming this helpful piece of information is
lost when the error message is reported to the user.
---
In GNU coreutils this error message originates from 'copy.c' line 2480:
https://git.savannah.gnu.org/cgit/coreutils.git/tree/src/copy.c#n2480
error (0, rename_errno,
_("cannot move %s to %s"),
quoteaf_n (0, src_name), quoteaf_n (1, dst_name));
And herein lies the (technical) problem: The actual message "Directory
not empty" is not in the source code - it is a system error message
that corresponds to the value of 'rename_errno' variable
(ENOTEMPTY/EEXIST). It originates from GLibc (or another libc).
So there is no trivial way to change the error message in coreutils.
Attached a patch to add special handling for this error.
---
What do others think? If this is a desired improvement, I'll finish the
patch with news/tests/etc.
regards,
- assaf
--24zk1gE8NUlDmwG9
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="0001-mv-improve-ENOTEMPTY-EEXIST-error-message.patch"
From 430b30104234db719bf15e6fc681a62312c7124f Mon Sep 17 00:00:00 2001
From: Assaf Gordon <assafgordon@HIDDEN>
Date: Mon, 29 Jul 2019 00:23:20 -0600
Subject: [PATCH] mv: improve ENOTEMPTY/EEXIST error message
Suggested by Alex Mantel <alexmantel93@HIDDEN> in
https://bugs.gnu.org/36831 .
$ mkdir A B B/A
$ touch A/bar B/A/foo
Before:
$ mv A B
mv: cannot move 'A' to 'B/A': Directory not empty
After:
$ mv A B
mv: cannot move 'A' to 'B/A': Target directory not empty
* src/copy.c (copy_internal): Add special handling for ENOTEMPTY/EEXIST.
TODO: NEWS, tests.
---
src/copy.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/src/copy.c b/src/copy.c
index 65cf65895..a5af570bf 100644
--- a/src/copy.c
+++ b/src/copy.c
@@ -2450,6 +2450,14 @@ copy_internal (char const *src_name, char const *dst_name,
return true;
}
+ if (rename_errno == ENOTEMPTY || rename_errno == EEXIST)
+ {
+ error (0, 0, _("cannot move %s to %s: Target directory not empty"),
+ quoteaf_n (0, src_name), quoteaf_n (1, dst_name));
+ forget_created (src_sb.st_ino, src_sb.st_dev);
+ return false;
+ }
+
/* WARNING: there probably exist systems for which an inter-device
rename fails with a value of errno not handled here.
If/as those are reported, add them to the condition below.
--
2.11.0
--24zk1gE8NUlDmwG9--
X-Loop: help-debbugs@HIDDEN
Subject: bug#36831: enhance 'directory not empty' message
Resent-From: Jim Meyering <jim@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-coreutils@HIDDEN
Resent-Date: Mon, 29 Jul 2019 07:26:02 +0000
Resent-Message-ID: <handler.36831.B36831.156438514314662 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 36831
X-GNU-PR-Package: coreutils
X-GNU-PR-Keywords:
To: Assaf Gordon <assafgordon@HIDDEN>
Cc: Alex Mantel <alexmantel93@HIDDEN>, 36831 <at> debbugs.gnu.org
Received: via spool by 36831-submit <at> debbugs.gnu.org id=B36831.156438514314662
(code B ref 36831); Mon, 29 Jul 2019 07:26:02 +0000
Received: (at 36831) by debbugs.gnu.org; 29 Jul 2019 07:25:43 +0000
Received: from localhost ([127.0.0.1]:47637 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1hs02R-0003oQ-63
for submit <at> debbugs.gnu.org; Mon, 29 Jul 2019 03:25:43 -0400
Received: from mail-wm1-f43.google.com ([209.85.128.43]:55130)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <meyering@HIDDEN>) id 1hs02P-0003oA-0M
for 36831 <at> debbugs.gnu.org; Mon, 29 Jul 2019 03:25:41 -0400
Received: by mail-wm1-f43.google.com with SMTP id p74so52771442wme.4
for <36831 <at> debbugs.gnu.org>; Mon, 29 Jul 2019 00:25:40 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20161025;
h=x-gm-message-state:mime-version:references:in-reply-to:from:date
:message-id:subject:to:cc;
bh=mllvLm9fUq+SDdG/Eu7c4T1Wgz9nBXBnVIHF71armlg=;
b=gzbSqoD9ZsrISHbsQh9Ptmu1t3HTNM1YbitoQnUe9uWk3NWfGljEi6zg6vPbI0BKai
qma7CU9KPZEQ4sTdQowj178U5C4KyYZrKLPBo6jWFo74RUTGbPoenXgX8rkTKQSS0p9H
NzTpZhf2eYMSRwUOk89a5pUrVri2Opic4JsSGBfmTp2K8x57h5xdseIKUeUi4gefyflV
PUZuMuqOJXOVTtlLqG1Jgj2qxYLxIYQKdR8ajbH2gpRGRTUn7WX4d8bVdbLCkdZQmzPJ
vOgym1mCHfJItu0hzNgaxNovKv1xcYxFIvo3m760ehriap5KN9yEuXDTTxUNWiMnYDHd
1CmA==
X-Gm-Message-State: APjAAAXPPPWvUKVo2otH6eoAhUQw8aStynHme4TWs739mAaCoYu/Xckx
x0dUFeLPwNl3A3m87pXiFJ930XYMK5e9sQQsNSA=
X-Google-Smtp-Source: APXvYqxjk/DOAQekEji/SmfgFC58vZgBHP3Aathmauy+y9AVpymu2hmneZQubmxQWHxVTN1vx8TPy9uhtQ91mh94Yuo=
X-Received: by 2002:a1c:a8c9:: with SMTP id
r192mr100616465wme.43.1564385135140;
Mon, 29 Jul 2019 00:25:35 -0700 (PDT)
MIME-Version: 1.0
References: <cb555fd7-efe3-3a00-5ce9-2b15e6ff5243@HIDDEN>
<20190729062807.GE2676@HIDDEN>
In-Reply-To: <20190729062807.GE2676@HIDDEN>
From: Jim Meyering <jim@HIDDEN>
Date: Mon, 29 Jul 2019 00:25:23 -0700
Message-ID: <CA+8g5KGD8rhuBfV67G3T7z34k8wuuAo7TfpoHWv0ob2WVRT-Jw@HIDDEN>
Content-Type: text/plain; charset="UTF-8"
X-Spam-Score: 0.5 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -0.5 (/)
On Sun, Jul 28, 2019 at 11:29 PM Assaf Gordon <assafgordon@HIDDEN> wrote:
...
> What do others think? If this is a desired improvement, I'll finish the
> patch with news/tests/etc.
...
> [PATCH] mv: improve ENOTEMPTY/EEXIST error message
>
> Suggested by Alex Mantel <alexmantel93@HIDDEN> in
> https://bugs.gnu.org/36831 .
>
> $ mkdir A B B/A
> $ touch A/bar B/A/foo
>
> Before:
>
> $ mv A B
> mv: cannot move 'A' to 'B/A': Directory not empty
>
> After:
>
> $ mv A B
> mv: cannot move 'A' to 'B/A': Target directory not empty
>
> * src/copy.c (copy_internal): Add special handling for ENOTEMPTY/EEXIST.
> TODO: NEWS, tests.
I like it. Thank you.
X-Loop: help-debbugs@HIDDEN
Subject: bug#36831: enhance 'directory not empty' message
Resent-From: Paul Eggert <eggert@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-coreutils@HIDDEN
Resent-Date: Mon, 29 Jul 2019 23:51:02 +0000
Resent-Message-ID: <handler.36831.B36831.156444425724646 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 36831
X-GNU-PR-Package: coreutils
X-GNU-PR-Keywords:
To: Assaf Gordon <assafgordon@HIDDEN>, Alex Mantel <alexmantel93@HIDDEN>
Cc: 36831 <at> debbugs.gnu.org
Received: via spool by 36831-submit <at> debbugs.gnu.org id=B36831.156444425724646
(code B ref 36831); Mon, 29 Jul 2019 23:51:02 +0000
Received: (at 36831) by debbugs.gnu.org; 29 Jul 2019 23:50:57 +0000
Received: from localhost ([127.0.0.1]:49322 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1hsFPt-0006PS-9l
for submit <at> debbugs.gnu.org; Mon, 29 Jul 2019 19:50:57 -0400
Received: from zimbra.cs.ucla.edu ([131.179.128.68]:40264)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <eggert@HIDDEN>) id 1hsFPq-0006PC-8y
for 36831 <at> debbugs.gnu.org; Mon, 29 Jul 2019 19:50:55 -0400
Received: from localhost (localhost [127.0.0.1])
by zimbra.cs.ucla.edu (Postfix) with ESMTP id F043516183C;
Mon, 29 Jul 2019 16:50:47 -0700 (PDT)
Received: from zimbra.cs.ucla.edu ([127.0.0.1])
by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032)
with ESMTP id VLD16h320VyR; Mon, 29 Jul 2019 16:50:47 -0700 (PDT)
Received: from localhost (localhost [127.0.0.1])
by zimbra.cs.ucla.edu (Postfix) with ESMTP id 3F279162621;
Mon, 29 Jul 2019 16:50:47 -0700 (PDT)
X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu
Received: from zimbra.cs.ucla.edu ([127.0.0.1])
by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026)
with ESMTP id mgNsavyfe-Cc; Mon, 29 Jul 2019 16:50:47 -0700 (PDT)
Received: from [192.168.0.8] (ip72-206-6-38.fv.ks.cox.net [72.206.6.38])
by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id DD8AB16183C;
Mon, 29 Jul 2019 16:50:46 -0700 (PDT)
References: <cb555fd7-efe3-3a00-5ce9-2b15e6ff5243@HIDDEN>
<20190729062807.GE2676@HIDDEN>
From: Paul Eggert <eggert@HIDDEN>
Message-ID: <4834fd10-a997-44a1-e732-b8ccc669f217@HIDDEN>
Date: Mon, 29 Jul 2019 18:50:46 -0500
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
Thunderbird/60.8.0
MIME-Version: 1.0
In-Reply-To: <20190729062807.GE2676@HIDDEN>
Content-Type: multipart/mixed; boundary="------------7420DB5B8BA501D59331D4B4"
Content-Language: en-US
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
This is a multi-part message in MIME format.
--------------7420DB5B8BA501D59331D4B4
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit
On 7/29/19 1:28 AM, Assaf Gordon wrote:
> + if (rename_errno == ENOTEMPTY || rename_errno == EEXIST)
> + {
> + error (0, 0, _("cannot move %s to %s: Target directory not empty"),
> + quoteaf_n (0, src_name), quoteaf_n (1, dst_name));
Although this is an improvement, it is not general enough, as other
errno values are relevant only for the destination. Better would be to
have a special case for errno values that matter only for the
destination, and use the existing code for errno values where we don't
know whether the problem is the source or the destination. Something
like the attached, say.
--------------7420DB5B8BA501D59331D4B4
Content-Type: text/x-patch;
name="mv.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="mv.diff"
diff --git a/src/copy.c b/src/copy.c
index 65cf65895..b1e4557e4 100644
--- a/src/copy.c
+++ b/src/copy.c
@@ -2477,9 +2477,18 @@ copy_internal (char const *src_name, char const *dst_name,
If the permissions on the directory containing the source or
destination file are made too restrictive, the rename will
fail. Etc. */
- error (0, rename_errno,
- _("cannot move %s to %s"),
- quoteaf_n (0, src_name), quoteaf_n (1, dst_name));
+ switch (errno)
+ {
+ case EDQUOT: case EEXIST: case EISDIR: case ENOSPC: case ENOTEMPTY:
+ error (0, rename_errno, "%s", quotearg_colon (dst_name));
+ break;
+
+ default:
+ error (0, rename_errno,
+ _("cannot move %s to %s"),
+ quoteaf_n (0, src_name), quoteaf_n (1, dst_name));
+ break;
+ }
forget_created (src_sb.st_ino, src_sb.st_dev);
return false;
}
--------------7420DB5B8BA501D59331D4B4--
X-Loop: help-debbugs@HIDDEN
Subject: bug#36831: enhance 'directory not empty' message
Resent-From: Assaf Gordon <assafgordon@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-coreutils@HIDDEN
Resent-Date: Wed, 31 Jul 2019 22:06:01 +0000
Resent-Message-ID: <handler.36831.B36831.156461071422481 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 36831
X-GNU-PR-Package: coreutils
X-GNU-PR-Keywords:
To: Paul Eggert <eggert@HIDDEN>
Cc: Alex Mantel <alexmantel93@HIDDEN>, 36831 <at> debbugs.gnu.org
Received: via spool by 36831-submit <at> debbugs.gnu.org id=B36831.156461071422481
(code B ref 36831); Wed, 31 Jul 2019 22:06:01 +0000
Received: (at 36831) by debbugs.gnu.org; 31 Jul 2019 22:05:14 +0000
Received: from localhost ([127.0.0.1]:53217 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1hswig-0005qW-HC
for submit <at> debbugs.gnu.org; Wed, 31 Jul 2019 18:05:14 -0400
Received: from mail-pg1-f195.google.com ([209.85.215.195]:39872)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <assafgordon@HIDDEN>) id 1hswif-0005qH-H3
for 36831 <at> debbugs.gnu.org; Wed, 31 Jul 2019 18:05:13 -0400
Received: by mail-pg1-f195.google.com with SMTP id u17so32745541pgi.6
for <36831 <at> debbugs.gnu.org>; Wed, 31 Jul 2019 15:05:13 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
h=date:from:to:cc:subject:message-id:references:mime-version
:content-disposition:in-reply-to:user-agent;
bh=N6tnpxNtkmBWqWsDjasiPbyqdagDwHT+/fx4J7c71/c=;
b=F4RfG4K+pB/fDwep9679aHrSw6zGLdZu5g2uNJcpWkvh8iiiQAbE6JHany89KcJe6K
KfWm7ZdU2bgh+0+r83J91PSFrykvpEu+YEqUC8H+VfcC0/CrSZr/4mVowDW1NNaTV7h0
mk1JEEq8Hl82IERVHglpVPz4JxSnZQUkxMN+DcGE7ultymnA+S7s2F/RvMzcnU2DnAwK
qhVrnEhpkl/9E2nLeybd5FccSDP4lzJTKEfPneZeVeXS/0dj09QN3N02rSKuTcM3jqu0
TSMKfykEdY1xvE0zRzXgOcSKlO+WKsPY5x4Vk7w1EPcEYITX/tqEaBXPZYM6NRgZWacf
3Qrg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20161025;
h=x-gm-message-state:date:from:to:cc:subject:message-id:references
:mime-version:content-disposition:in-reply-to:user-agent;
bh=N6tnpxNtkmBWqWsDjasiPbyqdagDwHT+/fx4J7c71/c=;
b=PGPhaiywfTgVHSd5M7FSZlNkMIXzAIi2NNMPWZkI8TqZcNNOfdLD2k1G9KIDDp9Go9
SxsJ2JbKCuSyB30jj0rWDtGSphP2BY3VnrjvsfnCxdVQjD3faxLjymIt+n2gdT/WULHN
3tqOk/djse8BD8zH1QumaiBldnvPj1dR8lLpDZq3hxuCBoR0+spq17P3nHQjDiPa2RiQ
wnSgEFFA3dfW52JXsjenq/YU5mja5PwavF5EuvE1oNFm8MCBMJelgPVlxd4etFbOdyut
PyV44kCJG5U7LFH5U3J8DDERnr/jnTkI/sLyDMMxNKTNOxB+1Rjk2G6F61rQZRi93ZEy
oo6A==
X-Gm-Message-State: APjAAAUawnCdroSMG+6K+3gc45ay9PkEQ4tQMHXwQLNa0iI6V2K27j6+
+W3xXPyV1DjvfmiAswaZuuQ=
X-Google-Smtp-Source: APXvYqx61lprukHvYAcQstAaodWX+9KBytDT+e1cRiU3k2ZBDcZUEl/NeZu2l16GIx6bO5cQfgWOJQ==
X-Received: by 2002:a63:5c07:: with SMTP id q7mr63245653pgb.436.1564610707635;
Wed, 31 Jul 2019 15:05:07 -0700 (PDT)
Received: from tomato (moose.housegordon.com. [184.68.105.38])
by smtp.gmail.com with ESMTPSA id 30sm3612235pjk.17.2019.07.31.15.05.06
(version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256);
Wed, 31 Jul 2019 15:05:06 -0700 (PDT)
Received: by tomato (Postfix, from userid 1000)
id 713D368431D; Wed, 31 Jul 2019 16:05:05 -0600 (MDT)
Date: Wed, 31 Jul 2019 16:05:05 -0600
From: Assaf Gordon <assafgordon@HIDDEN>
Message-ID: <20190731220505.GA9062@HIDDEN>
References: <cb555fd7-efe3-3a00-5ce9-2b15e6ff5243@HIDDEN>
<20190729062807.GE2676@HIDDEN>
<4834fd10-a997-44a1-e732-b8ccc669f217@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <4834fd10-a997-44a1-e732-b8ccc669f217@HIDDEN>
User-Agent: Mutt/1.11.4 (2019-03-13)
X-Spam-Score: 0.0 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
Hello Paul,
On Mon, Jul 29, 2019 at 06:50:46PM -0500, Paul Eggert wrote:
> On 7/29/19 1:28 AM, Assaf Gordon wrote:
> > + if (rename_errno == ENOTEMPTY || rename_errno == EEXIST)
> > + {
> > + error (0, 0, _("cannot move %s to %s: Target directory not empty"),
> > + quoteaf_n (0, src_name), quoteaf_n (1, dst_name));
>
> Although this is an improvement, it is not general enough, as other errno
> values are relevant only for the destination. Better would be to have a
> special case for errno values that matter only for the destination, and use
> the existing code for errno values where we don't know whether the problem
> is the source or the destination. Something like the attached, say.
> + case EDQUOT: case EEXIST: case EISDIR: case ENOSPC: case ENOTEMPTY:
> + error (0, rename_errno, "%s", quotearg_colon (dst_name));
> + break;
> +
Thanks for the review.
At the risk of bikeshedding, I'd like to argue for the prior method.
While it is not general enough, I think it provides a clearer error message.
For example, with the more general implementation the errors would be:
$ mv A B
mv: B/A: Directory not empty
$ mv A B
mv: B/A: No space left on device
$ mv A B
mv: B/A: Quota exceeded
In the first case,
I think this error is potentially more confusing than
before: while it doesn't mention the source directory, it also doesn't
say "cannot move" - so it is only implied it is an error (an
inexperienced user might dismiss this as a warning).
Also, it could be that there will be a source directory named very similarly
to the destination directory, and from a quick glace it would not be easy to
understand what happened.
An explicit error explicitly saying "cannot move", and mention the source and
destination, and also "blames" the target directory seems the most
user-friendly and least ambiguous.
---
For the second and third cases,
"No space" and "Quota exceeded" seem to me to always relate to the
destination, and I don't think users get confused about those
(other opinions of course welcomed).
---
Your patch also added "EISDIR", for which rename(2) says:
"newpath is an existing directory, but oldpath is not a directory."
But I don't think this error can happen with gnu mv.
If we try to move a file onto a directory, we get:
$ mkdir C C/D ; touch D
$ mv D C
mv: cannot overwrite directory 'C/D' with non-directory
And this case is specifically handled in copy.c line 2131, before
calling rename(2) (and also this is an example of a custom error
message instead of using stock libc messages).
---
Happy to hear your opinion,
- assaf
X-Loop: help-debbugs@HIDDEN
Subject: bug#36831: enhance 'directory not empty' message
Resent-From: Bernhard Voelker <mail@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-coreutils@HIDDEN
Resent-Date: Wed, 31 Jul 2019 22:39:02 +0000
Resent-Message-ID: <handler.36831.B36831.156461271325946 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 36831
X-GNU-PR-Package: coreutils
X-GNU-PR-Keywords:
To: Assaf Gordon <assafgordon@HIDDEN>, Paul Eggert <eggert@HIDDEN>
Cc: Alex Mantel <alexmantel93@HIDDEN>, 36831 <at> debbugs.gnu.org
Received: via spool by 36831-submit <at> debbugs.gnu.org id=B36831.156461271325946
(code B ref 36831); Wed, 31 Jul 2019 22:39:02 +0000
Received: (at 36831) by debbugs.gnu.org; 31 Jul 2019 22:38:33 +0000
Received: from localhost ([127.0.0.1]:53239 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1hsxEu-0006kQ-Tm
for submit <at> debbugs.gnu.org; Wed, 31 Jul 2019 18:38:33 -0400
Received: from mout.kundenserver.de ([217.72.192.75]:55745)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <mail@HIDDEN>) id 1hsxEs-0006kD-D3
for 36831 <at> debbugs.gnu.org; Wed, 31 Jul 2019 18:38:30 -0400
Received: from [192.168.101.10] ([91.1.209.190]) by mrelayeu.kundenserver.de
(mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id
1Mlvmv-1iaquN3ivz-00j4AK; Thu, 01 Aug 2019 00:38:13 +0200
References: <cb555fd7-efe3-3a00-5ce9-2b15e6ff5243@HIDDEN>
<20190729062807.GE2676@HIDDEN>
<4834fd10-a997-44a1-e732-b8ccc669f217@HIDDEN>
<20190731220505.GA9062@HIDDEN>
From: Bernhard Voelker <mail@HIDDEN>
Openpgp: preference=signencrypt
Autocrypt: addr=mail@HIDDEN; prefer-encrypt=mutual; keydata=
mQENBFPirzMBCACyzYldTjQ4ufFOkByY5Nn5USb5GFoL48nWBwNHjd9KUbtRRNlQiPNKd6hK
Gvd3BGi5aoFKA4ytfRk6jbAbW3jVb3R8wYaV08mOy4KVEKxqN4bxsXlMjNChXVR+rtKDmfI+
oPTL+cPH2X6gW4W02IRbVw0uUhNm6zEedC/gNrY/mTlf1enZ46jxZ7BTUZaG+kx38UMISIMB
zSzLRtdkwgmHj4jS3p1fF2cwRqLclIfMjKGpbNFPEXeXKWrCLcqHw78795eAR9q0YvrDkfIn
GdDBwfb3VM4NdulwIFzvYZMSXvSbbyPLB5YkHU5aAWQHUse4WlfT5ccDpbzUYldRAvF9ABEB
AAG0K0Jlcm5oYXJkIFZvZWxrZXIgPG1haWxAYmVybmhhcmQtdm9lbGtlci5kZT6JATkEEwEC
ACMFAlPirzMCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIXgAAKCRBGUC73lpFxle5wCACC
dbs0QaJ0vR3Sff2cKdTk41rUq3YfWngsR///IOU0C5DdkePmCnJE/lUsUy0LRTxcUDLxQR+x
QHU8ssRT0JUO9726dI3miy36UdsgmBYaOtLvQcidGmW1R7o0PYYf04+TFtyqKgngOUBPpMgR
6o4UsQxy/OD4bN1WDqOgIjL+D/qJpkKmgp6L6+hhaBCpiOFKRmmV7YyQ3SqVlfQNiHs5ZtkR
nXpIjgZARV+GllKucI17bO0CGmTJZ1tstVy0+W3DQT1lbBkTTc++5LONM99D3jjn23l1ocOp
folR53F7I4cb2RNfT23v1I59RH37lB9wMOqrKj0UjYAC2YoPGQ3BuQENBFPirzMBCADXLWWp
QihBldY6reca8ZKdc3T9qXEOa3akE3DWKztIBmNJhtYOjmpLYajQTkGa7UoJTnbmZE2Rn6ZE
oNnvb0gcFNAIcY95KOI+bjOR8HEgh4cx2REXh6L6olIgyXqt/KFusE4wtVZAFxZl+30HzN6n
D+1HvrjXxPJRX6MsIYOYyyX9/6OofwJK6QHODYGp8WL2olHDnmsXg4AT6Wlr7qKpKrQELlcF
R4xkvdmgL/Ghw/tK0yJTxMIcewCCZWLPOXRmFRbvAadZWPAgVsJ63siNyUlVnVMSzDgTJl+s
l/DMabXpqrJQx3/1Yy6mTaDs3XZT/wmBKaTLXx/LByaPxQQ7ABEBAAGJAR8EGAECAAkFAlPi
rzMCGwwACgkQRlAu95aRcZWVPwgAqZT6iTXkoP37wYb41323RzhBcJ8JSk4cyBDBUXX0lMrM
3qhiClKG7phpxVdu817Gwc6Hsecg7FfjQAV8MHQ0ZFeEFdk3b2rKBqfsStc+h49/xF3Fb+if
CzR9qeQF82fMSxkg18++7hMcHCMO/hPZ/Q0xRi+lrSr2QKDJQuLzSyVU14TxrCkevZjEhtma
VNvcJlJzCbiBXee9Fpc5jITUXPFG8E8dxqo1n+duOyIMgozrAnzP7X5V/Ob/Ozf/aGGX9+Jd
inyfCX18nWcHALKMU/36Eua/ylalf/2c2YkBp9KCLVmGgPkUgW52EeRPgroIsiwu+rwCSV6Z
UyCJ+OymCg==
Message-ID: <fb7c3ddc-43c3-0dbb-5cb0-b80bfc384155@HIDDEN>
Date: Thu, 1 Aug 2019 00:38:10 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
Thunderbird/60.8.0
MIME-Version: 1.0
In-Reply-To: <20190731220505.GA9062@HIDDEN>
Content-Type: text/plain; charset=utf-8
Content-Language: en-US
Content-Transfer-Encoding: 7bit
X-Provags-ID: V03:K1:yq3w3P4MGRA2dOKyzgd2RDGQYzD1yfB92ub0s/+0e+mObSWYNYi
8FVhUd/KR60hYN4u2SnA2R6IPYqQkmbKTu2wgSe+YONdBMwjeJkuHPGBK8ucu5lZrMzTHzX
i6+ecj4xlxrq8vtcT3sGyGbyKzkztzVzyTZ692Xagbg+MyYrcvjIcdnL/Mqz/UpjzrM5MzJ
nMo7AQ1Si7DqpGWVksdjA==
X-Spam-Flag: NO
X-UI-Out-Filterresults: notjunk:1;V03:K0:0xPC1gyJ6vk=:khpnr6RUQjkikm71z0MdpK
M21tAX0zezkX43I0uavq9rv7W3EJ4A9iZ8Trw/xtCFG6NgHKC1wDbcu694LCoRYe01ASKMxfN
LwvKy+sfHDb+JqVH/uFJZp2WUYfZFhpnfynlRhG3wGzsptazAPUm6nZX8y9gRmfS+TjP+3FdJ
aZlDJoxLzl9+QFwssSF5D8tVl/OeMElFlMyjtkKk5TM+W1UIdDpGF4ALlWIZhjnco/Doq8U7W
4iuFaUnJIZ0g3HbzZ880pPRt9Pvbu3WCjk0zOwZxuuhseDD+mInZ+9rn3Dk08BVDE6Rhr2S2x
hs6g0kuAGUgTh/G1o75/t4SAtqFlEzTxcVF68ZCibV8vz8o2kgQBsVVG9nii2qwezvSsOcSR3
VSP0tZ2Z4toNZmHIIwg+BqtLOte+W3dpzi9h9CGy3O+KceJtRvOnoYB1W4hTb6YqreexWyXr8
h3DmMy+gOk6Xq3TTLzX5LolOalQtVUxVYsBXHBWQ1TvFpdzSVBf0gkONAe/IuKb6ohNqxVLAU
Fa/tTe2T0tItDdB1Q0FZo0D4P5Hkn/ci/qmuF1zxUasVqkk8tmaj6KE3+nJJkHF2jv9qCLrtr
ktM8mnhZiDvqkHwaRbcaDN9fCye3pMgXpUh6+/J/5w50KI8qLbMowzMT1ut59j+DZJ/hV+ix3
CczbLtJj3nJKupy5Uj3T9w9VROcVBAg+wSKixNQALjSHoZj65MkqKroeCfyafdYfwBLSrMQHm
sEoelvTT94M4rKr5lLgr/7yxS0VU00sYTgl8RPgbwR6IkxekABKzhi8AIBhUaJJ03ioADStNd
jk4rM5L
X-Spam-Score: 0.0 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
On 8/1/19 12:05 AM, Assaf Gordon wrote:
> Happy to hear your opinion,
+1
Including the full context about an error is essential:
- what did the tool try to do (at that point)?
- what was the problem? (e.g. ENOTEMPTY)
- where was the problem: src or dst?
Thanks & have a nice day,
Berny
X-Loop: help-debbugs@HIDDEN
Subject: bug#36831: enhance 'directory not empty' message
Resent-From: Paul Eggert <eggert@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-coreutils@HIDDEN
Resent-Date: Thu, 01 Aug 2019 03:04:02 +0000
Resent-Message-ID: <handler.36831.B36831.15646286342283 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 36831
X-GNU-PR-Package: coreutils
X-GNU-PR-Keywords:
To: Assaf Gordon <assafgordon@HIDDEN>
Cc: Alex Mantel <alexmantel93@HIDDEN>, 36831 <at> debbugs.gnu.org
Received: via spool by 36831-submit <at> debbugs.gnu.org id=B36831.15646286342283
(code B ref 36831); Thu, 01 Aug 2019 03:04:02 +0000
Received: (at 36831) by debbugs.gnu.org; 1 Aug 2019 03:03:54 +0000
Received: from localhost ([127.0.0.1]:53342 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1ht1Ni-0000ak-8e
for submit <at> debbugs.gnu.org; Wed, 31 Jul 2019 23:03:54 -0400
Received: from zimbra.cs.ucla.edu ([131.179.128.68]:58860)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <eggert@HIDDEN>) id 1ht1Ng-0000aX-Ha
for 36831 <at> debbugs.gnu.org; Wed, 31 Jul 2019 23:03:53 -0400
Received: from localhost (localhost [127.0.0.1])
by zimbra.cs.ucla.edu (Postfix) with ESMTP id 7BCB81626EF;
Wed, 31 Jul 2019 20:03:46 -0700 (PDT)
Received: from zimbra.cs.ucla.edu ([127.0.0.1])
by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032)
with ESMTP id QJOVkuql1My5; Wed, 31 Jul 2019 20:03:45 -0700 (PDT)
Received: from localhost (localhost [127.0.0.1])
by zimbra.cs.ucla.edu (Postfix) with ESMTP id B66071626FE;
Wed, 31 Jul 2019 20:03:45 -0700 (PDT)
X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu
Received: from zimbra.cs.ucla.edu ([127.0.0.1])
by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026)
with ESMTP id YiJDLpbTt1hf; Wed, 31 Jul 2019 20:03:45 -0700 (PDT)
Received: from [192.168.1.9] (cpe-23-242-74-103.socal.res.rr.com
[23.242.74.103])
by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id 8DB0D1626EF;
Wed, 31 Jul 2019 20:03:45 -0700 (PDT)
References: <cb555fd7-efe3-3a00-5ce9-2b15e6ff5243@HIDDEN>
<20190729062807.GE2676@HIDDEN>
<4834fd10-a997-44a1-e732-b8ccc669f217@HIDDEN>
<20190731220505.GA9062@HIDDEN>
From: Paul Eggert <eggert@HIDDEN>
Organization: UCLA Computer Science Department
Message-ID: <f9b94be4-13da-26cd-710e-2046030f8449@HIDDEN>
Date: Wed, 31 Jul 2019 20:03:45 -0700
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
Thunderbird/60.8.0
MIME-Version: 1.0
In-Reply-To: <20190731220505.GA9062@HIDDEN>
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Language: en-US
Content-Transfer-Encoding: 7bit
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
Assaf Gordon wrote:
> An explicit error explicitly saying "cannot move", and mention the source and
> destination, and also "blames" the target directory seems the most
> user-friendly and least ambiguous.
Sure, but that handles only the ENOTEMPTY/EEXIST case. How would you handle the
EDQUOT, EISDIR, and ENOSPC cases? Will you invent a separate diagnostic for each
case, or just treat them as in my proposed patch? I assume the latter, but
either way I'd like to see a patch that handles these properly too. Also, please
handle ETXTBUSY while you're at it (sorry, I missed that one).
> For the second and third cases,
> "No space" and "Quota exceeded" seem to me to always relate to the
> destination, and I don't think users get confused about those
> (other opinions of course welcomed).
What's obvious to experts like us is not always obvious to users. If users get
confused by the current diagnostic for ENOTEMPTY/EEXIST, I don't see why they
wouldn't also get confused for ETXTBUSY etc.
> Your patch also added "EISDIR", for which rename(2) says:
> "newpath is an existing directory, but oldpath is not a directory."
>
> But I don't think this error can happen with gnu mv.
It can, as a result of a race condition if some other process is mutating the
file system while 'mv' is running. Admittedly unlikely, but we might as well
improve this errno value while we're improving the others.
X-Loop: help-debbugs@HIDDEN
Subject: bug#36831: enhance 'directory not empty' message
Resent-From: Erik Auerswald <auerswal@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-coreutils@HIDDEN
Resent-Date: Thu, 01 Aug 2019 08:33:02 +0000
Resent-Message-ID: <handler.36831.B.156464834432014 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 36831
X-GNU-PR-Package: coreutils
X-GNU-PR-Keywords:
To: 36831 <at> debbugs.gnu.org
X-Debbugs-Original-To: bug-coreutils@HIDDEN
Received: via spool by submit <at> debbugs.gnu.org id=B.156464834432014
(code B ref -1); Thu, 01 Aug 2019 08:33:02 +0000
Received: (at submit) by debbugs.gnu.org; 1 Aug 2019 08:32:24 +0000
Received: from localhost ([127.0.0.1]:53449 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1ht6Vb-0008KI-W0
for submit <at> debbugs.gnu.org; Thu, 01 Aug 2019 04:32:24 -0400
Received: from lists.gnu.org ([209.51.188.17]:53653)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <auerswal@HIDDEN>) id 1ht6Va-0008KA-MM
for submit <at> debbugs.gnu.org; Thu, 01 Aug 2019 04:32:23 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:53184)
by lists.gnu.org with esmtp (Exim 4.86_2)
(envelope-from <auerswal@HIDDEN>) id 1ht6VZ-000127-Ga
for bug-coreutils@HIDDEN; Thu, 01 Aug 2019 04:32:22 -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.8 required=5.0 tests=BAYES_50 autolearn=disabled
version=3.3.2
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
(envelope-from <auerswal@HIDDEN>) id 1ht6VY-0007Mk-Fy
for bug-coreutils@HIDDEN; Thu, 01 Aug 2019 04:32:21 -0400
Received: from mailgw1.uni-kl.de ([2001:638:208:120::220]:54952)
by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32)
(Exim 4.71) (envelope-from <auerswal@HIDDEN>)
id 1ht6VY-0007Jz-8O
for bug-coreutils@HIDDEN; Thu, 01 Aug 2019 04:32:20 -0400
Received: from sushi.unix-ag.uni-kl.de (sushi.unix-ag.uni-kl.de
[IPv6:2001:638:208:ef34:0:ff:fe00:65])
by mailgw1.uni-kl.de (8.14.4/8.14.4/Debian-8+deb8u2) with ESMTP id
x718W9oU186561
(version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT)
for <bug-coreutils@HIDDEN>; Thu, 1 Aug 2019 10:32:09 +0200
Received: from sushi.unix-ag.uni-kl.de (ip6-localhost [IPv6:::1])
by sushi.unix-ag.uni-kl.de (8.14.4/8.14.4/Debian-4+deb7u1) with ESMTP id
x718W9bE024290
(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO)
for <bug-coreutils@HIDDEN>; Thu, 1 Aug 2019 10:32:09 +0200
Received: (from auerswal@localhost)
by sushi.unix-ag.uni-kl.de (8.14.4/8.14.4/Submit) id x718W9o3024289
for bug-coreutils@HIDDEN; Thu, 1 Aug 2019 10:32:09 +0200
Date: Thu, 1 Aug 2019 10:32:09 +0200
From: Erik Auerswald <auerswal@HIDDEN>
Message-ID: <20190801083209.GB20813@HIDDEN>
Mail-Followup-To: Erik Auerswald <auerswal@HIDDEN>,
bug-coreutils@HIDDEN
References: <cb555fd7-efe3-3a00-5ce9-2b15e6ff5243@HIDDEN>
<20190729062807.GE2676@HIDDEN>
<4834fd10-a997-44a1-e732-b8ccc669f217@HIDDEN>
<20190731220505.GA9062@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20190731220505.GA9062@HIDDEN>
User-Agent: Mutt/1.5.21 (2010-09-15)
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Received-From: 2001:638:208:120::220
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
Hi,
On Wed, Jul 31, 2019 at 04:05:05PM -0600, Assaf Gordon wrote:
> On Mon, Jul 29, 2019 at 06:50:46PM -0500, Paul Eggert wrote:
> > On 7/29/19 1:28 AM, Assaf Gordon wrote:
> > > + if (rename_errno == ENOTEMPTY || rename_errno == EEXIST)
> > > + {
> > > + error (0, 0, _("cannot move %s to %s: Target directory not empty"),
> > > + quoteaf_n (0, src_name), quoteaf_n (1, dst_name));
> >
> > Although this is an improvement, it is not general enough, as other errno
> > values are relevant only for the destination. Better would be to have a
> > special case for errno values that matter only for the destination, and use
> > the existing code for errno values where we don't know whether the problem
> > is the source or the destination. Something like the attached, say.
>
> > + case EDQUOT: case EEXIST: case EISDIR: case ENOSPC: case ENOTEMPTY:
> > + error (0, rename_errno, "%s", quotearg_colon (dst_name));
> > + break;
> > +
>
> [...]
> An explicit error explicitly saying "cannot move", and mention the source and
> destination, and also "blames" the target directory seems the most
> user-friendly and least ambiguous.
I agree with this reasoning and prefer Assaf's error message improvement.
Thanks,
Erik
--
If you're willing to restrict the flexibility of your approach,
you can almost always do something better.
-- John Carmack
X-Loop: help-debbugs@HIDDEN
Subject: bug#36831: enhance 'directory not empty' message
Resent-From: Assaf Gordon <assafgordon@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-coreutils@HIDDEN
Resent-Date: Thu, 01 Aug 2019 10:16:01 +0000
Resent-Message-ID: <handler.36831.B36831.156465451317060 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 36831
X-GNU-PR-Package: coreutils
X-GNU-PR-Keywords:
To: Paul Eggert <eggert@HIDDEN>
Cc: Alex Mantel <alexmantel93@HIDDEN>, 36831 <at> debbugs.gnu.org
Received: via spool by 36831-submit <at> debbugs.gnu.org id=B36831.156465451317060
(code B ref 36831); Thu, 01 Aug 2019 10:16:01 +0000
Received: (at 36831) by debbugs.gnu.org; 1 Aug 2019 10:15:13 +0000
Received: from localhost ([127.0.0.1]:53502 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1ht876-0004R5-Lr
for submit <at> debbugs.gnu.org; Thu, 01 Aug 2019 06:15:13 -0400
Received: from mail-pl1-f194.google.com ([209.85.214.194]:45553)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <assafgordon@HIDDEN>) id 1ht874-0004Qo-7a
for 36831 <at> debbugs.gnu.org; Thu, 01 Aug 2019 06:15:10 -0400
Received: by mail-pl1-f194.google.com with SMTP id y8so32019893plr.12
for <36831 <at> debbugs.gnu.org>; Thu, 01 Aug 2019 03:15:10 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
h=date:from:to:cc:subject:message-id:references:mime-version
:content-disposition:in-reply-to:user-agent;
bh=kkdAzQzPi5fptgcgtKih/G2uHBrtM9cQBf8cEqWANdQ=;
b=vh8xBgD8/3P2AZUA+X5kdX9TU3vSS4vKnkSek4kpXtHMM7hZQSutjezmpTidRWvWXw
t7T71x5gSQl2wzS4se5RoC5Mh29Cax/Pb4bBMdOcVme1TsbFh1gerzAwvotOFalCdPpq
1jmF+KzbkCbhNxm16P7thLYNsk6rBKqhP2p2cF3rCwsMib2XoDTodY/F9iAg10pioXS7
cZktVgPQC/+DXf1+HrleT58cMI+/IPpCOd2X9PnuQZ290DnN49BmSqnZMUhRyyMadX3q
Ai5qAkmxoP2Bg7jIhBaf5RF8rgWhwwng3SbU196gW1z6YSaxy36GgpMxE9U7OzYo7/4Q
wbmg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20161025;
h=x-gm-message-state:date:from:to:cc:subject:message-id:references
:mime-version:content-disposition:in-reply-to:user-agent;
bh=kkdAzQzPi5fptgcgtKih/G2uHBrtM9cQBf8cEqWANdQ=;
b=QRZcBowOL9vZOelZ/QW7GS2LAwG41H36h08D2yWWXozEa2bNZRlJW25r/1jpXxUxEr
rGXivvJpfIAQRZvR5Vciber0IQOhd0PCdcgC+LommEx/U2nYnBgO3xx9vlkIhRjrcy3c
x6szhFTzrDxaYatPySsBewokREXPA3+diE4g1X+eRCSQUHPuUoRE9QbKOhsjCOmMRDkO
98r+rPxO991Xndbtg5Ns+CiigigkEF7EjJpGVtO1kxgP2krYo6McnNc9Mjkuj9vHrsJ/
zXZhaET/yw6T6XKo+qM8ztamEDWM74AQ3EFUaSOTYOXWHrJjQkQqV5xMeTd6YtuDpil1
GjnA==
X-Gm-Message-State: APjAAAU1vJDqroeXUSpa1d0tD7p1tBOcZ70zl7qZaZ3jlYEvsYAqzEGg
V83+Hx4bske4MVGtG/4UN2s=
X-Google-Smtp-Source: APXvYqzo6Qw9sStx9gicAJExAwGglZnco3ZA9afHk05fS21aTRSYo2Ijq/t8X1czStyA5WCrWA8eGg==
X-Received: by 2002:a17:902:788f:: with SMTP id
q15mr127289352pll.236.1564654504169;
Thu, 01 Aug 2019 03:15:04 -0700 (PDT)
Received: from tomato (moose.housegordon.com. [184.68.105.38])
by smtp.gmail.com with ESMTPSA id u1sm67673463pgi.28.2019.08.01.03.15.01
(version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256);
Thu, 01 Aug 2019 03:15:02 -0700 (PDT)
Received: by tomato (Postfix, from userid 1000)
id 06889681985; Thu, 1 Aug 2019 04:15:01 -0600 (MDT)
Date: Thu, 1 Aug 2019 04:15:00 -0600
From: Assaf Gordon <assafgordon@HIDDEN>
Message-ID: <20190801101500.GB15401@HIDDEN>
References: <cb555fd7-efe3-3a00-5ce9-2b15e6ff5243@HIDDEN>
<20190729062807.GE2676@HIDDEN>
<4834fd10-a997-44a1-e732-b8ccc669f217@HIDDEN>
<20190731220505.GA9062@HIDDEN>
<f9b94be4-13da-26cd-710e-2046030f8449@HIDDEN>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="+pHx0qQiF2pBVqBT"
Content-Disposition: inline
In-Reply-To: <f9b94be4-13da-26cd-710e-2046030f8449@HIDDEN>
User-Agent: Mutt/1.11.4 (2019-03-13)
X-Spam-Score: 0.0 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
--+pHx0qQiF2pBVqBT
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Hello,
On Wed, Jul 31, 2019 at 08:03:45PM -0700, Paul Eggert wrote:
> Assaf Gordon wrote:
> > An explicit error explicitly saying "cannot move", and mention the source and
> > destination, and also "blames" the target directory seems the most
> > user-friendly and least ambiguous.
>
> Sure, but that handles only the ENOTEMPTY/EEXIST case. How would you handle
> the EDQUOT, EISDIR, and ENOSPC cases? Will you invent a separate diagnostic
> for each case, or just treat them as in my proposed patch? I assume the
> latter, but either way I'd like to see a patch that handles these properly
> too. Also, please handle ETXTBUSY while you're at it (sorry, I missed that
> one).
>
> > For the second and third cases,
> > "No space" and "Quota exceeded" seem to me to always relate to the
> > destination, and I don't think users get confused about those
> > (other opinions of course welcomed).
>
> What's obvious to experts like us is not always obvious to users. If users
> get confused by the current diagnostic for ENOTEMPTY/EEXIST, I don't see why
> they wouldn't also get confused for ETXTBUSY etc.
>
> > Your patch also added "EISDIR", for which rename(2) says:
> > "newpath is an existing directory, but oldpath is not a directory."
> >
> > But I don't think this error can happen with gnu mv.
>
> It can, as a result of a race condition if some other process is mutating
> the file system while 'mv' is running. Admittedly unlikely, but we might as
> well improve this errno value while we're improving the others.
All good points.
Please see attached updated version.
It does add explicit error string for each error code, but I hope the
implementation is reasonable and easy to maintain and translate.
-assaf
--+pHx0qQiF2pBVqBT
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="0001-mv-improve-error-messages-when-target-directory-is-a.patch"
From 8ee71b24d74d7cfe81f151de430d38935cf04675 Mon Sep 17 00:00:00 2001
From: Assaf Gordon <assafgordon@HIDDEN>
Date: Mon, 29 Jul 2019 00:23:20 -0600
Subject: [PATCH] mv: improve error messages when target directory is at fault
Suggested by Alex Mantel <alexmantel93@HIDDEN> in
https://bugs.gnu.org/36831 .
$ mkdir A B B/A
$ touch A/bar B/A/foo
Before:
$ mv A B
mv: cannot move 'A' to 'B/A': Directory not empty
After:
$ mv A B
mv: cannot move 'A' to 'B/A': Target directory not empty
The following errors are handled:
EDQUOT, EEXIST, ENOTEMPTY, EISDIR, ENOSPC, ETXTBSY.
* src/copy.c (copy_internal): Print custom messages for errors
that explicitly fault the target directory.
(strerror_target): New function, return custom and translatable error
messages.
* tests/mv/dir2dir.sh: Adjust expected error message.
* NEWS: Mention change.
---
NEWS | 6 +++++
src/copy.c | 56 ++++++++++++++++++++++++++++++++++++++++++---
tests/mv/dir2dir.sh | 6 ++---
3 files changed, 62 insertions(+), 6 deletions(-)
diff --git a/NEWS b/NEWS
index fd0543351..4ec4d0df0 100644
--- a/NEWS
+++ b/NEWS
@@ -44,6 +44,12 @@ GNU coreutils NEWS -*- outline -*-
stat(1) also supports a new --cached= option to control cache
coherency of file system attributes, useful on network file systems.
+** Improvements
+
+ rm now prints clearer error messages when a failure relates to the
+ target directory (e.g., "Target directory is not empty" instead of
+ "Directory not empty").
+
* Noteworthy changes in release 8.31 (2019-03-10) [stable]
diff --git a/src/copy.c b/src/copy.c
index 65cf65895..9cf02ad9c 100644
--- a/src/copy.c
+++ b/src/copy.c
@@ -1867,6 +1867,38 @@ source_is_dst_backup (char const *srcbase, struct stat const *src_st,
return dst_back_status == 0 && SAME_INODE (*src_st, dst_back_sb);
}
+static char*
+strerror_target (int e)
+{
+ /* TRANSLATORS: These strings should mimick libc's standard
+ error messages (from strerror(3)), but explicitly mention
+ the fault is with the target directory. */
+ switch (errno)
+ {
+ case EDQUOT:
+ return _("Disk quota exceeded on target device");
+ case EEXIST:
+ case ENOTEMPTY:
+ return _("Target directory not empty");
+ case EISDIR:
+ return _("Tried to overwrite a directory with a file");
+ case ENOSPC:
+ return _("No space left on target device");
+ case ETXTBSY:
+ /* NOTE: The error is "Text file busy" - but "text" in that context
+ refers to "text segment" of an executable file (as opposed to
+ "data segment" and "BSS segment").
+
+ This error message is meant for users, and 'text file' can be easily
+ confused with an actual text file (i.e., one containing only ASCII
+ characters. Thus, say 'executable' instead of 'text'.*/
+ return _("Target executable file is busy");
+ default:
+ assert (0);
+ }
+}
+
+
/* Copy the file SRC_NAME to the file DST_NAME. The files may be of
any type. NEW_DST should be true if the file DST_NAME cannot
exist because its parent directory was just created; NEW_DST should
@@ -2477,9 +2509,27 @@ copy_internal (char const *src_name, char const *dst_name,
If the permissions on the directory containing the source or
destination file are made too restrictive, the rename will
fail. Etc. */
- error (0, rename_errno,
- _("cannot move %s to %s"),
- quoteaf_n (0, src_name), quoteaf_n (1, dst_name));
+
+ switch (errno)
+ {
+ case EDQUOT:
+ case EEXIST:
+ case ENOTEMPTY:
+ case EISDIR:
+ case ENOSPC:
+ case ETXTBSY:
+ error (0, 0,
+ _("cannot move %s to %s: %s"),
+ quoteaf_n (0, src_name), quoteaf_n (1, dst_name),
+ strerror_target (rename_errno));
+ break;
+
+ default:
+ error (0, rename_errno,
+ _("cannot move %s to %s"),
+ quoteaf_n (0, src_name), quoteaf_n (1, dst_name));
+ break;
+ }
forget_created (src_sb.st_ino, src_sb.st_dev);
return false;
}
diff --git a/tests/mv/dir2dir.sh b/tests/mv/dir2dir.sh
index 6455386b9..62ed8ce46 100755
--- a/tests/mv/dir2dir.sh
+++ b/tests/mv/dir2dir.sh
@@ -30,11 +30,11 @@ touch a/t/f || framework_failure_
mv b/t a 2> out && fail=1
# Accept any of these: EEXIST, ENOTEMPTY, EBUSY.
-sed 's/: File exists/: Directory not empty/'<out>o1;mv o1 out
-sed 's/: Device or resource busy/: Directory not empty/'<out>o1;mv o1 out
+sed 's/: File exists/: Target directory not empty/'<out>o1;mv o1 out
+sed 's/: Device or resource busy/: Target directory not empty/'<out>o1;mv o1 out
cat <<\EOF > exp || framework_failure_
-mv: cannot move 'b/t' to 'a/t': Directory not empty
+mv: cannot move 'b/t' to 'a/t': Target directory not empty
EOF
compare exp out || fail=1
--
2.20.1
--+pHx0qQiF2pBVqBT--
X-Loop: help-debbugs@HIDDEN
Subject: bug#36831: enhance 'directory not empty' message
Resent-From: Paul Eggert <eggert@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-coreutils@HIDDEN
Resent-Date: Thu, 01 Aug 2019 23:00:02 +0000
Resent-Message-ID: <handler.36831.B36831.15647003446567 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 36831
X-GNU-PR-Package: coreutils
X-GNU-PR-Keywords:
To: Assaf Gordon <assafgordon@HIDDEN>
Cc: Alex Mantel <alexmantel93@HIDDEN>, 36831 <at> debbugs.gnu.org
Received: via spool by 36831-submit <at> debbugs.gnu.org id=B36831.15647003446567
(code B ref 36831); Thu, 01 Aug 2019 23:00:02 +0000
Received: (at 36831) by debbugs.gnu.org; 1 Aug 2019 22:59:04 +0000
Received: from localhost ([127.0.0.1]:55624 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1htK2K-0001hr-2m
for submit <at> debbugs.gnu.org; Thu, 01 Aug 2019 18:59:04 -0400
Received: from zimbra.cs.ucla.edu ([131.179.128.68]:32940)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <eggert@HIDDEN>) id 1htK2H-0001hM-Ft
for 36831 <at> debbugs.gnu.org; Thu, 01 Aug 2019 18:59:02 -0400
Received: from localhost (localhost [127.0.0.1])
by zimbra.cs.ucla.edu (Postfix) with ESMTP id DD2EE16186B;
Thu, 1 Aug 2019 15:58:54 -0700 (PDT)
Received: from zimbra.cs.ucla.edu ([127.0.0.1])
by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032)
with ESMTP id B0uGPxO-gwhb; Thu, 1 Aug 2019 15:58:54 -0700 (PDT)
Received: from localhost (localhost [127.0.0.1])
by zimbra.cs.ucla.edu (Postfix) with ESMTP id 30BB91626BA;
Thu, 1 Aug 2019 15:58:54 -0700 (PDT)
X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu
Received: from zimbra.cs.ucla.edu ([127.0.0.1])
by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026)
with ESMTP id h2Scq_56y7un; Thu, 1 Aug 2019 15:58:54 -0700 (PDT)
Received: from [192.168.1.9] (cpe-23-242-74-103.socal.res.rr.com
[23.242.74.103])
by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id 088BC16186B;
Thu, 1 Aug 2019 15:58:54 -0700 (PDT)
References: <cb555fd7-efe3-3a00-5ce9-2b15e6ff5243@HIDDEN>
<20190729062807.GE2676@HIDDEN>
<4834fd10-a997-44a1-e732-b8ccc669f217@HIDDEN>
<20190731220505.GA9062@HIDDEN>
<f9b94be4-13da-26cd-710e-2046030f8449@HIDDEN>
<20190801101500.GB15401@HIDDEN>
From: Paul Eggert <eggert@HIDDEN>
Organization: UCLA Computer Science Department
Message-ID: <306d6614-3b99-2f63-432b-355aebdca258@HIDDEN>
Date: Thu, 1 Aug 2019 15:58:51 -0700
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
Thunderbird/60.8.0
MIME-Version: 1.0
In-Reply-To: <20190801101500.GB15401@HIDDEN>
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Language: en-US
Content-Transfer-Encoding: 7bit
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
Thanks, that's better, but we're still missing some opportunities for improvement.
> mv: cannot move 'A' to 'B/A': Target directory not empty
This should be "Destination" not "Target". (A target directory is something
different; this is merely a destination directory.) Similar changes need to be
made uniformly throughout the patch.
> +** Improvements
> +
> + rm now prints clearer error messages when a failure relates to the
You meant "mv" not "rm".
Come to think of it, the same improvement should be made to ln, cp, install and
shred. Basically, to any program that uses 'rename' or 'link' or similar
syscalls, and which reports an error if the syscall fails.
> +static char*
Space before "*".
> +strerror_target (int e)
Change name to "strerror_dest" or something like that, to be consistent with the
terminology "destination" rather than "target".
This function should return NULL instead of aborting when the errno value is
inapplicable. That way, its callers need not hardcode which errno values it handles.
X-Loop: help-debbugs@HIDDEN
Subject: bug#36831: enhance 'directory not empty' message
Resent-From: Assaf Gordon <assafgordon@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-coreutils@HIDDEN
Resent-Date: Fri, 02 Aug 2019 03:49:01 +0000
Resent-Message-ID: <handler.36831.B36831.1564717686463 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 36831
X-GNU-PR-Package: coreutils
X-GNU-PR-Keywords:
To: Paul Eggert <eggert@HIDDEN>
Cc: Alex Mantel <alexmantel93@HIDDEN>, 36831 <at> debbugs.gnu.org
Received: via spool by 36831-submit <at> debbugs.gnu.org id=B36831.1564717686463
(code B ref 36831); Fri, 02 Aug 2019 03:49:01 +0000
Received: (at 36831) by debbugs.gnu.org; 2 Aug 2019 03:48:06 +0000
Received: from localhost ([127.0.0.1]:55682 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1htOY2-00007P-Bf
for submit <at> debbugs.gnu.org; Thu, 01 Aug 2019 23:48:06 -0400
Received: from mail-pg1-f179.google.com ([209.85.215.179]:46913)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <assafgordon@HIDDEN>) id 1htOXz-00006t-Rx
for 36831 <at> debbugs.gnu.org; Thu, 01 Aug 2019 23:48:04 -0400
Received: by mail-pg1-f179.google.com with SMTP id k189so16297246pgk.13
for <36831 <at> debbugs.gnu.org>; Thu, 01 Aug 2019 20:48:03 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
h=date:from:to:cc:subject:message-id:references:mime-version
:content-disposition:in-reply-to:user-agent;
bh=ERvTmRfJySm9Vo8qjCty8vTN6Kj3Fgv+/MRYc+5sDLE=;
b=jcMNCF0nNSYzbBMeju++kmtyb9u5xGGTQwuanH8XivH/ljA8QCveY7iBQDJeqZFBf/
xFeNHDHlywML4kDm+RV28bJjh+tk7NwxAjvJDxBw9LYB11BU6zRHqcT0jc3KN2YxCU5M
bQz+Ro6fBKf7SCnsywHngF68dMASwL11JngqkuVuk68dSdKeiPzOb8VRi8LNpWN0+q1S
diD3CDgH0rBtw1v8Iqr9DqpaJHIb1mKWNxWNKecfEDIGC1RFvFsZgqtB++y6sJf+S27q
wL3cte6JYmfHFAaT6KHshLEJgskrB+eGfU5jXybT8lOQ5qJ3X6OGBRYrwI1uV8kspIXK
xe6Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20161025;
h=x-gm-message-state:date:from:to:cc:subject:message-id:references
:mime-version:content-disposition:in-reply-to:user-agent;
bh=ERvTmRfJySm9Vo8qjCty8vTN6Kj3Fgv+/MRYc+5sDLE=;
b=QC1e+LMGC6GMA0MDD/yPZ3+bkbe/BhwH40hY/UWWD0q2a1ZrG1eBtqDX/5JS/O0/a3
nrYM18wd1ZQ9xvd8Q/0D/n0lmXBb2V+mCLlKzEy3Mwe4tjF28y4uNUhSuQI0VfooFolP
0fTBNrcvNUlSLtc35evioSO6u4KOCqfcAIjr7M1BU4Lxs0dzEeNP42ZB6A5fCHPKVLRB
ihhYFxvalS3aRhL4Wr4r+IXzHOZhwg10NC78Hb/B5x+FZyU4WHys/n+mch/uwox+JFCi
gmB2tmFqAcO1mT/zKH2r+ffq4XLGSKPfHAUW2VzVn5kQ7mUkUTkfQVi+uRaZev3z8ZS0
1YzQ==
X-Gm-Message-State: APjAAAWJ6o51lomnnrLE196w2ox5lFZH/sMfIn8d+qwa3XGieUTnwry/
ipJlMnTJrwVFuz+nqfE0rcU=
X-Google-Smtp-Source: APXvYqyYg/nHZRzEMNeBY3phQcyVaIddfXmKYChjOQM15n2xVx3+jhVdLNRzrnamv7A24XH/SB0qBg==
X-Received: by 2002:a17:90a:2163:: with SMTP id
a90mr2091303pje.3.1564717677836;
Thu, 01 Aug 2019 20:47:57 -0700 (PDT)
Received: from tomato (moose.housegordon.com. [184.68.105.38])
by smtp.gmail.com with ESMTPSA id d8sm67581142pgh.45.2019.08.01.20.47.55
(version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256);
Thu, 01 Aug 2019 20:47:55 -0700 (PDT)
Received: by tomato (Postfix, from userid 1000)
id CB2D1681D4E; Thu, 1 Aug 2019 21:47:54 -0600 (MDT)
Date: Thu, 1 Aug 2019 21:47:54 -0600
From: Assaf Gordon <assafgordon@HIDDEN>
Message-ID: <20190802034754.GE15401@HIDDEN>
References: <cb555fd7-efe3-3a00-5ce9-2b15e6ff5243@HIDDEN>
<20190729062807.GE2676@HIDDEN>
<4834fd10-a997-44a1-e732-b8ccc669f217@HIDDEN>
<20190731220505.GA9062@HIDDEN>
<f9b94be4-13da-26cd-710e-2046030f8449@HIDDEN>
<20190801101500.GB15401@HIDDEN>
<306d6614-3b99-2f63-432b-355aebdca258@HIDDEN>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="k3qmt+ucFURmlhDS"
Content-Disposition: inline
In-Reply-To: <306d6614-3b99-2f63-432b-355aebdca258@HIDDEN>
User-Agent: Mutt/1.11.4 (2019-03-13)
X-Spam-Score: 0.0 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
--k3qmt+ucFURmlhDS
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
On Thu, Aug 01, 2019 at 03:58:51PM -0700, Paul Eggert wrote:
> Thanks, that's better, but we're still missing some opportunities for improvement.
>
> > mv: cannot move 'A' to 'B/A': Target directory not empty
>
> This should be "Destination" not "Target".
[...]
> You meant "mv" not "rm".
[...]
> > +static char*
> Space before "*".
[...]
> > +strerror_target (int e)
> Change name to "strerror_dest"
[...]
> This function should return NULL instead of aborting when the errno value is
> inapplicable. That way, its callers need not hardcode which errno values it
> handles.
Thanks for the review and suggestions - attached an updated patch.
> Come to think of it, the same improvement should be made to ln, cp, install
> and shred. Basically, to any program that uses 'rename' or 'link' or similar
> syscalls, and which reports an error if the syscall fails.
OK, I will work on that next.
-assaf
--k3qmt+ucFURmlhDS
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="0001-mv-improve-error-messages-when-destination-directory.patch"
From 8dc6158a6fde668e55312b5fb69384f438b7e55a Mon Sep 17 00:00:00 2001
From: Assaf Gordon <assafgordon@HIDDEN>
Date: Mon, 29 Jul 2019 00:23:20 -0600
Subject: [PATCH] mv: improve error messages when destination directory is at
fault
Suggested by Alex Mantel <alexmantel93@HIDDEN> in
https://bugs.gnu.org/36831 .
$ mkdir A B B/A
$ touch A/bar B/A/foo
Before:
$ mv A B
mv: cannot move 'A' to 'B/A': Directory not empty
After:
$ mv A B
mv: cannot move 'A' to 'B/A': Destination directory not empty
The following errors are handled:
EDQUOT, EEXIST, ENOTEMPTY, EISDIR, ENOSPC, ETXTBSY.
* src/copy.c (copy_internal): Print custom messages for errors
that explicitly fault the destination directory.
(strerror_dest): New function, return custom, translatable error
messages for errors relating to 'destination' component.
* tests/mv/dir2dir.sh: Adjust expected error message.
* NEWS: Mention change.
---
NEWS | 6 +++++
src/copy.c | 53 ++++++++++++++++++++++++++++++++++++++++++---
tests/mv/dir2dir.sh | 8 ++++---
3 files changed, 61 insertions(+), 6 deletions(-)
diff --git a/NEWS b/NEWS
index fd0543351..3d80665ae 100644
--- a/NEWS
+++ b/NEWS
@@ -44,6 +44,12 @@ GNU coreutils NEWS -*- outline -*-
stat(1) also supports a new --cached= option to control cache
coherency of file system attributes, useful on network file systems.
+** Improvements
+
+ mv now prints clearer error messages when a failure relates to the
+ destination directory (e.g., "Destination directory is not empty" instead
+ of "Directory not empty").
+
* Noteworthy changes in release 8.31 (2019-03-10) [stable]
diff --git a/src/copy.c b/src/copy.c
index 65cf65895..602c8307b 100644
--- a/src/copy.c
+++ b/src/copy.c
@@ -1867,6 +1867,44 @@ source_is_dst_backup (char const *srcbase, struct stat const *src_st,
return dst_back_status == 0 && SAME_INODE (*src_st, dst_back_sb);
}
+/* Return custom error messages replacing the default libc's
+ messages. These messages explicity fault the destination component
+ in the error.
+
+ Return NULL if E (errno value) is not handled (and by implication
+ should use the system's default text for the error message). */
+static char *
+strerror_dest (int e)
+{
+ /* TRANSLATORS: These strings should mimick libc's standard
+ error messages (from strerror(3)), but explicitly mention
+ the fault is with the destination directory. */
+ switch (errno)
+ {
+ case EDQUOT:
+ return _("Disk quota exceeded on destination device");
+ case EEXIST:
+ case ENOTEMPTY:
+ return _("Destination directory not empty");
+ case EISDIR:
+ return _("Tried to overwrite a directory with a file");
+ case ENOSPC:
+ return _("No space left on destination device");
+ case ETXTBSY:
+ /* NOTE: The error is "Text file busy" - but "text" in that context
+ refers to "text segment" of an executable file (as opposed to
+ "data segment" and "BSS segment").
+
+ This error message is meant for users, and 'text file' can be easily
+ confused with an actual text file (i.e., one containing only ASCII
+ characters. Thus, say 'executable' instead of 'text'.*/
+ return _("Destination executable file is busy");
+ default:
+ return NULL;
+ }
+}
+
+
/* Copy the file SRC_NAME to the file DST_NAME. The files may be of
any type. NEW_DST should be true if the file DST_NAME cannot
exist because its parent directory was just created; NEW_DST should
@@ -2477,9 +2515,18 @@ copy_internal (char const *src_name, char const *dst_name,
If the permissions on the directory containing the source or
destination file are made too restrictive, the rename will
fail. Etc. */
- error (0, rename_errno,
- _("cannot move %s to %s"),
- quoteaf_n (0, src_name), quoteaf_n (1, dst_name));
+
+ const char *custom_err_msg = strerror_dest (rename_errno);
+ if (custom_err_msg)
+ error (0, 0,
+ _("cannot move %s to %s: %s"),
+ quoteaf_n (0, src_name), quoteaf_n (1, dst_name),
+ custom_err_msg) ;
+ else
+ error (0, rename_errno,
+ _("cannot move %s to %s"),
+ quoteaf_n (0, src_name), quoteaf_n (1, dst_name));
+
forget_created (src_sb.st_ino, src_sb.st_dev);
return false;
}
diff --git a/tests/mv/dir2dir.sh b/tests/mv/dir2dir.sh
index 6455386b9..869f624a3 100755
--- a/tests/mv/dir2dir.sh
+++ b/tests/mv/dir2dir.sh
@@ -30,11 +30,13 @@ touch a/t/f || framework_failure_
mv b/t a 2> out && fail=1
# Accept any of these: EEXIST, ENOTEMPTY, EBUSY.
-sed 's/: File exists/: Directory not empty/'<out>o1;mv o1 out
-sed 's/: Device or resource busy/: Directory not empty/'<out>o1;mv o1 out
+sed 's/: File exists/: Destination directory not empty/'<out>o1
+mv o1 out
+sed 's/: Device or resource busy/: Destination directory not empty/'<out>o1
+mv o1 out
cat <<\EOF > exp || framework_failure_
-mv: cannot move 'b/t' to 'a/t': Directory not empty
+mv: cannot move 'b/t' to 'a/t': Destination directory not empty
EOF
compare exp out || fail=1
--
2.20.1
--k3qmt+ucFURmlhDS--
X-Loop: help-debbugs@HIDDEN
Subject: bug#36831: Enhance directory move. (was Re: bug#36831: enhance 'directory not empty' message)
Resent-From: L A Walsh <coreutils@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-coreutils@HIDDEN
Resent-Date: Fri, 02 Aug 2019 09:42:02 +0000
Resent-Message-ID: <handler.36831.B.15647389021693 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 36831
X-GNU-PR-Package: coreutils
X-GNU-PR-Keywords:
To: Assaf Gordon <assafgordon@HIDDEN>
Cc: alexmantel93@HIDDEN, 36831 <at> debbugs.gnu.org
X-Debbugs-Original-Cc: Alex Mantel <alexmantel93@HIDDEN>, Coreutils <bug-coreutils@HIDDEN>, 36831 <at> debbugs.gnu.org
Received: via spool by submit <at> debbugs.gnu.org id=B.15647389021693
(code B ref -1); Fri, 02 Aug 2019 09:42:02 +0000
Received: (at submit) by debbugs.gnu.org; 2 Aug 2019 09:41:42 +0000
Received: from localhost ([127.0.0.1]:55807 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1htU4E-0000RD-9z
for submit <at> debbugs.gnu.org; Fri, 02 Aug 2019 05:41:42 -0400
Received: from lists.gnu.org ([209.51.188.17]:41392)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <coreutils@HIDDEN>) id 1htU4D-0000R7-Cc
for submit <at> debbugs.gnu.org; Fri, 02 Aug 2019 05:41:41 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:56099)
by lists.gnu.org with esmtp (Exim 4.86_2)
(envelope-from <coreutils@HIDDEN>) id 1htU4C-0003RI-EU
for bug-coreutils@HIDDEN; Fri, 02 Aug 2019 05:41:41 -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.8 required=5.0 tests=BAYES_50 autolearn=disabled
version=3.3.2
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
(envelope-from <coreutils@HIDDEN>) id 1htU4B-0002GF-HW
for bug-coreutils@HIDDEN; Fri, 02 Aug 2019 05:41:40 -0400
Received: from ishtar.tlinx.org ([173.164.175.65]:47396
helo=Ishtar.sc.tlinx.org)
by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32)
(Exim 4.71) (envelope-from <coreutils@HIDDEN>) id 1htU4B-0002G2-8j
for bug-coreutils@HIDDEN; Fri, 02 Aug 2019 05:41:39 -0400
Received: from [192.168.3.12] (Athenae [192.168.3.12])
by Ishtar.sc.tlinx.org (8.14.7/8.14.4/SuSE Linux 0.8) with ESMTP id
x729fVk9040412; Fri, 2 Aug 2019 02:41:34 -0700
Message-ID: <5D44054B.3080907@HIDDEN>
Date: Fri, 02 Aug 2019 02:41:31 -0700
From: L A Walsh <coreutils@HIDDEN>
User-Agent: Thunderbird
MIME-Version: 1.0
References: <cb555fd7-efe3-3a00-5ce9-2b15e6ff5243@HIDDEN>
<20190729062807.GE2676@HIDDEN>
In-Reply-To: <20190729062807.GE2676@HIDDEN>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x (no
timestamps) [generic]
X-Received-From: 173.164.175.65
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
On 2019/07/28 23:28, Assaf Gordon wrote:
>
>
> $ mkdir A B B/A
> $ touch A/bar B/A/foo
> $ mv A B
> mv: cannot move 'A' to 'B/A': Directory not empty
>
> And the reason (as you've found out) is that the target directory 'B/A'
> is not empty (has the 'foo' file in it).
> Had this been allowed, moving 'A' to 'B/A' would result in the 'foo'
> file disappearing.
>
---
Why must foo disappear?
Microsoft Windows handles this situation by telling the user that
the target directory already exists and giving the option to *MERGE*
the directories.
If you attempt to move a file into a directory that already contains
a file by the same name, it pops up another notice asking if you want
to replace the old with the new, keep it as it is (file won't be moved and
in this case, old directory would still exist with the unmoved files left
in it), or keep both with the new file getting a name variant (like
foo.exe -> foo_1.exe, keeping the extension the same so as to not mess
up the identity of the contents.
But in all the cases, a file with a non-conflicting name wouldn't
disappear from the target.
X-Loop: help-debbugs@HIDDEN
Subject: bug#36831: Enhance directory move. (was Re: bug#36831: enhance 'directory not empty' message)
Resent-From: L A Walsh <coreutils@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-coreutils@HIDDEN
Resent-Date: Fri, 02 Aug 2019 09:42:02 +0000
Resent-Message-ID: <handler.36831.B36831.15647388981675 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 36831
X-GNU-PR-Package: coreutils
X-GNU-PR-Keywords:
To: Assaf Gordon <assafgordon@HIDDEN>
Cc: alexmantel93@HIDDEN, 36831 <at> debbugs.gnu.org
X-Debbugs-Original-Cc: Alex Mantel <alexmantel93@HIDDEN>, Coreutils <bug-coreutils@HIDDEN>, 36831 <at> debbugs.gnu.org
Received: via spool by 36831-submit <at> debbugs.gnu.org id=B36831.15647388981675
(code B ref 36831); Fri, 02 Aug 2019 09:42:02 +0000
Received: (at 36831) by debbugs.gnu.org; 2 Aug 2019 09:41:38 +0000
Received: from localhost ([127.0.0.1]:55804 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1htU4A-0000Qx-1M
for submit <at> debbugs.gnu.org; Fri, 02 Aug 2019 05:41:38 -0400
Received: from ishtar.tlinx.org ([173.164.175.65]:39250
helo=Ishtar.sc.tlinx.org) by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <coreutils@HIDDEN>) id 1htU48-0000Qk-51
for 36831 <at> debbugs.gnu.org; Fri, 02 Aug 2019 05:41:36 -0400
Received: from [192.168.3.12] (Athenae [192.168.3.12])
by Ishtar.sc.tlinx.org (8.14.7/8.14.4/SuSE Linux 0.8) with ESMTP id
x729fVk9040412; Fri, 2 Aug 2019 02:41:34 -0700
Message-ID: <5D44054B.3080907@HIDDEN>
Date: Fri, 02 Aug 2019 02:41:31 -0700
From: L A Walsh <coreutils@HIDDEN>
User-Agent: Thunderbird
MIME-Version: 1.0
References: <cb555fd7-efe3-3a00-5ce9-2b15e6ff5243@HIDDEN>
<20190729062807.GE2676@HIDDEN>
In-Reply-To: <20190729062807.GE2676@HIDDEN>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-Spam-Score: 0.0 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
On 2019/07/28 23:28, Assaf Gordon wrote:
>
>
> $ mkdir A B B/A
> $ touch A/bar B/A/foo
> $ mv A B
> mv: cannot move 'A' to 'B/A': Directory not empty
>
> And the reason (as you've found out) is that the target directory 'B/A'
> is not empty (has the 'foo' file in it).
> Had this been allowed, moving 'A' to 'B/A' would result in the 'foo'
> file disappearing.
>
---
Why must foo disappear?
Microsoft Windows handles this situation by telling the user that
the target directory already exists and giving the option to *MERGE*
the directories.
If you attempt to move a file into a directory that already contains
a file by the same name, it pops up another notice asking if you want
to replace the old with the new, keep it as it is (file won't be moved and
in this case, old directory would still exist with the unmoved files left
in it), or keep both with the new file getting a name variant (like
foo.exe -> foo_1.exe, keeping the extension the same so as to not mess
up the identity of the contents.
But in all the cases, a file with a non-conflicting name wouldn't
disappear from the target.
X-Loop: help-debbugs@HIDDEN
Subject: bug#36831: Enhance directory move. (was Re: bug#36831: enhance 'directory not empty' message)
Resent-From: Assaf Gordon <assafgordon@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-coreutils@HIDDEN
Resent-Date: Sat, 03 Aug 2019 02:48:01 +0000
Resent-Message-ID: <handler.36831.B.156480043518021 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 36831
X-GNU-PR-Package: coreutils
X-GNU-PR-Keywords:
To: L A Walsh <coreutils@HIDDEN>
Cc: alexmantel93@HIDDEN, 36831 <at> debbugs.gnu.org
X-Debbugs-Original-Cc: Alex Mantel <alexmantel93@HIDDEN>, Coreutils <bug-coreutils@HIDDEN>, 36831 <at> debbugs.gnu.org
Received: via spool by submit <at> debbugs.gnu.org id=B.156480043518021
(code B ref -1); Sat, 03 Aug 2019 02:48:01 +0000
Received: (at submit) by debbugs.gnu.org; 3 Aug 2019 02:47:15 +0000
Received: from localhost ([127.0.0.1]:58100 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1htk4h-0004gb-0P
for submit <at> debbugs.gnu.org; Fri, 02 Aug 2019 22:47:15 -0400
Received: from lists.gnu.org ([209.51.188.17]:39404)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <assafgordon@HIDDEN>) id 1htk4g-0004gS-7u
for submit <at> debbugs.gnu.org; Fri, 02 Aug 2019 22:47:14 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:46089)
by lists.gnu.org with esmtp (Exim 4.86_2)
(envelope-from <assafgordon@HIDDEN>) id 1htk4f-0006VD-2f
for bug-coreutils@HIDDEN; Fri, 02 Aug 2019 22:47:14 -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.8 required=5.0 tests=BAYES_50,FREEMAIL_FROM,
URIBL_BLOCKED autolearn=disabled version=3.3.2
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
(envelope-from <assafgordon@HIDDEN>) id 1htk4d-0002bC-W0
for bug-coreutils@HIDDEN; Fri, 02 Aug 2019 22:47:13 -0400
Received: from mail-pf1-x441.google.com ([2607:f8b0:4864:20::441]:46584)
by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16)
(Exim 4.71) (envelope-from <assafgordon@HIDDEN>)
id 1htk4d-0002ar-Q1
for bug-coreutils@HIDDEN; Fri, 02 Aug 2019 22:47:11 -0400
Received: by mail-pf1-x441.google.com with SMTP id c3so13766993pfa.13
for <bug-coreutils@HIDDEN>; Fri, 02 Aug 2019 19:47:11 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
h=date:from:to:cc:subject:message-id:references:mime-version
:content-disposition:in-reply-to:user-agent;
bh=hrW+hj/T1CQyt0KMd2PBk1vdu6K8RDqJ9NTgf5OT2rg=;
b=VT323jlA+12Xg1lrlytYU6Ct6dmYgmKKNu0fGTbr+QTqlxUKpOPJwKzgNbAVt9B1c0
lxAJp/IEEQxaMQOM9mYxwFOzY8HGjOJ3occamoXXvQgaAcPNKmRnQf/Rk1TFgy+jqMpQ
CfLY8Vejc0R1vDmX2+DLZ18BOIEBESApPuirE5lcg5Mzo22v/qGpEWhXpKM7fr/JCDPC
9gU/MKc3hkFjc2NcXPI7h5MSHs3xNmQg9gTtOHiEySkPxdaVz9QvUpfFSL3gzpHrc1OD
cb5h65SCACozv6JvN8AzLQRCuPE9zKO0L/+1wBapfn9LPLM1V7Pza6iBpJNobCP+/Py4
bqDw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20161025;
h=x-gm-message-state:date:from:to:cc:subject:message-id:references
:mime-version:content-disposition:in-reply-to:user-agent;
bh=hrW+hj/T1CQyt0KMd2PBk1vdu6K8RDqJ9NTgf5OT2rg=;
b=dCjm2G08WB+0YcuZ1cV1TOb2enSVjLAUvS2UN/Mx7I6mZD2zzgkMa8SXvC3RqjUudj
7NXHxHNGtjbPafY9x5ZupDhBF8q6aegh1uF9n6Pnv8CnqKH3YfW6tRchgHp8oljUoloe
fHFtNfarxxKyPZ2S3Z9zAEwMi7ezmSpEKMt+5L014GK9eBUSaFUPBBW8YC7255i+CyAe
aCxl3pbIVADe5GxWjVV+z0YPmeNnOSfhs0cW42qyilmC74RPCkrr5/7Y9Nw0GE7o93+Z
lf74RDuwaG50KXwuNHiXx5ueqcBw5Nc1skzQvr9mo1QwGFSW3qtuOh6/dt4dlrSa6YOk
7ffw==
X-Gm-Message-State: APjAAAWOYXFRQb6S9tYNRYvpK/ixyF6bCtjVUmgGW/7PG/rAeVnsYpGs
H/PBNd62AGroQ7SJ9yt5jP4=
X-Google-Smtp-Source: APXvYqz0ia4o39nVyX5cPEhSD2H8N5V2d7hRLZ+ycIWBwctf2QuasEB+UzTR1Favbk4I7rTyAFGCpQ==
X-Received: by 2002:a63:5d54:: with SMTP id
o20mr110950632pgm.413.1564800430784;
Fri, 02 Aug 2019 19:47:10 -0700 (PDT)
Received: from tomato (moose.housegordon.com. [184.68.105.38])
by smtp.gmail.com with ESMTPSA id k3sm59340438pgq.92.2019.08.02.19.47.09
(version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256);
Fri, 02 Aug 2019 19:47:09 -0700 (PDT)
Received: by tomato (Postfix, from userid 1000)
id 806C368B22C; Fri, 2 Aug 2019 20:47:08 -0600 (MDT)
Date: Fri, 2 Aug 2019 20:47:08 -0600
From: Assaf Gordon <assafgordon@HIDDEN>
Message-ID: <20190803024708.GI15401@HIDDEN>
References: <cb555fd7-efe3-3a00-5ce9-2b15e6ff5243@HIDDEN>
<20190729062807.GE2676@HIDDEN>
<5D44054B.3080907@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <5D44054B.3080907@HIDDEN>
User-Agent: Mutt/1.11.4 (2019-03-13)
X-detected-operating-system: by eggs.gnu.org: Genre and OS details not
recognized.
X-Received-From: 2607:f8b0:4864:20::441
X-Spam-Score: -1.3 (-)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -2.3 (--)
Hello,
On Fri, Aug 02, 2019 at 02:41:31AM -0700, L A Walsh wrote:
> On 2019/07/28 23:28, Assaf Gordon wrote:
> >
> >
> > $ mkdir A B B/A
> > $ touch A/bar B/A/foo
> > $ mv A B
> > mv: cannot move 'A' to 'B/A': Directory not empty
> >
> > And the reason (as you've found out) is that the target directory 'B/A'
> > is not empty (has the 'foo' file in it).
> > Had this been allowed, moving 'A' to 'B/A' would result in the 'foo'
> > file disappearing.
> >
> ---
> Why must foo disappear?
>
> Microsoft Windows handles this situation by telling the user that
> the target directory already exists and giving the option to *MERGE*
> the directories.
>
> If you attempt to move a file into a directory that already contains
> a file by the same name, it pops up another notice asking [...]
Certainly, GUI programs (and more 'feature-rich' programs than 'mv')
offer many "merging" options.
I'm sure Midnight-Commander, KDE/Doplhine, XFCE/Thunar, Gnome/Nautilus
and many other free software GUI file managers have some "merging"
capabilities.
But 'mv' is more basic and does not have this capability.
Partly that is because it adheres to the POSIX standards, which
mandates:
"3. The mv utility shall perform actions equivalent to the
rename() function [...]"
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/mv.html
Some rsync options (--remove-source-files) can mimick 'mv' with merging,
but then they are more like "copy+delete" than actual "rename/move".
Can new merging features be added to 'mv'? yes.
But it seems to me these would be better suited for 'higher level'
programs (e.g. a GUI file manager).
regards,
- assaf
X-Loop: help-debbugs@HIDDEN
Subject: bug#36831: Enhance directory move. (was Re: bug#36831: enhance 'directory not empty' message)
Resent-From: Assaf Gordon <assafgordon@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-coreutils@HIDDEN
Resent-Date: Sat, 03 Aug 2019 02:48:02 +0000
Resent-Message-ID: <handler.36831.B36831.156480044018039 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 36831
X-GNU-PR-Package: coreutils
X-GNU-PR-Keywords:
To: L A Walsh <coreutils@HIDDEN>
Cc: alexmantel93@HIDDEN, 36831 <at> debbugs.gnu.org
X-Debbugs-Original-Cc: Alex Mantel <alexmantel93@HIDDEN>, Coreutils <bug-coreutils@HIDDEN>, 36831 <at> debbugs.gnu.org
Received: via spool by 36831-submit <at> debbugs.gnu.org id=B36831.156480044018039
(code B ref 36831); Sat, 03 Aug 2019 02:48:02 +0000
Received: (at 36831) by debbugs.gnu.org; 3 Aug 2019 02:47:20 +0000
Received: from localhost ([127.0.0.1]:58103 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1htk4m-0004gt-Bm
for submit <at> debbugs.gnu.org; Fri, 02 Aug 2019 22:47:20 -0400
Received: from mail-pf1-f194.google.com ([209.85.210.194]:34389)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <assafgordon@HIDDEN>) id 1htk4j-0004gP-50
for 36831 <at> debbugs.gnu.org; Fri, 02 Aug 2019 22:47:18 -0400
Received: by mail-pf1-f194.google.com with SMTP id b13so36905679pfo.1
for <36831 <at> debbugs.gnu.org>; Fri, 02 Aug 2019 19:47:17 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
h=date:from:to:cc:subject:message-id:references:mime-version
:content-disposition:in-reply-to:user-agent;
bh=hrW+hj/T1CQyt0KMd2PBk1vdu6K8RDqJ9NTgf5OT2rg=;
b=VT323jlA+12Xg1lrlytYU6Ct6dmYgmKKNu0fGTbr+QTqlxUKpOPJwKzgNbAVt9B1c0
lxAJp/IEEQxaMQOM9mYxwFOzY8HGjOJ3occamoXXvQgaAcPNKmRnQf/Rk1TFgy+jqMpQ
CfLY8Vejc0R1vDmX2+DLZ18BOIEBESApPuirE5lcg5Mzo22v/qGpEWhXpKM7fr/JCDPC
9gU/MKc3hkFjc2NcXPI7h5MSHs3xNmQg9gTtOHiEySkPxdaVz9QvUpfFSL3gzpHrc1OD
cb5h65SCACozv6JvN8AzLQRCuPE9zKO0L/+1wBapfn9LPLM1V7Pza6iBpJNobCP+/Py4
bqDw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20161025;
h=x-gm-message-state:date:from:to:cc:subject:message-id:references
:mime-version:content-disposition:in-reply-to:user-agent;
bh=hrW+hj/T1CQyt0KMd2PBk1vdu6K8RDqJ9NTgf5OT2rg=;
b=L8xJeawE4N6KJzuS4rbwsm+WSxobPsJBIl0sZi43xDJdAD7LKCp3gX/lwUoYFEuO3X
UjquwRcTpRo5bmZJFsFU7FmH2G4RP/IvJiplR+6Oxr6g3gWi90xp5KCIDsF9RIcbvUT1
x6EoMR3pe81Yx96YqyLRztGqrW4vRcJaqEdKYbns19Tj8oEuq2bUymvFeptJf0y5b5oW
reUwchgwy0qYcsaonnjpxUwCT36IiWNYCBa1wlI/8Yw9u88YiGiPuWLExdE1WaKGtUkf
7736CXPhwJzlOxZcuDEvBYPeWFEKaAkYoEIYmUqZrZiJVJXYdMTqQrozDHsPn6nlQXcv
ljNQ==
X-Gm-Message-State: APjAAAX9+jBfuGvaFcDEGiYLBK/IXIGHi/2wALpOr5ONhgqZ2ctu5YKz
JDFQnRRno2LOHDDe7EZ5JHf/1xTs
X-Google-Smtp-Source: APXvYqz0ia4o39nVyX5cPEhSD2H8N5V2d7hRLZ+ycIWBwctf2QuasEB+UzTR1Favbk4I7rTyAFGCpQ==
X-Received: by 2002:a63:5d54:: with SMTP id
o20mr110950632pgm.413.1564800430784;
Fri, 02 Aug 2019 19:47:10 -0700 (PDT)
Received: from tomato (moose.housegordon.com. [184.68.105.38])
by smtp.gmail.com with ESMTPSA id k3sm59340438pgq.92.2019.08.02.19.47.09
(version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256);
Fri, 02 Aug 2019 19:47:09 -0700 (PDT)
Received: by tomato (Postfix, from userid 1000)
id 806C368B22C; Fri, 2 Aug 2019 20:47:08 -0600 (MDT)
Date: Fri, 2 Aug 2019 20:47:08 -0600
From: Assaf Gordon <assafgordon@HIDDEN>
Message-ID: <20190803024708.GI15401@HIDDEN>
References: <cb555fd7-efe3-3a00-5ce9-2b15e6ff5243@HIDDEN>
<20190729062807.GE2676@HIDDEN>
<5D44054B.3080907@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <5D44054B.3080907@HIDDEN>
User-Agent: Mutt/1.11.4 (2019-03-13)
X-Spam-Score: 0.0 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
Hello,
On Fri, Aug 02, 2019 at 02:41:31AM -0700, L A Walsh wrote:
> On 2019/07/28 23:28, Assaf Gordon wrote:
> >
> >
> > $ mkdir A B B/A
> > $ touch A/bar B/A/foo
> > $ mv A B
> > mv: cannot move 'A' to 'B/A': Directory not empty
> >
> > And the reason (as you've found out) is that the target directory 'B/A'
> > is not empty (has the 'foo' file in it).
> > Had this been allowed, moving 'A' to 'B/A' would result in the 'foo'
> > file disappearing.
> >
> ---
> Why must foo disappear?
>
> Microsoft Windows handles this situation by telling the user that
> the target directory already exists and giving the option to *MERGE*
> the directories.
>
> If you attempt to move a file into a directory that already contains
> a file by the same name, it pops up another notice asking [...]
Certainly, GUI programs (and more 'feature-rich' programs than 'mv')
offer many "merging" options.
I'm sure Midnight-Commander, KDE/Doplhine, XFCE/Thunar, Gnome/Nautilus
and many other free software GUI file managers have some "merging"
capabilities.
But 'mv' is more basic and does not have this capability.
Partly that is because it adheres to the POSIX standards, which
mandates:
"3. The mv utility shall perform actions equivalent to the
rename() function [...]"
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/mv.html
Some rsync options (--remove-source-files) can mimick 'mv' with merging,
but then they are more like "copy+delete" than actual "rename/move".
Can new merging features be added to 'mv'? yes.
But it seems to me these would be better suited for 'higher level'
programs (e.g. a GUI file manager).
regards,
- assaf
X-Loop: help-debbugs@HIDDEN
Subject: bug#36831: Enhance directory move. (was Re: bug#36831: enhance 'directory not empty' message)
Resent-From: L A Walsh <coreutils@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-coreutils@HIDDEN
Resent-Date: Sat, 03 Aug 2019 03:57:02 +0000
Resent-Message-ID: <handler.36831.B.156480459525782 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 36831
X-GNU-PR-Package: coreutils
X-GNU-PR-Keywords:
To: Assaf Gordon <assafgordon@HIDDEN>
Cc: alexmantel93@HIDDEN, 36831 <at> debbugs.gnu.org
X-Debbugs-Original-Cc: Alex Mantel <alexmantel93@HIDDEN>, Coreutils <bug-coreutils@HIDDEN>, 36831 <at> debbugs.gnu.org
Received: via spool by submit <at> debbugs.gnu.org id=B.156480459525782
(code B ref -1); Sat, 03 Aug 2019 03:57:02 +0000
Received: (at submit) by debbugs.gnu.org; 3 Aug 2019 03:56:35 +0000
Received: from localhost ([127.0.0.1]:58142 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1htl9n-0006hj-9S
for submit <at> debbugs.gnu.org; Fri, 02 Aug 2019 23:56:35 -0400
Received: from lists.gnu.org ([209.51.188.17]:58317)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <coreutils@HIDDEN>) id 1htl9m-0006hc-0V
for submit <at> debbugs.gnu.org; Fri, 02 Aug 2019 23:56:34 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:57284)
by lists.gnu.org with esmtp (Exim 4.86_2)
(envelope-from <coreutils@HIDDEN>) id 1htl9j-0000vR-VB
for bug-coreutils@HIDDEN; Fri, 02 Aug 2019 23:56:33 -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.8 required=5.0 tests=BAYES_50 autolearn=disabled
version=3.3.2
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
(envelope-from <coreutils@HIDDEN>) id 1htl9j-0000W1-3T
for bug-coreutils@HIDDEN; Fri, 02 Aug 2019 23:56:31 -0400
Received: from ishtar.tlinx.org ([173.164.175.65]:40028
helo=Ishtar.sc.tlinx.org)
by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32)
(Exim 4.71) (envelope-from <coreutils@HIDDEN>) id 1htl9i-0000UB-1r
for bug-coreutils@HIDDEN; Fri, 02 Aug 2019 23:56:31 -0400
Received: from [192.168.3.12] (Athenae [192.168.3.12])
by Ishtar.sc.tlinx.org (8.14.7/8.14.4/SuSE Linux 0.8) with ESMTP id
x733uFLC035556; Fri, 2 Aug 2019 20:56:17 -0700
Message-ID: <5D4505DF.5040006@HIDDEN>
Date: Fri, 02 Aug 2019 20:56:15 -0700
From: L A Walsh <coreutils@HIDDEN>
User-Agent: Thunderbird
MIME-Version: 1.0
References: <cb555fd7-efe3-3a00-5ce9-2b15e6ff5243@HIDDEN>
<20190729062807.GE2676@HIDDEN>
<5D44054B.3080907@HIDDEN>
<20190803024708.GI15401@HIDDEN>
In-Reply-To: <20190803024708.GI15401@HIDDEN>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x (no
timestamps) [generic]
X-Received-From: 173.164.175.65
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
On 2019/08/02 19:47, Assaf Gordon wrote:
> Can new merging features be added to 'mv'? yes.
> But it seems to me these would be better suited for 'higher level'
> programs (e.g. a GUI file manager).
---
But neither the person who posted the original bug on this
nor I are using a GUI, we are running 'mv' GUI, we use the cmd line on li=
nux, so that wouldn't
be of any use.
If the command was named 'ren', then I'd expect it to be dummer,
but 'mv'/move seem like it should be able to move files from
one dir into another.
But you say posix wants it to perform as a rename?
I know, create a 're' command (or 'rn') for rename, and have
it do what 'mv' would do. Maybe posix would realize it would
be better to have re/rn behave like rename, and 'mv' to
behave it was moving something.
So if I have:
mkdir A B
touch A/foo B/fee
So when I look at the system call on linux for rename:
oldpath can specify a directory. In this case, newpath must eithe=
r not
exist, or it must specify an empty directory.
(complying with POSIX_C_SOURCE >=3D 200809L)
So move should give an error: Nope:
mv A B
> tree B
B
=E2=94=9C=E2=94=80=E2=94=80 A
=E2=94=82 =E2=94=94=E2=94=80=E2=94=80 foo
=E2=94=94=E2=94=80=E2=94=80 fee
1 directory, 2 files
So mv is violating POSIX - it didn't do the rename, but moved
A under B and neither dir had to be empty.
Saying it has to follow POSIX when it doesn't appear to, seems
a bit contradictory?
X-Loop: help-debbugs@HIDDEN
Subject: bug#36831: Enhance directory move. (was Re: bug#36831: enhance 'directory not empty' message)
Resent-From: L A Walsh <coreutils@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-coreutils@HIDDEN
Resent-Date: Sat, 03 Aug 2019 03:57:02 +0000
Resent-Message-ID: <handler.36831.B36831.156480458125743 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 36831
X-GNU-PR-Package: coreutils
X-GNU-PR-Keywords:
To: Assaf Gordon <assafgordon@HIDDEN>
Cc: alexmantel93@HIDDEN, 36831 <at> debbugs.gnu.org
X-Debbugs-Original-Cc: Alex Mantel <alexmantel93@HIDDEN>, Coreutils <bug-coreutils@HIDDEN>, 36831 <at> debbugs.gnu.org
Received: via spool by 36831-submit <at> debbugs.gnu.org id=B36831.156480458125743
(code B ref 36831); Sat, 03 Aug 2019 03:57:02 +0000
Received: (at 36831) by debbugs.gnu.org; 3 Aug 2019 03:56:21 +0000
Received: from localhost ([127.0.0.1]:58139 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1htl9Z-0006h9-0c
for submit <at> debbugs.gnu.org; Fri, 02 Aug 2019 23:56:21 -0400
Received: from ishtar.tlinx.org ([173.164.175.65]:60114
helo=Ishtar.sc.tlinx.org) by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <coreutils@HIDDEN>) id 1htl9X-0006gz-Ak
for 36831 <at> debbugs.gnu.org; Fri, 02 Aug 2019 23:56:19 -0400
Received: from [192.168.3.12] (Athenae [192.168.3.12])
by Ishtar.sc.tlinx.org (8.14.7/8.14.4/SuSE Linux 0.8) with ESMTP id
x733uFLC035556; Fri, 2 Aug 2019 20:56:17 -0700
Message-ID: <5D4505DF.5040006@HIDDEN>
Date: Fri, 02 Aug 2019 20:56:15 -0700
From: L A Walsh <coreutils@HIDDEN>
User-Agent: Thunderbird
MIME-Version: 1.0
References: <cb555fd7-efe3-3a00-5ce9-2b15e6ff5243@HIDDEN>
<20190729062807.GE2676@HIDDEN>
<5D44054B.3080907@HIDDEN>
<20190803024708.GI15401@HIDDEN>
In-Reply-To: <20190803024708.GI15401@HIDDEN>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 0.0 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
On 2019/08/02 19:47, Assaf Gordon wrote:
> Can new merging features be added to 'mv'? yes.
> But it seems to me these would be better suited for 'higher level'
> programs (e.g. a GUI file manager).
---
But neither the person who posted the original bug on this
nor I are using a GUI, we are running 'mv' GUI, we use the cmd line on li=
nux, so that wouldn't
be of any use.
If the command was named 'ren', then I'd expect it to be dummer,
but 'mv'/move seem like it should be able to move files from
one dir into another.
But you say posix wants it to perform as a rename?
I know, create a 're' command (or 'rn') for rename, and have
it do what 'mv' would do. Maybe posix would realize it would
be better to have re/rn behave like rename, and 'mv' to
behave it was moving something.
So if I have:
mkdir A B
touch A/foo B/fee
So when I look at the system call on linux for rename:
oldpath can specify a directory. In this case, newpath must eithe=
r not
exist, or it must specify an empty directory.
(complying with POSIX_C_SOURCE >=3D 200809L)
So move should give an error: Nope:
mv A B
> tree B
B
=E2=94=9C=E2=94=80=E2=94=80 A
=E2=94=82 =E2=94=94=E2=94=80=E2=94=80 foo
=E2=94=94=E2=94=80=E2=94=80 fee
1 directory, 2 files
So mv is violating POSIX - it didn't do the rename, but moved
A under B and neither dir had to be empty.
Saying it has to follow POSIX when it doesn't appear to, seems
a bit contradictory?
X-Loop: help-debbugs@HIDDEN
Subject: bug#36831: Enhance directory move. (was Re: bug#36831: enhance 'directory not empty' message)
Resent-From: Assaf Gordon <assafgordon@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-coreutils@HIDDEN
Resent-Date: Sat, 03 Aug 2019 05:40:02 +0000
Resent-Message-ID: <handler.36831.B36831.15648107927760 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 36831
X-GNU-PR-Package: coreutils
X-GNU-PR-Keywords:
To: L A Walsh <coreutils@HIDDEN>
Cc: alexmantel93@HIDDEN, 36831 <at> debbugs.gnu.org
Received: via spool by 36831-submit <at> debbugs.gnu.org id=B36831.15648107927760
(code B ref 36831); Sat, 03 Aug 2019 05:40:02 +0000
Received: (at 36831) by debbugs.gnu.org; 3 Aug 2019 05:39:52 +0000
Received: from localhost ([127.0.0.1]:58175 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1htmlk-000215-Cw
for submit <at> debbugs.gnu.org; Sat, 03 Aug 2019 01:39:52 -0400
Received: from mail-pg1-f193.google.com ([209.85.215.193]:46078)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <assafgordon@HIDDEN>) id 1htmli-00020m-6D
for 36831 <at> debbugs.gnu.org; Sat, 03 Aug 2019 01:39:50 -0400
Received: by mail-pg1-f193.google.com with SMTP id o13so37056198pgp.12
for <36831 <at> debbugs.gnu.org>; Fri, 02 Aug 2019 22:39:50 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
h=subject:to:cc:references:from:message-id:date:user-agent
:mime-version:in-reply-to:content-language:content-transfer-encoding;
bh=0hI4ewQvSf9LGrZ9V0dGcL5+6R0CjDFdU1Yskxwey+M=;
b=oaC7oPpQjlXlf5LewW2Fk/RzHruZYTi0d+hNhfG2QCsLsJ47WCFsL+Sro3JdZEwZmZ
bK7+sgFYU5zT1CbWowLUUjtWQolNAmhyAmwJhTNlh/O1vwnMlBoydLeXv5T8R68DSF4Q
z3ccwE/FhqIli+kn1u/nNv/LRsbqXg0lP3FdXTt5+fzoHmTiXGQqt1MMNppaM6Lh4Bn8
oeeYm/YU1fhp8daPgZVWmKm8KW3/L7gI0rpd1ueu6Icmpcx8OoV2zdnkk2+ctQzx/pnh
xOuWIUXjN5vxmnv+i9el+SIy773M3MwhYsR0Yp0L9u2B/KePyUgyy7NNPYT9v6OMJg8K
XchQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20161025;
h=x-gm-message-state:subject:to:cc:references:from:message-id:date
:user-agent:mime-version:in-reply-to:content-language
:content-transfer-encoding;
bh=0hI4ewQvSf9LGrZ9V0dGcL5+6R0CjDFdU1Yskxwey+M=;
b=YApWm3IJyo4htlU6YlyLTA6PA/jUflT6s3GHsA8xYXcN4l1T7yeH4yVUUL80+J/FOs
E/Ft9h46UrdGxuPmEb0Ptu4AjNgetBuWwzkP4KQzFnMjgP9EEPPocAZeSILa8SZoZ6vW
I4vpG9lIfpgYvR5F5X+DOshvT2r0O3PIvJODO6EGq3XNeNL31kfuIb3JDc/ZKpxifCWs
JeU4sjTGwwA7xQQxZyxKK1kJRanAJ3+LCVhiVJfcAReT6v24Ru7hrMzNu8m2vJTW8x8U
808W3snA4BsqRc1NgRMSOgicXENXpNCZgEGNTDo1L87JsnJNBTB1ZiGuGt+sDbyL4y5u
Ppvw==
X-Gm-Message-State: APjAAAUzM3+pDuvue1Cj7JCWSJoE1rEE/NsWVDI0AVIXPAigHkqlyWWd
Va5zQ38X7RJe3eXf8kQ0k3FEO1KR
X-Google-Smtp-Source: APXvYqxsBbM8GFwftw7l6KWih6K900XJtqPNFp6mPIN4+DYZIGH/H3NpBes17RHRAz1Mi3C9WYQZ3w==
X-Received: by 2002:a63:e5a:: with SMTP id 26mr122787189pgo.3.1564810783681;
Fri, 02 Aug 2019 22:39:43 -0700 (PDT)
Received: from tomato.moose.housegordon.com (moose.housegordon.com.
[184.68.105.38])
by smtp.googlemail.com with ESMTPSA id u6sm9349431pjx.23.2019.08.02.22.39.42
(version=TLS1_3 cipher=AEAD-AES128-GCM-SHA256 bits=128/128);
Fri, 02 Aug 2019 22:39:42 -0700 (PDT)
References: <cb555fd7-efe3-3a00-5ce9-2b15e6ff5243@HIDDEN>
<20190729062807.GE2676@HIDDEN>
<5D44054B.3080907@HIDDEN>
<20190803024708.GI15401@HIDDEN>
<5D4505DF.5040006@HIDDEN>
From: Assaf Gordon <assafgordon@HIDDEN>
Message-ID: <5880eb87-7f00-9703-e6e2-204dbcda12fb@HIDDEN>
Date: Fri, 2 Aug 2019 23:39:41 -0600
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
Thunderbird/60.8.0
MIME-Version: 1.0
In-Reply-To: <5D4505DF.5040006@HIDDEN>
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Language: en-US
Content-Transfer-Encoding: 7bit
X-Spam-Score: 0.0 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
Hello,
On 2019-08-02 9:56 p.m., L A Walsh wrote:
> On 2019/08/02 19:47, Assaf Gordon wrote:
>> Can new merging features be added to 'mv'? yes.
>> But it seems to me these would be better suited for 'higher level'
>> programs (e.g. a GUI file manager).
> ---
> But neither the person who posted the original bug on this
> nor I are using a GUI, we are running 'mv' GUI, we use the cmd line on linux, so that wouldn't
> be of any use.
The original post was about the error *message*, asking to make it
clearer. That is the topic of this thread (and the previous patch) -
so let's leave them at that.
I see you started a new thread ( https://bugs.gnu.org/36901 ),
so I'll reply there.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.