diff options
author | Michael Koch <konqueror@gmx.de> | 2002-11-21 10:08:03 +0000 |
---|---|---|
committer | Michael Koch <mkoch@gcc.gnu.org> | 2002-11-21 10:08:03 +0000 |
commit | c3e0633cc3510ceb36a0105ef6c4fb8ad230ff36 (patch) | |
tree | 795095557dd4555cce7687419b819d95b30d4b74 /libjava | |
parent | 0e4f7d33ad125d023fc7d03a46a732e1eecbf4c7 (diff) | |
download | gcc-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/ChangeLog | 37 | ||||
-rw-r--r-- | libjava/include/posix.h | 56 | ||||
-rw-r--r-- | libjava/include/win32.h | 55 | ||||
-rw-r--r-- | libjava/java/net/natNetworkInterface.cc | 13 |
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 */ |