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)
             {

Reply via email to