Add my comment from ChangeLog entry for gkm's change.
authorJim Meyering <jim@meyering.net>
Wed, 11 Feb 1998 22:17:38 +0000 (22:17 +0000)
committerJim Meyering <jim@meyering.net>
Wed, 11 Feb 1998 22:17:38 +0000 (22:17 +0000)
lib/makepath.c

index ea0a021..99119a2 100644 (file)
@@ -217,6 +217,14 @@ make_path (const char *argpath,
          if (!do_chdir)
            basename_dir = dirpath;
 
+         /* The mkdir and stat calls below appear to be reversed.
+            They are not.  It is important to call mkdir first and then to
+            call stat (to distinguish the three cases) only if mkdir fails.
+            The alternative to this approach is to `stat' each directory,
+            then to call mkdir if it doesn't exist.  But if some other process
+            were to create the directory between the stat & mkdir, the mkdir
+            would fail with EEXIST.  */
+
          *slash = '\0';
          if (mkdir (basename_dir, tmp_mode))
            {