Subject: Re: mkdir with trailing / (patch proposed)
To: Wolfgang Rupprecht <>
From: Rick Kelly <>
List: tech-userlevel
Date: 04/28/2002 17:59:02
Wolfgang Rupprecht said:

>I think they are talking about mkdir(2) not mkdir(1).

>    ret = mkdir("//tmp//bar//", 0777);

>    ret = mkdir("/tmp/bar2", 0777);

>The first fails in -current with a "mkdir 1: No such file or
>directory" and the second succeeds.

That would explain this code in mkdir(1):

                /* Remove trailing slashes, per POSIX. */
                slash = strrchr(*argv, '\0');
                while (--slash > *argv && *slash == '/')
                        *slash = '\0';

On the other hand, at least up as far as System 3 UNIX, there was no
mkdir(2). That function was performed by mknod(2), which seems to just
gamely try to create whatever is passed to it or return an error. Since
System 3 didn't support "mkdir -p", mkdir(1) just has a simple loop that
avoids extra "/" characters.
Rick Kelly