/* getline.c -- Replacement for GNU C library function getline
-Copyright (C) 1993, 1996 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
/* The `getdelim' function is only declared if the following symbol
is defined. */
-#define _GNU_SOURCE 1
+#ifndef _GNU_SOURCE
+# define _GNU_SOURCE 1
+#endif
+
#include <stdio.h>
#include <sys/types.h>
#if defined __GNU_LIBRARY__ && HAVE_GETDELIM
int
-getline (lineptr, n, stream)
- char **lineptr;
- size_t *n;
- FILE *stream;
+getline (char **lineptr, size_t *n, FILE *stream)
{
return getdelim (lineptr, n, '\n', stream);
}
#else /* ! have getdelim */
-#define NDEBUG
-#include <assert.h>
+# define NDEBUG
+# include <assert.h>
-#if STDC_HEADERS
-# include <stdlib.h>
-#else
+# if STDC_HEADERS
+# include <stdlib.h>
+# 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
null terminator), or -1 on error or EOF. */
int
-getstr (lineptr, n, stream, terminator, offset)
- char **lineptr;
- size_t *n;
- FILE *stream;
- char terminator;
- size_t 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. */
}
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 (lineptr, n, delimiter, stream)
- char **lineptr;
- size_t *n;
- int delimiter;
- FILE *stream;
+getdelim (char **lineptr, size_t *n, int delimiter, FILE *stream)
{
return getstr (lineptr, n, stream, delimiter, 0);
}