aboutsummaryrefslogtreecommitdiff
path: root/libjava
diff options
context:
space:
mode:
authorMichael Koch <konqueror@gmx.de>2002-11-21 10:08:03 +0000
committerMichael Koch <mkoch@gcc.gnu.org>2002-11-21 10:08:03 +0000
commitc3e0633cc3510ceb36a0105ef6c4fb8ad230ff36 (patch)
tree795095557dd4555cce7687419b819d95b30d4b74 /libjava
parent0e4f7d33ad125d023fc7d03a46a732e1eecbf4c7 (diff)
downloadgcc-c3e0633cc3510ceb36a0105ef6c4fb8ad230ff36.zip
gcc-c3e0633cc3510ceb36a0105ef6c4fb8ad230ff36.tar.gz
gcc-c3e0633cc3510ceb36a0105ef6c4fb8ad230ff36.tar.bz2
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(). From-SVN: r59338
Diffstat (limited to 'libjava')
-rw-r--r--libjava/ChangeLog37
-rw-r--r--libjava/include/posix.h56
-rw-r--r--libjava/include/win32.h55
-rw-r--r--libjava/java/net/natNetworkInterface.cc13
4 files changed, 153 insertions, 8 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index f4bf4e5..4fcd4d0 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,40 @@
+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):
diff --git a/libjava/include/posix.h b/libjava/include/posix.h
index 8fa782f..975b93c 100644
--- a/libjava/include/posix.h
+++ b/libjava/include/posix.h
@@ -27,6 +27,10 @@ details. */
#include <sys/select.h>
#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
@@ -41,11 +45,61 @@ extern jlong _Jv_platform_gettimeofday ();
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
diff --git a/libjava/include/win32.h b/libjava/include/win32.h
index a035cfc..3965cb2 100644
--- a/libjava/include/win32.h
+++ b/libjava/include/win32.h
@@ -22,16 +22,71 @@ details. */
#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
diff --git a/libjava/java/net/natNetworkInterface.cc b/libjava/java/net/natNetworkInterface.cc
index f201940..65bcf16 100644
--- a/libjava/java/net/natNetworkInterface.cc
+++ b/libjava/java/net/natNetworkInterface.cc
@@ -9,6 +9,7 @@ Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
details. */
#include <config.h>
+#include <platform.h>
#ifdef WIN32
@@ -27,9 +28,6 @@ details. */
#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
@@ -83,7 +81,7 @@ java::net::NetworkInterface::getRealNetworkInterfaces ()
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;
@@ -96,7 +94,7 @@ java::net::NetworkInterface::getRealNetworkInterfaces ()
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)
@@ -106,6 +104,7 @@ java::net::NetworkInterface::getRealNetworkInterfaces ()
// 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;
@@ -115,7 +114,7 @@ java::net::NetworkInterface::getRealNetworkInterfaces ()
// 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));
@@ -136,7 +135,7 @@ java::net::NetworkInterface::getRealNetworkInterfaces ()
_Jv_Free (if_data.ifc_buf);
if (fd >= 0)
- ::close (fd);
+ _Jv_close (fd);
return ht;
#endif /* WIN32 */