]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Enhancements to entropy generation for the Win32 VFS.
authormistachkin <mistachkin@noemail.net>
Wed, 21 Jan 2015 00:48:46 +0000 (00:48 +0000)
committermistachkin <mistachkin@noemail.net>
Wed, 21 Jan 2015 00:48:46 +0000 (00:48 +0000)
FossilOrigin-Name: 26190b3c63e18f3116deeb59a58d9b5de48e8eea

Makefile.msc
manifest
manifest.uuid
src/os_win.c

index 4ebe9fd20cac901d378e20acc62d5d095cfbf988..1908794840cd957c1a38c38114b20979c279f283 100644 (file)
@@ -59,6 +59,12 @@ USE_ICU = 0
 USE_CRT_DLL = 0
 !ENDIF
 
+# Set this non-0 to link to the RPCRT4 library.
+#
+!IFNDEF USE_RPCRT4_LIB
+USE_RPCRT4_LIB = 0
+!ENDIF
+
 # Set this non-0 to generate assembly code listings for the source code
 # files.
 #
@@ -501,6 +507,12 @@ RCC = $(RCC) -DSQLITE_TEMP_STORE=1
 #
 REQ_FEATURE_FLAGS = $(REQ_FEATURE_FLAGS) -DSQLITE_MAX_TRIGGER_DEPTH=100
 
+# If we are linking to the RPCRT4 library, enable features that need it.
+#
+!IF $(USE_RPCRT4_LIB)!=0
+REQ_FEATURE_FLAGS = $(REQ_FEATURE_FLAGS) -DSQLITE_WIN32_USE_UUID=1
+!ENDIF
+
 # Add the required and optional SQLite compilation options into the command
 # lines used to invoke the MSVC code and resource compilers.
 #
@@ -564,6 +576,12 @@ LTRCOMPILE = $(RCC) -r
 LTLIB = lib.exe
 LTLINK = $(TCC) -Fe$@
 
+# If requested, link to the RPCRT4 library.
+#
+!IF $(USE_RPCRT4_LIB)!=0
+LTLINK = $(LTLINK) rpcrt4.lib
+!ENDIF
+
 # If a platform was set, force the linker to target that.
 # Note that the vcvars*.bat family of batch files typically
 # set this for you.  Otherwise, the linker will attempt
index 045fe9bb3af6ed72e087c02bf3632b4a9510e9b5..36deba019ab3febf365e2c5b672ae6673102cedf 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,9 +1,9 @@
-C Fix\sanother\sinstance\sof\san\sincorrect\svalue\sfor\sKeyInfo.nXField\son\sa\nsorting\sindex.\s\sTicket\s[f97c4637102a3ae72b79].
-D 2015-01-20T03:04:29.620
+C Enhancements\sto\sentropy\sgeneration\sfor\sthe\sWin32\sVFS.
+D 2015-01-21T00:48:46.472
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in 5407a688f4d77a05c18a8142be8ae5a2829dd610
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
-F Makefile.msc 4c057774e6138b9023fc16ec05639ddd3329b152
+F Makefile.msc 2b1cb8881bdefcb0a8ed41c34c81cfa630374222
 F Makefile.vxworks e1b65dea203f054e71653415bd8f96dcaed47858
 F README.md d58e3bebc0a4145e0f2a87994015fdb575a8e866
 F VERSION d846487aff892625eb8e75960234e7285f0462fe
@@ -215,7 +215,7 @@ F src/os.h 3e57a24e2794a94d3cf2342c6d9a884888cd96bf
 F src/os_common.h 92815ed65f805560b66166e3583470ff94478f04
 F src/os_setup.h c9d4553b5aaa6f73391448b265b89bed0b890faa
 F src/os_unix.c aefeaf915aaef9f81aa2645e0d5d06fa1bd83beb
