changeset 1831:ce6300b50014

(make_dir): When reporting a mkdir failure and the target cannot be `stat'ed, use the errno from the failed mkdir call, not the one from the stat call. Before this change, running `mkdir -p /no-dir/no-dir' as an unprivileged user would wrongly elicit `No such file or directory' instead of `Permission denied'.
author Jim Meyering <jim@meyering.net>
date Thu, 06 May 1999 02:10:34 +0000
parents 8139ee8d995b
children 1a6892d6d97c
files lib/makepath.c
diffstat 1 files changed, 2 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/lib/makepath.c
+++ b/lib/makepath.c
@@ -162,6 +162,7 @@
   if (!created_dir)
     {
       struct stat stats;
+      int saved_errno = errno;
 
       /* The mkdir and stat calls below may appear to be reversed.
 	 They are not.  It is important to call mkdir first and then to
@@ -173,7 +174,7 @@
 
       if (stat (dir, &stats))
 	{
-	  error (0, errno, _("cannot create directory `%s'"), dirpath);
+	  error (0, saved_errno, _("cannot create directory `%s'"), dirpath);
 	  fail = 1;
 	}
       else if (!S_ISDIR (stats.st_mode))