1 #ifdef _WIN32
2 #	include <windows.h>
3 #	include <io.h>
4 
5 
6 #else
7 
8 #ifdef _S_LIBGXX
9 #  include <cstddef>
10 #  include <cstring>
11 #  include <cerrno>
12 #else
13 #  include <stddef.h>
14 #  include <string.h>
15 #  include <errno.h>
16 #endif
17 
18 EXTERN_C_BEGIN
19 #ifdef HAVE_STRING_H
20 #  include <string.h>
21 #else
22 #  ifdef HAVE_MEMORY_H
23 #    include <memory.h>
24 #  endif
25 #endif
26 
27 #ifdef _ALL_SOURCE
28 #  define _BSD 44  // AIX
29 #  include <sys/select.h>
30 #  ifndef _POSIX_SOURCE
31 #    define _POSIX_SOURCE
32 #  endif
33 #  undef _ALL_SOURCE
34 #endif
35 
36 #include <sys/types.h>
37 #ifdef HAVE_SYS_WAIT
38 #  include <sys/wait.h>
39 #endif
40 #include <signal.h>
41 #include <netinet/in.h>
42 
43 #ifndef SA_RESTART
44 #  define SA_RESTART 0
45 #endif
46 
47 EXTERN_C_END
48 
49 #if defined (__sun__) && !defined (__svr4__) && defined (_S_LIBGXX)
50 // libg++-2.6.x has stopped providing prototypes for the following
51 // for sunos 4.1.x
52 
53 extern "C" {
54   int socketpair (int domain, int typ, int protocol, int* sockpair);
55   int socket (int domain, int typ, int protocol);
56   int bind   (int sock, void* addr, int addrlen);
57   int connect (int sock, void* addr, int addrlen);
58   int listen (int sock, int num);
59   int accept (int sock, void* addr, int* addrlen);
60 
61   int recv (int sock, void* buf, int buflen, int msgflag);
62   int recvfrom (int sock, void* buf, int buflen, int msgflag,
63 		void* addr, int* addrlen);
64   int send (int sock, void* buf, int buflen, int msgflag);
65   int sendto (int sock, void* buf, int buflen, int msgflag,
66 	      void* addr, int addrlen);
67 
68   int recvmsg (int sock, struct msghdr* msg, int msgflag);
69   int sendmsg (int sock, struct msghdr* msg, int msgflag);
70 
71   int select (int sock, void* rd, void* wr, void* ex, struct timeval* tv);
72 
73   int getsockopt (int sock, int level, int option, void* val, int* vallen);
74   int setsockopt (int sock, int level, int option, void* val, int vallen);
75 
76   int getsockname (int sock, void* addr, int* addrlen);
77   int getpeername (int sock, void* addr, int* addrlen);
78 
79   int ioctl (int sock, int flag, void* arg);
80   pid_t vfork ();
81 }
82 #endif
83 
84 #if !defined (__linux__) // LN
85 extern "C" int shutdown (int, int); // they have forgotten this
86 #else
87 #   include <arpa/inet.h>
88 #endif
89 
90 // <arpa/inet.h> does not have a prototype for inet_addr () and gethostname()
91 //extern "C" unsigned long inet_addr (const char*);
92 
93 // arpa/in.h does not provide a protype for the following
94 //extern "C" char* inet_ntoa (in_addr ina);
95 
96 #if !(defined (__linux__) || defined(__FreeBSD__) || defined(__sun__))
97 //  extern "C" int gethostname (char* hostname, size_t len);
98 // the above breaks on some old MacOSX system where prototype is:
99 //  extern "C" int gethostname (char* hostname, int len);
100 #if !(defined(__FreeBSD__) || defined(__GNU__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__bsdi__) || defined(__APPLE__))
101   extern char* SYS_SIGLIST [];
102 #endif
103 #endif
104 
105 #ifdef __osf__
106   extern "C" {
107     int select (int, fd_set*, fd_set*, fd_set*, timeval*);
108     unsigned short ntohs (unsigned short);
109     unsigned short htons (unsigned short);
110     unsigned long  ntohl (unsigned long);
111     unsigned long  htonl (unsigned long);
112   }
113 #endif
114 
115 #ifndef SYS_ERRLIST_DECLARED
116   extern char* SYS_ERRLIST [];
117 #endif
118 #undef SYS_ERRLIST_DECLARED
119 
120 typedef RETSIGTYPE (*sighnd) (SIGHND_ARGTYPE);
121 
122 #endif // WIN32
123 
124 #if defined(WIN32) && defined(GDCM_BUILD_SHARED_LIBS)
125 #ifdef socketxx_EXPORTS
126 #define MY_API __declspec(dllexport)
127 #else
128 #define MY_API __declspec(dllimport)
129 #endif
130 #else
131 #if __GNUC__ >= 4
132 #define MY_API    __attribute__ ((visibility ("default")))
133 #else
134 #define MY_API
135 #endif
136 #endif
137