Merge branch 'ew/fd-cloexec-fix'
authorJunio C Hamano <gitster@pobox.com>
Thu, 20 Jul 2017 23:30:00 +0000 (16:30 -0700)
committerJunio C Hamano <gitster@pobox.com>
Thu, 20 Jul 2017 23:30:00 +0000 (16:30 -0700)
Portability/fallback fix.

* ew/fd-cloexec-fix:
set FD_CLOEXEC properly when O_CLOEXEC is not supported

sha1_file.c
index fca165f13ccd145c184eaa8601bd60156d5b073b..b60ae15f7068c157df6407933ea7ee94a53f0640 100644 (file)
@@ -1684,14 +1684,14 @@ int git_open_cloexec(const char *name, int flags)
                fd = open(name, flags | o_cloexec);
        }
 
-#if defined(F_GETFL) && defined(F_SETFL) && defined(FD_CLOEXEC)
+#if defined(F_GETFD) && defined(F_SETFD) && defined(FD_CLOEXEC)
        {
                static int fd_cloexec = FD_CLOEXEC;
 
                if (!o_cloexec && 0 <= fd && fd_cloexec) {
                        /* Opened w/o O_CLOEXEC?  try with fcntl(2) to add it */
-                       int flags = fcntl(fd, F_GETFL);
-                       if (fcntl(fd, F_SETFL, flags | fd_cloexec))
+                       int flags = fcntl(fd, F_GETFD);
+                       if (fcntl(fd, F_SETFD, flags | fd_cloexec))
                                fd_cloexec = 0;
                }
        }