X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/045f707bf479ce03fc35f76ae397b1f5d93d9fda..461b078e13ea3bbbbb4304598137a8ef04a14f29:/settings.c diff --git a/settings.c b/settings.c index 71ae49e4..736d6775 100644 --- a/settings.c +++ b/settings.c @@ -349,7 +349,23 @@ void load_settings(char *section, int do_host, Config * cfg) break; } - gppi(sesskey, "CloseOnExit", COE_NORMAL, &cfg->close_on_exit); + /* + * CloseOnExit defaults to closing only on a clean exit - but + * unfortunately not on Unix (pterm). On Unix, the exit code of + * a shell is the last exit code of one of its child processes, + * even if it's an interactive shell - so some pterms will + * close and some will not for no particularly good reason. The + * mode is still useful for specialist purposes (running a + * single command in its own pterm), but I don't think it's a + * sane default, unfortunately. + */ + gppi(sesskey, "CloseOnExit", +#ifdef _WINDOWS + COE_NORMAL, +#else + COE_ALWAYS, +#endif + &cfg->close_on_exit); gppi(sesskey, "WarnOnClose", 1, &cfg->warn_on_close); { /* This is two values for backward compatibility with 0.50/0.51 */