bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Bug-gnulib] getline & getline_safe


From: Derek Robert Price
Subject: Re: [Bug-gnulib] getline & getline_safe
Date: Thu, 17 Jul 2003 15:35:04 -0400
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030624 Netscape/7.1

Bruno Haible wrote:

The way I've done it now, programs which need both getline() and getnline()

will end up with two copies of the same code, on non-glibc systems. OTOH,
if you do it differently, you end up with getnline() code on glibc systems,
for programs which only need getline(). The latter seems worse to me.

On the contrary, you would only end up with both functions on non-glibc systems the way I wrote the code. If getline is detected neither module is compiled unless specifically requested (via the gl_GETNLINE or gl_GETNDELIM2 macro calls). If getline is not detected but getdelim is, getndelim2 is _still_ not compiled.

In any case, I was alomst done with a very similar solution to yours when I got your email, so I merged my changes, carried through some of yours, and fixed a few bugs in my original patch which also existed in yours (I checked my version into CVS last night and it went out to be tested on some dozen platforms with mixed results - at this point, at least most of the bugs should have been fixed though not all platforms have checked in for the second time).

I also installed getndelim2 as a separate module since Jim Meyering requested it.

Are you avoiding using my patches directly because you do not have FSF paperwork from me? I already have papers on file for autoconf, automake, and libtool and I have been committing to the CVS project frequently for years and years, but would be happy to fill out gnulib specific paperwork, or even general paperwork at this point. I had an employer that I didn't want to run the completely general paperwork by at the time I filled those out, though it might actually have been the general versions.

The new patch follows:

        * lib/getndelim2.h: New file.
        * m4/getndelim2.m4: Ditto.
        * modules/getndelim2: Ditto.

        * lib/getline.c (getline, getdelim): Include sys/types for ssize_t.
        Make functions return ssize_t rather than int.  Carry through Bruno's n
        => linesize changes.  Depend on new getndelim2 API.
        * lib/getline.h: Include config.h when possible.  Include sys/types.h
        for ssize_t.  Prototype functions to return ssize_t rather than int.
        Switch getline & getdelim protos on what configure actually detected
        rather than the value of __GLIBC__.  Carry through Bruno's n=> linesize
        changes.
        * lib/getndelim2.c (getndelim2): Include config.h before switching on
        values it defines.  Include sys/types.h for ssize_t.  Return ssize_t.
        Undo most of Bruno's changes and rewrite to set a maximum number of
        characters read rather than a maximum length to allocate.
        * lib/getnline.c (getnline, getndelim): Make limit a maximum number of
        character to read rather than memory to allocate.  Include sys/types.h
        for ssize_t.  Carry through Bruno's n=> linesize changes.  Use new
        getndelim2 API.
        * lib/getnline.h: Document new behavior.  Use new API.
        * m4/getline.m4: Increment serial.  Define HAVE_WORKING_GETLINE &
        HAVE_GETDELIM properly.  Call gl_GETNDELIM2 when necessary.
        * m4/getnline.m4: Depend on gl_GETNDELIM2.
        * modules/getline: Document changes.
        * modules/getnline: Ditto.



Index: lib/getline.c
===================================================================
RCS file: /cvsroot/gnulib/gnulib/lib/getline.c,v
retrieving revision 1.13
diff -u -r1.13 getline.c
--- lib/getline.c       17 Jul 2003 16:23:52 -0000      1.13
+++ lib/getline.c       17 Jul 2003 19:09:57 -0000
@@ -17,7 +17,9 @@
   along with this program; if not, write to the Free Software Foundation,
   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */

-/* Written by Jan Brittenson, address@hidden  */
+/* Adapted by Derek Price <address@hidden>
+ * from getline.c written by Jan Brittenson <address@hidden>.
+ */

#if HAVE_CONFIG_H
# include <config.h>
@@ -34,28 +36,32 @@

#include <stddef.h>
#include <stdio.h>
+#include <sys/types.h> /* Included for ssize_t. */

