projects
/
cdsspec-compiler.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
common: improve redirect_output() error handling
[cdsspec-compiler.git]
/
common.cc
diff --git
a/common.cc
b/common.cc
index a43064d527a03340d0f62d260b13b7638cf131f5..338058d9f3a8b990278605fe0b6c6c1c38e0d082 100644
(file)
--- a/
common.cc
+++ b/
common.cc
@@
-88,10
+88,12
@@
static int fd_user_out; /**< @brief File descriptor from which to read user prog
*/
void redirect_output()
{
*/
void redirect_output()
{
- int fd;
-
/* Save stdout for later use */
/* Save stdout for later use */
- model_out = dup(fileno(stdout));
+ model_out = dup(STDOUT_FILENO);
+ if (model_out < 0) {
+ perror("dup");
+ exit(EXIT_FAILURE);
+ }
/* Redirect program output to a pipe */
int pipefd[2];
/* Redirect program output to a pipe */
int pipefd[2];
@@
-99,11
+101,17
@@
void redirect_output()
perror("pipe");
exit(EXIT_FAILURE);
}
perror("pipe");
exit(EXIT_FAILURE);
}
- fd = dup2(pipefd[1], fileno(stdout)); // STDOUT_FILENO
+ if (dup2(pipefd[1], STDOUT_FILENO) < 0) {
+ perror("dup2");
+ exit(EXIT_FAILURE);
+ }
close(pipefd[1]);
/* Save the "read" side of the pipe for use later */
close(pipefd[1]);
/* Save the "read" side of the pipe for use later */
- fcntl(pipefd[0], F_SETFL, O_NONBLOCK);
+ if (fcntl(pipefd[0], F_SETFL, O_NONBLOCK) < 0) {
+ perror("fcntl");
+ exit(EXIT_FAILURE);
+ }
fd_user_out = pipefd[0];
}
fd_user_out = pipefd[0];
}