Hi!
On 03/05/2020 00:13, Paul Eggert wrote:
On 5/2/20 3:41 PM, Jonny Grant wrote:
Is a more accurate strerror considered unreliable?
Current:
mkdir: cannot create directory ‘test’: File exists
Proposed:
mkdir: cannot create directory ‘test’: Is a directory
I don't understand this comment. As I understand it you're proposing a change to
the mkdir command not a change to the strerror library function, and the change
you're proposing would introduce a race condition to the mkdir command.
As the mkdir error returned to the shell is the same, I don't feel the
difference between the words "File exists" and "Is a directory" on the
terminal can be considered a race condition.
You're right, there will be a race condition where two processes are
both creating and deleting the same files. Any software which is
creating and deleting the same directories in parallel will encounter a
multitude of errors - all bets are off.
A better fix would be to change the mkdir system call so that it sets errno to
EISDIR in this situation. This would fix not only the mkdir utility, but also
lots of other programs; and it wouldn't introduce a race condition. So if you're
interested in getting the problem fixed, I suggest that you propose such a
change to the Linux kernel developers.
Yes, if Linux kernel developers would deviate from POSIX. I emailed
linux-e...@vger.kernel.org the lines of code to change.
I'm not confident it will get in, even harder to get into POSIX I expect.
ext4_match() is what would need to be updated to check if an entry is a
directory
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/fs/ext4/namei.c
Cheers, Jonny