static int st_get_choice(t_ctx *ctx) { char buf[BUF_LEN + 1]; ft_raw_term(); ft_place_cursor(ctx); while (1) { ft_bzero(buf, BUF_LEN + 1); if (-1 == read(STDIN_FILENO, buf, BUF_LEN)) return (ERR); if (0 == ft_strcmp(buf, K_ENTER) && !ctx->grid[0][ctx->arrow]) { ft_reset_term(); ctx->player_last = ctx->arrow; return (ft_play(ctx, ctx->player_last)); } if (0 == ft_strcmp(buf, K_QUIT)) { tputs(tgetstr("cl", NULL), 1, ft_putput); ft_reset_term(); return (ERR); } ft_treat_key(buf); } ft_reset_term(); return (OK); }
void ft_exit(int n) { if (CTX->jobs) ft_putendl_fd("Error: There are jobs open.", 2); else { ft_reset_term(); exit(n); } }
void ft_ctrl_d(t_term *term) { if (!term->cmdactual) term->inheredoc = 0; else { ft_putendl_fd(term->cmdactual, term->heredocfd); ft_reset_term(term); ft_putstr_fd("\nheredoc-> ", 2); } }
static char *ft_wait_finish(char *str, t_mlist *mlist) { char *buf; char *complete; ft_putstr("> "); ft_set_term(); buf = ft_read_keys(ft_log_to_dlist(), 1, mlist); ft_reset_term(); ft_bzero(g_cmd, BUFF_SIZE); g_idx = 0; complete = ft_strjoin(str, buf); free(str); free(buf); return (complete); }
int main(int ac, char **av, char **env) { t_ctx *ctx; ctx = CTX; (void)ac; (void)av; ctx = CTX; ft_term_init(); setup_signal(); ft_copy_tab(&ctx->env, env); ft_load_history(ctx, 0, NULL, NULL); ft_aff_prompt(); ft_loop(); ft_reset_term(); return (0); }