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