]> git.cworth.org Git - tar/blob - m4/getcwd.m4
Imported Upstream version 1.20
[tar] / m4 / getcwd.m4
1 # getcwd.m4 - check for working getcwd that is compatible with glibc
2
3 # Copyright (C) 2001, 2003, 2004, 2005, 2006, 2007 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 # Written by Paul Eggert.
9
10 AC_DEFUN([gl_FUNC_GETCWD_NULL],
11   [
12    AC_CACHE_CHECK([whether getcwd (NULL, 0) allocates memory for result],
13      [gl_cv_func_getcwd_null],
14      [AC_TRY_RUN(
15         [
16 #        include <stdlib.h>
17 #        include <unistd.h>
18 #        ifndef getcwd
19          char *getcwd ();
20 #        endif
21          int
22          main ()
23          {
24            if (chdir ("/") != 0)
25              exit (1);
26            else
27              {
28                char *f = getcwd (NULL, 0);
29                exit (! (f && f[0] == '/' && !f[1]));
30              }
31          }],
32         [gl_cv_func_getcwd_null=yes],
33         [gl_cv_func_getcwd_null=no],
34         [gl_cv_func_getcwd_null=no])])
35 ])
36
37 AC_DEFUN([gl_FUNC_GETCWD],
38 [
39   AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
40   AC_REQUIRE([gl_FUNC_GETCWD_NULL])
41
42   gl_abort_bug=no
43   case $gl_cv_func_getcwd_null in
44   yes)
45     gl_FUNC_GETCWD_PATH_MAX
46     gl_FUNC_GETCWD_ABORT_BUG([gl_abort_bug=yes]);;
47   esac
48
49   case $gl_cv_func_getcwd_null,$gl_cv_func_getcwd_path_max,$gl_abort_bug in
50   yes,yes,no) ;;
51   *)
52     REPLACE_GETCWD=1
53     AC_LIBOBJ([getcwd])
54     gl_PREREQ_GETCWD;;
55   esac
56 ])
57
58 # Prerequisites of lib/getcwd.c.
59 AC_DEFUN([gl_PREREQ_GETCWD],
60 [
61   AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
62   AC_REQUIRE([gl_CHECK_TYPE_STRUCT_DIRENT_D_INO])
63   :
64 ])