aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
m---------minishell_test0
-rw-r--r--print_argv_env_main.c6
-rw-r--r--src/builtin/export.c3
-rw-r--r--src/eval/operation.c4
-rw-r--r--src/lexer/utils.c3
-rw-r--r--src/parser/parser.c21
-rw-r--r--src/utils.c8
7 files changed, 31 insertions, 14 deletions
diff --git a/minishell_test b/minishell_test
-Subproject f06e8de42359cff6cb93dad4a89c64078d86479
+Subproject 93ead396473526e5f4849ad2f4194b8cc6c9ce4
diff --git a/print_argv_env_main.c b/print_argv_env_main.c
index 330638c..c668639 100644
--- a/print_argv_env_main.c
+++ b/print_argv_env_main.c
@@ -11,8 +11,8 @@ int main(int argc, char **argv, char **envp)
printf("ARGV:\n");
for (int i = 0; i < argc; i++)
printf("[%d] %s\n", i, argv[i]);
- /* printf("\nENV:\n"); */
- /* for (int i = 0; envp[i] != NULL && i < 10; i++) */
- /* printf("[%d] %s\n", i, envp[i]); */
+ printf("\nENV:\n");
+ for (int i = 0; envp[i] != NULL && i < 10; i++)
+ printf("[%d] %s\n", i, envp[i]);
return 0;
}
diff --git a/src/builtin/export.c b/src/builtin/export.c
index c026755..e388700 100644
--- a/src/builtin/export.c
+++ b/src/builtin/export.c
@@ -6,7 +6,7 @@
/* By: charles <charles@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/04/01 17:11:34 by charles #+# #+# */
-/* Updated: 2020/10/07 11:12:33 by cacharle ### ########.fr */
+/* Updated: 2020/10/08 16:59:28 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
@@ -26,7 +26,6 @@
static void st_put_declare_x(char *s)
{
char *equal_ptr;
- int shlvl;
if (s == NULL)
return ;
diff --git a/src/eval/operation.c b/src/eval/operation.c
index 1620be2..cb7de34 100644
--- a/src/eval/operation.c
+++ b/src/eval/operation.c
@@ -6,7 +6,7 @@
/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/06/17 15:27:22 by charles #+# #+# */
-/* Updated: 2020/10/07 15:08:11 by cacharle ### ########.fr */
+/* Updated: 2020/10/08 16:59:42 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
@@ -88,7 +88,7 @@ int eval_pipeline(int fds[2], t_env env, t_ast *ast)
g_child_pid = pid;
close(p[FD_READ]);
- int status = 0;
+ /* int status = 0; */
waitpid(pid, &pid, 0);
while (wait(NULL) != -1)
diff --git a/src/lexer/utils.c b/src/lexer/utils.c
index d2b35cb..0b7baa3 100644
--- a/src/lexer/utils.c
+++ b/src/lexer/utils.c
@@ -6,7 +6,7 @@
/* By: nahaddac <nahaddac@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/07/16 08:18:15 by nahaddac #+# #+# */
-/* Updated: 2020/10/08 14:10:17 by cacharle ### ########.fr */
+/* Updated: 2020/10/08 14:11:51 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
@@ -35,6 +35,7 @@ enum e_tok tok_assign_tag(char *content)
return (TAG_PARENT_CLOSE);
return (0);
}
+
/*
** return tag
** le tag stick est rajouter si
diff --git a/src/parser/parser.c b/src/parser/parser.c
index 25e9531..8b4732f 100644
--- a/src/parser/parser.c
+++ b/src/parser/parser.c
@@ -6,7 +6,7 @@
/* By: nahaddac <nahaddac@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/06/17 18:09:04 by nahaddac #+# #+# */
-/* Updated: 2020/10/08 12:29:52 by cacharle ### ########.fr */
+/* Updated: 2020/10/08 16:58:19 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
@@ -61,7 +61,7 @@ t_parsed *parse_cmd(t_tok_lst *input)
t_ast *ast;
t_parsed *tmp;
- if (input->tag & TAG_IS_SEP || input->tag == TAG_PIPE)
+ if (input->tag & TAG_IS_SEP || input->tag == TAG_PIPE || input->tag == TAG_PARENT_CLOSE)
{
t_parsed *ret = parsed_error("syntax error near unexpected token `%s'\n", input->content);
tok_lst_destroy(&input, free);
@@ -142,6 +142,8 @@ t_parsed *parse_op(t_tok_lst *input)
t_parsed *right;
enum e_tok sep_tag;
+ if (input == NULL)
+ return (NULL);
left = parse_pipeline(input);
if (left == NULL || left->syntax_error)
return (left);
@@ -154,7 +156,10 @@ t_parsed *parse_op(t_tok_lst *input)
g_sep_str_lookup[sep_tag]));
ft_lstpop_front((t_ftlst**)&input, free);
if (input == NULL && sep_tag == TAG_END)
+ {
+ left->rest = NULL;
return (left);
+ }
if (input == NULL)
{
ast_destroy(left->ast);
@@ -193,7 +198,10 @@ t_parsed *parse_expr(t_tok_lst *input)
if (input->tag & TAG_PARENT_OPEN)
{
ft_lstpop_front(&input, free);
- if (!(parsed = parse_op(input)) || parsed->syntax_error)
+ if (input == NULL)
+ return (parsed_error("syntax error: unexpected end of file\n"));
+ parsed = parse_op(input);
+ if (parsed == NULL || parsed->syntax_error)
return (parsed);
input = parsed->rest;
if (input == NULL || !(input->tag & TAG_PARENT_CLOSE))
@@ -221,5 +229,10 @@ t_parsed *parse(t_tok_lst *input)
{
if (input == NULL)
return (NULL);
- return (parse_op(input));
+ t_parsed *parsed = parse_op(input);
+ if (parsed == NULL || parsed->syntax_error)
+ return parsed;
+ if (parsed->rest != NULL)
+ return (parsed_error("syntax error near unexpected token `%s'\n", parsed->rest->content));
+ return (parsed);
}
diff --git a/src/utils.c b/src/utils.c
index b816a3f..3da5c59 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -6,7 +6,7 @@
/* By: cacharle <cacharle@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/02/28 11:56:31 by cacharle #+# #+# */
-/* Updated: 2020/10/08 11:31:05 by cacharle ### ########.fr */
+/* Updated: 2020/10/08 17:02:52 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
@@ -24,6 +24,7 @@
void print_prompt(void)
{
char cwd[PATH_MAX + 1];
+ char *last_slash;
ft_bzero(cwd, PATH_MAX + 1);
if (getcwd(cwd, PATH_MAX) == NULL)
@@ -31,6 +32,9 @@ void print_prompt(void)
ft_putstr_fd("$ ", STDERR_FILENO);
return ;
}
+ last_slash = ft_strrchr(cwd, '/');
+ if (last_slash != NULL && ft_strlen(cwd) != 1)
+ ft_strcpy(cwd, last_slash + 1);
ft_putstr_fd("\033[0;32m", STDERR_FILENO);
ft_putstr_fd(cwd, STDERR_FILENO);
ft_putstr_fd("\033[0m$ ", STDERR_FILENO);
@@ -40,6 +44,6 @@ void try(void *ptr)
{
if (ptr != NULL)
return ;
- ft_putendl_fd(STDERR_FILENO, "minishell: fatal error");
+ ft_putendl_fd("minishell: fatal error", STDERR_FILENO);
exit(3);
}