An independent .m4 file for each module.
[gnulib.git] / m4 / getline.m4
index 834b1a2..d3e1114 100644 (file)
@@ -1,32 +1,40 @@
-#serial 3
+# getline.m4 serial 7
+dnl Copyright (C) 1998-2002 Free Software Foundation, Inc.
+dnl This file is free software, distributed under the terms of the GNU
+dnl General Public License.  As a special exception to the GNU General
+dnl Public License, this file may be distributed as part of a program
+dnl that contains a configuration script generated by Autoconf, under
+dnl the same distribution terms as the rest of that program.
+
+AC_PREREQ(2.52)
 
 dnl See if there's a working, system-supplied version of the getline function.
 dnl We can't just do AC_REPLACE_FUNCS(getline) because some systems
 dnl have a function by that name in -linet that doesn't have anything
 dnl to do with the function we need.
-AC_DEFUN(AM_FUNC_GETLINE,
-[dnl
+AC_DEFUN([AM_FUNC_GETLINE],
+[
+  dnl Persuade glibc <stdio.h> to declare getline() and getdelim().
+  AC_REQUIRE([AC_GNU_SOURCE])
+
   am_getline_needs_run_time_check=no
   AC_CHECK_FUNC(getline,
                dnl Found it in some library.  Verify that it works.
                am_getline_needs_run_time_check=yes,
                am_cv_func_working_getline=no)
   if test $am_getline_needs_run_time_check = yes; then
-    AC_CHECK_HEADERS(string.h)
     AC_CACHE_CHECK([for working getline function], am_cv_func_working_getline,
-    [echo fooN |tr -d '\012'|tr N '\012' > conftestdata
+    [echo fooN |tr -d '\012'|tr N '\012' > conftest.data
     AC_TRY_RUN([
 #    include <stdio.h>
-#    include <sys/types.h>
-#    if HAVE_STRING_H
-#     include <string.h>
-#    endif
+#    include <stdlib.h>
+#    include <string.h>
     int main ()
     { /* Based on a test program from Karl Heuer.  */
       char *line = NULL;
       size_t siz = 0;
       int len;
-      FILE *in = fopen ("./conftestdata", "r");
+      FILE *in = fopen ("./conftest.data", "r");
       if (!in)
        return 1;
       len = getline (&line, &siz, in);
@@ -39,7 +47,18 @@ AC_DEFUN(AM_FUNC_GETLINE,
   fi
 
   if test $am_cv_func_working_getline = no; then
-    LIBOBJS="$LIBOBJS getline.o"
-    AC_SUBST(LIBOBJS)dnl
+    dnl We must choose a different name for our function, since on ELF systems
+    dnl a broken getline() in libc.so would override our getline() in
+    dnl libgettextlib.so.
+    AC_DEFINE([getline], [gnu_getline],
+      [Define to a replacement function name for getline().])
+    AC_LIBOBJ(getline)
+    gl_PREREQ_GETLINE
   fi
 ])
+
+# Prerequisites of lib/getline.c.
+AC_DEFUN([gl_PREREQ_GETLINE],
+[
+  AC_CHECK_FUNCS(getdelim)
+])