From b6e732d73ecaa35f2583a324aace7711d5f4a05e Mon Sep 17 00:00:00 2001 From: Charles Cabergs Date: Tue, 15 Sep 2020 18:37:11 +0200 Subject: Added lexer quote mismatch error message, Fixing escape on last character --- include/lexer.h | 3 ++- minishell_test | 2 +- src/lexer/trim.c | 30 +++++++++++++----------------- src/preprocess.c | 4 ++-- 4 files changed, 18 insertions(+), 21 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 +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 # 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 index 11c3280..12f3856 160000 --- a/minishell_test +++ b/minishell_test @@ -1 +1 @@ -Subproject commit 11c3280428a0d23aaeaf961ba0d2885fd848494b +Subproject commit 12f385695e13bbb0dd65062fa371bd914acd7862 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 +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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])))) { -- cgit