summaryrefslogtreecommitdiff
path: root/vms/sockadapt.h
diff options
context:
space:
mode:
Diffstat (limited to 'vms/sockadapt.h')
-rw-r--r--vms/sockadapt.h56
1 files changed, 43 insertions, 13 deletions
diff --git a/vms/sockadapt.h b/vms/sockadapt.h
index 041fbd7073..e104ca7f3c 100644
--- a/vms/sockadapt.h
+++ b/vms/sockadapt.h
@@ -2,7 +2,7 @@
*
* Authors: Charles Bailey bailey@genetics.upenn.edu
* David Denholm denholm@conmat.phys.soton.ac.uk
- * Last Revised: 17-Mar-1995
+ * Last Revised: 4-Mar-1997
*
* This file should include any other header files and procide any
* declarations, typedefs, and prototypes needed by perl for TCP/IP
@@ -11,15 +11,33 @@
* This version is set up for perl5 with socketshr 0.9D TCP/IP support.
*/
-/* SocketShr doesn't support these routines, but the DECC RTL contains
- * stubs with these names, designed to be used with the UCX socket
- * library. We avoid linker collisions by substituting new names.
- */
-#define getnetbyaddr no_getnetbyaddr
-#define getnetbyname no_getnetbyname
-#define getnetent no_getnetent
-#define setnetent no_setnetent
-#define endnetent no_endnetent
+#ifndef __SOCKADAPT_INCLUDED
+#define __SOCKADAPT_INCLUDED 1
+
+#if defined(DECCRTL_SOCKETS)
+ /* Use builtin socket interface in DECCRTL and
+ * UCX emulation in whatever TCP/IP stack is present.
+ * Provide prototypes for missing routines; stubs are
+ * in sockadapt.c.
+ */
+# include <socket.h>
+# include <inet.h>
+# include <in.h>
+# include <netdb.h>
+ void sethostent(int);
+ void endhostent(void);
+ void setnetent(int);
+ void endnetent(void);
+ void setprotoent(int);
+ void endprotoent(void);
+ void setservent(int);
+ void endservent(void);
+
+#else
+ /* Pull in SOCKETSHR's header, and set up structures for
+ * gcc, whose basic header file set doesn't include the
+ * TCP/IP stuff.
+ */
#ifdef __GNU_CC__
@@ -109,7 +127,7 @@ struct netent {
struct netent *getnetbyaddr( long net, int type);
struct netent *getnetbyname( char *name);
struct netent *getnetent();
-void setnetent();
+void setnetent(int);
void endnetent();
#else /* !__GNU_CC__ */
@@ -123,13 +141,22 @@ void endnetent();
#include <inet.h>
#include <netdb.h>
/* However, we don't have these two in the system headers. */
-void setnetent();
+void setnetent(int);
void endnetent();
+/* SocketShr doesn't support these routines, but the DECC RTL contains
+ * stubs with these names, designed to be used with the UCX socket
+ * library. We avoid linker collisions by substituting new names.
+ */
+#define getnetbyaddr no_getnetbyaddr
+#define getnetbyname no_getnetbyname
+#define getnetent no_getnetent
+#define setnetent no_setnetent
+#define endnetent no_endnetent
#endif
#include <socketshr.h>
-/* socketshr.h from SocketShr 0.9D doesn't alias fileno; it's comments say
+/* socketshr.h from SocketShr 0.9D doesn't alias fileno; its comments say
* that the CRTL version works OK. This isn't the case, at least with
* VAXC, so we use the SocketShr version.
* N.B. This means that sockadapt.h must be included *after* stdio.h.
@@ -148,3 +175,6 @@ int si_fileno(FILE *);
#endif
#define getpeername my_getpeername
int my_getpeername _((int, struct sockaddr *, int *));
+
+#endif /* SOCKETSHR stuff */
+#endif /* include guard */