diff options
author | Guilhem Lavaux <guilhem@kaffe.org> | 2006-06-10 20:26:36 +0000 |
---|---|---|
committer | Guilhem Lavaux <guilhem@kaffe.org> | 2006-06-10 20:26:36 +0000 |
commit | 935da65ae67c7ff74e5a02c198d6b4bcbaee8133 (patch) | |
tree | 2fe44bcdf396a5320b9660b75d81b31f79d362cb | |
parent | 2f94810a11e0e3cdeb4bed695a4bf9eb9ce41c34 (diff) | |
download | classpath-935da65ae67c7ff74e5a02c198d6b4bcbaee8133.tar.gz |
2006-06-10 Guilhem Lavaux <guilhem@kaffe.org>
* 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.
-rw-r--r-- | ChangeLog.native | 9 | ||||
-rw-r--r-- | native/jni/native-lib/cpio.c | 28 | ||||
-rw-r--r-- | native/jni/native-lib/cpnet.c | 2 | ||||
-rw-r--r-- | native/jni/native-lib/cpnet.h | 8 |
4 files changed, 43 insertions, 4 deletions
diff --git a/ChangeLog.native b/ChangeLog.native index 92940903b..e8dec7275 100644 --- a/ChangeLog.native +++ b/ChangeLog.native @@ -1,3 +1,12 @@ +2006-06-10 Guilhem Lavaux <guilhem@kaffe.org> + + * 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. + 2006-06-07 Guilhem Lavaux <guilhem@kaffe.org> * Merged HEAD as of 2006-06-06. diff --git a/native/jni/native-lib/cpio.c b/native/jni/native-lib/cpio.c index fbbea570d..be72ba114 100644 --- a/native/jni/native-lib/cpio.c +++ b/native/jni/native-lib/cpio.c @@ -43,6 +43,7 @@ exception statement from your version. */ #include <errno.h> #include <string.h> #include <sys/types.h> +#include <dirent.h> #include <jni.h> @@ -419,3 +420,30 @@ int cpio_rename (const char *old_name, const char *new_name) 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; +} diff --git a/native/jni/native-lib/cpnet.c b/native/jni/native-lib/cpnet.c index fe114ed90..4b4953ccb 100644 --- a/native/jni/native-lib/cpnet.c +++ b/native/jni/native-lib/cpnet.c @@ -180,6 +180,8 @@ jint cpnet_connect(JNIEnv *env UNUSED, jint fd, cpnet_address *addr) 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; diff --git a/native/jni/native-lib/cpnet.h b/native/jni/native-lib/cpnet.h index a4aa8f15c..52f68946e 100644 --- a/native/jni/native-lib/cpnet.h +++ b/native/jni/native-lib/cpnet.h @@ -189,10 +189,10 @@ static inline void cpnet_bytesToIPV4Address(cpnet_address *netaddr, jbyte *octet 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); } |