diff options
| author | Eli Zaretskii | 1997-01-16 13:12:51 +0000 |
|---|---|---|
| committer | Eli Zaretskii | 1997-01-16 13:12:51 +0000 |
| commit | 31e4e97b5b01a2f37c1d3a4f6241d954dac34de4 (patch) | |
| tree | ad8b1cefbbf5a967f79743fcc25c03d7f44c9bd7 /src | |
| parent | 417a04bb0406f9fb5f2bba9f294bf380de64fa41 (diff) | |
| download | emacs-31e4e97b5b01a2f37c1d3a4f6241d954dac34de4.tar.gz emacs-31e4e97b5b01a2f37c1d3a4f6241d954dac34de4.zip | |
* (interrupt_signal): Make emergency exit work on MSDOS
frames. Block further SIGINTs while `interrupt_signal' runs.
Diffstat (limited to 'src')
| -rw-r--r-- | src/keyboard.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/keyboard.c b/src/keyboard.c index ebe32821a28..c0f46fbad13 100644 --- a/src/keyboard.c +++ b/src/keyboard.c | |||
| @@ -7462,11 +7462,17 @@ interrupt_signal (signalnum) /* If we don't have an argument, */ | |||
| 7462 | 7462 | ||
| 7463 | cancel_echoing (); | 7463 | cancel_echoing (); |
| 7464 | 7464 | ||
| 7465 | if (!NILP (Vquit_flag) && FRAME_TERMCAP_P (selected_frame)) | 7465 | if (!NILP (Vquit_flag) |
| 7466 | && (FRAME_TERMCAP_P (selected_frame) || FRAME_MSDOS_P (selected_frame))) | ||
| 7466 | { | 7467 | { |
| 7468 | /* If SIGINT isn't blocked, don't let us be interrupted by | ||
| 7469 | another SIGINT, it might be harmful due to non-reentrancy | ||
| 7470 | in I/O functions. */ | ||
| 7471 | sigblock (sigmask (SIGINT)); | ||
| 7472 | |||
| 7467 | fflush (stdout); | 7473 | fflush (stdout); |
| 7468 | reset_sys_modes (); | 7474 | reset_sys_modes (); |
| 7469 | sigfree (); | 7475 | |
| 7470 | #ifdef SIGTSTP /* Support possible in later USG versions */ | 7476 | #ifdef SIGTSTP /* Support possible in later USG versions */ |
| 7471 | /* | 7477 | /* |
| 7472 | * On systems which can suspend the current process and return to the original | 7478 | * On systems which can suspend the current process and return to the original |
| @@ -7545,6 +7551,7 @@ interrupt_signal (signalnum) /* If we don't have an argument, */ | |||
| 7545 | #endif /* not MSDOS */ | 7551 | #endif /* not MSDOS */ |
| 7546 | fflush (stdout); | 7552 | fflush (stdout); |
| 7547 | init_sys_modes (); | 7553 | init_sys_modes (); |
| 7554 | sigfree (); | ||
| 7548 | } | 7555 | } |
| 7549 | else | 7556 | else |
| 7550 | { | 7557 | { |