aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/lexer.h3
m---------minishell_test0
-rw-r--r--src/lexer/trim.c30
-rw-r--r--src/preprocess.c4
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]))))
{