It's been a while, but probably oversight is the issue ... likely not paying close enough attention to the macros.
On Wed, Jul 8, 2009 at 3:51 AM, Oliver Deakin<oliver.dea...@googlemail.com> wrote: > Hi Nathan, > > I notice in the commit you made below that you remove a couple of the > "-FD_BIAS" which are required for zOS, e.g. > > - totalWritten = writev(fd-FD_BIAS, vectors, size); > + totalWritten = writev(fd, vectors, size); > > Was there a particular reason to remove them or was it just an oversight? > Are you happy for me to reinstate them (the commit breaks these functions on > zOS)? > > Regards, > Oliver > > ndbe...@apache.org wrote: >> >> Author: ndbeyer >> Date: Fri May 15 02:07:27 2009 >> New Revision: 774983 >> >> > > <snip> >> >> Modified: >> harmony/enhanced/classlib/trunk/modules/luni/src/main/native/luni/unix/OSFileSystemLinux32.c >> URL: >> http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/luni/src/main/native/luni/unix/OSFileSystemLinux32.c?rev=774983&r1=774982&r2=774983&view=diff >> >> ============================================================================== >> --- >> harmony/enhanced/classlib/trunk/modules/luni/src/main/native/luni/unix/OSFileSystemLinux32.c >> (original) >> +++ >> harmony/enhanced/classlib/trunk/modules/luni/src/main/native/luni/unix/OSFileSystemLinux32.c >> Fri May 15 02:07:27 2009 >> @@ -23,7 +23,7 @@ >> #include <fcntl.h> >> #include <unistd.h> >> #include <errno.h> >> -#if defined(FREEBSD) || defined(AIX) || defined(ZOS) >> +#if defined(FREEBSD) || defined(AIX) || defined(ZOS) || defined(MACOSX) >> #include <sys/types.h> >> #include <sys/socket.h> >> #else >> @@ -42,7 +42,7 @@ >> #define FD_BIAS 0 >> #endif /* ZOS */ >> -typedef int OSSOCKET; +typedef int OSSOCKET; >> typedef struct hysocket_struct >> { >> OSSOCKET sock; >> @@ -164,11 +164,11 @@ >> jboolean bufsCopied = JNI_FALSE; >> jboolean offsetsCopied = JNI_FALSE; >> jboolean lengthsCopied = JNI_FALSE; >> - jlong *bufs; + jlong *bufs; >> jint *offsets; >> jint *lengths; >> int i = 0; >> - long totalRead = 0; + long totalRead = 0; >> struct iovec *vectors = (struct iovec *)hymem_allocate_memory(size * >> sizeof(struct iovec)); >> if(vectors == NULL){ >> return -1; >> @@ -181,7 +181,7 @@ >> vectors[i].iov_len = lengths[i]; >> i++; >> } >> - totalRead = readv(fd-FD_BIAS, vectors, size); >> + totalRead = readv(fd, vectors, size); >> if(bufsCopied){ >> (*env)->ReleaseLongArrayElements(env, jbuffers, bufs, JNI_ABORT); >> } >> @@ -206,11 +206,11 @@ >> jboolean bufsCopied = JNI_FALSE; >> jboolean offsetsCopied = JNI_FALSE; >> jboolean lengthsCopied = JNI_FALSE; >> - jlong *bufs; + jlong *bufs; >> jint *offsets; >> jint *lengths; >> int i = 0; >> - long totalWritten = 0; + long totalWritten = 0; >> struct iovec *vectors = (struct iovec *)hymem_allocate_memory(size * >> sizeof(struct iovec)); >> if(vectors == NULL){ >> return -1; >> @@ -223,7 +223,7 @@ >> vectors[i].iov_len = lengths[i]; >> i++; >> } >> - totalWritten = writev(fd-FD_BIAS, vectors, size); >> + totalWritten = writev(fd, vectors, size); >> if(bufsCopied){ >> (*env)->ReleaseLongArrayElements(env, jbuffers, bufs, JNI_ABORT); >> } >> @@ -255,7 +255,7 @@ >> #if defined(AIX) || defined(ZOS) >> { >> struct sf_parms parms; >> - parms.file_descriptor = (int)fd-FD_BIAS; >> + parms.file_descriptor = (int)fd; >> parms.file_offset = (off64_t)offset; >> parms.file_bytes = count; >> parms.header_data = 0; >> @@ -269,10 +269,12 @@ >> The conversion here is to guarantee no value lost when converting >> offset to off_t >> */ >> off_t off = offset; >> -#if !defined(FREEBSD) >> - return sendfile(socket,(int)fd-FD_BIAS,(off_t *)&off,(size_t)count); >> -#else >> +#if defined(FREEBSD) >> return sendfile(fd-FD_BIAS, socket, off, (size_t)count, NULL, NULL, 0); >> +#elif defined(MACOSX) >> + return sendfile((int)fd-FD_BIAS, (int)socket, off, (off_t *)&count, >> NULL, 0); >> +#else >> + return sendfile(socket,(int)fd-FD_BIAS,(off_t *)&off,(size_t)count); >> #endif >> #endif >> } >> > > -- > Oliver Deakin > Unless stated otherwise above: > IBM United Kingdom Limited - Registered in England and Wales with number > 741598. Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire > PO6 3AU > >