Merge branch 'sadjigui'

This commit is contained in:
kinou-p 2022-04-17 02:21:41 +02:00
commit c7da1acd4e
3 changed files with 55 additions and 46 deletions

View File

@ -38,63 +38,73 @@ void ft_ls(char *input)
void del_one(t_s_cmd *cmd) void del_one(t_s_cmd *cmd)
{ {
int i; int i;
int j;
char *r; char *r;
if (find_it(cmd->big_cmd->env, "PWD")) if (find_it(cmd->big_cmd->env, "PWD") != -1)
{ {
j = 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[j]);
while (cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD")][i] != '/') while (cmd->big_cmd->env[j][i] && cmd->big_cmd->env[j][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[j], 0, i);
if (r) free (cmd->big_cmd->env[j]);
cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD")] = ft_strdup(r); if (r)
else cmd->big_cmd->env[j] = ft_strdup(r);
cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD")] = ft_strdup("PWD=/"); else
cmd->big_cmd->env[j] = ft_strdup("PWD=/");
if (r) if (r)
free(r); free(r);
} }
} }
void add_one(t_s_cmd *cmd, char *str) void add_one(t_s_cmd *cmd)
{ {
char *r; // char *r;
char *s; // char *s;
s = ft_strjoin(cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD")], "/"); // s = ft_strjoin(cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD")], "/");
r = ft_strjoin(s, str); // r = ft_strjoin(s, 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);
free(s); // free(s);
char p[1024];
char *str;
int i;
i = find_it(cmd->big_cmd->env, "PWD");
str = getcwd(p, sizeof(p));
cmd->big_cmd->env[i] = ft_strjoin("PWD=", p);
} }
void change_path(t_s_cmd *cmd) void change_path(t_s_cmd *cmd)
{ {
char **tab; // char **tab;
int i; int old;
int pwd;
tab = ft_split(cmd->args[1], '/'); // tab = ft_split(cmd->args[1], '/');
i = find_it(cmd->big_cmd->env, "OLDPWD"); if (find_it(cmd->big_cmd->env, "OLDPWD") != -1)
// while (cmd->big_cmd->env[i])
// {
// if (ft_strncmp(cmd->big_cmd->env[i], "OLDPWD=", 7) == 0)
// break ;
// i++;
// }
cmd->big_cmd->env[i] = ft_strjoin("OLD", cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD")]);
i = 0;
while (tab[i])
{ {
if (ft_strcmp(tab[i], "..") == 0) pwd = find_it(cmd->big_cmd->env, "PWD");
del_one(cmd); old = find_it(cmd->big_cmd->env, "OLDPWD");
else cmd->big_cmd->env[old] = ft_strjoin("OLD", cmd->big_cmd->env[pwd]);
add_one(cmd, tab[i]); // old = 0;
i++; // while (tab[old])
// {
// if (ft_strcmp(tab[old], "..") == 0)
// del_one(cmd);
// else
// old++;
// }
} }
if (tab) add_one(cmd);
free_double(tab);
// if (tab)
// free_double(tab);
} }
void reboot_pwd(t_s_cmd *cmd, int i) void reboot_pwd(t_s_cmd *cmd, int i)
@ -128,7 +138,8 @@ void check_home(t_s_cmd *cmd, char *p)
if (chdir(p) == 0) if (chdir(p) == 0)
if (find_it(cmd->big_cmd->env, "PWD") != -1) if (find_it(cmd->big_cmd->env, "PWD") != -1)
{ {
cmd->big_cmd->env[old_pwd] = ft_strjoin("OLD", cmd->big_cmd->env[pwd]); if (find_it(cmd->big_cmd->env, "OLDPWD") != -1)
cmd->big_cmd->env[old_pwd] = ft_strjoin("OLD", cmd->big_cmd->env[pwd]);
cmd->big_cmd->env[pwd] = ft_strjoin("PWD=", p); cmd->big_cmd->env[pwd] = ft_strjoin("PWD=", p);
} }
free(p); free(p);

View File

@ -19,9 +19,7 @@ int print_env(t_cmd *cmd)
i = 0; i = 0;
if (cmd->current_s_cmd->nb_args > 1) if (cmd->current_s_cmd->nb_args > 1)
{ {
ft_putstr_fd("Minishell: env: '", 2); ft_putstr_fd("Minishell: env: too many arguments\n", 2);
ft_putstr_fd(cmd->current_s_cmd->args[1], 2);
ft_putstr_fd("': No such file or directory\n", 2);
return (check_return(cmd->current_s_cmd, 127)); return (check_return(cmd->current_s_cmd, 127));
} }
else if (cmd->env) else if (cmd->env)
@ -38,11 +36,9 @@ int print_env(t_cmd *cmd)
int ft_pwd(t_s_cmd *cmd) int ft_pwd(t_s_cmd *cmd)
{ {
int i;
char p[1024]; char p[1024];
char *str; char *str;
i = 1;
str = getcwd(p, sizeof(p)); str = getcwd(p, sizeof(p));
if (!str) if (!str)
{ {

View File

@ -49,7 +49,9 @@ void print_export(char *tmp)
i = 0; i = 0;
str1 = ft_substr(tmp, 0, find_len(tmp, i, '=')); str1 = ft_substr(tmp, 0, find_len(tmp, i, '='));
i = find_len(tmp, 0, '=') + 1; i = find_len(tmp, 0, '=') + 1;
str2 = ft_substr(tmp, i, find_len(tmp, i, '\0')); str2 = ft_substr(tmp, i, ft_strlen(tmp));
// str2 = ft_substr(tmp, i, find_len(tmp, i, '\0'));
printf("declare -x %s", str1); printf("declare -x %s", str1);
if (next_space(str2, 0) != '\0') if (next_space(str2, 0) != '\0')
printf("=\"%s\"", str2); printf("=\"%s\"", str2);