int term_ini(t_env *env) { char *n_term; if ((n_term = env_get_value("TERM", env)) == NULL) return (term_error(0)); if (tgetent(NULL, n_term) == -1) return (term_error(1)); if (tcgetattr(0, env->term) == -1) return (term_error(2)); env->canon_save = env->term->c_lflag; return (0); }
void init_term(t_all *all, char **dupenv) { char *term_name; term_name = NULL; if ((term_name = get_env_var(dupenv, "TERM=")) == NULL) term_error("GETENV"); if (tgetent(NULL, term_name) == -1) term_error("TGETENT"); if (tcgetattr(0, &all->term) == -1) ; all->term.c_lflag &= ~(ECHO | ICANON); all->term.c_cc[VMIN] = 1; all->term.c_cc[VTIME] = 0; if (tcsetattr(0, TCSADRAIN, &all->term) == -1) ; }
void Test_message() { int i; Token *token = test.intprt.token; Token_get(token); for (i=0; Token_type(token) == STRING_token; i++){ if (i >= MAX_REPEAT){ term_error("テストのメッセージが多すぎます。"); } test.message_buf[i] = Test_alloc(strlen(Token_now(token))+1); strcpy(test.message_buf[i], Token_now(token)); Token_get(token); } }
/** * 試験テキスト内の!TEXT後を処理する */ void Test_text() { int i; Token *token = test.intprt.token; Token_get(token); for (i=0; Token_type(token) == STRING_token; i++){ if (i < MAX_TEXT){ test.text_buf[i] = Test_alloc(strlen(Token_now(token))+1); strcpy(test.text_buf[i], Token_now(token)); } else { term_error("練習テキストが多すぎます。"); } Token_get(token); } test.text_no = i; }
int term_set_attr(t_term *term) { if (tcsetattr(0, TCSADRAIN, term) == -1) return (term_error(3)); return (0); }