diff options
Diffstat (limited to 'src/eval/redir.c')
| -rw-r--r-- | src/eval/redir.c | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/src/eval/redir.c b/src/eval/redir.c index e8796a5..9beef17 100644 --- a/src/eval/redir.c +++ b/src/eval/redir.c @@ -6,15 +6,15 @@ /* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/06/15 11:05:34 by charles #+# #+# */ -/* Updated: 2020/08/28 17:14:19 by charles ### ########.fr */ +/* Updated: 2020/09/10 14:25:08 by charles ### ########.fr */ /* */ /* ************************************************************************** */ #include "eval.h" -static bool st_open_replace(int *fd, char *filename, int oflag) +static int st_open_replace(int *fd, char *filename, int oflag) { - if (*fd != MS_NO_FD) + if (*fd != FD_NONE) close(*fd); if (oflag & O_CREAT) *fd = open(filename, oflag, 0644); @@ -22,15 +22,14 @@ static bool st_open_replace(int *fd, char *filename, int oflag) *fd = open(filename, oflag); if (*fd == -1) { - g_last_status_code = 1; errorf("%s: %s\n", filename, strerror(errno)); free(filename); - return (false); + return (ERR_OPEN); } - return (true); + return (ERR_NONE); } -bool redir_extract( +int redir_extract( t_tok_lst **redirs, t_env env, int fds[2]) @@ -40,10 +39,10 @@ bool redir_extract( char *filename; if (*redirs == NULL) - return (true); + return (ERR_NONE); if (!((*redirs)->tag & TAG_IS_REDIR) || (*redirs)->next == NULL || !((*redirs)->next->tag & TAG_IS_STR)) - return (false); + return (ERR_FATAL); curr = (*redirs)->next; after = NULL; while (curr != NULL && curr->tag & TAG_IS_STR) @@ -59,18 +58,18 @@ bool redir_extract( { tok_lst_destroy(redirs, free); tok_lst_destroy(&after, free); - return (false); + return (ERR_FATAL); } if (((*redirs)->tag == TAG_REDIR_IN - && !st_open_replace(&fds[FDS_READ], filename, O_RDONLY)) + && st_open_replace(&fds[FD_READ], filename, O_RDONLY) != ERR_NONE) || ((*redirs)->tag == TAG_REDIR_OUT - && !st_open_replace(&fds[FDS_WRITE], filename, O_WRONLY | O_CREAT | O_TRUNC)) + && st_open_replace(&fds[FD_WRITE], filename, O_WRONLY | O_CREAT | O_TRUNC) != ERR_NONE) || ((*redirs)->tag == TAG_REDIR_APPEND - && !st_open_replace(&fds[FDS_WRITE], filename, O_WRONLY | O_CREAT | O_APPEND))) + && st_open_replace(&fds[FD_WRITE], filename, O_WRONLY | O_CREAT | O_APPEND) != ERR_NONE)) { tok_lst_destroy(redirs, free); tok_lst_destroy(&after, free); - return (false); + return (ERR_FATAL); } tok_lst_destroy(redirs, free); free(filename); |
