From d7c5e9611b1d878e084665a02f2e187aec77c67f Mon Sep 17 00:00:00 2001 From: Adam Joly Date: Sat, 13 Jul 2024 14:16:31 +0200 Subject: [PATCH] =?UTF-8?q?=E3=80=8C=E2=9C=A8=E3=80=8D=20feat:=20Added=20c?= =?UTF-8?q?trl=20c=20to=20heredoc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- asdf | 0 include/execution.h | 6 +- include/minishell.h | 1 + include/parsing.h | 3 +- minishell.supp | 57 +++ readline.supp.bak | 493 -------------------------- src/builtins/ft_cd.c | 3 +- src/exec/exec_split_cmd.c | 2 +- src/exec/format_quotes.c | 11 +- src/exec/heredoc.c | 12 +- src/exec/heredoc_utils.c | 28 +- src/get_to_free.c | 22 +- src/main.c | 10 +- src/parsing/env_var/env_var_replace.c | 7 +- src/parsing/get_cmd_list.c | 30 +- src/parsing/get_redir_fd.c | 7 +- src/parsing/open_redir.c | 8 +- src/parsing/tokenizer/__to_token.c | 4 +- 18 files changed, 183 insertions(+), 521 deletions(-) create mode 100644 asdf create mode 100644 minishell.supp delete mode 100644 readline.supp.bak diff --git a/asdf b/asdf new file mode 100644 index 0000000..e69de29 diff --git a/include/execution.h b/include/execution.h index 80a65f6..7ca74a8 100644 --- a/include/execution.h +++ b/include/execution.h @@ -6,7 +6,7 @@ /* By: mmoussou +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/04/25 12:20:26 by adjoly #+# #+# */ -/* Updated: 2024/07/09 23:52:39 by adjoly ### ########.fr */ +/* Updated: 2024/07/10 14:13:41 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ @@ -48,7 +48,6 @@ void open_redir(t_redirection *redir, t_cmd *cmd, t_redir_sign sign[2]); */ size_t strlen_till_char(char *s, int c); - bool check_quote(char *readline); bool check_syntax(char *readline); bool check_redir(t_list *redir); diff --git a/minishell.supp b/minishell.supp new file mode 100644 index 0000000..2856914 --- /dev/null +++ b/minishell.supp @@ -0,0 +1,57 @@ +{ + readline + Memcheck:Leak + match-leak-kinds: reachable + ... + fun:readline + ... +} +{ + readline-history + Memcheck:Leak + ... + fun:xmalloc + fun:add_history + ... +} +{ + + Memcheck:Leak + match-leak-kinds: reachable + ... + obj:/usr/bin/toe + fun:(below main) +} +{ + + Memcheck:Leak + ... + obj:/usr/bin/locale + fun:(below main) +} +{ + + Memcheck:Leak + match-leak-kinds: reachable + ... + obj:/usr/bin/clear + fun:(below main) +} +{ + + Memcheck:Leak + ... + obj:/usr/bin/cat + fun:(below main) +} +{ + + Memcheck:Leak + ... + obj:/usr/bin/ls + fun:(below main) +} + + + + diff --git a/readline.supp.bak b/readline.supp.bak deleted file mode 100644 index bb458d1..0000000 --- a/readline.supp.bak +++ /dev/null @@ -1,493 +0,0 @@ -{ - - Memcheck:Leak - match-leak-kinds: reachable - fun:malloc - fun:xmalloc - fun:alloc_history_entry - fun:add_history - fun:main -} -{ - - Memcheck:Leak - match-leak-kinds: definite - fun:malloc - fun:xmalloc - fun:readline_internal_teardown - fun:readline - fun:main -} -{ - - Memcheck:Leak - match-leak-kinds: reachable - fun:realloc - fun:_nc_doalloc - fun:_nc_tiparm - obj:/usr/lib/x86_64-linux-gnu/libtinfo.so.6.3 - fun:_nc_trim_sgr0 - fun:tgetent_sp - fun:_rl_init_terminal_io - fun:rl_initialize - fun:readline - fun:main -} -{ - - Memcheck:Leak - match-leak-kinds: reachable - fun:malloc - fun:strdup - fun:_nc_trim_sgr0 - fun:tgetent_sp - fun:_rl_init_terminal_io - fun:rl_initialize - fun:readline - fun:main -} -{ - - Memcheck:Leak - match-leak-kinds: reachable - fun:malloc - fun:xrealloc - obj:/usr/lib/x86_64-linux-gnu/libreadline.so.8.1 - fun:rl_expand_prompt - fun:rl_set_prompt - fun:readline - fun:main -} -{ - - Memcheck:Leak - match-leak-kinds: reachable - fun:malloc - fun:xmalloc - fun:add_history - fun:main -} -{ - - Memcheck:Leak - match-leak-kinds: reachable - fun:malloc - fun:xmalloc - obj:/usr/lib/x86_64-linux-gnu/libreadline.so.8.1 - fun:rl_initialize - fun:readline - fun:main -} -{ - - Memcheck:Leak - match-leak-kinds: reachable - fun:malloc - fun:strdup - fun:_nc_setupterm - fun:tgetent_sp - fun:_rl_init_terminal_io - fun:rl_initialize - fun:readline - fun:main -} -{ - - Memcheck:Leak - match-leak-kinds: reachable - fun:malloc - fun:rl_initialize - fun:readline - fun:main -} -{ - - Memcheck:Leak - match-leak-kinds: reachable - fun:malloc - fun:strdup - obj:/usr/lib/x86_64-linux-gnu/libtinfo.so.6.3 - fun:_nc_first_db - fun:_nc_read_entry2 - obj:/usr/lib/x86_64-linux-gnu/libtinfo.so.6.3 - fun:_nc_setupterm - fun:tgetent_sp - fun:_rl_init_terminal_io - fun:rl_initialize - fun:readline - fun:main -} -{ - - Memcheck:Leak - match-leak-kinds: reachable - fun:malloc - fun:xmalloc - obj:/usr/lib/x86_64-linux-gnu/libreadline.so.8.1 - fun:rl_parse_and_bind - obj:/usr/lib/x86_64-linux-gnu/libreadline.so.8.1 - fun:rl_initialize - fun:readline - fun:main -} -{ - - Memcheck:Leak - match-leak-kinds: reachable - fun:malloc - fun:tsearch - obj:/usr/lib/x86_64-linux-gnu/libtinfo.so.6.3 - fun:_nc_tiparm - obj:/usr/lib/x86_64-linux-gnu/libtinfo.so.6.3 - fun:_nc_trim_sgr0 - fun:tgetent_sp - fun:_rl_init_terminal_io - fun:rl_initialize - fun:readline - fun:main -} -{ - - Memcheck:Leak - match-leak-kinds: reachable - fun:malloc - fun:_nc_home_terminfo - fun:_nc_first_db - fun:_nc_read_entry2 - obj:/usr/lib/x86_64-linux-gnu/libtinfo.so.6.3 - fun:_nc_setupterm - fun:tgetent_sp - fun:_rl_init_terminal_io - fun:rl_initialize - fun:readline - fun:main -} -{ - - Memcheck:Leak - match-leak-kinds: reachable - fun:malloc - fun:xmalloc - fun:rl_set_prompt - fun:readline - fun:main -} -{ - - Memcheck:Leak - match-leak-kinds: reachable - fun:malloc - fun:xmalloc - obj:/usr/lib/x86_64-linux-gnu/libreadline.so.8.1 - fun:rl_expand_prompt - fun:rl_set_prompt - fun:readline - fun:main -} -{ - - Memcheck:Leak - match-leak-kinds: reachable - fun:realloc - fun:_nc_doalloc - fun:_nc_read_termtype - obj:/usr/lib/x86_64-linux-gnu/libtinfo.so.6.3 - obj:/usr/lib/x86_64-linux-gnu/libtinfo.so.6.3 - fun:_nc_read_entry2 - obj:/usr/lib/x86_64-linux-gnu/libtinfo.so.6.3 - fun:_nc_setupterm - fun:tgetent_sp - fun:_rl_init_terminal_io - fun:rl_initialize - fun:readline -} -{ - - Memcheck:Leak - match-leak-kinds: reachable - fun:malloc - obj:/usr/lib/x86_64-linux-gnu/libtinfo.so.6.3 - fun:_nc_setupterm - fun:tgetent_sp - fun:_rl_init_terminal_io - fun:rl_initialize - fun:readline - fun:main -} -{ - - Memcheck:Leak - match-leak-kinds: reachable - fun:calloc - fun:_nc_first_db - fun:_nc_read_entry2 - obj:/usr/lib/x86_64-linux-gnu/libtinfo.so.6.3 - fun:_nc_setupterm - fun:tgetent_sp - fun:_rl_init_terminal_io - fun:rl_initialize - fun:readline - fun:main -} -{ - - Memcheck:Leak - match-leak-kinds: reachable - fun:malloc - fun:strdup - obj:/usr/lib/x86_64-linux-gnu/libtinfo.so.6.3 - fun:_nc_tiparm - obj:/usr/lib/x86_64-linux-gnu/libtinfo.so.6.3 - fun:_nc_trim_sgr0 - fun:tgetent_sp - fun:_rl_init_terminal_io - fun:rl_initialize - fun:readline - fun:main -} -{ - - Memcheck:Leak - match-leak-kinds: reachable - fun:malloc - fun:_nc_tparm_analyze - obj:/usr/lib/x86_64-linux-gnu/libtinfo.so.6.3 - fun:_nc_tiparm - obj:/usr/lib/x86_64-linux-gnu/libtinfo.so.6.3 - fun:_nc_trim_sgr0 - fun:tgetent_sp - fun:_rl_init_terminal_io - fun:rl_initialize - fun:readline - fun:main -} -{ - - Memcheck:Leak - match-leak-kinds: reachable - fun:malloc - fun:_nc_first_db - fun:_nc_read_entry2 - obj:/usr/lib/x86_64-linux-gnu/libtinfo.so.6.3 - fun:_nc_setupterm - fun:tgetent_sp - fun:_rl_init_terminal_io - fun:rl_initialize - fun:readline - fun:main -} -{ - - Memcheck:Leak - match-leak-kinds: reachable - fun:calloc - obj:/usr/lib/x86_64-linux-gnu/libtinfo.so.6.3 - fun:_nc_tiparm - obj:/usr/lib/x86_64-linux-gnu/libtinfo.so.6.3 - fun:_nc_trim_sgr0 - fun:tgetent_sp - fun:_rl_init_terminal_io - fun:rl_initialize - fun:readline - fun:main -} -{ - - Memcheck:Leak - match-leak-kinds: reachable - fun:malloc - fun:xmalloc - fun:rl_initialize - fun:readline - fun:main -} -{ - - Memcheck:Leak - match-leak-kinds: reachable - fun:calloc - fun:_nc_read_termtype - obj:/usr/lib/x86_64-linux-gnu/libtinfo.so.6.3 - obj:/usr/lib/x86_64-linux-gnu/libtinfo.so.6.3 - fun:_nc_read_entry2 - obj:/usr/lib/x86_64-linux-gnu/libtinfo.so.6.3 - fun:_nc_setupterm - fun:tgetent_sp - fun:_rl_init_terminal_io - fun:rl_initialize - fun:readline - fun:main -} -{ - - Memcheck:Leak - match-leak-kinds: reachable - fun:calloc - fun:_nc_setupterm - fun:tgetent_sp - fun:_rl_init_terminal_io - fun:rl_initialize - fun:readline - fun:main -} -{ - - Memcheck:Leak - match-leak-kinds: reachable - fun:malloc - fun:_nc_read_termtype - obj:/usr/lib/x86_64-linux-gnu/libtinfo.so.6.3 - obj:/usr/lib/x86_64-linux-gnu/libtinfo.so.6.3 - fun:_nc_read_entry2 - obj:/usr/lib/x86_64-linux-gnu/libtinfo.so.6.3 - fun:_nc_setupterm - fun:tgetent_sp - fun:_rl_init_terminal_io - fun:rl_initialize - fun:readline - fun:main -} -{ - - Memcheck:Leak - match-leak-kinds: reachable - fun:malloc - fun:xrealloc - obj:/usr/lib/x86_64-linux-gnu/libreadline.so.8.1 - obj:/usr/lib/x86_64-linux-gnu/libreadline.so.8.1 - fun:rl_redisplay - fun:readline_internal_setup - fun:readline - fun:main -} -{ - - Memcheck:Leak - match-leak-kinds: reachable - fun:malloc - fun:xmalloc - obj:/usr/lib/x86_64-linux-gnu/libreadline.so.8.1 - fun:rl_redisplay - fun:readline_internal_setup - fun:readline - fun:main -} -{ - - Memcheck:Leak - match-leak-kinds: reachable - fun:realloc - fun:xrealloc - fun:rl_add_funmap_entry - fun:rl_initialize_funmap - fun:rl_initialize - fun:readline - fun:main -} -{ - - Memcheck:Leak - match-leak-kinds: reachable - fun:malloc - fun:xmalloc - fun:_rl_init_terminal_io - fun:rl_initialize - fun:readline - fun:main -} -{ - - Memcheck:Leak - match-leak-kinds: reachable - fun:malloc - fun:xmalloc - fun:rl_add_funmap_entry - fun:rl_initialize_funmap - fun:rl_initialize - fun:readline - fun:main -} -{ - - Memcheck:Leak - match-leak-kinds: reachable - fun:malloc - fun:xmalloc - fun:rl_make_bare_keymap - fun:rl_generic_bind - fun:rl_bind_keyseq_if_unbound_in_map - obj:/usr/lib/x86_64-linux-gnu/libreadline.so.8.1 - fun:_rl_init_terminal_io - fun:rl_initialize - fun:readline - fun:main -} -{ - - Memcheck:Leak - match-leak-kinds: reachable - fun:malloc - fun:xmalloc - fun:rl_make_bare_keymap - fun:rl_generic_bind - fun:rl_bind_keyseq_if_unbound_in_map - obj:/usr/lib/x86_64-linux-gnu/libreadline.so.8.1 - fun:rl_initialize - fun:readline - fun:main -} -{ - - Memcheck:Leak - match-leak-kinds: reachable - fun:calloc - obj:/usr/lib/x86_64-linux-gnu/libtinfo.so.6.3 - fun:_nc_find_type_entry - fun:tgetstr_sp - fun:_rl_init_terminal_io - fun:rl_initialize - fun:readline - fun:main -} -{ - - Memcheck:Leak - match-leak-kinds: reachable - fun:malloc - fun:xmalloc - fun:rl_make_bare_keymap - fun:rl_generic_bind - fun:rl_bind_keyseq_if_unbound_in_map - fun:rl_initialize - fun:readline - fun:main -} -{ - - Memcheck:Leak - match-leak-kinds: reachable - fun:malloc - fun:xmalloc - fun:rl_make_bare_keymap - fun:rl_generic_bind - fun:rl_parse_and_bind - obj:/usr/lib/x86_64-linux-gnu/libreadline.so.8.1 - fun:rl_initialize - fun:readline - fun:main -} -{ - - Memcheck:Leak - match-leak-kinds: reachable - fun:malloc - fun:xmalloc - fun:sh_get_home_dir - fun:tilde_expand_word - fun:tilde_expand - obj:/usr/lib/x86_64-linux-gnu/libreadline.so.8.1 - fun:rl_read_init_file - fun:rl_initialize - fun:readline - fun:main -} diff --git a/src/builtins/ft_cd.c b/src/builtins/ft_cd.c index 25b9417..b9a9d06 100644 --- a/src/builtins/ft_cd.c +++ b/src/builtins/ft_cd.c @@ -6,7 +6,7 @@ /* By: adjoly +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/06/22 15:07:24 by adjoly #+# #+# */ -/* Updated: 2024/07/03 12:18:18 by adjoly ### ########.fr */ +/* Updated: 2024/07/12 15:26:48 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ @@ -38,5 +38,4 @@ void ft_cd(t_env *env, char *args) } env_edit("PWD", ft_strdup(ret_cwd()), env); env_edit("OLDPWD", pwd, env); - free(args); } diff --git a/src/exec/exec_split_cmd.c b/src/exec/exec_split_cmd.c index f6ed7d8..5aee5b0 100644 --- a/src/exec/exec_split_cmd.c +++ b/src/exec/exec_split_cmd.c @@ -6,7 +6,7 @@ /* By: mmoussou cmd); + if (!cmd) + return (-1); + cmd->cmd = format_quotes_string(cmd->cmd); i = 0; while (cmd->argv[i]) { @@ -40,7 +44,8 @@ int format_quotes(t_list *list_cmd, t_env *env) return (0); while (list_cmd) { - format_quotes_cmd(list_cmd->content, env); + if (format_quotes_cmd(list_cmd->content, env)) + return (-1); list_cmd = list_cmd->next; } return (0); diff --git a/src/exec/heredoc.c b/src/exec/heredoc.c index 8949488..1903cc5 100644 --- a/src/exec/heredoc.c +++ b/src/exec/heredoc.c @@ -6,7 +6,7 @@ /* By: mmoussou +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/07/10 01:14:10 by adjoly #+# #+# */ -/* Updated: 2024/07/10 01:16:48 by adjoly ### ########.fr */ +/* Updated: 2024/07/13 14:03:00 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ #include "libft.h" #include #include +#include "minishell.h" int __open_fd_here(char *path, int mode) { @@ -23,6 +24,7 @@ int __open_fd_here(char *path, int mode) else fd = open(path, O_WRONLY | O_TRUNC | O_CREAT, 0644); free(path); + get_fd_heredoc(fd); return (fd); } @@ -46,3 +48,27 @@ void ft_lstclear_till_nxt(t_list **lst, void (*del)(void *)) } free(*lst); } + +int check_error(int heredoc_ret, int fd) +{ + heredoc_ret = WEXITSTATUS(heredoc_ret); + if (heredoc_ret != 0) + { + close(fd); + get_exit_code(heredoc_ret); + return (-2); + } + close(fd); + return (fd_manager(1)); +} + +void __heredoc_sig(int code) +{ + (void)code; + ft_envclear(get_env(NULL), free); + ft_lstclear_till_nxt(get_list2(NULL), &free_cmd); + ft_lstclear(get_list(NULL), &free_token); + close(get_fd_heredoc(-1)); + rl_clear_history(); + exit(130); +} diff --git a/src/get_to_free.c b/src/get_to_free.c index 312af4f..b716af0 100644 --- a/src/get_to_free.c +++ b/src/get_to_free.c @@ -6,7 +6,7 @@ /* By: adjoly +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/07/09 17:24:15 by adjoly #+# #+# */ -/* Updated: 2024/07/10 00:46:24 by adjoly ### ########.fr */ +/* Updated: 2024/07/13 14:09:08 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ @@ -39,3 +39,23 @@ t_list **get_list2(t_list **list) ret = list; return (ret); } + +int get_exit_code(int in) +{ + static int exit_code; + + if (in != -1) + exit_code = in % 256; + if (exit_code < 0) + exit_code += 256; + return (exit_code); +} + +int get_fd_heredoc(int in) +{ + static int fd; + + if (in != -1) + fd = in; + return (fd); +} diff --git a/src/main.c b/src/main.c index 71595cb..c52cb12 100644 --- a/src/main.c +++ b/src/main.c @@ -6,7 +6,7 @@ /* By: mmoussou +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/06/05 21:14:04 by adjoly #+# #+# */ -/* Updated: 2024/07/09 20:23:16 by adjoly ### ########.fr */ +/* Updated: 2024/07/13 14:14:20 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ @@ -54,6 +54,11 @@ char *env_var_replace(char *readline, t_env *env) if (*tmp == '$' && is_inquote(readline, tmp - readline) != SINGLE) { tmp++; + if ((*tmp) == '?') + { + tmp++; + continue ; + } dollar_size = strlen_till_notalnum(tmp); __cpy_dollar(tmp, dollar_size, env, &rl_dollared); tmp += dollar_size; diff --git a/src/parsing/get_cmd_list.c b/src/parsing/get_cmd_list.c index 60c42ad..f399a7f 100644 --- a/src/parsing/get_cmd_list.c +++ b/src/parsing/get_cmd_list.c @@ -6,7 +6,7 @@ /* By: adjoly +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/05/31 12:47:13 by adjoly #+# #+# */ -/* Updated: 2024/07/10 01:12:52 by adjoly ### ########.fr */ +/* Updated: 2024/07/13 14:08:31 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,20 +14,40 @@ #include "parsing.h" #include "minishell.h" +t_list *make_lst(t_list *tmp) +{ + t_list *cmd_list; + + cmd_list = malloc(sizeof(t_list)); + get_list2(&cmd_list); + cmd_list->next = NULL; + cmd_list->content = get_redir_fd(tmp->content); + return (cmd_list); +} + t_list *get_cmd_list(t_list *list) { t_list *tmp; t_list *cmd_list; tmp = list; - cmd_list = malloc(sizeof(t_list)); - get_list2(&cmd_list); - cmd_list->next = NULL; - cmd_list->content = get_redir_fd(tmp->content); + cmd_list = make_lst(tmp); + if (!cmd_list->content) + { + free(cmd_list); + return (NULL); + } tmp = tmp->next; while (tmp) { ft_lstadd_back(&cmd_list, ft_lstnew(get_redir_fd(tmp->content))); + if (!ft_lstlast(cmd_list)->content) + { + ft_lstclear(&cmd_list, &free_cmd); + if (cmd_list) + free(cmd_list); + return (NULL); + } tmp = tmp->next; } return (cmd_list); diff --git a/src/parsing/get_redir_fd.c b/src/parsing/get_redir_fd.c index ca0aca0..0b1ed3a 100644 --- a/src/parsing/get_redir_fd.c +++ b/src/parsing/get_redir_fd.c @@ -6,7 +6,7 @@ /* By: adjoly +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/05/30 10:48:41 by adjoly #+# #+# */ -/* Updated: 2024/07/10 01:07:50 by adjoly ### ########.fr */ +/* Updated: 2024/07/13 14:05:27 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ @@ -32,6 +32,11 @@ t_cmd *get_redir_fd(void *content) while (tmp) { open_redir((t_redirection *)tmp->content, cmd, sign); + if (cmd->infile == -2) + { + free(cmd); + return (NULL); + } tmp = tmp->next; } if (sign[0] == INFILE) diff --git a/src/parsing/open_redir.c b/src/parsing/open_redir.c index 0c68a77..55481b2 100644 --- a/src/parsing/open_redir.c +++ b/src/parsing/open_redir.c @@ -6,7 +6,7 @@ /* By: adjoly +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/06/30 15:56:53 by adjoly #+# #+# */ -/* Updated: 2024/07/10 01:07:09 by adjoly ### ########.fr */ +/* Updated: 2024/07/13 13:47:38 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ @@ -29,10 +29,14 @@ void open_redir(t_redirection *redir, t_cmd *cmd, t_redir_sign sign[2]) { if (redir->sign == OUTFILE || redir->sign == OUT_APPEND) sign[0] = __close_unused_fd(cmd, redir->sign); - if (redir->sign == INFILE || redir->sign == HEREDOC) + else if (redir->sign == INFILE || redir->sign == HEREDOC) sign[1] = __close_unused_fd(cmd, redir->sign); if (redir->sign == HEREDOC) + { cmd->infile = ft_heredoc(redir->file_name, cmd); + if (cmd->infile == -2) + return ; + } else if (redir->sign == INFILE) cmd->infile = open(redir->file_name, O_RDONLY); else if (redir->sign == OUTFILE) diff --git a/src/parsing/tokenizer/__to_token.c b/src/parsing/tokenizer/__to_token.c index d3bd268..85b1cc8 100644 --- a/src/parsing/tokenizer/__to_token.c +++ b/src/parsing/tokenizer/__to_token.c @@ -6,7 +6,7 @@ /* By: adjoly +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/05/20 21:05:04 by adjoly #+# #+# */ -/* Updated: 2024/07/09 23:43:39 by adjoly ### ########.fr */ +/* Updated: 2024/07/11 13:49:40 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ @@ -53,7 +53,9 @@ t_token *__to_token(char *cmd) tmp += __get_sizeof_redir(tmp, tmp_redir); } else + { token->argv = ft_strjoin_free(token->argv, ft_substr(tmp, 0, 1)); + } tmp++; } return (token);