Commit | Line | Data |
---|---|---|
c0c3707f | 1 | # serial 16 |
8a99096f | 2 | |
5df4cba6 | 3 | # Copyright (C) 2001, 2003-2004, 2006, 2008-2020 Free Software Foundation, Inc. |
8a99096f SM |
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. | |
11 | AC_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 | |
c0c3707f CB |
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, obey --enable-cross-guesses. | |
40 | *) gl_cv_func_mkdir_trailing_slash_works="$gl_cross_guess_normal" ;; | |
8a99096f SM |
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 | |
c0c3707f CB |
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, obey --enable-cross-guesses. | |
70 | *) gl_cv_func_mkdir_trailing_dot_works="$gl_cross_guess_normal" ;; | |
8a99096f SM |
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 | ]) |