projects
/
u
/
mdw
/
putty
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
It's a new year (and there have even been checkins).
[u/mdw/putty]
/
mac
/
macterm.c
diff --git
a/mac/macterm.c
b/mac/macterm.c
index
6374a1f
..
4a75a0c
100644
(file)
--- 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.
*/
* 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");
if (s->back == NULL)
fatalbox("Unsupported protocol number found");
@@
-595,7
+590,7
@@
static void text_click(Session *s, EventRecord *event)
lastwhen = TickCount();
}
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;
{
#if !TARGET_API_MAC_CARBON
Session *s = cookie;
@@
-1012,14
+1007,26
@@
static pascal void mac_growtermdraghook(void)
void mac_closeterm(WindowPtr window)
{
void mac_closeterm(WindowPtr window)
{
+ int alertret;
Session *s = mac_windowsession(window);
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;
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);
log_free(s->logctx);
if (s->uni_to_font != NULL)
DisposeUnicodeToTextInfo(&s->uni_to_font);
@@
-1476,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).
*/
* 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);
{
if (mode != BELL_VISUAL)
SysBeep(30);
@@
-1833,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.
*/
/*
* Mac PuTTY doesn't support printing yet.
*/
@@
-1865,7
+1878,8
@@
void frontend_keypress(void *handle)
* 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).
*/
* 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. */
{
/* FIXME: not implemented yet. */
@@
-1879,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);
}
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:
/*
* Emacs magic:
* Local Variables: