Add an indirection layer between mtcpnet.c and the rest of PuTTY so that
[sgt/putty] / mac / macnet.c
diff --git a/mac/macnet.c b/mac/macnet.c
new file mode 100644 (file)
index 0000000..88a5cab
--- /dev/null
@@ -0,0 +1,119 @@
+#include "putty.h"
+#include "network.h"
+#include "mac.h"
+
+/*
+ * Network functions exported to the world.  These choose whether to call
+ * MacTCP or OpenTransport and behave accordingly.
+ */
+SockAddr sk_namelookup(char *host, char **canonicalname)
+{
+
+    if (mac_gestalts.mtcpvers != 0)
+       return mactcp_namelookup(host, canonicalname);
+    else
+       return NULL;
+}
+
+SockAddr sk_nonamelookup(char *host)
+{
+
+    if (mac_gestalts.mtcpvers != 0)
+       return mactcp_nonamelookup(host);
+    else
+       return NULL;
+}
+
+void sk_getaddr(SockAddr addr, char *buf, int buflen)
+{
+
+    if (mac_gestalts.mtcpvers != 0)
+       mactcp_getaddr(addr, buf, buflen);
+    else
+       *buf = '\0';
+}
+
+int sk_hostname_is_local(char *name)
+{
+
+    if (mac_gestalts.mtcpvers != 0)
+       return mactcp_hostname_is_local(name);
+    else
+       return 0;
+}
+
+int sk_address_is_local(SockAddr addr)
+{
+
+    if (mac_gestalts.mtcpvers != 0)
+       return mactcp_address_is_local(addr);
+    else
+       return 0;
+}
+
+int sk_addrtype(SockAddr addr)
+{
+
+    if (mac_gestalts.mtcpvers != 0)
+       return mactcp_addrtype(addr);
+    else
+       return 0;
+}
+
+void sk_addrcopy(SockAddr addr, char *buf)
+{
+
+    if (mac_gestalts.mtcpvers != 0)
+       mactcp_addrcopy(addr, buf);
+}
+
+void sk_addr_free(SockAddr addr)
+{
+
+    if (mac_gestalts.mtcpvers != 0)
+       mactcp_addr_free(addr);
+}
+
+Socket sk_register(void *sock, Plug plug)
+{
+
+    if (mac_gestalts.mtcpvers != 0)
+       return mactcp_register(sock, plug);
+    else
+       return NULL;
+}
+
+Socket sk_new(SockAddr addr, int port, int privport, int oobinline,
+             int nodelay, Plug plug)
+{
+
+    if (mac_gestalts.mtcpvers != 0)
+       return mactcp_new(addr, port, privport, oobinline, nodelay, plug);
+    else
+       return NULL;
+}
+
+Socket sk_newlistener(char *srcaddr, int port, Plug plug, int local_host_only)
+{
+
+    if (mac_gestalts.mtcpvers != 0)
+       return mactcp_newlistener(srcaddr, port, plug, local_host_only);
+    else
+       return NULL;
+}
+
+char *sk_addr_error(SockAddr addr)
+{
+
+    if (mac_gestalts.mtcpvers != 0)
+       return mactcp_addr_error(addr);
+    else
+       return "No TCP/IP stack installed";
+}
+
+/*
+ * Local Variables:
+ * c-file-style: "simon"
+ * End:
+ */
+