Skip to content

Commit 02216a6

Browse files
authored
Merge pull request #26 from Hugothms/hugo
Final
2 parents 26e516a + e23894b commit 02216a6

16 files changed

Lines changed: 176 additions & 113 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,4 @@ minishell
1111
# Makefile
1212
mini_tester/**
1313
minishell-tester/**
14+
mini_tester

Makefile

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
# ::: :::::::: #
44
# Makefile :+: :+: :+: #
55
# +:+ +:+ +:+ #
6-
# By: vmoreau <vmoreau@student.42.fr> +#+ +:+ +#+ #
6+
# By: hthomas <hthomas@student.42.fr> +#+ +:+ +#+ #
77
# +#+#+#+#+#+ +#+ #
88
# Created: 2020/09/15 20:30:49 by hthomas #+# #+# #
9-
# Updated: 2020/12/07 18:07:07 by vmoreau ### ########.fr #
9+
# Updated: 2020/12/15 22:18:39 by hthomas ### ########.fr #
1010
# #
1111
# **************************************************************************** #
1212

@@ -22,6 +22,7 @@ SRCS += srcs/main.c
2222
#---------------Commands---------------#
2323

2424
SRCS += srcs/commands/ft_cd.c \
25+
srcs/commands/ft_cd2.c \
2526
srcs/commands/ft_echo.c \
2627
srcs/commands/ft_env.c \
2728
srcs/commands/ft_exit.c \
@@ -95,7 +96,7 @@ fclean: clean echoFCLEAN
9596

9697
re: fclean all
9798

98-
.PHONY: clean fclean
99+
.PHONY: all re clean fclean
99100
.SILENT:
100101

101102
###########################COLOR

includes/minishell.h

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
/* By: hthomas <hthomas@student.42.fr> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
88
/* Created: 2020/05/04 09:33:37 by hthomas #+# #+# */
9-
/* Updated: 2020/12/07 19:20:30 by hthomas ### ########.fr */
9+
/* Updated: 2020/12/15 22:20:29 by hthomas ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

@@ -107,6 +107,11 @@ t_glob g_glob;
107107
*/
108108
char *ft_echo(t_list_cmd *args);
109109
char *ft_cd(t_list_cmd *args, t_list *env);
110+
char *ft_cd2(t_list_cmd *args, t_list *env,
111+
struct stat *stats);
112+
char *error_cd(char *arg, int err_status);
113+
int test_cd_home(t_list_cmd *args, t_list *env,
114+
struct stat *stats);
110115
char *ft_pwd(void);
111116
char *ft_export(t_list_cmd *args, t_list *env);
112117
void add_quote(char **tri);
@@ -115,7 +120,7 @@ int have_equal(char *str);
115120
void print_exp_err(char **key, char **value);
116121
char *ft_unset(t_list_cmd *args, t_list *env);
117122
char *ft_env(t_list *env);
118-
char *ft_exit(t_list_cmd *args, t_list *env);
123+
char *ft_exit(t_list_line *lst_line, t_list *env);
119124
void clear_env_lst(t_list *env);
120125

121126
/*
@@ -161,14 +166,14 @@ void delete_empty_elements(t_list_cmd **cmd);
161166
void parse_error(char *input, t_list_line *lst_line);
162167
int print_synt_err(void);
163168
void print_prompt(void);
164-
void not_found(char *cmd);
169+
void not_found(t_list_line *lst_line, t_list *env);
165170

166171
/*
167172
** exec_line.c
168173
*/
169174
void exec_line(t_list_line *lst_line, t_list *env);
170175
t_list_cmd *reparse_var_env(t_list_cmd *cmd);
171-
char *exec_cmd(t_list_cmd *cmd, t_list *env);
176+
char *exec_cmd(t_list_line *lst_line, t_list *env);
172177
int make_and_exec_cmd(t_list_line *lst_line, t_list *env);
173178
t_list_cmd *split_add_back(t_list_cmd *cmd,
174179
void (*del)(t_list_cmd *), t_list_cmd *to_del);
@@ -187,7 +192,7 @@ void set_env(char **envp, t_list **env);
187192
** pipe.c
188193
*/
189194
int create_pipe(t_list_line **lst_line, t_list \
190-
*env, int fd_inold);
195+
*env, int fd_inold, int *nb_wait);
191196

192197
/*
193198
** redirection.c
@@ -197,7 +202,7 @@ int redirections(t_list_line *lst_line);
197202
/*
198203
** searche_command.c
199204
*/
200-
int search_command(t_list_cmd *cmd, t_list *env);
205+
int search_command(t_list_line *lst_line, t_list *env);
201206

