* 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");
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;
void mac_closeterm(WindowPtr window)
{
+ int alertret;
Session *s = mac_windowsession(window);
- /* XXX 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);
+ if (alertret == 2) {
+ /* Cancel */
+ return;
+ }
+ }
+
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);
* 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);
{
}
+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.
*/
* Ask whether to wipe a session log file before writing to it.
* Returns 2 for wipe, 1 for append, 0 for cancel (don't log).
*/
-int askappend(void *frontend, Filename filename)
+int askappend(void *frontend, Filename filename,
+ void (*callback)(void *ctx, int result), void *ctx)
{
/* FIXME: not implemented yet. */
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: