aboutsummaryrefslogtreecommitdiff
path: root/src/util
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2012-01-28 14:23:43 +0000
committerChristian Grothoff <christian@grothoff.org>2012-01-28 14:23:43 +0000
commit84f8bfaf8bddaaa743bfab82164d763c3973d0ba (patch)
tree3c7e9c8b80ce70f422f69a7e0cc4326ac09a0b7a /src/util
parent873e09c5ebd42457daa2ba80e222a1087e0f71a8 (diff)
downloadgnunet-84f8bfaf8bddaaa743bfab82164d763c3973d0ba.tar.gz
gnunet-84f8bfaf8bddaaa743bfab82164d763c3973d0ba.zip
-fix error reporting, remove unnecessary syscalls on some paths
Diffstat (limited to 'src/util')
-rw-r--r--src/util/disk.c29
1 files changed, 22 insertions, 7 deletions
diff --git a/src/util/disk.c b/src/util/disk.c
index a044482f1..6fe2ebe8f 100644
--- a/src/util/disk.c
+++ b/src/util/disk.c
@@ -2148,28 +2148,43 @@ GNUNET_DISK_pipe (int blocking_read, int blocking_write, int inherit_read, int i
2148 p->fd[0]->fd = fd[0]; 2148 p->fd[0]->fd = fd[0];
2149 p->fd[1]->fd = fd[1]; 2149 p->fd[1]->fd = fd[1];
2150 ret = 0; 2150 ret = 0;
2151 flags = fcntl (fd[0], F_GETFL);
2152 if (!blocking_read) 2151 if (!blocking_read)
2152 {
2153 flags = fcntl (fd[0], F_GETFL);
2153 flags |= O_NONBLOCK; 2154 flags |= O_NONBLOCK;
2154 if (0 > fcntl (fd[0], F_SETFL, flags)) 2155 if (0 > fcntl (fd[0], F_SETFL, flags))
2155 ret = -1; 2156 {
2157 ret = -1;
2158 eno = errno;
2159 }
2160 }
2156 flags = fcntl (fd[0], F_GETFD); 2161 flags = fcntl (fd[0], F_GETFD);
2157 flags |= FD_CLOEXEC; 2162 flags |= FD_CLOEXEC;
2158 if (0 > fcntl (fd[0], F_SETFD, flags)) 2163 if (0 > fcntl (fd[0], F_SETFD, flags))
2164 {
2159 ret = -1; 2165 ret = -1;
2166 eno = errno;
2167 }
2160 2168
2161 flags = fcntl (fd[1], F_GETFL);
2162 if (!blocking_write) 2169 if (!blocking_write)
2170 {
2171 flags = fcntl (fd[1], F_GETFL);
2163 flags |= O_NONBLOCK; 2172 flags |= O_NONBLOCK;
2164 if (0 > fcntl (fd[1], F_SETFL, flags)) 2173 if (0 > fcntl (fd[1], F_SETFL, flags))
2165 ret = -1; 2174 {
2175 ret = -1;
2176 eno = errno;
2177 }
2178 }
2166 flags = fcntl (fd[1], F_GETFD); 2179 flags = fcntl (fd[1], F_GETFD);
2167 flags |= FD_CLOEXEC; 2180 flags |= FD_CLOEXEC;
2168 if (0 > fcntl (fd[1], F_SETFD, flags)) 2181 if (0 > fcntl (fd[1], F_SETFD, flags))
2182 {
2169 ret = -1; 2183 ret = -1;
2184 eno = errno;
2185 }
2170 if (ret == -1) 2186 if (ret == -1)
2171 { 2187 {
2172 eno = errno;
2173 LOG_STRERROR (GNUNET_ERROR_TYPE_ERROR, "fcntl"); 2188 LOG_STRERROR (GNUNET_ERROR_TYPE_ERROR, "fcntl");
2174 GNUNET_break (0 == close (p->fd[0]->fd)); 2189 GNUNET_break (0 == close (p->fd[0]->fd));
2175 GNUNET_break (0 == close (p->fd[1]->fd)); 2190 GNUNET_break (0 == close (p->fd[1]->fd));