X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=m4%2Flseek.m4;h=9bf4dc2d046b4536500fd5526f1ab178976b91e1;hb=b3c3b08eab509ef08c9303b05375088575f8cc1b;hp=075c2f42c2108415cb87a073a313e5178123f044;hpb=e461ff7387db733080824cb94b239d8d1d09c4f3;p=gnulib.git diff --git a/m4/lseek.m4 b/m4/lseek.m4 index 075c2f42c..9bf4dc2d0 100644 --- a/m4/lseek.m4 +++ b/m4/lseek.m4 @@ -1,5 +1,5 @@ -# lseek.m4 serial 1 -dnl Copyright (C) 2007 Free Software Foundation, Inc. +# lseek.m4 serial 5 +dnl Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -9,12 +9,33 @@ 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 \ + && test 1 = "`echo hi \ + | { ./conftest$ac_exeext; echo $?; cat >/dev/null; }`"; 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 @@ -26,5 +47,5 @@ AC_DEFUN([gl_REPLACE_LSEEK], AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) REPLACE_LSEEK=1 AC_DEFINE([LSEEK_PIPE_BROKEN], [1], - [Define to 1 if lseek does not detect pipes.]) + [Define to 1 if lseek does not detect pipes.]) ])