1452999cbf25f9f0666d700a5438ff8da1e0fd8a
[platform/upstream/diffutils.git] / m4 / mkdir.m4
1 # serial 14
2
3 # Copyright (C) 2001, 2003-2004, 2006, 2008-2018 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.
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
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 no on native Windows.
66          mingw*)        gl_cv_func_mkdir_trailing_dot_works="guessing no" ;;
67                         # If we don't know, assume the worst.
68          *)             gl_cv_func_mkdir_trailing_dot_works="guessing no" ;;
69        esac
70       ])
71     rm -rf conftest.dir
72     ]
73   )
74   case "$gl_cv_func_mkdir_trailing_dot_works" in
75     *yes) ;;
76     *)
77       REPLACE_MKDIR=1
78       AC_DEFINE([FUNC_MKDIR_DOT_BUG], [1], [Define to 1 if mkdir mistakenly
79         creates a directory given with a trailing dot component.])
80       ;;
81   esac
82 ])