bug-coreutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#64785: Package: coreutils Version: 8.32-4+b1 program=mv


From: Paul Eggert
Subject: bug#64785: Package: coreutils Version: 8.32-4+b1 program=mv
Date: Sat, 22 Jul 2023 10:37:36 -0700
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0

On 2023-07-22 03:19, Pádraig Brady wrote:
Given the subtleties in this area,
I'd be reluctant to adjust diagnostics here.

I looked into this a bit more. Given "mv dir e" where e/dir is an existing nonempty directory, 7th Edition Unix fails this way:

  mv: e/dir exists

Solaris 10 mv fails this way:

  mv: cannot rename dir to e/dir: File exists

Coreutils 5.93 fails this way:

  mv: cannot overwrite directory `e/dir'

Current coreutils fails this way:

  mv: cannot move 'dir' to 'e/dir': Directory not empty

macOS fails this way:

  mv: rename dir to e/dir: Directory not empty

If you ask me, none of these are all that good. Current coreutils and macOS give a confusing "Directory not empty" message (which directory?). Solaris 10 has a similar confusion. 7th Edition and coreutils 5.93 don't print strerror (errno).

All things considered, how about if we go back to something like coreutils 5.93, except output strerror (errno) too? That is, something like this:

  mv: cannot overwrite 'e/dir': Directory not empty

This focuses the user on the problem, avoiding confusion from the irrelevant source file name. We'd use this format if renameat fails with an errno that means the problem must be with the destination, and stick with the current format otherwise. Affected errno values would be EDQUOT, EISDIR, ENOSPC, EEXIST, ENOTEMPTY.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]