about summary refs log tree commit diff stats
path: root/WWW/Library/Implementation/getline.c
diff options
context:
space:
mode:
authorThomas E. Dickey <dickey@invisible-island.net>1996-09-02 19:39:24 -0400
committerThomas E. Dickey <dickey@invisible-island.net>1996-09-02 19:39:24 -0400
commite087f6d44e87f489fcb3056e86319ebba4218156 (patch)
treed045b58011bfbbf5186d34c4fed9e0dedb363275 /WWW/Library/Implementation/getline.c
downloadlynx-snapshots-e087f6d44e87f489fcb3056e86319ebba4218156.tar.gz
snapshot of project "lynx", label v2_6
Diffstat (limited to 'WWW/Library/Implementation/getline.c')
-rw-r--r--WWW/Library/Implementation/getline.c74
1 files changed, 74 insertions, 0 deletions
diff --git a/WWW/Library/Implementation/getline.c b/WWW/Library/Implementation/getline.c
new file mode 100644
index 00000000..7f6ff038
--- /dev/null
+++ b/WWW/Library/Implementation/getline.c
@@ -0,0 +1,74 @@
+/* Copyright (C) 1991 Free Software Foundation, Inc.
+This file is part of the GNU C Library.
+
+The GNU C Library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+The GNU C Library 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
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with the GNU C Library; see the file COPYING.LIB.  If
+not, write to the Free Software Foundation, Inc., 675 Mass Ave,
+Cambridge, MA 02139, USA.  */
+
+/* CHANGED FOR VMS */
+
+/*
+ * <getline.c>
+ */
+
+#include "HTUtils.h"
+#include "tcp.h"
+#include <stddef.h>
+
+#include "LYLeaks.h"
+
+/* Read up to (and including) a newline from STREAM into *LINEPTR
+   (and null-terminate it). *LINEPTR is a pointer returned from malloc (or
+   NULL), pointing to *N characters of space.  It is realloc'd as
+   necessary.  Returns the number of characters read (not including the
+   null terminator), or -1 on error or EOF.  */
+
+int getline(char **lineptr, size_t *n, FILE *stream)
+{
+static char line[256];
+char *ptr;
+unsigned int len;
+
+   if (lineptr == NULL || n == NULL)
+   {
+      SOCKET_ERRNO = EINVAL;
+      return -1;
+   }
+
+   if (ferror (stream))
+      return -1;
+
+   if (feof(stream))
+      return -1;
+     
+   fgets(line,256,stream);
+
+   ptr = strchr(line,'\n');   
+   if (ptr)
+      *ptr = '\0';
+
+   len = strlen(line);
+   
+   if ((len+1) < 256)
+   {
+      ptr = realloc(*lineptr, 256);
+      if (ptr == NULL)
+         return(-1);
+      *lineptr = ptr;
+      *n = 256;
+   }
+
+   strcpy(*lineptr,line); 
+   return(len);
+}