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;
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])
{
@ -133,10 +133,14 @@ int find_it(char **str, char *s)
int i;
i = 0;
while (str[i] && ft_strncmp(str[i], s, ft_strlen(s)))
//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 (0);
return (-1);
return (i);
}
@ -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);
}

View File

@ -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)

View File

@ -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)