summary refs log tree commit diff
path: root/src/libstddjb/dir_close.c
diff options
context:
space:
mode:
authorLaurent Bercot <ska-skaware@skarnet.org>2018-07-21 07:28:05 +0000
committerLaurent Bercot <ska-skaware@skarnet.org>2018-07-21 07:28:05 +0000
commit0a181fc1b38a62e583f13ccc1550f7ffc8f5896b (patch)
tree3317e6a0288817585f26e7a4140efdf76b6f6768 /src/libstddjb/dir_close.c
parentf09ad31e00c22086863b95d3b6cb8eeadfdcdef7 (diff)
downloadskalibs-0a181fc1b38a62e583f13ccc1550f7ffc8f5896b.tar.gz
skalibs-0a181fc1b38a62e583f13ccc1550f7ffc8f5896b.tar.xz
skalibs-0a181fc1b38a62e583f13ccc1550f7ffc8f5896b.zip
Add unlink_void, change dir_close, prepare for 2.7.0.0
Diffstat (limited to 'src/libstddjb/dir_close.c')
-rw-r--r--src/libstddjb/dir_close.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/libstddjb/dir_close.c b/src/libstddjb/dir_close.c
index 1b7b16a..4c5d0cf 100644
--- a/src/libstddjb/dir_close.c
+++ b/src/libstddjb/dir_close.c
@@ -3,12 +3,13 @@
 #include <errno.h>
 #include <skalibs/direntry.h>
 
-int dir_close (DIR *dir)
+void dir_close (DIR *dir)
 {
-  unsigned int done = 0 ;
-doit:
-  done++ ;
-  if (!closedir(dir)) return 0 ;
-  if (errno == EINTR) goto doit ;
-  return ((errno == EBADF) && (done > 1)) ? 0 : -1 ;
+  int e = errno ;
+  for (;;)
+  {
+    if (closedir(dir) == 0) break ;
+    if (errno != EINTR) break ;
+  }
+  errno = e ;
 }