1# serial 17 2 3# Copyright (C) 2001, 2003-2004, 2006, 2008-2022 Free Software Foundation, Inc. 4# This file is free software; the Free Software Foundation 5# gives unlimited permission to copy and/or distribute it, 6# with or without modifications, as long as this notice is preserved. 7 8# On some systems, mkdir ("foo/", 0700) fails because of the trailing slash. 9# On others, mkdir ("foo/./", 0700) mistakenly succeeds. 10# On such systems, arrange to use a wrapper function. 11AC_DEFUN([gl_FUNC_MKDIR], 12[dnl 13 AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS]) 14 AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles 15 AC_CHECK_HEADERS_ONCE([unistd.h]) 16 AC_CACHE_CHECK([whether mkdir handles trailing slash], 17 [gl_cv_func_mkdir_trailing_slash_works], 18 [rm -rf conftest.dir 19 AC_RUN_IFELSE( 20 [AC_LANG_PROGRAM([[ 21 #include <sys/types.h> 22 #include <sys/stat.h> 23 ]GL_MDA_DEFINES], 24 [[return mkdir ("conftest.dir/", 0700);]])], 25 [gl_cv_func_mkdir_trailing_slash_works=yes], 26 [gl_cv_func_mkdir_trailing_slash_works=no], 27 [case "$host_os" in 28 # Guess yes on Linux systems. 29 linux-* | linux) gl_cv_func_mkdir_trailing_slash_works="guessing yes" ;; 30 # Guess yes on glibc systems. 31 *-gnu* | gnu*) gl_cv_func_mkdir_trailing_slash_works="guessing yes" ;; 32 # Guess yes on MSVC, no on mingw. 33 mingw*) AC_EGREP_CPP([Known], [ 34#ifdef _MSC_VER 35 Known 36#endif 37 ], 38 [gl_cv_func_mkdir_trailing_slash_works="guessing yes"], 39 [gl_cv_func_mkdir_trailing_slash_works="guessing no"]) 40 ;; 41 # If we don't know, obey --enable-cross-guesses. 42 *) gl_cv_func_mkdir_trailing_slash_works="$gl_cross_guess_normal" ;; 43 esac 44 ]) 45 rm -rf conftest.dir 46 ]) 47 case "$gl_cv_func_mkdir_trailing_slash_works" in 48 *yes) ;; 49 *) 50 REPLACE_MKDIR=1 51 ;; 52 esac 53 54 AC_CACHE_CHECK([whether mkdir handles trailing dot], 55 [gl_cv_func_mkdir_trailing_dot_works], 56 [rm -rf conftest.dir 57 AC_RUN_IFELSE( 58 [AC_LANG_PROGRAM([[ 59 #include <sys/types.h> 60 #include <sys/stat.h> 61 ]GL_MDA_DEFINES], 62 [[return !mkdir ("conftest.dir/./", 0700);]])], 63 [gl_cv_func_mkdir_trailing_dot_works=yes], 64 [gl_cv_func_mkdir_trailing_dot_works=no], 65 [case "$host_os" in 66 # Guess yes on glibc systems. 67 *-gnu* | gnu*) gl_cv_func_mkdir_trailing_dot_works="guessing yes" ;; 68 # Guess yes on musl systems. 69 *-musl*) gl_cv_func_mkdir_trailing_dot_works="guessing yes" ;; 70 # Guess no on native Windows. 71 mingw*) gl_cv_func_mkdir_trailing_dot_works="guessing no" ;; 72 # If we don't know, obey --enable-cross-guesses. 73 *) gl_cv_func_mkdir_trailing_dot_works="$gl_cross_guess_normal" ;; 74 esac 75 ]) 76 rm -rf conftest.dir 77 ] 78 ) 79 case "$gl_cv_func_mkdir_trailing_dot_works" in 80 *yes) ;; 81 *) 82 REPLACE_MKDIR=1 83 AC_DEFINE([FUNC_MKDIR_DOT_BUG], [1], [Define to 1 if mkdir mistakenly 84 creates a directory given with a trailing dot component.]) 85 ;; 86 esac 87]) 88