PR gdb/544

* rltty.c (block_sigint, release_sigint): Rename to...
	(_rl_block_sigint, _rl_release_sigint): ...these and make them global.
	* rltty.h (_rl_block_sigint, _rl_release_sigint): New prototypes.
	* display.c (rl_redisplay): Wrap the function by the calls to
	_RL_BLOCK_SIGINT and _RL_RELEASE_SIGINT.
This commit is contained in:
Jan Kratochvil 2008-03-24 12:59:51 +00:00
parent 086a18414a
commit 87adec2ec1
4 changed files with 32 additions and 14 deletions

View File

@ -1,3 +1,12 @@
2008-03-24 Jan Kratochvil <jan.kratochvil@redhat.com>
PR gdb/544
* rltty.c (block_sigint, release_sigint): Rename to...
(_rl_block_sigint, _rl_release_sigint): ...these and make them global.
* rltty.h (_rl_block_sigint, _rl_release_sigint): New prototypes.
* display.c (rl_redisplay): Wrap the function by the calls to
_RL_BLOCK_SIGINT and _RL_RELEASE_SIGINT.
2007-09-01 Daniel Jacobowitz <dan@codesourcery.com> 2007-09-01 Daniel Jacobowitz <dan@codesourcery.com>
PR gdb/2138 PR gdb/2138

View File

@ -463,6 +463,10 @@ rl_redisplay ()
if (!readline_echoing_p) if (!readline_echoing_p)
return; return;
/* Signals are blocked through this function as the global data structures
could get corrupted upon modifications from an invoked signal handler. */
_rl_block_sigint ();
if (!rl_display_prompt) if (!rl_display_prompt)
rl_display_prompt = ""; rl_display_prompt = "";
@ -1139,6 +1143,8 @@ rl_redisplay ()
else else
visible_wrap_offset = wrap_offset; visible_wrap_offset = wrap_offset;
} }
_rl_release_sigint ();
} }
/* PWP: update_line() is based on finding the middle difference of each /* PWP: update_line() is based on finding the middle difference of each

View File

@ -52,8 +52,8 @@ extern int errno;
rl_vintfunc_t *rl_prep_term_function = rl_prep_terminal; rl_vintfunc_t *rl_prep_term_function = rl_prep_terminal;
rl_voidfunc_t *rl_deprep_term_function = rl_deprep_terminal; rl_voidfunc_t *rl_deprep_term_function = rl_deprep_terminal;
static void block_sigint PARAMS((void)); void _rl_block_sigint PARAMS((void));
static void release_sigint PARAMS((void)); void _rl_release_sigint PARAMS((void));
static void set_winsize PARAMS((int)); static void set_winsize PARAMS((int));
@ -74,9 +74,9 @@ static int sigint_oldmask;
static int sigint_blocked; static int sigint_blocked;
/* Cause SIGINT to not be delivered until the corresponding call to /* Cause SIGINT to not be delivered until the corresponding call to
release_sigint(). */ _rl_release_sigint(). */
static void void
block_sigint () _rl_block_sigint ()
{ {
if (sigint_blocked) if (sigint_blocked)
return; return;
@ -100,8 +100,8 @@ block_sigint ()
} }
/* Allow SIGINT to be delivered. */ /* Allow SIGINT to be delivered. */
static void void
release_sigint () _rl_release_sigint ()
{ {
if (sigint_blocked == 0) if (sigint_blocked == 0)
return; return;
@ -663,7 +663,7 @@ rl_prep_terminal (meta_flag)
return; return;
/* Try to keep this function from being INTerrupted. */ /* Try to keep this function from being INTerrupted. */
block_sigint (); _rl_block_sigint ();
tty = fileno (rl_instream); tty = fileno (rl_instream);
@ -676,7 +676,7 @@ rl_prep_terminal (meta_flag)
if (errno == ENOTTY) if (errno == ENOTTY)
#endif #endif
readline_echoing_p = 1; /* XXX */ readline_echoing_p = 1; /* XXX */
release_sigint (); _rl_release_sigint ();
return; return;
} }
@ -711,7 +711,7 @@ rl_prep_terminal (meta_flag)
if (set_tty_settings (tty, &tio) < 0) if (set_tty_settings (tty, &tio) < 0)
{ {
release_sigint (); _rl_release_sigint ();
return; return;
} }
@ -722,7 +722,7 @@ rl_prep_terminal (meta_flag)
terminal_prepped = 1; terminal_prepped = 1;
RL_SETSTATE(RL_STATE_TERMPREPPED); RL_SETSTATE(RL_STATE_TERMPREPPED);
release_sigint (); _rl_release_sigint ();
} }
/* Restore the terminal's normal settings and modes. */ /* Restore the terminal's normal settings and modes. */
@ -735,7 +735,7 @@ rl_deprep_terminal ()
return; return;
/* Try to keep this function from being interrupted. */ /* Try to keep this function from being interrupted. */
block_sigint (); _rl_block_sigint ();
tty = fileno (rl_instream); tty = fileno (rl_instream);
@ -746,14 +746,14 @@ rl_deprep_terminal ()
if (set_tty_settings (tty, &otio) < 0) if (set_tty_settings (tty, &otio) < 0)
{ {
release_sigint (); _rl_release_sigint ();
return; return;
} }
terminal_prepped = 0; terminal_prepped = 0;
RL_UNSETSTATE(RL_STATE_TERMPREPPED); RL_UNSETSTATE(RL_STATE_TERMPREPPED);
release_sigint (); _rl_release_sigint ();
} }
#endif /* !NO_TTY_DRIVER */ #endif /* !NO_TTY_DRIVER */

View File

@ -79,4 +79,7 @@ typedef struct _rl_tty_chars {
unsigned char t_status; unsigned char t_status;
} _RL_TTY_CHARS; } _RL_TTY_CHARS;
extern void _rl_block_sigint PARAMS((void));
extern void _rl_release_sigint PARAMS((void));
#endif /* _RLTTY_H_ */ #endif /* _RLTTY_H_ */