X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=m4%2Fgetcwd.m4;h=4b8c4c6ce1001d4b3c9139842728daca4da7ead0;hb=84405cbc35207f178b1b50617254cb85ea803128;hp=2e854751169baf7929b7a67fa144617fc30b0616;hpb=e74d04a8682cb37afd40f7f7d55580e3e97b48ce;p=gnulib.git diff --git a/m4/getcwd.m4 b/m4/getcwd.m4 index 2e8547511..4b8c4c6ce 100644 --- a/m4/getcwd.m4 +++ b/m4/getcwd.m4 @@ -1,58 +1,72 @@ # getcwd.m4 - check for working getcwd that is compatible with glibc -# Copyright (C) 2001, 2003, 2004, 2005 Free Software Foundation, Inc. +# Copyright (C) 2001, 2003, 2004, 2005, 2006, 2007, 2009 Free Software +# Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # Written by Paul Eggert. +# serial 2 AC_DEFUN([gl_FUNC_GETCWD_NULL], [ - AC_LIBSOURCES([getcwd.c, getcwd.h]) - - AC_CHECK_HEADERS_ONCE(unistd.h) AC_CACHE_CHECK([whether getcwd (NULL, 0) allocates memory for result], [gl_cv_func_getcwd_null], - [AC_TRY_RUN( - [ -# include -# ifdef HAVE_UNISTD_H -# include -# endif + [AC_RUN_IFELSE([AC_LANG_PROGRAM([[ +# include # ifndef getcwd char *getcwd (); # endif - int - main () - { +]], [[ +#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ +/* mingw cwd does not start with '/', but getcwd does allocate. */ +#else if (chdir ("/") != 0) - exit (1); + return 1; else { char *f = getcwd (NULL, 0); - exit (! (f && f[0] == '/' && !f[1])); + return ! (f && f[0] == '/' && !f[1]); } - }], +#endif + ]])], [gl_cv_func_getcwd_null=yes], [gl_cv_func_getcwd_null=no], - [gl_cv_func_getcwd_null=no])]) + [[ + case "$host_os" in + # Guess yes on glibc systems. + *-gnu*) gl_cv_func_getcwd_null="guessing yes";; + # Guess yes on Cygwin. + cygwin*) gl_cv_func_getcwd_null="guessing yes";; + # Guess yes on mingw. + mingw*) gl_cv_func_getcwd_null="guessing yes";; + # If we don't know, assume the worst. + *) gl_cv_func_getcwd_null="guessing no";; + esac + ]])]) ]) AC_DEFUN([gl_FUNC_GETCWD], [ + AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) AC_REQUIRE([gl_FUNC_GETCWD_NULL]) + AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles - case $gl_cv_func_getcwd_null in - yes) gl_FUNC_GETCWD_PATH_MAX;; + gl_abort_bug=no + case $gl_cv_func_getcwd_null,$host_os in + *,mingw*) + gl_cv_func_getcwd_path_max=yes;; + yes,*) + gl_FUNC_GETCWD_PATH_MAX + gl_FUNC_GETCWD_ABORT_BUG([gl_abort_bug=yes]);; esac - case $gl_cv_func_getcwd_null,$gl_cv_func_getcwd_path_max in - yes,yes) ;; + case $gl_cv_func_getcwd_null,$gl_cv_func_getcwd_path_max,$gl_abort_bug in + *yes,yes,no) ;; *) + REPLACE_GETCWD=1 AC_LIBOBJ([getcwd]) - AC_DEFINE([__GETCWD_PREFIX], [[rpl_]], - [Define to rpl_ if the getcwd replacement function should be used.]) gl_PREREQ_GETCWD;; esac ]) @@ -61,7 +75,6 @@ AC_DEFUN([gl_FUNC_GETCWD], AC_DEFUN([gl_PREREQ_GETCWD], [ AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) - AC_REQUIRE([AC_HEADER_DIRENT]) AC_REQUIRE([gl_CHECK_TYPE_STRUCT_DIRENT_D_INO]) : ])