(spawn): Return subprocess return code as an argument.
Explicitly copy environment block.
(main): Update to use return value argument with spawn.
Retry if spawn failed when a subshell was not tried.
(spawn): Explicitly pass in environment when creating subprocess.
(main): Cleaup error messages.
Specify dynamically sized environment block for real shell.
Pass on unhandled switches to real shell.
Quote program name.
(get_next_token): Null terminate token returned.