Date: Tue, 1 Apr 1997 15:46:23 -0800 (PST) From: Mike Pritchard <mpp> To: CVS-committers, cvs-all, cvs-bin Subject: cvs commit: src/bin/mkdir mkdir.c Message-ID: <199704012346.PAA14298@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
mpp 97/04/01 15:46:23
Modified: bin/mkdir mkdir.c
Log:
Fix several problems with mkdir:
1) Fix mkdir -p to exit with the proper exit status and issue an error
message if it was unable to create all of the specified directories
and they did not previously exist. POSIX says:
The mkdir utility shall exit with one of the following values:
0 All the specified directories were created successfully or the
-p option was specified and all the specified directories now
exist.
E.g.
% mkdir -p /var/mkdir
mkdir: /var/mkdir: Permission denied
% touch /tmp/file
% mkdir -p /tmp/file/dir
mkdir: /tmp/file: Not a directory
Previously the above examples would exit with a zero exit status
and no error message. Something like the following run as a
normal user will still not produce an error:
% id
uid=629(mpp) gid=629(mpp)....
% mkdir -p /usr/local/etc
% ls -ld /usr/local/etc
drwxr-xr-x 4 bin bin 512 Dec 26 14:55 /usr/local/etc/
2) Cleaned up the mode handling to be more efficient when multiple
directories are being created.
3) Fixed a problem where directories could be created with the wrong mode
if the the -p option was specified and the build() routine returned
and error. It would leave the umask set incorrectly at this point.
4) Removed an unused variable.
Closes PR# 2304.
Revision Changes Path
1.10 +38 -29 src/bin/mkdir/mkdir.c
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199704012346.PAA14298>
