R_API RCons *r_cons_new () { I.refcnt++; if (I.refcnt != 1) return &I; I.line = r_line_new (); I.highlight = NULL; I.event_interrupt = NULL; I.is_wine = -1; I.fps = 0; I.blankline = R_TRUE; I.teefile = NULL; I.fix_columns = 0; I.fix_rows = 0; I.mouse_event = 0; I.force_rows = 0; I.force_columns = 0; I.event_resize = NULL; I.data = NULL; I.event_data = NULL; I.is_interactive = R_TRUE; I.noflush = R_FALSE; I.fdin = stdin; I.fdout = 1; I.breaked = R_FALSE; //I.lines = 0; I.buffer = NULL; I.buffer_sz = 0; I.buffer_len = 0; r_cons_get_size (NULL); I.num = NULL; I.null = 0; #if EMSCRIPTEN /* do nothing here :? */ #elif __UNIX__ || __CYGWIN__ tcgetattr (0, &I.term_buf); memcpy (&I.term_raw, &I.term_buf, sizeof (I.term_raw)); I.term_raw.c_iflag &= ~(BRKINT|PARMRK|ISTRIP|INLCR|IGNCR|ICRNL|IXON); I.term_raw.c_lflag &= ~(ECHO|ECHONL|ICANON|ISIG|IEXTEN); I.term_raw.c_cflag &= ~(CSIZE|PARENB); I.term_raw.c_cflag |= CS8; I.term_raw.c_cc[VMIN] = 1; // Solaris stuff hehe signal (SIGWINCH, resize); #elif __WINDOWS__ h = GetStdHandle (STD_INPUT_HANDLE); GetConsoleMode (h, (PDWORD) &I.term_buf); I.term_raw = 0; if (!SetConsoleCtrlHandler ((PHANDLER_ROUTINE)__w32_control, TRUE)) eprintf ("r_cons: Cannot set control console handler\n"); #endif I.pager = NULL; /* no pager by default */ I.truecolor = 0; I.mouse = 0; I.newline = R_TRUE; r_cons_pal_null (); r_cons_pal_init (NULL); r_cons_rgb_init (); r_cons_reset (); return &I; }
int main() { const char *str; RLine *line = r_line_new (); r_cons_new (); line->completion.run = (RLineCallback) complete; #if 0 if (!r_line_init ()) { printf ("Cannot initizalize r_line\n"); return 0; } #endif for (;;) { str = r_line_readline (0, NULL); if (str == NULL) // catch eof break; printf ("%s\n", str); r_line_hist_add (str); } r_line_free (); return 0; }