This commit is contained in:
PrStein 2022-04-11 17:41:38 +02:00
parent a7e04285e0
commit 4d803fd575
3 changed files with 38 additions and 33 deletions

View File

@ -48,22 +48,22 @@ void del_one(t_s_cmd *cmd)
int i; int i;
char *r; 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]); // 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++; // 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--; 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); // 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) 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 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) if (r)
free(r); free(r);
@ -74,10 +74,10 @@ void add_one(t_s_cmd *cmd, char *str)
{ {
char *r; 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); r = ft_strjoin(r, str);
//free(cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD=")]); //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); cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD")] = ft_strdup(r);
free(r); free(r);
} }
@ -97,7 +97,7 @@ void change_path(t_s_cmd *cmd)
// printf("%d\n", i); // printf("%d\n", i);
/*if (cmd->big_cmd->env[i]) /*if (cmd->big_cmd->env[i])
free(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; i = 0;
while (tab[i]) while (tab[i])
{ {
@ -128,16 +128,20 @@ void reboot_pwd(t_s_cmd *cmd, int i)
free(str); free(str);
} }
int find_it(char **str, char *s) int find_it(char **str, char *s)
{ {
int i; int i;
i = 0; i = 0;
while (str[i] && ft_strncmp(str[i], s, ft_strlen(s))) //printf("%c\n");
i++; 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))))
if (str[i] == NULL) {
return (0); // printf("str= %s et env[i]= %s et char= '%c'\n", s, str[i], str[i][ft_strlen(s)]);
return (i); i++;
}
if (str[i] == NULL)
return (-1);
return (i);
} }
void open_directory(t_s_cmd *cmd) void open_directory(t_s_cmd *cmd)
@ -145,13 +149,13 @@ void open_directory(t_s_cmd *cmd)
char **str; char **str;
int j; 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); j = double_size(str);
free_double(str); free_double(str);
} }
if (cmd->args[2]) if (cmd->nb_args > 2)
{ {
printf("Minishell: cd: too many arguments\n"); printf("Minishell: cd: too many arguments\n");
cmd->big_cmd->err_var = 1; cmd->big_cmd->err_var = 1;
@ -159,19 +163,20 @@ void open_directory(t_s_cmd *cmd)
} }
if (!cmd->args[1]) 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"); printf("Minishell: cd: HOME not set\n");
cmd->big_cmd->err_var = 1; cmd->big_cmd->err_var = 1;
return ; 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); printf("%s\n", p);
if (chdir(p) == 0) 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, "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, "PWD")] = ft_strjoin("PWD", p);
} }
free(p); free(p);
} }
@ -181,7 +186,7 @@ void open_directory(t_s_cmd *cmd)
reboot_pwd(cmd, j); reboot_pwd(cmd, j);
if (chdir(cmd->args[1]) == 0) 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); change_path(cmd);
} }
else else
@ -208,5 +213,6 @@ void ft_pwd(t_s_cmd *cmd)
ft_putstr_fd("Minishell: pwd: Not found\n", 2); ft_putstr_fd("Minishell: pwd: Not found\n", 2);
} }
else else
ft_putstr_fd(p, 1); ft_putendl_fd(p, 1);
} }

View File

@ -74,6 +74,7 @@ void ft_export_variable(t_s_cmd *cmd, char *variable)
// printf("jojo\n"); // printf("jojo\n");
dest = check_value(variable); dest = check_value(variable);
unset = ft_substr(dest, 0, find_len(dest, 0, '=')); unset = ft_substr(dest, 0, find_len(dest, 0, '='));
printf("%s\n", unset);
while (cmd->big_cmd->env[i] != NULL) while (cmd->big_cmd->env[i] != NULL)
{ {
if (ft_strncmp(unset, cmd->big_cmd->env[i], ft_strlen(unset)) == 0) if (ft_strncmp(unset, cmd->big_cmd->env[i], ft_strlen(unset)) == 0)

View File

@ -52,7 +52,7 @@ void unset_variable(t_s_cmd *cmd, int i)
cmd->big_cmd->env[a] = NULL; cmd->big_cmd->env[a] = NULL;
if (tmp) if (tmp)
free_double(tmp); free_double(tmp);
printf("2-------------\n");
} }
@ -65,7 +65,6 @@ void find_variable(char *variable, t_s_cmd *cmd)
i = 0; i = 0;
str = ft_strjoin(variable, "="); str = ft_strjoin(variable, "=");
j = 0; j = 0;
// printf("variable == %s\n", variable);
while (str[j]) while (str[j])
j++; j++;
while (cmd->big_cmd->env[i] && !(ft_strncmp(cmd->big_cmd->env[i], str, j) == 0)) 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 ; return ;
unset_variable(cmd, i); unset_variable(cmd, i);
free(str); free(str);
printf("%s\n", "3----------------");
} }
void ft_unset(t_s_cmd *cmd) void ft_unset(t_s_cmd *cmd)