*/
[self center]; /* :-) */
+ exited = FALSE;
+
return self;
}
* Do so.
*/
sfree(alert_ctx);
+ if (back)
+ back->free(backhandle);
+ if (ldisc)
+ ldisc_free(ldisc);
+ /* ldisc must be freed before term, since ldisc_free expects term
+ * still to be around. */
+ if (logctx)
+ log_free(logctx);
+ if (term)
+ term_free(term);
[super dealloc];
}
char coutput[32];
int use_coutput = FALSE, special = FALSE, start, end;
-printf("n=%d c=U+%04x cm=U+%04x m=%08x\n", n, c, cm, m);
+//printf("n=%d c=U+%04x cm=U+%04x m=%08x\n", n, c, cm, m);
/*
* FIXME: Alt+numberpad codes.
}
}
+- (void)notifyRemoteExit
+{
+ int exitcode;
+
+ if (!exited && (exitcode = back->exitcode(backhandle)) >= 0)
+ [self endSession:(exitcode == 0)];
+}
+
+- (void)endSession:(int)clean
+{
+ exited = TRUE;
+ if (ldisc) {
+ ldisc_free(ldisc);
+ ldisc = NULL;
+ }
+ if (back) {
+ back->free(backhandle);
+ backhandle = NULL;
+ back = NULL;
+ //FIXME: update specials menu;
+ }
+ if (cfg.close_on_exit == FORCE_ON ||
+ (cfg.close_on_exit == AUTO && clean))
+ [self close];
+ // FIXME: else show restart menu item
+}
+
@end
int from_backend(void *frontend, int is_stderr, const char *data, int len)
/* FIXME */
}
-void connection_fatal(void *frontend, char *p, ...)
-{
- //SessionWindow *win = (SessionWindow *)frontend;
- /* FIXME: proper OS X GUI stuff */
- va_list ap;
- fprintf(stderr, "FATAL ERROR: ");
- va_start(ap, p);
- vfprintf(stderr, p, ap);
- va_end(ap);
- fputc('\n', stderr);
- exit(1);
-}
-
void notify_remote_exit(void *frontend)
{
- //SessionWindow *win = (SessionWindow *)frontend;
- /* FIXME */
+ SessionWindow *win = (SessionWindow *)frontend;
+
+ [win notifyRemoteExit];
}
void ldisc_update(void *frontend, int echo, int edit)
*/
}
+char *get_ttymode(void *frontend, const char *mode)
+{
+ SessionWindow *win = (SessionWindow *)ctx;
+ Terminal *term = [win term];
+ return term_get_ttymode(term, mode);
+}
+
void update_specials_menu(void *frontend)
{
//SessionWindow *win = (SessionWindow *)frontend;