X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fgetline.c;h=170a26e96405e5b818dc602e2cf006ed4ab1adbf;hb=618f09f72ba36d7c43802fa5fc07aca28172e6fd;hp=c69946148f694016fc5fcf1e89b28baf719d4bd3;hpb=cf66a231db2fe413a214ea7e3753453c2016f68a;p=gnulib.git diff --git a/lib/getline.c b/lib/getline.c index c69946148..170a26e96 100644 --- a/lib/getline.c +++ b/lib/getline.c @@ -1,6 +1,6 @@ /* getline.c -- Replacement for GNU C library function getline -Copyright (C) 1993 Free Software Foundation, Inc. +Copyright (C) 1993, 1996, 1997, 1998 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 @@ -14,27 +14,45 @@ 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Written by Jan Brittenson, bson@gnu.ai.mit.edu. */ -#ifdef HAVE_CONFIG_H -#include +#if HAVE_CONFIG_H +# include +#endif + +/* The `getdelim' function is only declared if the following symbol + is defined. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 #endif -#include #include -#define NDEBUG -#include +#include + +#if defined __GNU_LIBRARY__ && HAVE_GETDELIM + +int +getline (char **lineptr, size_t *n, FILE *stream) +{ + return getdelim (lineptr, n, '\n', stream); +} -#if STDC_HEADERS -#include -#else + +#else /* ! have getdelim */ + +# define NDEBUG +# include + +# if STDC_HEADERS +# include +# else char *malloc (), *realloc (); -#endif +# endif /* Always add at least this many bytes when extending the buffer. */ -#define MIN_CHUNK 64 +# define MIN_CHUNK 64 /* Read up to (and including) a TERMINATOR from STREAM into *LINEPTR + OFFSET (and null-terminate it). *LINEPTR is a pointer returned from @@ -43,12 +61,7 @@ char *malloc (), *realloc (); null terminator), or -1 on error or EOF. */ int -getstr (lineptr, n, stream, terminator, offset) - char **lineptr; - size_t *n; - FILE *stream; - char terminator; - int offset; +getstr (char **lineptr, size_t *n, FILE *stream, char terminator, size_t offset) { int nchars_avail; /* Allocated but unused chars in *LINEPTR. */ char *read_pos; /* Where we're reading into *LINEPTR. */ @@ -117,10 +130,14 @@ getstr (lineptr, n, stream, terminator, offset) } int -getline (lineptr, n, stream) - char **lineptr; - size_t *n; - FILE *stream; +getline (char **lineptr, size_t *n, FILE *stream) { return getstr (lineptr, n, stream, '\n', 0); } + +int +getdelim (char **lineptr, size_t *n, int delimiter, FILE *stream) +{ + return getstr (lineptr, n, stream, delimiter, 0); +} +#endif