summaryrefslogtreecommitdiff
path: root/src/libstddjb/fd_close.c
diff options
context:
space:
mode:
authorLaurent Bercot <ska-skaware@skarnet.org>2017-07-16 11:19:51 +0000
committerLaurent Bercot <ska-skaware@skarnet.org>2017-07-16 11:19:51 +0000
commit16013c560e189bd0c4fb58e038c0f449542dba7a (patch)
treeb9d2777f2e5a8108b684839f04310ffd0de82179 /src/libstddjb/fd_close.c
parent538fd727337959b1d7b8449a578a31fd9a9c62b4 (diff)
downloadskalibs-16013c560e189bd0c4fb58e038c0f449542dba7a.tar.xz
Add egidingroups sysdeps, change fd_close() to void and saving errno, propagate changes
Diffstat (limited to 'src/libstddjb/fd_close.c')
-rw-r--r--src/libstddjb/fd_close.c11
1 files changed, 4 insertions, 7 deletions
diff --git a/src/libstddjb/fd_close.c b/src/libstddjb/fd_close.c
index cb52d4f..a3c7880 100644
--- a/src/libstddjb/fd_close.c
+++ b/src/libstddjb/fd_close.c
@@ -4,12 +4,9 @@
#include <errno.h>
#include <skalibs/djbunix.h>
-int fd_close (int fd)
+void fd_close (int fd)
{
- for (;;)
- {
- if (!close(fd) || errno == EINPROGRESS) break ;
- if (errno != EINTR) return -1 ;
- }
- return 0 ;
+ int e = errno ;
+ while (close(fd) < 0 && errno == EINTR) ;
+ errno = e ;
}