# HG changeset patch # User Karl Heuer # Date 806020033 0 # Node ID 63cdecbd7af49c696bc7080dab351717b515a9f3 # Parent f4fb791df09944f5abe1663054c5c60fac2c7fd7 (sys_close): Handle Sunos 4.1 bug in close errno value. (init_system_name): Add cast in init for fqdn. diff -r f4fb791df099 -r 63cdecbd7af4 src/sysdep.c --- a/src/sysdep.c Mon Jul 17 22:25:39 1995 +0000 +++ b/src/sysdep.c Mon Jul 17 22:27:13 1995 +0000 @@ -2170,7 +2170,7 @@ } if (hp) { - char *fqdn = hp->h_name; + char *fqdn = (char *) hp->h_name; char *p; if (!index (fqdn, '.')) @@ -2884,10 +2884,19 @@ sys_close (fd) int fd; { + int did_retry = 0; register int rtnval; while ((rtnval = close (fd)) == -1 - && (errno == EINTR)); + && (errno == EINTR)) + did_retry = 1; + + /* If close is interrupted SunOS 4.1 may or may not have closed the + file descriptor. If it did the second close will fail with + errno = EBADF. That means we have succeeded. */ + if (rtnval == -1 && did_retry && errno == EBADF) + return 0; + return rtnval; }