Add reception support for MacTCP. Now I can log in over TELNET, just about.
[u/mdw/putty] / mac / mac.c
index 456f4f3..9c1abdf 100644 (file)
--- a/mac/mac.c
+++ b/mac/mac.c
@@ -1,4 +1,4 @@
-/* $Id: mac.c,v 1.13 2003/01/01 11:45:43 ben Exp $ */
+/* $Id: mac.c,v 1.19 2003/01/05 12:53:38 ben Exp $ */
 /*
  * Copyright (c) 1999 Ben Harris
  * All rights reserved.
@@ -118,14 +118,13 @@ static void mac_startup(void) {
     /* Init TextEdit */
     TEInit();
     /* Init Dialog Manager */
-    InitDialogs(nil);
+    InitDialogs(NULL);
     cold = 0;
     
     /* Get base system version (only used if there's no better selector) */
     if (Gestalt(gestaltSystemVersion, &mac_gestalts.sysvers) != noErr ||
-       (mac_gestalts.sysvers & 0xffff) < 0x700)
+       (mac_gestalts.sysvers &= 0xffff) < 0x700)
        fatalbox("PuTTY requires System 7 or newer");
-    mac_gestalts.sysvers &= 0xffff;
     /* Find out if we've got Color Quickdraw */
     if (Gestalt(gestaltQuickdrawVersion, &mac_gestalts.qdvers) != noErr)
        mac_gestalts.qdvers = gestaltOriginalQD;
@@ -140,12 +139,19 @@ static void mac_startup(void) {
     if (&RegisterAppearanceClient == kUnresolvedCFragSymbolAddress)
        mac_gestalts.apprvers = 0;
 #endif
+#if TARGET_CPU_68K
+    mac_gestalts.cntlattr = 0;
+    mac_gestalts.windattr = 0;
+#else
     /* Mac OS 8.5 Control Manager (proportional scrollbars)? */
-    if (Gestalt(gestaltControlMgrAttr, &mac_gestalts.cntlattr) != noErr)
+    if (Gestalt(gestaltControlMgrAttr, &mac_gestalts.cntlattr) != noErr ||
+       &SetControlViewSize == kUnresolvedCFragSymbolAddress)
        mac_gestalts.cntlattr = 0;
     /* Mac OS 8.5 Window Manager? */
-    if (Gestalt(gestaltWindowMgrAttr, &mac_gestalts.windattr) != noErr)
+    if (Gestalt(gestaltWindowMgrAttr, &mac_gestalts.windattr) != noErr ||
+       &SetWindowContentColor == kUnresolvedCFragSymbolAddress)
        mac_gestalts.windattr = 0;
+#endif
     /* Text Encoding Conversion Manager? */
     if (
 #if TARGET_RT_MAC_CFM
@@ -157,9 +163,12 @@ static void mac_startup(void) {
        mac_gestalts.encvvers = 0;
     else {
        mac_gestalts.encvvers = (*ti)->tecVersion;
+       mac_gestalts.uncvattr = (*ti)->tecUnicodeConverterFeatures;
        DisposeHandle((Handle)ti);
     }
 
+    mactcp_init();
+
     /* We've been tested with the Appearance Manager */
     if (mac_gestalts.apprvers != 0)
        RegisterAppearanceClient();
@@ -175,6 +184,9 @@ static void mac_startup(void) {
     windows.about = NULL;
     windows.licence = NULL;
 
+    default_protocol = DEFAULT_PROTOCOL;
+    default_port = DEFAULT_PORT;
+
     {
        short vol;
        long dirid;
@@ -201,6 +213,7 @@ static void mac_eventloop(void) {
        mac_adjustcursor(cursrgn);
        if (gotevent)
            mac_event(&event);
+       mactcp_poll();
     }
     DisposeRgn(cursrgn);
 }
@@ -590,6 +603,7 @@ static void mac_shutdown(void) {
     if (mac_gestalts.encvvers != 0)
        TerminateUnicodeConverter();
 #endif
+    mactcp_shutdown();
     exit(0);
 }
 
@@ -602,7 +616,7 @@ void fatalbox(char *fmt, ...) {
     stuff[0] = vsprintf((char *)(&stuff[1]), fmt, ap);
     va_end(ap);
     ParamText(stuff, NULL, NULL, NULL);
-    StopAlert(128, nil);
+    StopAlert(128, NULL);
     exit(1);
 }
 
@@ -615,7 +629,21 @@ void modalfatalbox(char *fmt, ...) {
     stuff[0] = vsprintf((char *)(&stuff[1]), fmt, ap);
     va_end(ap);
     ParamText(stuff, NULL, NULL, NULL);
-    StopAlert(128, nil);
+    StopAlert(128, NULL);
+    exit(1);
+}
+
+/* This should only kill the current session, not the whole application. */
+void connection_fatal(void *fontend, char *fmt, ...) {
+    va_list ap;
+    Str255 stuff;
+    
+    va_start(ap, fmt);
+    /* We'd like stuff to be a Pascal string */
+    stuff[0] = vsprintf((char *)(&stuff[1]), fmt, ap);
+    va_end(ap);
+    ParamText(stuff, NULL, NULL, NULL);
+    StopAlert(128, NULL);
     exit(1);
 }