/* By: lnikolov <lnikolov@student.42prague.com +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/06/21 16:34:43 by ljiriste #+# #+# */
-/* Updated: 2024/08/30 14:28:42 by lnikolov ### ########.fr */
+/* Updated: 2024/08/31 11:58:17 by ljiriste ### ########.fr */
/* */
/* ************************************************************************** */
#include "minishell.h"
#include <stdlib.h>
-#ifndef NOLEAKS
-# include <stdio.h> // readline
-# include <readline/readline.h> // readline
-# include <readline/history.h> // readline
-#else // NOLEAKS
-# include <unistd.h>
-#endif // NOLEAKS
-
static int is_operator_start(char *str, size_t size)
{
if (!str)
return (g_tokens[WORD]);
}
-#ifndef NOLEAKS
-
-char *continue_input(char *line, size_t *i)
-{
- free(line);
- *i = 0;
- return (readline("> "));
-}
-
-#else //NOLEAKS
-
-char *continue_input(char *line, size_t *i)
-{
- free(line);
- *i = 0;
- ft_printf("> ");
- return (get_next_line(STDIN_FILENO));
-}
-
-#endif //NOLEAKS
-
-int handle_quote(t_vec *current_token, char **line, char quote_char, size_t *i)
+int handle_quote(t_vec *current_token, char *line, char quote_char, size_t *i)
{
- if (ft_vec_append(current_token, line[0] + (*i)++) != success)
+ if (ft_vec_append(current_token, line + (*i)++) != success)
return (1);
- while (line[0][*i] != quote_char)
+ while (line[*i] != quote_char)
{
- if (!line[0][*i])
+ if (!line[*i])
return (1);
else
- if (ft_vec_append(current_token, line[0] + (*i)++) != success)
+ if (ft_vec_append(current_token, line + (*i)++) != success)
return (1);
}
- ft_vec_append(current_token, line[0] + (*i)++);
+ ft_vec_append(current_token, line + (*i)++);
return (0);
}
}
}
-int tokenize(char **line, t_vec *tokens)
+int tokenize(char *line, t_vec *tokens)
{
t_vec current_token;
t_token token;
ft_vec_init(¤t_token, sizeof(char));
res = 0;
i = 0;
- while (line[0][i] && res == 0)
+ while (line[i] && res == 0)
{
if (is_operator_start(current_token.vec, current_token.size)
- && can_expand_operator(¤t_token, line[0][i]))
- res = (ft_vec_append(¤t_token, line[0] + (i++)) != success);
+ && can_expand_operator(¤t_token, line[i]))
+ res = (ft_vec_append(¤t_token, line + (i++)) != success);
else if (is_operator(¤t_token))
res = finish_token(tokens, ¤t_token, '\0');
- else if (line[0][i] == '\'')
+ else if (line[i] == '\'')
res = handle_quote(¤t_token, line, '\'', &i);
- else if (line[0][i] == '"' )
+ else if (line[i] == '"' )
res = handle_quote(¤t_token, line, '"', &i);
- else if (is_operator_start(line[0] + i, 1) || ft_isspace(line[0][i]))
+ else if (is_operator_start(line + i, 1) || ft_isspace(line[i]))
{
if (current_token.size > 0)
- res = finish_token(tokens, ¤t_token, line[0][i]);
- if (!ft_isspace(line[0][i]))
- res = res || ft_vec_append(¤t_token, line[0] + i)
+ res = finish_token(tokens, ¤t_token, line[i]);
+ if (!ft_isspace(line[i]))
+ res = res || ft_vec_append(¤t_token, line + i)
!= success;
++i;
}
else if (current_token.size > 0)
- res = ft_vec_append(¤t_token, line[0] + (i++)) != success;
- else if (line[0][i] == '#')
+ res = ft_vec_append(¤t_token, line + (i++)) != success;
+ else if (line[i] == '#')
break ;
else
- res = ft_vec_append(¤t_token, line[0] + (i++)) != success;
+ res = ft_vec_append(¤t_token, line + (i++)) != success;
}
if (current_token.size > 0 && !res)
{