summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJozanLeClerc <bousset.rudy@gmail.com>2020-10-27 19:35:24 +0100
committerJozanLeClerc <bousset.rudy@gmail.com>2020-10-27 19:35:24 +0100
commita9ef1aa60df1b18c9541880c6779d9c2fe9ed651 (patch)
tree1ac4f099c27dfd65ca2ef4bbe906f709f377f0c4
parentFix but more to do (diff)
download42-minishell-a9ef1aa60df1b18c9541880c6779d9c2fe9ed651.tar.gz
42-minishell-a9ef1aa60df1b18c9541880c6779d9c2fe9ed651.tar.bz2
42-minishell-a9ef1aa60df1b18c9541880c6779d9c2fe9ed651.tar.xz
42-minishell-a9ef1aa60df1b18c9541880c6779d9c2fe9ed651.tar.zst
42-minishell-a9ef1aa60df1b18c9541880c6779d9c2fe9ed651.zip
FIX
-rw-r--r--src/p_redirs.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/p_redirs.c b/src/p_redirs.c
index 86aca27..c12201e 100644
--- a/src/p_redirs.c
+++ b/src/p_redirs.c
@@ -90,8 +90,8 @@ static int32_t p_get_fd(const char word[], char *ptr)
char digit[255];
char *tmp;
- if (*ptr == '<' || (ptr - word) == 1)
- return (0);
+ if (*ptr == '<' || (ptr - word) == 0)
+ return (-1);
tmp = ptr;
tmp -= 1;
if (ft_isdigit(*tmp) == FALSE)
@@ -100,6 +100,8 @@ static int32_t p_get_fd(const char word[], char *ptr)
tmp--;
if ((tmp - word) > 0 && ft_iswhitespace(*tmp) == FALSE)
return (0);
+ if (ft_atoi(tmp) == 1 || ft_atoi(tmp) == 0)
+ return (-2);
else
{
tmp += ((tmp - word) > 0) ? (1) : (0);
@@ -116,7 +118,7 @@ static uint8_t p_get_redir(char word[], char *ptr, t_com *com, t_msh *msh)
int32_t fd_rdr[2];
pos[0] = 0;
- if ((fd_rdr[FD] = p_get_fd(word, ptr)) <= 0)
+ if ((fd_rdr[FD] = p_get_fd(word, ptr)) == -1)
fd_rdr[FD] = STDOUT_FILENO;
fd_rdr[RDR] = (*ptr == '>') ? (1) : (-1);
fd_rdr[RDR] = (fd_rdr[RDR] == 1 && *(ptr + 1) == '>') ? (2) : (fd_rdr[1]);
@@ -125,6 +127,8 @@ static uint8_t p_get_redir(char word[], char *ptr, t_com *com, t_msh *msh)
fd_rdr[RDR] = (fd_rdr[RDR] == -2 && *(ptr + 2) == '-') ? (-3) : (fd_rdr[1]);
pos[0] = (fd_rdr[FD] == STDOUT_FILENO) ?
(ptr - word) : ((ptr - word) - ft_intlen(fd_rdr[FD]));
+ pos[0] = (fd_rdr[FD] == -2) ? ((ptr - word) - 1) : (pos[0]);
+ fd_rdr[FD] = (fd_rdr[FD] == -2) ? (STDOUT_FILENO) : (fd_rdr[FD]);
tmp.word = word;
tmp.ptr = ptr;
tmp.redir = fd_rdr[RDR];