#if defined __GNU_LIBRARY__ && HAVE_GETDELIM

-int
-getline (char **lineptr, size_t *n, FILE *stream)
+
+ssize_t
+getline (char **lineptr, size_t *linesize, FILE *stream)
{
-  return getdelim (lineptr, n, '\n', stream);
+  return getdelim (lineptr, linesize, '\n', stream);
}

#else /* ! have getdelim */

-#include "getndelim2.c"
+# include "getndelim2.h"

-int
-getline (char **lineptr, size_t *n, FILE *stream)
+ssize_t
+getline (char **lineptr, size_t *linesize, FILE *stream)
{
-  return getndelim2 (lineptr, n, (size_t)(-1), stream, '\n', 0, 0);
+  return getndelim2 (lineptr, linesize, 0, GETNDELIM_NO_LIMIT, '\n', 0,
+                     stream);
}

int
-getdelim (char **lineptr, size_t *n, int delimiter, FILE *stream)
+getdelim (char **lineptr, size_t *linesize, int delimiter, FILE *stream)
{
-  return getndelim2 (lineptr, n, (size_t)(-1), stream, delimiter, 0, 0);
+  return getndelim2 (lineptr, linesize, 0, GETNDELIM_NO_LIMIT, delimiter, 0,
+                     stream);
}
-#endif
+#endif /* have getdelim */
Index: lib/getline.h
===================================================================
RCS file: /cvsroot/gnulib/gnulib/lib/getline.h,v
retrieving revision 1.12
diff -u -r1.12 getline.h
--- lib/getline.h       18 Jun 2003 05:52:19 -0000      1.12
+++ lib/getline.h       17 Jul 2003 19:09:57 -0000
@@ -20,16 +20,26 @@
#ifndef GETLINE_H_
# define GETLINE_H_ 1

+#if HAVE_CONFIG_H
+# include <config.h>
+#endif
+
# include <stddef.h>
# include <stdio.h>
+# include <sys/types.h> /* Included for ssize_t. */

/* glibc2 has these functions declared in <stdio.h>.  Avoid redeclarations.  */
-# if __GLIBC__ < 2
+# if !HAVE_WORKING_GETLINE
+
+extern ssize_t getline (char **_lineptr, size_t *_linesize, FILE *_stream);
+
+# endif /* ! have getline */

-int getline (char **_lineptr, size_t *_n, FILE *_stream);
+# if !HAVE_GETDELIM

-int getdelim (char **_lineptr, size_t *_n, int _delimiter, FILE *_stream);
+extern ssize_t getdelim (char **_lineptr, size_t *_linesize, int _delimiter,
+                         FILE *_stream);

-# endif
+# endif /* ! have getdelim */

#endif /* not GETLINE_H_ */
Index: lib/getndelim2.c
===================================================================
RCS file: /cvsroot/gnulib/gnulib/lib/getndelim2.c,v
retrieving revision 1.1
diff -u -r1.1 getndelim2.c
--- lib/getndelim2.c    17 Jul 2003 16:23:52 -0000      1.1
+++ lib/getndelim2.c    17 Jul 2003 19:09:57 -0000
@@ -1,4 +1,5 @@
-/* getndelim2 - Core of getline, getdelim, getnline, getndelim.
+/* getndelim2 - Read n characters or less from a stream, stopping at one of up
+   to two specified delimiters.

   Copyright (C) 1993, 1996, 1997, 1998, 2000, 2003 Free Software
   Foundation, Inc.
@@ -17,6 +18,20 @@
   along with this program; if not, write to the Free Software Foundation,
   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */

+/* Adapted by Derek Price <address@hidden>
+ * from getline.c written by Jan Brittenson <address@hidden>.
+ */
+
+#if HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include "getndelim2.h"
+
+#include <stddef.h>
+#include <stdio.h>
+#include <sys/types.h> /* Included for ssize_t. */
+
#if STDC_HEADERS
# include <stdlib.h>
#else
@@ -32,30 +47,23 @@
   + OFFSET (and NUL-terminate it).  If DELIM2 is non-zero, then read up
   and including the first occurrence of DELIM1 or DELIM2.  *LINEPTR is
   a pointer returned from malloc (or NULL), pointing to *LINESIZE bytes of
