changeset 8710:9bf3bc2e7ed2

New module 'ftello'.
author Bruno Haible <bruno@clisp.org>
date Wed, 25 Apr 2007 07:51:53 +0000
parents 4ff5aa3e64d4
children cfc329ca943f
files ChangeLog lib/stdio_.h m4/ftello.m4 m4/stdio_h.m4 modules/ftello modules/stdio
diffstat 6 files changed, 70 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2007-04-25  Bruno Haible  <bruno@clisp.org>
+
+	* modules/ftello: New file.
+	* m4/ftello.m4: New file.
+	* m4/stdio_h.m4 (gl_STDIO_H_DEFAULTS): Set also GNULIB_FTELLO,
+	HAVE_FTELLO.
+	* lib/stdio_.h (ftello): New declaration.
+	* modules/stdio (Makefile.am): Substitute also GNULIB_FTELLO,
+	HAVE_FTELLO.
+
 2007-04-25  Bruno Haible  <bruno@clisp.org>
 
 	* modules/fseeko-tests: New file.
--- a/lib/stdio_.h
+++ b/lib/stdio_.h
@@ -220,6 +220,19 @@
     fseeko (f, o, w))
 #endif
 
+#if @GNULIB_FTELLO@
+# if !@HAVE_FTELLO@
+/* Assume 'off_t' is the same type as 'long'.  */
+#  define ftello ftell
+# endif
+#else
+# undef ftello
+# define ftello(f) \
+   (GL_LINK_WARNING ("ftello is unportable - " \
+                     "use gnulib module ftello for portability"), \
+    ftello (f))
+#endif
+
 #if @GNULIB_FFLUSH@
 # if @REPLACE_FFLUSH@
 #  define fflush rpl_fflush
new file mode 100644
--- /dev/null
+++ b/m4/ftello.m4
@@ -0,0 +1,19 @@
+# ftello.m4 serial 1
+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,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_FTELLO],
+[
+  AC_REQUIRE([gl_STDIO_H_DEFAULTS])
+  AC_REQUIRE([AC_PROG_CC])
+  AC_CACHE_CHECK([for ftello], [gl_cv_func_ftello],
+    [
+      AC_TRY_LINK([#include <stdio.h>], [ftello (stdin);],
+        [gl_cv_func_ftello=yes], [gl_cv_func_ftello=no])
+    ])
+  if test $gl_cv_func_ftello = no; then
+    HAVE_FTELLO=0
+  fi
+])
--- a/m4/stdio_h.m4
+++ b/m4/stdio_h.m4
@@ -31,6 +31,7 @@
   GNULIB_VSPRINTF_POSIX=0; AC_SUBST([GNULIB_VSPRINTF_POSIX])
   GNULIB_VASPRINTF=0;      AC_SUBST([GNULIB_VASPRINTF])
   GNULIB_FSEEKO=0;         AC_SUBST([GNULIB_FSEEKO])
+  GNULIB_FTELLO=0;         AC_SUBST([GNULIB_FTELLO])
   GNULIB_FFLUSH=0;         AC_SUBST([GNULIB_FFLUSH])
   dnl Assume proper GNU behavior unless another module says otherwise.
   REPLACE_FPRINTF=0;       AC_SUBST([REPLACE_FPRINTF])
@@ -46,5 +47,6 @@
   HAVE_VASPRINTF=1;        AC_SUBST([HAVE_VASPRINTF])
   REPLACE_VASPRINTF=0;     AC_SUBST([REPLACE_VASPRINTF])
   HAVE_FSEEKO=1;           AC_SUBST([HAVE_FSEEKO])
+  HAVE_FTELLO=1;           AC_SUBST([HAVE_FTELLO])
   REPLACE_FFLUSH=0;        AC_SUBST([REPLACE_FFLUSH])
 ])
new file mode 100644
--- /dev/null
+++ b/modules/ftello
@@ -0,0 +1,24 @@
+Description:
+ftello() function: Retrieve the position of a FILE stream.
+
+Files:
+m4/ftello.m4
+
+Depends-on:
+stdio
+
+configure.ac:
+gl_FUNC_FTELLO
+gl_STDIO_MODULE_INDICATOR([ftello])
+
+Makefile.am:
+
+Include:
+<stdio.h>
+
+License:
+LGPL
+
+Maintainer:
+Bruno Haible
+
--- a/modules/stdio
+++ b/modules/stdio
@@ -31,6 +31,7 @@
 	      -e 's|@''GNULIB_VSPRINTF_POSIX''@|$(GNULIB_VSPRINTF_POSIX)|g' \
 	      -e 's|@''GNULIB_VASPRINTF''@|$(GNULIB_VASPRINTF)|g' \
 	      -e 's|@''GNULIB_FSEEKO''@|$(GNULIB_FSEEKO)|g' \
+	      -e 's|@''GNULIB_FTELLO''@|$(GNULIB_FTELLO)|g' \
 	      -e 's|@''GNULIB_FFLUSH''@|$(GNULIB_FFLUSH)|g' \
 	      -e 's|@''REPLACE_FPRINTF''@|$(REPLACE_FPRINTF)|g' \
 	      -e 's|@''REPLACE_VFPRINTF''@|$(REPLACE_VFPRINTF)|g' \
@@ -45,6 +46,7 @@
 	      -e 's|@''HAVE_VASPRINTF''@|$(HAVE_VASPRINTF)|g' \
 	      -e 's|@''REPLACE_VASPRINTF''@|$(REPLACE_VASPRINTF)|g' \
 	      -e 's|@''HAVE_FSEEKO''@|$(HAVE_FSEEKO)|g' \
+	      -e 's|@''HAVE_FTELLO''@|$(HAVE_FTELLO)|g' \
 	      -e 's|@''REPLACE_FFLUSH''@|$(REPLACE_FFLUSH)|g' \
 	      -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
 	      < $(srcdir)/stdio_.h; \