From 2cce3b6453d098d66c02964e006f3247c691e8f3 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Tue, 30 Dec 2003 07:25:18 +0000 Subject: * readline.c (rl_save_state, rl_restore_state): Support systems that don't define SIGWINCH. * terminal.c (_rl_get_screen_size) [__DJGPP__]: Compute the screen width and height using console I/O. (_rl_init_terminal_io) [__MSDOS__]: Zero out all the _rl_term_* variables. Convert to _rl_* naming scheme. (_rl_set_cursor) [__MSDOS__]: Ifdef away this function. * display.c (_rl_move_vert) [__MSDOS__]: Don't use undeclared variable `l'. Use `delta' instead recomputing its value anew. Assign -delta to i instead of the other way around. --- readline/ChangeLog.gdb | 19 +++++++++++++++++++ readline/display.c | 6 +++--- readline/readline.c | 4 ++++ readline/terminal.c | 31 +++++++++++++++++++++++-------- 4 files changed, 49 insertions(+), 11 deletions(-) (limited to 'readline') diff --git a/readline/ChangeLog.gdb b/readline/ChangeLog.gdb index adc733ca0d3..abf32820194 100644 --- a/readline/ChangeLog.gdb +++ b/readline/ChangeLog.gdb @@ -1,3 +1,22 @@ +2003-12-28 Eli Zaretskii + + * readline.c (rl_save_state, rl_restore_state): Support systems + that don't define SIGWINCH. + +2003-12-25 Eli Zaretskii + + * terminal.c (_rl_get_screen_size) [__DJGPP__]: Compute the + screen width and height using console I/O. + (_rl_init_terminal_io) [__MSDOS__]: Zero out all the _rl_term_* + variables. Convert to _rl_* naming scheme. + (_rl_set_cursor) [__MSDOS__]: Ifdef away this function. + +2003-12-23 Eli Zaretskii + + * display.c (_rl_move_vert) [__MSDOS__]: Don't use undeclared + variable `l'. Use `delta' instead recomputing its value anew. + Assign -delta to i instead of the other way around. + 2003-12-11 Michael Chastain * rlmbutil.h: Require HAVE_MBSTATE_T for HANDLE_MULTIBYTE. diff --git a/readline/display.c b/readline/display.c index e151cf2862b..e7b75912c9e 100644 --- a/readline/display.c +++ b/readline/display.c @@ -1642,10 +1642,10 @@ _rl_move_vert (to) #ifdef __MSDOS__ int row, col; - l = fflush (rl_outstream); /* make sure the cursor pos is current! */ + fflush (rl_outstream); /* make sure the cursor pos is current! */ ScreenGetCursor (&row, &col); - ScreenSetCursor ((row + to - _rl_last_v_pos), col); - delta = i; + ScreenSetCursor (row + delta, col); + i = -delta; /* in case someone wants to use it after the loop */ #else /* !__MSDOS__ */ if (_rl_term_up && *_rl_term_up) for (i = 0; i < -delta; i++) diff --git a/readline/readline.c b/readline/readline.c index 28801f19dfc..efa0bf84c27 100644 --- a/readline/readline.c +++ b/readline/readline.c @@ -933,7 +933,9 @@ rl_save_state (sp) sp->macro = rl_executing_macro; sp->catchsigs = rl_catch_signals; +#if defined (SIGWINCH) sp->catchsigwinch = rl_catch_sigwinch; +#endif return (0); } @@ -967,7 +969,9 @@ rl_restore_state (sp) rl_executing_macro = sp->macro; rl_catch_signals = sp->catchsigs; +#if defined (SIGWINCH) rl_catch_sigwinch = sp->catchsigwinch; +#endif return (0); } diff --git a/readline/terminal.c b/readline/terminal.c index ea3270e9683..06bc8e94d6b 100644 --- a/readline/terminal.c +++ b/readline/terminal.c @@ -220,7 +220,10 @@ _rl_get_screen_size (tty, ignore_env) if (ignore_env == 0 && (ss = sh_get_env_value ("COLUMNS"))) _rl_screenwidth = atoi (ss); -#if !defined (__DJGPP__) +#if defined (__DJGPP__) + if (_rl_screenwidth <= 0) + _rl_screenwidth = ScreenCols (); +#else if (_rl_screenwidth <= 0 && term_string_buffer) _rl_screenwidth = tgetnum ("co"); #endif @@ -233,7 +236,10 @@ _rl_get_screen_size (tty, ignore_env) if (ignore_env == 0 && (ss = sh_get_env_value ("LINES"))) _rl_screenheight = atoi (ss); -#if !defined (__DJGPP__) +#if defined (__DJGPP__) + if (_rl_screenheight <= 0) + _rl_screenheight = ScreenRows (); +#else if (_rl_screenheight <= 0 && term_string_buffer) _rl_screenheight = tgetnum ("li"); #endif @@ -382,12 +388,19 @@ _rl_init_terminal_io (terminal_name) term = "dumb"; #ifdef __MSDOS__ - term_im = term_ei = term_ic = term_IC = (char *)NULL; - term_up = term_dc = term_DC = visible_bell = (char *)NULL; - term_ku = term_kd = term_kl = term_kr = (char *)NULL; - term_mm = term_mo = (char *)NULL; - terminal_can_insert = term_has_meta = _rl_term_autowrap = 0; - term_cr = "\r"; + _rl_term_im = _rl_term_ei = _rl_term_ic = _rl_term_IC = (char *)NULL; + _rl_term_up = _rl_term_dc = _rl_term_DC = _rl_visible_bell = (char *)NULL; + _rl_term_ku = _rl_term_kd = _rl_term_kl = _rl_term_kr = (char *)NULL; + _rl_term_mm = _rl_term_mo = (char *)NULL; + _rl_terminal_can_insert = term_has_meta = _rl_term_autowrap = 0; + _rl_term_cr = "\r"; + _rl_term_clreol = _rl_term_clrpag = _rl_term_backspace = (char *)NULL; + _rl_term_goto = _rl_term_pc = _rl_term_ip = (char *)NULL; + _rl_term_ks = _rl_term_ke =_rl_term_vs = _rl_term_ve = (char *)NULL; + _rl_term_kh = _rl_term_kH = _rl_term_at7 = _rl_term_kI = (char *)NULL; +#if defined(HACK_TERMCAP_MOTION) + _rl_term_forward_char = (char *)NULL; +#endif _rl_get_screen_size (tty, 0); #else /* !__MSDOS__ */ @@ -677,6 +690,7 @@ void _rl_set_cursor (im, force) int im, force; { +#ifndef __MSDOS__ if (_rl_term_ve && _rl_term_vs) { if (force || im != rl_insert_mode) @@ -687,4 +701,5 @@ _rl_set_cursor (im, force) tputs (_rl_term_ve, 1, _rl_output_character_function); } } +#endif } -- cgit v1.2.1