X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fterminal%2Fterminal-reader.c;h=141474a95bb9f77d18b5178403127cd8c2e5cbe9;hb=d849605f7d1abf4a881faec40572f536859d6c19;hp=b4eae73add6b59e375d4fce089be9cc5c16ce0c4;hpb=b3d9ce1c22334767f0dfd38e647dcd0c75799113;p=pspp diff --git a/src/ui/terminal/terminal-reader.c b/src/ui/terminal/terminal-reader.c index b4eae73add..141474a95b 100644 --- a/src/ui/terminal/terminal-reader.c +++ b/src/ui/terminal/terminal-reader.c @@ -52,7 +52,6 @@ static int rl_end; #include #include -#include "data/file-name.h" #include "data/settings.h" #include "language/command.h" #include "language/lexer/lexer.h" @@ -98,8 +97,8 @@ welcome (void) "it\nunder certain conditions; type \"show copying.\" to see the " "conditions.\nThere is ABSOLUTELY NO WARRANTY for PSPP; type \"show " "warranty.\" for details.\n", stdout); - puts (stat_version); - journal_enable (); + puts (announced_version); + journal_init (); } static struct terminal_reader * @@ -108,18 +107,22 @@ terminal_reader_cast (struct lex_reader *r) return UP_CAST (r, struct terminal_reader, reader); } + /* Older libreadline versions do not provide rl_outstream. However, it is almost always going to be the same as stdout. */ #if ! HAVE_RL_OUTSTREAM # define rl_outstream stdout #endif + +#if HAVE_READLINE /* Similarly, rl_echo_signal_char is fairly recent. We provide our own crude version if it is not present. */ #if ! HAVE_RL_ECHO_SIGNAL_CHAR static void rl_echo_signal_char (int sig) { +#if HAVE_TERMIOS_H struct termios t; if (0 == tcgetattr (0, &t)) { @@ -131,11 +134,13 @@ rl_echo_signal_char (int sig) fprintf (rl_outstream, "%c", c); } else +#endif fprintf (rl_outstream, "^C"); fflush (rl_outstream); } #endif +#endif static size_t @@ -250,15 +255,6 @@ readline_prompt (enum prompt_style style) static int pfd[2]; static bool sigint_received ; -static void -handler (int sig) -{ - rl_end = 0; - - write (pfd[1], "x", 1); - rl_echo_signal_char (sig); -} - /* A function similar to getc from stdio. @@ -314,6 +310,16 @@ interruptible_getc (FILE *fp) #if HAVE_READLINE +static void +handler (int sig) +{ + rl_end = 0; + + write (pfd[1], "x", 1); + rl_echo_signal_char (sig); +} + + static void readline_init (void) {