mkdir: allow 'mkdir -p' with trailing '/'

Let's suppose that /usr/tmp exists and one wants /usr/tmp/a/b
If one runs "mkdir -p /usr/tmp/a/b/" (the '/' at the end is
important), then a "File exists" error comes up. Example:

$ rm -rf /usr/tmp/a
$ mkdir -p /usr/tmp/a/b/
/usr/tmp/a/b/: File exists

This breaks gcc47 installation when C++ is enabled, and this
isn't the behaviour of mkdir on NetBSD nor Linix.

This patch fixes the above issue by dropping the trailing '/'.
This commit is contained in:
Thomas Cort 2011-08-14 12:41:39 +00:00 committed by Ben Gras
parent 58c4a9b5f4
commit 940bbe18b6

View file

@ -231,6 +231,10 @@ char *fordir;
int makedir(dirname)
char *dirname;
{
while (strlen(dirname) > 1 && dirname[strlen(dirname) - 1] == '/') {
dirname[strlen(dirname) - 1] = '\0'; /* trim trailing '/' */
}
if (mkdir(dirname, DEFAULT_MODE)) {
if (!pflag) {
perror(dirname);