[vlc-commits] posix: use posix_close() where available

Rémi Denis-Courmont git at videolan.org
Thu Apr 21 23:18:00 CEST 2016


vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Fri Apr 22 00:17:45 2016 +0300| [41715334294d5abbc0589bca1af29c9a571540a6] | committer: Rémi Denis-Courmont

posix: use posix_close() where available

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=41715334294d5abbc0589bca1af29c9a571540a6
---

 src/posix/filesystem.c |   12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/src/posix/filesystem.c b/src/posix/filesystem.c
index dd516e1..52a39c9 100644
--- a/src/posix/filesystem.c
+++ b/src/posix/filesystem.c
@@ -134,7 +134,17 @@ int vlc_memfd (void)
 
 int vlc_close (int fd)
 {
-    return close (fd);
+#ifdef POSIX_CLOSE_RESTART
+    return posix_close (fd, 0);
+#else
+    int ret = close (fd);
+    /* POSIX.2008 (and earlier) does not specify if the file descriptor is
+     * closed on failure. Assume it is as on Linux and most other common OSes.
+     * Also emulate the correct error code as per newer POSIX versions. */
+    if (unlikely(ret != 0) && unlikely(errno == EINTR))
+        errno = EINPROGRESS;
+    return ret;
+#endif
 }
 
 int vlc_mkdir (const char *dirname, mode_t mode)



More information about the vlc-commits mailing list