* include/posix.h
(_Jv_socket): New method.
(_Jv_connect): New method.
(_Jv_close): New method.
(_Jv_platform_close_on_exec): Prefixed system function with "::".
(_Jv_bind): New method.
(_Jv_listen): New method.
(_Jv_write): New method.
(_Jv_read): New method.
* include/win32.h
(_Jv_socket): New method.
(_Jv_connect): New method.
(_Jv_close): New method.
(_Jv_bind): New method.
(_Jv_listen): New method.
(_Jv_write): New method.
(_Jv_read): New method.
* java/net/natNetworkInterface.cc:
Include platform.h, removed inclusion of socket.h
(getRealNetworkInterfaces): Replaced ::socket() by _Jv_socket() and
::close() by _Jv_close().
* java/net/natPlainDatagramSocketImpl.cc:
Removed include of socket.h, definition of NATIVE_CLOSE and _Jv_bind,
added some new lines to make code more readable.
(create): Replaced ::socket() by _Jv_socket().
(close): Replaced NATIVE_CLOSE() by _Jv_close().
* java/net/natPlainSocketImpl.cc:
Removed definition of NATIVE_CLOSE, _Jv_bind, Jv_connect and _Jv_accept,
removed include of socket.h, removed some windows defines
(now in include/win32.h).
(create): Replaced ::socket() by _Jv_socket().
(close): Replaced NATIVE_CLOSE() by _Jv_close().
(write): Replaced ::read by _Jv_write().
(read): Replaced ::read by _Jv_read().
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@59338
138bc75d-0d04-0410-961f-
82ee72b054a4
+2002-11-21 Michael Koch <konqueror@gmx.de>
+
+ * include/posix.h
+ (_Jv_socket): New method.
+ (_Jv_connect): New method.
+ (_Jv_close): New method.
+ (_Jv_platform_close_on_exec): Prefixed system function with "::".
+ (_Jv_bind): New method.
+ (_Jv_listen): New method.
+ (_Jv_write): New method.
+ (_Jv_read): New method.
+ * include/win32.h
+ (_Jv_socket): New method.
+ (_Jv_connect): New method.
+ (_Jv_close): New method.
+ (_Jv_bind): New method.
+ (_Jv_listen): New method.
+ (_Jv_write): New method.
+ (_Jv_read): New method.
+ * java/net/natNetworkInterface.cc:
+ Include platform.h, removed inclusion of socket.h
+ (getRealNetworkInterfaces): Replaced ::socket() by _Jv_socket() and
+ ::close() by _Jv_close().
+ * java/net/natPlainDatagramSocketImpl.cc:
+ Removed include of socket.h, definition of NATIVE_CLOSE and _Jv_bind,
+ added some new lines to make code more readable.
+ (create): Replaced ::socket() by _Jv_socket().
+ (close): Replaced NATIVE_CLOSE() by _Jv_close().
+ * java/net/natPlainSocketImpl.cc:
+ Removed definition of NATIVE_CLOSE, _Jv_bind, Jv_connect and _Jv_accept,
+ removed include of socket.h, removed some windows defines
+ (now in include/win32.h).
+ (create): Replaced ::socket() by _Jv_socket().
+ (close): Replaced NATIVE_CLOSE() by _Jv_close().
+ (write): Replaced ::read by _Jv_write().
+ (read): Replaced ::read by _Jv_read().
+
2002-11-20 Michael Koch <konqueror@gmx.de>
* Makefile.am (ordinary_java_source_files):
#include <sys/select.h>
#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
extern void _Jv_platform_initialize (void);
extern void _Jv_platform_initProperties (java::util::Properties*);
+static inline int
+_Jv_socket (int domain, int type, int protocol)
+{
+ return ::socket (domain, type, protocol);
+}
+
+inline int
+_Jv_connect (jint fd, sockaddr *ptr, int len)
+{
+ return ::connect (fd, ptr, len);
+}
+
+inline int
+_Jv_close (jint fd)
+{
+ return ::close (fd);
+}
+
inline void
_Jv_platform_close_on_exec (jint fd)
{
// Ignore errors.
- fcntl (fd, F_SETFD, FD_CLOEXEC);
+ ::fcntl (fd, F_SETFD, FD_CLOEXEC);
}
+// Avoid macro definitions of bind from system headers, e.g. on
+// Solaris 7 with _XOPEN_SOURCE. FIXME
+inline int
+_Jv_bind (int fd, struct sockaddr *addr, int addrlen)
+{
+ return ::bind (fd, addr, addrlen);
+}
+
+// Same problem with accept on Tru64 UNIX with _POSIX_PII_SOCKET
+inline int
+_Jv_accept (int fd, struct sockaddr *addr, socklen_t *addrlen)
+{
+ return ::accept (fd, addr, addrlen);
+}
+
+inline int
+_Jv_listen (int fd, int backlog)
+{
+ return ::listen (fd, backlog);
+}
+
+inline int
+_Jv_write(int s, void *buf, int len)
+{
+ return ::write (s, buf, len);
+}
+
+inline int
+_Jv_read(int s, void *buf, int len)
+{
+ return ::read (s, buf, len);
+}
#endif
#include <io.h>
+// these errors cannot occur on Win32
+#define ENOTCONN 0
+#define ECONNRESET 0
+
+#ifndef ENOPROTOOPT
+#define ENOPROTOOPT 109
+#endif
+
extern void _Jv_platform_initialize (void);
extern void _Jv_platform_initProperties (java::util::Properties*);
extern jlong _Jv_platform_gettimeofday ();
+static inline int
+_Jv_socket (int domain, int type, int protocol)
+{
+ return ::socket (domain, type, protocol);
+}
+
+inline int
+_Jv_connect (jint fd, sockaddr *ptr, int len)
+{
+ return ::connect (fd, ptr, len);
+}
+
+inline int
+_Jv_close (jint fd)
+{
+ return ::closesocket (fd);
+}
+
inline void
_Jv_platform_close_on_exec (jint)
{
// Ignore.
}
+inline int
+_Jv_bind (int fd, struct sockaddr *addr, int addrlen)
+{
+ return ::bind (fd, addr, addrlen);
+}
+
+inline int
+_Jv_accept (int fd, struct sockaddr *addr, socklen_t *addrlen)
+{
+ return ::accept (fd, addr, addrlen);
+}
+
+inline int
+_Jv_listen (int fd, int backlog)
+{
+ return ::listen (fd, backlog);
+}
+
+inline int
+_Jv_write(int s, void *buf, int len)
+{
+ return ::send (s, (char*) buf, len, 0);
+}
+
+inline int
+_Jv_read(int s, void *buf, int len)
+{
+ return ::recv (s, (char*) buf, len, 0);
+}
#define HAVE_BACKTRACE
/* Store up to SIZE return address of the current program state in
details. */
#include <config.h>
+#include <platform.h>
#ifdef WIN32
#include <sys/param.h>
#include <sys/types.h>
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
#ifdef HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
if_data.ifc_buf = NULL;
// Open a (random) socket to have a file descriptor for the ioctl calls.
- fd = ::socket (PF_INET, SOCK_DGRAM, htons (IPPROTO_IP));
+ fd = _Jv_socket (PF_INET, SOCK_DGRAM, htons (IPPROTO_IP));
if (fd < 0)
throw new ::java::net::SocketException;
if_data.ifc_len = sizeof (struct ifreq) * num_interfaces;
if_data.ifc_buf =
- (char*) _Jv_Realloc (if_data.ifc_buf, if_data.ifc_len);
+ (char*) _Jv_Realloc (if_data.ifc_buf, if_data.ifc_len);
// Try to get all local interfaces.
if (::ioctl (fd, SIOCGIFCONF, &if_data) < 0)
// Get addresses of all interfaces.
if_record = if_data.ifc_req;
+
for (int n = 0; n < if_data.ifc_len; n += sizeof (struct ifreq))
{
struct ifreq ifr;
// Try to get the IPv4-address of the local interface
if (::ioctl (fd, SIOCGIFADDR, &ifr) < 0)
- throw new java::net::SocketException;
+ throw new java::net::SocketException;
int len = 4;
struct sockaddr_in sa = *((sockaddr_in*) &(ifr.ifr_addr));
_Jv_Free (if_data.ifc_buf);
if (fd >= 0)
- ::close (fd);
+ _Jv_close (fd);
return ht;
#endif /* WIN32 */