projects
/
gnulib.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Update from glibc.
[gnulib.git]
/
lib
/
getline.c
diff --git
a/lib/getline.c
b/lib/getline.c
index
c699461
..
170a26e
100644
(file)
--- a/
lib/getline.c
+++ b/
lib/getline.c
@@
-1,6
+1,6
@@
/* getline.c -- Replacement for GNU C library function getline
/* 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
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
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. */
/* Written by Jan Brittenson, bson@gnu.ai.mit.edu. */
-#ifdef HAVE_CONFIG_H
-#include <config.h>
+#if HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+/* The `getdelim' function is only declared if the following symbol
+ is defined. */
+#ifndef _GNU_SOURCE
+# define _GNU_SOURCE 1
#endif
#endif
-#include <sys/types.h>
#include <stdio.h>
#include <stdio.h>
-#define NDEBUG
-#include <assert.h>
+#include <sys/types.h>
+
+#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 <stdlib.h>
-#else
+
+#else /* ! have getdelim */
+
+# define NDEBUG
+# include <assert.h>
+
+# if STDC_HEADERS
+# include <stdlib.h>
+# else
char *malloc (), *realloc ();
char *malloc (), *realloc ();
-#endif
+#
endif
/* Always add at least this many bytes when extending the buffer. */
/* 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
/* 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
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. */
{
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
}
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);
}
{
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