diff options
| -rw-r--r-- | include/lexer.h | 3 | ||||
| m--------- | minishell_test | 0 | ||||
| -rw-r--r-- | src/lexer/trim.c | 30 | ||||
| -rw-r--r-- | src/preprocess.c | 4 |
4 files changed, 17 insertions, 20 deletions
diff --git a/include/lexer.h b/include/lexer.h index 15c5d93..30d5ae2 100644 --- a/include/lexer.h +++ b/include/lexer.h @@ -6,7 +6,7 @@ /* By: nahaddac <nahaddac@student.42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/06/19 10:51:26 by nahaddac #+# #+# */ -/* Updated: 2020/09/14 16:28:13 by charles ### ########.fr */ +/* Updated: 2020/09/15 18:24:12 by charles ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,6 +21,7 @@ # include <stdlib.h> # include "libft_lst.h" # include "libft_str.h" +# include "error.h" /* ** \brief token tags (type of token) diff --git a/minishell_test b/minishell_test -Subproject 11c3280428a0d23aaeaf961ba0d2885fd848494 +Subproject 12f385695e13bbb0dd65062fa371bd914acd786 diff --git a/src/lexer/trim.c b/src/lexer/trim.c index cffe43a..0bdacac 100644 --- a/src/lexer/trim.c +++ b/src/lexer/trim.c @@ -6,7 +6,7 @@ /* By: nahaddac <nahaddac@student.42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/07/16 08:18:36 by nahaddac #+# #+# */ -/* Updated: 2020/09/14 16:33:13 by charles ### ########.fr */ +/* Updated: 2020/09/15 18:31:56 by charles ### ########.fr */ /* */ /* ************************************************************************** */ @@ -35,19 +35,17 @@ void del_space(char *str) int del_quote(char *str) { size_t i; - int nb_q; + size_t quote_counter; i = 0; - nb_q = 1; + quote_counter = 1; if (str[0] == '\'') { while (str[i++] != '\0') { - if (str[i] == '\\') - i += 2; if (str[i] == '\'') { - nb_q++; + quote_counter++; break ; } } @@ -60,21 +58,19 @@ int del_quote(char *str) i += 2; if (str[i] == '"') { - nb_q++; + quote_counter++; break ; } } } - if (nb_q % 2 == 0) - { - str[i] = '\0'; - if(!(ft_memmove(str, str + 1, ft_strlen(str + 1) + 1))) - return 1; - else - return 0; - } - else - return 2; + if (quote_counter % 2 == 1) + { + errorf("unexpected EOF while looking for matching `%c'\n", str[0]); + return (1); + } + str[i] = '\0'; + ft_memmove(str, str + 1, ft_strlen(str + 1) + 1); + return (0); } int lexer_trim(t_tok_lst *tokens) diff --git a/src/preprocess.c b/src/preprocess.c index b3a6743..1379107 100644 --- a/src/preprocess.c +++ b/src/preprocess.c @@ -6,7 +6,7 @@ /* By: charles <charles@student.42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/04/03 08:58:49 by charles #+# #+# */ -/* Updated: 2020/09/15 17:40:25 by charles ### ########.fr */ +/* Updated: 2020/09/15 18:35:09 by charles ### ########.fr */ /* */ /* ************************************************************************** */ @@ -83,7 +83,7 @@ char **st_tokens_to_argv(t_tok_lst *tokens) bool escape(char *str, enum e_tok tag) { - if (str[0] == '\\' + if (str[0] == '\\' && str[1] != '\0' && (tag & TAG_STR || ((tag & TAG_STR_DOUBLE) && ft_strchr("\\\"$", str[1])))) { |
