/* getdelim.c --- Implementation of replacement getdelim function.
- Copyright (C) 1994, 1996, 1997, 1998, 2001, 2003, 2005, 2006 Free
+ Copyright (C) 1994, 1996, 1997, 1998, 2001, 2003, 2005, 2006, 2007 Free
Software Foundation, Inc.
This program is free software; you can redistribute it and/or
#include <config.h>
-#include "getdelim.h"
+#include <stdio.h>
#include <limits.h>
#include <stdlib.h>
# define funlockfile(x) ((void) 0)
#endif
+/* Some systems, like OSF/1 4.0 and Woe32, don't have EOVERFLOW. */
+#ifndef EOVERFLOW
+# define EOVERFLOW E2BIG
+#endif
+
/* Read up to (and including) a DELIMITER from FP into *LINEPTR (and
NUL-terminate it). *LINEPTR is a pointer returned from malloc (or
NULL), pointing to *N characters of space. It is realloc'ed as
flockfile (fp);
- if (*lineptr == NULL || *n == 0)
+ if (*n == 0)
{
*n = 120;
- *lineptr = (char *) malloc (*n);
+ *lineptr = (char *) realloc (*lineptr, 120);
if (*lineptr == NULL)
{
result = -1;
if (cur_len + 1 >= needed)
{
result = -1;
+ errno = EOVERFLOW;
goto unlock_return;
}