]> Zhao Yanbai Git Server - minix.git/commitdiff
mkdir: allow 'mkdir -p' with trailing '/'
authorThomas Cort <tcort@minix3.org>
Sun, 14 Aug 2011 12:41:39 +0000 (12:41 +0000)
committerBen Gras <ben@minix3.org>
Mon, 15 Aug 2011 09:14:36 +0000 (09:14 +0000)
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 '/'.

commands/mkdir/mkdir.c

index d02734676128b1e0c68b347da0ffbace66fee449..e8df1e2d522000bb4860ceddfe5a5c994b62d32a 100644 (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);