You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by od...@apache.org on 2009/04/21 11:30:48 UTC
svn commit: r767087 -
/harmony/enhanced/classlib/trunk/modules/luni/src/main/native/luni/unix/OSFileSystemLinux32.c
Author: odeakin
Date: Tue Apr 21 09:30:47 2009
New Revision: 767087
URL: http://svn.apache.org/viewvc?rev=767087&view=rev
Log:
Make sure we adjust the file handle correctly for z/OS.
Modified:
harmony/enhanced/classlib/trunk/modules/luni/src/main/native/luni/unix/OSFileSystemLinux32.c
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=767087&r1=767086&r2=767087&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 Tue Apr 21 09:30:47 2009
@@ -36,6 +36,12 @@
#include "IFileSystem.h"
#include "OSFileSystem.h"
+#ifdef ZOS
+#define FD_BIAS 1000
+#else
+#define FD_BIAS 0
+#endif /* ZOS */
+
typedef int OSSOCKET;
typedef struct hysocket_struct
{
@@ -55,6 +61,7 @@
int rc;
int waitMode = (waitFlag) ? F_SETLKW : F_SETLK;
struct flock lock = { 0 };
+ jlong lockHandle = handle - FD_BIAS;
// If start or length overflow the max values we can represent, then max them out.
#if __WORDSIZE==32
@@ -85,7 +92,7 @@
do
{
- rc = fcntl (handle, waitMode, &lock);
+ rc = fcntl (lockHandle, waitMode, &lock);
}
while ((rc < 0) && (errno == EINTR));
@@ -100,6 +107,7 @@
{
int rc;
struct flock lock = { 0 };
+ jlong lockHandle = handle - FD_BIAS;
// If start or length overflow the max values we can represent, then max them out.
#if __WORDSIZE==32
@@ -121,7 +129,7 @@
do
{
- rc = fcntl (handle, F_SETLKW, &lock);
+ rc = fcntl (lockHandle, F_SETLKW, &lock);
}
while ((rc < 0) && (errno == EINTR));