fish-shell/src
Mahmoud Al-Qudsi 4dfaa33d95 Switch to wait_by_process when waitpid without WNOHANG returns nothing
By exclusively waiting by pgrp, we can fail to reap processes that
change their own pgrp then either crash or close their fds. If we wind
up in a situation where `waitpid(2)` returns 0 or ECHLD even though we
did not specify `WNOHANG` but we still have unreaped child processes,
wait on them by pid.

Closes #5596.
2019-02-02 16:06:29 -06:00
..
widecharwidth Migrate to widechar_wcwidth 2018-07-09 20:31:16 -07:00
autoload.cpp Constructors to accept more parameters by value 2018-02-18 19:12:45 -08:00
autoload.h Constructors to accept more parameters by value 2018-02-18 19:12:45 -08:00
builtin.cpp __fish_print_help: Just use $COLUMNS 2018-10-23 15:05:15 +02:00
builtin.h Revert "Convert list of builtins from sorted array to unordered_set" 2018-09-29 00:22:24 -04:00
builtin_argparse.cpp Correct formatting in argparse 2018-08-25 16:18:49 -07:00
builtin_argparse.h implement argparse builtin 2017-07-12 22:38:24 -07:00
builtin_bg.cpp Clean up job flags, status helpers, and instance helper methods 2018-10-27 18:01:38 -05:00
builtin_bg.h split builtin bg into its own module 2017-06-16 21:01:56 -07:00
builtin_bind.cpp Add separation of "preset" bindings 2018-09-30 16:54:56 +02:00
builtin_bind.h Add separation of "preset" bindings 2018-09-30 16:54:56 +02:00
builtin_block.cpp Mark short_options as const everywhere 2018-09-29 00:18:36 -04:00
builtin_block.h split builtin block into its own module 2017-06-16 21:01:56 -07:00
builtin_builtin.cpp Mark short_options as const everywhere 2018-09-29 00:18:36 -04:00
builtin_builtin.h split builtin builtin into its own module 2017-06-16 21:01:56 -07:00
builtin_cd.cpp Always pass in the working directory in path_get_cdpath 2018-11-18 14:36:42 -08:00
builtin_cd.h split builtin cd into its own module 2017-06-16 21:01:56 -07:00
builtin_command.cpp Mark short_options as const everywhere 2018-09-29 00:18:36 -04:00
builtin_command.h split builtin command into its own module 2017-06-16 21:01:56 -07:00
builtin_commandline.cpp Remove global variables from builtin_commandline 2018-10-01 09:34:58 -07:00
builtin_commandline.h restyle builtin modules to match project style 2016-04-26 21:58:59 -07:00
builtin_complete.cpp Mark short_options as const everywhere 2018-09-29 00:18:36 -04:00
builtin_complete.h implement our own assert() function 2017-02-14 18:48:27 -08:00
builtin_contains.cpp Mark short_options as const everywhere 2018-09-29 00:18:36 -04:00
builtin_contains.h split builtin contains into its own module 2017-06-16 21:01:56 -07:00
builtin_disown.cpp Prevent zombie processes after disowned child procs exit 2018-11-18 15:27:58 -06:00
builtin_disown.h split builtin disown into its own module 2017-06-16 21:01:56 -07:00
builtin_echo.cpp Mark a null variable const in builtin_echo 2018-10-01 09:47:45 -07:00
builtin_echo.h split builtin echo into its own module 2017-06-16 21:01:56 -07:00
builtin_emit.cpp change help only cmd opts interface 2017-06-16 21:01:57 -07:00
builtin_emit.h split builtin emit into its own module 2017-06-16 21:01:56 -07:00
builtin_exit.cpp Mark short_options as const everywhere 2018-09-29 00:18:36 -04:00
builtin_exit.h split builtin exit into its own module 2017-06-16 21:01:56 -07:00
builtin_fg.cpp Clean up job flags, status helpers, and instance helper methods 2018-10-27 18:01:38 -05:00
builtin_fg.h split builtin fg into its own module 2017-06-16 21:01:56 -07:00
builtin_function.cpp Mark short_options as const everywhere 2018-09-29 00:18:36 -04:00
builtin_function.h Functions to store nodes 2018-02-12 10:49:22 -08:00
builtin_functions.cpp functions -q: Return false without an argument 2019-02-02 14:12:31 +01:00
builtin_functions.h split builtin functions into its own module 2017-06-16 21:01:56 -07:00
builtin_history.cpp Mark short_options as const everywhere 2018-09-29 00:18:36 -04:00
builtin_history.h split builtin history into its own module 2017-06-16 21:01:56 -07:00
builtin_jobs.cpp Clean up job flags, status helpers, and instance helper methods 2018-10-27 18:01:38 -05:00
builtin_jobs.h implement our own assert() function 2017-02-14 18:48:27 -08:00
builtin_math.cpp Math: Truncate integers (scale == 0) 2018-10-24 18:53:33 +02:00
builtin_math.h Implement bare minimum builtin math command 2017-08-23 14:43:45 -07:00
builtin_printf.cpp Create an immortal C locale 2018-08-03 00:48:50 -07:00
builtin_printf.h implement our own assert() function 2017-02-14 18:48:27 -08:00
builtin_pwd.cpp Don't resolve symlinks with cd 2018-10-06 17:03:18 -07:00
builtin_pwd.h split builtin pwd into its own module 2017-06-16 21:01:56 -07:00
builtin_random.cpp change help only cmd opts interface 2017-06-16 21:01:57 -07:00
builtin_random.h split builtin random into its own module 2017-06-16 21:01:56 -07:00
builtin_read.cpp builtin_read: Remove --all-lines 2018-11-20 16:56:52 +01:00
builtin_read.h split builtin status and read into its own module 2017-06-16 21:01:56 -07:00
builtin_realpath.cpp Realpath styling tweaks. 2018-11-18 12:29:35 -08:00
builtin_realpath.h split builtin realpath into its own module 2017-06-16 21:01:56 -07:00
builtin_return.cpp Mark short_options as const everywhere 2018-09-29 00:18:36 -04:00
builtin_return.h split builtin return into its own module 2017-06-16 21:01:56 -07:00
builtin_set.cpp Merge branch 'splitenv_1.8' 2018-10-20 12:51:51 -07:00
builtin_set.h implement our own assert() function 2017-02-14 18:48:27 -08:00
builtin_set_color.cpp Eliminate some mutable global variables 2018-09-29 00:20:50 -04:00
builtin_set_color.h implement our own assert() function 2017-02-14 18:48:27 -08:00
builtin_source.cpp source: Actually check if stdin is a tty, not just redirected 2018-11-26 23:48:19 +01:00
builtin_source.h split builtin source into its own module 2017-06-16 21:01:56 -07:00
builtin_status.cpp Revert "Show how fish was executed, using argv[0] for program_name" 2018-11-28 06:08:24 -08:00
builtin_status.h split builtin status and read into its own module 2017-06-16 21:01:56 -07:00
builtin_string.cpp print --help to stdout like other builtins (#5495) 2019-01-23 12:00:56 -08:00
builtin_string.h implement our own assert() function 2017-02-14 18:48:27 -08:00
builtin_test.cpp builtin_test: don't exit 1 for eval errors, add tests for big args 2018-12-16 14:51:26 -08:00
builtin_test.h restyle builtin modules to match project style 2016-04-26 21:58:59 -07:00
builtin_ulimit.cpp Mark short_options as const everywhere 2018-09-29 00:18:36 -04:00
builtin_ulimit.h implement our own assert() function 2017-02-14 18:48:27 -08:00
builtin_wait.cpp Clean up job flags, status helpers, and instance helper methods 2018-10-27 18:01:38 -05:00
builtin_wait.h add wait command 2017-11-16 10:48:21 -08:00
color.cpp Remove explicit 'void' parameters. 2018-02-18 19:12:45 -08:00
color.h implement our own assert() function 2017-02-14 18:48:27 -08:00
common.cpp Update bugreport() 2018-12-11 02:50:03 -08:00
common.h Use standard __CYGWIN__ define for Cygwin detection 2019-01-23 17:46:07 -06:00
complete.cpp complete: Stringify 2018-10-23 19:10:14 +02:00
complete.h fixup! Simplify wildcard_complete prototype 2018-10-16 20:38:46 -05:00
enum_set.h Clean up job flags, status helpers, and instance helper methods 2018-10-27 18:01:38 -05:00
env.cpp Correctly inherit a virtual PWD 2019-01-22 14:10:50 -08:00
env.h Also set the read-only flag for non-electric vars 2019-01-21 17:14:01 -08:00
env_universal_common.cpp Revert "Show how fish was executed, using argv[0] for program_name" 2018-11-28 06:08:24 -08:00
env_universal_common.h env_universal_common: Constref env_var_t as well 2018-11-14 12:15:40 +01:00
event.cpp Clean up job flags, status helpers, and instance helper methods 2018-10-27 18:01:38 -05:00
event.h Clean up and document functions --handlers 2018-03-10 02:27:25 -08:00
exec.cpp Replace 0/1 with true/false in calls to job_reap 2018-11-18 17:40:18 -06:00
exec.h Fix zombie job on failed redirection in exec_job 2018-11-18 17:40:18 -06:00
expand.cpp expand: Fix get_home_directory_name 2018-11-08 10:07:45 +01:00
expand.h Teach cd completions about logical paths 2018-11-03 13:30:55 -07:00
fallback.cpp Fix unsafe locale usage in wcstod_l fallback 2019-01-23 14:05:50 +01:00
fallback.h Fix wcstod_l infinite recursion under FreeBSD 2019-01-23 00:12:17 -06:00
fish.cpp Revert "Show how fish was executed, using argv[0] for program_name" 2018-11-28 06:08:24 -08:00
fish_indent.cpp Revert "Show how fish was executed, using argv[0] for program_name" 2018-11-28 06:08:24 -08:00
fish_key_reader.cpp Revert "Show how fish was executed, using argv[0] for program_name" 2018-11-28 06:08:24 -08:00
fish_tests.cpp builtin_test: don't exit 1 for eval errors, add tests for big args 2018-12-16 14:51:26 -08:00
fish_version.cpp Eliminate some mutable global variables 2018-09-29 00:20:50 -04:00
fish_version.h Revert "Generate FISH_BUILD_VERSION info for cmake builds" 2018-01-08 22:28:10 -08:00
function.cpp Refactor function_get_[desc/definition] to pass-by-reference 2018-09-26 21:03:55 -05:00
function.h Refactor function_get_[desc/definition] to pass-by-reference 2018-09-26 21:03:55 -05:00
future_feature_flags.cpp Add a qmark-noglob feature flag 2018-05-06 11:20:15 -07:00
future_feature_flags.h Add a feature_test() function 2018-05-06 11:20:15 -07:00
highlight.cpp Always pass in the working directory in path_get_cdpath 2018-11-18 14:36:42 -08:00
highlight.h implement our own assert() function 2017-02-14 18:48:27 -08:00
history.cpp history: Move profiler message to debug level 5 2018-11-28 13:37:40 +01:00
history.h Add a --private option to launch fish in private mode 2018-10-24 19:33:48 +02:00
input.cpp Quit immediately with R_EOF 2019-01-28 18:20:57 +01:00
input.h Add separation of "preset" bindings 2018-09-30 16:54:56 +02:00
input_common.cpp Replace \e with \x1B, as the former is a gcc extension 2018-06-18 00:01:47 -05:00
input_common.h Add till/repeat/reverse jump bindings 2018-08-18 14:42:29 -07:00
intern.cpp Cleap up owning_lock interface 2018-09-01 13:11:42 -07:00
intern.h restyle intern module to match project style 2016-05-01 20:28:46 -07:00
io.cpp Remove some disabled (commented or ifdef'd out) code 2018-08-10 20:48:02 -07:00
io.h io: Explicitly reset discard flag 2018-10-24 16:59:24 +02:00
iothread.cpp Cleap up owning_lock interface 2018-09-01 13:11:42 -07:00
iothread.h lint cleanups 2017-02-11 21:30:38 -08:00
kill.cpp Make contains() more general 2018-08-11 22:23:20 -07:00
kill.h restyle kill module to match project style 2016-05-01 22:18:59 -07:00
lru.h Added const to methods which 'ought to be const' based on Const Checker 2018-08-09 19:05:47 -07:00
maybe.h Add acquire() to maybe_t 2018-04-01 16:10:59 -07:00
output.cpp Replace \e with \x1B, as the former is a gcc extension 2018-06-18 00:01:47 -05:00
output.h Prevent fish from crashing if non-essential terminfo strings not found 2018-06-17 20:59:34 -05:00
pager.cpp Remove a few useless .c_str() 2018-10-20 20:51:05 +02:00
pager.h implement our own assert() function 2017-02-14 18:48:27 -08:00
parse_constants.h Switch tokenizer_error back to just an error code 2018-09-27 21:40:51 -04:00
parse_execution.cpp Make while loops evaluate to the last executed command status 2019-01-20 16:41:59 -08:00
parse_execution.h Teach each job about its parent 2018-11-04 01:40:07 -08:00
parse_grammar.h Fix warning about extra ';' being ignored 2018-06-18 00:05:31 -05:00
parse_grammar_elements.inc Rework 'and' and 'or' to be "job decorators" 2018-03-05 13:41:36 -08:00
parse_productions.cpp Bring some consistency and rationale to debug log levels 2018-10-27 18:01:38 -05:00
parse_productions.h style cleanups 2017-05-01 22:05:35 -07:00
parse_tree.cpp Switch tokenizer_error back to just an error code 2018-09-27 21:40:51 -04:00
parse_tree.h Teach the tokenizer to report escaped newlines 2018-05-07 21:39:30 -07:00
parse_util.cpp parse_util: Remove some wcharisms 2018-10-23 19:10:14 +02:00
parse_util.h Teach parse_util_escape_string_with_quote about tildes 2018-02-17 15:18:43 -08:00
parser.cpp Don't ASSERT_IS_NOT_FORKED_CHILD so much 2019-01-21 18:21:00 -08:00
parser.h Teach each job about its parent 2018-11-04 01:40:07 -08:00
parser_keywords.cpp parser_keywords: Pre-create "begin" and "else" wcstrings 2018-12-01 23:03:41 +01:00
parser_keywords.h Make IWYU output in lint.cpp less messy 2016-06-23 17:26:08 -07:00
path.cpp Always pass in the working directory in path_get_cdpath 2018-11-18 14:36:42 -08:00
path.h Always pass in the working directory in path_get_cdpath 2018-11-18 14:36:42 -08:00
postfork.cpp Guard against pgid == 0 2018-12-08 16:21:52 +01:00
postfork.h Minor cleanup and const correctness 2018-08-04 16:45:16 -07:00
print_help.cpp lint: "collapsible if statements" warnings 2016-10-22 19:09:40 -07:00
print_help.h restyle proc module to match project style 2016-05-02 22:07:58 -07:00
proc.cpp Switch to wait_by_process when waitpid without WNOHANG returns nothing 2019-02-02 16:06:29 -06:00
proc.h Fix a crash with -d5 and block processes 2018-12-02 14:53:26 -08:00
reader.cpp Make control-S begin navigating the pager contents 2019-01-22 14:43:44 -08:00
reader.h Fix hup_background_jobs (née kill_background_jobs) implementation 2018-10-27 18:01:38 -05:00
sanity.cpp Remove various empty or useless functions 2018-02-10 17:21:55 -08:00
sanity.h improve sanity check code 2017-01-24 15:24:13 -08:00
screen.cpp screen: Avoid crash if clr_eol is undefined 2018-11-28 13:37:40 +01:00
screen.h Don't reset the screen after emitting a BEL 2018-09-16 16:25:49 -07:00
signal.cpp Allow SIGINT in non-interactive mode 2018-10-12 23:58:14 -07:00
signal.h Add RAII wrapper for signal_block/signal_unblock 2018-10-27 18:01:38 -05:00
tinyexpr.c Add 'round' function to builtin math 2018-12-01 13:25:00 -08:00
tinyexpr.h [math] Better error for 2 + 2 4 2018-03-01 13:09:35 +01:00
tnode.cpp Rework 'and' and 'or' to be "job decorators" 2018-03-05 13:41:36 -08:00
tnode.h Fix crash when nodeptr is null and node->get_source() is called 2018-09-26 21:03:55 -05:00
tokenizer.cpp Allow nested square brackets again 2018-11-22 17:57:27 -08:00
tokenizer.h Switch tokenizer_error back to just an error code 2018-09-27 21:40:51 -04:00
utf8.cpp implement our own assert() function 2017-02-14 18:48:27 -08:00
utf8.h implement our own assert() function 2017-02-14 18:48:27 -08:00
util.cpp Fix the build on FreeBSD with Clang 2017-06-17 22:51:25 -07:00
util.h restyle remaining modules to match project style 2016-05-03 16:09:45 -07:00
wcstringutil.cpp fixup! Add overload of wcstringutil::trim that automatically trims whitespace 2018-10-01 17:22:40 -05:00
wcstringutil.h Add overload of wcstringutil::trim that automatically trims whitespace 2018-10-01 17:12:18 -05:00
wgetopt.cpp Remove some compatibility juk from wgetopt 2018-08-18 17:22:55 -07:00
wgetopt.h Clean up bits of wgetopter_t interface 2018-08-25 16:09:04 -07:00
wildcard.cpp Pass the original string into wildcard's decsription function 2018-11-11 14:15:45 -08:00
wildcard.h Simplify wildcard_complete prototype 2018-10-16 15:43:42 -07:00
wutil.cpp Switch to readdir from readdir_r 2019-01-21 12:02:05 +01:00
wutil.h Fix locale_t under macOS 10.10 2019-01-23 14:05:51 +01:00