(main): Remove any trailing slash unconditionally.
authorJim Meyering <jim@meyering.net>
Sat, 2 Dec 2000 13:20:37 +0000 (13:20 +0000)
committerJim Meyering <jim@meyering.net>
Sat, 2 Dec 2000 13:20:37 +0000 (13:20 +0000)
Reported by Volker Borchert.

src/mkdir.c

index c9d03ed..3a92cfc 100644 (file)
@@ -143,23 +143,19 @@ main (int argc, char **argv)
   for (; optind < argc; ++optind)
     {
       int fail = 0;
+
+      /* Remove any trailing slashes.  Not removing them would lead to calling
+        `mkdir ("dir/", mode)' for e.g., the commands `mkdir dir/' and
+        `mkdir -p dir/', and such a call fails on NetBSD systems when `dir'
+        doesn't already exist.  */
+      strip_trailing_slashes (argv[optind]);
+
       if (create_parents)
        {
          char *parents = dir_name (argv[optind]);
          fail = make_path (parents, parent_mode, parent_mode,
                            -1, -1, 1, verbose_fmt_string);
          free (parents);
-
-         /* If we're creating parent directories, then it's ok to remove
-            trailing slashes.  In fact, *not* removing them would lead
-            to calling `mkdir ("dir/", mode)' for the command `mkdir -p dir/',
-            and such a call fails on NetBSD systems if `dir' doesn't already
-            exist.  */
-         /* An alternate approach would be to change make_path to interpret
-            an argument with a trailing slash as if it also had a trailing
-            `.'.  In fact, that would be more consistent with POSIX, so
-            FIXME: some day.  */
-         strip_trailing_slashes (argv[optind]);
        }
 
       if (fail == 0)