int main( void ) { char buf[BUFF_SIZE]; extern char **environ; t_sh1 sh1; int call; // void *sign_f; // sign_f = ft_kill_them_all; ft_init(&sh1, environ); write(1, "> ", 2); // signal(SIGINT, sign_f); while (42) { buf[read(0, buf, (BUFF_SIZE + 1))] = '\0'; call = ft_parser(&sh1, buf); if (call == 1) { // printf("\n"); // debug_array(sh1.params); // printf("\n"); // printf("%s\n", sh1.command); // printf("\n"); // sleep(50); ft_execve(&sh1); } else write(1, "> ", 2); } return (0); }
int lexer(char *line, char **env) { char *op; if ((op = is_operator(line))) return (exec_op(op, line, env)); ft_execve(env, line); return (0); }
static void exec_absolu(char *line, t_list *list) { char **str; str = ft_strsplit(line, ' '); if (check_cmd(str[0])) ft_execve(str[0], str, list); else ft_erreur(line, ERR_NO_SUCH_FILE, 0); free_char_array(str); }
int ft_read_path(t_pipe *tree, t_data *env, int flag) { int temp; temp = 0; if (!tree) return (-1); if (tree) { if (tree->code < COM) temp = ft_pipecode_path(&tree, env, flag); else if (tree->code == COM) temp = ft_execve(tree->name, tree->argv, env); } return (temp); }
static int exec_test(t_env *env, char **pth) { int ret; if (access(*pth, 0)) return (-1); if ((ret = is_directory(*pth)) > 0) { if (ret == 2) return (RESET_PUT("permission denied: ", E_ARG[0])); if (ret == 1) return (RESET_PUT("argument is a directory: ", E_ARG[0])); } if (!access(*pth, R_OK) && !access(*pth, X_OK)) return (ft_execve(env, pth)); else return (RESET_PUT("permission denied: ", E_ARG[0])); }
void ft_execcmd(char *tcmd, char ***env) { pid_t father; char **cmd; int stat_loc; cmd = ft_strsplit(tcmd, ' '); if (!ft_builtin(env, cmd)) { father = fork(); if (!father) { ft_signal_off(); ft_execve(cmd, env); } else { waitpid(father, &stat_loc, WUNTRACED); ft_signal_on(); ft_single_ret(stat_loc, 1); } } ft_strdel2d(&cmd); }