1# serial 15 2 3# Copyright (C) 2001, 2003-2004, 2006, 2008-2019 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 MSVC, no on mingw. 31 mingw*) AC_EGREP_CPP([Known], [ 32#ifdef _MSC_VER 33 Known 34#endif 35 ], 36 [gl_cv_func_mkdir_trailing_slash_works="guessing yes"], 37 [gl_cv_func_mkdir_trailing_slash_works="guessing no"]) 38 ;; 39 # If we don't know, assume the worst. 40 *) gl_cv_func_mkdir_trailing_slash_works="guessing no" ;; 41 esac 42 ]) 43 rm -rf conftest.dir 44 ] 45 ) 46 case "$gl_cv_func_mkdir_trailing_slash_works" in 47 *yes) ;; 48 *) 49 REPLACE_MKDIR=1 50 ;; 51 esac 52 53 AC_CACHE_CHECK([whether mkdir handles trailing dot], 54 [gl_cv_func_mkdir_trailing_dot_works], 55 [rm -rf conftest.dir 56 AC_RUN_IFELSE([AC_LANG_PROGRAM([[ 57# include <sys/types.h> 58# include <sys/stat.h> 59]], [return !mkdir ("conftest.dir/./", 0700);])], 60 [gl_cv_func_mkdir_trailing_dot_works=yes], 61 [gl_cv_func_mkdir_trailing_dot_works=no], 62 [case "$host_os" in 63 # Guess yes on glibc systems. 64 *-gnu* | gnu*) gl_cv_func_mkdir_trailing_dot_works="guessing yes" ;; 65 # Guess yes on musl systems. 66 *-musl*) gl_cv_func_mkdir_trailing_dot_works="guessing yes" ;; 67 # Guess no on native Windows. 68 mingw*) gl_cv_func_mkdir_trailing_dot_works="guessing no" ;; 69 # If we don't know, assume the worst. 70 *) gl_cv_func_mkdir_trailing_dot_works="guessing no" ;; 71 esac 72 ]) 73 rm -rf conftest.dir 74 ] 75 ) 76 case "$gl_cv_func_mkdir_trailing_dot_works" in 77 *yes) ;; 78 *) 79 REPLACE_MKDIR=1 80 AC_DEFINE([FUNC_MKDIR_DOT_BUG], [1], [Define to 1 if mkdir mistakenly 81 creates a directory given with a trailing dot component.]) 82 ;; 83 esac 84]) 85