cm_vnodeops.obj \
cm_dir.obj \
cm_utils.obj \
+ largeintdotnet.obj \
smb.obj \
smb3.obj \
smb_ioctl.obj \
#else
#ifdef _CRTAPI1
-void _CRTAPI1 main()
+void _CRTAPI1 main(void)
#else
void main()
#endif
--- /dev/null
+/*
+ * Copyright (C) 1998, 1989 Transarc Corporation - All rights reserved
+ *
+ * (C) COPYRIGHT IBM CORPORATION 1987, 1988
+ * LICENSED MATERIALS - PROPERTY OF IBM
+ *
+ */
+
+/* Copyright (C) 1994 Cazamar Systems, Inc. */
+
+#include <afs/param.h>
+#include <afs/stds.h>
+
+#include <windows.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <assert.h>
+#include <limits.h>
+
+#if (_MSC_VER >= 1300)
+LARGE_INTEGER LargeIntegerAdd(LARGE_INTEGER a, LARGE_INTEGER b)
+{
+ LARGE_INTEGER result;
+ int carry;
+ result.LowPart=a.LowPart+b.LowPart;
+ carry=(result.LowPart < b.LowPart) ? 1 : 0;
+ result.HighPart=a.HighPart+b.HighPart+ carry;
+ return result;
+}
+LARGE_INTEGER LargeIntegerSubtract(LARGE_INTEGER a, LARGE_INTEGER b)
+{
+ LARGE_INTEGER result;
+ int borrow;
+ result.LowPart=a.LowPart-b.LowPart;
+ borrow=(result.LowPart > a.LowPart) ? 1 : 0;
+ result.HighPart=a.HighPart-b.HighPart- borrow;
+ return result;
+}
+LARGE_INTEGER ExtendedLargeIntegerDivide(LARGE_INTEGER a, unsigned long b, unsigned long *remainder)
+{
+ LARGE_INTEGER result;
+ ULONGLONG a1,q1,r1;
+
+ result.HighPart=0;
+ result.LowPart=0;
+ if (b == 0) { return result; }
+ if (b == 1) { *remainder = 0; return a; }
+
+ a1=(a.HighPart << 32) | a.LowPart;
+ q1=a1/b;
+ r1=a1-(q1*b);
+ if (r1 > ULONG_MAX) /*XXX */;
+ result.HighPart=q1 >> 32;
+ result.LowPart=q1 & 0xffffffff;
+ *remainder=r1 & 0xffffffff;
+ return result;
+}
+LARGE_INTEGER LargeIntegerDivide(LARGE_INTEGER a, LARGE_INTEGER b, LARGE_INTEGER *remainder)
+{
+ LARGE_INTEGER result;
+ ULONGLONG a1,b1,q1,r1;
+
+ result.HighPart=0;
+ result.LowPart=0;
+ if (b.HighPart == 0 && b.LowPart == 0) { return result; }
+ if (b.HighPart == 0 && b.LowPart == 1) {
+ remainder->HighPart = 0;
+ remainder->LowPart = 0;
+ return a;
+ }
+
+ a1=(a.HighPart << 32) | a.LowPart;
+ b1=(b.HighPart << 32) | a.LowPart;
+ q1=a1/b1;
+ r1=a1-(q1*b1);
+ result.HighPart=q1 >> 32;
+ result.LowPart=q1 & 0xffffffff;
+ remainder->HighPart=r1 >> 32;
+ remainder->LowPart=r1 & 0xffffffff;
+ return result;
+}
+
+LARGE_INTEGER ConvertLongToLargeInteger(unsigned long a)
+{
+ LARGE_INTEGER result;
+ result.HighPart=0;
+ result.LowPart=a;
+ return result;
+}
+#endif
/* large int */
#ifndef DJGPP
#include <rpc.h>
+#if !defined(_MSC_VER) || (_MSC_VER < 1300)
#include <largeint.h>
+#endif
#include "osithrdnt.h"
#else /* DJGPP */
#include "largeint95.h"
#endif /* !DJGPP */
typedef LARGE_INTEGER osi_hyper_t;
+#if _MSC_VER >= 1300
+LARGE_INTEGER LargeIntegerAdd(LARGE_INTEGER a, LARGE_INTEGER b);
+LARGE_INTEGER LargeIntegerSubtract(LARGE_INTEGER a, LARGE_INTEGER b);
+LARGE_INTEGER ExtendedLargeIntegerDivide(LARGE_INTEGER a, unsigned long b, unsigned long *remainder);
+LARGE_INTEGER LargeIntegerDivide(LARGE_INTEGER a, LARGE_INTEGER b, LARGE_INTEGER *remainder);
+LARGE_INTEGER ConvertLongToLargeInteger(unsigned long a);
+#define LargeIntegerGreaterThan(a, b) \
+ ((a).HighPart > (b).HighPart || \
+ ((a).HighPart == (b).HighPart && (a).LowPart > (b).LowPart))
+
+#define LargeIntegerGreaterThanOrEqualTo(a, b) \
+ ((a).HighPart > (b).HighPart || \
+ ((a).HighPart == (b).HighPart && (a).LowPart >= (b).LowPart))
+
+#define LargeIntegerLessThan(a, b) \
+ ((a).HighPart < (b).HighPart || \
+ ((a).HighPart == (b).HighPart && (a).LowPart < (b).LowPart))
+
+#define LargeIntegerLessThanOrEqualTo(a, b) \
+ ((a).HighPart < (b).HighPart || \
+ ((a).HighPart == (b).HighPart && (a).LowPart <= (b).LowPart))
+
+#define LargeIntegerEqualTo(a, b) \
+ ((a).HighPart == (b).HighPart && (a).LowPart == (b).LowPart)
+
+#define LargeIntegerGreaterOrEqualToZero(a) ((a).HighPart >= 0)
+
+#define LargeIntegerLessThanZero(a) ((a).HighPart < 0)
+
+#define LargeIntegerNotEqualToZero(a) ((a).HighPart || (a).LowPart)
+#endif
#ifndef DJGPP
typedef GUID osi_uid_t;
#else /* DJGPP */
#define _OSISTATL_H_ENV_ 1
#include "osibasel.h"
+#if !defined(_MSC_VER) || (_MSC_VER < 1300)
#include <largeint.h>
+#endif
#include "osiqueue.h"
/* structure representing all information about someone holding a lock
#include <stdlib.h>
#include <stdio.h>
#include <assert.h>
+#include <limits.h>
#include <rpc.h>
#include "osiutils.h"
{
free(p);
}
+
+#if (_MSC_VER >= 1300)
+LARGE_INTEGER LargeIntegerAdd(LARGE_INTEGER a, LARGE_INTEGER b)
+{
+ LARGE_INTEGER result;
+ int carry;
+ result.LowPart=a.LowPart+b.LowPart;
+ carry=(result.LowPart < b.LowPart) ? 1 : 0;
+ result.HighPart=a.HighPart+b.HighPart+ carry;
+ return result;
+}
+LARGE_INTEGER LargeIntegerSubtract(LARGE_INTEGER a, LARGE_INTEGER b)
+{
+ LARGE_INTEGER result;
+ int borrow;
+ result.LowPart=a.LowPart-b.LowPart;
+ borrow=(result.LowPart > a.LowPart) ? 1 : 0;
+ result.HighPart=a.HighPart-b.HighPart- borrow;
+ return result;
+}
+LARGE_INTEGER ExtendedLargeIntegerDivide(LARGE_INTEGER a, unsigned long b, unsigned long *remainder)
+{
+ LARGE_INTEGER result;
+ ULONGLONG a1,q1,r1;
+
+ result.HighPart=0;
+ result.LowPart=0;
+ if (b == 0) { return result; }
+ if (b == 1) { *remainder = 0; return a; }
+
+ a1=(a.HighPart << 32) | a.LowPart;
+ q1=a1/b;
+ r1=a1-(q1*b);
+ if (r1 > ULONG_MAX) /*XXX */;
+ result.HighPart=q1 >> 32;
+ result.LowPart=q1 & 0xffffffff;
+ *remainder=r1 & 0xffffffff;
+ return result;
+}
+LARGE_INTEGER LargeIntegerDivide(LARGE_INTEGER a, LARGE_INTEGER b, LARGE_INTEGER *remainder)
+{
+ LARGE_INTEGER result;
+ ULONGLONG a1,b1,q1,r1;
+
+ result.HighPart=0;
+ result.LowPart=0;
+ if (b.HighPart == 0 && b.LowPart == 0) { return result; }
+ if (b.HighPart == 0 && b.LowPart == 1) {
+ remainder->HighPart = 0;
+ remainder->LowPart = 0;
+ return a;
+ }
+
+ a1=(a.HighPart << 32) | a.LowPart;
+ b1=(b.HighPart << 32) | a.LowPart;
+ q1=a1/b1;
+ r1=a1-(q1*b1);
+ result.HighPart=q1 >> 32;
+ result.LowPart=q1 & 0xffffffff;
+ remainder->HighPart=r1 >> 32;
+ remainder->LowPart=r1 & 0xffffffff;
+ return result;
+}
+
+LARGE_INTEGER ConvertLongToLargeInteger(unsigned long a)
+{
+ LARGE_INTEGER result;
+ result.HighPart=0;
+ result.LowPart=a;
+ return result;
+}
+#endif