From e5104517c1812dbee65e0994650e92e8d99dc9c0 Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Sun, 28 Dec 2003 08:25:16 +0000 Subject: Fix a really dumb bug introduced in version 1.4 of this file (a patch for ipv6 support) which could cause things like EOF and read errors while reading /etc/services to always return a TRY_AGAIN. The perl test suite would alloc a larger buffer and try again until all memory was exhausted. When we get a read error, or EOF, it means we didn't get what we wanted, and so we should return an error. Doing so fixes the failing perl 5.8.2 test. -Erik --- libc/inet/getservice.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'libc/inet') diff --git a/libc/inet/getservice.c b/libc/inet/getservice.c index ee408dfab..fb22ff95a 100644 --- a/libc/inet/getservice.c +++ b/libc/inet/getservice.c @@ -163,12 +163,14 @@ int getservent_r(struct servent * result_buf, if (servf == NULL && (servf = fopen(_PATH_SERVICES, "r" )) == NULL) { UNLOCK; + errno=EIO; return errno; } again: if ((p = fgets(line, BUFSIZ, servf)) == NULL) { UNLOCK; - return TRY_AGAIN; + errno=EIO; + return errno; } if (*p == '#') goto again; -- cgit v1.2.3