Replace the process-exit event with generic "fish_exit" event

Turns out the process-exit is only ever used in conjunction with
`%self`. Make that explicit by just adding a new "fish_exit" event,
and deprecate the general process-exit machinery.

Fixes #4700.
This commit is contained in:
Fabian Homborg 2018-02-03 16:38:15 +01:00
parent 9444c65ee8
commit b67a614d86
2 changed files with 7 additions and 0 deletions

View file

@ -437,7 +437,10 @@ int main(int argc, char **argv) {
int exit_status = res ? STATUS_CMD_UNKNOWN : proc_get_last_status(); int exit_status = res ? STATUS_CMD_UNKNOWN : proc_get_last_status();
// TODO: The generic process-exit event is useless and unused.
// Remove this in future.
proc_fire_event(L"PROCESS_EXIT", EVENT_EXIT, getpid(), exit_status); proc_fire_event(L"PROCESS_EXIT", EVENT_EXIT, getpid(), exit_status);
event_fire_generic(L"fish_exit");
restore_term_mode(); restore_term_mode();
restore_term_foreground_process_group(); restore_term_foreground_process_group();

View file

@ -537,6 +537,8 @@ static int process_clean_after_marking(bool allow_interactive) {
s = p->status; s = p->status;
// TODO: The generic process-exit event is useless and unused.
// Remove this in future.
proc_fire_event(L"PROCESS_EXIT", EVENT_EXIT, p->pid, proc_fire_event(L"PROCESS_EXIT", EVENT_EXIT, p->pid,
(WIFSIGNALED(s) ? -1 : WEXITSTATUS(s))); (WIFSIGNALED(s) ? -1 : WEXITSTATUS(s)));
@ -601,6 +603,8 @@ static int process_clean_after_marking(bool allow_interactive) {
format_job_info(j, JOB_ENDED); format_job_info(j, JOB_ENDED);
found = 1; found = 1;
} }
// TODO: The generic process-exit event is useless and unused.
// Remove this in future.
// Don't fire the exit-event for jobs with pgid -2. // Don't fire the exit-event for jobs with pgid -2.
// That's our "sentinel" pgid, for jobs that don't (yet) have a pgid, // That's our "sentinel" pgid, for jobs that don't (yet) have a pgid,
// or jobs that consist entirely of builtins (and hence don't have a process). // or jobs that consist entirely of builtins (and hence don't have a process).