-F src/os_win.c a5ac9e249ed0ca33de6de27898a08d313effc40c
+F src/os_win.c 8223e7db5b7c4a81d8b161098ac3959400434cdb
 F src/os_win.h eb7a47aa17b26b77eb97e4823f20a00b8bda12ca
 F src/pager.c 4120a49ecd37697e28f5ed807f470b9c0b88410c
 F src/pager.h c3476e7c89cdf1c6914e50a11f3714e30b4e0a77
@@ -1237,8 +1237,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh 0abfd78ceb09b7f7c27c688c8e3fe93268a13b32
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P f7201bb0cdc9e1425c68599b32434de2231dca36
-Q +dc711db44ec424a7850231a39088229c23238f1b
-R 62321acc2f9c598a0f3d605f6dbddb80
-U drh
-Z 8cb1f44c22f57ba114489669ef914874
+P 0077f64510f9b9ce90032df2696cb242d097ab84
+R 621342f470a9e0b129cd54918ae375f4
+U mistachkin
+Z 66078f9f30e92a431d6c7bd5ea435d81
index eb648245939cf430f9be6618f2aaaf2e99595829..2a540fd00c24aee950112290741c84bbd6e4d5f2 100644 (file)
@@ -1 +1 @@
-0077f64510f9b9ce90032df2696cb242d097ab84
\ No newline at end of file
+26190b3c63e18f3116deeb59a58d9b5de48e8eea
\ No newline at end of file
index c938a4d7dd8c983c2474d2f8b84bea3a033449ef..7463778a2fdb60ad178b9325e04e05b9a2245800 100644 (file)
@@ -1066,6 +1066,23 @@ static struct win_syscall {
         SQLITE_WIN32_VOLATILE*, LONG,LONG))aSyscall[76].pCurrent)
 #endif /* defined(InterlockedCompareExchange) */
 
+#if !SQLITE_OS_WINCE && !SQLITE_OS_WINRT && SQLITE_WIN32_USE_UUID
+  { "UuidCreate",               (SYSCALL)UuidCreate,             0 },
+#else
+  { "UuidCreate",               (SYSCALL)0,                      0 },
+#endif
+
+#define osUuidCreate ((RPC_STATUS(RPC_ENTRY*)(UUID*))aSyscall[77].pCurrent)
+
+#if !SQLITE_OS_WINCE && !SQLITE_OS_WINRT && SQLITE_WIN32_USE_UUID
+  { "UuidCreateSequential",     (SYSCALL)UuidCreateSequential,   0 },
+#else
+  { "UuidCreateSequential",     (SYSCALL)0,                      0 },
+#endif
+
+#define osUuidCreateSequential \
+        ((RPC_STATUS(RPC_ENTRY*)(UUID*))aSyscall[78].pCurrent)
+
 }; /* End of the overrideable system calls */
 
 /*
@@ -5344,6 +5361,22 @@ static int winRandomness(sqlite3_vfs *pVfs, int nBuf, char *zBuf){
     memcpy(&zBuf[n], &i, sizeof(i));
     n += sizeof(i);
   }
+#endif
+#if !SQLITE_OS_WINCE && !SQLITE_OS_WINRT && SQLITE_WIN32_USE_UUID
+  if( sizeof(UUID)<=nBuf-n ){
+    UUID id;
+    memset(&id, 0, sizeof(UUID));
+    osUuidCreate(&id);
+    memcpy(zBuf, &id, sizeof(UUID));
+    n += sizeof(UUID);
+  }
+  if( sizeof(UUID)<=nBuf-n ){
+    UUID id;
+    memset(&id, 0, sizeof(UUID));
+    osUuidCreateSequential(&id);
+    memcpy(zBuf, &id, sizeof(UUID));
+    n += sizeof(UUID);
+  }
 #endif
   return n;
 }
@@ -5522,7 +5555,7 @@ int sqlite3_os_init(void){
 
   /* Double-check that the aSyscall[] array has been constructed
   ** correctly.  See ticket [bb3a86e890c8e96ab] */
-  assert( ArraySize(aSyscall)==77 );
+  assert( ArraySize(aSyscall)==79 );
 
   /* get memory map allocation granularity */
   memset(&winSysInfo, 0, sizeof(SYSTEM_INFO));