void termkey_destroy(TermKey *tk) { if(tk->is_started) termkey_stop(tk); termkey_free(tk); }
int main(int argc, char *argv[]) { TermKey *tk; plan_tests(6); tk = termkey_new_abstract("vt100", 0); ok(!!tk, "termkey_new_abstract"); is_int(termkey_get_buffer_size(tk), 256, "termkey_get_buffer_size"); ok(termkey_is_started(tk), "termkey_is_started true after construction"); termkey_stop(tk); ok(!termkey_is_started(tk), "termkey_is_started false after termkey_stop()"); termkey_start(tk); ok(termkey_is_started(tk), "termkey_is_started true after termkey_start()"); termkey_destroy(tk); ok(1, "termkey_free"); return exit_status(); }
static UiWin *ui_window_new(Ui *ui, View *view, File *file, enum UiOption options) { UiCurses *uic = (UiCurses*)ui; UiCursesWin *win = calloc(1, sizeof(UiCursesWin)); if (!win) return NULL; win->uiwin = (UiWin) { .draw = ui_window_draw, .draw_status = ui_window_draw_status, .options_set = ui_window_options_set, .options_get = ui_window_options_get, .reload = ui_window_reload, .syntax_style = ui_window_syntax_style, }; if (!(win->win = newwin(0, 0, 0, 0))) { ui_window_free((UiWin*)win); return NULL; } for (int i = 0; i < UI_STYLE_MAX; i++) { win->styles[i] = (CellStyle) { .fg = -1, .bg = -1, .attr = A_NORMAL, }; } win->styles[UI_STYLE_CURSOR].attr |= A_REVERSE; win->styles[UI_STYLE_CURSOR_PRIMARY].attr |= A_REVERSE|A_BLINK; win->styles[UI_STYLE_SELECTION].attr |= A_REVERSE; win->styles[UI_STYLE_COLOR_COLUMN].attr |= A_REVERSE; win->ui = uic; win->view = view; win->file = file; view_ui(view, &win->uiwin); if (uic->windows) uic->windows->prev = win; win->next = uic->windows; uic->windows = win; ui_window_options_set((UiWin*)win, options); return &win->uiwin; } __attribute__((noreturn)) static void ui_die(Ui *ui, const char *msg, va_list ap) { UiCurses *uic = (UiCurses*)ui; endwin(); if (uic->termkey) termkey_stop(uic->termkey); vfprintf(stderr, msg, ap); exit(EXIT_FAILURE); }
static void ui_terminal_save(Ui *ui) { UiCurses *uic = (UiCurses*)ui; curs_set(1); reset_shell_mode(); termkey_stop(uic->termkey); }