[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r18874 - gnunet/src/util
From: |
gnunet |
Subject: |
[GNUnet-SVN] r18874 - gnunet/src/util |
Date: |
Sat, 31 Dec 2011 21:26:14 +0100 |
Author: grothoff
Date: 2011-12-31 21:26:14 +0100 (Sat, 31 Dec 2011)
New Revision: 18874
Modified:
gnunet/src/util/disk.c
Log:
-LRN: 64-bit offsets for file locking on W32
Modified: gnunet/src/util/disk.c
===================================================================
--- gnunet/src/util/disk.c 2011-12-31 20:08:33 UTC (rev 18873)
+++ gnunet/src/util/disk.c 2011-12-31 20:26:14 UTC (rev 18874)
@@ -1273,13 +1273,18 @@
return fcntl (fh->fd, F_SETLK, &fl) != 0 ? GNUNET_SYSERR : GNUNET_OK;
#else
OVERLAPPED o;
+ OFF_T diff = lockEnd - lockStart;
+ DWORD diff_low, diff_high;
+ diff_low = (DWORD) (diff & 0xFFFFFFFF);
+ diff_high = (DWORD) ((diff >> (sizeof (DWORD) * 8)) & 0xFFFFFFFF);
memset (&o, 0, sizeof (OVERLAPPED));
- o.Offset = lockStart;
+ o.Offset = (DWORD) (lockStart & 0xFFFFFFFF);;
+ o.OffsetHigh = (DWORD) (((lockStart & ~0xFFFFFFFF) >> (sizeof (DWORD) * 8))
& 0xFFFFFFFF);
if (!LockFileEx
(fh->h, (excl ? LOCKFILE_EXCLUSIVE_LOCK : 0) | LOCKFILE_FAIL_IMMEDIATELY,
- 0, lockEnd - lockStart, 0, &o))
+ 0, diff_low, diff_high, &o))
{
SetErrnoFromWinError (GetLastError ());
return GNUNET_SYSERR;
@@ -1319,11 +1324,16 @@
return fcntl (fh->fd, F_SETLK, &fl) != 0 ? GNUNET_SYSERR : GNUNET_OK;
#else
OVERLAPPED o;
+ OFF_T diff = unlockEnd - unlockStart;
+ DWORD diff_low, diff_high;
+ diff_low = (DWORD) (diff & 0xFFFFFFFF);
+ diff_high = (DWORD) ((diff >> (sizeof (DWORD) * 8)) & 0xFFFFFFFF);
memset (&o, 0, sizeof (OVERLAPPED));
- o.Offset = unlockStart;
+ o.Offset = (DWORD) (unlockStart & 0xFFFFFFFF);;
+ o.OffsetHigh = (DWORD) (((unlockStart & ~0xFFFFFFFF) >> (sizeof (DWORD) *
8)) & 0xFFFFFFFF);
- if (!UnlockFileEx (fh->h, 0, unlockEnd - unlockStart, 0, &o))
+ if (!UnlockFileEx (fh->h, 0, diff_low, diff_high, &o))
{
SetErrnoFromWinError (GetLastError ());
return GNUNET_SYSERR;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r18874 - gnunet/src/util,
gnunet <=