202207
/*
203208
** List

srcs/commands/ft_cd.c

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
/* By: hthomas <hthomas@student.42.fr> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
88
/* Created: 2020/10/22 16:16:24 by vmoreau #+# #+# */
9-
/* Updated: 2020/12/07 18:57:59 by hthomas ### ########.fr */
9+
/* Updated: 2020/12/15 22:20:37 by hthomas ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

@@ -20,6 +20,7 @@ static void modif_oldpwd_pwd(t_list *env)
2020
modif_var_env(env, "OLDPWD", &find_var_env(env, "PWD=")[4]);
2121
if (!pwd)
2222
{
23+
ft_putstr_fd("No such file or directory\n", STDERR);
2324
free(pwd);
2425
pwd = ft_strdup(&find_var_env(env, "PWD=")[4]);
2526
pwd = ft_strjoin_free(pwd, "/..");
@@ -30,7 +31,7 @@ static void modif_oldpwd_pwd(t_list *env)
3031
free(pwd);
3132
}
3233

33-
static char *error_cd(char *arg, int err_status)
34+
char *error_cd(char *arg, int err_status)
3435
{
3536
char *ret;
3637

@@ -75,7 +76,7 @@ static char *cd_oldpwd(t_list *env, t_list_cmd *arg, struct stat *stats)
7576
return (ret);
7677
}
7778

78-
static int test_cd_home(t_list_cmd *args, t_list *env, struct stat *stats)
79+
int test_cd_home(t_list_cmd *args, t_list *env, struct stat *stats)
7980
{
8081
if (stat(&find_var_env(env, "HOME=")[5], stats) != 0)
8182
return (1);
@@ -88,18 +89,13 @@ static int test_cd_home(t_list_cmd *args, t_list *env, struct stat *stats)
8889
char *ft_cd(t_list_cmd *args, t_list *env)
8990
{
9091
struct stat stats;
92+
char *ret;
9193

9294
g_glob.exit = 0;
9395
if ((!args || !args->str))
9496
{
95-
if (chdir(&find_var_env(env, "HOME=")[5]))
96-
if (find_var_env(env, "HOME=") == NULL)
97-
return (error_cd("« HOME »", 3));
98-
else if (find_var_env(env, "HOME=")[5] == '\0')
99-
return (ft_strdup(""));
100-
else if (test_cd_home(args, env, &stats))
101-
return (error_cd(&find_var_env(env, "HOME=")[5],
102-
test_cd_home(args, env, &stats)));
97+
if ((ret = ft_cd2(args, env, &stats)))
98+
return (ret);
10399
}
104100
else if (c_lst_size(args) > 1)
105101
return (error_cd(args->str, 0));

srcs/commands/ft_cd2.c

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
/* ************************************************************************** */
2+
/* */
3+
/* ::: :::::::: */
4+
/* ft_cd2.c :+: :+: :+: */
5+
/* +:+ +:+ +:+ */
6+
/* By: hthomas <hthomas@student.42.fr> +#+ +:+ +#+ */
7+
/* +#+#+#+#+#+ +#+ */
8+
/* Created: 2020/12/15 22:17:31 by hthomas #+# #+# */
9+
/* Updated: 2020/12/16 10:01:30 by hthomas ### ########.fr */
10+
/* */
11+
/* ************************************************************************** */
12+
13+
#include "../includes/minishell.h"
14+
15+
char *ft_cd2(t_list_cmd *args, t_list *env, struct stat *stats)
16+
{
17+
if (chdir(&find_var_env(env, "HOME=")[5]))
18+
{
19+
if (find_var_env(env, "HOME=") == NULL)
20+
return (error_cd("« HOME »", 3));
21+
else if (find_var_env(env, "HOME=")[5] == '\0')
22+
return (ft_strdup(""));
23+
else if (test_cd_home(args, env, stats))
24+
return (error_cd(&find_var_env(env, "HOME=")[5],
25+
test_cd_home(args, env, stats)));
26+
}
27+
return (NULL);
28+
}