-   space.  It is realloc'd as necessary.  Reallocation is limited to
-   NMAX bytes; if the line is longer than that, the extra bytes are read but
-   thrown away.
+   space.  It is realloc'd as necessary.  Read no more than LIMIT bytes.
   Return the number of bytes read and stored at *LINEPTR + OFFSET (not
   including the NUL terminator), or -1 on error or EOF.  */

-static int
-getndelim2 (char **lineptr, size_t *linesize, size_t nmax,
-           FILE *stream, int delim1, int delim2, size_t offset)
+ssize_t
+getndelim2 (char **lineptr, size_t *linesize, size_t offset, int limit,
+            int delim1, int delim2, FILE *stream)
{
  size_t nbytes_avail;          /* Allocated but unused chars in *LINEPTR.  */
  char *read_pos;               /* Where we're reading into *LINEPTR. */

-  if (!lineptr || !linesize || !nmax || !stream)
+  if (!lineptr || !linesize || !stream)
    return -1;

  if (!*lineptr)
    {
-      size_t newlinesize = MIN_CHUNK;
-
-      if (newlinesize > nmax)
-       newlinesize = nmax;
-
-      *linesize = newlinesize;
+      *linesize = MIN_CHUNK;
      *lineptr = malloc (*linesize);
      if (!*lineptr)
        return -1;
@@ -67,36 +75,35 @@
  nbytes_avail = *linesize - offset;
  read_pos = *lineptr + offset;

-  if (nbytes_avail == 0 && *linesize >= nmax)
-    return -1;
-
  for (;;)
    {
      /* Here always *lineptr + *linesize == read_pos + nbytes_avail.  */
+      register int c;

-      register int c = getc (stream);
+      if (limit == 0)
+       break;
+
+      c = getc (stream);
+
+      if (limit != GETNDELIM_NO_LIMIT)
+       limit--;

      /* We always want at least one char left in the buffer, since we
         always (unless we get an error while reading the first char)
         NUL-terminate the line buffer.  */

-      if (nbytes_avail < 2 && *linesize < nmax)
+      if (nbytes_avail < 2)
        {
-         size_t newlinesize =
-           (*linesize > MIN_CHUNK ? 2 * *linesize : *linesize + MIN_CHUNK);
-
-         if (newlinesize > nmax)
-           newlinesize = nmax;
+         if (*linesize > MIN_CHUNK)
+           *linesize *= 2;
+         else
+           *linesize += MIN_CHUNK;

-         if (newlinesize > *linesize)
-           {
-             *linesize = newlinesize;
-             nbytes_avail = *linesize + *lineptr - read_pos;
-             *lineptr = realloc (*lineptr, *linesize);
-             if (!*lineptr)
-               return -1;
-             read_pos = *linesize - nbytes_avail + *lineptr;
-           }
+         nbytes_avail = *linesize + *lineptr - read_pos;
+         *lineptr = realloc (*lineptr, *linesize);
+         if (!*lineptr)
+           return -1;
+         read_pos = *linesize - nbytes_avail + *lineptr;
        }

      if (c == EOF || ferror (stream))
@@ -108,19 +115,15 @@
            break;
        }

-      if (nbytes_avail >= 2)
-       {
-         *read_pos++ = c;
-         nbytes_avail--;
-       }
+      *read_pos++ = c;
+      nbytes_avail--;

      if (c == delim1 || (delim2 && c == delim2))
        /* Return the line.  */
        break;
    }

-  /* Done - NUL terminate and return the number of chars read.
-     At this point we know that nbytes_avail >= 1.  */
+  /* Done - NUL terminate and return the number of chars read.  */
  *read_pos = '\0';

  return read_pos - (*lineptr + offset);
Index: lib/getndelim2.h
===================================================================
RCS file: lib/getndelim2.h
diff -N lib/getndelim2.h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ lib/getndelim2.h    17 Jul 2003 19:09:57 -0000
@@ -0,0 +1,32 @@
+/* getndelim2 - Read n characters or less from a stream, stopping at one of up
+   to two specified delimiters.
+
+   Copyright (C) 2003 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
+
+#ifndef GETNDELIM2_H_
+# define GETNDELIM2_H_ 1
+
+# include <stddef.h>
+# include <stdio.h>
+# include <sys/types.h> /* Included for ssize_t. */
+
+# define GETNDELIM_NO_LIMIT (ssize_t)-1
+
+ssize_t getndelim2 (char **lineptr, size_t *n, size_t offset, int limit,
+                    int delim1, int delim2, FILE *stream);
+
+#endif /* not GETNDELIM2_H */
Index: lib/getnline.c
===================================================================
RCS file: /cvsroot/gnulib/gnulib/lib/getnline.c,v
retrieving revision 1.1
diff -u -r1.1 getnline.c
--- lib/getnline.c      17 Jul 2003 16:23:52 -0000      1.1
+++ lib/getnline.c      17 Jul 2003 19:09:57 -0000
@@ -1,4 +1,4 @@
-/* getnline - Read a line from a stream, with bounded memory allocation.
+/* getnline - Read a line of n characters or less from a stream.

   Copyright (C) 2003 Free Software Foundation, Inc.

@@ -16,6 +16,10 @@
   along with this program; if not, write to the Free Software Foundation,
   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */

+/* Adapted by Derek Price <address@hidden>
+ * from getline.c written by Jan Brittenson <address@hidden>.
+ */
+
#if HAVE_CONFIG_H
# include <config.h>
#endif
@@ -23,15 +27,21 @@
/* Specification.  */
#include "getnline.h"

+#include <stddef.h>
+#include <stdio.h>
+#include <sys/types.h> /* Included for ssize_t. */
+
+#include "getndelim2.h"
+
ssize_t
-getnline (char **lineptr, size_t *linesize, size_t nmax, FILE *stream)
+getnline (char **lineptr, size_t *linesize, int limit, FILE *stream)
{
-  return getndelim2 (lineptr, linesize, (size_t)(-1), stream, '\n', 0, 0);
+  return getndelim2 (lineptr, linesize, 0, limit, '\n', 0, stream);
}

ssize_t
-getndelim (char **lineptr, size_t *linesize, size_t nmax,
-          int delimiter, FILE *stream)
+getndelim (char **lineptr, size_t *linesize, int limit, int delimiter,
+           FILE *stream)
{
-  return getndelim2 (lineptr, linesize, (size_t)(-1), stream, delimiter, 0, 0);
+  return getndelim2 (lineptr, linesize, 0, limit, delimiter, 0, stream);
}
Index: lib/getnline.h
===================================================================
RCS file: /cvsroot/gnulib/gnulib/lib/getnline.h,v
retrieving revision 1.1
diff -u -r1.1 getnline.h
--- lib/getnline.h      17 Jul 2003 16:23:52 -0000      1.1
+++ lib/getnline.h      17 Jul 2003 19:09:57 -0000
@@ -1,4 +1,4 @@
-/* getnline - Read a line from a stream, with bounded memory allocation.
+/* getnline - Read a line of n characters or less from a stream.

   Copyright (C) 2003 Free Software Foundation, Inc.

@@ -17,33 +17,29 @@
   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */

#ifndef GETNLINE_H
-#define GETNLINE_H 1
-
-#include <stddef.h>
-#include <stdio.h>
-
-/* Get ssize_t.  */
-#include <sys/types.h>
+# define GETNLINE_H 1

+# include <stddef.h>
+# include <stdio.h>
+# include <sys/types.h> /* Included for ssize_t. */
+ /* Read a line, up to the next newline, from STREAM, and store it in *LINEPTR.
   *LINEPTR is a pointer returned from malloc (or NULL), pointing to *LINESIZE
-   bytes of space.  It is realloc'd as necessary.  Reallocation is limited to
-   NMAX bytes; if the line is longer than that, the extra bytes are read but
-   thrown away.
+   bytes of space.  It is realloc'd as necessary.  Read no more than LIMIT
+   bytes.
   Return the number of bytes read and stored at *LINEPTR (not including the
   NUL terminator), or -1 on error or EOF.  */
-extern ssize_t getnline (char **lineptr, size_t *linesize, size_t nmax,
-                        FILE *stream);
+extern ssize_t getnline (char **_lineptr, size_t *_linesize, int limit,
+                         FILE *_stream);

/* Read a line, up to the next occurrence of DELIMITER, from STREAM, and store
   it in *LINEPTR.
   *LINEPTR is a pointer returned from malloc (or NULL), pointing to *LINESIZE
-   bytes of space.  It is realloc'd as necessary.  Reallocation is limited to
-   NMAX bytes; if the line is longer than that, the extra bytes are read but
-   thrown away.
+   bytes of space.  It is realloc'd as necessary.  Read no more than LIMIT
+   bytes.
   Return the number of bytes read and stored at *LINEPTR (not including the
   NUL terminator), or -1 on error or EOF.  */
-extern ssize_t getndelim (char **lineptr, size_t *linesize, size_t nmax,
-                         int delimiter, FILE *stream);
+extern ssize_t getndelim (char **_lineptr, size_t *_linesize, int limit,
+                          int _delimiter, FILE *_stream);

#endif /* GETNLINE_H */
Index: m4/getline.m4
===================================================================
RCS file: /cvsroot/gnulib/gnulib/m4/getline.m4,v
retrieving revision 1.11
diff -u -r1.11 getline.m4
--- m4/getline.m4       13 Jan 2003 07:08:00 -0000      1.11
+++ m4/getline.m4       17 Jul 2003 19:09:57 -0000
@@ -1,4 +1,4 @@
-# getline.m4 serial 8
+# getline.m4 serial 9

dnl Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software
dnl Foundation, Inc.
@@ -22,9 +22,9 @@

  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)
