I have created a patch for native/java.net that will let classpath
compile on non-linux systems (i am running on a sun). It will also
get rid of a bunch of silly warning messages. The patch is appended
to the end of this email.
I also noticed a strange warning message when I tried to compile
classpath on a linux box. Here is the warning I got from the
java.net classes.
/bin/sh ../../libtool --mode=compile gcc -DPACKAGE=\"classpath\" -DVERSION=\"0.0\"
-DSTDC_HEADERS=1 -DHAVE_UNISTD_H=1 -DHAVE_GETHOSTNAME=1 -DHAVE_STRERROR=1
-DHAVE_LIBPTHREAD=1 -DUSE_PTHREADS= -I. -I. -I/tmp/mo/install_japhar/include/japhar
-I/tmp/mo/install_japhar/include/japhar/private -g -O2 -c javanet.c
gcc -DPACKAGE=\"classpath\" -DVERSION=\"0.0\" -DSTDC_HEADERS=1 -DHAVE_UNISTD_H=1
-DHAVE_GETHOSTNAME=1 -DHAVE_STRERROR=1 -DHAVE_LIBPTHREAD=1 -DUSE_PTHREADS= -I. -I.
-I/tmp/mo/install_japhar/include/japhar
-I/tmp/mo/install_japhar/include/japhar/private -g -O2 -c javanet.c
javanet.c:37: warning: #warning Neither SO_TIMEOUT or SO_RCVTIMEO are defined!
javanet.c:38: warning: #warning This will cause all get/setOption calls with that
value to throw an exception
echo timestamp > javanet.lo
/bin/sh: .deps/javanet.p: No such file or directory
make: [javanet.lo] Error 1 (ignored)
Is this a known problem?
hope that helps
Mo DeJong
dejong at cs.umn.edu
(here is the patch to fix the native/java.net package!)
diff -r -C 2 old_classpath/native/java.net/InetAddress.c
classpath/native/java.net/InetAddress.c
*** old_classpath/native/java.net/InetAddress.c Tue Oct 20 22:53:23 1998
--- classpath/native/java.net/InetAddress.c Mon Nov 2 02:49:12 1998
***************
*** 23,26 ****
--- 23,27 ----
#include <unistd.h>
#include <netdb.h>
+ #include <sys/socket.h>
#include <netinet/in.h>
diff -r -C 2 old_classpath/native/java.net/PlainDatagramSocketImpl.c
classpath/native/java.net/PlainDatagramSocketImpl.c
*** old_classpath/native/java.net/PlainDatagramSocketImpl.c Tue Oct 20 22:53:25
1998
--- classpath/native/java.net/PlainDatagramSocketImpl.c Mon Nov 2 02:27:47 1998
***************
*** 228,232 ****
rc = setsockopt(_javanet_get_int_field(env, this, "native_fd"),
! SOL_IP, IP_ADD_MEMBERSHIP, &ipm, sizeof(ipm));
if (rc == -1)
--- 228,232 ----
rc = setsockopt(_javanet_get_int_field(env, this, "native_fd"),
! IPPROTO_IP, IP_ADD_MEMBERSHIP, (void *) &ipm, sizeof(ipm));
if (rc == -1)
***************
*** 251,255 ****
rc = setsockopt(_javanet_get_int_field(env, this, "native_fd"),
! SOL_IP, IP_DROP_MEMBERSHIP, &ipm, sizeof(ipm));
if (rc == -1)
--- 251,255 ----
rc = setsockopt(_javanet_get_int_field(env, this, "native_fd"),
! IPPROTO_IP, IP_DROP_MEMBERSHIP, (void *) &ipm, sizeof(ipm));
if (rc == -1)
diff -r -C 2 old_classpath/native/java.net/javanet.c
classpath/native/java.net/javanet.c
*** old_classpath/native/java.net/javanet.c Sun May 17 19:51:13 1998
--- classpath/native/java.net/javanet.c Mon Nov 2 02:55:21 1998
***************
*** 435,439 ****
si.sin_port = htons(((short)port));
! rc = connect(fd, &si, sizeof(struct sockaddr_in));
if (rc == -1)
{ _javanet_throw_exception(env, IO_EXCEPTION, strerror(errno)); return; }
--- 435,439 ----
si.sin_port = htons(((short)port));
! rc = connect(fd, (struct sockaddr *) &si, sizeof(struct sockaddr_in));
if (rc == -1)
{ _javanet_throw_exception(env, IO_EXCEPTION, strerror(errno)); return; }
***************
*** 442,446 ****
/* Populate instance variables */
addrlen = sizeof(struct sockaddr_in);
! rc = getsockname(fd, &si, &addrlen);
if (rc == -1)
{
--- 442,446 ----
/* Populate instance variables */
addrlen = sizeof(struct sockaddr_in);
! rc = getsockname(fd, (struct sockaddr *) &si, &addrlen);
if (rc == -1)
{
***************
*** 462,466 ****
addrlen = sizeof(struct sockaddr_in);
! rc = getpeername(fd, &si, &addrlen);
if (rc == -1)
{
--- 462,466 ----
addrlen = sizeof(struct sockaddr_in);
! rc = getpeername(fd, (struct sockaddr *) &si, &addrlen);
if (rc == -1)
{
***************
*** 541,545 ****
(*env)->ReleaseByteArrayElements(env, arr, octets, 0);
! if (bind(fd, &si, sizeof(struct sockaddr_in)) == -1)
{ _javanet_throw_exception(env, IO_EXCEPTION, strerror(errno)); return; }
DBG("Past bind\n");
--- 541,545 ----
(*env)->ReleaseByteArrayElements(env, arr, octets, 0);
! if (bind(fd, (struct sockaddr *) &si, sizeof(struct sockaddr_in)) == -1)
{ _javanet_throw_exception(env, IO_EXCEPTION, strerror(errno)); return; }
DBG("Past bind\n");
***************
*** 547,551 ****
/* Update instance variables, specifically the local port number */
namelen = sizeof(struct sockaddr_in);
! getsockname(fd, &si, &namelen);
if (stream)
--- 547,551 ----
/* Update instance variables, specifically the local port number */
namelen = sizeof(struct sockaddr_in);
! getsockname(fd, (struct sockaddr *) &si, &namelen);
if (stream)
***************
*** 607,611 ****
/******* Do we need to look for EINTR? */
! newfd = accept(fd, &si, &addrlen);
if (newfd == -1)
{ _javanet_throw_exception(env, IO_EXCEPTION, "Internal Error"); return; }
--- 607,611 ----
/******* Do we need to look for EINTR? */
! newfd = accept(fd, (struct sockaddr *) &si, &addrlen);
if (newfd == -1)
{ _javanet_throw_exception(env, IO_EXCEPTION, "Internal Error"); return; }
***************
*** 615,619 ****
newfd);
! rc = getsockname(newfd, &si, &addrlen);
if (rc == -1)
{
--- 615,619 ----
newfd);
! rc = getsockname(newfd, (struct sockaddr *) &si, &addrlen);
if (rc == -1)
{
***************
*** 633,637 ****
addrlen = sizeof(struct sockaddr_in);
! rc = getpeername(newfd, &si, &addrlen);
if (rc == -1)
{
--- 633,637 ----
addrlen = sizeof(struct sockaddr_in);
! rc = getpeername(newfd, (struct sockaddr *) &si, &addrlen);
if (rc == -1)
{
***************
*** 698,702 ****
memset(&si, 0, sizeof(struct sockaddr_in));
si_len = sizeof(struct sockaddr_in);
! rc = recvfrom(fd, p + offset, len, 0, &si, &si_len);
}
--- 698,702 ----
memset(&si, 0, sizeof(struct sockaddr_in));
si_len = sizeof(struct sockaddr_in);
! rc = recvfrom(fd, p + offset, len, 0, (struct sockaddr *) &si, &si_len);
}
***************
*** 763,767 ****
DBG("Sending....\n");
! rc = sendto(fd, p + offset, len, 0, &si, sizeof(struct sockaddr_in));
}
--- 763,767 ----
DBG("Sending....\n");
! rc = sendto(fd, p + offset, len, 0, (struct sockaddr *) &si, sizeof(struct
sockaddr_in));
}
***************
*** 811,815 ****
optval = (*env)->CallBooleanMethod(env, val, mid);
! rc = setsockopt(fd, SOL_TCP, TCP_NODELAY, &optval, sizeof(int));
break;
--- 811,815 ----
optval = (*env)->CallBooleanMethod(env, val, mid);
! rc = setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, (void *) &optval, sizeof(int));
break;
***************
*** 836,840 ****
linger.l_onoff = 1;
}
! rc = setsockopt(fd, SOL_SOCKET, SO_LINGER, &linger,
sizeof(struct linger));
break;
--- 836,840 ----
linger.l_onoff = 1;
}
! rc = setsockopt(fd, SOL_SOCKET, SO_LINGER, (void *) &linger,
sizeof(struct linger));
break;
***************
*** 850,854 ****
optval = (*env)->CallIntMethod(env, val, mid);
! rc = setsockopt(fd, SOL_SOCKET, SO_TIMEOUT, &optval, sizeof(int));
#else
_javanet_throw_exception(env, SOCKET_EXCEPTION,
--- 850,854 ----
optval = (*env)->CallIntMethod(env, val, mid);
! rc = setsockopt(fd, SOL_SOCKET, SO_TIMEOUT, (void *) &optval, sizeof(int));
#else
_javanet_throw_exception(env, SOCKET_EXCEPTION,
***************
*** 867,871 ****
optval = (*env)->CallIntMethod(env, val, mid);
! rc = setsockopt(fd, SOL_IP, IP_TTL, &optval, sizeof(int));
break;
--- 867,871 ----
optval = (*env)->CallIntMethod(env, val, mid);
! rc = setsockopt(fd, IPPROTO_IP, IP_TTL, (void *) &optval, sizeof(int));
break;
***************
*** 879,883 ****
return;
! rc = setsockopt(fd, SOL_IP, IP_MULTICAST_IF, &si,
sizeof(struct sockaddr_in));
break;
--- 879,883 ----
return;
! rc = setsockopt(fd, IPPROTO_IP, IP_MULTICAST_IF, (void *) &si,
sizeof(struct sockaddr_in));
break;
***************
*** 919,923 ****
case SOCKOPT_TCP_NODELAY:
optlen = sizeof(optval);
! rc = getsockopt(fd, SOL_TCP, TCP_NODELAY, &optval, &optlen);
if (rc == -1)
{
--- 919,923 ----
case SOCKOPT_TCP_NODELAY:
optlen = sizeof(optval);
! rc = getsockopt(fd, IPPROTO_TCP, TCP_NODELAY, (void *) &optval, &optlen);
if (rc == -1)
{
***************
*** 939,943 ****
optlen = sizeof(struct linger);
! rc = getsockopt(fd, SOL_SOCKET, SO_LINGER, &linger, &optlen);
if (rc == -1)
{
--- 939,943 ----
optlen = sizeof(struct linger);
! rc = getsockopt(fd, SOL_SOCKET, SO_LINGER, (void *) &linger, &optlen);
if (rc == -1)
{
***************
*** 958,962 ****
optlen = sizeof(int);
! rc = getsockopt(fd, SOL_SOCKET, SO_TIMEOUT, &optval, &optlen);
#else
_javanet_throw_exception(env, SOCKET_EXCEPTION,
--- 958,962 ----
optlen = sizeof(int);
! rc = getsockopt(fd, SOL_SOCKET, SO_TIMEOUT, (void *) &optval, &optlen);
#else
_javanet_throw_exception(env, SOCKET_EXCEPTION,
***************
*** 978,982 ****
optlen = sizeof(int);
! rc = getsockopt(fd, SOL_IP, IP_TTL, &optval, &optlen);
if (rc == -1)
{
--- 978,982 ----
optlen = sizeof(int);
! rc = getsockopt(fd, IPPROTO_IP, IP_TTL, (void *) &optval, &optlen);
if (rc == -1)
{
***************
*** 993,997 ****
optlen = sizeof(struct sockaddr_in);
! rc = getsockopt(fd, SOL_IP, IP_MULTICAST_IF, &si, &optlen);
if (rc == -1)
{
--- 993,997 ----
optlen = sizeof(struct sockaddr_in);
! rc = getsockopt(fd, IPPROTO_IP, IP_MULTICAST_IF, (void *) &si, &optlen);
if (rc == -1)
{