srcs/commands/ft_exit.c

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
/* ::: :::::::: */
44
/* ft_exit.c :+: :+: :+: */
55
/* +:+ +:+ +:+ */
6-
/* By: hthomas <hthomas@student.42.fr> +#+ +:+ +#+ */
6+
/* By: vmoreau <vmoreau@student.42.fr> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
88
/* Created: 2020/10/22 16:16:34 by vmoreau #+# #+# */
9-
/* Updated: 2020/12/07 19:10:11 by hthomas ### ########.fr */
9+
/* Updated: 2020/12/10 16:35:05 by vmoreau ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

@@ -64,18 +64,20 @@ static int check_args(t_list_cmd *args)
6464
return (ret);
6565
}
6666

67-
char *ft_exit(t_list_cmd *args, t_list *env)
67+
char *ft_exit(t_list_line *lst_line, t_list *env)
6868
{
6969
int err;
7070

71-
err = check_args(args);
71+
err = check_args(lst_line->cmd->next);
7272
if (err >= 0)
7373
{
7474
clear_env_lst(env);
7575
free(g_glob.path);
7676
if (!err)
77-
if (args && (err = ft_atoi_strict(args->str)))
77+
if (lst_line->cmd->next &&
78+
(err = ft_atoi_strict(lst_line->cmd->next->str)))
7879
g_glob.exit = err;
80+
l_lst_clear(lst_line);
7981
exit(g_glob.exit);
8082
}
8183
return (NULL);

srcs/commands/ft_export2.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
/* By: hthomas <hthomas@student.42.fr> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
88
/* Created: 2020/10/22 16:16:36 by vmoreau #+# #+# */
9-
/* Updated: 2020/12/07 19:05:39 by hthomas ### ########.fr */
9+
/* Updated: 2020/12/15 21:48:32 by hthomas ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

@@ -20,10 +20,12 @@ int have_equal(char *str)
2020
while (str[i])
2121
{
2222
if (str[i] == '=')
23+
{
2324
if (i == 0)
2425
return (1);
2526
else
2627
return (i);
28+
}
2729
i++;
2830
}
2931
return (0);

srcs/commands/ft_unset.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,11 @@
66
/* By: hthomas <hthomas@student.42.fr> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
88
/* Created: 2020/10/22 16:16:41 by vmoreau #+# #+# */
9-
/* Updated: 2020/12/07 19:02:23 by hthomas ### ########.fr */
9+
/* Updated: 2020/12/15 21:49:42 by hthomas ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

1313
#include "../includes/minishell.h"
14-
#include <stdio.h>
1514

1615
static char **catch_arg(t_list_cmd *args)
1716
{
@@ -44,7 +43,7 @@ static void lst_del_next_node(t_list *env, char *var)
4443
tmp = env->next->next;
4544
free(env->next->content);
4645
free(env->next);
47-
env->next == NULL;
46+
env->next = NULL;
4847
env->next = tmp;
4948
break ;
5049
}
@@ -69,7 +68,7 @@ char *ft_unset(t_list_cmd *args, t_list *env)
6968
else
7069
{
7170
g_glob.exit = 1;
72-
ft_putstr_fd("minishell: export: « ", STDERR);
71+
ft_putstr_fd("minishell: unset: « ", STDERR);
7372
ft_putstr_fd(var[i], STDERR);
7473
ft_putstr_fd(" » : not valid identifier\n", STDERR);
7574
}

srcs/main.c

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
/* ::: :::::::: */
44
/* main.c :+: :+: :+: */
55
/* +:+ +:+ +:+ */
6-
/* By: hthomas <hthomas@student.42.fr> +#+ +:+ +#+ */
6+
/* By: vmoreau <vmoreau@student.42.fr> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
88
/* Created: 2020/09/15 19:21:43 by hthomas #+# #+# */
9-
/* Updated: 2020/12/07 19:20:36 by hthomas ### ########.fr */
9+
/* Updated: 2020/12/11 16:32:54 by vmoreau ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

@@ -38,21 +38,23 @@ static void sighandler(int signum)
3838
{
3939
kill(g_glob.pid, signum);
4040
ft_putstr_fd("\n", STDERR);
41-
g_glob.exit = 130;
4241
g_glob.pid = 0;
4342
}
4443
else if (g_glob.pid && signum == SIGQUIT)
4544
{
4645
kill(g_glob.pid, signum);
4746
ft_putstr_fd("Quit (core dumped)\n", STDERR);
48-
g_glob.exit = 131;
4947
g_glob.pid = 0;
5048
}
5149
else
5250
{
5351
ft_putstr_fd("\n", STDERR);
5452
print_prompt();
5553
}
54+
if (signum == SIGINT)
55+
g_glob.exit = 130;
56+
if (signum == SIGQUIT)
57+
g_glob.exit = 131;
5658
}
5759

5860
static void init_main(t_list **env, char **envp)

0 commit comments

Comments
 (0)