aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Uhlig2024-08-11 15:15:06 +0200
committerDominik Kaiser2024-08-11 15:42:30 +0200
commit0d4f9e94f6d28a154ae4be3b918bfb014b4fa1e0 (patch)
treeff66a099b7f364dc2e50d91b8b397df0ba1e4e0c
parent8abf7abdc9d49f52c4fcad0afc92730c4c195b7f (diff)
downloadminishell-0d4f9e94f6d28a154ae4be3b918bfb014b4fa1e0.tar.gz
minishell-0d4f9e94f6d28a154ae4be3b918bfb014b4fa1e0.zip
fixed |> fixed norm added new function
-rw-r--r--include/token.h5
-rw-r--r--lib/libft/Makefile1
-rw-r--r--lib/libft/ft_isspace.c20
-rw-r--r--lib/libft/libft.h3
-rw-r--r--src/repl.c4
-rw-r--r--src/tokenizer.c17
6 files changed, 37 insertions, 13 deletions
diff --git a/include/token.h b/include/token.h
index d7ff9f9..80ace03 100644
--- a/include/token.h
+++ b/include/token.h
@@ -6,7 +6,7 @@
/* By: chuhlig <chuhlig@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/06/27 13:27:18 by dkaiser #+# #+# */
-/* Updated: 2024/08/05 13:23:27 by chuhlig ### ########.fr */
+/* Updated: 2024/08/11 13:46:22 by chuhlig ### ########.fr */
/* */
/* ************************************************************************** */
@@ -45,6 +45,7 @@ t_token *new_redir_token(int type, t_token *previous,
t_token *next);
void free_token(t_token *token);
-void tokenizer(char *s, t_token **token_list);
+void tokenizer(char *s, t_token **token_list,
+ char quote_check);
#endif \ No newline at end of file
diff --git a/lib/libft/Makefile b/lib/libft/Makefile
index 6951c43..6f2950c 100644
--- a/lib/libft/Makefile
+++ b/lib/libft/Makefile
@@ -10,6 +10,7 @@ SRC = ft_atoi.c \
ft_isascii.c \
ft_isdigit.c \
ft_isprint.c \
+ ft_isspace.c \
ft_itoa.c \
ft_memchr.c \
ft_memcmp.c \
diff --git a/lib/libft/ft_isspace.c b/lib/libft/ft_isspace.c
new file mode 100644
index 0000000..63f21fa
--- /dev/null
+++ b/lib/libft/ft_isspace.c
@@ -0,0 +1,20 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* ft_isspace.c :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: chuhlig <chuhlig@student.42.fr> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2024/08/11 13:59:45 by chuhlig #+# #+# */
+/* Updated: 2024/08/11 14:04:23 by chuhlig ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+#include "libft.h"
+
+int ft_isspace(char c)
+{
+ if (c == ' ' || c == '\t')
+ return (1);
+ return (0);
+}
diff --git a/lib/libft/libft.h b/lib/libft/libft.h
index 67fbb0f..abb739d 100644
--- a/lib/libft/libft.h
+++ b/lib/libft/libft.h
@@ -6,7 +6,7 @@
/* By: chuhlig <chuhlig@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/03/10 16:37:54 by dkaiser #+# #+# */
-/* Updated: 2024/08/05 13:55:13 by chuhlig ### ########.fr */
+/* Updated: 2024/08/11 14:01:57 by chuhlig ### ########.fr */
/* */
/* ************************************************************************** */
@@ -24,6 +24,7 @@ int ft_isalpha(int c);
int ft_isdigit(int c);
int ft_isalnum(int c);
int ft_isprint(int c);
+int ft_isspace(char c);
int ft_isascii(int c);
int ft_strlen(const char *str);
void *ft_memset(void *b, int c, size_t len);
diff --git a/src/repl.c b/src/repl.c
index 1fd7be7..fe9faf3 100644
--- a/src/repl.c
+++ b/src/repl.c
@@ -6,7 +6,7 @@
/* By: chuhlig <chuhlig@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/06/24 16:07:04 by dkaiser #+# #+# */
-/* Updated: 2024/08/09 15:27:11 by chuhlig ### ########.fr */
+/* Updated: 2024/08/11 14:41:29 by chuhlig ### ########.fr */
/* */
/* ************************************************************************** */
@@ -27,8 +27,8 @@ void repl(const char *prompt)
return ;
add_history(input);
token_list = NULL;
- tokenizer(input, &token_list);
current = token_list;
+ tokenizer(input, &token_list, '\0');
while (current != NULL)
{
next = current->next;
diff --git a/src/tokenizer.c b/src/tokenizer.c
index 34685ac..a9a86ca 100644
--- a/src/tokenizer.c
+++ b/src/tokenizer.c
@@ -6,7 +6,7 @@
/* By: chuhlig <chuhlig@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/06/28 20:55:50 by chuhlig #+# #+# */
-/* Updated: 2024/08/09 15:40:00 by chuhlig ### ########.fr */
+/* Updated: 2024/08/11 14:52:54 by chuhlig ### ########.fr */
/* */
/* ************************************************************************** */
@@ -36,7 +36,7 @@ void print_token(t_token *token)
}
}
-void conditional_print(char *string, int start_of_string, int i,
+void snap_string_token(char *string, int start_of_string, int i,
t_token **token_list)
{
char *line;
@@ -64,7 +64,7 @@ void conditional_print(char *string, int start_of_string, int i,
void handle_special_chars(char *s, int *i, int *start, t_token **token_list)
{
- conditional_print(s, *start, *i - 1, token_list);
+ snap_string_token(s, *start, *i - 1, token_list);
if (s[*i] == '<' && s[*i + 1] == '<')
*token_list = new_redir_token(INPUT_LIMITER, *token_list, NULL);
else if (s[*i] == '>' && s[*i + 1] == '>')
@@ -78,14 +78,15 @@ void handle_special_chars(char *s, int *i, int *start, t_token **token_list)
else if (s[*i] == '\n')
*token_list = new_token(NEWLINE_TOKEN, *token_list, NULL);
print_token(*token_list);
- if (s[*i + 1] == '<' || s[*i + 1] == '>')
+ if (s[*i] == '<' && s[*i + 1] == '<')
+ (*i)++;
+ if (s[*i] == '>' && s[*i + 1] == '>')
(*i)++;
*start = *i + 1;
}
-void tokenizer(char *s, t_token **token_list)
+void tokenizer(char *s, t_token **token_list, char quote_check)
{
- char quote_check;
int pos;
int i;
int f;
@@ -104,9 +105,9 @@ void tokenizer(char *s, t_token **token_list)
f = 1;
quote_check = s[i];
}
- if ((!f && (s[i] == ' ' || s[i] == '\t')) || i == ft_strlen(s) - 1)
+ if ((!f && (ft_isspace(s[i + 1]))) || i == ft_strlen(s) - 1)
{
- conditional_print(s, pos, i, token_list);
+ snap_string_token(s, pos, i, token_list);
pos = i + 1;
}
}