1# serial 16 2 3# Copyright (C) 2001, 2003-2004, 2006, 2008-2020 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([AC_LANG_PROGRAM([[ 20# include <sys/types.h> 21# include <sys/stat.h> 22]], [return mkdir ("conftest.dir/", 0700);])], 23 [gl_cv_func_mkdir_trailing_slash_works=yes], 24 [gl_cv_func_mkdir_trailing_slash_works=no], 25 [case "$host_os" in 26 # Guess yes on Linux systems. 27 linux-* | linux) gl_cv_func_mkdir_trailing_slash_works="guessing yes" ;; 28 # Guess yes on glibc systems. 29 *-gnu* | gnu*) gl_cv_func_mkdir_trailing_slash_works="guessing yes" ;; 30 # Guess yes on bsd systems. 31 *bsd*) 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 ) 48 case "$gl_cv_func_mkdir_trailing_slash_works" in 49 *yes) ;; 50 *) 51 REPLACE_MKDIR=1 52 ;; 53 esac 54 55 AC_CACHE_CHECK([whether mkdir handles trailing dot], 56 [gl_cv_func_mkdir_trailing_dot_works], 57 [rm -rf conftest.dir 58 AC_RUN_IFELSE([AC_LANG_PROGRAM([[ 59# include <sys/types.h> 60# include <sys/stat.h> 61]], [return !mkdir ("conftest.dir/./", 0700);])], 62 [gl_cv_func_mkdir_trailing_dot_works=yes], 63 [gl_cv_func_mkdir_trailing_dot_works=no], 64 [case "$host_os" in 65 # Guess yes on glibc systems. 66 *-gnu* | gnu*) gl_cv_func_mkdir_trailing_dot_works="guessing yes" ;; 67 # Guess yes on musl systems. 68 *-musl*) gl_cv_func_mkdir_trailing_dot_works="guessing yes" ;; 69 # Guess no on bsd Windows. 70 *bsd*) gl_cv_func_mkdir_trailing_dot_works="guessing yes" ;; 71 # Guess no on native Windows. 72 mingw*) gl_cv_func_mkdir_trailing_dot_works="guessing no" ;; 73 # If we don't know, obey --enable-cross-guesses. 74 *) gl_cv_func_mkdir_trailing_dot_works="$gl_cross_guess_normal" ;; 75 esac 76 ]) 77 rm -rf conftest.dir 78 ] 79 ) 80 case "$gl_cv_func_mkdir_trailing_dot_works" in 81 *yes) ;; 82 *) 83 REPLACE_MKDIR=1 84 AC_DEFINE([FUNC_MKDIR_DOT_BUG], [1], [Define to 1 if mkdir mistakenly 85 creates a directory given with a trailing dot component.]) 86 ;; 87 esac 88]) 89