#define _XOPEN_SOURCE 700 /* for wcswidth and 700 is for mbsnrtowcs */ #include<wchar.h> #include<ncurses.h> /* ncurses.h includes stdio.h */ #include<stdlib.h> #include<string.h> #include<readline/readline.h> #include<locale.h> int mygetstr( char *str, int y, int x){ WINDOW *win; int size, col; int ok = 0; int width; wchar_t wstr[80]; char *p; getmaxyx(stdscr, size, col); void getaline( char *s){ str = s; rl_callback_handler_remove(); ok = 1; } rl_callback_handler_install( "" , getaline); win = newwin(1, col-x, y, x); while (1){ rl_callback_read_char(); if (ok) break ; werase(win); strncpy (str, rl_line_buffer, 80); p = str; /* how many column chars before cursor occupies? */ size = mbsnrtowcs(wstr, ( const char **)&p, rl_point, 80, NULL); width = wcswidth(wstr, size); mvwprintw(win, 0, 0, &qu