* lib/stdint_.h (uintmax_t): Fix typo: int64_t -> uint64_t.
[gnulib.git] / lib / pipe-safer.c
index 646cd5d..e4431b3 100644 (file)
@@ -17,9 +17,7 @@
 
 /* Written by Jim Meyering.  */
 
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
+#include <config.h>
 
 #include "unistd-safer.h"
 
 int
 pipe_safer (int fd[2])
 {
-#if HAVE_FUNC_PIPE
-  int fail = pipe (fd);
-  if (fail)
-    return fail;
-
-  {
-    int i;
-    for (i = 0; i < 2; i++)
-      {
-       int f = fd_safer (fd[i]);
-       if (f < 0)
-         return -1;
-       fd[i] = f;
-      }
-  }
-
-  return 0;
-#else /* ! HAVE_FUNC_PIPE */
+#if HAVE_PIPE
+  if (pipe (fd) == 0)
+    {
+      int i;
+      for (i = 0; i < 2; i++)
+       {
+         fd[i] = fd_safer (fd[i]);
+         if (fd[i] < 0)
+           {
+             int e = errno;
+             close (fd[1 - i]);
+             errno = e;
+             return -1;
+           }
+       }
+
+      return 0;
+    }
+#else
   errno = ENOSYS;
-  return -1;
 #endif
+
+  return -1;
 }