diff options
author | JozanLeClerc <bousset.rudy@gmail.com> | 2020-09-01 16:40:05 +0200 |
---|---|---|
committer | JozanLeClerc <bousset.rudy@gmail.com> | 2020-09-01 16:40:05 +0200 |
commit | 06217e697520e5c97393bc06b89fda073efa7ea6 (patch) | |
tree | 7f0c744900487395ffc36ed4185035876633bef3 | |
parent | Secured malloc (diff) | |
download | 42-minishell-06217e697520e5c97393bc06b89fda073efa7ea6.tar.gz 42-minishell-06217e697520e5c97393bc06b89fda073efa7ea6.tar.bz2 42-minishell-06217e697520e5c97393bc06b89fda073efa7ea6.tar.xz 42-minishell-06217e697520e5c97393bc06b89fda073efa7ea6.tar.zst 42-minishell-06217e697520e5c97393bc06b89fda073efa7ea6.zip |
Update
-rw-r--r-- | Makefile | 1 | ||||
-rw-r--r-- | TODO.org | 2 | ||||
-rw-r--r-- | src/p_args.c | 52 | ||||
-rw-r--r-- | src/p_args.h | 20 | ||||
-rw-r--r-- | src/p_lcom_next.c | 47 | ||||
-rw-r--r-- | src/s_com.c | 3 |
6 files changed, 101 insertions, 24 deletions
@@ -61,6 +61,7 @@ SRCS_NAME += s_init SRCS_NAME += s_line SRCS_NAME += s_lvars SRCS_NAME += s_lpipes +SRCS_NAME += p_args SRCS_NAME += p_line SRCS_NAME += p_lcom SRCS_NAME += p_lcom_next @@ -7,7 +7,7 @@ ** DONE [#A] fix pwd when cd / ** DONE [#A] Multiline pipes (ls |) ** TODO [#A] Go full tok + quotes -** TODO [#A] ls qweqwe; echo $? <---- reparse +** TODO [#A] ls qweqwe; echo $? <---- substitute ** TODO [#A] <>> ** DONE [#B] forked write(2) stuff on cd ** DONE [#B] Multiline && || diff --git a/src/p_args.c b/src/p_args.c new file mode 100644 index 0000000..6b285da --- /dev/null +++ b/src/p_args.c @@ -0,0 +1,52 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* p_args.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: rbousset <marvin@42.fr> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/02/14 17:19:27 by rbousset #+# #+# */ +/* Updated: 2020/02/14 17:19:29 by rbousset ### ########lyon.fr */ +/* */ +/* ************************************************************************** */ + +#include <libft.h> +#include <stdint.h> +#include <stdlib.h> + +char + **p_split_args(const char word[], int8_t redir) +{ + char **words; + + (void)word; + if (redir == 0) + { + return (words); + } + return (words); + /* char **words; */ + /* char *subst; */ + /* size_t i; */ + + /* if (redir == 0) */ + /* { */ + /* if (!(words = ft_split(word, ' '))) */ + /* return (NULL); */ + /* return (words); */ + /* } */ + /* i = 0; */ + /* while (word[i] && ft_ischarset("<>", word[i]) == FALSE) */ + /* i++; */ + /* while (redir > 0 && ft_isdigit(word[i]) == TRUE) */ + /* i--; */ + /* if (!(subst = ft_substr(word, 0, i))) */ + /* return (NULL); */ + /* if (!(words = ft_split(subst, ' '))) */ + /* { */ + /* ft_memdel((void*)&subst); */ + /* return (NULL); */ + /* } */ + /* ft_memdel((void*)&subst); */ + /* return (words); */ +} diff --git a/src/p_args.h b/src/p_args.h new file mode 100644 index 0000000..162723d --- /dev/null +++ b/src/p_args.h @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* p_args.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: rbousset <marvin@42.fr> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/02/14 17:19:27 by rbousset #+# #+# */ +/* Updated: 2020/02/14 17:19:29 by rbousset ### ########lyon.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef P_ARGS_H +#define P_ARGS_H + +#include <stdint.h> + +char **p_split_args(const char word[], int8_t redir); + +#endif diff --git a/src/p_lcom_next.c b/src/p_lcom_next.c index b04d393..28ad821 100644 --- a/src/p_lcom_next.c +++ b/src/p_lcom_next.c @@ -76,29 +76,32 @@ char int8_t redir) { char **words; - char *subst; - size_t i; - if (redir == 0) - { - if (!(words = ft_split(word, ' '))) - return (NULL); - return (words); - } - i = 0; - while (word[i] && ft_ischarset("<>", word[i]) == FALSE) - i++; - while (redir > 0 && ft_isdigit(word[i]) == TRUE) - i--; - if (!(subst = ft_substr(word, 0, i))) - return (NULL); - if (!(words = ft_split(subst, ' '))) - { - ft_memdel((void*)&subst); - return (NULL); - } - ft_memdel((void*)&subst); return (words); + /* char **words; */ + /* char *subst; */ + /* size_t i; */ + + /* if (redir == 0) */ + /* { */ + /* if (!(words = ft_split(word, ' '))) */ + /* return (NULL); */ + /* return (words); */ + /* } */ + /* i = 0; */ + /* while (word[i] && ft_ischarset("<>", word[i]) == FALSE) */ + /* i++; */ + /* while (redir > 0 && ft_isdigit(word[i]) == TRUE) */ + /* i--; */ + /* if (!(subst = ft_substr(word, 0, i))) */ + /* return (NULL); */ + /* if (!(words = ft_split(subst, ' '))) */ + /* { */ + /* ft_memdel((void*)&subst); */ + /* return (NULL); */ + /* } */ + /* ft_memdel((void*)&subst); */ + /* return (words); */ } char @@ -184,7 +187,7 @@ static char k = i; while (i - k < j) { - if (!(rewords[i - k] = ft_strdup(words[i]))) + if ((rewords[i - k] = ft_strdup(words[i])) == NULL) { ft_delwords(words); f_alloc_and_destroy_msh(msh); diff --git a/src/s_com.c b/src/s_com.c index 550616c..75a5040 100644 --- a/src/s_com.c +++ b/src/s_com.c @@ -14,6 +14,7 @@ #include <stdlib.h> #include "f_fail.h" +#include "p_args.h" #include "p_lcom.h" #include "p_lcom_next.h" #include "s_struct.h" @@ -113,7 +114,7 @@ t_com com->env_fork = NULL; if (get_redir(word, &com) != 0) return (NULL); - if ((words = p_subst_args(word, com->redir)) == NULL) + if ((words = p_split_args(word, com->redir)) == NULL) return (NULL); if ((words = p_subst_vars(words, msh)) == NULL) return (NULL); |