aboutsummaryrefslogtreecommitdiffstats
path: root/pipe.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--pipe.c28
1 files changed, 17 insertions, 11 deletions
diff --git a/pipe.c b/pipe.c
index 3c0fed5..a0cd32f 100644
--- a/pipe.c
+++ b/pipe.c
@@ -2,19 +2,16 @@
#include "internal.h"
-int
-liberror_pipe(int fds[2])
+void
+liberror_pipe_failed(int fds[2])
{
const char *desc;
- if (!fds) {
- desc = "Output parameter is NULL";
- goto error;
- }
- if (!pipe(fds))
- return 0;
switch (errno) {
case EFAULT:
- desc = "Output parameter is an invalid pointer";
+ if (!fds)
+ desc = "Output parameter is NULL";
+ else
+ desc = "Output parameter is an invalid pointer";
break;
case EMFILE:
desc = "The process have too many file descriptors open";
@@ -26,8 +23,17 @@ liberror_pipe(int fds[2])
desc = "";
break;
}
-error:
- liberror_save_backtrace(NULL);
liberror_set_error_errno(desc, "pipe", errno);
+ (void) fds;
+}
+
+
+int
+liberror_pipe(int fds[2])
+{
+ if (!pipe(fds))
+ return 0;
+ liberror_save_backtrace(NULL);
+ liberror_pipe_failed(fds);
return -1;
}