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 10AC_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 37AC_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. 59AC_DEFUN([gl_PREREQ_GETCWD], 60[ 61 AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) 62 AC_REQUIRE([gl_CHECK_TYPE_STRUCT_DIRENT_D_INO]) 63 : 64]) 65