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