From: Bruno Haible Date: Mon, 28 May 2007 12:56:52 +0000 (+0000) Subject: When not cross-compiling, perform a real runtime test. X-Git-Tag: cvs-readonly~340 X-Git-Url: http://erislabs.net/gitweb/?a=commitdiff_plain;h=a7e014e7b0b338058315d6bcecc94a58c9a04c41;p=gnulib.git When not cross-compiling, perform a real runtime test. --- diff --git a/ChangeLog b/ChangeLog index 253ae37b6..807c5726e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-05-28 Bruno Haible + + * m4/lseek.m4 (gl_FUNC_LSEEK): When not cross-compiling, perform a real + runtime test. + 2007-05-28 Eric Blake Improve lseek module. diff --git a/m4/lseek.m4 b/m4/lseek.m4 index 075c2f42c..4877bfd2e 100644 --- a/m4/lseek.m4 +++ b/m4/lseek.m4 @@ -1,4 +1,4 @@ -# lseek.m4 serial 1 +# lseek.m4 serial 2 dnl Copyright (C) 2007 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -9,12 +9,32 @@ AC_DEFUN([gl_FUNC_LSEEK], AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) AC_REQUIRE([AC_PROG_CC]) AC_CACHE_CHECK([whether lseek detects pipes], [gl_cv_func_lseek_pipe], - [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include ], -[#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ + [if test $cross_compiling = no; then + AC_LINK_IFELSE([ +#include /* for off_t */ +#include /* for SEEK_CUR */ +#include +int main () +{ + /* Exit with success only if stdin is seekable. */ + return lseek (0, (off_t)0, SEEK_CUR) < 0; +}], + [if test -s conftest$ac_exeext \ + && ./conftest$ac_exeext < conftest.$ac_ext \ + && { echo hi | ./conftest$ac_exeext; test $? = 1; }; then + gl_cv_func_lseek_pipe=yes + else + gl_cv_func_lseek_pipe=no + fi], + [gl_cv_func_lseek_pipe=no]) + else + AC_LINK_IFELSE([ +#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ /* mingw mistakenly returns 0 when trying to seek on pipes. */ Choke me. -#endif])], - [gl_cv_func_lseek_pipe=yes], [gl_cv_func_lseek_pipe=no])]) +#endif], + [gl_cv_func_lseek_pipe=yes], [gl_cv_func_lseek_pipe=no]) + fi]) if test $gl_cv_func_lseek_pipe = no; then gl_REPLACE_LSEEK fi