bool prompt_init() { bool is_running; bool is_success; char* cmd; int parser_ret; t_cmd_list* cmd_current; t_cmd_list* cmd_list; is_running = true; is_success = true; parser_ret = 0; while (is_running) { prompt_show(); cmd = prompt_cmd_read(); if (cmd == NULL) { is_success = false; free(cmd); break; } if (my_strlen(cmd) > 0) { cmd_list = prompt_cmd_split(cmd); if (cmd_list == NULL) { is_success = false; break; } cmd_current = cmd_list; while(cmd_current != NULL) { if (cmd_current->is_piped) { cmd_current = pipeline(cmd_current, -1); } else if ((cmd_current->is_redirect_input) || (cmd_current->is_redirect_output)) { cmd_current = redirections(cmd_current); } else { parser_ret = parser(cmd_current->cmd); } cmd_current = cmd_current->next; } prompt_cmd_split_free(cmd_list); } else { free(cmd); } if (parser_ret == BUILTIN_EXIT) { is_running = false; } } return (is_success); }
int global_prepa(t_cmd *cmd, int i) { while (cmd[i].token != NULL && cmd[i].token[0] != ';') { if (!strncmp(cmd[i].token, ">>", 2) || !strncmp(cmd[i].token, ">", 1) || !strncmp(cmd[i].token, "<<", 2) || !strncmp(cmd[i].token, "<", 1)) redirections(&cmd[i], &cmd[i + 1], cmd, i); i++; } return (0); }