cd
This commit is contained in:
parent
a7e04285e0
commit
4d803fd575
@ -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);
|
||||
|
||||
}
|
||||
@ -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)
|
||||
|
||||
@ -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)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user