Subject: Trailing '/' to mkdir(2) revisited
To: None <tech-kern@netbsd.org>
From: Giles Lean <giles@nemeton.com.au>
List: tech-kern
Date: 06/23/2003 12:03:47
Hi all,
I know this has been discussed before and I don't want to stir up a
flame fest, however NetBSD is getting a bit lonely in its refusal to
accept a trailing '/' on a path supplied to mkdir(2).
4922 a3 CALL mkdir(0x804a580,0x1ff)
4922 a3 NAMI "fubar/"
4922 a3 RET mkdir -1 errno 2 No such file or directory
I recall from previous discussions that NetBSD's behaviour of
returning ENOENT is acceptable per the relevant standards, and we have
a similar restriction on the target path (but not the source path) for
rename(2).
A problem arises that because other platforms permit the trailing '/'
application portability is reduced. At least FreeBSD, HP-UX, and
Linux allow the traling '/'.
While application portability is the reason that I ask that the
behaviour be changed, there are some arguments on consistency
grounds that mkdir(2) should accept a trailing '/' too:
1. mkdir(1) accepts a trailing '/'
$ mkdir fubar/ && /bin/ls -ld fubar/
drwxr-xr-x 2 giles wheel 512 Jun 23 11:53 fubar/
2. rmdir(2) accepts a trailing '/'
4922 a3 CALL mkdir(0x804a587,0x1ff)
4922 a3 NAMI "fubar"
4922 a3 RET mkdir 0
4922 a3 CALL rmdir(0x804a580)
4922 a3 NAMI "fubar/"
4922 a3 RET rmdir 0
Finally, I notice that there was mention in the last few days of the
need to handle trailing slashes for Linux binary emulation. FreeBSD
binary emulation must need this too?
The only reasons I can think of for keeping the current behaviour:
(a) it's always been that way
(b) it's more efficient
Note that I'm not able to offer a patch: since I have current access
to those billions of dollars worth of SysV source that SCO is suing
IBM about discretion is the better part of valour. :-)
Regards,
Giles
--
Giles Lean <giles@nemeton.com.au>