+                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_CACHE_CHECK([for working getline function], am_cv_func_working_getline,
    [echo fooN |tr -d '\012'|tr N '\012' > conftest.data
@@ -49,7 +49,15 @@
    )])
  fi

-  if test $am_cv_func_working_getline = no; then
+  if test $am_cv_func_working_getline = yes; then
+    AC_DEFINE([HAVE_WORKING_GETLINE], [1],
+      [Define to 1 if your system has a working GNU getline() function.])
+    dnl Currently, we assume getdelim() in this case.  Moving the check for
+    dnl getdelim() up in front of this conditional doesn't make much sense
+    dnl unless we provide for having getline w/o getdelim in the *.{c,h} files.
+    AC_DEFINE([HAVE_GETDELIM], [1],
+      [Define to 1 if your system has the GNU getdelim() function.])
+  else
    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.
@@ -63,6 +71,11 @@
# Prerequisites of lib/getline.c.
AC_DEFUN([gl_PREREQ_GETLINE],
[
-  AC_REQUIRE([AC_HEADER_STDC])
-  AC_CHECK_FUNCS(getdelim)
+  AC_CHECK_FUNCS(getdelim,
+                 dnl found it.
+                 gl_have_getdelim=yes,
+                 gl_have_getdelim=no)
+  if test $gl_have_getdelim = no; then
+    gl_GETNDELIM2
+  fi
])
Index: m4/getndelim2.m4
===================================================================
RCS file: m4/getndelim2.m4
diff -N m4/getndelim2.m4
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ m4/getndelim2.m4    17 Jul 2003 19:09:57 -0000
@@ -0,0 +1,16 @@
+# getndelim2.m4 serial 1
+
+dnl Copyright (C) 2003 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_DEFUN([gl_GETNDELIM2],
+[
+  AC_REQUIRE([AC_HEADER_STDC])
+  AC_REQUIRE([gt_TYPE_SSIZE_T])
+  AC_LIBOBJ(getndelim2)
+])
Index: m4/getnline.m4
===================================================================
RCS file: /cvsroot/gnulib/gnulib/m4/getnline.m4,v
retrieving revision 1.1
diff -u -r1.1 getnline.m4
--- m4/getnline.m4      17 Jul 2003 16:23:52 -0000      1.1
+++ m4/getnline.m4      17 Jul 2003 19:09:57 -0000
@@ -1,5 +1,7 @@
# getnline.m4 serial 1
+
dnl Copyright (C) 2003 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
@@ -8,8 +10,6 @@

