diff --git a/srcs/built_in/cd.c b/srcs/built_in/cd.c index 267f2c4..9dec3f0 100644 --- a/srcs/built_in/cd.c +++ b/srcs/built_in/cd.c @@ -48,22 +48,22 @@ void del_one(t_s_cmd *cmd) int i; char *r; - if (find_it(cmd->big_cmd->env, "PWD=")) + if (find_it(cmd->big_cmd->env, "PWD")) { - i = ft_strlen(cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD=")]); + i = ft_strlen(cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD")]); // printf("%s\n", cmd->args[6]); - // while (cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD=")][i]) + // while (cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD")][i]) // i++; - while (cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD=")][i] != '/') + while (cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD")][i] != '/') i--; - r = ft_substr(cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD=")], 0, i); + r = ft_substr(cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD")], 0, i); // printf ("-->%s\n", r); - // free(cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD=")]); + // free(cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD")]); if (r) - cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD=")] = ft_strdup(r); + cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD")] = ft_strdup(r); else - cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD=")] = ft_strdup("PWD=/"); + cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD")] = ft_strdup("PWD=/"); if (r) free(r); @@ -74,10 +74,10 @@ void add_one(t_s_cmd *cmd, char *str) { char *r; - r = ft_strjoin(cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD=")], "/"); + r = ft_strjoin(cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD")], "/"); r = ft_strjoin(r, str); - //free(cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD=")]); - cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD=")] = ft_strdup(r); + //free(cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD")]); + cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD")] = ft_strdup(r); free(r); } @@ -97,7 +97,7 @@ void change_path(t_s_cmd *cmd) // printf("%d\n", i); /*if (cmd->big_cmd->env[i]) free(cmd->big_cmd->env[i]);*/ - cmd->big_cmd->env[i] = ft_strjoin("OLD", cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD=")]); + cmd->big_cmd->env[i] = ft_strjoin("OLD", cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD")]); i = 0; while (tab[i]) { @@ -128,16 +128,20 @@ void reboot_pwd(t_s_cmd *cmd, int i) free(str); } -int find_it(char **str, char *s) +int find_it(char **str, char *s) { - int i; + int i; - i = 0; - while (str[i] && ft_strncmp(str[i], s, ft_strlen(s))) - i++; - if (str[i] == NULL) - return (0); - return (i); + i = 0; + //printf("%c\n"); + while (str[i] && (ft_strncmp(str[i], s, ft_strlen(s)) || (!ft_strncmp(str[i], s, ft_strlen(s)) && (str[i][ft_strlen(s)] != '=' && str[i][ft_strlen(s)] != 0)))) + { + // printf("str= %s et env[i]= %s et char= '%c'\n", s, str[i], str[i][ft_strlen(s)]); + i++; + } + if (str[i] == NULL) + return (-1); + return (i); } void open_directory(t_s_cmd *cmd) @@ -145,13 +149,13 @@ void open_directory(t_s_cmd *cmd) char **str; int j; - if (find_it(cmd->big_cmd->env, "PWD=")) + if (find_it(cmd->big_cmd->env, "PWD")) { - str = ft_split(cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD=")], '/'); + str = ft_split(cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD")], '/'); j = double_size(str); free_double(str); } - if (cmd->args[2]) + if (cmd->nb_args > 2) { printf("Minishell: cd: too many arguments\n"); cmd->big_cmd->err_var = 1; @@ -159,19 +163,20 @@ void open_directory(t_s_cmd *cmd) } if (!cmd->args[1]) { - if (find_it(cmd->big_cmd->env, "HOME=") == 0) + if (find_it(cmd->big_cmd->env, "HOME") == -1) { + // printf("---->%s\n", cmd->big_cmd->env[find_it(cmd->big_cmd->env, "HOME")]); printf("Minishell: cd: HOME not set\n"); cmd->big_cmd->err_var = 1; return ; } - char *p = ft_substr(cmd->big_cmd->env[find_it(cmd->big_cmd->env, "HOME=")], 5, ft_strlen(cmd->big_cmd->env[find_it(cmd->big_cmd->env, "HOME=")])); + char *p = ft_substr(cmd->big_cmd->env[find_it(cmd->big_cmd->env, "HOME")], 5, ft_strlen(cmd->big_cmd->env[find_it(cmd->big_cmd->env, "HOME")])); printf("%s\n", p); if (chdir(p) == 0) - if (find_it(cmd->big_cmd->env, "PWD=")) + if (find_it(cmd->big_cmd->env, "PWD")) { - cmd->big_cmd->env[find_it(cmd->big_cmd->env, "OLDPWD=")] = ft_strjoin("OLD", cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD=")]); - cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD=")] = ft_strjoin("PWD=", p); + cmd->big_cmd->env[find_it(cmd->big_cmd->env, "OLDPWD")] = ft_strjoin("OLD", cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD")]); + cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD")] = ft_strjoin("PWD", p); } free(p); } @@ -181,7 +186,7 @@ void open_directory(t_s_cmd *cmd) reboot_pwd(cmd, j); if (chdir(cmd->args[1]) == 0) { - if (find_it(cmd->big_cmd->env, "PWD=")) + if (find_it(cmd->big_cmd->env, "PWD")) change_path(cmd); } else @@ -208,5 +213,6 @@ void ft_pwd(t_s_cmd *cmd) ft_putstr_fd("Minishell: pwd: Not found\n", 2); } else - ft_putstr_fd(p, 1); + ft_putendl_fd(p, 1); + } \ No newline at end of file diff --git a/srcs/built_in/export.c b/srcs/built_in/export.c index 74c6b89..3f9c4c5 100644 --- a/srcs/built_in/export.c +++ b/srcs/built_in/export.c @@ -74,6 +74,7 @@ void ft_export_variable(t_s_cmd *cmd, char *variable) // printf("jojo\n"); dest = check_value(variable); unset = ft_substr(dest, 0, find_len(dest, 0, '=')); + printf("%s\n", unset); while (cmd->big_cmd->env[i] != NULL) { if (ft_strncmp(unset, cmd->big_cmd->env[i], ft_strlen(unset)) == 0) diff --git a/srcs/built_in/unset.c b/srcs/built_in/unset.c index f96fdd7..5066ba8 100644 --- a/srcs/built_in/unset.c +++ b/srcs/built_in/unset.c @@ -52,7 +52,7 @@ void unset_variable(t_s_cmd *cmd, int i) cmd->big_cmd->env[a] = NULL; if (tmp) free_double(tmp); - printf("2-------------\n"); + } @@ -65,7 +65,6 @@ void find_variable(char *variable, t_s_cmd *cmd) i = 0; str = ft_strjoin(variable, "="); j = 0; - // printf("variable == %s\n", variable); while (str[j]) j++; while (cmd->big_cmd->env[i] && !(ft_strncmp(cmd->big_cmd->env[i], str, j) == 0)) @@ -74,7 +73,6 @@ void find_variable(char *variable, t_s_cmd *cmd) return ; unset_variable(cmd, i); free(str); - printf("%s\n", "3----------------"); } void ft_unset(t_s_cmd *cmd)