X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=m4%2Flseek.m4;h=f336990709c2636072aacfd763a764da1d12db4a;hb=606dd130bdce412935eca78598923720a7e346c4;hp=075c2f42c2108415cb87a073a313e5178123f044;hpb=e461ff7387db733080824cb94b239d8d1d09c4f3;p=gnulib.git diff --git a/m4/lseek.m4 b/m4/lseek.m4 index 075c2f42c..f33699070 100644 --- a/m4/lseek.m4 +++ b/m4/lseek.m4 @@ -1,4 +1,4 @@ -# lseek.m4 serial 1 +# lseek.m4 serial 4 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__ -/* mingw mistakenly returns 0 when trying to seek on pipes. */ + [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_COMPILE_IFELSE([ +#if ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) || defined __BEOS__ +/* mingw and BeOS mistakenly return 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