AC_DEFUN([gl_GETNLINE],
[
-  dnl Prerequisites of lib/getnline.h.
-  AC_REQUIRE([gt_TYPE_SSIZE_T])
-  dnl Prerequisites of lib/getnline.c.
-  AC_REQUIRE([AC_HEADER_STDC])
+  gl_GETNDELIM2
+  AC_LIBOBJ(getnline)
])
Index: modules/getline
===================================================================
RCS file: /cvsroot/gnulib/gnulib/modules/getline,v
retrieving revision 1.5
diff -u -r1.5 getline
--- modules/getline     17 Jul 2003 16:23:52 -0000      1.5
+++ modules/getline     17 Jul 2003 19:09:58 -0000
@@ -4,8 +4,11 @@
Files:
lib/getline.h
lib/getline.c
+lib/getndelim2.h
lib/getndelim2.c
m4/getline.m4
+m4/getndelim2.m4
+m4/ssize_t.m4

Depends-on:
unlocked-io
@@ -14,8 +17,7 @@
AM_FUNC_GETLINE

Makefile.am:
-lib_SOURCES += getline.h
-EXTRA_DIST += getndelim2.c
+lib_SOURCES += getline.h getndelim2.h

Include:
"getline.h"
Index: modules/getndelim2
===================================================================
RCS file: modules/getndelim2
diff -N modules/getndelim2
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ modules/getndelim2  17 Jul 2003 19:09:58 -0000
@@ -0,0 +1,25 @@
+Description:
+Read n characters or less from a stream, stopping at one of up to two specified
+delimiters.
+
+Files:
+lib/getndelim2.h
+lib/getndelim2.c
+m4/getndelim2.m4
+m4/ssize_t.m4
+
+Depends-on:
+unlocked-io
+
+configure.ac:
+gl_GETNDELIM2
+
+Makefile.am:
+lib_SOURCES += getndelim2.h
+
+Include:
+"getndelim2.h"
+
+Maintainer:
+all
+
Index: modules/getnline
===================================================================
RCS file: /cvsroot/gnulib/gnulib/modules/getnline,v
retrieving revision 1.1
diff -u -r1.1 getnline
--- modules/getnline    17 Jul 2003 16:23:52 -0000      1.1
+++ modules/getnline    17 Jul 2003 19:09:58 -0000
@@ -1,10 +1,12 @@
Description:
-Read a line from a stream, with bounded memory allocation.
+Read a line of n characters or less from a stream.

Files:
+lib/getndelim2.h
+lib/getndelim2.c
lib/getnline.h
lib/getnline.c
-lib/getndelim2.c
+m4/getndelim2.m4
m4/getnline.m4
m4/ssize_t.m4

@@ -15,8 +17,7 @@
gl_GETNLINE

Makefile.am:
-lib_SOURCES += getnline.h
-EXTRA_DIST += getndelim2.c
+lib_SOURCES += getnline.h getndelim2.h

Include:
"getnline.h"



Derek

--
               *8^)

Email: address@hidden

Get CVS support at <http://ximbiot.com>!
--
I will not say "Springfield" just to get applause.
I will not say "Springfield" just to get applause.
I will not say "Springfield" just to get applause...

         - Bart Simpson on chalkboard, _The Simpsons_






reply via email to

[Prev in Thread] Current Thread [Next in Thread]