2 * Copyright 2000, International Business Machines Corporation and others.
5 * This software has been released under the terms of the IBM Public
6 * License. For details, see the LICENSE file in the top-level source
7 * directory or online at http://www.openafs.org/dl/license10.html
10 /* Copyright (C) 1994 Cazamar Systems, Inc. */
12 #include <afs/param.h>
24 void osi_LongToUID(long inval, UUID *outuidp)
26 /* generic UUID whose seconds field we'll never use again */
27 UUID genericCazamarUUID = { /* 7C45E3F8-5F73-101B-89A3-204C4F4F5020 */
31 {0x89, 0xa3, 0x20, 0x4C, 0x4F, 0x4F, 0x50, 0x20}
34 genericCazamarUUID.Data1 = inval;
35 memcpy(outuidp, &genericCazamarUUID, sizeof(UUID));
38 /* compare two UIDs in the dictionary ordering */
39 int osi_UIDCmp(UUID *uid1p, UUID *uid2p)
47 if (uid1p->Data1 < uid2p->Data1) return -1;
48 else if (uid1p->Data1 > uid2p->Data1) return 1;
50 if (uid1p->Data2 < uid2p->Data2) return -1;
51 else if (uid1p->Data2 > uid2p->Data2) return 1;
53 if (uid1p->Data3 < uid2p->Data3) return -1;
54 else if (uid1p->Data3 > uid2p->Data3) return 1;
62 if (v1 < v2) return -1;
63 else if (v1 > v2) return 1;
68 void * __RPC_API MIDL_user_allocate(size_t size)
70 return (void *) malloc(size);
73 void __RPC_API MIDL_user_free(void *p)
78 #if (_MSC_VER >= 1300)
79 LARGE_INTEGER /* WINAPI */ LargeIntegerAdd(LARGE_INTEGER a, LARGE_INTEGER b)
83 result.LowPart=a.LowPart+b.LowPart;
84 carry=(result.LowPart < b.LowPart) ? 1 : 0;
85 result.HighPart=a.HighPart+b.HighPart+ carry;
88 LARGE_INTEGER /* WINAPI */ LargeIntegerSubtract(LARGE_INTEGER a, LARGE_INTEGER b)
92 result.LowPart=a.LowPart-b.LowPart;
93 borrow=(result.LowPart > a.LowPart) ? 1 : 0;
94 result.HighPart=a.HighPart-b.HighPart- borrow;
97 LARGE_INTEGER /* WINAPI */ ExtendedLargeIntegerDivide(LARGE_INTEGER a, unsigned long b, unsigned long *remainder)
104 if (b == 0) { return result; }
105 if (b == 1) { *remainder = 0; return a; }
112 if (r1 > ULONG_MAX) /*XXX */;
113 result.HighPart=(LONG)(q1 >> 32);
114 result.LowPart=(DWORD)(q1 & 0xffffffff);
115 *remainder=(unsigned long)(r1 & 0xffffffff);
118 LARGE_INTEGER /* WINAPI */ LargeIntegerDivide(LARGE_INTEGER a, LARGE_INTEGER b, LARGE_INTEGER *remainder)
120 LARGE_INTEGER result;
121 ULONGLONG a1,b1,q1,r1;
125 if (b.HighPart == 0 && b.LowPart == 0) { return result; }
126 if (b.HighPart == 0 && b.LowPart == 1) {
127 remainder->HighPart = 0;
128 remainder->LowPart = 0;
140 result.HighPart=(LONG)(q1 >> 32);
141 result.LowPart=(DWORD)(q1 & 0xffffffff);
142 remainder->HighPart=(LONG)(r1 >> 32);
143 remainder->LowPart=(DWORD)(r1 & 0xffffffff);
147 LARGE_INTEGER /* WINAPI */ ConvertLongToLargeInteger(unsigned long a)
149 LARGE_INTEGER result;