mirror of
https://git.savannah.gnu.org/git/gnulib.git
synced 2025-08-17 12:41:05 +03:00
mkdir("dir/./",mode) mistakenly succeeded. * lib/mkdir.c (rpl_mkdir) [FUNC_MKDIR_DOT_BUG]: Work around bug. * m4/mkdir-slash.m4 (gl_FUNC_MKDIR_TRAILING_SLASH): Move... * m4/mkdir.m4 (gl_FUNC_MKDIR): ...here, and add check for cygwin bug. (gl_PREREQ_MKDIR): Delete unused macro. * modules/mkdir (Files): Track file rename. (configure.ac): Update macro name. * modules/openat (Depends-on): Add mkdir. * doc/posix-functions/mkdir.texi (mkdir): Document the bug. Signed-off-by: Eric Blake <ebb9@byu.net>
33 lines
798 B
Plaintext
33 lines
798 B
Plaintext
@node mkdir
|
|
@section @code{mkdir}
|
|
@findex mkdir
|
|
|
|
POSIX specification: @url{http://www.opengroup.org/onlinepubs/9699919799/functions/mkdir.html}
|
|
|
|
Gnulib module: mkdir
|
|
|
|
Portability problems fixed by Gnulib:
|
|
@itemize
|
|
@item
|
|
When the argument ends in a slash, the function call fails on some platforms.
|
|
@item
|
|
This function mistakenly succeeds on @samp{mkdir("d/./",mode)} on
|
|
some platforms:
|
|
Cygwin 1.5.x, mingw.
|
|
@item
|
|
On Windows platforms (excluding Cygwin), this function is called @code{_mkdir}
|
|
and takes only one argument. The fix (without Gnulib) is to define a macro
|
|
like this:
|
|
@smallexample
|
|
#define mkdir ((int (*)()) _mkdir)
|
|
@end smallexample
|
|
or
|
|
@smallexample
|
|
#define mkdir(path,mode) _mkdir (path)
|
|
@end smallexample
|
|
@end itemize
|
|
|
|
Portability problems not fixed by Gnulib:
|
|
@itemize
|
|
@end itemize
|