-/* $Id$ */
/* Copyright 1998 by the Massachusetts Institute of Technology.
*
* without express or implied warranty.
*/
-#include "setup.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
+#include "ares_setup.h"
+
#include "ares.h"
+#include "ares_nowarn.h"
#include "ares_private.h"
/* This is an internal function. Its contract is to read a line from
*bufsize = 128;
}
- while (1)
+ for (;;)
{
- if (!fgets(*buf + offset, (int)(*bufsize - offset), fp))
+ int bytestoread = aresx_uztosi(*bufsize - offset);
+
+ if (!fgets(*buf + offset, bytestoread, fp))
return (offset != 0) ? 0 : (ferror(fp)) ? ARES_EFILE : ARES_EOF;
len = offset + strlen(*buf + offset);
if ((*buf)[len - 1] == '\n')
break;
}
offset = len;
+ if(len < *bufsize - 1)
+ continue;
/* Allocate more space. */
newbuf = realloc(*buf, *bufsize * 2);