X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/putty/blobdiff_plain/2beb0fb004d36c0ce0a2db3f00ad145241391ae3..e0e7dff87dc3f482da6ab00317664474b0f82995:/mac/mac.c diff --git a/mac/mac.c b/mac/mac.c index 8aac2ad3..fe46f3f8 100644 --- a/mac/mac.c +++ b/mac/mac.c @@ -1,4 +1,4 @@ -/* $Id: mac.c,v 1.18 2003/01/05 10:52:56 ben Exp $ */ +/* $Id: mac.c,v 1.23 2003/01/10 18:33:35 simon Exp $ */ /* * Copyright (c) 1999 Ben Harris * All rights reserved. @@ -57,10 +57,13 @@ #include "macresid.h" #include "putty.h" +#include "ssh.h" #include "mac.h" QDGlobals qd; +Session *sesslist; + static int cold = 1; struct mac_gestalts mac_gestalts; @@ -84,7 +87,7 @@ static void mac_adjustmenus(void); static void mac_closewindow(WindowPtr); static void mac_zoomwindow(WindowPtr, short); static void mac_shutdown(void); -#pragma noreturn (mac_shutdown) +#pragma noreturn (cleanup_exit) struct mac_windows { WindowPtr about; @@ -186,6 +189,15 @@ static void mac_startup(void) { default_protocol = DEFAULT_PROTOCOL; default_port = DEFAULT_PORT; + flags = FLAG_INTERACTIVE; + + /* + * Really grotty hack to ensure that anything that looks at the + * global "cfg" variable gets something vaguely sensible. + * Obviously, nothing should actually be using it, but that will + * take a while to arrange. + */ + do_defaults(NULL, &cfg); { short vol; @@ -213,6 +225,8 @@ static void mac_eventloop(void) { mac_adjustcursor(cursrgn); if (gotevent) mac_event(&event); + mactcp_poll(); + mac_pollterm(); } DisposeRgn(cursrgn); } @@ -456,7 +470,7 @@ static void mac_menucommand(long result) { mac_closewindow(window); goto done; case iQuit: - mac_shutdown(); + cleanup_exit(0); goto done; } break; @@ -596,14 +610,15 @@ static void mac_adjustcursor(RgnHandle cursrgn) { } } -static void mac_shutdown(void) { +void cleanup_exit(int status) +{ #if !TARGET_RT_MAC_CFM if (mac_gestalts.encvvers != 0) TerminateUnicodeConverter(); #endif mactcp_shutdown(); - exit(0); + exit(status); } void fatalbox(char *fmt, ...) { @@ -646,6 +661,91 @@ void connection_fatal(void *fontend, char *fmt, ...) { exit(1); } +/* Null SSH agent client -- never finds an agent. */ + +int agent_exists(void) +{ + + return FALSE; +} + +void agent_query(void *in, int inlen, void **out, int *outlen) +{ + + *out = NULL; + *outlen = 0; +} + +/* Temporary null routines for testing. */ + +void verify_ssh_host_key(void *frontend, char *host, int port, char *keytype, + char *keystr, char *fingerprint) +{ + +} + +void askcipher(void *frontend, char *ciphername, int cs) +{ + +} + +void old_keyfile_warning(void) +{ + +} + +char *platform_default_s(char *name) +{ + long smfs; + Str255 pname; + static char cname[256]; + + if (!strcmp(name, "Font")) { + smfs = GetScriptVariable(smSystemScript, smScriptMonoFondSize); + if (smfs == 0) + smfs = GetScriptVariable(smRoman, smScriptMonoFondSize); + if (smfs != 0) { + GetFontName(HiWord(smfs), pname); + if (pname[0] == 0) + return "Monaco"; + p2cstrcpy(cname, pname); + return cname; + } else + return "Monaco"; + } + return NULL; +} + +int platform_default_i(char *name, int def) +{ + long smfs; + + if (!strcmp(name, "FontHeight")) { + smfs = GetScriptVariable(smSystemScript, smScriptMonoFondSize); + if (smfs == 0) + smfs = GetScriptVariable(smRoman, smScriptMonoFondSize); + if (smfs != 0) + return LoWord(smfs); + else + return 9; + } + + /* Non-raw cut and paste of line-drawing chars works badly on the + * current Unix stub implementation of the Unicode functions. + * So I'm going to temporarily set the default to raw mode so + * that the failure mode isn't quite so drastically horrid. + * When Unicode comes in, this can all be put right. */ + if (!strcmp(name, "RawCNP")) + return 1; + return def; +} + +void platform_get_x11_auth(char *display, int *proto, + unsigned char *data, int *datalen) +{ + /* SGT: I have no idea whether Mac X servers need anything here. */ +} + /* * Local Variables: * c-file-style: "simon"