diff --git a/srcs/built_in/cd.c b/srcs/built_in/cd.c index f2e9e7a..267f2c4 100644 --- a/srcs/built_in/cd.c +++ b/srcs/built_in/cd.c @@ -48,32 +48,36 @@ void del_one(t_s_cmd *cmd) int i; 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]); - // while (cmd->big_cmd->env[find_pwd(cmd)][i]) + // while (cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD=")][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--; - 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); - // free(cmd->big_cmd->env[find_pwd(cmd)]); + // free(cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD=")]); 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 - 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) free(r); + } } void add_one(t_s_cmd *cmd, char *str) { 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); - //free(cmd->big_cmd->env[find_pwd(cmd)]); - cmd->big_cmd->env[find_pwd(cmd)] = 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); } @@ -93,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_pwd(cmd)]); + cmd->big_cmd->env[i] = ft_strjoin("OLD", cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD=")]); i = 0; while (tab[i]) { @@ -141,63 +145,68 @@ void open_directory(t_s_cmd *cmd) char **str; int j; - str = ft_split(cmd->big_cmd->env[find_pwd(cmd)], '/'); - // 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) + if (find_it(cmd->big_cmd->env, "PWD=")) { - //printf("%d\n", tab_len(cmd->args[1])); - printf("bash: cd: HOME not set\n"); + 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]) + { + printf("Minishell: cd: too many arguments\n"); + cmd->big_cmd->err_var = 1; return ; } - j = tab_len(str); if (!cmd->args[1]) { - // reboot_pwd(cmd, j); - // if (tab_len(str) > 3) - // { - // while (j-- > 3) - // if (chdir("..") == 0) - // del_one(cmd); - // } - // else - // { + if (find_it(cmd->big_cmd->env, "HOME=") == 0) + { + 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=")])); printf("%s\n", p); if (chdir(p) == 0) - { - 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); - } + 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); + } free(p); - // printf("%s\n", p); - // } } if (tab_len(cmd->args) == 2) { if (cmd->args[1][0] == '~') reboot_pwd(cmd, j); 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) { int i; - int j; + char p[1024]; + char *str; - j = 0; - i = 0; - while (cmd->big_cmd->env[find_pwd(cmd)][j] != '=') - j++; - j += 1; - while (cmd->big_cmd->env[find_pwd(cmd)][j]) + i = 1; + str = getcwd(p, sizeof(p)); + if (!str) { - write (1, &cmd->big_cmd->env[find_pwd(cmd)][j], 1); - j++; + cmd->big_cmd->err_var = 1; + ft_putstr_fd("Minishell: pwd: Not found\n", 2); } - write(1, "\n", 1); + else + ft_putstr_fd(p, 1); } \ No newline at end of file diff --git a/srcs/built_in/echo.c b/srcs/built_in/echo.c index f4bbbab..92f794d 100644 --- a/srcs/built_in/echo.c +++ b/srcs/built_in/echo.c @@ -12,32 +12,32 @@ #include "../../includes/minishell.h" -int jump_space(char *str, int i) -{ - int j; +// int jump_space(char *str, int i) +// { +// int j; - j = i; - while (str[j] == ' ') - j++; - return (j); -} +// j = i; +// while (str[j] == ' ') +// j++; +// return (j); +// } -void print_value(char *str, char *input) -{ - (void)input; - int i; +// void print_value(char *str, char *input) +// { +// (void)input; +// int i; - i = 0; - while (str[i] && str[i] != '=') - i++; - i++; - ft_putstr_fd(str + i, 0); - /*while (str[i]) - { - ft_putchar(str[i]); - i++; - }*/ -} +// i = 0; +// while (str[i] && str[i] != '=') +// i++; +// i++; +// ft_putstr_fd(str + i, 0); +// /*while (str[i]) +// { +// ft_putchar(str[i]); +// i++; +// }*/ +// } // void print_rest(char *input, char *str, int j) // { @@ -70,90 +70,98 @@ void print_value(char *str, char *input) // return ; // } -void find_for_print(t_s_cmd *cmd, char *input) -{ - char *str; - // char *tmp; - int i; - int x; +// void find_for_print(t_s_cmd *cmd, char *input) +// { +// char *str; +// // char *tmp; +// int i; +// int x; - i = 0; - // j = j + 1; - // tmp = ft_substr(input, j, find_len(input, j, 32)); - // printf("%c\n", input[j]); - str = ft_strjoin(input, "="); - x = ft_strlen(str); - // printf("%d\n", x); - while (cmd->big_cmd->env[i]) - { - if (ft_strncmp(cmd->big_cmd->env[i], str, x) == 0) - { - // printf("%s\n", cmd->big_cmd->env[i]); - break ; - } +// i = 0; +// // j = j + 1; +// // tmp = ft_substr(input, j, find_len(input, j, 32)); +// // printf("%c\n", input[j]); +// str = ft_strjoin(input, "="); +// x = ft_strlen(str); +// // printf("%d\n", x); +// while (cmd->big_cmd->env[i]) +// { +// if (ft_strncmp(cmd->big_cmd->env[i], str, x) == 0) +// { +// // printf("%s\n", cmd->big_cmd->env[i]); +// break ; +// } - i++; - } - if (cmd->big_cmd->env[i] != NULL) - { - print_value(cmd->big_cmd->env[i], input); - // print_rest(input, tmp, j); - } -} +// i++; +// } +// if (cmd->big_cmd->env[i] != NULL) +// { +// print_value(cmd->big_cmd->env[i], input); +// // print_rest(input, tmp, j); +// } +// } -int dollar_or_not(char *str) -{ - int i; +// int dollar_or_not(char *str) +// { +// int i; - i = 0; - while (str[i]) - { - if (str[i] == '$') - return (1); - i++; - } - return (0); -} +// i = 0; +// while (str[i]) +// { +// if (str[i] == '$') +// return (1); +// i++; +// } +// return (0); +// } -void find_value(t_s_cmd *cmd, char *str) -{ - // int i; - // - // i = 0; - while (*str) - { - if (*str == '$') - break ; - printf("%c", *str); - str++; - } - str++; - find_for_print(cmd, str); -} +// void find_value(t_s_cmd *cmd, char *str) +// { +// // int i; +// // +// // i = 0; +// while (*str) +// { +// if (*str == '$') +// break ; +// printf("%c", *str); +// str++; +// } +// str++; +// find_for_print(cmd, str); +// } void ft_echo(t_s_cmd *d) { int i; - int j; + size_t j; int is_option; - j = 0; i = 1; 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++; } if (d->args[i]) while (d->args[i]) { - if (dollar_or_not(d->args[i]) == 1) - find_value(d, d->args[i]); - else - printf("%s", d->args[i]); + // if (dollar_or_not(d->args[i]) == 1) + // find_value(d, d->args[i]); + // else + printf("%s", d->args[i]); if (d->args[i + 1] != NULL) - printf("\n"); + printf(" "); i++; } // else