Hi, Here are some missing stuff that I have detected by running mauve on the branch. cp*dir calls were not implemented (hmmm) . And there was a little trouble with typecasting when building an IPV4 address.
Guilhem. ChangeLog: 2006-06-10 Guilhem Lavaux <[EMAIL PROTECTED]> * native/jni/native-lib/cpio.c (cpio_openDir, cpio_closeDir, cpio_readDir): Implemented. * native/jni/native-lib/cpnet.h: (cpnet_bytesToIPV4Address): Fixed type casting to avoid being messed by signs in jbyte.
Index: native/jni/native-lib/cpio.c =================================================================== RCS file: /cvsroot/classpath/classpath/native/jni/native-lib/Attic/cpio.c,v retrieving revision 1.1.2.3 diff -u -r1.1.2.3 cpio.c --- native/jni/native-lib/cpio.c 25 Mar 2006 17:08:50 -0000 1.1.2.3 +++ native/jni/native-lib/cpio.c 10 Jun 2006 20:23:09 -0000 @@ -43,6 +43,7 @@ #include <errno.h> #include <string.h> #include <sys/types.h> +#include <dirent.h> #include <jni.h> @@ -419,3 +420,30 @@ return 0; } +int cpio_openDir (const char *dirname, void **handle) +{ + *handle = (void *)opendir(dirname); + if (*handle == NULL) + return errno; + + return 0; +} + +int cpio_closeDir (void *handle) +{ + closedir((DIR *)handle); + return 0; +} + + +int cpio_readDir (void *handle, const char **filename) +{ + struct dirent *dBuf; + + dBuf = readdir((DIR *)handle); + if (dBuf == NULL) + return errno; + + *filename = dBuf->d_name; + return 0; +} Index: native/jni/native-lib/cpnet.c =================================================================== RCS file: /cvsroot/classpath/classpath/native/jni/native-lib/Attic/cpnet.c,v retrieving revision 1.1.2.4 diff -u -r1.1.2.4 cpnet.c --- native/jni/native-lib/cpnet.c 10 May 2006 07:08:25 -0000 1.1.2.4 +++ native/jni/native-lib/cpnet.c 10 Jun 2006 20:23:09 -0000 @@ -180,6 +180,8 @@ int ret; /* TODO: implement socket time out */ + struct sockaddr_in *theaddr = (struct sockaddr_in *)addr->data; + ret = connect(fd, (struct sockaddr *)addr->data, addr->len); if (ret != 0) return errno; Index: native/jni/native-lib/cpnet.h =================================================================== RCS file: /cvsroot/classpath/classpath/native/jni/native-lib/Attic/cpnet.h,v retrieving revision 1.1.2.5 diff -u -r1.1.2.5 cpnet.h --- native/jni/native-lib/cpnet.h 19 Feb 2006 17:10:27 -0000 1.1.2.5 +++ native/jni/native-lib/cpnet.h 10 Jun 2006 20:23:09 -0000 @@ -189,10 +189,10 @@ jint sysaddr; struct sockaddr_in *ipaddr = (struct sockaddr_in *)&(netaddr->data[0]); - sysaddr = ((jint)octets[0]) << 24; - sysaddr |= ((jint)octets[1]) << 16; - sysaddr |= ((jint)octets[2]) << 8; - sysaddr |= ((jint)octets[3]); + sysaddr = ((jint)(unsigned char)octets[0]) << 24; + sysaddr |= ((jint)(unsigned char)octets[1]) << 16; + sysaddr |= ((jint)(unsigned char)octets[2]) << 8; + sysaddr |= ((jint)(unsigned char)octets[3]); ipaddr->sin_addr.s_addr = htonl(sysaddr); }