X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/88b3172a9144857696ed9425a0e66e5a11bdd927..ce3262cf6ddf5908eced52424c07682795f9523b:/mac/macterm.c?ds=sidebyside diff --git a/mac/macterm.c b/mac/macterm.c index 22360e14..4a75a0c6 100644 --- a/mac/macterm.c +++ b/mac/macterm.c @@ -115,12 +115,7 @@ void mac_startsession(Session *s) * Select protocol. This is farmed out into a table in a * separate file to enable an ssh-free variant. */ - s->back = NULL; - for (i = 0; backends[i].backend != NULL; i++) - if (backends[i].protocol == s->cfg.protocol) { - s->back = backends[i].backend; - break; - } + s->back = backend_from_proto(s->cfg.protocol); if (s->back == NULL) fatalbox("Unsupported protocol number found"); @@ -595,7 +590,7 @@ static void text_click(Session *s, EventRecord *event) lastwhen = TickCount(); } -void write_clip(void *cookie, wchar_t *data, int len, int must_deselect) +void write_clip(void *cookie, wchar_t *data, int *attr, int len, int must_deselect) { #if !TARGET_API_MAC_CARBON Session *s = cookie; @@ -1015,7 +1010,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 +1023,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); @@ -1486,7 +1483,7 @@ void sys_cursor(void *frontend, int x, int y) * may want to perform additional actions on any kind of bell (for * example, taskbar flashing in Windows). */ -void beep(void *frontend, int mode) +void do_beep(void *frontend, int mode) { if (mode != BELL_VISUAL) SysBeep(30); @@ -1843,6 +1840,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 +1893,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: