1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-07-09 23:33:46 -05:00

Close on exit. I'm not entirely happy with the distribution of this

across mac_closeterm() and notify_remote_exit() but it will do for now.
Also, "PuTTY (inactive)" looks strange as a Mac window title in a way it
doesn't on Unix or Windows.  Perhaps we should find another way of
indicating that a window contains a dead session?

[originally from svn r5424]
This commit is contained in:
Owen Dunn
2005-03-01 21:38:06 +00:00
parent 41793f56d4
commit d403e31233
4 changed files with 50 additions and 6 deletions

View File

@ -659,9 +659,10 @@ void cleanup_exit(int status)
}
/* This should only kill the current session, not the whole application. */
void connection_fatal(void *fontend, char *fmt, ...) {
void connection_fatal(void *frontend, char *fmt, ...) {
va_list ap;
Str255 stuff;
Session *s = frontend;
va_start(ap, fmt);
/* We'd like stuff to be a Pascal string */
@ -669,7 +670,11 @@ void connection_fatal(void *fontend, char *fmt, ...) {
va_end(ap);
ParamText(stuff, NULL, NULL, NULL);
StopAlert(128, NULL);
cleanup_exit(1);
s->session_closed = TRUE;
if (s->cfg.close_on_exit == FORCE_ON)
mac_closewindow(s->window);
}
/* Null SSH agent client -- never finds an agent. */
@ -832,7 +837,41 @@ void update_specials_menu(void *frontend)
mac_adjustmenus();
}
void notify_remote_exit(void *fe) { /* XXX anything needed here? */ }
void notify_remote_exit(void *frontend)
{
Session *s = frontend;
int exitcode;
if (!s->session_closed &&
(exitcode = s->back->exitcode(s->backhandle)) >=0) {
s->session_closed = TRUE;
if (s->cfg.close_on_exit == FORCE_ON ||
(s->cfg.close_on_exit == AUTO && exitcode == 0)) {
mac_closewindow(s->window);
return;
}
/* The session's dead */
if (s->ldisc) {
ldisc_free(s->ldisc);
s->ldisc = NULL;
}
if (s->back) {
s->back->free(s->backhandle);
s->backhandle = NULL;
s->back = NULL;
update_specials_menu(s);
}
{
char title[100];
sprintf(title, "%.70s (inactive)", appname);
set_title(s, title);
}
}
}
/*
* Local Variables: