mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-07-01 19:42:48 -05:00
Revamp interface to verify_ssh_host_key() and askalg(). Each of them
now returns an integer: 0 means cancel the SSH connection and 1 means continue with it. Additionally, they can return -1, which means `front end has set an asynchronous alert box in motion, please wait to be called back with the result', and each one is passed a callback function pointer and context for this purpose. I have not yet done the same to askappend() yet, because it will take a certain amount of reorganisation of logging.c. Importantly, this checkin means the host key dialog box now works on OS X. [originally from svn r5330]
This commit is contained in:
@ -207,6 +207,8 @@
|
||||
{
|
||||
NSRect rect = { {0,0}, {0,0} };
|
||||
|
||||
alert_ctx = NULL;
|
||||
|
||||
cfg = aCfg; /* structure copy */
|
||||
|
||||
init_ucs(&ucsdata, cfg.line_codepage, cfg.utf8_override,
|
||||
@ -307,6 +309,7 @@
|
||||
* terminal, the backend, the ldisc, the logctx, you name it.
|
||||
* Do so.
|
||||
*/
|
||||
sfree(alert_ctx);
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
@ -778,6 +781,23 @@ printf("n=%d c=U+%04x cm=U+%04x m=%08x\n", n, c, cm, m);
|
||||
return term_data(term, is_stderr, data, len);
|
||||
}
|
||||
|
||||
- (void)startAlert:(NSAlert *)alert
|
||||
withCallback:(void (*)(void *, int))callback andCtx:(void *)ctx
|
||||
{
|
||||
alert_callback = callback;
|
||||
alert_ctx = ctx; /* NB this is assumed to need freeing! */
|
||||
[alert beginSheetModalForWindow:self modalDelegate:self
|
||||
didEndSelector:@selector(alertSheetDidEnd:returnCode:contextInfo:)
|
||||
contextInfo:NULL];
|
||||
}
|
||||
|
||||
- (void)alertSheetDidEnd:(NSAlert *)alert returnCode:(int)returnCode
|
||||
contextInfo:(void *)contextInfo
|
||||
{
|
||||
alert_callback(alert_ctx, returnCode); /* transfers ownership of ctx */
|
||||
alert_ctx = NULL;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
int from_backend(void *frontend, int is_stderr, const char *data, int len)
|
||||
|
Reference in New Issue
Block a user