From: Jim Meyering Date: Thu, 6 May 1999 02:10:34 +0000 (+0000) Subject: (make_dir): When reporting a mkdir failure and the X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d5907e80aef3248b3703b253d2806a4167c52fe8;p=pspp (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'. --- diff --git a/lib/makepath.c b/lib/makepath.c index 4a758e37a7..20e9a1288e 100644 --- a/lib/makepath.c +++ b/lib/makepath.c @@ -162,6 +162,7 @@ make_dir (const char *dir, const char *dirpath, mode_t mode, int *created_dir_p) 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 @@ make_dir (const char *dir, const char *dirpath, mode_t mode, int *created_dir_p) 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))