version 1.1.1.1, 2014/07/30 08:16:46
|
version 1.1.1.2, 2021/03/17 01:01:01
|
Line 2
|
Line 2
|
#include <stdlib.h> |
#include <stdlib.h> |
#include <unistd.h> |
#include <unistd.h> |
#include <string.h> |
#include <string.h> |
|
#include <locale.h> |
|
|
/* Used for select(2) */ |
/* Used for select(2) */ |
#include <sys/types.h> |
#include <sys/types.h> |
#include <sys/select.h> |
#include <sys/select.h> |
|
|
|
#include <signal.h> |
|
|
|
#include <errno.h> |
#include <stdio.h> |
#include <stdio.h> |
|
|
/* Standard readline include files. */ |
/* Standard readline include files. */ |
Line 18
|
Line 22
|
# include <readline/history.h> |
# include <readline/history.h> |
#endif |
#endif |
|
|
|
extern int errno; |
|
|
static void cb_linehandler (char *); |
static void cb_linehandler (char *); |
|
static void signandler (int); |
|
|
int running; | int running, sigwinch_received; |
const char *prompt = "rltest$ "; |
const char *prompt = "rltest$ "; |
|
|
|
/* Handle SIGWINCH and window size changes when readline is not active and |
|
reading a character. */ |
|
static void |
|
sighandler (int sig) |
|
{ |
|
sigwinch_received = 1; |
|
} |
|
|
/* Callback function called for each line when accept-line executed, EOF |
/* Callback function called for each line when accept-line executed, EOF |
seen, or EOF character read. This sets a flag and returns; it could |
seen, or EOF character read. This sets a flag and returns; it could |
also call exit(3). */ |
also call exit(3). */ |
Line 57 main (int c, char **v)
|
Line 72 main (int c, char **v)
|
fd_set fds; |
fd_set fds; |
int r; |
int r; |
|
|
|
|
|
setlocale (LC_ALL, ""); |
|
|
|
/* Handle SIGWINCH */ |
|
signal (SIGWINCH, sighandler); |
|
|
/* Install the line handler. */ |
/* Install the line handler. */ |
rl_callback_handler_install (prompt, cb_linehandler); |
rl_callback_handler_install (prompt, cb_linehandler); |
|
|
Line 71 main (int c, char **v)
|
Line 92 main (int c, char **v)
|
FD_SET (fileno (rl_instream), &fds); |
FD_SET (fileno (rl_instream), &fds); |
|
|
r = select (FD_SETSIZE, &fds, NULL, NULL, NULL); |
r = select (FD_SETSIZE, &fds, NULL, NULL, NULL); |
if (r < 0) | if (r < 0 && errno != EINTR) |
{ |
{ |
perror ("rltest: select"); |
perror ("rltest: select"); |
rl_callback_handler_remove (); |
rl_callback_handler_remove (); |
break; |
break; |
} |
} |
|
if (sigwinch_received) |
|
{ |
|
rl_resize_terminal (); |
|
sigwinch_received = 0; |
|
} |
|
if (r < 0) |
|
continue; |
|
|
if (FD_ISSET (fileno (rl_instream), &fds)) |
if (FD_ISSET (fileno (rl_instream), &fds)) |
rl_callback_read_char (); |
rl_callback_read_char (); |