mirror of
https://github.com/fish-shell/fish-shell.git
synced 2025-02-21 03:53:53 +08:00
fish_key_reader: stop looping on SIGHUP
Using the machinery in reader.cpp rather than going back to intalling our own handlerss (see 89644911a1883eea03ecc11ffbcef2df2a9c70fe) Fixes #9309
This commit is contained in:
parent
0305c842e6
commit
b7593a377a
@ -227,7 +227,7 @@ static void process_input(bool continuous_mode, bool verbose) {
|
||||
std::vector<wchar_t> bind_chars;
|
||||
|
||||
std::fwprintf(stderr, L"Press a key:\n");
|
||||
for (;;) {
|
||||
while (!check_exit_loop_maybe_warning(nullptr)) {
|
||||
maybe_t<char_event_t> evt{};
|
||||
if (reader_test_and_clear_interrupted()) {
|
||||
evt = char_event_t{shell_modes.c_cc[VINTR]};
|
||||
|
@ -2909,12 +2909,12 @@ static bool try_warn_on_background_jobs(reader_data_t *data) {
|
||||
|
||||
/// Check if we should exit the reader loop.
|
||||
/// \return true if we should exit.
|
||||
static bool check_exit_loop_maybe_warning(reader_data_t *data) {
|
||||
bool check_exit_loop_maybe_warning(reader_data_t *data) {
|
||||
// sighup always forces exit.
|
||||
if (s_sighup_received) return true;
|
||||
|
||||
// Check if an exit is requested.
|
||||
if (data->exit_loop_requested) {
|
||||
if (data && data->exit_loop_requested) {
|
||||
if (try_warn_on_background_jobs(data)) {
|
||||
data->exit_loop_requested = false;
|
||||
return false;
|
||||
|
@ -240,6 +240,9 @@ struct reader_config_t {
|
||||
int in{0};
|
||||
};
|
||||
|
||||
class reader_data_t;
|
||||
bool check_exit_loop_maybe_warning(reader_data_t *data);
|
||||
|
||||
/// Push a new reader environment controlled by \p conf, using the given history name.
|
||||
/// If \p history_name is empty, then save history in-memory only; do not write it to disk.
|
||||
void reader_push(parser_t &parser, const wcstring &history_name, reader_config_t &&conf);
|
||||
|
Loading…
x
Reference in New Issue
Block a user