Merge branch 'sadjigui'
This commit is contained in:
commit
c9125238a0
@ -48,32 +48,36 @@ void del_one(t_s_cmd *cmd)
|
|||||||
int i;
|
int i;
|
||||||
char *r;
|
char *r;
|
||||||
|
|
||||||
i = ft_strlen(cmd->big_cmd->env[find_pwd(cmd)]);
|
if (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_pwd(cmd)][i])
|
// while (cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD=")][i])
|
||||||
// i++;
|
// i++;
|
||||||
while (cmd->big_cmd->env[find_pwd(cmd)][i] != '/')
|
while (cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD=")][i] != '/')
|
||||||
i--;
|
i--;
|
||||||
r = ft_substr(cmd->big_cmd->env[find_pwd(cmd)], 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_pwd(cmd)]);
|
// free(cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD=")]);
|
||||||
if (r)
|
if (r)
|
||||||
cmd->big_cmd->env[find_pwd(cmd)] = ft_strdup(r);
|
cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD=")] = ft_strdup(r);
|
||||||
else
|
else
|
||||||
cmd->big_cmd->env[find_pwd(cmd)] = 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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void add_one(t_s_cmd *cmd, char *str)
|
void add_one(t_s_cmd *cmd, char *str)
|
||||||
{
|
{
|
||||||
char *r;
|
char *r;
|
||||||
|
|
||||||
r = ft_strjoin(cmd->big_cmd->env[find_pwd(cmd)], "/");
|
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_pwd(cmd)]);
|
//free(cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD=")]);
|
||||||
cmd->big_cmd->env[find_pwd(cmd)] = ft_strdup(r);
|
cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD=")] = ft_strdup(r);
|
||||||
free(r);
|
free(r);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -93,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_pwd(cmd)]);
|
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])
|
||||||
{
|
{
|
||||||
@ -141,63 +145,68 @@ void open_directory(t_s_cmd *cmd)
|
|||||||
char **str;
|
char **str;
|
||||||
int j;
|
int j;
|
||||||
|
|
||||||
str = ft_split(cmd->big_cmd->env[find_pwd(cmd)], '/');
|
if (find_it(cmd->big_cmd->env, "PWD="))
|
||||||
// printf("jojo\n");
|
|
||||||
// printf("%s\n", cmd->big_cmd->env[find_it(cmd->big_cmd->env, "HOME=")]);
|
|
||||||
if (find_it(cmd->big_cmd->env, "HOME=") == 0)
|
|
||||||
{
|
{
|
||||||
//printf("%d\n", tab_len(cmd->args[1]));
|
str = ft_split(cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD=")], '/');
|
||||||
printf("bash: cd: HOME not set\n");
|
j = double_size(str);
|
||||||
|
free_double(str);
|
||||||
|
}
|
||||||
|
if (cmd->args[2])
|
||||||
|
{
|
||||||
|
printf("Minishell: cd: too many arguments\n");
|
||||||
|
cmd->big_cmd->err_var = 1;
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
j = tab_len(str);
|
|
||||||
if (!cmd->args[1])
|
if (!cmd->args[1])
|
||||||
{
|
{
|
||||||
// reboot_pwd(cmd, j);
|
if (find_it(cmd->big_cmd->env, "HOME=") == 0)
|
||||||
// if (tab_len(str) > 3)
|
{
|
||||||
// {
|
printf("Minishell: cd: HOME not set\n");
|
||||||
// while (j-- > 3)
|
cmd->big_cmd->err_var = 1;
|
||||||
// if (chdir("..") == 0)
|
return ;
|
||||||
// del_one(cmd);
|
}
|
||||||
// }
|
|
||||||
// else
|
|
||||||
// {
|
|
||||||
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="))
|
||||||
cmd->big_cmd->env[find_it(cmd->big_cmd->env, "OLDPWD=")] = ft_strjoin("OLD", cmd->big_cmd->env[find_pwd(cmd)]);
|
{
|
||||||
cmd->big_cmd->env[find_pwd(cmd)] = 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);
|
free(p);
|
||||||
// printf("%s\n", p);
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
if (tab_len(cmd->args) == 2)
|
if (tab_len(cmd->args) == 2)
|
||||||
{
|
{
|
||||||
if (cmd->args[1][0] == '~')
|
if (cmd->args[1][0] == '~')
|
||||||
reboot_pwd(cmd, j);
|
reboot_pwd(cmd, j);
|
||||||
if (chdir(cmd->args[1]) == 0)
|
if (chdir(cmd->args[1]) == 0)
|
||||||
change_path(cmd);
|
{
|
||||||
|
if (find_it(cmd->big_cmd->env, "PWD="))
|
||||||
|
change_path(cmd);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ft_putstr_fd("Minishell: cd: ", 2);
|
||||||
|
ft_putstr_fd(cmd->args[1], 2);
|
||||||
|
ft_putstr_fd(": No such directory\n", 2);
|
||||||
|
cmd->big_cmd->err_var = 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (str)
|
|
||||||
free_double(str);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ft_pwd(t_s_cmd *cmd)
|
void ft_pwd(t_s_cmd *cmd)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
int j;
|
char p[1024];
|
||||||
|
char *str;
|
||||||
|
|
||||||
j = 0;
|
i = 1;
|
||||||
i = 0;
|
str = getcwd(p, sizeof(p));
|
||||||
while (cmd->big_cmd->env[find_pwd(cmd)][j] != '=')
|
if (!str)
|
||||||
j++;
|
|
||||||
j += 1;
|
|
||||||
while (cmd->big_cmd->env[find_pwd(cmd)][j])
|
|
||||||
{
|
{
|
||||||
write (1, &cmd->big_cmd->env[find_pwd(cmd)][j], 1);
|
cmd->big_cmd->err_var = 1;
|
||||||
j++;
|
ft_putstr_fd("Minishell: pwd: Not found\n", 2);
|
||||||
}
|
}
|
||||||
write(1, "\n", 1);
|
else
|
||||||
|
ft_putstr_fd(p, 1);
|
||||||
}
|
}
|
||||||
@ -12,32 +12,32 @@
|
|||||||
|
|
||||||
#include "../../includes/minishell.h"
|
#include "../../includes/minishell.h"
|
||||||
|
|
||||||
int jump_space(char *str, int i)
|
// int jump_space(char *str, int i)
|
||||||
{
|
// {
|
||||||
int j;
|
// int j;
|
||||||
|
|
||||||
j = i;
|
// j = i;
|
||||||
while (str[j] == ' ')
|
// while (str[j] == ' ')
|
||||||
j++;
|
// j++;
|
||||||
return (j);
|
// return (j);
|
||||||
}
|
// }
|
||||||
|
|
||||||
void print_value(char *str, char *input)
|
// void print_value(char *str, char *input)
|
||||||
{
|
// {
|
||||||
(void)input;
|
// (void)input;
|
||||||
int i;
|
// int i;
|
||||||
|
|
||||||
i = 0;
|
// i = 0;
|
||||||
while (str[i] && str[i] != '=')
|
// while (str[i] && str[i] != '=')
|
||||||
i++;
|
// i++;
|
||||||
i++;
|
// i++;
|
||||||
ft_putstr_fd(str + i, 0);
|
// ft_putstr_fd(str + i, 0);
|
||||||
/*while (str[i])
|
// /*while (str[i])
|
||||||
{
|
// {
|
||||||
ft_putchar(str[i]);
|
// ft_putchar(str[i]);
|
||||||
i++;
|
// i++;
|
||||||
}*/
|
// }*/
|
||||||
}
|
// }
|
||||||
|
|
||||||
// void print_rest(char *input, char *str, int j)
|
// void print_rest(char *input, char *str, int j)
|
||||||
// {
|
// {
|
||||||
@ -70,90 +70,98 @@ void print_value(char *str, char *input)
|
|||||||
// return ;
|
// return ;
|
||||||
// }
|
// }
|
||||||
|
|
||||||
void find_for_print(t_s_cmd *cmd, char *input)
|
// void find_for_print(t_s_cmd *cmd, char *input)
|
||||||
{
|
// {
|
||||||
char *str;
|
// char *str;
|
||||||
// char *tmp;
|
// // char *tmp;
|
||||||
int i;
|
// int i;
|
||||||
int x;
|
// int x;
|
||||||
|
|
||||||
i = 0;
|
// i = 0;
|
||||||
// j = j + 1;
|
// // j = j + 1;
|
||||||
// tmp = ft_substr(input, j, find_len(input, j, 32));
|
// // tmp = ft_substr(input, j, find_len(input, j, 32));
|
||||||
// printf("%c\n", input[j]);
|
// // printf("%c\n", input[j]);
|
||||||
str = ft_strjoin(input, "=");
|
// str = ft_strjoin(input, "=");
|
||||||
x = ft_strlen(str);
|
// x = ft_strlen(str);
|
||||||
// printf("%d\n", x);
|
// // printf("%d\n", x);
|
||||||
while (cmd->big_cmd->env[i])
|
// while (cmd->big_cmd->env[i])
|
||||||
{
|
// {
|
||||||
if (ft_strncmp(cmd->big_cmd->env[i], str, x) == 0)
|
// if (ft_strncmp(cmd->big_cmd->env[i], str, x) == 0)
|
||||||
{
|
// {
|
||||||
// printf("%s\n", cmd->big_cmd->env[i]);
|
// // printf("%s\n", cmd->big_cmd->env[i]);
|
||||||
break ;
|
// break ;
|
||||||
}
|
// }
|
||||||
|
|
||||||
i++;
|
// i++;
|
||||||
}
|
// }
|
||||||
if (cmd->big_cmd->env[i] != NULL)
|
// if (cmd->big_cmd->env[i] != NULL)
|
||||||
{
|
// {
|
||||||
print_value(cmd->big_cmd->env[i], input);
|
// print_value(cmd->big_cmd->env[i], input);
|
||||||
// print_rest(input, tmp, j);
|
// // print_rest(input, tmp, j);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
int dollar_or_not(char *str)
|
// int dollar_or_not(char *str)
|
||||||
{
|
// {
|
||||||
int i;
|
// int i;
|
||||||
|
|
||||||
i = 0;
|
// i = 0;
|
||||||
while (str[i])
|
// while (str[i])
|
||||||
{
|
// {
|
||||||
if (str[i] == '$')
|
// if (str[i] == '$')
|
||||||
return (1);
|
// return (1);
|
||||||
i++;
|
// i++;
|
||||||
}
|
// }
|
||||||
return (0);
|
// return (0);
|
||||||
}
|
// }
|
||||||
|
|
||||||
void find_value(t_s_cmd *cmd, char *str)
|
// void find_value(t_s_cmd *cmd, char *str)
|
||||||
{
|
// {
|
||||||
// int i;
|
// // int i;
|
||||||
//
|
// //
|
||||||
// i = 0;
|
// // i = 0;
|
||||||
while (*str)
|
// while (*str)
|
||||||
{
|
// {
|
||||||
if (*str == '$')
|
// if (*str == '$')
|
||||||
break ;
|
// break ;
|
||||||
printf("%c", *str);
|
// printf("%c", *str);
|
||||||
str++;
|
// str++;
|
||||||
}
|
// }
|
||||||
str++;
|
// str++;
|
||||||
find_for_print(cmd, str);
|
// find_for_print(cmd, str);
|
||||||
}
|
// }
|
||||||
|
|
||||||
void ft_echo(t_s_cmd *d)
|
void ft_echo(t_s_cmd *d)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
int j;
|
size_t j;
|
||||||
int is_option;
|
int is_option;
|
||||||
|
|
||||||
j = 0;
|
|
||||||
i = 1;
|
i = 1;
|
||||||
is_option = 0;
|
is_option = 0;
|
||||||
if (d->args[i] && ft_strcmp(d->args[i], "-n") == 0)
|
while (d->args[i] && d->args[i][0] == '-')
|
||||||
{
|
{
|
||||||
is_option = 1;
|
j = 1;
|
||||||
|
while (d->args[i][j] && d->args[i][j] == 'n')
|
||||||
|
j++;
|
||||||
|
// printf("---->%zu\n", j);
|
||||||
|
// printf("--->%zu\n", ft_strlen(d->args[i]));
|
||||||
|
|
||||||
|
if (j == ft_strlen(d->args[i]))
|
||||||
|
is_option = 1;
|
||||||
|
else
|
||||||
|
break ;
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
if (d->args[i])
|
if (d->args[i])
|
||||||
while (d->args[i])
|
while (d->args[i])
|
||||||
{
|
{
|
||||||
if (dollar_or_not(d->args[i]) == 1)
|
// if (dollar_or_not(d->args[i]) == 1)
|
||||||
find_value(d, d->args[i]);
|
// find_value(d, d->args[i]);
|
||||||
else
|
// else
|
||||||
printf("%s", d->args[i]);
|
printf("%s", d->args[i]);
|
||||||
if (d->args[i + 1] != NULL)
|
if (d->args[i + 1] != NULL)
|
||||||
printf("\n");
|
printf(" ");
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
// else
|
// else
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user