Revamp SSH authentication code so that user interaction is more
[u/mdw/putty] / mac / macterm.c
index 22360e1..68d8276 100644 (file)
@@ -1015,7 +1015,7 @@ void mac_closeterm(WindowPtr window)
     int alertret;
     Session *s = mac_windowsession(window);
 
-    if (s->cfg.warn_on_close) {
+    if (s->cfg.warn_on_close && !s->session_closed) {
        ParamText("\pAre you sure you want to close this session?",
                  NULL, NULL, NULL);
        alertret=CautionAlert(wQuestion, NULL);
@@ -1028,8 +1028,10 @@ void mac_closeterm(WindowPtr window)
     HideWindow(s->window);
     *s->prev = s->next;
     s->next->prev = s->prev;
-    ldisc_free(s->ldisc);
-    s->back->free(s->backhandle);
+    if (s->ldisc)
+       ldisc_free(s->ldisc);
+    if (s->back)
+       s->back->free(s->backhandle);
     log_free(s->logctx);
     if (s->uni_to_font != NULL)
        DisposeUnicodeToTextInfo(&s->uni_to_font);
@@ -1843,6 +1845,12 @@ void ldisc_update(void *frontend, int echo, int edit)
 {
 }
 
+char *get_ttymode(void *frontend, const char *mode)
+{
+    Session *s = frontend;
+    return term_get_ttymode(s->term, mode);
+}
+
 /*
  * Mac PuTTY doesn't support printing yet.
  */
@@ -1890,6 +1898,12 @@ int from_backend(void *frontend, int is_stderr, const char *data, int len)
     return term_data(s->term, is_stderr, data, len);
 }
 
+int get_userpass_input(prompts_t *p, unsigned char *in, int inlen)
+{
+    Session *s = p->frontend;
+    return term_get_userpass_input(s->term, p, in, inlen);
+}
+
 /*
  * Emacs magic:
  * Local Variables: