Implement Simon's suggestion of moving DEFAULT_PROTOCOL into a per-backend-
authorjacob <jacob@cda61777-01e9-0310-a592-d414129be87e>
Wed, 15 Jan 2003 20:47:50 +0000 (20:47 +0000)
committerjacob <jacob@cda61777-01e9-0310-a592-d414129be87e>
Wed, 15 Jan 2003 20:47:50 +0000 (20:47 +0000)
link-module const variable `be_default_protocol' which suggests a sensible
default to the front end (which can ignore it). (DEFAULT_PORT is replaced by a
lookup in the backend[] table.)
Still not pretty, but it does mean that the recent fix for `ssh-default'
doesn't break PuTTYtel.

git-svn-id: svn://svn.tartarus.org/sgt/putty@2613 cda61777-01e9-0310-a592-d414129be87e

be_all.c
be_nossh.c
mac/mac.c
putty.h
window.c

index 96dac53..a48cc70 100644 (file)
--- a/be_all.c
+++ b/be_all.c
@@ -6,6 +6,12 @@
 #include <stdio.h>
 #include "putty.h"
 
+#ifdef TELNET_DEFAULT
+const int be_default_protocol = PROT_TELNET;
+#else
+const int be_default_protocol = PROT_SSH;
+#endif
+
 struct backend_list backends[] = {
     {PROT_SSH, "ssh", &ssh_backend},
     {PROT_TELNET, "telnet", &telnet_backend},
index 76355cb..ceef3cf 100644 (file)
@@ -7,6 +7,8 @@
 #include <stdio.h>
 #include "putty.h"
 
+const int be_default_protocol = PROT_TELNET;
+
 struct backend_list backends[] = {
     {PROT_TELNET, "telnet", &telnet_backend},
     {PROT_RLOGIN, "rlogin", &rlogin_backend},
index 6335aab..fa2ec2f 100644 (file)
--- a/mac/mac.c
+++ b/mac/mac.c
@@ -1,4 +1,4 @@
-/* $Id: mac.c,v 1.29 2003/01/14 19:42:00 ben Exp $ */
+/* $Id: mac.c,v 1.30 2003/01/15 20:47:50 jacob Exp $ */
 /*
  * Copyright (c) 1999 Ben Harris
  * All rights reserved.
@@ -200,8 +200,17 @@ static void mac_startup(void) {
     windows.about = NULL;
     windows.licence = NULL;
 
-    default_protocol = DEFAULT_PROTOCOL;
-    default_port = DEFAULT_PORT;
+    default_protocol = be_default_protocol;
+    /* Find the appropriate default port. */
+    {
+       default_port = 0; /* illegal */
+       int i;
+       for (i = 0; backends[i].backend != NULL; i++)
+           if (backends[i].protocol == default_protocol) {
+               default_port = backends[i].backend->default_port;
+               break;
+           }
+    }
     flags = FLAG_INTERACTIVE;
 
     {
diff --git a/putty.h b/putty.h
index 28320de..516760a 100644 (file)
--- a/putty.h
+++ b/putty.h
@@ -217,6 +217,12 @@ extern struct backend_list {
     Backend *backend;
 } backends[];
 
+/*
+ * Suggested default protocol provided by the backend link module.
+ * The application is free to ignore this.
+ */
+extern const int be_default_protocol;
+
 struct config_tag {
     /* Basic options */
     char host[512];
@@ -371,18 +377,6 @@ struct config_tag {
 };
 
 /*
- * You can compile with -DTELNET_DEFAULT to have telnet by default
- * (otherwise SSH is the default).
- */
-#ifdef TELNET_DEFAULT
-#define DEFAULT_PROTOCOL PROT_TELNET
-#define DEFAULT_PORT 23
-#else
-#define DEFAULT_PROTOCOL PROT_SSH
-#define DEFAULT_PORT 22
-#endif
-
-/*
  * Some global flags denoting the type of application.
  * 
  * FLAG_VERBOSE is set when the user requests verbose details.
index ac8ac85..04d3d61 100644 (file)
--- a/window.c
+++ b/window.c
@@ -272,8 +272,17 @@ int WINAPI WinMain(HINSTANCE inst, HINSTANCE prev, LPSTR cmdline, int show)
        char *p;
        int got_host = 0;
 
-       default_protocol = DEFAULT_PROTOCOL;
-       default_port = DEFAULT_PORT;
+       default_protocol = be_default_protocol;
+       /* Find the appropriate default port. */
+       {
+           default_port = 0; /* illegal */
+           int i;
+           for (i = 0; backends[i].backend != NULL; i++)
+               if (backends[i].protocol == default_protocol) {
+                   default_port = backends[i].backend->default_port;
+                   break;
+               }
+       }
        cfg.logtype = LGTYP_NONE;
 
        do_defaults(NULL, &cfg);