diff --git a/ApacheConnector/ApacheConnector_VS71.vcproj b/ApacheConnector/ApacheConnector_VS71.vcproj index 6cda42192..3728cfb22 100644 --- a/ApacheConnector/ApacheConnector_VS71.vcproj +++ b/ApacheConnector/ApacheConnector_VS71.vcproj @@ -37,7 +37,8 @@ Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" CompileAs="0" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 ..\bin\ - obj\$(Configuration)\ + obj\ApacheConnector\$(Configuration)\ true ..\bin\ - obj\$(Configuration)\ + obj\ApacheConnector\$(Configuration)\ false mod_pocod mod_poco @@ -63,6 +63,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) libapr-1.lib;libaprutil-1.lib;libhttpd.lib;%(AdditionalDependencies) @@ -74,6 +75,7 @@ Console ..\lib\mod_pocod.lib MachineX86 + %(AdditionalOptions) @@ -96,6 +98,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) libapr-1.lib;libaprutil-1.lib;libhttpd.lib;%(AdditionalDependencies) @@ -108,6 +111,7 @@ true ..\lib\mod_poco.lib MachineX86 + %(AdditionalOptions) diff --git a/ApacheConnector/ApacheConnector_vs100.vcxproj.filters b/ApacheConnector/ApacheConnector_vs100.vcxproj.filters index 660580810..cb896aea7 100644 --- a/ApacheConnector/ApacheConnector_vs100.vcxproj.filters +++ b/ApacheConnector/ApacheConnector_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {b35eef93-0aad-40f5-9896-81336fb3f060} + {ada76c03-c73d-49ab-8688-7f3156366681} - {5f7f785a-7d85-48e8-b553-a4f744155516} + {b21033aa-9d53-422d-b1a3-fbed811c751b} diff --git a/ApacheConnector/ApacheConnector_vs110.vcxproj b/ApacheConnector/ApacheConnector_vs110.vcxproj index 7760bf915..5bd901f40 100644 --- a/ApacheConnector/ApacheConnector_vs110.vcxproj +++ b/ApacheConnector/ApacheConnector_vs110.vcxproj @@ -43,12 +43,12 @@ ..\bin\ - obj\$(Configuration)\ + obj\ApacheConnector\$(Configuration)\ true ..\bin\ - obj\$(Configuration)\ + obj\ApacheConnector\$(Configuration)\ false diff --git a/ApacheConnector/ApacheConnector_vs110.vcxproj.filters b/ApacheConnector/ApacheConnector_vs110.vcxproj.filters index 30e1e3c64..f34c2192f 100644 --- a/ApacheConnector/ApacheConnector_vs110.vcxproj.filters +++ b/ApacheConnector/ApacheConnector_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {24141156-1824-417c-99d8-f66a365931ca} + {766a61c2-76a3-4f17-95a1-9f22fa7675da} - {85c68977-69ae-4eb0-a829-2e7038866515} + {9d33935b-8217-4006-8e3d-14642fcfaccd} diff --git a/ApacheConnector/ApacheConnector_vs120.vcxproj b/ApacheConnector/ApacheConnector_vs120.vcxproj index 2b2495b43..9f901afac 100644 --- a/ApacheConnector/ApacheConnector_vs120.vcxproj +++ b/ApacheConnector/ApacheConnector_vs120.vcxproj @@ -43,12 +43,12 @@ ..\bin\ - obj\$(Configuration)\ + obj\ApacheConnector\$(Configuration)\ true ..\bin\ - obj\$(Configuration)\ + obj\ApacheConnector\$(Configuration)\ false diff --git a/ApacheConnector/ApacheConnector_vs120.vcxproj.filters b/ApacheConnector/ApacheConnector_vs120.vcxproj.filters index 6e7da00be..bb5cdd120 100644 --- a/ApacheConnector/ApacheConnector_vs120.vcxproj.filters +++ b/ApacheConnector/ApacheConnector_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {f6985a4d-a3d3-4c69-8911-93535a185c07} + {369121fa-f061-4bb7-932c-bf5fff70658a} - {e49a8aef-c252-4e45-a71a-68369734b75c} + {407e9e2c-6de0-483a-ac35-1a0803720f28} diff --git a/ApacheConnector/ApacheConnector_vs90.vcproj b/ApacheConnector/ApacheConnector_vs90.vcproj index ab2f014f9..bfa60927d 100644 --- a/ApacheConnector/ApacheConnector_vs90.vcproj +++ b/ApacheConnector/ApacheConnector_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="4" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 ..\bin64\ - obj64\$(Configuration)\ + obj64\ApacheConnector\$(Configuration)\ true ..\bin64\ - obj64\$(Configuration)\ + obj64\ApacheConnector\$(Configuration)\ false mod_poco64d mod_poco64 @@ -63,6 +63,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) libapr-1.lib;libaprutil-1.lib;libhttpd.lib;%(AdditionalDependencies) @@ -74,6 +75,7 @@ Console ..\lib64\mod_pocod.lib MachineX64 + %(AdditionalOptions) @@ -96,6 +98,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) libapr-1.lib;libaprutil-1.lib;libhttpd.lib;%(AdditionalDependencies) @@ -108,6 +111,7 @@ true ..\lib64\mod_poco.lib MachineX64 + %(AdditionalOptions) diff --git a/ApacheConnector/ApacheConnector_x64_vs100.vcxproj.filters b/ApacheConnector/ApacheConnector_x64_vs100.vcxproj.filters index a2694cb07..509738d8a 100644 --- a/ApacheConnector/ApacheConnector_x64_vs100.vcxproj.filters +++ b/ApacheConnector/ApacheConnector_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {943f369b-ddd8-46a6-b093-c20987f49f5c} + {df3c0bf1-8420-4fb6-82d9-adae8fd9e26d} - {b0e12e37-8346-4862-b245-73460cac9e9f} + {f3cba4b2-d566-4ad4-9014-a05ff7dbd80e} diff --git a/ApacheConnector/ApacheConnector_x64_vs110.vcxproj b/ApacheConnector/ApacheConnector_x64_vs110.vcxproj index 3058c7e22..5d896fdb9 100644 --- a/ApacheConnector/ApacheConnector_x64_vs110.vcxproj +++ b/ApacheConnector/ApacheConnector_x64_vs110.vcxproj @@ -43,12 +43,12 @@ ..\bin64\ - obj64\$(Configuration)\ + obj64\ApacheConnector\$(Configuration)\ true ..\bin64\ - obj64\$(Configuration)\ + obj64\ApacheConnector\$(Configuration)\ false diff --git a/ApacheConnector/ApacheConnector_x64_vs110.vcxproj.filters b/ApacheConnector/ApacheConnector_x64_vs110.vcxproj.filters index 7eb40d2b2..227af617e 100644 --- a/ApacheConnector/ApacheConnector_x64_vs110.vcxproj.filters +++ b/ApacheConnector/ApacheConnector_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {c2481db8-8fd6-452b-9f71-0722bcd42816} + {06df0dd2-49ac-437f-9291-af3ac2130304} - {2f89aade-1adf-4a27-a0d5-1c9447b5f439} + {b57a7b7f-78ae-4981-a9db-ed9cee44be34} diff --git a/ApacheConnector/ApacheConnector_x64_vs120.vcxproj b/ApacheConnector/ApacheConnector_x64_vs120.vcxproj index cd09f2bdd..da5dc6c5d 100644 --- a/ApacheConnector/ApacheConnector_x64_vs120.vcxproj +++ b/ApacheConnector/ApacheConnector_x64_vs120.vcxproj @@ -43,12 +43,12 @@ ..\bin64\ - obj64\$(Configuration)\ + obj64\ApacheConnector\$(Configuration)\ true ..\bin64\ - obj64\$(Configuration)\ + obj64\ApacheConnector\$(Configuration)\ false diff --git a/ApacheConnector/ApacheConnector_x64_vs120.vcxproj.filters b/ApacheConnector/ApacheConnector_x64_vs120.vcxproj.filters index caa57dd2c..eb5925293 100644 --- a/ApacheConnector/ApacheConnector_x64_vs120.vcxproj.filters +++ b/ApacheConnector/ApacheConnector_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {8842213f-d47d-4cf9-b0d7-adede314bc7a} + {d3b50a97-177c-4045-ba54-0bad310cfc86} - {c4f0473b-69bc-4d17-a287-0a33b12db13b} + {2bbbf573-8349-49d0-a852-19d7c8cd7aa8} diff --git a/ApacheConnector/ApacheConnector_x64_vs90.vcproj b/ApacheConnector/ApacheConnector_x64_vs90.vcproj index b8858747c..23ff4d4b6 100644 --- a/ApacheConnector/ApacheConnector_x64_vs90.vcproj +++ b/ApacheConnector/ApacheConnector_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\FormServer\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\FormServer\$(Configuration)\ false FormServerd FormServer @@ -63,6 +63,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) libapr-1.lib;libaprutil-1.lib;libhttpd.lib;%(AdditionalDependencies) @@ -73,6 +74,7 @@ bin\FormServerd.pdb Console MachineX86 + %(AdditionalOptions) @@ -95,6 +97,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) libapr-1.lib;libaprutil-1.lib;libhttpd.lib;%(AdditionalDependencies) @@ -105,6 +108,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/ApacheConnector/samples/FormServer/FormServer_vs100.vcxproj.filters b/ApacheConnector/samples/FormServer/FormServer_vs100.vcxproj.filters index 3540f058d..dfb555d48 100644 --- a/ApacheConnector/samples/FormServer/FormServer_vs100.vcxproj.filters +++ b/ApacheConnector/samples/FormServer/FormServer_vs100.vcxproj.filters @@ -6,7 +6,7 @@ cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx - {209bc63a-ce20-4978-ae58-4a6e787a1ddd} + {32cf0527-bff4-452e-8305-41a505ebec29} diff --git a/ApacheConnector/samples/FormServer/FormServer_vs110.vcxproj b/ApacheConnector/samples/FormServer/FormServer_vs110.vcxproj index 12865ca35..37c3eeeae 100644 --- a/ApacheConnector/samples/FormServer/FormServer_vs110.vcxproj +++ b/ApacheConnector/samples/FormServer/FormServer_vs110.vcxproj @@ -43,12 +43,12 @@ bin\ - obj\$(Configuration)\ + obj\FormServer\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\FormServer\$(Configuration)\ false diff --git a/ApacheConnector/samples/FormServer/FormServer_vs110.vcxproj.filters b/ApacheConnector/samples/FormServer/FormServer_vs110.vcxproj.filters index 756e31d62..44531d75a 100644 --- a/ApacheConnector/samples/FormServer/FormServer_vs110.vcxproj.filters +++ b/ApacheConnector/samples/FormServer/FormServer_vs110.vcxproj.filters @@ -6,7 +6,7 @@ cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx - {227f9697-5f24-43c5-9a15-66c13d3f0656} + {99c63a61-ec9a-4dbc-b9f6-abf57ded9054} diff --git a/ApacheConnector/samples/FormServer/FormServer_vs120.vcxproj b/ApacheConnector/samples/FormServer/FormServer_vs120.vcxproj index dfec03797..45cfb7a44 100644 --- a/ApacheConnector/samples/FormServer/FormServer_vs120.vcxproj +++ b/ApacheConnector/samples/FormServer/FormServer_vs120.vcxproj @@ -43,12 +43,12 @@ bin\ - obj\$(Configuration)\ + obj\FormServer\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\FormServer\$(Configuration)\ false diff --git a/ApacheConnector/samples/FormServer/FormServer_vs120.vcxproj.filters b/ApacheConnector/samples/FormServer/FormServer_vs120.vcxproj.filters index 13cff5d2d..4ff6ae47a 100644 --- a/ApacheConnector/samples/FormServer/FormServer_vs120.vcxproj.filters +++ b/ApacheConnector/samples/FormServer/FormServer_vs120.vcxproj.filters @@ -6,7 +6,7 @@ cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx - {eb128a6f-499f-4e0a-a8eb-789055cce213} + {d232bacd-176e-4268-915c-f2570c91204f} diff --git a/ApacheConnector/samples/FormServer/FormServer_vs71.vcproj b/ApacheConnector/samples/FormServer/FormServer_vs71.vcproj index 835056013..9da54d3ca 100644 --- a/ApacheConnector/samples/FormServer/FormServer_vs71.vcproj +++ b/ApacheConnector/samples/FormServer/FormServer_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\FormServer\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\FormServer\$(Configuration)\ false FormServerd FormServer @@ -63,6 +63,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) libapr-1.lib;libaprutil-1.lib;libhttpd.lib;%(AdditionalDependencies) @@ -73,6 +74,7 @@ bin64\FormServerd.pdb Console MachineX64 + %(AdditionalOptions) @@ -95,6 +97,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) libapr-1.lib;libaprutil-1.lib;libhttpd.lib;%(AdditionalDependencies) @@ -105,6 +108,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/ApacheConnector/samples/FormServer/FormServer_x64_vs100.vcxproj.filters b/ApacheConnector/samples/FormServer/FormServer_x64_vs100.vcxproj.filters index 0888be4b4..bdbb11408 100644 --- a/ApacheConnector/samples/FormServer/FormServer_x64_vs100.vcxproj.filters +++ b/ApacheConnector/samples/FormServer/FormServer_x64_vs100.vcxproj.filters @@ -6,7 +6,7 @@ cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx - {a1049034-f788-4075-b768-4ccd7f218431} + {4b05d421-e133-49c7-bef8-aa3bc91114ff} diff --git a/ApacheConnector/samples/FormServer/FormServer_x64_vs110.vcxproj b/ApacheConnector/samples/FormServer/FormServer_x64_vs110.vcxproj index 3a3fb6d9e..e74fc5719 100644 --- a/ApacheConnector/samples/FormServer/FormServer_x64_vs110.vcxproj +++ b/ApacheConnector/samples/FormServer/FormServer_x64_vs110.vcxproj @@ -43,12 +43,12 @@ bin64\ - obj64\$(Configuration)\ + obj64\FormServer\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\FormServer\$(Configuration)\ false diff --git a/ApacheConnector/samples/FormServer/FormServer_x64_vs110.vcxproj.filters b/ApacheConnector/samples/FormServer/FormServer_x64_vs110.vcxproj.filters index 889a183d0..46264c52a 100644 --- a/ApacheConnector/samples/FormServer/FormServer_x64_vs110.vcxproj.filters +++ b/ApacheConnector/samples/FormServer/FormServer_x64_vs110.vcxproj.filters @@ -6,7 +6,7 @@ cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx - {5c84b518-546a-40cd-9ce5-6edd742b9647} + {91be0359-8e5a-4723-a1fa-c039edbb5768} diff --git a/ApacheConnector/samples/FormServer/FormServer_x64_vs120.vcxproj b/ApacheConnector/samples/FormServer/FormServer_x64_vs120.vcxproj index 329ebcf34..698d81830 100644 --- a/ApacheConnector/samples/FormServer/FormServer_x64_vs120.vcxproj +++ b/ApacheConnector/samples/FormServer/FormServer_x64_vs120.vcxproj @@ -43,12 +43,12 @@ bin64\ - obj64\$(Configuration)\ + obj64\FormServer\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\FormServer\$(Configuration)\ false diff --git a/ApacheConnector/samples/FormServer/FormServer_x64_vs120.vcxproj.filters b/ApacheConnector/samples/FormServer/FormServer_x64_vs120.vcxproj.filters index cf3e82179..0dae3e14c 100644 --- a/ApacheConnector/samples/FormServer/FormServer_x64_vs120.vcxproj.filters +++ b/ApacheConnector/samples/FormServer/FormServer_x64_vs120.vcxproj.filters @@ -6,7 +6,7 @@ cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx - {b7a800a6-daf1-431a-aa49-fadac3f53190} + {5e015406-4ba2-4ce0-bb8f-03dd19c55d04} diff --git a/ApacheConnector/samples/FormServer/FormServer_x64_vs90.vcproj b/ApacheConnector/samples/FormServer/FormServer_x64_vs90.vcproj index 5ac59a93f..3e676aeee 100644 --- a/ApacheConnector/samples/FormServer/FormServer_x64_vs90.vcproj +++ b/ApacheConnector/samples/FormServer/FormServer_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\TimeServer\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TimeServer\$(Configuration)\ false TimeServerd TimeServer @@ -63,6 +63,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) libapr-1.lib;libaprutil-1.lib;libhttpd.lib;%(AdditionalDependencies) @@ -73,6 +74,7 @@ bin\TimeServerd.pdb Console MachineX86 + %(AdditionalOptions) @@ -95,6 +97,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) libapr-1.lib;libaprutil-1.lib;libhttpd.lib;%(AdditionalDependencies) @@ -105,6 +108,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/ApacheConnector/samples/TimeServer/TimeServer_vs100.vcxproj.filters b/ApacheConnector/samples/TimeServer/TimeServer_vs100.vcxproj.filters index a866d86d7..1616b0b6f 100644 --- a/ApacheConnector/samples/TimeServer/TimeServer_vs100.vcxproj.filters +++ b/ApacheConnector/samples/TimeServer/TimeServer_vs100.vcxproj.filters @@ -6,7 +6,7 @@ cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx - {612eae0d-ce89-4a1c-bd0e-f2aa6f213300} + {27f3a383-517d-47de-924f-5a61848c0d53} diff --git a/ApacheConnector/samples/TimeServer/TimeServer_vs110.vcxproj b/ApacheConnector/samples/TimeServer/TimeServer_vs110.vcxproj index f90f600bf..71e60ea21 100644 --- a/ApacheConnector/samples/TimeServer/TimeServer_vs110.vcxproj +++ b/ApacheConnector/samples/TimeServer/TimeServer_vs110.vcxproj @@ -43,12 +43,12 @@ bin\ - obj\$(Configuration)\ + obj\TimeServer\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TimeServer\$(Configuration)\ false diff --git a/ApacheConnector/samples/TimeServer/TimeServer_vs110.vcxproj.filters b/ApacheConnector/samples/TimeServer/TimeServer_vs110.vcxproj.filters index 808f2a938..7c73a3f31 100644 --- a/ApacheConnector/samples/TimeServer/TimeServer_vs110.vcxproj.filters +++ b/ApacheConnector/samples/TimeServer/TimeServer_vs110.vcxproj.filters @@ -6,7 +6,7 @@ cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx - {24980eb0-5ad3-4acc-9e07-8de774a05ba7} + {fc946f38-1cf4-4653-ae57-c032612741b9} diff --git a/ApacheConnector/samples/TimeServer/TimeServer_vs120.vcxproj b/ApacheConnector/samples/TimeServer/TimeServer_vs120.vcxproj index a320ab3a5..f5596f081 100644 --- a/ApacheConnector/samples/TimeServer/TimeServer_vs120.vcxproj +++ b/ApacheConnector/samples/TimeServer/TimeServer_vs120.vcxproj @@ -43,12 +43,12 @@ bin\ - obj\$(Configuration)\ + obj\TimeServer\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TimeServer\$(Configuration)\ false diff --git a/ApacheConnector/samples/TimeServer/TimeServer_vs120.vcxproj.filters b/ApacheConnector/samples/TimeServer/TimeServer_vs120.vcxproj.filters index fc571adde..e36e443be 100644 --- a/ApacheConnector/samples/TimeServer/TimeServer_vs120.vcxproj.filters +++ b/ApacheConnector/samples/TimeServer/TimeServer_vs120.vcxproj.filters @@ -6,7 +6,7 @@ cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx - {a73d0147-dda8-4fa6-9cb9-90d4d6d3f3c6} + {af72e47f-b1f4-48c9-ab45-4dd532f35f96} diff --git a/ApacheConnector/samples/TimeServer/TimeServer_vs71.vcproj b/ApacheConnector/samples/TimeServer/TimeServer_vs71.vcproj index a6577c80b..a4aaf01f3 100644 --- a/ApacheConnector/samples/TimeServer/TimeServer_vs71.vcproj +++ b/ApacheConnector/samples/TimeServer/TimeServer_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\TimeServer\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TimeServer\$(Configuration)\ false TimeServerd TimeServer @@ -63,6 +63,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) libapr-1.lib;libaprutil-1.lib;libhttpd.lib;%(AdditionalDependencies) @@ -73,6 +74,7 @@ bin64\TimeServerd.pdb Console MachineX64 + %(AdditionalOptions) @@ -95,6 +97,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) libapr-1.lib;libaprutil-1.lib;libhttpd.lib;%(AdditionalDependencies) @@ -105,6 +108,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/ApacheConnector/samples/TimeServer/TimeServer_x64_vs100.vcxproj.filters b/ApacheConnector/samples/TimeServer/TimeServer_x64_vs100.vcxproj.filters index 9659b5c14..1ee2107bc 100644 --- a/ApacheConnector/samples/TimeServer/TimeServer_x64_vs100.vcxproj.filters +++ b/ApacheConnector/samples/TimeServer/TimeServer_x64_vs100.vcxproj.filters @@ -6,7 +6,7 @@ cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx - {2539dff5-e15b-400f-b11d-a6667448b51e} + {3538e6be-fe86-4393-a9c9-3f81758a2a03} diff --git a/ApacheConnector/samples/TimeServer/TimeServer_x64_vs110.vcxproj b/ApacheConnector/samples/TimeServer/TimeServer_x64_vs110.vcxproj index ce53af5b8..862ad3f2b 100644 --- a/ApacheConnector/samples/TimeServer/TimeServer_x64_vs110.vcxproj +++ b/ApacheConnector/samples/TimeServer/TimeServer_x64_vs110.vcxproj @@ -43,12 +43,12 @@ bin64\ - obj64\$(Configuration)\ + obj64\TimeServer\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TimeServer\$(Configuration)\ false diff --git a/ApacheConnector/samples/TimeServer/TimeServer_x64_vs110.vcxproj.filters b/ApacheConnector/samples/TimeServer/TimeServer_x64_vs110.vcxproj.filters index c6b4b08db..f43d6e360 100644 --- a/ApacheConnector/samples/TimeServer/TimeServer_x64_vs110.vcxproj.filters +++ b/ApacheConnector/samples/TimeServer/TimeServer_x64_vs110.vcxproj.filters @@ -6,7 +6,7 @@ cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx - {bfaed7f5-e01b-43c0-a405-ce55a78a8376} + {fd9a7a72-530a-4c2a-b59f-d9f34ab2bc1d} diff --git a/ApacheConnector/samples/TimeServer/TimeServer_x64_vs120.vcxproj b/ApacheConnector/samples/TimeServer/TimeServer_x64_vs120.vcxproj index fbf559966..c77c29652 100644 --- a/ApacheConnector/samples/TimeServer/TimeServer_x64_vs120.vcxproj +++ b/ApacheConnector/samples/TimeServer/TimeServer_x64_vs120.vcxproj @@ -43,12 +43,12 @@ bin64\ - obj64\$(Configuration)\ + obj64\TimeServer\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TimeServer\$(Configuration)\ false diff --git a/ApacheConnector/samples/TimeServer/TimeServer_x64_vs120.vcxproj.filters b/ApacheConnector/samples/TimeServer/TimeServer_x64_vs120.vcxproj.filters index 4f00c10d3..9b4c9ae40 100644 --- a/ApacheConnector/samples/TimeServer/TimeServer_x64_vs120.vcxproj.filters +++ b/ApacheConnector/samples/TimeServer/TimeServer_x64_vs120.vcxproj.filters @@ -6,7 +6,7 @@ cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx - {cbef65cf-31e7-4923-82c7-1d300eda8ad0} + {b1c0d96b-3bb9-4f81-8c1f-cadb43837f26} diff --git a/ApacheConnector/samples/TimeServer/TimeServer_x64_vs90.vcproj b/ApacheConnector/samples/TimeServer/TimeServer_x64_vs90.vcproj index b4710fb6a..fa417519e 100644 --- a/ApacheConnector/samples/TimeServer/TimeServer_x64_vs90.vcproj +++ b/ApacheConnector/samples/TimeServer/TimeServer_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 ..\bin\ - obj\$(Configuration)\ + obj\CppParser\$(Configuration)\ true ..\bin\ - obj\$(Configuration)\ + obj\CppParser\$(Configuration)\ false ..\lib\ - obj\$(Configuration)\ + obj\CppParser\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\CppParser\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\CppParser\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\CppParser\$(Configuration)\ PocoCppParserd PocoCppParsermdd PocoCppParsermtd @@ -119,6 +119,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) @@ -130,6 +131,7 @@ Console ..\lib\PocoCppParserd.lib MachineX86 + %(AdditionalOptions) @@ -152,6 +154,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) @@ -164,6 +167,7 @@ true ..\lib\PocoCppParser.lib MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib\PocoCppParsermtd.lib @@ -210,6 +215,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib\PocoCppParsermt.lib @@ -234,6 +240,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib\PocoCppParsermdd.lib @@ -260,6 +267,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) diff --git a/CppParser/CppParser_vs100.vcxproj.filters b/CppParser/CppParser_vs100.vcxproj.filters index f22794922..e55bc39f5 100644 --- a/CppParser/CppParser_vs100.vcxproj.filters +++ b/CppParser/CppParser_vs100.vcxproj.filters @@ -2,31 +2,31 @@ - {9f4a6f27-bd06-4f26-8397-6eb7e4ad2ec9} + {a9463697-75fb-44b3-9d86-04c6407c0040} - {3318b9f4-5975-464a-abe9-daff81bcb26a} + {c8422545-1670-4f01-813b-9b9081061b4a} - {39b67b11-900d-4e5f-ac08-5359e048c1b4} + {da0b1a2d-27a2-4275-a947-9de92bde45e3} - {26dd4d56-e131-4e38-b0a7-c8044b604cc9} + {a5003f5b-3897-4a3a-ab52-0fb112924809} - {422e5157-748d-4656-9202-d7c7e6df9fe5} + {bfbca69d-b682-4b1b-9792-75e0d63a4bc6} - {d0edc27c-7001-45e9-8209-a1f1ea2fed40} + {14ba14d9-fcf5-4273-a20d-4a08d25d9c0e} - {20a9aedd-4896-4823-aa51-1660fcda8f00} + {4c81fd20-0201-4aa8-9e26-36359f41d372} - {2a127470-866f-4b5e-9d8e-4bceda146dde} + {c0b19b92-654e-4f67-81fa-f1dd6ae8e7d1} - {cc936f9f-c2af-4680-bf2d-192e61e5fcd5} + {64f786ed-be9d-4468-afa5-bd7aaf9a8904} diff --git a/CppParser/CppParser_vs110.vcxproj b/CppParser/CppParser_vs110.vcxproj index 82c522af1..1b5ce29d2 100644 --- a/CppParser/CppParser_vs110.vcxproj +++ b/CppParser/CppParser_vs110.vcxproj @@ -95,29 +95,29 @@ ..\bin\ - obj\$(Configuration)\ + obj\CppParser\$(Configuration)\ true ..\bin\ - obj\$(Configuration)\ + obj\CppParser\$(Configuration)\ false ..\lib\ - obj\$(Configuration)\ + obj\CppParser\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\CppParser\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\CppParser\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\CppParser\$(Configuration)\ diff --git a/CppParser/CppParser_vs110.vcxproj.filters b/CppParser/CppParser_vs110.vcxproj.filters index 7380f5c8b..9348245d5 100644 --- a/CppParser/CppParser_vs110.vcxproj.filters +++ b/CppParser/CppParser_vs110.vcxproj.filters @@ -2,31 +2,31 @@ - {32507dce-f373-464f-bdd0-a314490d53a6} + {5db2f3e7-1070-478f-bf7d-7aaa8a3d4355} - {43bd78b2-17f2-4afd-a222-0e89a7b2c193} + {c12aa8d6-ceb5-40be-9cc8-80d88b97332e} - {8e35d146-0ccf-4096-87d0-689002ad4418} + {92f79b7f-b650-4897-a9b8-33531292b192} - {bb86f6f5-9a62-4d48-9ab8-0ac4fced21a7} + {02a1641c-dcb7-479e-b7db-5bff7f29ecb3} - {6ad36d07-6c9e-46d5-971b-f52298eb7ee0} + {5c90d18c-1297-490b-8565-c26828751533} - {378a67aa-8ebe-425a-9f09-a563d92b3b85} + {4daf5b5e-7689-40f6-bc20-789f4ab10c26} - {bc32a97d-d355-449a-934f-7be7cdfc5dfc} + {481b8714-a1e7-4fa1-af1a-0dd868b181f4} - {1284363b-c7f9-4347-94aa-d68e89b4a533} + {b081bb63-c9b5-4c69-a5ee-7eae857f2345} - {ca44a19d-258a-443b-932c-235311b8a1af} + {5db81461-285e-4c36-9aa0-aee6b1d5b990} diff --git a/CppParser/CppParser_vs120.vcxproj b/CppParser/CppParser_vs120.vcxproj index 9356135be..4f8f74249 100644 --- a/CppParser/CppParser_vs120.vcxproj +++ b/CppParser/CppParser_vs120.vcxproj @@ -95,29 +95,29 @@ ..\bin\ - obj\$(Configuration)\ + obj\CppParser\$(Configuration)\ true ..\bin\ - obj\$(Configuration)\ + obj\CppParser\$(Configuration)\ false ..\lib\ - obj\$(Configuration)\ + obj\CppParser\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\CppParser\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\CppParser\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\CppParser\$(Configuration)\ diff --git a/CppParser/CppParser_vs120.vcxproj.filters b/CppParser/CppParser_vs120.vcxproj.filters index 4a69213fb..71d3a0b63 100644 --- a/CppParser/CppParser_vs120.vcxproj.filters +++ b/CppParser/CppParser_vs120.vcxproj.filters @@ -2,31 +2,31 @@ - {91578aad-23b6-4be4-9329-281b3dad8360} + {f00e90cf-a0f9-4bbc-8d89-5fa7125742b3} - {1fb967a2-b98f-4707-b35c-059b98360e11} + {80fde2d0-9b26-4ec4-bb46-dbd1599c9538} - {377a0ba0-f43c-49b1-a00e-7881e3da18ce} + {9966f55a-2873-44b5-b33f-7742ef9b3366} - {1c767279-1516-48ab-90c7-c23475125b23} + {b73c1bd3-3476-42a5-b054-8ebbcb561ce9} - {e9b01f5c-0a29-4b8a-ae39-fbc4f28593c8} + {32501c49-5c67-44ad-b1dc-1ceb63bb3553} - {f2955d53-ac88-4b64-a7c5-08a3d5f88847} + {f40b15ba-94cf-4f2b-8309-3d2a904c3126} - {02d7e603-5346-4b5f-a0c2-816c3d6bc202} + {841ea1dc-5975-4eb5-aef0-8ce558872a83} - {41142f6d-7aea-4e56-a0d6-1feea3fe26a0} + {958f6f4e-1b1b-4104-b434-02182d930632} - {c435f79b-a6a2-4d2f-9ea7-0ddb299505c6} + {c469463c-251c-442a-a291-85f0ffc8a88f} diff --git a/CppParser/CppParser_vs71.vcproj b/CppParser/CppParser_vs71.vcproj index 7dca40ae9..3ad994227 100644 --- a/CppParser/CppParser_vs71.vcproj +++ b/CppParser/CppParser_vs71.vcproj @@ -37,7 +37,8 @@ Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" CompileAs="0" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> @@ -274,7 +280,8 @@ Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" CompileAs="0" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> diff --git a/CppParser/CppParser_vs80.vcproj b/CppParser/CppParser_vs80.vcproj index 10262b3b2..0449578bb 100644 --- a/CppParser/CppParser_vs80.vcproj +++ b/CppParser/CppParser_vs80.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="4" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 ..\bin64\ - obj64\$(Configuration)\ + obj64\CppParser\$(Configuration)\ true ..\bin64\ - obj64\$(Configuration)\ + obj64\CppParser\$(Configuration)\ false ..\lib64\ - obj64\$(Configuration)\ + obj64\CppParser\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\CppParser\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\CppParser\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\CppParser\$(Configuration)\ PocoCppParser64d PocoCppParsermdd PocoCppParsermtd @@ -119,6 +119,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) @@ -130,6 +131,7 @@ Console ..\lib64\PocoCppParserd.lib MachineX64 + %(AdditionalOptions) @@ -152,6 +154,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) @@ -164,6 +167,7 @@ true ..\lib64\PocoCppParser.lib MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib64\PocoCppParsermtd.lib @@ -210,6 +215,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib64\PocoCppParsermt.lib @@ -234,6 +240,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib64\PocoCppParsermdd.lib @@ -259,6 +266,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib64\PocoCppParsermd.lib diff --git a/CppParser/CppParser_x64_vs100.vcxproj.filters b/CppParser/CppParser_x64_vs100.vcxproj.filters index 54d1f8153..291f0817c 100644 --- a/CppParser/CppParser_x64_vs100.vcxproj.filters +++ b/CppParser/CppParser_x64_vs100.vcxproj.filters @@ -2,31 +2,31 @@ - {59b3a40b-1431-4053-9cbd-59e48576b624} + {687bac2f-20a6-4c7b-a2e3-b1c3d8a1ef9c} - {d978112a-27fd-463f-b71c-cd237a515c5b} + {84e36484-a648-473a-b93f-84cde78e81f8} - {fb7ba022-7e99-4021-95a5-e31fe930fe32} + {0aba3e69-df36-4339-8f6f-b33ff733a1a6} - {badc08b1-e402-4c81-8757-93c5943b28ea} + {f49ce8ed-031d-4aae-8c54-b07be1dae5f4} - {d5c6c527-a5b0-4404-a737-746b22e166ad} + {6f4b3d2e-61ec-4d75-b2b5-90b970fcf928} - {85e8d888-41a1-47e8-b7aa-84b24cdde5ab} + {9d64b570-6a61-42bd-a0ed-af3830856957} - {1c537d23-d6e5-42d2-abce-d935f240af7d} + {eb0cc111-b375-4e29-a08e-6490ebb86c69} - {84aee57f-59e2-4de0-a2d5-45eac9f1da17} + {4c896d00-ac81-43a2-93d1-a97a041d21d4} - {0f8d7982-c07e-4469-a48a-7c2172379796} + {95dffc4b-3415-4b19-811c-03f24028c806} diff --git a/CppParser/CppParser_x64_vs110.vcxproj b/CppParser/CppParser_x64_vs110.vcxproj index 5369d7ee2..a13a99cac 100644 --- a/CppParser/CppParser_x64_vs110.vcxproj +++ b/CppParser/CppParser_x64_vs110.vcxproj @@ -95,29 +95,29 @@ ..\bin64\ - obj64\$(Configuration)\ + obj64\CppParser\$(Configuration)\ true ..\bin64\ - obj64\$(Configuration)\ + obj64\CppParser\$(Configuration)\ false ..\lib64\ - obj64\$(Configuration)\ + obj64\CppParser\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\CppParser\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\CppParser\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\CppParser\$(Configuration)\ diff --git a/CppParser/CppParser_x64_vs110.vcxproj.filters b/CppParser/CppParser_x64_vs110.vcxproj.filters index aed774931..16910d65f 100644 --- a/CppParser/CppParser_x64_vs110.vcxproj.filters +++ b/CppParser/CppParser_x64_vs110.vcxproj.filters @@ -2,31 +2,31 @@ - {f7b4f6ad-2580-4528-ac17-3ee368eafdce} + {52788e01-cb3c-4d2a-a0c1-07e201a51284} - {c479411d-b981-4a5c-ac79-26d2e3332cc0} + {829280e9-9744-4d75-ad35-1d7f9e21bcbe} - {36986a08-529c-4ad0-a048-9be54b69621e} + {ebe963d7-6d61-40e8-a8c9-f0694c87365e} - {514072b2-929b-4519-ad74-937077afd27e} + {f1bfeed1-804d-4ddf-ab7c-c54b8f3d7722} - {df7a4b61-cf8e-4bbf-b0d9-052db6f3b08c} + {8375a9e2-ae03-4a6f-ae1d-2ca674a7b18a} - {07682309-537f-41db-a041-f9e437110f8a} + {b5fa48fd-bc30-47c1-910a-a26151787570} - {c58448e2-47c4-4270-9464-4485d6acc17b} + {af00012a-869e-42e8-beea-42df40c76027} - {faf0b1f7-d16c-430f-bee3-69bcf29af95f} + {7f21ea9e-0559-466b-a023-189c324e40c6} - {d02bd71d-b369-4d10-a09b-2e7cd74cb74a} + {54b9cf26-8ff2-4258-977c-d837d674a50c} diff --git a/CppParser/CppParser_x64_vs120.vcxproj b/CppParser/CppParser_x64_vs120.vcxproj index 7c0b315e9..e32d21977 100644 --- a/CppParser/CppParser_x64_vs120.vcxproj +++ b/CppParser/CppParser_x64_vs120.vcxproj @@ -95,29 +95,29 @@ ..\bin64\ - obj64\$(Configuration)\ + obj64\CppParser\$(Configuration)\ true ..\bin64\ - obj64\$(Configuration)\ + obj64\CppParser\$(Configuration)\ false ..\lib64\ - obj64\$(Configuration)\ + obj64\CppParser\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\CppParser\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\CppParser\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\CppParser\$(Configuration)\ diff --git a/CppParser/CppParser_x64_vs120.vcxproj.filters b/CppParser/CppParser_x64_vs120.vcxproj.filters index d80458f35..f5c9f6003 100644 --- a/CppParser/CppParser_x64_vs120.vcxproj.filters +++ b/CppParser/CppParser_x64_vs120.vcxproj.filters @@ -2,31 +2,31 @@ - {6bf8ffe9-daba-4d32-a670-31a4e820ef0c} + {4fb7b132-64e2-4f2d-a279-8bd2faba58a8} - {528a60db-7d4b-4583-a677-8a0923a8978d} + {e77d13c3-7e56-4ab7-998e-c08b21843721} - {a1e1bc4c-79c3-4c89-9db6-6b653e66891c} + {2a53d177-d7f1-4045-bea1-3222d3b5138a} - {75ac99fa-3fa6-4a88-b8de-777589f60f9a} + {719d51fd-92ba-4631-a604-d193c0608727} - {bb964771-e066-44d4-b2c2-7e2c62d77d22} + {ae651b5e-740a-4871-a750-0e0d6d1d8ddf} - {cbece6a1-85a4-4179-9b2d-1870af695376} + {615c2469-4614-45db-8586-3a6eb73be9df} - {e6cbd57a-e950-451c-831c-4fc42846117d} + {08a38918-12d2-4739-b3a1-e8e2ecb67d0a} - {4b3e2283-8f99-48c1-bfdf-dc9fecf06fad} + {7c89a12c-136b-45f1-b002-97e44b25d29c} - {4dd7ea79-6111-44ea-9adb-7ce96cc67e9c} + {f2292a14-36b6-454a-abde-4ec7e3bb3ea1} diff --git a/CppParser/CppParser_x64_vs90.vcproj b/CppParser/CppParser_x64_vs90.vcproj index c13bec561..29f11eac5 100644 --- a/CppParser/CppParser_x64_vs90.vcproj +++ b/CppParser/CppParser_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false TestSuited TestSuited @@ -129,6 +129,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitd.lib;WinTestRunnerd.lib;%(AdditionalDependencies) @@ -139,6 +140,7 @@ bin\TestSuited.pdb Windows MachineX86 + %(AdditionalOptions) @@ -161,6 +163,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnit.lib;WinTestRunner.lib;%(AdditionalDependencies) @@ -171,6 +174,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -191,6 +195,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmtd.lib;WinTestRunnermtd.lib;iphlpapi.lib;winmm.lib;nafxcwd.lib;libcmtd.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -202,6 +207,7 @@ bin\static_mt\TestSuited.pdb Windows MachineX86 + %(AdditionalOptions) @@ -224,6 +230,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmt.lib;WinTestRunnermt.lib;iphlpapi.lib;winmm.lib;nafxcw.lib;libcmt.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -235,6 +242,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -255,6 +263,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmdd.lib;WinTestRunnermdd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -265,6 +274,7 @@ bin\static_md\TestSuited.pdb Windows MachineX86 + %(AdditionalOptions) @@ -287,6 +297,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmd.lib;WinTestRunnermd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -297,6 +308,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/CppParser/testsuite/TestSuite_vs100.vcxproj.filters b/CppParser/testsuite/TestSuite_vs100.vcxproj.filters index 0f2001a1c..a3be2c6f9 100644 --- a/CppParser/testsuite/TestSuite_vs100.vcxproj.filters +++ b/CppParser/testsuite/TestSuite_vs100.vcxproj.filters @@ -2,37 +2,37 @@ - {9d693b7c-4385-4386-b87f-7d739c7d36f1} + {e6ea549b-9378-45c7-8fd2-e8ec688a26ca} - {4f19253e-d46c-4911-8022-add406485eb7} + {9c7b5655-0329-45f2-9fa3-7a340e8eb8d7} - {ad113469-57b0-4360-8a0f-102df64e3a7a} + {e4ca0221-5def-45fd-84a6-0e5022044f73} - {a2f56498-68df-4e86-bc94-5be9933a4e96} + {c0d7c240-6b81-4338-8fdb-ad3d96b30b09} - {a25af760-4e4c-4dcc-ae41-ff59d65838e9} + {e603399f-d9ac-484a-aea9-db17bec710a5} - {0fb54581-608e-491f-b67a-463b062c71d4} + {f77b173b-f839-429c-a9f4-767cba223392} - {df1ca66c-1f8b-4749-9991-a061a8e4b81f} + {b39d45b0-8a36-4537-93ab-9251af760fe8} - {6c29be2e-00ce-4795-b698-eac7eac526c5} + {2029ffc4-aa7f-46b5-94cd-5d21a4f4cf13} - {286bf0ca-0798-46dc-be7c-1f98158e8ba4} + {4bd639a0-e158-482b-842d-bf4b665afcda} - {8875ba07-1d4d-46c8-b8d0-2310f478af08} + {caa4ca11-1481-49d0-8da9-0072c2313823} - {749dfdbb-b8a6-47e0-a12f-74a90bef5d8c} + {75aa8473-46ff-4e37-96b6-bd5f41c627b0} diff --git a/CppParser/testsuite/TestSuite_vs110.vcxproj b/CppParser/testsuite/TestSuite_vs110.vcxproj index 42fff38ab..ed368ef37 100644 --- a/CppParser/testsuite/TestSuite_vs110.vcxproj +++ b/CppParser/testsuite/TestSuite_vs110.vcxproj @@ -101,32 +101,32 @@ bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false diff --git a/CppParser/testsuite/TestSuite_vs110.vcxproj.filters b/CppParser/testsuite/TestSuite_vs110.vcxproj.filters index cd5131bcc..daa23b5ae 100644 --- a/CppParser/testsuite/TestSuite_vs110.vcxproj.filters +++ b/CppParser/testsuite/TestSuite_vs110.vcxproj.filters @@ -2,37 +2,37 @@ - {a565581f-f406-4d8d-a083-293530cf96ca} + {2cef0995-8f3d-4015-b8c2-f2545eea0a89} - {abd8e8ba-f4df-4ba2-8bfd-76aa394d303b} + {48133ebd-1c25-4652-a5a3-41350d53ca46} - {95d90a46-c19f-4792-9137-3981e8fa335d} + {75544412-9373-4ac5-8da5-6f9bf8be2ab9} - {6868662b-a23c-4665-a459-2559ff3c24d0} + {376c96b3-ebca-4ffc-91a4-ab519aae0ac0} - {0c17ba6e-d547-4f2f-a631-ec3b18b98806} + {1db77350-d574-4a3a-b160-431246b91175} - {2b1666ba-3dee-407a-832c-52c0aeef14ec} + {978d0145-7ddb-4270-bdf2-ec8545994836} - {7858b874-d03a-49f7-8776-ab2aff36176e} + {3de63bac-ac0d-4d20-b948-ffd495d1ffe4} - {ee905107-0a4e-4137-8c87-99375035f093} + {8bc666ef-0743-499f-8c7a-8302243d89b2} - {6b149c49-2fb6-4084-9536-f6d3f6e8ca08} + {529816ac-3ef6-43cc-9c8c-dc3a22c9ab9a} - {b0ea20b4-6f19-41f5-a4b1-f94b45640e88} + {0e1cc4b2-7de5-4734-92b5-2158f5b3b061} - {9a6304bc-640b-49c3-a525-13f443b2c58f} + {9b887998-56b4-43e9-9859-12093b632ec3} diff --git a/CppParser/testsuite/TestSuite_vs120.vcxproj b/CppParser/testsuite/TestSuite_vs120.vcxproj index 8f40d0053..9cf933fcf 100644 --- a/CppParser/testsuite/TestSuite_vs120.vcxproj +++ b/CppParser/testsuite/TestSuite_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false diff --git a/CppParser/testsuite/TestSuite_vs120.vcxproj.filters b/CppParser/testsuite/TestSuite_vs120.vcxproj.filters index a9188ad62..248ee5cab 100644 --- a/CppParser/testsuite/TestSuite_vs120.vcxproj.filters +++ b/CppParser/testsuite/TestSuite_vs120.vcxproj.filters @@ -2,37 +2,37 @@ - {7dbdf812-4651-4b13-a068-5e719dc37052} + {c72af50b-b8d8-4f05-8105-a67dca7a21d7} - {758b9a2b-ae09-41b0-a5a5-3f7762430650} + {7fff07a7-0f9d-4dff-b93c-a35d0a403519} - {d3dd6d2f-b16f-415c-b196-016bcafde200} + {72a46c75-7263-473a-9792-af734e1f0dc2} - {4456cefc-b1a8-4e47-9e4a-3a11826155e8} + {ad54deea-3678-4254-b339-2f5c628a1ff1} - {7e4cc3f1-1cae-48d3-84a8-8fd6769a802f} + {e305862b-5024-47a2-8a36-4980148bd7f8} - {85483098-5b7f-4d83-a0ee-5ba31f74bc53} + {cf1a18b3-f450-442b-899e-3418649d0a0a} - {ffad6c2c-e2ee-4475-bd77-626478d30bd1} + {3fc4fabb-4c0d-4aad-95af-d43d6606e5a0} - {4604cc84-23ff-4736-a664-2fed9dcf108e} + {1a5fe90e-171b-4cb5-a04b-539f85f0ac45} - {8646c36a-6599-497b-ba9f-0dda029371d0} + {6e3c72ab-4a74-4a1b-a8a2-70924291349d} - {afbabf73-54a7-405b-b01f-70ea531741f8} + {d9cc7eb6-58b3-4c9a-bb2e-08145b3e6da8} - {18df0209-4313-4307-8f2c-cc5242073fe0} + {4a0e9f25-4d4d-4bdd-8f89-0b4a9eee3c33} diff --git a/CppParser/testsuite/TestSuite_vs71.vcproj b/CppParser/testsuite/TestSuite_vs71.vcproj index 488bf7039..47a6833d1 100644 --- a/CppParser/testsuite/TestSuite_vs71.vcproj +++ b/CppParser/testsuite/TestSuite_vs71.vcproj @@ -37,7 +37,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false TestSuited TestSuited @@ -129,6 +129,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitd.lib;WinTestRunnerd.lib;%(AdditionalDependencies) @@ -139,6 +140,7 @@ bin64\TestSuited.pdb Windows MachineX64 + %(AdditionalOptions) @@ -161,6 +163,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnit.lib;WinTestRunner.lib;%(AdditionalDependencies) @@ -171,6 +174,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -191,6 +195,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmtd.lib;WinTestRunnermtd.lib;iphlpapi.lib;winmm.lib;nafxcwd.lib;libcmtd.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -202,6 +207,7 @@ bin64\static_mt\TestSuited.pdb Windows MachineX64 + %(AdditionalOptions) @@ -224,6 +230,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmt.lib;WinTestRunnermt.lib;iphlpapi.lib;winmm.lib;nafxcw.lib;libcmt.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -235,6 +242,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -255,6 +263,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmdd.lib;WinTestRunnermdd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -265,6 +274,7 @@ bin64\static_md\TestSuited.pdb Windows MachineX64 + %(AdditionalOptions) @@ -287,6 +297,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmd.lib;WinTestRunnermd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -297,6 +308,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/CppParser/testsuite/TestSuite_x64_vs100.vcxproj.filters b/CppParser/testsuite/TestSuite_x64_vs100.vcxproj.filters index 35b5590f2..9db75ef24 100644 --- a/CppParser/testsuite/TestSuite_x64_vs100.vcxproj.filters +++ b/CppParser/testsuite/TestSuite_x64_vs100.vcxproj.filters @@ -2,37 +2,37 @@ - {9a4e2f07-52c6-435b-ae16-8e7caf2020d3} + {84e42e78-46b3-4039-adf9-c2eeb37c21d5} - {2d942679-5c4e-4a2a-b3b4-801f9265cdc3} + {4c4ac7d1-effc-4d79-8744-14217b8660d8} - {af3bf96c-d4e9-417d-86e1-258c03f41675} + {8014956f-c64e-4731-8fe1-2abd9e0bb082} - {67eea73c-ff17-4f44-a5da-2aa443439b87} + {0ee87780-1437-458b-9ed5-016f1f7636e5} - {3c9b1481-17bd-422e-8821-f19d0d814805} + {41c23529-f8d2-4635-ad64-1bfb25b16cb4} - {ad81f285-174e-48fb-9ca2-a943e36cc362} + {7d1e3f59-50c2-4720-a779-3b437c93fbca} - {6601a84f-a19b-4c62-a9ed-03f3f6424159} + {fddf268b-f124-4862-8c91-a37ec57da4d3} - {8e42f9c2-ce90-4317-a7ed-23c85ff311dc} + {e375360e-a6aa-4427-b0be-a498d404ed13} - {bc122dfa-fe7e-4b12-bbaf-89b466743076} + {fe531ad6-59ac-4b2e-80dd-d11a82f421db} - {774a7e11-5ded-4e23-a057-fc5dfb87243f} + {bf742bf6-94c5-4612-b109-487c0acbd685} - {171e8453-2e11-4396-a4de-b754809387fa} + {c3dd17cb-6142-4fd5-ac34-bbff63711cdf} diff --git a/CppParser/testsuite/TestSuite_x64_vs110.vcxproj b/CppParser/testsuite/TestSuite_x64_vs110.vcxproj index d5a2e591d..db045e91b 100644 --- a/CppParser/testsuite/TestSuite_x64_vs110.vcxproj +++ b/CppParser/testsuite/TestSuite_x64_vs110.vcxproj @@ -101,32 +101,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false diff --git a/CppParser/testsuite/TestSuite_x64_vs110.vcxproj.filters b/CppParser/testsuite/TestSuite_x64_vs110.vcxproj.filters index b5853bc45..2f4e7d94e 100644 --- a/CppParser/testsuite/TestSuite_x64_vs110.vcxproj.filters +++ b/CppParser/testsuite/TestSuite_x64_vs110.vcxproj.filters @@ -2,37 +2,37 @@ - {57b4ccb6-02d6-44ee-b85b-c7f7cdc8443a} + {b79fe974-5f28-43b6-b13f-cf1905b05660} - {ac2a9529-9be0-4822-9ec1-62d23c5d503a} + {92041b11-4925-48d8-ad29-c2da03266e0d} - {5050706a-8488-4fd0-8e36-588e577e6ea7} + {7cf8ebd1-663a-4407-9ce1-996959e60595} - {8a293c72-fe41-4983-8159-5364ceaa7d44} + {5dc56519-a374-4429-87e6-d083719eca78} - {82aaf974-6d88-402c-9c0e-5a354f78b638} + {468a0334-00bf-45a1-9129-3f095be6551b} - {5ae42f09-708f-418d-a654-77245a727e10} + {0129d278-dd24-4cb7-92d3-31dc98ba4d92} - {3845027b-bcb2-4bdf-9165-9021c7ef955d} + {c123e228-ecda-4cf3-a0c6-a7e797030847} - {d921031f-5899-4820-acf5-db13790f4407} + {f8172964-1250-4f7a-8f7f-8650d2946940} - {5f55364c-9436-426c-acef-965f16ce8032} + {33817b72-2a3a-42fa-9de7-125a4a553aad} - {e89c6088-31c8-46a5-8d60-34be2c35e7a8} + {bf1d3e86-b6c6-4204-a553-445b11a59c51} - {adf4281a-a99b-4847-b08a-4ccea5f3d11b} + {51692f56-b896-4bf5-bfe3-65a999318ec2} diff --git a/CppParser/testsuite/TestSuite_x64_vs120.vcxproj b/CppParser/testsuite/TestSuite_x64_vs120.vcxproj index 34a534e14..951a956ac 100644 --- a/CppParser/testsuite/TestSuite_x64_vs120.vcxproj +++ b/CppParser/testsuite/TestSuite_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false diff --git a/CppParser/testsuite/TestSuite_x64_vs120.vcxproj.filters b/CppParser/testsuite/TestSuite_x64_vs120.vcxproj.filters index 6b35c6a28..88477397d 100644 --- a/CppParser/testsuite/TestSuite_x64_vs120.vcxproj.filters +++ b/CppParser/testsuite/TestSuite_x64_vs120.vcxproj.filters @@ -2,37 +2,37 @@ - {837c5d52-3e6d-4273-8104-0f29f0b0ab01} + {f2de7b2d-5e98-4b98-ada5-a83c2ba773b4} - {1336f1e0-a3c8-4562-9cfb-e1d0cd38e767} + {59966df3-3ac3-46f9-9929-3d95156edfbc} - {c4762e6f-ee67-48b4-b33d-6de878e56587} + {22f4dd32-29a3-4fe6-81aa-2575fe80a2f4} - {bf890d17-ab5e-4980-8282-824fe10a7354} + {60f94f14-4bd7-4f6c-b9f9-cf5bc184218a} - {c50af702-2e1f-40f1-9b7c-5b030025679d} + {2a55cb4a-d092-4db9-b177-685b4e28c3c8} - {49790be3-3cf3-44e0-b7ba-5f0fe37561e9} + {73e45d1b-09ec-4053-ad03-14d42e7abd4e} - {5502d864-8d48-41e5-bf47-982fbe1e12cc} + {983a4841-0bd6-4663-a37d-d8a6699d89f8} - {e2ad4a5b-3c50-40cd-afe4-3369c9f433f6} + {96a2adcb-79b8-4a8c-b82c-7a7c844c8225} - {767577b7-366b-4f07-9472-1f2dbfc93ce5} + {c071a854-eeab-451a-9d61-68269e1bc964} - {e02a82c1-aa36-4926-86e4-5abae29752cb} + {167b6c08-a9ef-446b-87c3-76220badfb4f} - {4d037471-c475-4b70-b777-56c2eeb477fa} + {f74a6bbe-f589-43d7-b3f9-e741caba7d44} diff --git a/CppParser/testsuite/TestSuite_x64_vs90.vcproj b/CppParser/testsuite/TestSuite_x64_vs90.vcproj index 18f485947..31a0fba73 100644 --- a/CppParser/testsuite/TestSuite_x64_vs90.vcproj +++ b/CppParser/testsuite/TestSuite_x64_vs90.vcproj @@ -47,7 +47,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> @@ -274,7 +280,8 @@ Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" CompileAs="0" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> diff --git a/Crypto/Crypto_VS80.vcproj b/Crypto/Crypto_VS80.vcproj index 0bffbc8cf..408be01ac 100644 --- a/Crypto/Crypto_VS80.vcproj +++ b/Crypto/Crypto_VS80.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="4" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + + + + debug_shared + SDK_AM335X_SK_WEC2013_V300 + + + debug_static_md + SDK_AM335X_SK_WEC2013_V300 + + + debug_static_mt + SDK_AM335X_SK_WEC2013_V300 + + + release_shared + SDK_AM335X_SK_WEC2013_V300 + + + release_static_md + SDK_AM335X_SK_WEC2013_V300 + + + release_static_mt + SDK_AM335X_SK_WEC2013_V300 + + + + Crypto + {EEEE7259-32E9-4D56-B023-C733940AB2A0} + en-US + 11.0 + true + SDK_AM335X_SK_WEC2013_V300 + CE800 + + + + StaticLibrary + Unicode + CE800 + + + StaticLibrary + Unicode + CE800 + + + StaticLibrary + Unicode + CE800 + + + StaticLibrary + Unicode + CE800 + + + DynamicLibrary + Unicode + CE800 + + + DynamicLibrary + Unicode + CE800 + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>11.0.61030.0 + PocoCryptod + PocoCryptomdd + PocoCryptomtd + PocoCrypto + PocoCryptomd + PocoCryptomt + + + ..\bin\$(Platform)\ + obj\Crypto\$(Platform)\$(Configuration)\ + true + true + + + ..\bin\$(Platform)\ + obj\Crypto\$(Platform)\$(Configuration)\ + false + true + + + ..\lib\$(Platform)\ + obj\Crypto\$(Platform)\$(Configuration)\ + + + ..\lib\$(Platform)\ + obj\Crypto\$(Platform)\$(Configuration)\ + + + ..\lib\$(Platform)\ + obj\Crypto\$(Platform)\$(Configuration)\ + + + ..\lib\$(Platform)\ + obj\Crypto\$(Platform)\$(Configuration)\ + + + + Disabled + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + _DEBUG;$(ProjectName)_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;Crypto_EXPORTS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebugDLL + true + true + Level3 + ProgramDatabase + + + ws2_32.lib;iphlpapi.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies) + ..\bin\$(Platform)\PocoCryptod.dll + ..\lib\$(Platform);%(AdditionalLibraryDirectories) + true + ..\bin\$(Platform)\PocoCryptod.pdb + + + ..\lib\$(Platform)\PocoCryptod.lib + WindowsCE + + + + + Disabled + true + Speed + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + NDEBUG;$(ProjectName)_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;Crypto_EXPORTS;%(PreprocessorDefinitions) + true + false + MultiThreadedDLL + false + true + Level3 + ProgramDatabase + + + ws2_32.lib;iphlpapi.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies) + ..\bin\$(Platform)\PocoCrypto.dll + ..\lib\$(Platform);%(AdditionalLibraryDirectories) + false + + + + ..\lib\$(Platform)\PocoCrypto.lib + WindowsCE + + + + + Disabled + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + _DEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebug + true + true + + ..\lib\$(Platform)\PocoCryptomtd.pdb + Level3 + ProgramDatabase + Default + + + ..\lib\$(Platform)\PocoCryptomtd.lib + + + + + Disabled + true + Speed + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + NDEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreaded + false + true + + Level3 + ProgramDatabase + Default + + + ..\lib\$(Platform)\PocoCryptomt.lib + + + + + Disabled + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + _DEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebugDLL + true + true + + ..\lib\$(Platform)\PocoCryptomdd.pdb + Level3 + ProgramDatabase + Default + + + ..\lib\$(Platform)\PocoCryptomdd.lib + + + + + Disabled + true + Speed + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + NDEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDLL + false + true + + Level3 + ProgramDatabase + Default + + + ..\lib\$(Platform)\PocoCryptomd.lib + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + + + + + diff --git a/Crypto/Crypto_WEC2013_vs110.vcxproj.filters b/Crypto/Crypto_WEC2013_vs110.vcxproj.filters new file mode 100644 index 000000000..44450a866 --- /dev/null +++ b/Crypto/Crypto_WEC2013_vs110.vcxproj.filters @@ -0,0 +1,144 @@ + + + + + {0a841f72-071a-45ca-a774-58c7470e3a1d} + + + {65da3f62-45bc-4c75-b301-dd361dea01dc} + + + {8797cac5-a5aa-46b4-b4db-46a7888ca3e3} + + + {5e794d79-3804-4172-9a90-544160f53adb} + + + {c1f04aa6-9a4e-4a5f-b33c-e024a8f08f68} + + + {a9c1a70b-2378-4f08-aa7f-fc136400874d} + + + {e1e0a0ab-77ec-4fdc-8808-0e4ec4d124ea} + + + {6148bc0a-bba3-4ead-b3b4-7917999afdd2} + + + {679f86d2-b3c6-45b6-9df9-ec0377737650} + + + {889b6671-1ef3-4058-a407-59d44df93564} + + + {7465f583-8ea2-4e6a-980c-d922470465d7} + + + {68f9361d-5640-4ec2-84f1-22c1b8c781ae} + + + {9cba5f1d-1555-4699-b2c5-194cdf2cf127} + + + {530047b1-3f36-4b5e-bdd1-eac2c515e39b} + + + {025c84a2-b001-4147-9fca-dfa6d6f139c1} + + + + + Cipher\Header Files + + + Cipher\Header Files + + + Cipher\Header Files + + + Cipher\Header Files + + + Cipher\Header Files + + + Cipher\Header Files + + + Cipher\Header Files + + + RSA\Header Files + + + RSA\Header Files + + + RSA\Header Files + + + RSA\Header Files + + + Certificate\Header Files + + + CryptoCore\Header Files + + + CryptoCore\Header Files + + + Digest\Header Files + + + + + Cipher\Source Files + + + Cipher\Source Files + + + Cipher\Source Files + + + Cipher\Source Files + + + Cipher\Source Files + + + Cipher\Source Files + + + Cipher\Source Files + + + RSA\Source Files + + + RSA\Source Files + + + RSA\Source Files + + + RSA\Source Files + + + Certificate\Source Files + + + CryptoCore\Source Files + + + Digest\Source Files + + + + + + \ No newline at end of file diff --git a/Crypto/Crypto_WEC2013_vs120.vcxproj b/Crypto/Crypto_WEC2013_vs120.vcxproj index ddbd2cacd..0cd454de3 100644 --- a/Crypto/Crypto_WEC2013_vs120.vcxproj +++ b/Crypto/Crypto_WEC2013_vs120.vcxproj @@ -98,31 +98,31 @@ ..\bin\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Crypto\$(Platform)\$(Configuration)\ true true ..\bin\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Crypto\$(Platform)\$(Configuration)\ false true ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Crypto\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Crypto\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Crypto\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Crypto\$(Platform)\$(Configuration)\ diff --git a/Crypto/Crypto_WEC2013_vs120.vcxproj.filters b/Crypto/Crypto_WEC2013_vs120.vcxproj.filters index b1fd789e7..6d0864774 100644 --- a/Crypto/Crypto_WEC2013_vs120.vcxproj.filters +++ b/Crypto/Crypto_WEC2013_vs120.vcxproj.filters @@ -2,49 +2,49 @@ - {b1171426-a990-4848-9e4c-15bca9c15c77} + {1f7fee98-deeb-4fb8-91c0-62243a41e826} - {aa95c497-002a-4d6e-9dd7-d9df344e8987} + {314caf43-867b-48f6-94a7-2f10a597ac9a} - {a6173f36-7ac4-4992-b861-38a80de51705} + {a00abda0-7e4c-4a50-9975-d369475db439} - {dd83405b-93c0-4844-ab8e-483e13b2dc17} + {772f5957-e8bc-4537-ba8b-178d0edd3cc3} - {db5c00e4-2d48-44a6-8f5f-13864d3e9654} + {35cb1adc-406b-420d-9c4e-ec287a68a6d7} - {946ad4f7-14ec-4950-b8b2-8358a6c8ea9b} + {ea2c29ce-23b5-41ee-b905-6de680ac5b97} - {a4f3bec8-65be-430a-b133-a4552103e839} + {0f2a6bed-febe-4eff-996e-587fecc341ca} - {3541a042-1577-45c7-8786-32b15f55e0aa} + {d7fb6785-8243-4a3d-9dbd-a3d6ae39f8a7} - {980886c1-9572-4c18-9b6d-c457566327a9} + {d9bf56ce-79ff-49c8-ab9e-61bf7559684c} - {56070464-64f5-44fa-b8b8-7cc00b01af5e} + {3f4256aa-566d-4168-ada1-b95276ef36d4} - {39ed9c93-cae2-44f7-ba39-cceef98c1179} + {bf465da7-1c87-46aa-ac95-8f794fe53103} - {01a07153-82b6-4f0d-944a-d66668e537fe} + {7c6f295a-c184-4d15-9a9a-223324b99096} - {f87aa436-f7e6-4640-958f-4aa2fa63dec8} + {6624949a-586c-49b4-ae6f-9be2613ce9df} - {2ec4bb70-4a40-4cfd-9c86-39dfa6c0ef69} + {043cad04-2351-4ccf-8e75-f8f644da6926} - {2f6ef5f8-7823-46cf-820a-cddfb974b4e5} + {8acd0617-d53c-43d8-a88f-5a2f3a737ebb} diff --git a/Crypto/Crypto_vs100.vcxproj b/Crypto/Crypto_vs100.vcxproj index 8b59936d9..d78a1d905 100644 --- a/Crypto/Crypto_vs100.vcxproj +++ b/Crypto/Crypto_vs100.vcxproj @@ -81,19 +81,19 @@ <_ProjectFileVersion>10.0.40219.1 ..\bin\ - obj\$(Configuration)\ + obj\Crypto\$(Configuration)\ true ..\bin\ - obj\$(Configuration)\ + obj\Crypto\$(Configuration)\ false ..\lib\ - obj\$(Configuration)\ + obj\Crypto\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Crypto\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Crypto\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Crypto\$(Configuration)\ PocoCryptod PocoCryptomdd PocoCryptomtd @@ -119,6 +119,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies) @@ -130,6 +131,7 @@ Console ..\lib\PocoCryptod.lib MachineX86 + %(AdditionalOptions) @@ -152,6 +154,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies) @@ -164,6 +167,7 @@ true ..\lib\PocoCrypto.lib MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib\PocoCryptomtd.lib @@ -210,6 +215,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib\PocoCryptomt.lib @@ -234,6 +240,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib\PocoCryptomdd.lib @@ -260,6 +267,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;libeay32md.lib;ssleay32md.lib;Crypt32.lib;%(AdditionalDependencies) diff --git a/Crypto/Crypto_vs100.vcxproj.filters b/Crypto/Crypto_vs100.vcxproj.filters index af3a9ca7d..453a5f6ea 100644 --- a/Crypto/Crypto_vs100.vcxproj.filters +++ b/Crypto/Crypto_vs100.vcxproj.filters @@ -2,49 +2,49 @@ - {52aa573b-f3b6-44dd-ab29-57ad41facdca} + {5c6cf6dc-06e1-43a7-90a7-47632f19e0f4} - {defeeff7-22b7-43d3-aaae-0c82364ba582} + {a7fd7db1-e625-49a3-ad11-0d0244738e17} - {97613064-57f5-4e3c-8329-187d9c0a0620} + {21ed3c86-1494-4014-98f2-b3fea2eed35c} - {a5148f54-59c6-4d71-bb71-3ea6b8977d03} + {fc115576-86f2-401c-9d56-21428a434514} - {5c3247f8-7bde-4c68-958b-bbb6ae01c8a1} + {cdec8225-44d9-4ddb-ad9e-bff74fe9ff55} - {f2f975dc-3988-4343-b583-545bbde06b3a} + {e7a5ea45-423d-467d-a682-22c59c01b315} - {2616a78b-350a-41b5-bcdb-84f6542e78c1} + {02ffb76c-3cf0-476c-a757-deaa9fac2932} - {76c7f9f5-0236-4f5e-ad73-62425a1a9fb5} + {83e05161-486c-4280-922a-d6e2e8c8584e} - {4984522c-9d98-41c4-884d-f2c86d6abdb0} + {c0182b5b-b7f7-431f-bb3f-973cc2bb1461} - {949dd63d-165e-44e5-99b7-f1d4ee314901} + {b2081e90-8b0f-45a2-acd4-6ffcc2dc830e} - {8f446b0b-c8a8-4284-b940-a2978f2e381e} + {a4b1737a-f53a-4c8d-9cc8-8e92628b3236} - {75cbb619-fbca-46c1-95db-00ed801e5cf4} + {880cd17d-7eb8-427d-839b-385d7d82f8fa} - {d103b9db-d3be-4893-bfd3-373d0b833038} + {f3cb946e-4036-472d-bc91-2cfdee030357} - {1a56fecc-efa7-4fde-b8df-6ca4ecc5f002} + {ce0bf1ff-ee39-41d4-8e5f-29b5af4689bd} - {38a9ccab-a042-459e-9b44-36a3fe012d7c} + {052f3d90-2554-4c42-8d30-3e0846be3f29} diff --git a/Crypto/Crypto_vs110.vcxproj b/Crypto/Crypto_vs110.vcxproj index 17f0dea41..baae66444 100644 --- a/Crypto/Crypto_vs110.vcxproj +++ b/Crypto/Crypto_vs110.vcxproj @@ -95,29 +95,29 @@ ..\bin\ - obj\$(Configuration)\ + obj\Crypto\$(Configuration)\ true ..\bin\ - obj\$(Configuration)\ + obj\Crypto\$(Configuration)\ false ..\lib\ - obj\$(Configuration)\ + obj\Crypto\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Crypto\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Crypto\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Crypto\$(Configuration)\ diff --git a/Crypto/Crypto_vs110.vcxproj.filters b/Crypto/Crypto_vs110.vcxproj.filters index 62ead5b1c..f55fc8fdf 100644 --- a/Crypto/Crypto_vs110.vcxproj.filters +++ b/Crypto/Crypto_vs110.vcxproj.filters @@ -2,49 +2,49 @@ - {9586ad2e-68d9-457d-811f-1a8d14335e51} + {66dc74b4-176c-49ef-9f66-3b0d988018c1} - {916f486f-927d-4006-8eeb-d2d2a0a01828} + {24467cf2-3a66-4679-aedb-9c1285533f25} - {bc3bc671-e964-42d2-b738-6a369b1ea57e} + {fd37700d-78b4-4721-8911-342520d47ba3} - {533a867d-4aee-48d3-9e58-1259d2ec58b7} + {d671209c-8463-4d88-9894-06fb56a27d27} - {68ef201b-40c6-4513-9ac4-4f55ceeba64d} + {b82e5688-b088-4bb9-89e9-5cb411a9d079} - {427156c5-d004-4b43-a4fd-9d838dbda703} + {9e6cc371-2812-497a-8bff-868f690b3857} - {04c78ad3-01a9-4fa9-a71c-9a4ecc1612a4} + {2c5a6eb3-1fc3-49f4-8361-1c7f199f7d02} - {ae2f65ec-8d4b-42c6-9f03-1bf06a83601e} + {58f0c5f2-cac9-4de4-992f-8c5a6f13b9c5} - {8fb11242-0182-4e83-b884-615025241d85} + {bf259139-d35c-4649-90d1-de450ecc0da8} - {bfbdd795-b32e-42a2-86f0-0c7262ce93e9} + {3e46d136-b6da-44d8-a2b6-a7971ca0907a} - {8aa40931-82ab-473c-bd8f-8e756a5f7ef6} + {d44d5310-7e92-43da-bd8b-415127ecf92a} - {d18621bd-e305-4084-bd6d-5c73b30b2bf6} + {728c6c20-a845-4c2e-abfc-ccddf809e12e} - {2a41a8ff-6094-41d6-b241-7f6534aba40a} + {3c59ec09-2420-44cb-a438-6b265704513b} - {c9970830-1cfd-4913-903f-6683d41ab4fa} + {ba939e52-6876-479c-9853-0d03da4416e5} - {c3539f35-86fa-4b32-9b4d-619c2033c715} + {bee560b1-4f27-447c-93eb-a01b145d5c99} diff --git a/Crypto/Crypto_vs120.vcxproj b/Crypto/Crypto_vs120.vcxproj index 805c823f5..ebf77808a 100644 --- a/Crypto/Crypto_vs120.vcxproj +++ b/Crypto/Crypto_vs120.vcxproj @@ -95,29 +95,29 @@ ..\bin\ - obj\$(Configuration)\ + obj\Crypto\$(Configuration)\ true ..\bin\ - obj\$(Configuration)\ + obj\Crypto\$(Configuration)\ false ..\lib\ - obj\$(Configuration)\ + obj\Crypto\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Crypto\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Crypto\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Crypto\$(Configuration)\ diff --git a/Crypto/Crypto_vs120.vcxproj.filters b/Crypto/Crypto_vs120.vcxproj.filters index 955d7dbfc..3ae7b44e4 100644 --- a/Crypto/Crypto_vs120.vcxproj.filters +++ b/Crypto/Crypto_vs120.vcxproj.filters @@ -2,49 +2,49 @@ - {1d04edd2-7026-4188-82f7-2aae71f8d1e1} + {211105eb-79f2-4ff1-8a42-b1ebaa42da75} - {e81c5c5d-353f-41a5-885f-f200930ac0eb} + {001011a8-0a5b-45ec-9ed6-6fa76e3d2345} - {57e02657-57d0-429b-aad8-15b1268d3f45} + {02839f2c-032a-49e2-a29b-be3e1944fabc} - {7ee9c2b7-f799-43aa-808e-deea4f67e7a3} + {10fccb96-219a-4afd-a8c2-1bb88c86d159} - {f045b7e7-840c-479e-8532-6d89f09b8e19} + {b8aa4c85-98e4-488b-9ca6-dba387b00c03} - {0e097e82-99ea-49f8-bec9-e3a8734d0431} + {7d629e04-9504-43d8-b705-a08911c72394} - {ae8b6123-bbfe-4881-a3bb-9a722c51776c} + {7f5ffe93-a1a1-4cb2-89c5-8041eec5c55d} - {2f7e2956-3327-4e3e-a033-8bbf1645f647} + {fa701180-5696-49e1-afb5-cffba8b76123} - {7183d456-7dd5-4815-9d3c-08daeb2caab7} + {c53ce1ab-5770-455f-b586-11f595ef54f9} - {0a385248-d7df-4bbf-8179-7212bfc63444} + {18e73377-0886-449d-b35e-156919b22b95} - {a7ed2fb0-994f-4e9d-80d2-87a0296896e0} + {de0d20d2-b0b7-404a-9db9-cac8cbb1779b} - {b6e39653-d380-4f4e-8aa0-4158bc9039cc} + {ab2a1dd3-dbcb-4f62-a559-13483475e557} - {1a668330-abc0-487f-a4db-94f7f9fa74f3} + {ded3c63c-9944-44e0-bf7c-82fc1ecdde4c} - {7041f1bd-ccaf-4471-aa46-958e3a10b07a} + {f51f7047-2a7e-4c38-9c6e-a990fa8a2901} - {4e6c0326-bb7b-4e65-b8aa-e5e60af52eea} + {fdad0c1f-1b12-44bc-8fa1-2c2a342ea983} diff --git a/Crypto/Crypto_x64_vs100.vcxproj b/Crypto/Crypto_x64_vs100.vcxproj index 147fa98e2..c9e5a48bd 100644 --- a/Crypto/Crypto_x64_vs100.vcxproj +++ b/Crypto/Crypto_x64_vs100.vcxproj @@ -81,19 +81,19 @@ <_ProjectFileVersion>10.0.40219.1 ..\bin64\ - obj64\$(Configuration)\ + obj64\Crypto\$(Configuration)\ true ..\bin64\ - obj64\$(Configuration)\ + obj64\Crypto\$(Configuration)\ false ..\lib64\ - obj64\$(Configuration)\ + obj64\Crypto\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Crypto\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Crypto\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Crypto\$(Configuration)\ PocoCrypto64d PocoCryptomdd PocoCryptomtd @@ -119,6 +119,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies) @@ -130,6 +131,7 @@ Console ..\lib64\PocoCryptod.lib MachineX64 + %(AdditionalOptions) @@ -152,6 +154,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies) @@ -164,6 +167,7 @@ true ..\lib64\PocoCrypto.lib MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib64\PocoCryptomtd.lib @@ -210,6 +215,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib64\PocoCryptomt.lib @@ -234,6 +240,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib64\PocoCryptomdd.lib @@ -259,6 +266,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib64\PocoCryptomd.lib diff --git a/Crypto/Crypto_x64_vs100.vcxproj.filters b/Crypto/Crypto_x64_vs100.vcxproj.filters index 176690b2a..327be591d 100644 --- a/Crypto/Crypto_x64_vs100.vcxproj.filters +++ b/Crypto/Crypto_x64_vs100.vcxproj.filters @@ -2,49 +2,49 @@ - {b8e545d0-b4c4-474e-a8f9-90d9bc210f57} + {f18ec57e-c8c4-45d9-aabe-3cc844cd0aab} - {1a451d4e-fa60-45f5-8c2c-bbb1013cc34f} + {c74c3fbe-b65d-46fe-adbb-066adbff89e8} - {42b4397d-7b59-4e82-a57d-301c175cd9de} + {d44e1360-7ad7-42d5-8ea5-0f302fc7f61f} - {a4e5b8c6-1b46-435d-a522-f69e48bf44c5} + {80812033-a370-4587-aa94-65dc90d4123b} - {76936756-9641-4b0b-a079-b8ddde16b278} + {c68322c5-cecc-466e-82c2-48c058140ae0} - {4582185a-8cba-419d-94f6-f9d0bc2e8306} + {d4011943-e606-4405-a641-3b58f6730b61} - {96fe9c7f-009d-4cc5-b9da-46a8bbfefd77} + {bdf1b03a-5a9f-4475-8642-be3802e1be4d} - {eef71fd7-e1ea-469b-b22a-1bb61eadbc90} + {84726a37-9a75-4a4b-acd7-1c2961c8427f} - {c77d58ce-aa42-45a2-bbca-ae438a8cc13d} + {46fe5ef6-c2af-45c4-9916-1970fb550c4a} - {24fb9285-22c9-4d24-9495-7f0bf7916cb8} + {5578035b-8574-499f-b5f3-7bf0afcf5f65} - {76cdc88e-df87-4d30-a278-7d1b8137f0b0} + {5b3a27f0-c67e-4ddc-80ef-1b98a19b4d51} - {77b56bbe-74ed-44e6-a10f-a72ef25fa015} + {71c3ca33-35fe-4f8b-9141-615ff09e5e4c} - {3ad511f6-5f31-4f41-a9b2-9e1811d0c2b3} + {d253cdd3-72aa-4cb0-bd49-daa14ba9f264} - {961fe017-5281-4ef9-9128-2eaff7842baf} + {345fb62f-0ed0-4dbb-a35c-6102556fe18b} - {e06e1c9e-408f-400c-b97a-2322367edcc3} + {172ac6ef-b42e-48d2-8a63-e5cb4ebcbf54} diff --git a/Crypto/Crypto_x64_vs110.vcxproj b/Crypto/Crypto_x64_vs110.vcxproj index 815f5c23e..8a9db44c2 100644 --- a/Crypto/Crypto_x64_vs110.vcxproj +++ b/Crypto/Crypto_x64_vs110.vcxproj @@ -95,29 +95,29 @@ ..\bin64\ - obj64\$(Configuration)\ + obj64\Crypto\$(Configuration)\ true ..\bin64\ - obj64\$(Configuration)\ + obj64\Crypto\$(Configuration)\ false ..\lib64\ - obj64\$(Configuration)\ + obj64\Crypto\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Crypto\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Crypto\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Crypto\$(Configuration)\ diff --git a/Crypto/Crypto_x64_vs110.vcxproj.filters b/Crypto/Crypto_x64_vs110.vcxproj.filters index 4eeb58483..94d5ac010 100644 --- a/Crypto/Crypto_x64_vs110.vcxproj.filters +++ b/Crypto/Crypto_x64_vs110.vcxproj.filters @@ -2,49 +2,49 @@ - {ccd02956-01ad-4bf2-9f72-4035f4d4f2d1} + {1a0fb259-4a11-48b3-9184-e97f8f3bbd99} - {4e8a38cf-0f1e-43db-81d4-7cbf7ddd6ce1} + {770c3dd3-70b6-4a36-80d5-93b0658cdecc} - {7108ea34-2636-42c2-97ed-887789fd4738} + {0d2f56d8-b644-49bd-80d5-0c150416e549} - {e0b2909f-f0e0-4942-8e89-d73dcdfa1e73} + {95ec0739-6c64-4e1f-9ecd-b1388c635e5e} - {e0fd7172-d76f-4fb6-a565-458db6db9449} + {7985fc3f-aff1-451e-9450-c966393e3758} - {3c29660e-00ce-4d89-9981-f1b12a8c84cf} + {f7a7fca8-29e8-411d-bb34-b71f9264446d} - {d83ae0c4-9253-45f4-9c6b-4132e751e500} + {46d171b5-01d3-4ead-af51-4b97461e761a} - {4c6bb189-dad4-4725-a3f3-a6b20a131fcf} + {867ef9da-8831-4ec6-81e2-2493fbfeaf41} - {c8a078da-35a0-4a64-91cf-3a0403d9b022} + {a05727c7-b46a-43ff-8f1c-90b4535e1586} - {dbc91ba2-2e64-45dd-9263-e78f0f817dac} + {f9cb9dec-b732-4980-a30b-0854251fa3ac} - {41dc3cfc-dc59-451d-9229-14941cfd4595} + {ff1a14e0-9125-440e-b17c-c77c4198dd5e} - {de50be71-b76e-4d20-a01b-f100a17c271c} + {79ba7862-669a-4e14-8b89-ef5b094fefe4} - {5ff582da-d4bb-4920-a989-5c26bbff254e} + {e0147e5b-099b-4ed5-b170-d49085e71b8e} - {467230d5-1aca-4bb4-ac51-23820632f4d8} + {fbb9f674-b310-4309-9f41-09413e8a744f} - {11e2246d-2bf6-4436-a473-12a414af5aea} + {c808d116-1b68-4ede-afb5-1e8f100d347c} diff --git a/Crypto/Crypto_x64_vs120.vcxproj b/Crypto/Crypto_x64_vs120.vcxproj index fd3e96d25..112914a91 100644 --- a/Crypto/Crypto_x64_vs120.vcxproj +++ b/Crypto/Crypto_x64_vs120.vcxproj @@ -95,29 +95,29 @@ ..\bin64\ - obj64\$(Configuration)\ + obj64\Crypto\$(Configuration)\ true ..\bin64\ - obj64\$(Configuration)\ + obj64\Crypto\$(Configuration)\ false ..\lib64\ - obj64\$(Configuration)\ + obj64\Crypto\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Crypto\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Crypto\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Crypto\$(Configuration)\ diff --git a/Crypto/Crypto_x64_vs120.vcxproj.filters b/Crypto/Crypto_x64_vs120.vcxproj.filters index f3b1740a3..1a4da443e 100644 --- a/Crypto/Crypto_x64_vs120.vcxproj.filters +++ b/Crypto/Crypto_x64_vs120.vcxproj.filters @@ -2,49 +2,49 @@ - {8432eb3f-9333-44d6-a4b3-945abb276e71} + {83cb3bff-1f81-4ae6-a84a-32e1ea74f5cc} - {22523b2f-8721-4095-b34e-707a420ee92a} + {a3a17427-d769-4bc5-ad92-dbe10877a6a5} - {d7c9de36-f65e-421f-9ce6-eb82f7802d06} + {3fa9a5c9-3afb-49eb-bfd5-8a2d29c8a21b} - {d72522b0-27f4-42f5-bba1-4f7816d69457} + {5de4ec18-fcb5-4b8a-a032-c53eb389e73c} - {6c04f0e1-791b-4cee-a71f-d2dfb5e7d1b1} + {3248f1a5-440e-47c1-b109-8f30d4b5b8b0} - {b7076112-294c-4420-b65b-d1ff8f650dca} + {2423fa74-e84c-4040-a99d-b89c8e6bea4c} - {1878bfe1-c552-42a7-adfb-cec4063f3c40} + {dcdab0d6-fbb1-4fdc-adc1-a3b0c951875d} - {e9d77c8c-8d05-46ae-a1db-0ba5b352f4e5} + {c7233e83-c322-469e-a19d-25056982ee0d} - {8ff6f582-693b-4f02-b220-a0f4fa073a10} + {7713a549-d707-47bc-a5b2-c50abe6724d4} - {e0686f6c-7f96-48c6-ace2-6d884c0f9f78} + {923b91e3-f45a-4eca-b952-407985aa65de} - {4469422e-4e7f-4a3a-9252-009c5a43cae5} + {2e8315da-574a-4400-a3d4-08a88626ebf1} - {3055de48-d06f-462d-8599-587603320779} + {799c3997-65cc-4876-a56f-d516846bfe02} - {ed9e5476-1991-4d81-81bf-1f9543ad780e} + {d4756c33-40ba-4ecf-9b8e-2da34a36ef3c} - {ad75b2db-85de-4484-b6ca-8b2ae70007cf} + {a6d650bb-d589-4985-8106-65d0cfbdb8ce} - {e619a1ab-571a-405f-9675-afcb89874679} + {4bc1dd94-141d-4f3e-8c27-2fe388651b95} diff --git a/Crypto/Crypto_x64_vs90.vcproj b/Crypto/Crypto_x64_vs90.vcproj index 9d6a90024..8c129ee5c 100644 --- a/Crypto/Crypto_x64_vs90.vcproj +++ b/Crypto/Crypto_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> @@ -62,6 +63,7 @@ private: std::string _name; EVP_MD_CTX* _ctx; Poco::DigestEngine::Digest _digest; + OpenSSLInitializer _openSSLInitializer; }; diff --git a/Crypto/include/Poco/Crypto/RSAKey.h b/Crypto/include/Poco/Crypto/RSAKey.h index 6aa26f171..a6a6bc206 100644 --- a/Crypto/include/Poco/Crypto/RSAKey.h +++ b/Crypto/include/Poco/Crypto/RSAKey.h @@ -64,13 +64,21 @@ public: RSAKey(const std::string& publicKeyFile, const std::string& privateKeyFile = "", const std::string& privateKeyPassphrase = ""); /// Creates the RSAKey, by reading public and private key from the given files and - /// using the given passphrase for the private key. Can only by used for signing if - /// a private key is available. + /// using the given passphrase for the private key. + /// + /// Cannot be used for signing or decryption unless a private key is available. + /// + /// If a private key is specified, you don't need to specify a public key file. + /// OpenSSL will auto-create the public key from the private key. RSAKey(std::istream* pPublicKeyStream, std::istream* pPrivateKeyStream = 0, const std::string& privateKeyPassphrase = ""); - /// Creates the RSAKey. Can only by used for signing if pPrivKey - /// is not null. If a private key file is specified, you don't need to - /// specify a public key file. OpenSSL will auto-create it from the private key. + /// Creates the RSAKey, by reading public and private key from the given streams and + /// using the given passphrase for the private key. + /// + /// Cannot be used for signing or decryption unless a private key is available. + /// + /// If a private key is specified, you don't need to specify a public key file. + /// OpenSSL will auto-create the public key from the private key. ~RSAKey(); /// Destroys the RSAKey. diff --git a/Crypto/samples/genrsakey/genrsakey_CE_VS90.vcproj b/Crypto/samples/genrsakey/genrsakey_CE_VS90.vcproj index aefc58b91..e9e85a021 100644 --- a/Crypto/samples/genrsakey/genrsakey_CE_VS90.vcproj +++ b/Crypto/samples/genrsakey/genrsakey_CE_VS90.vcproj @@ -46,7 +46,8 @@ CompileAs="0" DisableSpecificWarnings="4800;" CompileForArchitecture="2" - InterworkCalls="false"/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + + + + debug_shared + SDK_AM335X_SK_WEC2013_V300 + + + debug_static_md + SDK_AM335X_SK_WEC2013_V300 + + + debug_static_mt + SDK_AM335X_SK_WEC2013_V300 + + + release_shared + SDK_AM335X_SK_WEC2013_V300 + + + release_static_md + SDK_AM335X_SK_WEC2013_V300 + + + release_static_mt + SDK_AM335X_SK_WEC2013_V300 + + + + genrsakey + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947} + en-US + 11.0 + true + SDK_AM335X_SK_WEC2013_V300 + CE800 + + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>11.0.61030.0 + genrsakeyd + genrsakeyd + genrsakeyd + genrsakey + genrsakey + genrsakey + + + bin\$(Platform)\shared\ + obj\genrsakey\$(Platform)\$(Configuration)\ + true + + + bin\$(Platform)\shared\ + obj\genrsakey\$(Platform)\$(Configuration)\ + false + + + bin\$(Platform)\static_mt\ + obj\genrsakey\$(Platform)\$(Configuration)\ + true + + + bin\$(Platform)\static_mt\ + obj\genrsakey\$(Platform)\$(Configuration)\ + false + + + bin\$(Platform)\static_md\ + obj\genrsakey\$(Platform)\$(Configuration)\ + true + + + bin\$(Platform)\static_md\ + obj\genrsakey\$(Platform)\$(Configuration)\ + false + + + + Disabled + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Crypto\include;%(AdditionalIncludeDirectories) + _DEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebugDLL + true + true + + Level3 + ProgramDatabase + Default + + + libeay32.lib;ssleay32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\shared\genrsakeyd.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + true + bin\$(Platform)\shared\genrsakeyd.pdb + mainCRTStartup + WindowsCE + + + + + Disabled + true + Speed + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Crypto\include;%(AdditionalIncludeDirectories) + NDEBUG;$(ProjectName)_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDLL + false + true + Level3 + ProgramDatabase + + + libeay32.lib;ssleay32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\shared\genrsakey.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + false + + true + true + mainCRTStartup + WindowsCE + + + + + Disabled + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Crypto\include;%(AdditionalIncludeDirectories) + _DEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebug + true + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;libeay32mtd.lib;ssleay32mtd.lib;Crypt32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\static_mt\genrsakeyd.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + true + bin\$(Platform)\static_mt\genrsakeyd.pdb + mainCRTStartup + WindowsCE + + + + + Disabled + Default + true + Speed + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Crypto\include;%(AdditionalIncludeDirectories) + NDEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreaded + false + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;libeay32mt.lib;ssleay32mt.lib;Crypt32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\static_mt\genrsakey.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + false + + true + true + mainCRTStartup + WindowsCE + + + + + Disabled + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Crypto\include;%(AdditionalIncludeDirectories) + _DEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebugDLL + true + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;libeay32mdd.lib;ssleay32mdd.lib;Crypt32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\static_md\genrsakeyd.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + true + bin\$(Platform)\static_md\genrsakeyd.pdb + mainCRTStartup + WindowsCE + + + + + Disabled + Default + true + Speed + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Crypto\include;%(AdditionalIncludeDirectories) + NDEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDLL + false + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;libeay32md.lib;ssleay32md.lib;Crypt32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\static_md\genrsakey.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + false + + true + true + mainCRTStartup + WindowsCE + + + + + + + + diff --git a/Crypto/samples/genrsakey/genrsakey_WEC2013_vs110.vcxproj.filters b/Crypto/samples/genrsakey/genrsakey_WEC2013_vs110.vcxproj.filters new file mode 100644 index 000000000..6f87fae21 --- /dev/null +++ b/Crypto/samples/genrsakey/genrsakey_WEC2013_vs110.vcxproj.filters @@ -0,0 +1,16 @@ + + + + + {f7a1b32b-9893-419a-9e09-4cfda667f4ce} + + + {a5c7909e-00cc-4036-b67c-52a4a7427657} + + + + + Source Files + + + \ No newline at end of file diff --git a/Crypto/samples/genrsakey/genrsakey_WEC2013_vs120.vcxproj b/Crypto/samples/genrsakey/genrsakey_WEC2013_vs120.vcxproj index dc1346408..18905b9a4 100644 --- a/Crypto/samples/genrsakey/genrsakey_WEC2013_vs120.vcxproj +++ b/Crypto/samples/genrsakey/genrsakey_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\genrsakey\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\genrsakey\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\genrsakey\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\genrsakey\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\genrsakey\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\genrsakey\$(Platform)\$(Configuration)\ false diff --git a/Crypto/samples/genrsakey/genrsakey_WEC2013_vs120.vcxproj.filters b/Crypto/samples/genrsakey/genrsakey_WEC2013_vs120.vcxproj.filters index 142266f20..24903be54 100644 --- a/Crypto/samples/genrsakey/genrsakey_WEC2013_vs120.vcxproj.filters +++ b/Crypto/samples/genrsakey/genrsakey_WEC2013_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {8c757c6d-66fb-4c24-a0eb-c6b2c6d9f383} + {a61e0e22-03b8-4aa3-a525-53f319a8ef5f} - {92a99b97-83d5-426d-98e7-7d1adbc70e04} + {d41996e0-3a7b-41b1-bf83-109fa57620e8} diff --git a/Crypto/samples/genrsakey/genrsakey_vs100.vcxproj b/Crypto/samples/genrsakey/genrsakey_vs100.vcxproj index 1947c3f3b..c43391d70 100644 --- a/Crypto/samples/genrsakey/genrsakey_vs100.vcxproj +++ b/Crypto/samples/genrsakey/genrsakey_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\genrsakey\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\genrsakey\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\genrsakey\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\genrsakey\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\genrsakey\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\genrsakey\$(Configuration)\ false genrsakeyd genrsakeyd @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) libeay32.lib;ssleay32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\genrsakeyd.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) libeay32.lib;ssleay32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;libeay32mtd.lib;ssleay32mtd.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\genrsakeyd.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;libeay32mt.lib;ssleay32mt.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;libeay32mdd.lib;ssleay32mdd.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\genrsakeyd.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;libeay32md.lib;ssleay32md.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Crypto/samples/genrsakey/genrsakey_vs100.vcxproj.filters b/Crypto/samples/genrsakey/genrsakey_vs100.vcxproj.filters index 66908b09e..505cf3afb 100644 --- a/Crypto/samples/genrsakey/genrsakey_vs100.vcxproj.filters +++ b/Crypto/samples/genrsakey/genrsakey_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {61712db6-9895-466d-b5d3-4dda089fc043} + {34c0d75b-9140-4fc5-aa5a-fc4604163441} - {b968a863-83b0-4a30-accc-512341494dfb} + {7fdecae4-5348-4f40-ba28-37f6979cc31d} diff --git a/Crypto/samples/genrsakey/genrsakey_vs110.vcxproj b/Crypto/samples/genrsakey/genrsakey_vs110.vcxproj index d1b1b21b5..bc0a9713e 100644 --- a/Crypto/samples/genrsakey/genrsakey_vs110.vcxproj +++ b/Crypto/samples/genrsakey/genrsakey_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\genrsakey\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\genrsakey\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\genrsakey\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\genrsakey\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\genrsakey\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\genrsakey\$(Configuration)\ false diff --git a/Crypto/samples/genrsakey/genrsakey_vs110.vcxproj.filters b/Crypto/samples/genrsakey/genrsakey_vs110.vcxproj.filters index 5c9bf936f..655e682c6 100644 --- a/Crypto/samples/genrsakey/genrsakey_vs110.vcxproj.filters +++ b/Crypto/samples/genrsakey/genrsakey_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {06207a2d-dedf-49f7-afb3-d5174cf881f8} + {a452d71a-f665-4909-86f2-cb7cc0c76335} - {d5079db2-7617-4930-95d6-f9d973b5aa05} + {b0a5ddcd-e1de-457d-bfb5-8bdfe8d4a16f} diff --git a/Crypto/samples/genrsakey/genrsakey_vs120.vcxproj b/Crypto/samples/genrsakey/genrsakey_vs120.vcxproj index e6884d105..7aad097f7 100644 --- a/Crypto/samples/genrsakey/genrsakey_vs120.vcxproj +++ b/Crypto/samples/genrsakey/genrsakey_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\genrsakey\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\genrsakey\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\genrsakey\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\genrsakey\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\genrsakey\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\genrsakey\$(Configuration)\ false diff --git a/Crypto/samples/genrsakey/genrsakey_vs120.vcxproj.filters b/Crypto/samples/genrsakey/genrsakey_vs120.vcxproj.filters index e7c9d0971..230544a1f 100644 --- a/Crypto/samples/genrsakey/genrsakey_vs120.vcxproj.filters +++ b/Crypto/samples/genrsakey/genrsakey_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {6ecec714-ad56-4129-ad72-5b673781bcd8} + {781cfff5-1cc6-4b29-9507-9f9156a93ec1} - {2cfa4f3e-61be-4efa-94f3-f5768ab54ae1} + {d79809f6-1cc1-4139-b05d-88e484416d51} diff --git a/Crypto/samples/genrsakey/genrsakey_x64_vs100.vcxproj b/Crypto/samples/genrsakey/genrsakey_x64_vs100.vcxproj index 60ebfe722..35cac5964 100644 --- a/Crypto/samples/genrsakey/genrsakey_x64_vs100.vcxproj +++ b/Crypto/samples/genrsakey/genrsakey_x64_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\genrsakey\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\genrsakey\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\genrsakey\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\genrsakey\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\genrsakey\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\genrsakey\$(Configuration)\ false genrsakeyd genrsakeyd @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) libeay32.lib;ssleay32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\genrsakeyd.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) libeay32.lib;ssleay32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;libeay32mtd.lib;ssleay32mtd.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\genrsakeyd.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;libeay32mt.lib;ssleay32mt.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;libeay32mdd.lib;ssleay32mdd.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\genrsakeyd.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;libeay32md.lib;ssleay32md.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Crypto/samples/genrsakey/genrsakey_x64_vs100.vcxproj.filters b/Crypto/samples/genrsakey/genrsakey_x64_vs100.vcxproj.filters index b7dc513a0..5fb25dcfe 100644 --- a/Crypto/samples/genrsakey/genrsakey_x64_vs100.vcxproj.filters +++ b/Crypto/samples/genrsakey/genrsakey_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {525a10c8-7f70-478c-b9bf-4179b9c6fbeb} + {b87e384b-efac-47d5-a224-4c1f4f48b93b} - {70a10c57-ca6f-4a38-8475-be32c793a293} + {b69310af-2c5b-4c6d-880d-95f6bb1a2faf} diff --git a/Crypto/samples/genrsakey/genrsakey_x64_vs110.vcxproj b/Crypto/samples/genrsakey/genrsakey_x64_vs110.vcxproj index aff3073f9..3e826a61c 100644 --- a/Crypto/samples/genrsakey/genrsakey_x64_vs110.vcxproj +++ b/Crypto/samples/genrsakey/genrsakey_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\genrsakey\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\genrsakey\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\genrsakey\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\genrsakey\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\genrsakey\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\genrsakey\$(Configuration)\ false diff --git a/Crypto/samples/genrsakey/genrsakey_x64_vs110.vcxproj.filters b/Crypto/samples/genrsakey/genrsakey_x64_vs110.vcxproj.filters index 2f7b28975..45324890e 100644 --- a/Crypto/samples/genrsakey/genrsakey_x64_vs110.vcxproj.filters +++ b/Crypto/samples/genrsakey/genrsakey_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {1f5346a9-de0d-48fb-9b08-b7e89ff6f8fd} + {f4eabe15-c22a-4d86-9845-885edb731bab} - {45a48cc7-f163-46a0-8048-dbdb30f80111} + {0e3e9402-9e10-41a9-96a6-33822277f9f4} diff --git a/Crypto/samples/genrsakey/genrsakey_x64_vs120.vcxproj b/Crypto/samples/genrsakey/genrsakey_x64_vs120.vcxproj index c0edc7c00..b360cc3b5 100644 --- a/Crypto/samples/genrsakey/genrsakey_x64_vs120.vcxproj +++ b/Crypto/samples/genrsakey/genrsakey_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\genrsakey\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\genrsakey\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\genrsakey\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\genrsakey\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\genrsakey\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\genrsakey\$(Configuration)\ false diff --git a/Crypto/samples/genrsakey/genrsakey_x64_vs120.vcxproj.filters b/Crypto/samples/genrsakey/genrsakey_x64_vs120.vcxproj.filters index c6e0508f5..886aa90e2 100644 --- a/Crypto/samples/genrsakey/genrsakey_x64_vs120.vcxproj.filters +++ b/Crypto/samples/genrsakey/genrsakey_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {3bfbbf21-9cde-4f06-b1ee-aa0fa02b4102} + {8d173113-0475-4900-ad96-94c2411fe4b5} - {994bcd40-2aed-4c3a-be65-50298a6f4204} + {b2f4c8a5-bcd5-4462-8f36-0fb02306c068} diff --git a/Crypto/samples/genrsakey/genrsakey_x64_vs90.vcproj b/Crypto/samples/genrsakey/genrsakey_x64_vs90.vcproj index 1941b4e8e..fa1c417e7 100644 --- a/Crypto/samples/genrsakey/genrsakey_x64_vs90.vcproj +++ b/Crypto/samples/genrsakey/genrsakey_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> (const_cast(privateKeyPassphrase.c_str())), @@ -298,7 +298,7 @@ void RSAKeyImpl::save(std::ostream* pPublicKeyStream, std::ostream* pPrivateKeyS if (!bio) throw Poco::IOException("Cannot create BIO for writing public key"); int rc = 0; if (privateKeyPassphrase.empty()) - rc = PEM_write_bio_RSAPrivateKey(bio, _pRSA, EVP_des_ede3_cbc(), 0, 0, 0, 0); + rc = PEM_write_bio_RSAPrivateKey(bio, _pRSA, 0, 0, 0, 0, 0); else rc = PEM_write_bio_RSAPrivateKey(bio, _pRSA, EVP_des_ede3_cbc(), reinterpret_cast(const_cast(privateKeyPassphrase.c_str())), diff --git a/Crypto/testsuite/TestSuite_CE_VS90.vcproj b/Crypto/testsuite/TestSuite_CE_VS90.vcproj index 317a52f4e..8743db5b9 100644 --- a/Crypto/testsuite/TestSuite_CE_VS90.vcproj +++ b/Crypto/testsuite/TestSuite_CE_VS90.vcproj @@ -46,7 +46,8 @@ CompileAs="0" DisableSpecificWarnings="4800;" CompileForArchitecture="2" - InterworkCalls="false"/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + + + + debug_shared + SDK_AM335X_SK_WEC2013_V300 + + + debug_static_md + SDK_AM335X_SK_WEC2013_V300 + + + debug_static_mt + SDK_AM335X_SK_WEC2013_V300 + + + release_shared + SDK_AM335X_SK_WEC2013_V300 + + + release_static_md + SDK_AM335X_SK_WEC2013_V300 + + + release_static_mt + SDK_AM335X_SK_WEC2013_V300 + + + + TestSuite + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15} + en-US + 11.0 + true + SDK_AM335X_SK_WEC2013_V300 + CE800 + + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>11.0.61030.0 + TestSuited + TestSuited + TestSuited + TestSuite + TestSuite + TestSuite + + + bin\$(Platform)\shared\ + obj\TestSuite\$(Platform)\$(Configuration)\ + true + + + bin\$(Platform)\shared\ + obj\TestSuite\$(Platform)\$(Configuration)\ + false + + + bin\$(Platform)\static_mt\ + obj\TestSuite\$(Platform)\$(Configuration)\ + true + + + bin\$(Platform)\static_mt\ + obj\TestSuite\$(Platform)\$(Configuration)\ + false + + + bin\$(Platform)\static_md\ + obj\TestSuite\$(Platform)\$(Configuration)\ + true + + + bin\$(Platform)\static_md\ + obj\TestSuite\$(Platform)\$(Configuration)\ + false + + + + Win32 + + + Disabled + ..\include;..\..\CppUnit\include;..\..\Foundation\include;%(AdditionalIncludeDirectories) + _DEBUG;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebugDLL + true + true + + Level3 + ProgramDatabase + Default + + + CppUnitd.lib;ws2_32.lib;iphlpapi.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies) + bin\$(Platform)\shared\TestSuited.exe + ..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + true + bin\$(Platform)\shared\TestSuited.pdb + wmainCRTStartup + WindowsCE + + + + + Win32 + + + Disabled + true + Speed + ..\include;..\..\CppUnit\include;..\..\Foundation\include;%(AdditionalIncludeDirectories) + NDEBUG;$(ProjectName)_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDLL + false + true + Level3 + ProgramDatabase + + + CppUnit.lib;ws2_32.lib;iphlpapi.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies) + bin\$(Platform)\shared\TestSuite.exe + ..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + false + + true + true + wmainCRTStartup + WindowsCE + + + + + Win32 + + + Disabled + ..\include;..\..\CppUnit\include;..\..\Foundation\include;%(AdditionalIncludeDirectories) + _DEBUG;POCO_STATIC;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebug + true + true + + Level3 + ProgramDatabase + Default + + + CppUnitmtd.lib;iphlpapi.lib;ws2_32.lib;iphlpapi.lib;libeay32mtd.lib;ssleay32mtd.lib;Crypt32.lib;%(AdditionalDependencies) + bin\$(Platform)\static_mt\TestSuited.exe + ..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + true + bin\$(Platform)\static_mt\TestSuited.pdb + wmainCRTStartup + WindowsCE + + + + + Win32 + + + Disabled + Default + true + Speed + ..\include;..\..\CppUnit\include;..\..\Foundation\include;%(AdditionalIncludeDirectories) + NDEBUG;POCO_STATIC;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreaded + false + true + + Level3 + ProgramDatabase + Default + + + CppUnitmt.lib;iphlpapi.lib;ws2_32.lib;iphlpapi.lib;libeay32mt.lib;ssleay32mt.lib;Crypt32.lib;%(AdditionalDependencies) + bin\$(Platform)\static_mt\TestSuite.exe + ..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + false + + true + true + wmainCRTStartup + WindowsCE + + + + + Win32 + + + Disabled + ..\include;..\..\CppUnit\include;..\..\Foundation\include;%(AdditionalIncludeDirectories) + _DEBUG;POCO_STATIC;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebugDLL + true + true + + Level3 + ProgramDatabase + Default + + + CppUnitmdd.lib;iphlpapi.lib;ws2_32.lib;iphlpapi.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies) + bin\$(Platform)\static_md\TestSuited.exe + ..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + true + bin\$(Platform)\static_md\TestSuited.pdb + wmainCRTStartup + WindowsCE + + + + + Win32 + + + Disabled + Default + true + Speed + ..\include;..\..\CppUnit\include;..\..\Foundation\include;%(AdditionalIncludeDirectories) + NDEBUG;POCO_STATIC;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDLL + false + true + + Level3 + ProgramDatabase + Default + + + CppUnitmd.lib;iphlpapi.lib;ws2_32.lib;iphlpapi.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies) + bin\$(Platform)\static_md\TestSuite.exe + ..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + false + + true + true + wmainCRTStartup + WindowsCE + + + + + + + + + + + + + + + + + + diff --git a/Crypto/testsuite/TestSuite_WEC2013_vs110.vcxproj.filters b/Crypto/testsuite/TestSuite_WEC2013_vs110.vcxproj.filters new file mode 100644 index 000000000..e888c42a4 --- /dev/null +++ b/Crypto/testsuite/TestSuite_WEC2013_vs110.vcxproj.filters @@ -0,0 +1,60 @@ + + + + + {56766366-6753-40a6-b713-6aae2550c683} + + + {1c565bd2-4ab4-48d5-8521-0ef26fe45734} + + + {0b5d3f57-f471-453b-90d3-c60a72a1a303} + + + {36168708-aa2d-42c9-af0d-f3db5765763a} + + + {a04b787a-10c3-4f4c-a02e-03557743e4e4} + + + {45cab977-937c-4a41-944c-c0fdc1bb81be} + + + {05937c9d-796e-4983-a091-c17315fe5b08} + + + {a1cb6b29-f315-4cd1-adc3-c63187d24681} + + + + + Crypto\Header Files + + + Crypto\Header Files + + + Crypto\Header Files + + + _Suite\Header Files + + + + + Crypto\Header Files + + + Crypto\Source Files + + + Crypto\Source Files + + + _Suite\Source Files + + + _Driver\Source Files + + + \ No newline at end of file diff --git a/Crypto/testsuite/TestSuite_WEC2013_vs120.vcxproj b/Crypto/testsuite/TestSuite_WEC2013_vs120.vcxproj index 107e9eebf..c51749146 100644 --- a/Crypto/testsuite/TestSuite_WEC2013_vs120.vcxproj +++ b/Crypto/testsuite/TestSuite_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false diff --git a/Crypto/testsuite/TestSuite_WEC2013_vs120.vcxproj.filters b/Crypto/testsuite/TestSuite_WEC2013_vs120.vcxproj.filters index 6b79f7ffb..5b8c2106b 100644 --- a/Crypto/testsuite/TestSuite_WEC2013_vs120.vcxproj.filters +++ b/Crypto/testsuite/TestSuite_WEC2013_vs120.vcxproj.filters @@ -2,28 +2,28 @@ - {a8dad6b3-6d5e-46bf-9943-6d3f354a31c8} + {a9d37d58-97b7-4a2f-87f4-7c1fd177bc6b} - {46bfd0c8-de88-439a-8d2a-40dbea9e2929} + {d85cca0c-2a70-48cc-9d55-6a018ab72316} - {7f6abc0f-78be-4cc7-9fdd-414ac6b4b456} + {7a67e61d-eb84-4fea-9221-19ff38e1aae3} - {4780960b-518c-4b44-a6bd-6999d5ab62bd} + {ccf826a6-e5ed-49fc-a453-c6047b9a462f} - {5b4ccfd9-3952-4484-85ad-f16da5725645} + {b792f82b-acc8-4110-baf6-b95012ea3b9e} - {6b913a39-cc72-49f8-984b-50e638d73efc} + {b5fd1883-246f-4fe4-a3c2-f4e6aa3d203a} - {d070333d-da5d-4793-bb03-2adaf27f0012} + {afc7796c-ecb0-49c6-aa74-16cf004fd511} - {0a116d4c-a872-42c8-b9bb-b2b154f83e50} + {3102ff9f-41d9-48fb-91e8-934b848d7bf6} diff --git a/Crypto/testsuite/TestSuite_vs100.vcxproj b/Crypto/testsuite/TestSuite_vs100.vcxproj index 85bee59c7..f6deb69bf 100644 --- a/Crypto/testsuite/TestSuite_vs100.vcxproj +++ b/Crypto/testsuite/TestSuite_vs100.vcxproj @@ -87,22 +87,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false TestSuited TestSuited @@ -129,6 +129,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitd.lib;WinTestRunnerd.lib;ws2_32.lib;iphlpapi.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies) @@ -139,6 +140,7 @@ bin\TestSuited.pdb Windows MachineX86 + %(AdditionalOptions) @@ -161,6 +163,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnit.lib;WinTestRunner.lib;ws2_32.lib;iphlpapi.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies) @@ -171,6 +174,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -191,6 +195,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmtd.lib;WinTestRunnermtd.lib;iphlpapi.lib;winmm.lib;nafxcwd.lib;libcmtd.lib;WinTestRunner.res;ws2_32.lib;iphlpapi.lib;libeay32mtd.lib;ssleay32mtd.lib;Crypt32.lib;%(AdditionalDependencies) @@ -202,6 +207,7 @@ bin\static_mt\TestSuited.pdb Windows MachineX86 + %(AdditionalOptions) @@ -224,6 +230,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmt.lib;WinTestRunnermt.lib;iphlpapi.lib;winmm.lib;nafxcw.lib;libcmt.lib;WinTestRunner.res;ws2_32.lib;iphlpapi.lib;libeay32mt.lib;ssleay32mt.lib;Crypt32.lib;%(AdditionalDependencies) @@ -235,6 +242,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -255,6 +263,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmdd.lib;WinTestRunnermdd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;ws2_32.lib;iphlpapi.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies) @@ -265,6 +274,7 @@ bin\static_md\TestSuited.pdb Windows MachineX86 + %(AdditionalOptions) @@ -287,6 +297,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmd.lib;WinTestRunnermd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;ws2_32.lib;iphlpapi.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies) @@ -297,6 +308,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Crypto/testsuite/TestSuite_vs100.vcxproj.filters b/Crypto/testsuite/TestSuite_vs100.vcxproj.filters index 190abbb10..8266c79e1 100644 --- a/Crypto/testsuite/TestSuite_vs100.vcxproj.filters +++ b/Crypto/testsuite/TestSuite_vs100.vcxproj.filters @@ -2,28 +2,28 @@ - {4621c90a-5aad-472b-9283-240375fa6e25} + {87bb4d8e-139a-4eaf-a0ef-7c60ec533010} - {2ce1e7d6-7724-46cc-acab-486529daf8f9} + {db3c9a05-52d8-499c-9856-9aa7c1f86840} - {99a1ac31-2086-4059-abbf-f156b6e684b6} + {0c95dbd7-4f63-4ca8-8e6d-219092dc1076} - {acaedaf7-94a9-42ab-8c8a-6de861a7e7bf} + {a71bd243-26ea-4212-bdec-8f40900d650b} - {1a8a1c93-0f43-4d85-bd30-fd5b98b31dee} + {8f8e33a6-6e5d-4d61-b887-76de65e031fc} - {4d426cfe-f97b-4643-8e85-ab67a0a85b98} + {c525e2f8-7b0d-43ee-913d-1efade067f25} - {3cd6e222-0af4-4e00-b45e-66116b303436} + {b1cc1461-f22d-414a-8b20-8063d63a56ba} - {fee1fd38-d609-4bc1-8479-adb99a636d12} + {265d75ca-d602-4968-aae1-334c8ca36289} diff --git a/Crypto/testsuite/TestSuite_vs110.vcxproj b/Crypto/testsuite/TestSuite_vs110.vcxproj index ceb7052ad..43d683245 100644 --- a/Crypto/testsuite/TestSuite_vs110.vcxproj +++ b/Crypto/testsuite/TestSuite_vs110.vcxproj @@ -101,32 +101,32 @@ bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false diff --git a/Crypto/testsuite/TestSuite_vs110.vcxproj.filters b/Crypto/testsuite/TestSuite_vs110.vcxproj.filters index 4ba33b5d5..592763cb4 100644 --- a/Crypto/testsuite/TestSuite_vs110.vcxproj.filters +++ b/Crypto/testsuite/TestSuite_vs110.vcxproj.filters @@ -2,28 +2,28 @@ - {afb482f9-9456-45d5-b1b3-3b0bf5d3a051} + {5bd73ba3-27b9-4b9a-bd8b-c9a4ab6008de} - {39d00675-e537-44bc-8b07-e5626b01413b} + {cb0f4d56-7391-4266-a017-61517465abcd} - {872ab95e-b850-47d7-be92-3ba148fa1ca6} + {134c3175-eebe-4a39-a0b4-117e95676674} - {55160076-ae30-4c25-9886-407361c6d088} + {46fc7538-4362-4d8d-b01b-c6e9182d2085} - {ab869f6b-fa9b-40df-8e16-3bc421c2625d} + {0d48ae7b-b521-460b-b801-51d33763a720} - {91e1cf40-3c70-436b-8f28-fb7ae7693139} + {646a6d05-7a48-45ce-9967-05be70996768} - {54f89e60-2eda-437d-86eb-d5aac25a430e} + {27af345e-157c-45f6-badf-caab0d373dea} - {8985bef7-e3d3-4ca1-8ac4-7cbee97c00a3} + {37471a8f-51a3-4f86-a8f8-b11d980180da} diff --git a/Crypto/testsuite/TestSuite_vs120.vcxproj b/Crypto/testsuite/TestSuite_vs120.vcxproj index bc40f4813..56501c2eb 100644 --- a/Crypto/testsuite/TestSuite_vs120.vcxproj +++ b/Crypto/testsuite/TestSuite_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false diff --git a/Crypto/testsuite/TestSuite_vs120.vcxproj.filters b/Crypto/testsuite/TestSuite_vs120.vcxproj.filters index 2e35af01e..91cc581c6 100644 --- a/Crypto/testsuite/TestSuite_vs120.vcxproj.filters +++ b/Crypto/testsuite/TestSuite_vs120.vcxproj.filters @@ -2,28 +2,28 @@ - {48f9b562-896b-483c-abc5-a06b0702df13} + {bbaa03af-b73e-4f3a-a1a8-e767888865ac} - {ad340860-dbfb-4709-8050-017c5930022b} + {48d0e2ec-4948-4f8e-ba65-9eb01801a4e4} - {fbd0bfeb-ac4b-4cb7-bcdf-a46ab9c5a228} + {3de57f06-3410-487d-863d-f5dd0732a048} - {116f610a-9caf-4807-bd48-38a01a5c299a} + {ebe6527a-0ff7-4cba-ad33-f7d055d066cc} - {5b1b5c78-d5e5-4131-813e-379a01662cfd} + {d40e9c54-d89f-4d02-a008-541870b5f33e} - {84464e68-c57d-4edb-8ea1-9f791aca37b4} + {24bcd4be-bfd8-4c14-8c84-6df36969489c} - {3b2154ac-019f-4a30-95c2-84363a4ae6cb} + {a9f74ae1-ec96-4f5e-8bb5-5c2dc04c0841} - {edcf1dab-69c7-406b-9ca6-d9f9ba3bb27f} + {41ae5636-eaf6-42c7-bdf4-623a570315c8} diff --git a/Crypto/testsuite/TestSuite_x64_vs100.vcxproj b/Crypto/testsuite/TestSuite_x64_vs100.vcxproj index 9d0f4ddb3..0aa889e9c 100644 --- a/Crypto/testsuite/TestSuite_x64_vs100.vcxproj +++ b/Crypto/testsuite/TestSuite_x64_vs100.vcxproj @@ -87,22 +87,22 @@ <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false TestSuited TestSuited @@ -129,6 +129,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitd.lib;WinTestRunnerd.lib;ws2_32.lib;iphlpapi.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies) @@ -139,6 +140,7 @@ bin64\TestSuited.pdb Windows MachineX64 + %(AdditionalOptions) @@ -161,6 +163,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnit.lib;WinTestRunner.lib;ws2_32.lib;iphlpapi.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies) @@ -171,6 +174,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -191,6 +195,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmtd.lib;WinTestRunnermtd.lib;iphlpapi.lib;winmm.lib;nafxcwd.lib;libcmtd.lib;WinTestRunner.res;ws2_32.lib;iphlpapi.lib;libeay32mtd.lib;ssleay32mtd.lib;Crypt32.lib;%(AdditionalDependencies) @@ -202,6 +207,7 @@ bin64\static_mt\TestSuited.pdb Windows MachineX64 + %(AdditionalOptions) @@ -224,6 +230,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmt.lib;WinTestRunnermt.lib;iphlpapi.lib;winmm.lib;nafxcw.lib;libcmt.lib;WinTestRunner.res;ws2_32.lib;iphlpapi.lib;libeay32mt.lib;ssleay32mt.lib;Crypt32.lib;%(AdditionalDependencies) @@ -235,6 +242,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -255,6 +263,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmdd.lib;WinTestRunnermdd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;ws2_32.lib;iphlpapi.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies) @@ -265,6 +274,7 @@ bin64\static_md\TestSuited.pdb Windows MachineX64 + %(AdditionalOptions) @@ -287,6 +297,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmd.lib;WinTestRunnermd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;ws2_32.lib;iphlpapi.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies) @@ -297,6 +308,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Crypto/testsuite/TestSuite_x64_vs100.vcxproj.filters b/Crypto/testsuite/TestSuite_x64_vs100.vcxproj.filters index 278468024..5e1b4066a 100644 --- a/Crypto/testsuite/TestSuite_x64_vs100.vcxproj.filters +++ b/Crypto/testsuite/TestSuite_x64_vs100.vcxproj.filters @@ -2,28 +2,28 @@ - {85927cf0-d272-498e-a26e-f786cd35a169} + {26bcf625-986e-4ba4-ba65-a675f0049827} - {315e5983-1e6a-479e-b064-cf03634ab9b3} + {9374b1f4-a192-4e1d-9400-6777dc29d389} - {1ede210b-c13d-43a3-864a-277a8df65d3b} + {2cf11b2b-4780-491d-92f2-ff92d93470c5} - {db36b730-12b2-43f4-8f8e-94187ead0774} + {3be1211e-35e3-4d2f-ba59-d19e80ac849f} - {1487ec8b-ddc7-4ef7-af52-1525ee0ec7c3} + {8366715e-a80e-46b0-b605-6e10fec52783} - {901272d6-9d9f-4195-942a-508f4a1f8311} + {78a866be-4b06-4c16-bc82-6e0c92114356} - {3d8b8482-45cf-4086-8680-2e18f0354b14} + {0d718f89-ccdd-4163-98c7-cbae9b230693} - {391cc7d4-ef88-4fb3-8424-f8725042939a} + {477709e5-8d09-4fcb-8873-a6d9257fef74} diff --git a/Crypto/testsuite/TestSuite_x64_vs110.vcxproj b/Crypto/testsuite/TestSuite_x64_vs110.vcxproj index 8fa131358..8bc61ef72 100644 --- a/Crypto/testsuite/TestSuite_x64_vs110.vcxproj +++ b/Crypto/testsuite/TestSuite_x64_vs110.vcxproj @@ -101,32 +101,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false diff --git a/Crypto/testsuite/TestSuite_x64_vs110.vcxproj.filters b/Crypto/testsuite/TestSuite_x64_vs110.vcxproj.filters index 66b83db4a..6404c9da0 100644 --- a/Crypto/testsuite/TestSuite_x64_vs110.vcxproj.filters +++ b/Crypto/testsuite/TestSuite_x64_vs110.vcxproj.filters @@ -2,28 +2,28 @@ - {6d9f5c44-c287-449b-a42e-e0a1b3cb2973} + {dfb2552c-128b-48f5-bc53-746d68020c92} - {20106184-c958-4c1a-b91a-ffca6f92bd39} + {f9ddc88f-6abe-49f4-93c6-e3359927f60f} - {f9fcaf13-65c6-404c-b2a8-e344ef28b873} + {bf33d8b1-f820-4ffd-84b1-c0e6d66fa31c} - {ce941eb8-82e4-4f95-94e0-b6a367786aab} + {61be5605-8814-4efc-863d-9e9a2184e85e} - {e9360f27-c248-4b0d-a445-5daa74b25fff} + {6b6fdd5e-dba9-4ce5-9055-743068a8300d} - {a7a4e536-3a7b-4835-944c-48c0513466cb} + {43067b02-ec59-42ed-973a-4d42d79a49f7} - {2a8d2047-6eee-4337-a384-2323f385e24b} + {6c0a2fcf-bdd2-4692-947c-37e14e4417cb} - {8d23e281-8672-4841-b594-3176be29afa2} + {c0cb4dbd-cd58-4956-8a76-94eb33948802} diff --git a/Crypto/testsuite/TestSuite_x64_vs120.vcxproj b/Crypto/testsuite/TestSuite_x64_vs120.vcxproj index dd2444167..ae0b48dd4 100644 --- a/Crypto/testsuite/TestSuite_x64_vs120.vcxproj +++ b/Crypto/testsuite/TestSuite_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false diff --git a/Crypto/testsuite/TestSuite_x64_vs120.vcxproj.filters b/Crypto/testsuite/TestSuite_x64_vs120.vcxproj.filters index 27648237f..6de4aeda5 100644 --- a/Crypto/testsuite/TestSuite_x64_vs120.vcxproj.filters +++ b/Crypto/testsuite/TestSuite_x64_vs120.vcxproj.filters @@ -2,28 +2,28 @@ - {c412855c-1e30-4905-9ff7-3c30bff01291} + {59e3d366-ed79-441f-bcc1-6a22895db1f4} - {9c772fa0-b673-4808-af38-5f0726af24e6} + {e0a51a56-0ad2-445a-8d9a-05368a4a5502} - {903372ff-71ae-4115-bba0-8fd38cd83479} + {f01b38e9-ca45-4b19-87ac-80932161ccf5} - {02f4002e-ac7f-4131-af9e-55abd820f5a3} + {654e5063-717e-43aa-8b55-3421ba542e64} - {d382268d-929e-4d64-b6b7-895b9e129110} + {a4a8eb60-3fde-4d63-b6bb-6b2f5a802f80} - {05ec5662-960a-40f7-a23d-6ca0ba6a1c19} + {d4da00d4-9b9f-4d67-8eae-f47136eb9ff5} - {36d3cb9a-7dbc-4d06-92d5-c08b30641acf} + {3542515f-9aa7-443a-ba2b-d9afe37a7b6c} - {c7a9fab8-72a6-406f-bdf3-f601fbebb862} + {5bd95d67-a54d-4a1e-9614-54e09db8bfb2} diff --git a/Crypto/testsuite/TestSuite_x64_vs90.vcproj b/Crypto/testsuite/TestSuite_x64_vs90.vcproj index c85cf3840..9079582f6 100644 --- a/Crypto/testsuite/TestSuite_x64_vs90.vcproj +++ b/Crypto/testsuite/TestSuite_x64_vs90.vcproj @@ -47,7 +47,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> @@ -73,7 +74,7 @@ void CryptoTest::testEncryptDecrypt() std::string in(n, 'x'); std::string out = pCipher->encryptString(in, Cipher::ENC_NONE); std::string result = pCipher->decryptString(out, Cipher::ENC_NONE); - poco_assert (in == result); + assert (in == result); } for (std::size_t n = 1; n < MAX_DATA_SIZE; n++) @@ -81,7 +82,7 @@ void CryptoTest::testEncryptDecrypt() std::string in(n, 'x'); std::string out = pCipher->encryptString(in, Cipher::ENC_BASE64); std::string result = pCipher->decryptString(out, Cipher::ENC_BASE64); - poco_assert (in == result); + assert (in == result); } for (std::size_t n = 1; n < MAX_DATA_SIZE; n++) @@ -89,7 +90,7 @@ void CryptoTest::testEncryptDecrypt() std::string in(n, 'x'); std::string out = pCipher->encryptString(in, Cipher::ENC_BINHEX); std::string result = pCipher->decryptString(out, Cipher::ENC_BINHEX); - poco_assert (in == result); + assert (in == result); } } @@ -104,7 +105,7 @@ void CryptoTest::testEncryptDecryptWithSalt() std::string in(n, 'x'); std::string out = pCipher->encryptString(in, Cipher::ENC_NONE); std::string result = pCipher2->decryptString(out, Cipher::ENC_NONE); - poco_assert (in == result); + assert (in == result); } for (std::size_t n = 1; n < MAX_DATA_SIZE; n++) @@ -112,7 +113,7 @@ void CryptoTest::testEncryptDecryptWithSalt() std::string in(n, 'x'); std::string out = pCipher->encryptString(in, Cipher::ENC_BASE64); std::string result = pCipher2->decryptString(out, Cipher::ENC_BASE64); - poco_assert (in == result); + assert (in == result); } for (std::size_t n = 1; n < MAX_DATA_SIZE; n++) @@ -120,7 +121,7 @@ void CryptoTest::testEncryptDecryptWithSalt() std::string in(n, 'x'); std::string out = pCipher->encryptString(in, Cipher::ENC_BINHEX); std::string result = pCipher2->decryptString(out, Cipher::ENC_BINHEX); - poco_assert (in == result); + assert (in == result); } } @@ -134,7 +135,7 @@ void CryptoTest::testEncryptDecryptDESECB() std::string in(n, 'x'); std::string out = pCipher->encryptString(in, Cipher::ENC_NONE); std::string result = pCipher->decryptString(out, Cipher::ENC_NONE); - poco_assert (in == result); + assert (in == result); } for (std::size_t n = 1; n < MAX_DATA_SIZE; n++) @@ -142,7 +143,7 @@ void CryptoTest::testEncryptDecryptDESECB() std::string in(n, 'x'); std::string out = pCipher->encryptString(in, Cipher::ENC_BASE64); std::string result = pCipher->decryptString(out, Cipher::ENC_BASE64); - poco_assert (in == result); + assert (in == result); } for (std::size_t n = 1; n < MAX_DATA_SIZE; n++) @@ -150,11 +151,46 @@ void CryptoTest::testEncryptDecryptDESECB() std::string in(n, 'x'); std::string out = pCipher->encryptString(in, Cipher::ENC_BINHEX); std::string result = pCipher->decryptString(out, Cipher::ENC_BINHEX); - poco_assert (in == result); + assert (in == result); } } +void CryptoTest::testPassword() +{ + CipherKey key("aes256", "password", "salt"); + + std::ostringstream keyStream; + Poco::Base64Encoder base64KeyEnc(keyStream); + base64KeyEnc.write(reinterpret_cast(&key.getKey()[0]), key.keySize()); + base64KeyEnc.close(); + std::string base64Key = keyStream.str(); + assert (base64Key == "hIzxBt58GDd7/6mRp88bewKk42lM4QwaF78ek0FkVoA="); +} + + +void CryptoTest::testEncryptInterop() +{ + Cipher::Ptr pCipher = CipherFactory::defaultFactory().createCipher(CipherKey("aes256", "password", "salt")); + + const std::string plainText = "This is a secret message."; + const std::string expectedCipherText = "9HITTPaU3A/LaZzldbdnRZ109DKlshouKren/n8BsHc="; + std::string cipherText = pCipher->encryptString(plainText, Cipher::ENC_BASE64); + assert (cipherText == expectedCipherText); +} + + +void CryptoTest::testDecryptInterop() +{ + Cipher::Ptr pCipher = CipherFactory::defaultFactory().createCipher(CipherKey("aes256", "password", "salt")); + + const std::string expectedPlainText = "This is a secret message."; + const std::string cipherText = "9HITTPaU3A/LaZzldbdnRZ109DKlshouKren/n8BsHc="; + std::string plainText = pCipher->decryptString(cipherText, Cipher::ENC_BASE64); + assert (plainText == expectedPlainText); +} + + void CryptoTest::testStreams() { Cipher::Ptr pCipher = CipherFactory::defaultFactory().createCipher(CipherKey("aes256")); @@ -229,6 +265,9 @@ CppUnit::Test* CryptoTest::suite() CppUnit_addTest(pSuite, CryptoTest, testEncryptDecrypt); CppUnit_addTest(pSuite, CryptoTest, testEncryptDecryptWithSalt); CppUnit_addTest(pSuite, CryptoTest, testEncryptDecryptDESECB); + CppUnit_addTest(pSuite, CryptoTest, testPassword); + CppUnit_addTest(pSuite, CryptoTest, testEncryptInterop); + CppUnit_addTest(pSuite, CryptoTest, testDecryptInterop); CppUnit_addTest(pSuite, CryptoTest, testStreams); CppUnit_addTest(pSuite, CryptoTest, testCertificate); diff --git a/Crypto/testsuite/src/CryptoTest.h b/Crypto/testsuite/src/CryptoTest.h index 2c90762c0..18390f670 100644 --- a/Crypto/testsuite/src/CryptoTest.h +++ b/Crypto/testsuite/src/CryptoTest.h @@ -35,6 +35,9 @@ public: void testEncryptDecryptWithSalt(); void testEncryptDecryptDESECB(); void testStreams(); + void testPassword(); + void testEncryptInterop(); + void testDecryptInterop(); void testCertificate(); void setUp(); diff --git a/Crypto/testsuite/src/RSATest.cpp b/Crypto/testsuite/src/RSATest.cpp index 63157a771..7f540900f 100644 --- a/Crypto/testsuite/src/RSATest.cpp +++ b/Crypto/testsuite/src/RSATest.cpp @@ -108,6 +108,29 @@ void RSATest::testNewKeys() } +void RSATest::testNewKeysNoPassphrase() +{ + RSAKey key(RSAKey::KL_1024, RSAKey::EXP_SMALL); + std::ostringstream strPub; + std::ostringstream strPriv; + key.save(&strPub, &strPriv); + std::string pubKey = strPub.str(); + std::string privKey = strPriv.str(); + + // now do the round trip + std::istringstream iPub(pubKey); + std::istringstream iPriv(privKey); + RSAKey key2(&iPub, &iPriv); + + std::istringstream iPriv2(privKey); + RSAKey key3(0, &iPriv2); + std::ostringstream strPub3; + key3.save(&strPub3); + std::string pubFromPrivate = strPub3.str(); + assert (pubFromPrivate == pubKey); +} + + void RSATest::testSign() { std::string msg("Test this sign message"); @@ -244,6 +267,7 @@ CppUnit::Test* RSATest::suite() CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("RSATest"); CppUnit_addTest(pSuite, RSATest, testNewKeys); + CppUnit_addTest(pSuite, RSATest, testNewKeysNoPassphrase); CppUnit_addTest(pSuite, RSATest, testSign); CppUnit_addTest(pSuite, RSATest, testSignSha256); CppUnit_addTest(pSuite, RSATest, testSignManipulated); diff --git a/Crypto/testsuite/src/RSATest.h b/Crypto/testsuite/src/RSATest.h index 0014ecde6..ebef26753 100644 --- a/Crypto/testsuite/src/RSATest.h +++ b/Crypto/testsuite/src/RSATest.h @@ -27,6 +27,7 @@ public: ~RSATest(); void testNewKeys(); + void testNewKeysNoPassphrase(); void testSign(); void testSignSha256(); void testSignManipulated(); diff --git a/DLLVersion.rc b/DLLVersion.rc index 230b4ab1e..4667f3d3c 100644 --- a/DLLVersion.rc +++ b/DLLVersion.rc @@ -4,8 +4,8 @@ #include "winres.h" -#define POCO_VERSION 1,5,3,0 -#define POCO_VERSION_STR "1.5.3" +#define POCO_VERSION 1,5,4,0 +#define POCO_VERSION_STR "1.5.4" VS_VERSION_INFO VERSIONINFO FILEVERSION POCO_VERSION diff --git a/Data/Data_CE_vs90.vcproj b/Data/Data_CE_vs90.vcproj index 6469c8bab..6f95a0f62 100644 --- a/Data/Data_CE_vs90.vcproj +++ b/Data/Data_CE_vs90.vcproj @@ -44,7 +44,8 @@ DebugInformationFormat="3" DisableSpecificWarnings="4800;" CompileForArchitecture="2" - InterworkCalls="false"/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> @@ -274,7 +280,8 @@ Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" CompileAs="0" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> diff --git a/Data/Data_VS80.vcproj b/Data/Data_VS80.vcproj index eba93bce6..8a66e76db 100644 --- a/Data/Data_VS80.vcproj +++ b/Data/Data_VS80.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="4" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> ..\bin\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Data\$(Platform)\$(Configuration)\ true true ..\bin\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Data\$(Platform)\$(Configuration)\ false true ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Data\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Data\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Data\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Data\$(Platform)\$(Configuration)\ diff --git a/Data/Data_WEC2013_vs110.vcxproj.filters b/Data/Data_WEC2013_vs110.vcxproj.filters index 5c7ec2a7b..408e625bc 100644 --- a/Data/Data_WEC2013_vs110.vcxproj.filters +++ b/Data/Data_WEC2013_vs110.vcxproj.filters @@ -2,31 +2,31 @@ - {f44b968d-9dc8-43a7-b510-0ebd19d060f8} + {295db028-0b59-4b8a-a86a-5ac18746d26f} - {21957de8-c972-48b4-9b84-c022dbf1dee0} + {7733e8c6-ae10-4fa8-ba8f-f6f6e6530d29} - {064640ba-ae38-4174-99a2-b3e2dea76651} + {83f82fc3-cc18-4939-9111-7c74f7e27495} - {3487e3be-5e4c-4bd4-90a4-02dffd20e244} + {dc2b1ffb-2ea1-44bf-9c31-cacfa11616e0} - {3e1983c7-a9eb-4a29-8a8e-c1bc8389f01a} + {69b72031-91ab-4e16-ad88-adb84106a17a} - {d4ca8ffc-7cfa-462c-9df5-252e3ba96370} + {a4e83e6a-dacf-4003-8f38-eef1887bb94d} - {10927b10-8079-40d1-9981-baef60e0a796} + {3eccc233-5339-4735-a587-79ff60c724ec} - {36fb7587-df2d-4d84-9d49-4c2934e714e1} + {d755b4c3-a15f-4932-9e73-0931df81bab1} - {010aad65-56a1-4fc9-9a65-d3905c2843d1} + {2433047c-4960-4404-b4ad-c22eb6543208} diff --git a/Data/Data_WEC2013_vs120.vcxproj b/Data/Data_WEC2013_vs120.vcxproj index 785618118..aef4177e7 100644 --- a/Data/Data_WEC2013_vs120.vcxproj +++ b/Data/Data_WEC2013_vs120.vcxproj @@ -98,31 +98,31 @@ ..\bin\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Data\$(Platform)\$(Configuration)\ true true ..\bin\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Data\$(Platform)\$(Configuration)\ false true ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Data\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Data\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Data\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Data\$(Platform)\$(Configuration)\ diff --git a/Data/Data_WEC2013_vs120.vcxproj.filters b/Data/Data_WEC2013_vs120.vcxproj.filters index c04792168..55a9038d0 100644 --- a/Data/Data_WEC2013_vs120.vcxproj.filters +++ b/Data/Data_WEC2013_vs120.vcxproj.filters @@ -2,31 +2,31 @@ - {0bda460a-cdb5-4d7d-b51d-5ba3b8e82091} + {78f8189d-82df-4265-a7b6-93c269a719b2} - {44df89fd-15f3-45c6-afaa-702285b285c1} + {e0fe4b84-eb89-4180-88dd-7d7facd23fbb} - {8da2c181-e3a0-4c7f-aae1-c98fea9b1a23} + {bbb99129-e8e7-4406-956c-1eba8cadac0e} - {dc45bc8f-5e8e-4cfc-914a-674670b269a6} + {ef1c1498-753b-42ea-b85b-5756bc9a6704} - {75c165ad-2c6f-4bde-9b14-9a58d309e6ff} + {f5d650c5-a035-4118-bb40-cdfba396c3ce} - {3925287c-a819-4923-b0d2-87681c0f01cc} + {4adf2c0b-9686-45a7-b36f-e3b82b558cd9} - {ad277f04-b7a2-490e-8ec0-b20715328734} + {0ca25e1c-5f3f-4058-bff3-64e3254d635e} - {ee55d044-15cd-4fad-8dae-e791e402323c} + {aa21cbfb-7561-4fbc-b56a-d44c59652f91} - {6a9f5129-c078-4275-934d-27c1452d6ccd} + {a0574be7-4ca4-4b4d-bace-88fe05d1dc5e} diff --git a/Data/Data_vs100.vcxproj b/Data/Data_vs100.vcxproj index 9a294b08c..a5b6e3dec 100644 --- a/Data/Data_vs100.vcxproj +++ b/Data/Data_vs100.vcxproj @@ -81,19 +81,19 @@ <_ProjectFileVersion>10.0.40219.1 ..\bin\ - obj\$(Configuration)\ + obj\Data\$(Configuration)\ true ..\bin\ - obj\$(Configuration)\ + obj\Data\$(Configuration)\ false ..\lib\ - obj\$(Configuration)\ + obj\Data\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Data\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Data\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Data\$(Configuration)\ PocoDatad PocoDatamdd PocoDatamtd diff --git a/Data/Data_vs100.vcxproj.filters b/Data/Data_vs100.vcxproj.filters index c6b39b8ea..5abbaedb0 100644 --- a/Data/Data_vs100.vcxproj.filters +++ b/Data/Data_vs100.vcxproj.filters @@ -2,31 +2,31 @@ - {afa42351-68d4-4d2a-8022-b799fa480ea9} + {4d489dfb-7f87-4ee8-83f8-a7e3ec53aeb1} - {145d7a8b-8e26-4394-8592-c712c3441460} + {ae810660-c0de-4497-a610-ee60e1779e57} - {b65f5e01-39e8-4750-b744-fd700352ffcb} + {fab4df87-0783-41f1-bde7-d01ad342aae4} - {4e3d1080-7589-4aff-aeca-944050b07b64} + {58b1ef86-afc4-44d5-984c-13d4f5eab89d} - {384eb705-4c3c-4f7b-9912-acd51f55951d} + {ae56658c-adce-4a96-a044-adeae4dd555d} - {212c8739-ec8f-4465-a20e-8dd790eb6dc6} + {6df742b1-d97c-4db4-a4d2-88c1433e84bb} - {080509b9-71ef-46b7-9aca-4bfb915119db} + {0ff997a5-0a05-4665-82ba-bcc09b7f6b6e} - {e4c83544-1cbc-4c32-8967-d3894bc96751} + {693244e3-5458-487b-ba87-7292cea4895c} - {40a2f611-f1e9-471c-83df-087ce92387ee} + {0edb98dd-4d2f-4a73-bdad-0f1f1d5e2157} diff --git a/Data/Data_vs110.vcxproj b/Data/Data_vs110.vcxproj index fca0e6027..bd2fbaa87 100644 --- a/Data/Data_vs110.vcxproj +++ b/Data/Data_vs110.vcxproj @@ -95,29 +95,29 @@ ..\bin\ - obj\$(Configuration)\ + obj\Data\$(Configuration)\ true ..\bin\ - obj\$(Configuration)\ + obj\Data\$(Configuration)\ false ..\lib\ - obj\$(Configuration)\ + obj\Data\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Data\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Data\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Data\$(Configuration)\ diff --git a/Data/Data_vs110.vcxproj.filters b/Data/Data_vs110.vcxproj.filters index 198701508..2862fd9d3 100644 --- a/Data/Data_vs110.vcxproj.filters +++ b/Data/Data_vs110.vcxproj.filters @@ -2,31 +2,31 @@ - {c496632b-1de8-43f0-8273-3072e7bef4d2} + {3c674a8a-7f23-45e4-b7ef-727c1f1cfe78} - {f7ff3b6e-20ac-465d-be1f-1b47279b114c} + {0969fede-53c0-4a06-a238-74ee67e77d61} - {9828a419-7a9a-46a8-8789-fde055be7ef5} + {9cb43d66-bc91-4771-9c97-5a7fb2594ef1} - {30e83b7a-86fb-4e5b-850c-b1a6deb60eeb} + {7f9b39fb-ac4e-46a0-bc96-8814b86507b2} - {7ecb86da-576c-433f-a4de-cfb07f55c6f2} + {5e7f20af-c1f1-4096-927d-4869974f3591} - {c1cda2f8-5eb0-4e31-a3a2-cc9fe608f39f} + {9e4db8ce-d06d-4bf0-938e-e27878d1aaa5} - {72110907-de19-4079-a7a5-ff9ad4289bf8} + {9aee0a7a-d51a-4ea9-81b7-70f8ffa117ea} - {9b33fb94-0890-4d7d-bfc3-91e269dc002a} + {0293f19d-21e6-4c70-bea9-9a9b14b79e43} - {3f180cc1-81e8-4f4c-90a6-1f5fffbe5751} + {09372267-d0be-4abe-8091-18ffde0abf90} diff --git a/Data/Data_vs120.vcxproj b/Data/Data_vs120.vcxproj index f1eff933f..be2a603e9 100644 --- a/Data/Data_vs120.vcxproj +++ b/Data/Data_vs120.vcxproj @@ -95,29 +95,29 @@ ..\bin\ - obj\$(Configuration)\ + obj\Data\$(Configuration)\ true ..\bin\ - obj\$(Configuration)\ + obj\Data\$(Configuration)\ false ..\lib\ - obj\$(Configuration)\ + obj\Data\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Data\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Data\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Data\$(Configuration)\ diff --git a/Data/Data_vs120.vcxproj.filters b/Data/Data_vs120.vcxproj.filters index dbbffc02b..1cac5f711 100644 --- a/Data/Data_vs120.vcxproj.filters +++ b/Data/Data_vs120.vcxproj.filters @@ -2,31 +2,31 @@ - {ee50f06d-5d07-47c0-aa6b-a6dd36a937c1} + {eb7a4af1-6e5f-49ba-8704-a3bb72d53d75} - {ea307c2c-dacc-4201-96a5-bdf2d27ba120} + {7cca1d92-0e3f-4554-b84e-1d7f16f7ff96} - {88601bf9-4283-44aa-b05f-4fe99f998be9} + {277068ee-dff9-4e58-9d82-f711ef9b6b6e} - {eba3f4ac-237d-489c-8eae-a30a274bfaa7} + {7bd4ef3a-0376-473d-8223-d5f8c7f198a4} - {b25c5cce-470d-42eb-9e58-b34ec38b915c} + {2c3ba1ae-1fef-43fa-b3ec-5da753547da4} - {62d51c85-19ac-43cb-83ff-3dad79febade} + {cbf471d2-88b5-42f6-99c3-f27cdbc9114f} - {325365d8-8c47-4ee3-a168-0dfdbfe69c68} + {dd6c6808-2499-433d-8a06-e5b95813f1a2} - {efd4fa30-f614-436d-8062-1285de5276d4} + {5eb94619-8fa2-4e5c-bb8e-ae09eb4dd03f} - {b7d37c6a-7358-42f9-a044-b40705c2ccd3} + {61b2cf5e-1e6b-43bc-aca8-052479447597} diff --git a/Data/Data_x64_vs100.vcxproj b/Data/Data_x64_vs100.vcxproj index a200e2672..bd2c4a964 100644 --- a/Data/Data_x64_vs100.vcxproj +++ b/Data/Data_x64_vs100.vcxproj @@ -81,19 +81,19 @@ <_ProjectFileVersion>10.0.40219.1 ..\bin64\ - obj64\$(Configuration)\ + obj64\Data\$(Configuration)\ true ..\bin64\ - obj64\$(Configuration)\ + obj64\Data\$(Configuration)\ false ..\lib64\ - obj64\$(Configuration)\ + obj64\Data\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Data\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Data\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Data\$(Configuration)\ PocoData64d PocoDatamdd PocoDatamtd diff --git a/Data/Data_x64_vs100.vcxproj.filters b/Data/Data_x64_vs100.vcxproj.filters index d6f924aaa..8d3860579 100644 --- a/Data/Data_x64_vs100.vcxproj.filters +++ b/Data/Data_x64_vs100.vcxproj.filters @@ -2,31 +2,31 @@ - {4a7ce513-109a-4755-b105-fd6a2dc69787} + {80bc6a4f-9691-48b2-9d4b-4e61d87a205c} - {dc8637ad-d3ed-43ab-9d88-f86c21f649eb} + {ebf31253-435c-4c74-a5a1-0bdd44c22256} - {dd71823d-0a31-4aea-89ce-fc262bf17031} + {da8e7ab6-80fa-4510-bff6-30c9088845a7} - {2fd3a46a-8e34-420c-a277-1f294f90f984} + {c2133e77-3e91-44fc-ab96-92c56dc8ae2b} - {c76e0d79-208f-4e3d-8308-c62a75339c01} + {8c18d5a0-dc5c-4491-9b44-732a1d9c82ca} - {ae78cc00-420f-41ed-8db2-bed21c3b9cd4} + {3a26dea8-6b5a-4119-a1c3-06367fdd570d} - {831a8375-ec74-42fa-bfd0-f531aa7bb231} + {1ee73c34-0566-4c08-a2ae-b3dd8180882c} - {4196f37f-49e3-445a-8984-0444adccef49} + {6f194b06-e33b-487f-9e1b-322f37cc71eb} - {97d13385-4a09-402a-937a-57c46fb72f6e} + {0a48b636-914f-4c2e-9c48-b2f4f7e94157} diff --git a/Data/Data_x64_vs110.vcxproj b/Data/Data_x64_vs110.vcxproj index 53af79d82..804389f00 100644 --- a/Data/Data_x64_vs110.vcxproj +++ b/Data/Data_x64_vs110.vcxproj @@ -95,29 +95,29 @@ ..\bin64\ - obj64\$(Configuration)\ + obj64\Data\$(Configuration)\ true ..\bin64\ - obj64\$(Configuration)\ + obj64\Data\$(Configuration)\ false ..\lib64\ - obj64\$(Configuration)\ + obj64\Data\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Data\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Data\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Data\$(Configuration)\ diff --git a/Data/Data_x64_vs110.vcxproj.filters b/Data/Data_x64_vs110.vcxproj.filters index b4e39ff70..45218f7f6 100644 --- a/Data/Data_x64_vs110.vcxproj.filters +++ b/Data/Data_x64_vs110.vcxproj.filters @@ -2,31 +2,31 @@ - {0ac80dca-7002-46d7-9fa4-922b22bc095a} + {45275dac-ed6a-41a8-a9ad-1b4514528446} - {b22e7ca5-052a-467e-a2d8-92535809d502} + {bdd788f8-2249-47f8-a1da-30ef03d59c67} - {655d443b-cea2-4b3c-9cd4-9f8e3a4c3cfa} + {21ba33d3-07c2-4a45-aba8-f99349a82040} - {efd27446-ed3d-42f1-a6da-acea56374d05} + {19b9e593-92b6-4a1f-9a6e-e42ce7496bd6} - {9795406d-b87b-4d43-ac72-03d29850eba0} + {1cbc51e3-7123-488b-b071-2ce78d5c9a0e} - {1c3f36fe-f11a-4dd1-aac0-16fadd775441} + {6dd2a4eb-3224-467d-8b46-974a91551b3e} - {8b7bf8cd-639b-4472-939b-c7bab3e5aef6} + {3e927638-2b45-45e5-a8b6-799ab04c8910} - {ee00afd1-bf3c-4430-b13a-c0d0ad415856} + {3f5ff823-d0b9-4cc7-936c-136703f79c91} - {f6b6ecbe-e1ea-4706-ac37-0bea73186e13} + {ee67b592-fa5a-4fa0-86e0-2eaf980c16f1} diff --git a/Data/Data_x64_vs120.vcxproj b/Data/Data_x64_vs120.vcxproj index edc063e79..72b915e5a 100644 --- a/Data/Data_x64_vs120.vcxproj +++ b/Data/Data_x64_vs120.vcxproj @@ -95,29 +95,29 @@ ..\bin64\ - obj64\$(Configuration)\ + obj64\Data\$(Configuration)\ true ..\bin64\ - obj64\$(Configuration)\ + obj64\Data\$(Configuration)\ false ..\lib64\ - obj64\$(Configuration)\ + obj64\Data\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Data\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Data\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Data\$(Configuration)\ diff --git a/Data/Data_x64_vs120.vcxproj.filters b/Data/Data_x64_vs120.vcxproj.filters index 628114c36..03e346883 100644 --- a/Data/Data_x64_vs120.vcxproj.filters +++ b/Data/Data_x64_vs120.vcxproj.filters @@ -2,31 +2,31 @@ - {94ff9984-76ff-4fd2-90c0-69a726ef4a5c} + {6568bd0a-096e-4400-914f-a8c4eda10015} - {d55e118a-ec41-4d82-b9c2-96c1b97e217d} + {51971685-4452-43bc-8f18-80fb1bf54d38} - {a8111a39-0d35-46ed-925f-e817095152a9} + {210b08ab-57e2-410d-abf6-343e9e355325} - {c0e172f3-27e3-4163-9536-423051f6e08d} + {98e96dfc-ddfe-4a37-ae0e-889283f679ba} - {7179dd11-477d-4236-9ab4-7938913effd5} + {9f995ad8-3c88-44b3-9149-6f00da7c34c1} - {fafeb4a0-bb21-4b01-9fd3-f25ae79edfe0} + {95589bfc-df89-404b-ab12-8c0d0999d530} - {f3f4723e-6eca-470b-8506-61abc4ad84af} + {f51e5673-4d71-49f0-84c4-07d290e9b0c5} - {150c2383-b131-4d7b-8726-e00620711de4} + {c21893d9-72d0-49f6-91f6-0a8b763bdbd9} - {efc03472-fdf2-4feb-9a30-a2f5e43442a7} + {b925c0b5-f765-4b15-a26f-c8c408bf9d51} diff --git a/Data/MySQL/MySQL_VS80.vcproj b/Data/MySQL/MySQL_VS80.vcproj index 9c9b857e2..76cdfd101 100644 --- a/Data/MySQL/MySQL_VS80.vcproj +++ b/Data/MySQL/MySQL_VS80.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="4" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 ..\..\bin\ - obj\$(Configuration)\ + obj\MySQL\$(Configuration)\ true ..\..\bin\ - obj\$(Configuration)\ + obj\MySQL\$(Configuration)\ false ..\..\lib\ - obj\$(Configuration)\ + obj\MySQL\$(Configuration)\ ..\..\lib\ - obj\$(Configuration)\ + obj\MySQL\$(Configuration)\ ..\..\lib\ - obj\$(Configuration)\ + obj\MySQL\$(Configuration)\ ..\..\lib\ - obj\$(Configuration)\ + obj\MySQL\$(Configuration)\ PocoDataMySQLd PocoDataMySQLmdd PocoDataMySQLmtd @@ -119,6 +119,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) libmysql.lib;%(AdditionalDependencies) @@ -130,6 +131,7 @@ Console ..\..\lib\PocoDataMySQLd.lib MachineX86 + %(AdditionalOptions) @@ -152,6 +154,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) libmysql.lib;%(AdditionalDependencies) @@ -164,6 +167,7 @@ true ..\..\lib\PocoDataMySQL.lib MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\..\lib\PocoDataMySQLmtd.lib @@ -210,6 +215,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\..\lib\PocoDataMySQLmt.lib @@ -234,6 +240,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\..\lib\PocoDataMySQLmdd.lib @@ -260,6 +267,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) libmysql.lib;%(AdditionalDependencies) diff --git a/Data/MySQL/MySQL_vs110.vcxproj b/Data/MySQL/MySQL_vs110.vcxproj index 13813822a..8d5741675 100644 --- a/Data/MySQL/MySQL_vs110.vcxproj +++ b/Data/MySQL/MySQL_vs110.vcxproj @@ -95,29 +95,29 @@ ..\..\bin\ - obj\$(Configuration)\ + obj\MySQL\$(Configuration)\ true ..\..\bin\ - obj\$(Configuration)\ + obj\MySQL\$(Configuration)\ false ..\..\lib\ - obj\$(Configuration)\ + obj\MySQL\$(Configuration)\ ..\..\lib\ - obj\$(Configuration)\ + obj\MySQL\$(Configuration)\ ..\..\lib\ - obj\$(Configuration)\ + obj\MySQL\$(Configuration)\ ..\..\lib\ - obj\$(Configuration)\ + obj\MySQL\$(Configuration)\ diff --git a/Data/MySQL/MySQL_vs120.vcxproj b/Data/MySQL/MySQL_vs120.vcxproj index a689a4dc2..adfdc40bc 100644 --- a/Data/MySQL/MySQL_vs120.vcxproj +++ b/Data/MySQL/MySQL_vs120.vcxproj @@ -95,29 +95,29 @@ ..\..\bin\ - obj\$(Configuration)\ + obj\MySQL\$(Configuration)\ true ..\..\bin\ - obj\$(Configuration)\ + obj\MySQL\$(Configuration)\ false ..\..\lib\ - obj\$(Configuration)\ + obj\MySQL\$(Configuration)\ ..\..\lib\ - obj\$(Configuration)\ + obj\MySQL\$(Configuration)\ ..\..\lib\ - obj\$(Configuration)\ + obj\MySQL\$(Configuration)\ ..\..\lib\ - obj\$(Configuration)\ + obj\MySQL\$(Configuration)\ diff --git a/Data/MySQL/MySQL_vs71.vcproj b/Data/MySQL/MySQL_vs71.vcproj index d131538ba..50d1b4151 100644 --- a/Data/MySQL/MySQL_vs71.vcproj +++ b/Data/MySQL/MySQL_vs71.vcproj @@ -37,7 +37,8 @@ Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" CompileAs="0" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> @@ -274,7 +280,8 @@ Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" CompileAs="0" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> diff --git a/Data/MySQL/MySQL_x64_vs100.vcxproj b/Data/MySQL/MySQL_x64_vs100.vcxproj index a38339ed1..01e0560ed 100644 --- a/Data/MySQL/MySQL_x64_vs100.vcxproj +++ b/Data/MySQL/MySQL_x64_vs100.vcxproj @@ -81,19 +81,19 @@ <_ProjectFileVersion>10.0.40219.1 ..\..\bin64\ - obj64\$(Configuration)\ + obj64\MySQL\$(Configuration)\ true ..\..\bin64\ - obj64\$(Configuration)\ + obj64\MySQL\$(Configuration)\ false ..\..\lib64\ - obj64\$(Configuration)\ + obj64\MySQL\$(Configuration)\ ..\..\lib64\ - obj64\$(Configuration)\ + obj64\MySQL\$(Configuration)\ ..\..\lib64\ - obj64\$(Configuration)\ + obj64\MySQL\$(Configuration)\ ..\..\lib64\ - obj64\$(Configuration)\ + obj64\MySQL\$(Configuration)\ PocoDataMySQL64d PocoDataMySQLmdd PocoDataMySQLmtd @@ -119,6 +119,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) libmysql.lib;%(AdditionalDependencies) @@ -130,6 +131,7 @@ Console ..\..\lib64\PocoDataMySQLd.lib MachineX64 + %(AdditionalOptions) @@ -152,6 +154,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) libmysql.lib;%(AdditionalDependencies) @@ -164,6 +167,7 @@ true ..\..\lib64\PocoDataMySQL.lib MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\..\lib64\PocoDataMySQLmtd.lib @@ -210,6 +215,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\..\lib64\PocoDataMySQLmt.lib @@ -234,6 +240,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\..\lib64\PocoDataMySQLmdd.lib @@ -259,6 +266,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\..\lib64\PocoDataMySQLmd.lib diff --git a/Data/MySQL/MySQL_x64_vs110.vcxproj b/Data/MySQL/MySQL_x64_vs110.vcxproj index 204575c4b..f888e60c9 100644 --- a/Data/MySQL/MySQL_x64_vs110.vcxproj +++ b/Data/MySQL/MySQL_x64_vs110.vcxproj @@ -95,29 +95,29 @@ ..\..\bin64\ - obj64\$(Configuration)\ + obj64\MySQL\$(Configuration)\ true ..\..\bin64\ - obj64\$(Configuration)\ + obj64\MySQL\$(Configuration)\ false ..\..\lib64\ - obj64\$(Configuration)\ + obj64\MySQL\$(Configuration)\ ..\..\lib64\ - obj64\$(Configuration)\ + obj64\MySQL\$(Configuration)\ ..\..\lib64\ - obj64\$(Configuration)\ + obj64\MySQL\$(Configuration)\ ..\..\lib64\ - obj64\$(Configuration)\ + obj64\MySQL\$(Configuration)\ diff --git a/Data/MySQL/MySQL_x64_vs120.vcxproj b/Data/MySQL/MySQL_x64_vs120.vcxproj index 99d010e97..4b9412f01 100644 --- a/Data/MySQL/MySQL_x64_vs120.vcxproj +++ b/Data/MySQL/MySQL_x64_vs120.vcxproj @@ -95,29 +95,29 @@ ..\..\bin64\ - obj64\$(Configuration)\ + obj64\MySQL\$(Configuration)\ true ..\..\bin64\ - obj64\$(Configuration)\ + obj64\MySQL\$(Configuration)\ false ..\..\lib64\ - obj64\$(Configuration)\ + obj64\MySQL\$(Configuration)\ ..\..\lib64\ - obj64\$(Configuration)\ + obj64\MySQL\$(Configuration)\ ..\..\lib64\ - obj64\$(Configuration)\ + obj64\MySQL\$(Configuration)\ ..\..\lib64\ - obj64\$(Configuration)\ + obj64\MySQL\$(Configuration)\ diff --git a/Data/MySQL/MySQL_x64_vs90.vcproj b/Data/MySQL/MySQL_x64_vs90.vcproj index 17b8d62bf..b122d09c1 100644 --- a/Data/MySQL/MySQL_x64_vs90.vcproj +++ b/Data/MySQL/MySQL_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false TestSuited TestSuited @@ -129,6 +129,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitd.lib;WinTestRunnerd.lib;libmysql.lib;%(AdditionalDependencies) @@ -139,6 +140,7 @@ bin\TestSuited.pdb Windows MachineX86 + %(AdditionalOptions) @@ -161,6 +163,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnit.lib;WinTestRunner.lib;libmysql.lib;%(AdditionalDependencies) @@ -171,6 +174,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -191,6 +195,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmtd.lib;WinTestRunnermtd.lib;iphlpapi.lib;winmm.lib;nafxcwd.lib;libcmtd.lib;WinTestRunner.res;libmysql.lib;%(AdditionalDependencies) @@ -202,6 +207,7 @@ bin\static_mt\TestSuited.pdb Windows MachineX86 + %(AdditionalOptions) @@ -224,6 +230,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmt.lib;WinTestRunnermt.lib;iphlpapi.lib;winmm.lib;nafxcw.lib;libcmt.lib;WinTestRunner.res;libmysql.lib;%(AdditionalDependencies) @@ -235,6 +242,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -255,6 +263,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmdd.lib;WinTestRunnermdd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;libmysql.lib;%(AdditionalDependencies) @@ -265,6 +274,7 @@ bin\static_md\TestSuited.pdb Windows MachineX86 + %(AdditionalOptions) @@ -287,6 +297,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmd.lib;WinTestRunnermd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;libmysql.lib;%(AdditionalDependencies) @@ -297,6 +308,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Data/MySQL/testsuite/TestSuite_vs100.vcxproj.filters b/Data/MySQL/testsuite/TestSuite_vs100.vcxproj.filters index 7d880f54c..7a4d06f40 100644 --- a/Data/MySQL/testsuite/TestSuite_vs100.vcxproj.filters +++ b/Data/MySQL/testsuite/TestSuite_vs100.vcxproj.filters @@ -2,28 +2,28 @@ - {59878db7-8cd3-431b-bfef-7a0d3bd13ea6} + {bab79a8a-2520-4e23-b15f-e4a44bdd2601} - {827ecb97-ca0e-47fb-a05b-3f76b4b17064} + {b39bf588-d8e8-4279-8f77-d46b5cacf441} - {7026a1aa-a405-492c-ad75-d8009eef842b} + {b753cc7e-9a79-49da-ac90-e02f5eb16123} - {d3cec313-e13b-4c45-9abb-5ac155949fb2} + {0864b2c7-aa00-42da-a9a6-7f42cff75e85} - {a945d7eb-91db-4604-917f-601c96f53518} + {947c02e6-6086-46b7-ae21-eb80b76fc50b} - {302d68c6-a0f1-4981-aaa3-6f05209955fe} + {98c37e53-060f-47f3-a82f-3890f93c1284} - {54066155-8567-4f61-83bb-dee32fdfaf79} + {87f134d6-24c4-4ec9-9a1c-ecee646afa3b} - {55b6030d-7091-4900-a11a-19cf70e3f104} + {63e7aab4-7261-48d0-9426-d0aa039ea617} diff --git a/Data/MySQL/testsuite/TestSuite_vs110.vcxproj b/Data/MySQL/testsuite/TestSuite_vs110.vcxproj index 1d5e80a9d..37924c423 100644 --- a/Data/MySQL/testsuite/TestSuite_vs110.vcxproj +++ b/Data/MySQL/testsuite/TestSuite_vs110.vcxproj @@ -101,32 +101,32 @@ bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false diff --git a/Data/MySQL/testsuite/TestSuite_vs110.vcxproj.filters b/Data/MySQL/testsuite/TestSuite_vs110.vcxproj.filters index 1e881990a..261d7ae46 100644 --- a/Data/MySQL/testsuite/TestSuite_vs110.vcxproj.filters +++ b/Data/MySQL/testsuite/TestSuite_vs110.vcxproj.filters @@ -2,28 +2,28 @@ - {3477595f-a9c6-475f-aa87-caf094f9bece} + {f92f776a-55d1-44d2-bec8-81d35b374d3f} - {f4c7d11e-80ea-4ea9-b4a3-09851b2d43ca} + {c5db8aae-150d-48f2-820d-237ab8f750c8} - {87ef286f-1be7-42a3-bb30-5cb94dcb0370} + {ecc5e38b-18cc-4ade-964f-57fd867f0c87} - {6c75d3b2-4f66-4346-91a4-cc31be5ac819} + {5f2a5a97-fd6f-4d4e-9977-43f6fac3a5d9} - {4f7118a6-a424-4e0a-9d71-517dae0f5b4a} + {a4e06ebb-c196-4532-8adc-df1fb1b4f892} - {142ef967-cc78-4493-aeb4-f228fc7502c3} + {dd27e4b7-a83c-4ee0-8150-4236cd10eec2} - {da614ed3-b58a-4881-922e-5faf0140b48e} + {d93087be-aa9a-403a-95c8-b61ebbbf6dbe} - {323e4412-f46e-410c-82e5-4983d0511921} + {51cb098f-1204-4cf3-b657-db15a2eef99c} diff --git a/Data/MySQL/testsuite/TestSuite_vs120.vcxproj b/Data/MySQL/testsuite/TestSuite_vs120.vcxproj index ba97a7bf8..3d4b8fa03 100644 --- a/Data/MySQL/testsuite/TestSuite_vs120.vcxproj +++ b/Data/MySQL/testsuite/TestSuite_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false diff --git a/Data/MySQL/testsuite/TestSuite_vs120.vcxproj.filters b/Data/MySQL/testsuite/TestSuite_vs120.vcxproj.filters index d268221a7..755d72ed9 100644 --- a/Data/MySQL/testsuite/TestSuite_vs120.vcxproj.filters +++ b/Data/MySQL/testsuite/TestSuite_vs120.vcxproj.filters @@ -2,28 +2,28 @@ - {b255fd7e-82f3-4904-ad6e-f1e385110074} + {e395de57-ca6b-4a94-82c8-43fd9eca1542} - {73aee11d-b7d0-4547-80b3-d666ac4132c6} + {4118ba71-814f-47d3-8c32-9bf326c4315d} - {89d1e6a9-fdaa-4fe2-ab77-c26c36d25989} + {adef129a-5e00-475d-bc0c-a3aaab82bfa4} - {0b9bf988-6f13-47c1-8113-6a0343edb810} + {10137032-bfd1-4e60-a30b-a8e50b3b11fe} - {2ed1b94a-33cd-47b8-b425-5b478ad14d19} + {908d90ee-f764-4ce3-9cfb-aff6c2bf8703} - {222ebe67-0508-47bd-a6ef-b16d6edf42dd} + {49840d73-0022-4be4-8009-16ea93808d26} - {2ce84cbf-0fb1-479f-8e7f-c21c0b7f0e8f} + {0a851152-dcec-44b9-98e4-bcd9be97891c} - {84168d60-9f71-424b-b957-420deefdb34e} + {12f5d358-a20d-40a5-9a45-1a46d6c39d06} diff --git a/Data/MySQL/testsuite/TestSuite_vs71.vcproj b/Data/MySQL/testsuite/TestSuite_vs71.vcproj index 2852776f0..2fedbd581 100644 --- a/Data/MySQL/testsuite/TestSuite_vs71.vcproj +++ b/Data/MySQL/testsuite/TestSuite_vs71.vcproj @@ -37,7 +37,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false TestSuited TestSuited @@ -129,6 +129,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitd.lib;WinTestRunnerd.lib;libmysql.lib;%(AdditionalDependencies) @@ -139,6 +140,7 @@ bin64\TestSuited.pdb Windows MachineX64 + %(AdditionalOptions) @@ -161,6 +163,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnit.lib;WinTestRunner.lib;libmysql.lib;%(AdditionalDependencies) @@ -171,6 +174,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -191,6 +195,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmtd.lib;WinTestRunnermtd.lib;iphlpapi.lib;winmm.lib;nafxcwd.lib;libcmtd.lib;WinTestRunner.res;libmysql.lib;%(AdditionalDependencies) @@ -202,6 +207,7 @@ bin64\static_mt\TestSuited.pdb Windows MachineX64 + %(AdditionalOptions) @@ -224,6 +230,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmt.lib;WinTestRunnermt.lib;iphlpapi.lib;winmm.lib;nafxcw.lib;libcmt.lib;WinTestRunner.res;libmysql.lib;%(AdditionalDependencies) @@ -235,6 +242,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -255,6 +263,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmdd.lib;WinTestRunnermdd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;libmysql.lib;%(AdditionalDependencies) @@ -265,6 +274,7 @@ bin64\static_md\TestSuited.pdb Windows MachineX64 + %(AdditionalOptions) @@ -287,6 +297,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmd.lib;WinTestRunnermd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;libmysql.lib;%(AdditionalDependencies) @@ -297,6 +308,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Data/MySQL/testsuite/TestSuite_x64_vs100.vcxproj.filters b/Data/MySQL/testsuite/TestSuite_x64_vs100.vcxproj.filters index 1182c14fe..d4b8f57f2 100644 --- a/Data/MySQL/testsuite/TestSuite_x64_vs100.vcxproj.filters +++ b/Data/MySQL/testsuite/TestSuite_x64_vs100.vcxproj.filters @@ -2,28 +2,28 @@ - {4b7f661a-d5dd-4b4a-87a6-d36bd1b1196f} + {58f5573d-f810-459d-834d-0bf156b1d5e7} - {4b2d2925-6d49-4731-9276-d03830515dd7} + {de97c019-00cc-4501-a9d4-11ff142b51f2} - {832f2a84-596a-4bdd-9822-2dafa166f030} + {5901d3c8-af07-4e38-bab4-14eb3303f124} - {02db5625-a860-4e0b-afbf-2e94c7e29a78} + {976b9960-35f2-4082-aa15-04a6cdea9c40} - {cf7893bf-b5ba-4c63-8d3d-3187d0906a08} + {e1a2ff17-5a39-41ad-9010-31ab3bdb3f34} - {3d530056-d5b4-4811-bef2-ff827030462a} + {8be6c097-82e3-4720-a9d8-09bd9037c242} - {f3dfe485-5d47-43a3-86db-c331a7dae5b2} + {4a5e0e78-3256-4df7-9352-2a5a6c98ca98} - {7285932a-6d45-4337-8a58-c2293ffac04e} + {e5992bc2-9ddb-4878-8b5c-c5a040842627} diff --git a/Data/MySQL/testsuite/TestSuite_x64_vs110.vcxproj b/Data/MySQL/testsuite/TestSuite_x64_vs110.vcxproj index 1f380071e..4e600c1ec 100644 --- a/Data/MySQL/testsuite/TestSuite_x64_vs110.vcxproj +++ b/Data/MySQL/testsuite/TestSuite_x64_vs110.vcxproj @@ -101,32 +101,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false diff --git a/Data/MySQL/testsuite/TestSuite_x64_vs110.vcxproj.filters b/Data/MySQL/testsuite/TestSuite_x64_vs110.vcxproj.filters index 903c19cd9..bce779c29 100644 --- a/Data/MySQL/testsuite/TestSuite_x64_vs110.vcxproj.filters +++ b/Data/MySQL/testsuite/TestSuite_x64_vs110.vcxproj.filters @@ -2,28 +2,28 @@ - {cca0ace0-7fc7-441e-9d3b-f46edcb3274a} + {97a0f72e-8f94-4c38-8ec8-8210e78a2c60} - {4b570549-1e65-4bb4-82f8-f1a3e6e04d3f} + {7b03f3ab-dd33-4134-80dd-aa9dc421dbfd} - {d1e10ab2-7db0-4973-9e93-1cc3cfc877f9} + {2b3159f3-1fc8-46c5-97e6-b9fac77fe43a} - {04492ba2-10aa-4620-a1d9-9a2d349a5e96} + {c10552ae-34e1-45f9-8364-21223409910a} - {c9d7faa4-13aa-4b6b-8bc5-23b5c8996670} + {7499146d-95e4-4aa5-b864-c316efb971d9} - {a6547799-4393-403c-b7c0-304513ee2ad5} + {09281ebf-365a-4a23-9c21-6c3caf97eb9d} - {cc0ee467-9f60-4531-bc54-68c981232093} + {c2838cba-e7f0-4093-b80e-b8854634a24a} - {d31f7e66-d4c7-472a-89ff-c46775c3e931} + {d6b60580-0765-4b0d-9ed9-0e6d89400451} diff --git a/Data/MySQL/testsuite/TestSuite_x64_vs120.vcxproj b/Data/MySQL/testsuite/TestSuite_x64_vs120.vcxproj index 923d4e317..d7a6deb04 100644 --- a/Data/MySQL/testsuite/TestSuite_x64_vs120.vcxproj +++ b/Data/MySQL/testsuite/TestSuite_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false diff --git a/Data/MySQL/testsuite/TestSuite_x64_vs120.vcxproj.filters b/Data/MySQL/testsuite/TestSuite_x64_vs120.vcxproj.filters index 2aab28716..eda673219 100644 --- a/Data/MySQL/testsuite/TestSuite_x64_vs120.vcxproj.filters +++ b/Data/MySQL/testsuite/TestSuite_x64_vs120.vcxproj.filters @@ -2,28 +2,28 @@ - {6d0287be-80ca-4ec5-a1f6-21c887b7e336} + {5123b43f-63d4-45f1-8136-1d3d68df9383} - {2602c507-23e3-488b-bfe5-ecbaca03db1b} + {254c4414-a846-4f1f-8d91-b3778c336082} - {f8e51abd-37b7-4ba1-abbf-8171c36e1823} + {e8203bc2-9920-475d-aad9-ffeace99af68} - {e2c7b629-c1f3-4629-b8f4-f92683f064fa} + {2431f190-ebf7-48ab-af4a-55eff1d78ae9} - {ad83cc6e-f607-4ed5-b754-4637bba0f212} + {5a3631f0-0744-4170-a8ca-887a9187a9b7} - {0b5cfec1-f705-439d-986a-f9377831ce8c} + {dfac1b36-700c-4610-b345-dab41c9753b7} - {00add612-590f-4abb-956a-4bcb456abd98} + {973366c5-d3a9-41a1-93f5-3a86367ca392} - {e4e558a8-ecac-4b2d-8236-24af69f22dda} + {676fd25f-6b93-436b-8782-f85fcd668d6c} diff --git a/Data/MySQL/testsuite/TestSuite_x64_vs90.vcproj b/Data/MySQL/testsuite/TestSuite_x64_vs90.vcproj index 19dd40d0b..9d99b9ee5 100644 --- a/Data/MySQL/testsuite/TestSuite_x64_vs90.vcproj +++ b/Data/MySQL/testsuite/TestSuite_x64_vs90.vcproj @@ -47,7 +47,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> @@ -274,7 +280,8 @@ Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" CompileAs="0" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> diff --git a/Data/ODBC/ODBC_VS80.vcproj b/Data/ODBC/ODBC_VS80.vcproj index 47bbaf5c9..936c8afc4 100644 --- a/Data/ODBC/ODBC_VS80.vcproj +++ b/Data/ODBC/ODBC_VS80.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="4" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 ..\..\bin\ - obj\$(Configuration)\ + obj\ODBC\$(Configuration)\ true ..\..\bin\ - obj\$(Configuration)\ + obj\ODBC\$(Configuration)\ false ..\..\lib\ - obj\$(Configuration)\ + obj\ODBC\$(Configuration)\ ..\..\lib\ - obj\$(Configuration)\ + obj\ODBC\$(Configuration)\ ..\..\lib\ - obj\$(Configuration)\ + obj\ODBC\$(Configuration)\ ..\..\lib\ - obj\$(Configuration)\ + obj\ODBC\$(Configuration)\ PocoDataODBCd PocoDataODBCmdd PocoDataODBCmtd @@ -119,6 +119,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) odbc32.lib;odbccp32.lib;%(AdditionalDependencies) @@ -130,6 +131,7 @@ Console ..\..\lib\PocoDataODBCd.lib MachineX86 + %(AdditionalOptions) @@ -152,6 +154,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) odbc32.lib;odbccp32.lib;%(AdditionalDependencies) @@ -164,6 +167,7 @@ true ..\..\lib\PocoDataODBC.lib MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\..\lib\PocoDataODBCmtd.lib @@ -210,6 +215,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\..\lib\PocoDataODBCmt.lib @@ -234,6 +240,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\..\lib\PocoDataODBCmdd.lib @@ -260,6 +267,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) odbc32.lib;odbccp32.lib;%(AdditionalDependencies) diff --git a/Data/ODBC/ODBC_vs100.vcxproj.filters b/Data/ODBC/ODBC_vs100.vcxproj.filters index a5800f323..243500134 100644 --- a/Data/ODBC/ODBC_vs100.vcxproj.filters +++ b/Data/ODBC/ODBC_vs100.vcxproj.filters @@ -2,13 +2,13 @@ - {e11c9fd0-8f99-4926-a214-bc879e998157} + {efd8425f-8c38-4d9a-8a1e-53f1ab77ff3d} - {4b61fc5d-5881-4fc4-a42f-267f2b425ecf} + {cc85b521-5040-4d86-b414-d5a4b5131c7a} - {995b0c93-dd5e-4390-b9e5-24edd774e761} + {cd817afb-7625-482e-ba65-8b3386c28474} diff --git a/Data/ODBC/ODBC_vs110.vcxproj b/Data/ODBC/ODBC_vs110.vcxproj index 431d0a5b5..7e197b266 100644 --- a/Data/ODBC/ODBC_vs110.vcxproj +++ b/Data/ODBC/ODBC_vs110.vcxproj @@ -95,29 +95,29 @@ ..\..\bin\ - obj\$(Configuration)\ + obj\ODBC\$(Configuration)\ true ..\..\bin\ - obj\$(Configuration)\ + obj\ODBC\$(Configuration)\ false ..\..\lib\ - obj\$(Configuration)\ + obj\ODBC\$(Configuration)\ ..\..\lib\ - obj\$(Configuration)\ + obj\ODBC\$(Configuration)\ ..\..\lib\ - obj\$(Configuration)\ + obj\ODBC\$(Configuration)\ ..\..\lib\ - obj\$(Configuration)\ + obj\ODBC\$(Configuration)\ diff --git a/Data/ODBC/ODBC_vs110.vcxproj.filters b/Data/ODBC/ODBC_vs110.vcxproj.filters index 93bb31cd8..7f04c8ac0 100644 --- a/Data/ODBC/ODBC_vs110.vcxproj.filters +++ b/Data/ODBC/ODBC_vs110.vcxproj.filters @@ -2,13 +2,13 @@ - {13b6822d-0b4a-4af8-a011-c3475c1310fb} + {8946c4e9-b361-4fd2-b1fa-eab99491aac6} - {f74e2d19-0ada-4378-8397-69f528122199} + {f89230f6-6f82-4154-a893-cc45c369cb32} - {60708885-390a-4865-b4a4-4a7968a6e52a} + {c7e33aad-20ba-4f88-8ca4-77364a4a2989} diff --git a/Data/ODBC/ODBC_vs120.vcxproj b/Data/ODBC/ODBC_vs120.vcxproj index c084fe34d..b738e0c72 100644 --- a/Data/ODBC/ODBC_vs120.vcxproj +++ b/Data/ODBC/ODBC_vs120.vcxproj @@ -95,29 +95,29 @@ ..\..\bin\ - obj\$(Configuration)\ + obj\ODBC\$(Configuration)\ true ..\..\bin\ - obj\$(Configuration)\ + obj\ODBC\$(Configuration)\ false ..\..\lib\ - obj\$(Configuration)\ + obj\ODBC\$(Configuration)\ ..\..\lib\ - obj\$(Configuration)\ + obj\ODBC\$(Configuration)\ ..\..\lib\ - obj\$(Configuration)\ + obj\ODBC\$(Configuration)\ ..\..\lib\ - obj\$(Configuration)\ + obj\ODBC\$(Configuration)\ diff --git a/Data/ODBC/ODBC_vs120.vcxproj.filters b/Data/ODBC/ODBC_vs120.vcxproj.filters index 2892a91fa..8fab6790b 100644 --- a/Data/ODBC/ODBC_vs120.vcxproj.filters +++ b/Data/ODBC/ODBC_vs120.vcxproj.filters @@ -2,13 +2,13 @@ - {39f8580a-b5e4-4b38-b9c8-b460fe454757} + {c0e4029b-8e3c-4557-87ab-b45934d5c188} - {ac82f31a-c069-4762-8e8d-b8010873843f} + {17968ffa-a086-4d33-855f-18441dad0078} - {622d04cf-ae76-428d-a88f-50b7d5272db6} + {a1b9778a-9801-4133-9301-5ad524304527} diff --git a/Data/ODBC/ODBC_x64_vs100.vcxproj b/Data/ODBC/ODBC_x64_vs100.vcxproj index afb13b122..b241eb96a 100644 --- a/Data/ODBC/ODBC_x64_vs100.vcxproj +++ b/Data/ODBC/ODBC_x64_vs100.vcxproj @@ -81,19 +81,19 @@ <_ProjectFileVersion>10.0.40219.1 ..\..\bin64\ - obj64\$(Configuration)\ + obj64\ODBC\$(Configuration)\ true ..\..\bin64\ - obj64\$(Configuration)\ + obj64\ODBC\$(Configuration)\ false ..\..\lib64\ - obj64\$(Configuration)\ + obj64\ODBC\$(Configuration)\ ..\..\lib64\ - obj64\$(Configuration)\ + obj64\ODBC\$(Configuration)\ ..\..\lib64\ - obj64\$(Configuration)\ + obj64\ODBC\$(Configuration)\ ..\..\lib64\ - obj64\$(Configuration)\ + obj64\ODBC\$(Configuration)\ PocoDataODBC64d PocoDataODBCmdd PocoDataODBCmtd @@ -119,6 +119,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) odbc32.lib;odbccp32.lib;%(AdditionalDependencies) @@ -130,6 +131,7 @@ Console ..\..\lib64\PocoDataODBCd.lib MachineX64 + %(AdditionalOptions) @@ -152,6 +154,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) odbc32.lib;odbccp32.lib;%(AdditionalDependencies) @@ -164,6 +167,7 @@ true ..\..\lib64\PocoDataODBC.lib MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\..\lib64\PocoDataODBCmtd.lib @@ -210,6 +215,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\..\lib64\PocoDataODBCmt.lib @@ -234,6 +240,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\..\lib64\PocoDataODBCmdd.lib @@ -259,6 +266,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\..\lib64\PocoDataODBCmd.lib diff --git a/Data/ODBC/ODBC_x64_vs100.vcxproj.filters b/Data/ODBC/ODBC_x64_vs100.vcxproj.filters index 2aae5ff7c..b813583c0 100644 --- a/Data/ODBC/ODBC_x64_vs100.vcxproj.filters +++ b/Data/ODBC/ODBC_x64_vs100.vcxproj.filters @@ -2,13 +2,13 @@ - {6e49f081-a751-4c08-90b8-726767780719} + {c50ebc20-1d39-484c-833c-4903f0f1aa1d} - {9e65e357-3b97-4f76-88d2-b81c523d8647} + {07ee8151-7b35-4c25-a791-b2cf1f2bc60d} - {25de14b3-a469-42ee-8e19-368c9b94f978} + {4bdd9e42-05b5-4312-b373-226c8a42be58} diff --git a/Data/ODBC/ODBC_x64_vs110.vcxproj b/Data/ODBC/ODBC_x64_vs110.vcxproj index 5a337b3d1..82f387e72 100644 --- a/Data/ODBC/ODBC_x64_vs110.vcxproj +++ b/Data/ODBC/ODBC_x64_vs110.vcxproj @@ -95,29 +95,29 @@ ..\..\bin64\ - obj64\$(Configuration)\ + obj64\ODBC\$(Configuration)\ true ..\..\bin64\ - obj64\$(Configuration)\ + obj64\ODBC\$(Configuration)\ false ..\..\lib64\ - obj64\$(Configuration)\ + obj64\ODBC\$(Configuration)\ ..\..\lib64\ - obj64\$(Configuration)\ + obj64\ODBC\$(Configuration)\ ..\..\lib64\ - obj64\$(Configuration)\ + obj64\ODBC\$(Configuration)\ ..\..\lib64\ - obj64\$(Configuration)\ + obj64\ODBC\$(Configuration)\ diff --git a/Data/ODBC/ODBC_x64_vs110.vcxproj.filters b/Data/ODBC/ODBC_x64_vs110.vcxproj.filters index b3d10971b..95cebff09 100644 --- a/Data/ODBC/ODBC_x64_vs110.vcxproj.filters +++ b/Data/ODBC/ODBC_x64_vs110.vcxproj.filters @@ -2,13 +2,13 @@ - {7c513465-5e0d-4805-8a5d-3d7f6261dd7f} + {a050ceb9-0301-4cf1-b3d5-8dac60d84515} - {93f6f27c-2e5f-4ee1-8876-4738c0cb8d61} + {0afc52cb-175b-49c9-9215-6df6c265b1b4} - {37ef3329-5865-4c0a-a44d-7e9e5441233c} + {e3dfcad4-8e8b-43ca-baa4-77899a8d2db0} diff --git a/Data/ODBC/ODBC_x64_vs120.vcxproj b/Data/ODBC/ODBC_x64_vs120.vcxproj index 831aebcfc..59b0dbc52 100644 --- a/Data/ODBC/ODBC_x64_vs120.vcxproj +++ b/Data/ODBC/ODBC_x64_vs120.vcxproj @@ -95,29 +95,29 @@ ..\..\bin64\ - obj64\$(Configuration)\ + obj64\ODBC\$(Configuration)\ true ..\..\bin64\ - obj64\$(Configuration)\ + obj64\ODBC\$(Configuration)\ false ..\..\lib64\ - obj64\$(Configuration)\ + obj64\ODBC\$(Configuration)\ ..\..\lib64\ - obj64\$(Configuration)\ + obj64\ODBC\$(Configuration)\ ..\..\lib64\ - obj64\$(Configuration)\ + obj64\ODBC\$(Configuration)\ ..\..\lib64\ - obj64\$(Configuration)\ + obj64\ODBC\$(Configuration)\ diff --git a/Data/ODBC/ODBC_x64_vs120.vcxproj.filters b/Data/ODBC/ODBC_x64_vs120.vcxproj.filters index bfa676a56..6eeac03ff 100644 --- a/Data/ODBC/ODBC_x64_vs120.vcxproj.filters +++ b/Data/ODBC/ODBC_x64_vs120.vcxproj.filters @@ -2,13 +2,13 @@ - {60a0b2e0-7e5c-4abf-a831-5cb183828a26} + {d7975db7-9b8b-4bf7-89ef-676b301a0dc7} - {e4a18a3a-54b2-4406-b7e8-3bdcf029dea4} + {e4a72c8f-9f8c-46de-a528-6a7cd481fd20} - {f6375303-68ca-4338-88cc-d437548e0a4e} + {2cf1f1ad-d9a0-4e1d-a4c5-a74cc9268a5e} diff --git a/Data/ODBC/ODBC_x64_vs90.vcproj b/Data/ODBC/ODBC_x64_vs90.vcproj index b2840172d..df03d6726 100644 --- a/Data/ODBC/ODBC_x64_vs90.vcproj +++ b/Data/ODBC/ODBC_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> LengthVec; - typedef std::vector > LengthVecVec; + typedef std::vector LengthPtrVec; + typedef std::vector LengthVec; + typedef std::vector LengthVecVec; typedef std::vector CharPtrVec; typedef std::vector UTF16CharPtrVec; typedef std::vector BoolPtrVec; - typedef std::vector > DateVec; - typedef std::vector > TimeVec; - typedef std::vector > DateTimeVec; - typedef std::vector > AnyVec; + typedef std::vector DateVec; + typedef std::vector DateVecVec; + typedef std::vector TimeVec; + typedef std::vector TimeVecVec; + typedef std::vector DateTimeVec; + typedef std::vector DateTimeVecVec; + typedef std::vector AnyVec; + typedef std::vector AnyVecVec; typedef std::map StringMap; typedef std::map UTF16StringMap; typedef std::map DateMap; @@ -450,8 +455,8 @@ private: if (_vecLengthIndicator.size() <= pos) { - _vecLengthIndicator.resize(pos + 1); - _vecLengthIndicator[pos].resize(length, sizeof(T)); + _vecLengthIndicator.resize(pos + 1, 0); + _vecLengthIndicator[pos] = new LengthVec(length); } if (Utility::isError(SQLBindParameter(_rStmt, @@ -463,7 +468,7 @@ private: decDigits, (SQLPOINTER) &val[0], 0, - &_vecLengthIndicator[pos][0]))) + &(*_vecLengthIndicator[pos])[0]))) { throw StatementException(_rStmt, "SQLBindParameter()"); } @@ -502,8 +507,8 @@ private: if (_vecLengthIndicator.size() <= pos) { - _vecLengthIndicator.resize(pos + 1); - _vecLengthIndicator[pos].resize(length, sizeof(bool)); + _vecLengthIndicator.resize(pos + 1, 0); + _vecLengthIndicator[pos] = new LengthVec(length); } if (_boolPtrs.size() <= pos) @@ -524,7 +529,7 @@ private: decDigits, (SQLPOINTER) &_boolPtrs[pos][0], 0, - &_vecLengthIndicator[pos][0]))) + &(*_vecLengthIndicator[pos])[0]))) { throw StatementException(_rStmt, "SQLBindParameter()"); } @@ -540,10 +545,12 @@ private: if (PB_IMMEDIATE != _paramBinding) throw InvalidAccessException("Containers can only be bound immediately."); - if (0 == val.size()) + std::size_t length = val.size(); + + if (0 == length) throw InvalidArgumentException("Empty container not allowed."); - setParamSetSize(val.size()); + setParamSetSize(length); SQLINTEGER size = 0; getColumnOrParameterSize(pos, size); @@ -558,8 +565,8 @@ private: if (_vecLengthIndicator.size() <= pos) { - _vecLengthIndicator.resize(pos + 1); - _vecLengthIndicator[pos].resize(val.size(), SQL_NTS); + _vecLengthIndicator.resize(pos + 1, 0); + _vecLengthIndicator[pos] = new LengthVec(length ? length : 1, SQL_NTS); } if (_charPtrs.size() <= pos) @@ -589,7 +596,7 @@ private: 0, _charPtrs[pos], (SQLINTEGER) size, - &_vecLengthIndicator[pos][0]))) + &(*_vecLengthIndicator[pos])[0]))) { throw StatementException(_rStmt, "SQLBindParameter(std::vector)"); } @@ -605,7 +612,8 @@ private: if (PB_IMMEDIATE != _paramBinding) throw InvalidAccessException("Containers can only be bound immediately."); - if (0 == val.size()) + std::size_t length = val.size(); + if (0 == length) throw InvalidArgumentException("Empty container not allowed."); setParamSetSize(val.size()); @@ -623,8 +631,8 @@ private: if (_vecLengthIndicator.size() <= pos) { - _vecLengthIndicator.resize(pos + 1); - _vecLengthIndicator[pos].resize(val.size(), SQL_NTS); + _vecLengthIndicator.resize(pos + 1, 0); + _vecLengthIndicator[pos] = new LengthVec(length ? length : 1, SQL_NTS); } if (_utf16CharPtrs.size() <= pos) @@ -654,7 +662,7 @@ private: 0, _utf16CharPtrs[pos], (SQLINTEGER)size, - &_vecLengthIndicator[pos][0]))) + &(*_vecLengthIndicator[pos])[0]))) { throw StatementException(_rStmt, "SQLBindParameter(std::vector)"); } @@ -672,19 +680,22 @@ private: if (PB_IMMEDIATE != _paramBinding) throw InvalidAccessException("Containers can only be bound immediately."); - if (0 == val.size()) + std::size_t length = val.size(); + if (0 == length) throw InvalidArgumentException("Empty container not allowed."); - setParamSetSize(val.size()); + setParamSetSize(length); SQLINTEGER size = 0; if (_vecLengthIndicator.size() <= pos) - _vecLengthIndicator.resize(pos + 1); - - _vecLengthIndicator[pos].resize(val.size()); - std::vector::iterator lIt = _vecLengthIndicator[pos].begin(); - std::vector::iterator lEnd = _vecLengthIndicator[pos].end(); + { + _vecLengthIndicator.resize(pos + 1, 0); + _vecLengthIndicator[pos] = new LengthVec(length ? length : 1); + } + + std::vector::iterator lIt = _vecLengthIndicator[pos]->begin(); + std::vector::iterator lEnd = _vecLengthIndicator[pos]->end(); typename C::const_iterator cIt = val.begin(); for (; lIt != lEnd; ++lIt, ++cIt) { @@ -721,7 +732,7 @@ private: 0, _charPtrs[pos], (SQLINTEGER) size, - &_vecLengthIndicator[pos][0]))) + &(*_vecLengthIndicator[pos])[0]))) { throw StatementException(_rStmt, "SQLBindParameter(std::vector)"); } @@ -736,21 +747,28 @@ private: if (PB_IMMEDIATE != _paramBinding) throw InvalidAccessException("std::vector can only be bound immediately."); - if (0 == val.size()) + std::size_t length = val.size(); + + if (0 == length) throw InvalidArgumentException("Empty vector not allowed."); - setParamSetSize(val.size()); + setParamSetSize(length); SQLINTEGER size = (SQLINTEGER) sizeof(SQL_DATE_STRUCT); if (_vecLengthIndicator.size() <= pos) { - _vecLengthIndicator.resize(pos + 1); - _vecLengthIndicator[pos].resize(val.size(), size); + _vecLengthIndicator.resize(pos + 1, 0); + _vecLengthIndicator[pos] = new LengthVec(length ? length : 1); } - if (_dateVec.size() <= pos) _dateVec.resize(pos + 1); - Utility::dateSync(_dateVec[pos], val); + if (_dateVecVec.size() <= pos) + { + _dateVecVec.resize(pos + 1, 0); + _dateVecVec[pos] = new DateVec(length ? length : 1); + } + + Utility::dateSync(*_dateVecVec[pos], val); SQLINTEGER colSize = 0; SQLSMALLINT decDigits = 0; @@ -763,9 +781,9 @@ private: SQL_TYPE_DATE, colSize, decDigits, - (SQLPOINTER) &_dateVec[pos][0], + (SQLPOINTER) &(*_dateVecVec[pos])[0], 0, - &_vecLengthIndicator[pos][0]))) + &(*_vecLengthIndicator[pos])[0]))) { throw StatementException(_rStmt, "SQLBindParameter(Date[])"); } @@ -780,7 +798,8 @@ private: if (PB_IMMEDIATE != _paramBinding) throw InvalidAccessException("Containers can only be bound immediately."); - if (0 == val.size()) + std::size_t length = val.size(); + if (0 == length) throw InvalidArgumentException("Empty container not allowed."); setParamSetSize(val.size()); @@ -789,12 +808,17 @@ private: if (_vecLengthIndicator.size() <= pos) { - _vecLengthIndicator.resize(pos + 1); - _vecLengthIndicator[pos].resize(val.size(), size); + _vecLengthIndicator.resize(pos + 1, 0); + _vecLengthIndicator[pos] = new LengthVec(length ? length : 1); } - if (_timeVec.size() <= pos) _timeVec.resize(pos + 1); - Utility::timeSync(_timeVec[pos], val); + if (_timeVecVec.size() <= pos) + { + _timeVecVec.resize(pos + 1, 0); + _timeVecVec[pos] = new TimeVec(length ? length : 1); + } + + Utility::timeSync(*_timeVecVec[pos], val); SQLINTEGER colSize = 0; SQLSMALLINT decDigits = 0; @@ -807,9 +831,9 @@ private: SQL_TYPE_TIME, colSize, decDigits, - (SQLPOINTER) &_timeVec[pos][0], + (SQLPOINTER) &(*_timeVecVec[pos])[0], 0, - &_vecLengthIndicator[pos][0]))) + &(*_vecLengthIndicator[pos])[0]))) { throw StatementException(_rStmt, "SQLBindParameter(Time[])"); } @@ -824,21 +848,28 @@ private: if (PB_IMMEDIATE != _paramBinding) throw InvalidAccessException("Containers can only be bound immediately."); - if (0 == val.size()) + std::size_t length = val.size(); + + if (0 == length) throw InvalidArgumentException("Empty Containers not allowed."); - setParamSetSize(val.size()); + setParamSetSize(length); SQLINTEGER size = (SQLINTEGER) sizeof(SQL_TIMESTAMP_STRUCT); if (_vecLengthIndicator.size() <= pos) { - _vecLengthIndicator.resize(pos + 1); - _vecLengthIndicator[pos].resize(val.size(), size); + _vecLengthIndicator.resize(pos + 1, 0); + _vecLengthIndicator[pos] = new LengthVec(length ? length : 1); } - if (_dateTimeVec.size() <= pos) _dateTimeVec.resize(pos + 1); - Utility::dateTimeSync(_dateTimeVec[pos], val); + if (_dateTimeVecVec.size() <= pos) + { + _dateTimeVecVec.resize(pos + 1, 0); + _dateTimeVecVec[pos] = new DateTimeVec(length ? length : 1); + } + + Utility::dateTimeSync(*_dateTimeVecVec[pos], val); SQLINTEGER colSize = 0; SQLSMALLINT decDigits = 0; @@ -851,9 +882,9 @@ private: SQL_TYPE_TIMESTAMP, colSize, decDigits, - (SQLPOINTER) &_dateTimeVec[pos][0], + (SQLPOINTER) &(*_dateTimeVecVec[pos])[0], 0, - &_vecLengthIndicator[pos][0]))) + &(*_vecLengthIndicator[pos])[0]))) { throw StatementException(_rStmt, "SQLBindParameter(Time[])"); } @@ -868,17 +899,19 @@ private: if (PB_IMMEDIATE != _paramBinding) throw InvalidAccessException("Container can only be bound immediately."); - if (0 == val.size()) + std::size_t length = val.size(); + + if (0 == length) throw InvalidArgumentException("Empty container not allowed."); - setParamSetSize(val.size()); + setParamSetSize(length); SQLINTEGER size = SQL_NULL_DATA; if (_vecLengthIndicator.size() <= pos) { - _vecLengthIndicator.resize(pos + 1); - _vecLengthIndicator[pos].resize(val.size(), size); + _vecLengthIndicator.resize(pos + 1, 0); + _vecLengthIndicator[pos] = new LengthVec(length ? length : 1); } SQLINTEGER colSize = 0; @@ -894,7 +927,7 @@ private: decDigits, 0, 0, - &_vecLengthIndicator[pos][0]))) + &(*_vecLengthIndicator[pos])[0]))) { throw StatementException(_rStmt, "SQLBindParameter()"); } @@ -956,7 +989,7 @@ private: const StatementHandle& _rStmt; - LengthVec _lengthIndicator; + LengthPtrVec _lengthIndicator; LengthVecVec _vecLengthIndicator; ParamMap _inParams; @@ -969,16 +1002,16 @@ private: StringMap _strings; UTF16StringMap _utf16Strings; - DateVec _dateVec; - TimeVec _timeVec; - DateTimeVec _dateTimeVec; + DateVecVec _dateVecVec; + TimeVecVec _timeVecVec; + DateTimeVecVec _dateTimeVecVec; CharPtrVec _charPtrs; UTF16CharPtrVec _utf16CharPtrs; BoolPtrVec _boolPtrs; const TypeInfo* _pTypeInfo; SQLINTEGER _paramSetSize; std::size_t _maxFieldSize; - AnyVec _containers; + AnyVecVec _containers; }; diff --git a/Data/ODBC/include/Poco/Data/ODBC/Connector.h b/Data/ODBC/include/Poco/Data/ODBC/Connector.h index a8bc736b6..84e6ba2fc 100644 --- a/Data/ODBC/include/Poco/Data/ODBC/Connector.h +++ b/Data/ODBC/include/Poco/Data/ODBC/Connector.h @@ -96,7 +96,14 @@ struct ODBC_API ODBCConnectorRegistrator ~ODBCConnectorRegistrator() /// Calls Poco::Data::ODBC::unregisterConnector(); { - Poco::Data::ODBC::Connector::unregisterConnector(); + try + { + Poco::Data::ODBC::Connector::unregisterConnector(); + } + catch (...) + { + poco_unexpected(); + } } }; diff --git a/Data/ODBC/include/Poco/Data/ODBC/Handle.h b/Data/ODBC/include/Poco/Data/ODBC/Handle.h index 43b02cb49..c8190c4f5 100644 --- a/Data/ODBC/include/Poco/Data/ODBC/Handle.h +++ b/Data/ODBC/include/Poco/Data/ODBC/Handle.h @@ -57,13 +57,20 @@ public: ~Handle() /// Destroys the Handle. { + try + { #if defined(_DEBUG) - SQLRETURN rc = + SQLRETURN rc = #endif - SQLFreeHandle(handleType, _handle); - // N.B. Destructors should not throw, but neither do we want to - // leak resources. So, we throw here in debug mode if things go bad. - poco_assert_dbg (!Utility::isError(rc)); + SQLFreeHandle(handleType, _handle); + // N.B. Destructors should not throw, but neither do we want to + // leak resources. So, we throw here in debug mode if things go bad. + poco_assert_dbg (!Utility::isError(rc)); + } + catch (...) + { + poco_unexpected(); + } } operator const H& () const diff --git a/Data/ODBC/src/Binder.cpp b/Data/ODBC/src/Binder.cpp index c043814ff..5f2e99a28 100644 --- a/Data/ODBC/src/Binder.cpp +++ b/Data/ODBC/src/Binder.cpp @@ -49,10 +49,14 @@ Binder::~Binder() void Binder::freeMemory() { - LengthVec::iterator itLen = _lengthIndicator.begin(); - LengthVec::iterator itLenEnd = _lengthIndicator.end(); + LengthPtrVec::iterator itLen = _lengthIndicator.begin(); + LengthPtrVec::iterator itLenEnd = _lengthIndicator.end(); for(; itLen != itLenEnd; ++itLen) delete *itLen; + LengthVecVec::iterator itVecLen = _vecLengthIndicator.begin(); + LengthVecVec::iterator itVecLenEnd = _vecLengthIndicator.end(); + for (; itVecLen != itVecLenEnd; ++itVecLen) delete *itVecLen; + TimeMap::iterator itT = _times.begin(); TimeMap::iterator itTEnd = _times.end(); for(; itT != itTEnd; ++itT) delete itT->first; @@ -80,6 +84,18 @@ void Binder::freeMemory() BoolPtrVec::iterator itBool = _boolPtrs.begin(); BoolPtrVec::iterator endBool = _boolPtrs.end(); for (; itBool != endBool; ++itBool) delete [] *itBool; + + DateVecVec::iterator itDateVec = _dateVecVec.begin(); + DateVecVec::iterator itDateVecEnd = _dateVecVec.end(); + for (; itDateVec != itDateVecEnd; ++itDateVec) delete *itDateVec; + + TimeVecVec::iterator itTimeVec = _timeVecVec.begin(); + TimeVecVec::iterator itTimeVecEnd = _timeVecVec.end(); + for (; itTimeVec != itTimeVecEnd; ++itTimeVec) delete *itTimeVec; + + DateTimeVecVec::iterator itDateTimeVec = _dateTimeVecVec.begin(); + DateTimeVecVec::iterator itDateTimeVecEnd = _dateTimeVecVec.end(); + for (; itDateTimeVec != itDateTimeVecEnd; ++itDateTimeVec) delete *itDateTimeVec; } @@ -385,16 +401,16 @@ void Binder::synchronize() void Binder::reset() { freeMemory(); - LengthVec().swap(_lengthIndicator); + LengthPtrVec().swap(_lengthIndicator); _inParams.clear(); _outParams.clear(); _dates.clear(); _times.clear(); _timestamps.clear(); _strings.clear(); - _dateVec.clear(); - _timeVec.clear(); - _dateTimeVec.clear(); + _dateVecVec.clear(); + _timeVecVec.clear(); + _dateTimeVecVec.clear(); _charPtrs.clear(); _boolPtrs.clear(); _containers.clear(); diff --git a/Data/ODBC/src/ConnectionHandle.cpp b/Data/ODBC/src/ConnectionHandle.cpp index 5652a2413..a4fed4884 100644 --- a/Data/ODBC/src/ConnectionHandle.cpp +++ b/Data/ODBC/src/ConnectionHandle.cpp @@ -40,12 +40,19 @@ ConnectionHandle::ConnectionHandle(EnvironmentHandle* pEnvironment): ConnectionHandle::~ConnectionHandle() { - SQLDisconnect(_hdbc); - SQLRETURN rc = SQLFreeHandle(SQL_HANDLE_DBC, _hdbc); + try + { + SQLDisconnect(_hdbc); + SQLRETURN rc = SQLFreeHandle(SQL_HANDLE_DBC, _hdbc); - if (_ownsEnvironment) delete _pEnvironment; + if (_ownsEnvironment) delete _pEnvironment; - poco_assert (!Utility::isError(rc)); + poco_assert (!Utility::isError(rc)); + } + catch (...) + { + poco_unexpected(); + } } diff --git a/Data/ODBC/src/EnvironmentHandle.cpp b/Data/ODBC/src/EnvironmentHandle.cpp index 85f1ec10c..f8c9b11f3 100644 --- a/Data/ODBC/src/EnvironmentHandle.cpp +++ b/Data/ODBC/src/EnvironmentHandle.cpp @@ -41,8 +41,15 @@ EnvironmentHandle::EnvironmentHandle(): _henv(SQL_NULL_HENV) EnvironmentHandle::~EnvironmentHandle() { - SQLRETURN rc = SQLFreeHandle(SQL_HANDLE_ENV, _henv); - poco_assert (!Utility::isError(rc)); + try + { + SQLRETURN rc = SQLFreeHandle(SQL_HANDLE_ENV, _henv); + poco_assert (!Utility::isError(rc)); + } + catch (...) + { + poco_unexpected(); + } } diff --git a/Data/ODBC/src/ODBCStatementImpl.cpp b/Data/ODBC/src/ODBCStatementImpl.cpp index 0a3ab4953..c48343362 100644 --- a/Data/ODBC/src/ODBCStatementImpl.cpp +++ b/Data/ODBC/src/ODBCStatementImpl.cpp @@ -64,11 +64,11 @@ ODBCStatementImpl::~ODBCStatementImpl() { ColumnPtrVecVec::iterator it = _columnPtrs.begin(); ColumnPtrVecVec::iterator end = _columnPtrs.end(); - for(; it != end; ++it) + for (; it != end; ++it) { ColumnPtrVec::iterator itC = it->begin(); ColumnPtrVec::iterator endC = it->end(); - for(; itC != endC; ++itC) delete *itC; + for (; itC != endC; ++itC) delete *itC; } } diff --git a/Data/ODBC/src/Preparator.cpp b/Data/ODBC/src/Preparator.cpp index 09c13d9f1..8e18fc8fe 100644 --- a/Data/ODBC/src/Preparator.cpp +++ b/Data/ODBC/src/Preparator.cpp @@ -52,7 +52,14 @@ Preparator::Preparator(const Preparator& other): Preparator::~Preparator() { - freeMemory(); + try + { + freeMemory(); + } + catch (...) + { + poco_unexpected(); + } } @@ -152,7 +159,8 @@ std::size_t Preparator::maxDataSize(std::size_t pos) const sz = mc.length(); // accomodate for terminating zero (non-bulk only!) - if (!isBulk() && ODBCMetaColumn::FDT_STRING == mc.type()) ++sz; + MetaColumn::ColumnDataType type = mc.type(); + if (!isBulk() && ((ODBCMetaColumn::FDT_WSTRING == type) || (ODBCMetaColumn::FDT_STRING == type))) ++sz; } catch (StatementException&) { } diff --git a/Data/ODBC/src/SessionImpl.cpp b/Data/ODBC/src/SessionImpl.cpp index 25f25c2b6..6c861e633 100644 --- a/Data/ODBC/src/SessionImpl.cpp +++ b/Data/ODBC/src/SessionImpl.cpp @@ -70,14 +70,20 @@ SessionImpl::SessionImpl(const std::string& connect, SessionImpl::~SessionImpl() { - if (isTransaction() && !getFeature("autoCommit")) + try { - try { rollback(); } - catch (...) { } - } + if (isTransaction() && !getFeature("autoCommit")) + { + try { rollback(); } + catch (...) { } + } - try { close(); } - catch (...) { } + close(); + } + catch (...) + { + poco_unexpected(); + } } diff --git a/Data/ODBC/testsuite/TestSuite_VS71.vcproj b/Data/ODBC/testsuite/TestSuite_VS71.vcproj index 30bbac50d..c99d395ca 100644 --- a/Data/ODBC/testsuite/TestSuite_VS71.vcproj +++ b/Data/ODBC/testsuite/TestSuite_VS71.vcproj @@ -37,7 +37,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false TestSuited TestSuited @@ -129,6 +129,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitd.lib;WinTestRunnerd.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) @@ -139,6 +140,7 @@ bin\TestSuited.pdb Windows MachineX86 + %(AdditionalOptions) @@ -161,6 +163,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnit.lib;WinTestRunner.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) @@ -171,6 +174,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -191,6 +195,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmtd.lib;WinTestRunnermtd.lib;iphlpapi.lib;winmm.lib;nafxcwd.lib;libcmtd.lib;WinTestRunner.res;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) @@ -202,6 +207,7 @@ bin\static_mt\TestSuited.pdb Windows MachineX86 + %(AdditionalOptions) @@ -224,6 +230,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmt.lib;WinTestRunnermt.lib;iphlpapi.lib;winmm.lib;nafxcw.lib;libcmt.lib;WinTestRunner.res;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) @@ -235,6 +242,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -255,6 +263,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmdd.lib;WinTestRunnermdd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) @@ -265,6 +274,7 @@ bin\static_md\TestSuited.pdb Windows MachineX86 + %(AdditionalOptions) @@ -287,6 +297,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmd.lib;WinTestRunnermd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) @@ -297,6 +308,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Data/ODBC/testsuite/TestSuite_vs100.vcxproj.filters b/Data/ODBC/testsuite/TestSuite_vs100.vcxproj.filters index da7cfdd8d..3962d3646 100644 --- a/Data/ODBC/testsuite/TestSuite_vs100.vcxproj.filters +++ b/Data/ODBC/testsuite/TestSuite_vs100.vcxproj.filters @@ -2,28 +2,28 @@ - {7cea07b7-a25e-44a7-a0a3-b25c2f4a5bf9} + {9ba0ea7d-e825-4438-accc-0c110bb0ccff} - {38774fe8-ef55-4619-9b1f-7991483d458c} + {9a2b668f-ea63-4144-bf6d-8b971a258bbd} - {8eab2924-80d4-41d8-bc19-a3edfbd53ca2} + {c4110c2c-af21-4a79-9d41-9035b2b6b312} - {2d05af48-18be-49ab-8bf0-5a23cae26c01} + {48a23117-be00-475d-916a-a272792ea944} - {d602ff32-3a79-490f-9ab7-e538b35c5014} + {0d230048-a1ac-4dfd-a25d-8d9b85e1b366} - {616c8f7b-1c32-47c5-bb7f-340e320fc1fd} + {d2757375-ab66-4a0c-9780-70123d647d4b} - {9dca8945-72dd-4da7-9913-8f59d07d8062} + {951ca3a0-796e-4ef7-91f8-045b6c3a9e82} - {c809f647-33f9-4e9c-a66d-c86cb382ab78} + {794cc8a8-497f-4b16-ae74-5be1b0683de8} diff --git a/Data/ODBC/testsuite/TestSuite_vs110.vcxproj b/Data/ODBC/testsuite/TestSuite_vs110.vcxproj index f510fbf08..83fc4ec7d 100644 --- a/Data/ODBC/testsuite/TestSuite_vs110.vcxproj +++ b/Data/ODBC/testsuite/TestSuite_vs110.vcxproj @@ -101,32 +101,32 @@ bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false diff --git a/Data/ODBC/testsuite/TestSuite_vs110.vcxproj.filters b/Data/ODBC/testsuite/TestSuite_vs110.vcxproj.filters index 65c9c43fc..051a405bd 100644 --- a/Data/ODBC/testsuite/TestSuite_vs110.vcxproj.filters +++ b/Data/ODBC/testsuite/TestSuite_vs110.vcxproj.filters @@ -2,28 +2,28 @@ - {4a210867-1ca6-4110-962b-b745df2f241c} + {19a90131-bb83-4c1c-ae57-3c78fb318bb9} - {8cfb2685-48c6-4007-8a07-651135dcf310} + {f7e44542-b20d-404f-b269-7b83a3b79573} - {9c4e733a-0c44-44cd-adba-fbb4cf0994d8} + {2d06c267-b433-4234-b0f3-b1837fa3c483} - {39debbec-b8f6-4f0a-8594-2eacf68daf5c} + {64695130-f4ed-402e-8243-968e309193ae} - {45a07a75-8f3a-44c8-af89-736a163fa476} + {3cfdbb0d-99a0-4ad8-b8f2-237d00b14aa1} - {5288488f-e7a7-4bee-83cc-dbc1817f31a6} + {39ebf2d4-2888-4901-9fa5-3d5d07915cd3} - {5b32e8c3-e4af-4bd0-ac3a-57268cede750} + {f1058a66-f762-4fa6-861f-18601eaa5f75} - {806864ed-7967-4dab-ba5c-eed7cc13b7fb} + {0abdcdd8-e27c-4100-b18a-97553721b4a8} diff --git a/Data/ODBC/testsuite/TestSuite_vs120.vcxproj b/Data/ODBC/testsuite/TestSuite_vs120.vcxproj index 85bc80254..dfe60d082 100644 --- a/Data/ODBC/testsuite/TestSuite_vs120.vcxproj +++ b/Data/ODBC/testsuite/TestSuite_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false diff --git a/Data/ODBC/testsuite/TestSuite_vs120.vcxproj.filters b/Data/ODBC/testsuite/TestSuite_vs120.vcxproj.filters index 6550c9066..f4453cc69 100644 --- a/Data/ODBC/testsuite/TestSuite_vs120.vcxproj.filters +++ b/Data/ODBC/testsuite/TestSuite_vs120.vcxproj.filters @@ -2,28 +2,28 @@ - {70e4d6ce-3ad7-4301-b06f-e2cc07bed5a6} + {9208550b-2360-46eb-874f-f0a035d4ec4a} - {56ff1cce-b2be-43da-bbbe-31f1b476b3c8} + {bade06b6-8373-4c96-ae8f-f8e9decaa9ea} - {5f309c6a-9f3a-45a4-a7d2-f0e0cfa2c643} + {9c622891-6a05-4e74-aa56-5c15e6849974} - {247812f1-a892-4934-bb32-6080e5d68c44} + {26850c8e-b9ad-4b81-bb49-c485c102c521} - {ea8ed8a4-f34c-4f52-a2be-6a04c2f5b22f} + {5d3084d3-5c07-4a6b-b0a9-e442035208d5} - {50cbf90a-ab48-49d9-8515-40325556a8a9} + {7605e59e-0947-4773-829b-0c666b25fdc0} - {a6f712cc-b134-4ae4-ab27-12acf3a05995} + {ad498692-a306-44ab-baa5-8e4d0132e2a6} - {a102f68f-e2fb-4c1f-aaab-01cd4176736a} + {35067851-40f1-4897-bb63-6b9ad7a0c316} diff --git a/Data/ODBC/testsuite/TestSuite_x64_vs100.vcxproj b/Data/ODBC/testsuite/TestSuite_x64_vs100.vcxproj index a83aaaa6e..419612cbc 100644 --- a/Data/ODBC/testsuite/TestSuite_x64_vs100.vcxproj +++ b/Data/ODBC/testsuite/TestSuite_x64_vs100.vcxproj @@ -87,22 +87,22 @@ <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false TestSuited TestSuited @@ -129,6 +129,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitd.lib;WinTestRunnerd.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) @@ -139,6 +140,7 @@ bin64\TestSuited.pdb Windows MachineX64 + %(AdditionalOptions) @@ -161,6 +163,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnit.lib;WinTestRunner.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) @@ -171,6 +174,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -191,6 +195,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmtd.lib;WinTestRunnermtd.lib;iphlpapi.lib;winmm.lib;nafxcwd.lib;libcmtd.lib;WinTestRunner.res;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) @@ -202,6 +207,7 @@ bin64\static_mt\TestSuited.pdb Windows MachineX64 + %(AdditionalOptions) @@ -224,6 +230,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmt.lib;WinTestRunnermt.lib;iphlpapi.lib;winmm.lib;nafxcw.lib;libcmt.lib;WinTestRunner.res;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) @@ -235,6 +242,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -255,6 +263,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmdd.lib;WinTestRunnermdd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) @@ -265,6 +274,7 @@ bin64\static_md\TestSuited.pdb Windows MachineX64 + %(AdditionalOptions) @@ -287,6 +297,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmd.lib;WinTestRunnermd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) @@ -297,6 +308,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Data/ODBC/testsuite/TestSuite_x64_vs100.vcxproj.filters b/Data/ODBC/testsuite/TestSuite_x64_vs100.vcxproj.filters index c8bf756a0..73c50a910 100644 --- a/Data/ODBC/testsuite/TestSuite_x64_vs100.vcxproj.filters +++ b/Data/ODBC/testsuite/TestSuite_x64_vs100.vcxproj.filters @@ -2,28 +2,28 @@ - {12582458-0fcf-47e0-bece-28d30b2b2602} + {65815d29-264a-4b19-a04e-8119f4f652e2} - {5b3386fd-2eb3-44de-9507-7c5d388b5955} + {1899ed66-43f1-44a8-bf29-27c701510eac} - {d1fa0cf4-3211-4811-a926-ebddaa7a2718} + {4d163bda-4970-48c1-94d7-d67b3acacf3c} - {df63c7e0-5376-4b90-bb42-2865adee557b} + {4bdc9381-c890-4bfe-a184-2cdd8b0a4eb7} - {185e9c0b-fabb-4f98-b2dc-b8a8d33eef05} + {cf5ffadd-d207-4661-96d3-fef681970fc7} - {e4acfca1-46fc-4364-86a9-1e129505c077} + {3a46cfcf-3417-4bd0-b7fd-fecf383385a5} - {e2aad12f-aa64-42fb-a951-46e9b4c227f2} + {cd412602-ccc2-4cb4-bde5-387d39845817} - {4af9b86a-f102-4282-bf10-ee0c5b678035} + {2b1e44cf-875d-48d8-a2f1-e982e6e75c96} diff --git a/Data/ODBC/testsuite/TestSuite_x64_vs110.vcxproj b/Data/ODBC/testsuite/TestSuite_x64_vs110.vcxproj index 7aa6977bb..d8cc927af 100644 --- a/Data/ODBC/testsuite/TestSuite_x64_vs110.vcxproj +++ b/Data/ODBC/testsuite/TestSuite_x64_vs110.vcxproj @@ -101,32 +101,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false diff --git a/Data/ODBC/testsuite/TestSuite_x64_vs110.vcxproj.filters b/Data/ODBC/testsuite/TestSuite_x64_vs110.vcxproj.filters index 227e5eefc..79d2a9708 100644 --- a/Data/ODBC/testsuite/TestSuite_x64_vs110.vcxproj.filters +++ b/Data/ODBC/testsuite/TestSuite_x64_vs110.vcxproj.filters @@ -2,28 +2,28 @@ - {b758f069-17ec-404b-a7aa-01c9b4407f9f} + {ee57b838-275a-456d-b06a-fc4912f1b8de} - {4a8b121f-380e-49e5-a48e-547b68b4ddd9} + {59a8531b-cc1e-4d07-b947-83604e11cf27} - {c4b9d25e-1b12-49d5-9bcb-831efca14854} + {c068a3a9-7daf-4c99-b768-a45b34a255de} - {39f83211-efa7-46bd-96e5-581c2192e002} + {fffeaa51-08de-4771-b5ad-f9937e077426} - {a2236a01-11fc-4af4-bfb9-97185d6631f9} + {3ecf29b6-947a-4954-ae94-98bf808493f3} - {552c7bd0-a9c4-4646-a834-f911f9bb22b3} + {f9fe5074-566f-48e7-a8aa-ddc36118d190} - {4c1d2bec-c1ed-49bc-82b9-2dabee207dc6} + {ae6f43b8-d957-4db1-892a-3bdd29f9e67b} - {ff26e298-3241-44d1-99b8-cf06c3b48ad8} + {468d77d9-29a3-4bca-95dd-686169564128} diff --git a/Data/ODBC/testsuite/TestSuite_x64_vs120.vcxproj b/Data/ODBC/testsuite/TestSuite_x64_vs120.vcxproj index c8a5f5fb3..4566dd512 100644 --- a/Data/ODBC/testsuite/TestSuite_x64_vs120.vcxproj +++ b/Data/ODBC/testsuite/TestSuite_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false diff --git a/Data/ODBC/testsuite/TestSuite_x64_vs120.vcxproj.filters b/Data/ODBC/testsuite/TestSuite_x64_vs120.vcxproj.filters index 97729d79f..53449fd5e 100644 --- a/Data/ODBC/testsuite/TestSuite_x64_vs120.vcxproj.filters +++ b/Data/ODBC/testsuite/TestSuite_x64_vs120.vcxproj.filters @@ -2,28 +2,28 @@ - {badd144d-ce58-450b-9e54-98b309d8dfc1} + {96afbe3b-7be8-4a50-ab0a-47b5b8e1030f} - {276e02c5-e9e7-46c1-a031-bfa78ae835fe} + {08de4b01-8630-48b0-ba16-0c5518185701} - {8a368edc-e080-4492-99e8-1ce0723155f0} + {1e1b78a9-3f8c-476b-9e9f-49f94734a21f} - {17bf1a0c-103f-4ea9-8132-d74130b3caad} + {dd43ff74-ac63-41c8-aa6c-e0b5b08b8171} - {14e4d5a4-6525-410e-841b-862d6812f5a9} + {96df835f-8f54-4c43-9ffb-c5ef5b17ec3b} - {8ecef172-86eb-40b1-a07d-00049f5a7580} + {27e1ccb9-e898-424e-ba8c-858a6b0331b1} - {b85d3d0b-c148-4d54-b4e0-e09d63189a05} + {b4697669-7de2-4bf8-8067-75bc3a9aee35} - {99b622d8-e73b-4b3e-a147-f6837c5d1519} + {9cba64c4-a4fb-4b10-bf2c-20842707134b} diff --git a/Data/ODBC/testsuite/TestSuite_x64_vs90.vcproj b/Data/ODBC/testsuite/TestSuite_x64_vs90.vcproj index 0daf5a979..98b6cc9b5 100644 --- a/Data/ODBC/testsuite/TestSuite_x64_vs90.vcproj +++ b/Data/ODBC/testsuite/TestSuite_x64_vs90.vcproj @@ -47,7 +47,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;4996;4244;4018" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;4996;4244;4018" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;4996;4244;4018" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;4996;4244;4018" + AdditionalOptions=""/> @@ -274,7 +280,8 @@ Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" CompileAs="0" - DisableSpecificWarnings="4800;4996;4244;4018"/> + DisableSpecificWarnings="4800;4996;4244;4018" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;4996;4244;4018" + AdditionalOptions=""/> diff --git a/Data/SQLite/SQLite_VS80.vcproj b/Data/SQLite/SQLite_VS80.vcproj index 60a7a99aa..4b84297f9 100644 --- a/Data/SQLite/SQLite_VS80.vcproj +++ b/Data/SQLite/SQLite_VS80.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="4" CompileAs="0" - DisableSpecificWarnings="4996;4244;4018"/> + DisableSpecificWarnings="4996;4244;4018" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4996;4244;4018" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4996;4244;4018" + AdditionalOptions=""/> + DisableSpecificWarnings="4996;4244;4018" + AdditionalOptions=""/> + DisableSpecificWarnings="4996;4244;4018" + AdditionalOptions=""/> + DisableSpecificWarnings="4996;4244;4018" + AdditionalOptions=""/> + DisableSpecificWarnings="4996;4244;4018" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4996;4244;4018" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4996;4244;4018" + AdditionalOptions=""/> + DisableSpecificWarnings="4996;4244;4018" + AdditionalOptions=""/> + DisableSpecificWarnings="4996;4244;4018" + AdditionalOptions=""/> + DisableSpecificWarnings="4996;4244;4018" + AdditionalOptions=""/> ..\..\bin\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\SQLite\$(Platform)\$(Configuration)\ true true ..\..\bin\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\SQLite\$(Platform)\$(Configuration)\ false true ..\..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\SQLite\$(Platform)\$(Configuration)\ ..\..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\SQLite\$(Platform)\$(Configuration)\ ..\..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\SQLite\$(Platform)\$(Configuration)\ ..\..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\SQLite\$(Platform)\$(Configuration)\ diff --git a/Data/SQLite/SQLite_WEC2013_vs110.vcxproj.filters b/Data/SQLite/SQLite_WEC2013_vs110.vcxproj.filters index d4615a28d..8d27f6dbe 100644 --- a/Data/SQLite/SQLite_WEC2013_vs110.vcxproj.filters +++ b/Data/SQLite/SQLite_WEC2013_vs110.vcxproj.filters @@ -2,22 +2,22 @@ - {3870c98f-a4d6-48c2-b4ff-9dfe83427d12} + {c737c51e-ce2b-404e-8c94-f85788a47fe7} - {b74d2f38-c2c2-48b2-8db5-f44394777983} + {53af85f7-b9b5-4efc-a9af-85baa6f8131d} - {a58a61ef-9a4d-4541-8516-73bd1e6f8919} + {daf2ffea-c36a-4688-9545-71af369cbd25} - {315263da-c494-4c14-8b0a-c275fdaedda6} + {cd626260-ee56-4991-b3d5-eff95b6fa883} - {29cb1bb3-6312-4920-a10a-97902a93f592} + {852d1da5-9f2c-4f75-8001-10fc650fe805} - {1aafff9f-9f63-4345-a56e-c2d39f6d706e} + {39465cc5-354e-4d39-9389-30d9945954e7} diff --git a/Data/SQLite/SQLite_WEC2013_vs120.vcxproj b/Data/SQLite/SQLite_WEC2013_vs120.vcxproj index 2daa177c2..c9d4e74fa 100644 --- a/Data/SQLite/SQLite_WEC2013_vs120.vcxproj +++ b/Data/SQLite/SQLite_WEC2013_vs120.vcxproj @@ -98,31 +98,31 @@ ..\..\bin\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\SQLite\$(Platform)\$(Configuration)\ true true ..\..\bin\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\SQLite\$(Platform)\$(Configuration)\ false true ..\..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\SQLite\$(Platform)\$(Configuration)\ ..\..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\SQLite\$(Platform)\$(Configuration)\ ..\..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\SQLite\$(Platform)\$(Configuration)\ ..\..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\SQLite\$(Platform)\$(Configuration)\ diff --git a/Data/SQLite/SQLite_WEC2013_vs120.vcxproj.filters b/Data/SQLite/SQLite_WEC2013_vs120.vcxproj.filters index a4a3870fc..739005ddd 100644 --- a/Data/SQLite/SQLite_WEC2013_vs120.vcxproj.filters +++ b/Data/SQLite/SQLite_WEC2013_vs120.vcxproj.filters @@ -2,22 +2,22 @@ - {78bffc37-0804-48b4-a67a-a08497258c0a} + {5d03bba2-1696-4d84-890d-a802c77e4c1e} - {ad19220b-b9cd-4539-ad35-b40c7a8b4277} + {811ec401-b817-4e8e-a21e-c91ff0350ea6} - {f6b3a7e0-86af-49a6-ac59-51bf3ab4b411} + {1b2c1a06-813c-4d7d-b4f9-3f04544d3ce0} - {9f3261aa-2497-48ee-bbad-e8400dda8773} + {753f5227-e6c2-4b87-b167-d385ba805a4d} - {7c2c235f-fa3c-4039-81e0-f00e930e95b9} + {23ed50dc-fad7-49b1-b472-2e23dd235c62} - {af4827d0-c27c-4e61-b96c-4940ef0bbae0} + {b75e8029-267d-40f5-b673-cf4aa92eedb0} diff --git a/Data/SQLite/SQLite_vs100.vcxproj b/Data/SQLite/SQLite_vs100.vcxproj index cb9c8aca9..19bfe03cb 100644 --- a/Data/SQLite/SQLite_vs100.vcxproj +++ b/Data/SQLite/SQLite_vs100.vcxproj @@ -81,19 +81,19 @@ <_ProjectFileVersion>10.0.40219.1 ..\..\bin\ - obj\$(Configuration)\ + obj\SQLite\$(Configuration)\ true ..\..\bin\ - obj\$(Configuration)\ + obj\SQLite\$(Configuration)\ false ..\..\lib\ - obj\$(Configuration)\ + obj\SQLite\$(Configuration)\ ..\..\lib\ - obj\$(Configuration)\ + obj\SQLite\$(Configuration)\ ..\..\lib\ - obj\$(Configuration)\ + obj\SQLite\$(Configuration)\ ..\..\lib\ - obj\$(Configuration)\ + obj\SQLite\$(Configuration)\ PocoDataSQLited PocoDataSQLitemdd PocoDataSQLitemtd @@ -119,6 +119,7 @@ EditAndContinue Default 4996;4244;4018;%(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) @@ -130,6 +131,7 @@ Console ..\..\lib\PocoDataSQLited.lib MachineX86 + %(AdditionalOptions) @@ -152,6 +154,7 @@ Default 4996;4244;4018;%(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) @@ -164,6 +167,7 @@ true ..\..\lib\PocoDataSQLite.lib MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default 4996;4244;4018;%(DisableSpecificWarnings) + %(AdditionalOptions) ..\..\lib\PocoDataSQLitemtd.lib @@ -210,6 +215,7 @@ Default 4996;4244;4018;%(DisableSpecificWarnings) + %(AdditionalOptions) ..\..\lib\PocoDataSQLitemt.lib @@ -234,6 +240,7 @@ EditAndContinue Default 4996;4244;4018;%(DisableSpecificWarnings) + %(AdditionalOptions) ..\..\lib\PocoDataSQLitemdd.lib @@ -260,6 +267,7 @@ Default 4996;4244;4018;%(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) diff --git a/Data/SQLite/SQLite_vs100.vcxproj.filters b/Data/SQLite/SQLite_vs100.vcxproj.filters index 2bf177478..73c888893 100644 --- a/Data/SQLite/SQLite_vs100.vcxproj.filters +++ b/Data/SQLite/SQLite_vs100.vcxproj.filters @@ -2,22 +2,22 @@ - {e6aced72-4741-441d-b37b-d4e347799dd6} + {0a1202c2-1436-466c-8f6d-e228445e7fc1} - {de37ce41-8e4e-491f-bca7-32451d03ab5c} + {beebf26d-84df-4c9b-9a40-187f97f32112} - {eedceb0e-4019-43f4-9ea7-8ac137e57d5b} + {81ff2ed2-e255-408f-9f0f-0c169ce47279} - {ee26b17e-f280-4ab0-9dfc-cfc325934a05} + {889c3c66-8921-43d4-b5fc-9db67841e4d0} - {cf7c216e-fe45-4bb4-99ef-9c217cf99d1e} + {dafe565a-3b96-4199-8c5f-010bbad0c3ac} - {bfb6b02b-1333-4e46-bd5d-0f7419710301} + {ad499320-91cc-4640-bd84-274e65757c4b} diff --git a/Data/SQLite/SQLite_vs110.vcxproj b/Data/SQLite/SQLite_vs110.vcxproj index d25ed0533..4049ef1e2 100644 --- a/Data/SQLite/SQLite_vs110.vcxproj +++ b/Data/SQLite/SQLite_vs110.vcxproj @@ -95,29 +95,29 @@ ..\..\bin\ - obj\$(Configuration)\ + obj\SQLite\$(Configuration)\ true ..\..\bin\ - obj\$(Configuration)\ + obj\SQLite\$(Configuration)\ false ..\..\lib\ - obj\$(Configuration)\ + obj\SQLite\$(Configuration)\ ..\..\lib\ - obj\$(Configuration)\ + obj\SQLite\$(Configuration)\ ..\..\lib\ - obj\$(Configuration)\ + obj\SQLite\$(Configuration)\ ..\..\lib\ - obj\$(Configuration)\ + obj\SQLite\$(Configuration)\ diff --git a/Data/SQLite/SQLite_vs110.vcxproj.filters b/Data/SQLite/SQLite_vs110.vcxproj.filters index dad6557d0..440fbe2b4 100644 --- a/Data/SQLite/SQLite_vs110.vcxproj.filters +++ b/Data/SQLite/SQLite_vs110.vcxproj.filters @@ -2,22 +2,22 @@ - {8a1a0384-7407-49e5-aac2-c01c9932a530} + {77982029-7e86-42da-b2bd-7e9587996aae} - {92c32b1e-4aa9-4a2b-b90c-85540ba0149b} + {0b45a4e3-d835-4acd-87f4-b06f45c5bbc1} - {9846c948-c1e2-4d62-b751-bae3b68a02c7} + {fb4c74ab-673c-470a-b83a-62e828bda47e} - {c0a1caa3-0f56-4a81-9e83-1c6479501bc9} + {2c6e698f-6de5-43a4-9b89-b9d9044b587e} - {3135385f-1b19-46d4-a2c7-251a5642f78f} + {df3689e3-d059-423d-8a0b-8a8a5d82cb75} - {92b668bc-e9d7-4131-a205-93907a1580ca} + {a1055f6e-dad9-47d5-9daf-a20a6fb563f8} diff --git a/Data/SQLite/SQLite_vs120.vcxproj b/Data/SQLite/SQLite_vs120.vcxproj index 13edd59f5..5bf1a6d19 100644 --- a/Data/SQLite/SQLite_vs120.vcxproj +++ b/Data/SQLite/SQLite_vs120.vcxproj @@ -95,29 +95,29 @@ ..\..\bin\ - obj\$(Configuration)\ + obj\SQLite\$(Configuration)\ true ..\..\bin\ - obj\$(Configuration)\ + obj\SQLite\$(Configuration)\ false ..\..\lib\ - obj\$(Configuration)\ + obj\SQLite\$(Configuration)\ ..\..\lib\ - obj\$(Configuration)\ + obj\SQLite\$(Configuration)\ ..\..\lib\ - obj\$(Configuration)\ + obj\SQLite\$(Configuration)\ ..\..\lib\ - obj\$(Configuration)\ + obj\SQLite\$(Configuration)\ diff --git a/Data/SQLite/SQLite_vs120.vcxproj.filters b/Data/SQLite/SQLite_vs120.vcxproj.filters index d6dbbb840..f7495e0a2 100644 --- a/Data/SQLite/SQLite_vs120.vcxproj.filters +++ b/Data/SQLite/SQLite_vs120.vcxproj.filters @@ -2,22 +2,22 @@ - {5f9dfc60-06ec-4f6e-b060-f4570b1e21b3} + {b7a5f5eb-b7ff-4a18-ba86-d91b37bffd33} - {33681d50-7b35-4f2d-be99-81bf7009aab3} + {dd31061e-9e4f-4941-a6be-39da23450f04} - {cb83f4ca-19af-4a65-872c-5e0fcf09cc1b} + {9bbe961e-2f82-476a-94be-f50a6c1ffe45} - {a60ebc18-aac1-4f78-b787-e5596f1ffa1b} + {9999f851-cd86-4532-9d7b-74d20437321b} - {10f0a546-87dd-4ad4-be67-059ad78a6ff5} + {d144812a-f778-4aca-8d30-85d432734bc5} - {cd5f3823-cd42-40fb-af7f-a46749005e84} + {c099f586-47f5-474b-8d73-2576601b2c5b} diff --git a/Data/SQLite/SQLite_x64_vs100.vcxproj b/Data/SQLite/SQLite_x64_vs100.vcxproj index 887dbeaed..61bbb121d 100644 --- a/Data/SQLite/SQLite_x64_vs100.vcxproj +++ b/Data/SQLite/SQLite_x64_vs100.vcxproj @@ -81,19 +81,19 @@ <_ProjectFileVersion>10.0.40219.1 ..\..\bin64\ - obj64\$(Configuration)\ + obj64\SQLite\$(Configuration)\ true ..\..\bin64\ - obj64\$(Configuration)\ + obj64\SQLite\$(Configuration)\ false ..\..\lib64\ - obj64\$(Configuration)\ + obj64\SQLite\$(Configuration)\ ..\..\lib64\ - obj64\$(Configuration)\ + obj64\SQLite\$(Configuration)\ ..\..\lib64\ - obj64\$(Configuration)\ + obj64\SQLite\$(Configuration)\ ..\..\lib64\ - obj64\$(Configuration)\ + obj64\SQLite\$(Configuration)\ PocoDataSQLite64d PocoDataSQLitemdd PocoDataSQLitemtd @@ -119,6 +119,7 @@ ProgramDatabase Default 4996;4244;4018;%(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) @@ -130,6 +131,7 @@ Console ..\..\lib64\PocoDataSQLited.lib MachineX64 + %(AdditionalOptions) @@ -152,6 +154,7 @@ Default 4996;4244;4018;%(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) @@ -164,6 +167,7 @@ true ..\..\lib64\PocoDataSQLite.lib MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default 4996;4244;4018;%(DisableSpecificWarnings) + %(AdditionalOptions) ..\..\lib64\PocoDataSQLitemtd.lib @@ -210,6 +215,7 @@ Default 4996;4244;4018;%(DisableSpecificWarnings) + %(AdditionalOptions) ..\..\lib64\PocoDataSQLitemt.lib @@ -234,6 +240,7 @@ ProgramDatabase Default 4996;4244;4018;%(DisableSpecificWarnings) + %(AdditionalOptions) ..\..\lib64\PocoDataSQLitemdd.lib @@ -259,6 +266,7 @@ Default 4996;4244;4018;%(DisableSpecificWarnings) + %(AdditionalOptions) ..\..\lib64\PocoDataSQLitemd.lib diff --git a/Data/SQLite/SQLite_x64_vs100.vcxproj.filters b/Data/SQLite/SQLite_x64_vs100.vcxproj.filters index 60b188106..198a14c15 100644 --- a/Data/SQLite/SQLite_x64_vs100.vcxproj.filters +++ b/Data/SQLite/SQLite_x64_vs100.vcxproj.filters @@ -2,22 +2,22 @@ - {bcaf734c-f1ed-4c4e-acad-70edfcd296c6} + {6119dc34-a134-42bb-988e-b097ea56d1f1} - {3c05f097-04c0-4a55-a384-b33f080ce52f} + {10c24878-4ee5-4c3b-b245-15ddd7fcc11a} - {669dcf8f-e6be-4066-9ec4-42bee3625744} + {1a359f26-a43e-4e07-b3fc-1800770b0dce} - {0a0b4248-f33c-4ce3-98a6-d027f722a69c} + {08811284-3786-4c46-90c2-1ddfcac37990} - {4c24c51b-c76a-428c-9bb7-788009210d6d} + {5e2fd88f-cf23-4830-84db-6e5e5a3496de} - {3788c2ec-d70e-4994-b80b-c9b189daaef7} + {9a4d3729-d045-4461-969d-e789e9a4b43c} diff --git a/Data/SQLite/SQLite_x64_vs110.vcxproj b/Data/SQLite/SQLite_x64_vs110.vcxproj index 832160990..fd4ab49db 100644 --- a/Data/SQLite/SQLite_x64_vs110.vcxproj +++ b/Data/SQLite/SQLite_x64_vs110.vcxproj @@ -95,29 +95,29 @@ ..\..\bin64\ - obj64\$(Configuration)\ + obj64\SQLite\$(Configuration)\ true ..\..\bin64\ - obj64\$(Configuration)\ + obj64\SQLite\$(Configuration)\ false ..\..\lib64\ - obj64\$(Configuration)\ + obj64\SQLite\$(Configuration)\ ..\..\lib64\ - obj64\$(Configuration)\ + obj64\SQLite\$(Configuration)\ ..\..\lib64\ - obj64\$(Configuration)\ + obj64\SQLite\$(Configuration)\ ..\..\lib64\ - obj64\$(Configuration)\ + obj64\SQLite\$(Configuration)\ diff --git a/Data/SQLite/SQLite_x64_vs110.vcxproj.filters b/Data/SQLite/SQLite_x64_vs110.vcxproj.filters index a004e05b0..a40891a62 100644 --- a/Data/SQLite/SQLite_x64_vs110.vcxproj.filters +++ b/Data/SQLite/SQLite_x64_vs110.vcxproj.filters @@ -2,22 +2,22 @@ - {28c42c58-7519-42a3-9cb3-28ae3c9e7b4e} + {191c83c9-9840-416b-b361-c5f855a37c55} - {ef8dff5b-6277-4a20-ac1a-d00f5ddff9be} + {e626e086-6e43-4113-9efc-bb72c2ccd8ef} - {eee88d55-f8ae-4ae6-9ae5-1661bc90d8ae} + {13912ba5-aa9f-4d76-8c30-3f93b6196942} - {342f801f-4d5a-4cb5-aab0-1079e7dcc4c5} + {5e3050e7-65e1-4e4e-b2c1-585fe5b56a06} - {83e9d0ea-284d-44f9-a362-0af7865a6a31} + {464753fd-13dd-40b6-bd19-aa3020d27a19} - {717ff287-ab17-4386-a662-a9c39ca8847f} + {9ffcd9eb-e841-4789-a04a-b830724a42eb} diff --git a/Data/SQLite/SQLite_x64_vs120.vcxproj b/Data/SQLite/SQLite_x64_vs120.vcxproj index 46e2b2a2d..3c9a78617 100644 --- a/Data/SQLite/SQLite_x64_vs120.vcxproj +++ b/Data/SQLite/SQLite_x64_vs120.vcxproj @@ -95,29 +95,29 @@ ..\..\bin64\ - obj64\$(Configuration)\ + obj64\SQLite\$(Configuration)\ true ..\..\bin64\ - obj64\$(Configuration)\ + obj64\SQLite\$(Configuration)\ false ..\..\lib64\ - obj64\$(Configuration)\ + obj64\SQLite\$(Configuration)\ ..\..\lib64\ - obj64\$(Configuration)\ + obj64\SQLite\$(Configuration)\ ..\..\lib64\ - obj64\$(Configuration)\ + obj64\SQLite\$(Configuration)\ ..\..\lib64\ - obj64\$(Configuration)\ + obj64\SQLite\$(Configuration)\ diff --git a/Data/SQLite/SQLite_x64_vs120.vcxproj.filters b/Data/SQLite/SQLite_x64_vs120.vcxproj.filters index c39fa3f73..17d7c71e8 100644 --- a/Data/SQLite/SQLite_x64_vs120.vcxproj.filters +++ b/Data/SQLite/SQLite_x64_vs120.vcxproj.filters @@ -2,22 +2,22 @@ - {5becd117-f483-44ac-9ad5-f7ca0e42e3d2} + {be5048ed-1047-4cac-b891-097794a3c0b9} - {9220a808-bff5-49bf-ae52-557e6c36cf26} + {9acff337-8247-410e-b416-16710f4330a5} - {043c7dd2-96c4-4700-a619-722f949d6555} + {a6134557-84e3-4fd1-aa01-b310985639c7} - {4283fa9f-06a0-4daa-9e55-891c6a892add} + {045abbfa-e725-4550-8ad9-2c6173821eba} - {9f04eec2-f7b1-4f86-b44b-48f49bfeaccc} + {d25cffe5-b5f0-4d09-8ee4-2f6d10bcf3eb} - {27bbe599-a463-456e-92a8-c78f7bbad4f1} + {ddfe02d7-d678-4c5d-8663-0d57a24e3d28} diff --git a/Data/SQLite/SQLite_x64_vs90.vcproj b/Data/SQLite/SQLite_x64_vs90.vcproj index c108fe2eb..a79f5fa89 100644 --- a/Data/SQLite/SQLite_x64_vs90.vcproj +++ b/Data/SQLite/SQLite_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings="4996;4244;4018"/> + DisableSpecificWarnings="4996;4244;4018" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="4996;4244;4018" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="4996;4244;4018" + AdditionalOptions=""/> + DisableSpecificWarnings="4996;4244;4018" + AdditionalOptions=""/> + DisableSpecificWarnings="4996;4244;4018" + AdditionalOptions=""/> + DisableSpecificWarnings="4996;4244;4018" + AdditionalOptions=""/> (value)); +} + + +Poco::Any SessionImpl::getConnectionTimeout(const std::string& prop) +{ + return Poco::Any(_timeout/1000); +} + + void SessionImpl::autoCommit(const std::string&, bool) { // The problem here is to decide whether to call commit or rollback diff --git a/Data/SQLite/src/sqlite3.c b/Data/SQLite/src/sqlite3.c index 7c6d3e280..c1278e656 100644 --- a/Data/SQLite/src/sqlite3.c +++ b/Data/SQLite/src/sqlite3.c @@ -1,6 +1,6 @@ /****************************************************************************** ** This file is an amalgamation of many separate C source files from SQLite -** version 3.8.4.1. By combining all the individual C code files into this +** version 3.8.6. By combining all the individual C code files into this ** single large file, the entire code can be compiled as a single translation ** unit. This allows many compilers to do optimizations that would not be ** possible if the files were compiled separately. Performance improvements @@ -222,9 +222,9 @@ extern "C" { ** [sqlite3_libversion_number()], [sqlite3_sourceid()], ** [sqlite_version()] and [sqlite_source_id()]. */ -#define SQLITE_VERSION "3.8.4.1" -#define SQLITE_VERSION_NUMBER 3008004 -#define SQLITE_SOURCE_ID "2014-03-11 15:27:36 018d317b1257ce68a92908b05c9c7cf1494050d0" +#define SQLITE_VERSION "3.8.6" +#define SQLITE_VERSION_NUMBER 3008006 +#define SQLITE_SOURCE_ID "2014-08-15 11:46:33 9491ba7d738528f168657adb43a198238abde19e" /* ** CAPI3REF: Run-Time Library Version Numbers @@ -384,7 +384,7 @@ typedef sqlite_uint64 sqlite3_uint64; ** ** ^The sqlite3_close() and sqlite3_close_v2() routines are destructors ** for the [sqlite3] object. -** ^Calls to sqlite3_close() and sqlite3_close_v2() return SQLITE_OK if +** ^Calls to sqlite3_close() and sqlite3_close_v2() return [SQLITE_OK] if ** the [sqlite3] object is successfully destroyed and all associated ** resources are deallocated. ** @@ -392,7 +392,7 @@ typedef sqlite_uint64 sqlite3_uint64; ** statements or unfinished sqlite3_backup objects then sqlite3_close() ** will leave the database connection open and return [SQLITE_BUSY]. ** ^If sqlite3_close_v2() is called with unfinalized prepared statements -** and unfinished sqlite3_backups, then the database connection becomes +** and/or unfinished sqlite3_backups, then the database connection becomes ** an unusable "zombie" which will automatically be deallocated when the ** last prepared statement is finalized or the last sqlite3_backup is ** finished. The sqlite3_close_v2() interface is intended for use with @@ -405,7 +405,7 @@ typedef sqlite_uint64 sqlite3_uint64; ** with the [sqlite3] object prior to attempting to close the object. ^If ** sqlite3_close_v2() is called on a [database connection] that still has ** outstanding [prepared statements], [BLOB handles], and/or -** [sqlite3_backup] objects then it returns SQLITE_OK but the deallocation +** [sqlite3_backup] objects then it returns [SQLITE_OK] and the deallocation ** of resources is deferred until all [prepared statements], [BLOB handles], ** and [sqlite3_backup] objects are also destroyed. ** @@ -501,16 +501,14 @@ SQLITE_API int sqlite3_exec( /* ** CAPI3REF: Result Codes -** KEYWORDS: SQLITE_OK {error code} {error codes} -** KEYWORDS: {result code} {result codes} +** KEYWORDS: {result code definitions} ** ** Many SQLite functions return an integer result code from the set shown ** here in order to indicate success or failure. ** ** New error codes may be added in future versions of SQLite. ** -** See also: [SQLITE_IOERR_READ | extended result codes], -** [sqlite3_vtab_on_conflict()] [SQLITE_ROLLBACK | result codes]. +** See also: [extended result code definitions] */ #define SQLITE_OK 0 /* Successful result */ /* beginning-of-error-codes */ @@ -548,26 +546,19 @@ SQLITE_API int sqlite3_exec( /* ** CAPI3REF: Extended Result Codes -** KEYWORDS: {extended error code} {extended error codes} -** KEYWORDS: {extended result code} {extended result codes} +** KEYWORDS: {extended result code definitions} ** -** In its default configuration, SQLite API routines return one of 26 integer -** [SQLITE_OK | result codes]. However, experience has shown that many of +** In its default configuration, SQLite API routines return one of 30 integer +** [result codes]. However, experience has shown that many of ** these result codes are too coarse-grained. They do not provide as ** much information about problems as programmers might like. In an effort to ** address this, newer versions of SQLite (version 3.3.8 and later) include ** support for additional result codes that provide more detailed information -** about errors. The extended result codes are enabled or disabled +** about errors. These [extended result codes] are enabled or disabled ** on a per database connection basis using the -** [sqlite3_extended_result_codes()] API. -** -** Some of the available extended result codes are listed here. -** One may expect the number of extended result codes will increase -** over time. Software that uses extended result codes should expect -** to see new result codes in future releases of SQLite. -** -** The SQLITE_OK result code will never be extended. It will always -** be exactly zero. +** [sqlite3_extended_result_codes()] API. Or, the extended code for +** the most recent error can be obtained using +** [sqlite3_extended_errcode()]. */ #define SQLITE_IOERR_READ (SQLITE_IOERR | (1<<8)) #define SQLITE_IOERR_SHORT_READ (SQLITE_IOERR | (2<<8)) @@ -675,7 +666,10 @@ SQLITE_API int sqlite3_exec( ** file that were written at the application level might have changed ** and that adjacent bytes, even bytes within the same sector are ** guaranteed to be unchanged. The SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN -** flag indicate that a file cannot be deleted when open. +** flag indicate that a file cannot be deleted when open. The +** SQLITE_IOCAP_IMMUTABLE flag indicates that the file is on +** read-only media and cannot be changed even by processes with +** elevated privileges. */ #define SQLITE_IOCAP_ATOMIC 0x00000001 #define SQLITE_IOCAP_ATOMIC512 0x00000002 @@ -690,6 +684,7 @@ SQLITE_API int sqlite3_exec( #define SQLITE_IOCAP_SEQUENTIAL 0x00000400 #define SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN 0x00000800 #define SQLITE_IOCAP_POWERSAFE_OVERWRITE 0x00001000 +#define SQLITE_IOCAP_IMMUTABLE 0x00002000 /* ** CAPI3REF: File Locking Levels @@ -796,7 +791,7 @@ struct sqlite3_file { ** locking strategy (for example to use dot-file locks), to inquire ** about the status of a lock, or to break stale locks. The SQLite ** core reserves all opcodes less than 100 for its own use. -** A [SQLITE_FCNTL_LOCKSTATE | list of opcodes] less than 100 is available. +** A [file control opcodes | list of opcodes] less than 100 is available. ** Applications that define a custom xFileControl method should use opcodes ** greater than 100 to avoid conflicts. VFS implementations should ** return [SQLITE_NOTFOUND] for file control opcodes that they do not @@ -869,6 +864,7 @@ struct sqlite3_io_methods { /* ** CAPI3REF: Standard File Control Opcodes +** KEYWORDS: {file control opcodes} {file control opcode} ** ** These integer constants are opcodes for the xFileControl method ** of the [sqlite3_io_methods] object and for the [sqlite3_file_control()] @@ -1058,6 +1054,12 @@ struct sqlite3_io_methods { ** on whether or not the file has been renamed, moved, or deleted since it ** was first opened. ** +**
  • [[SQLITE_FCNTL_WIN32_SET_HANDLE]] +** The [SQLITE_FCNTL_WIN32_SET_HANDLE] opcode is used for debugging. This +** opcode causes the xFileControl method to swap the file handle with the one +** pointed to by the pArg argument. This capability is used during testing +** and only needs to be supported when SQLITE_TEST is defined. +** ** */ #define SQLITE_FCNTL_LOCKSTATE 1 @@ -1081,6 +1083,7 @@ struct sqlite3_io_methods { #define SQLITE_FCNTL_HAS_MOVED 20 #define SQLITE_FCNTL_SYNC 21 #define SQLITE_FCNTL_COMMIT_PHASETWO 22 +#define SQLITE_FCNTL_WIN32_SET_HANDLE 23 /* ** CAPI3REF: Mutex Handle @@ -2141,27 +2144,33 @@ SQLITE_API int sqlite3_complete16(const void *sql); /* ** CAPI3REF: Register A Callback To Handle SQLITE_BUSY Errors ** -** ^This routine sets a callback function that might be invoked whenever -** an attempt is made to open a database table that another thread -** or process has locked. +** ^The sqlite3_busy_handler(D,X,P) routine sets a callback function X +** that might be invoked with argument P whenever +** an attempt is made to access a database table associated with +** [database connection] D when another thread +** or process has the table locked. +** The sqlite3_busy_handler() interface is used to implement +** [sqlite3_busy_timeout()] and [PRAGMA busy_timeout]. ** -** ^If the busy callback is NULL, then [SQLITE_BUSY] or [SQLITE_IOERR_BLOCKED] +** ^If the busy callback is NULL, then [SQLITE_BUSY] ** is returned immediately upon encountering the lock. ^If the busy callback ** is not NULL, then the callback might be invoked with two arguments. ** ** ^The first argument to the busy handler is a copy of the void* pointer which ** is the third argument to sqlite3_busy_handler(). ^The second argument to ** the busy handler callback is the number of times that the busy handler has -** been invoked for this locking event. ^If the +** been invoked for the same locking event. ^If the ** busy callback returns 0, then no additional attempts are made to -** access the database and [SQLITE_BUSY] or [SQLITE_IOERR_BLOCKED] is returned. +** access the database and [SQLITE_BUSY] is returned +** to the application. ** ^If the callback returns non-zero, then another attempt -** is made to open the database for reading and the cycle repeats. +** is made to access the database and the cycle repeats. ** ** The presence of a busy handler does not guarantee that it will be invoked ** when there is lock contention. ^If SQLite determines that invoking the busy ** handler could result in a deadlock, it will go ahead and return [SQLITE_BUSY] -** or [SQLITE_IOERR_BLOCKED] instead of invoking the busy handler. +** to the application instead of invoking the +** busy handler. ** Consider a scenario where one process is holding a read lock that ** it is trying to promote to a reserved lock and ** a second process is holding a reserved lock that it is trying @@ -2175,28 +2184,15 @@ SQLITE_API int sqlite3_complete16(const void *sql); ** ** ^The default busy callback is NULL. ** -** ^The [SQLITE_BUSY] error is converted to [SQLITE_IOERR_BLOCKED] -** when SQLite is in the middle of a large transaction where all the -** changes will not fit into the in-memory cache. SQLite will -** already hold a RESERVED lock on the database file, but it needs -** to promote this lock to EXCLUSIVE so that it can spill cache -** pages into the database file without harm to concurrent -** readers. ^If it is unable to promote the lock, then the in-memory -** cache will be left in an inconsistent state and so the error -** code is promoted from the relatively benign [SQLITE_BUSY] to -** the more severe [SQLITE_IOERR_BLOCKED]. ^This error code promotion -** forces an automatic rollback of the changes. See the -** -** CorruptionFollowingBusyError wiki page for a discussion of why -** this is important. -** ** ^(There can only be a single busy handler defined for each ** [database connection]. Setting a new busy handler clears any ** previously set handler.)^ ^Note that calling [sqlite3_busy_timeout()] -** will also set or clear the busy handler. +** or evaluating [PRAGMA busy_timeout=N] will change the +** busy handler and thus clear any previously set busy handler. ** ** The busy callback should not take any actions which modify the -** database connection that invoked the busy handler. Any such actions +** database connection that invoked the busy handler. In other words, +** the busy handler is not reentrant. Any such actions ** result in undefined behavior. ** ** A busy handler must not close the database connection @@ -2212,7 +2208,7 @@ SQLITE_API int sqlite3_busy_handler(sqlite3*, int(*)(void*,int), void*); ** will sleep multiple times until at least "ms" milliseconds of sleeping ** have accumulated. ^After at least "ms" milliseconds of sleeping, ** the handler returns 0 which causes [sqlite3_step()] to return -** [SQLITE_BUSY] or [SQLITE_IOERR_BLOCKED]. +** [SQLITE_BUSY]. ** ** ^Calling this routine with an argument less than or equal to zero ** turns off all busy handlers. @@ -2221,6 +2217,8 @@ SQLITE_API int sqlite3_busy_handler(sqlite3*, int(*)(void*,int), void*); ** [database connection] any any given moment. If another busy handler ** was defined (using [sqlite3_busy_handler()]) prior to calling ** this routine, that other busy handler is cleared.)^ +** +** See also: [PRAGMA busy_timeout] */ SQLITE_API int sqlite3_busy_timeout(sqlite3*, int ms); @@ -2622,8 +2620,8 @@ SQLITE_API int sqlite3_set_authorizer( ** [sqlite3_set_authorizer | authorizer documentation] for additional ** information. ** -** Note that SQLITE_IGNORE is also used as a [SQLITE_ROLLBACK | return code] -** from the [sqlite3_vtab_on_conflict()] interface. +** Note that SQLITE_IGNORE is also used as a [conflict resolution mode] +** returned from the [sqlite3_vtab_on_conflict()] interface. */ #define SQLITE_DENY 1 /* Abort the SQL statement with an error */ #define SQLITE_IGNORE 2 /* Don't allow access, but don't generate an error */ @@ -2894,6 +2892,30 @@ SQLITE_API void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*); ** ^If sqlite3_open_v2() is used and the "cache" parameter is present in ** a URI filename, its value overrides any behavior requested by setting ** SQLITE_OPEN_PRIVATECACHE or SQLITE_OPEN_SHAREDCACHE flag. +** +**
  • psow: ^The psow parameter may be "true" (or "on" or "yes" or +** "1") or "false" (or "off" or "no" or "0") to indicate that the +** [powersafe overwrite] property does or does not apply to the +** storage media on which the database file resides. ^The psow query +** parameter only works for the built-in unix and Windows VFSes. +** +**
  • nolock: ^The nolock parameter is a boolean query parameter +** which if set disables file locking in rollback journal modes. This +** is useful for accessing a database on a filesystem that does not +** support locking. Caution: Database corruption might result if two +** or more processes write to the same database and any one of those +** processes uses nolock=1. +** +**
  • immutable: ^The immutable parameter is a boolean query +** parameter that indicates that the database file is stored on +** read-only media. ^When immutable is set, SQLite assumes that the +** database file cannot be changed, even by a process with higher +** privilege, and so the database is opened read-only and all locking +** and change detection is disabled. Caution: Setting the immutable +** property on a database file that does in fact change can result +** in incorrect query results and/or [SQLITE_CORRUPT] errors. +** See also: [SQLITE_IOCAP_IMMUTABLE]. +** ** ** ** ^Specifying an unknown parameter in the query component of a URI is not an @@ -2923,8 +2945,9 @@ SQLITE_API void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*); ** Open file "data.db" in the current directory for read-only access. ** Regardless of whether or not shared-cache mode is enabled by ** default, use a private cache. -** file:/home/fred/data.db?vfs=unix-nolock -** Open file "/home/fred/data.db". Use the special VFS "unix-nolock". +** file:/home/fred/data.db?vfs=unix-dotfile +** Open file "/home/fred/data.db". Use the special VFS "unix-dotfile" +** that uses dot-files in place of posix advisory locking. ** file:data.db?mode=readonly ** An error. "readonly" is not a valid option for the "mode" parameter. ** @@ -4785,6 +4808,13 @@ SQLITE_API int sqlite3_sleep(int); ** is a NULL pointer, then SQLite performs a search for an appropriate ** temporary file directory. ** +** Applications are strongly discouraged from using this global variable. +** It is required to set a temporary folder on Windows Runtime (WinRT). +** But for all other platforms, it is highly recommended that applications +** neither read nor write this variable. This global variable is a relic +** that exists for backwards compatibility of legacy applications and should +** be avoided in new projects. +** ** It is not safe to read or modify this variable in more than one ** thread at a time. It is not safe to read or modify this variable ** if a [database connection] is being used at the same time in a separate @@ -4803,6 +4833,11 @@ SQLITE_API int sqlite3_sleep(int); ** Hence, if this variable is modified directly, either it should be ** made NULL or made to point to memory obtained from [sqlite3_malloc] ** or else the use of the [temp_store_directory pragma] should be avoided. +** Except when requested by the [temp_store_directory pragma], SQLite +** does not free the memory that sqlite3_temp_directory points to. If +** the application wants that memory to be freed, it must do +** so itself, taking care to only do so after all [database connection] +** objects have been destroyed. ** ** Note to Windows Runtime users: The temporary directory must be set ** prior to calling [sqlite3_open] or [sqlite3_open_v2]. Otherwise, various @@ -5937,10 +5972,12 @@ SQLITE_API int sqlite3_vfs_unregister(sqlite3_vfs*); **
  • SQLITE_MUTEX_RECURSIVE **
  • SQLITE_MUTEX_STATIC_MASTER **
  • SQLITE_MUTEX_STATIC_MEM -**
  • SQLITE_MUTEX_STATIC_MEM2 +**
  • SQLITE_MUTEX_STATIC_OPEN **
  • SQLITE_MUTEX_STATIC_PRNG **
  • SQLITE_MUTEX_STATIC_LRU -**
  • SQLITE_MUTEX_STATIC_LRU2 +**
  • SQLITE_MUTEX_STATIC_PMEM +**
  • SQLITE_MUTEX_STATIC_APP1 +**
  • SQLITE_MUTEX_STATIC_APP2 ** )^ ** ** ^The first two constants (SQLITE_MUTEX_FAST and SQLITE_MUTEX_RECURSIVE) @@ -6144,6 +6181,9 @@ SQLITE_API int sqlite3_mutex_notheld(sqlite3_mutex*); #define SQLITE_MUTEX_STATIC_LRU 6 /* lru page list */ #define SQLITE_MUTEX_STATIC_LRU2 7 /* NOT USED */ #define SQLITE_MUTEX_STATIC_PMEM 7 /* sqlite3PageMalloc() */ +#define SQLITE_MUTEX_STATIC_APP1 8 /* For use by application */ +#define SQLITE_MUTEX_STATIC_APP2 9 /* For use by application */ +#define SQLITE_MUTEX_STATIC_APP3 10 /* For use by application */ /* ** CAPI3REF: Retrieve the mutex for a database connection @@ -6238,7 +6278,9 @@ SQLITE_API int sqlite3_test_control(int op, ...); #define SQLITE_TESTCTRL_EXPLAIN_STMT 19 #define SQLITE_TESTCTRL_NEVER_CORRUPT 20 #define SQLITE_TESTCTRL_VDBE_COVERAGE 21 -#define SQLITE_TESTCTRL_LAST 21 +#define SQLITE_TESTCTRL_BYTEORDER 22 +#define SQLITE_TESTCTRL_ISINIT 23 +#define SQLITE_TESTCTRL_LAST 23 /* ** CAPI3REF: SQLite Runtime Status @@ -7222,6 +7264,9 @@ SQLITE_API void *sqlite3_wal_hook( ** ^The [wal_autocheckpoint pragma] can be used to invoke this interface ** from SQL. ** +** ^Checkpoints initiated by this mechanism are +** [sqlite3_wal_checkpoint_v2|PASSIVE]. +** ** ^Every new [database connection] defaults to having the auto-checkpoint ** enabled with a threshold of 1000 or [SQLITE_DEFAULT_WAL_AUTOCHECKPOINT] ** pages. The use of this interface @@ -7238,6 +7283,10 @@ SQLITE_API int sqlite3_wal_autocheckpoint(sqlite3 *db, int N); ** empty string, then a checkpoint is run on all databases of ** connection D. ^If the database connection D is not in ** [WAL | write-ahead log mode] then this interface is a harmless no-op. +** ^The [sqlite3_wal_checkpoint(D,X)] interface initiates a +** [sqlite3_wal_checkpoint_v2|PASSIVE] checkpoint. +** Use the [sqlite3_wal_checkpoint_v2()] interface to get a FULL +** or RESET checkpoint. ** ** ^The [wal_checkpoint pragma] can be used to invoke this interface ** from SQL. ^The [sqlite3_wal_autocheckpoint()] interface and the @@ -7260,10 +7309,12 @@ SQLITE_API int sqlite3_wal_checkpoint(sqlite3 *db, const char *zDb); ** Checkpoint as many frames as possible without waiting for any database ** readers or writers to finish. Sync the db file if all frames in the log ** are checkpointed. This mode is the same as calling -** sqlite3_wal_checkpoint(). The busy-handler callback is never invoked. +** sqlite3_wal_checkpoint(). The [sqlite3_busy_handler|busy-handler callback] +** is never invoked. ** **
    SQLITE_CHECKPOINT_FULL
    -** This mode blocks (calls the busy-handler callback) until there is no +** This mode blocks (it invokes the +** [sqlite3_busy_handler|busy-handler callback]) until there is no ** database writer and all readers are reading from the most recent database ** snapshot. It then checkpoints all frames in the log file and syncs the ** database file. This call blocks database writers while it is running, @@ -7271,7 +7322,8 @@ SQLITE_API int sqlite3_wal_checkpoint(sqlite3 *db, const char *zDb); ** **
    SQLITE_CHECKPOINT_RESTART
    ** This mode works the same way as SQLITE_CHECKPOINT_FULL, except after -** checkpointing the log file it blocks (calls the busy-handler callback) +** checkpointing the log file it blocks (calls the +** [sqlite3_busy_handler|busy-handler callback]) ** until all readers are reading from the database file only. This ensures ** that the next client to write to the database file restarts the log file ** from the beginning. This call blocks database writers while it is running, @@ -7409,6 +7461,7 @@ SQLITE_API int sqlite3_vtab_on_conflict(sqlite3 *); /* ** CAPI3REF: Conflict resolution modes +** KEYWORDS: {conflict resolution mode} ** ** These constants are returned by [sqlite3_vtab_on_conflict()] to ** inform a [virtual table] implementation what the [ON CONFLICT] mode @@ -7461,6 +7514,16 @@ extern "C" { #endif typedef struct sqlite3_rtree_geometry sqlite3_rtree_geometry; +typedef struct sqlite3_rtree_query_info sqlite3_rtree_query_info; + +/* The double-precision datatype used by RTree depends on the +** SQLITE_RTREE_INT_ONLY compile-time option. +*/ +#ifdef SQLITE_RTREE_INT_ONLY + typedef sqlite3_int64 sqlite3_rtree_dbl; +#else + typedef double sqlite3_rtree_dbl; +#endif /* ** Register a geometry callback named zGeom that can be used as part of an @@ -7471,11 +7534,7 @@ typedef struct sqlite3_rtree_geometry sqlite3_rtree_geometry; SQLITE_API int sqlite3_rtree_geometry_callback( sqlite3 *db, const char *zGeom, -#ifdef SQLITE_RTREE_INT_ONLY - int (*xGeom)(sqlite3_rtree_geometry*, int n, sqlite3_int64 *a, int *pRes), -#else - int (*xGeom)(sqlite3_rtree_geometry*, int n, double *a, int *pRes), -#endif + int (*xGeom)(sqlite3_rtree_geometry*, int, sqlite3_rtree_dbl*,int*), void *pContext ); @@ -7487,11 +7546,60 @@ SQLITE_API int sqlite3_rtree_geometry_callback( struct sqlite3_rtree_geometry { void *pContext; /* Copy of pContext passed to s_r_g_c() */ int nParam; /* Size of array aParam[] */ - double *aParam; /* Parameters passed to SQL geom function */ + sqlite3_rtree_dbl *aParam; /* Parameters passed to SQL geom function */ void *pUser; /* Callback implementation user data */ void (*xDelUser)(void *); /* Called by SQLite to clean up pUser */ }; +/* +** Register a 2nd-generation geometry callback named zScore that can be +** used as part of an R-Tree geometry query as follows: +** +** SELECT ... FROM WHERE MATCH $zQueryFunc(... params ...) +*/ +SQLITE_API int sqlite3_rtree_query_callback( + sqlite3 *db, + const char *zQueryFunc, + int (*xQueryFunc)(sqlite3_rtree_query_info*), + void *pContext, + void (*xDestructor)(void*) +); + + +/* +** A pointer to a structure of the following type is passed as the +** argument to scored geometry callback registered using +** sqlite3_rtree_query_callback(). +** +** Note that the first 5 fields of this structure are identical to +** sqlite3_rtree_geometry. This structure is a subclass of +** sqlite3_rtree_geometry. +*/ +struct sqlite3_rtree_query_info { + void *pContext; /* pContext from when function registered */ + int nParam; /* Number of function parameters */ + sqlite3_rtree_dbl *aParam; /* value of function parameters */ + void *pUser; /* callback can use this, if desired */ + void (*xDelUser)(void*); /* function to free pUser */ + sqlite3_rtree_dbl *aCoord; /* Coordinates of node or entry to check */ + unsigned int *anQueue; /* Number of pending entries in the queue */ + int nCoord; /* Number of coordinates */ + int iLevel; /* Level of current node or entry */ + int mxLevel; /* The largest iLevel value in the tree */ + sqlite3_int64 iRowid; /* Rowid for current entry */ + sqlite3_rtree_dbl rParentScore; /* Score of parent node */ + int eParentWithin; /* Visibility of parent node */ + int eWithin; /* OUT: Visiblity */ + sqlite3_rtree_dbl rScore; /* OUT: Write the score here */ +}; + +/* +** Allowed values for sqlite3_rtree_query.eWithin and .eParentWithin. +*/ +#define NOT_WITHIN 0 /* Object completely outside of query region */ +#define PARTLY_WITHIN 1 /* Object partially overlaps query region */ +#define FULLY_WITHIN 2 /* Object fully contained within query region */ + #if 0 } /* end of the 'extern "C"' block */ @@ -8418,10 +8526,10 @@ typedef INT8_TYPE i8; /* 1-byte signed integer */ ** gives a possible range of values of approximately 1.0e986 to 1e-986. ** But the allowed values are "grainy". Not every value is representable. ** For example, quantities 16 and 17 are both represented by a LogEst -** of 40. However, since LogEst quantatites are suppose to be estimates, +** of 40. However, since LogEst quantaties are suppose to be estimates, ** not exact values, this imprecision is not a problem. ** -** "LogEst" is short for "Logarithimic Estimate". +** "LogEst" is short for "Logarithmic Estimate". ** ** Examples: ** 1 -> 0 20 -> 43 10000 -> 132 @@ -8439,22 +8547,39 @@ typedef INT16_TYPE LogEst; /* ** Macros to determine whether the machine is big or little endian, -** evaluated at runtime. +** and whether or not that determination is run-time or compile-time. +** +** For best performance, an attempt is made to guess at the byte-order +** using C-preprocessor macros. If that is unsuccessful, or if +** -DSQLITE_RUNTIME_BYTEORDER=1 is set, then byte-order is determined +** at run-time. */ #ifdef SQLITE_AMALGAMATION SQLITE_PRIVATE const int sqlite3one = 1; #else SQLITE_PRIVATE const int sqlite3one; #endif -#if defined(i386) || defined(__i386__) || defined(_M_IX86)\ - || defined(__x86_64) || defined(__x86_64__) +#if (defined(i386) || defined(__i386__) || defined(_M_IX86) || \ + defined(__x86_64) || defined(__x86_64__) || defined(_M_X64) || \ + defined(_M_AMD64) || defined(_M_ARM) || defined(__x86) || \ + defined(__arm__)) && !defined(SQLITE_RUNTIME_BYTEORDER) +# define SQLITE_BYTEORDER 1234 # define SQLITE_BIGENDIAN 0 # define SQLITE_LITTLEENDIAN 1 # define SQLITE_UTF16NATIVE SQLITE_UTF16LE -#else +#endif +#if (defined(sparc) || defined(__ppc__)) \ + && !defined(SQLITE_RUNTIME_BYTEORDER) +# define SQLITE_BYTEORDER 4321 +# define SQLITE_BIGENDIAN 1 +# define SQLITE_LITTLEENDIAN 0 +# define SQLITE_UTF16NATIVE SQLITE_UTF16BE +#endif +#if !defined(SQLITE_BYTEORDER) +# define SQLITE_BYTEORDER 0 /* 0 means "unknown at compile-time" */ # define SQLITE_BIGENDIAN (*(char *)(&sqlite3one)==0) # define SQLITE_LITTLEENDIAN (*(char *)(&sqlite3one)==1) -# define SQLITE_UTF16NATIVE (SQLITE_BIGENDIAN?SQLITE_UTF16BE:SQLITE_UTF16LE) +# define SQLITE_UTF16NATIVE (SQLITE_BIGENDIAN?SQLITE_UTF16BE:SQLITE_UTF16LE) #endif /* @@ -8769,7 +8894,9 @@ SQLITE_PRIVATE int sqlite3BtreeOpen( SQLITE_PRIVATE int sqlite3BtreeClose(Btree*); SQLITE_PRIVATE int sqlite3BtreeSetCacheSize(Btree*,int); -SQLITE_PRIVATE int sqlite3BtreeSetMmapLimit(Btree*,sqlite3_int64); +#if SQLITE_MAX_MMAP_SIZE>0 +SQLITE_PRIVATE int sqlite3BtreeSetMmapLimit(Btree*,sqlite3_int64); +#endif SQLITE_PRIVATE int sqlite3BtreeSetPagerFlags(Btree*,unsigned); SQLITE_PRIVATE int sqlite3BtreeSyncDisabled(Btree*); SQLITE_PRIVATE int sqlite3BtreeSetPageSize(Btree *p, int nPagesize, int nReserve, int eFix); @@ -8819,6 +8946,7 @@ SQLITE_PRIVATE int sqlite3BtreeIncrVacuum(Btree *); SQLITE_PRIVATE int sqlite3BtreeDropTable(Btree*, int, int*); SQLITE_PRIVATE int sqlite3BtreeClearTable(Btree*, int, int*); +SQLITE_PRIVATE int sqlite3BtreeClearTableOfCursor(BtCursor*); SQLITE_PRIVATE void sqlite3BtreeTripAllCursors(Btree*, int); SQLITE_PRIVATE void sqlite3BtreeGetMeta(Btree *pBtree, int idx, u32 *pValue); @@ -8893,10 +9021,11 @@ SQLITE_PRIVATE char *sqlite3BtreeIntegrityCheck(Btree*, int *aRoot, int nRoot, i SQLITE_PRIVATE struct Pager *sqlite3BtreePager(Btree*); SQLITE_PRIVATE int sqlite3BtreePutData(BtCursor*, u32 offset, u32 amt, void*); -SQLITE_PRIVATE void sqlite3BtreeCacheOverflow(BtCursor *); +SQLITE_PRIVATE void sqlite3BtreeIncrblobCursor(BtCursor *); SQLITE_PRIVATE void sqlite3BtreeClearCursor(BtCursor *); SQLITE_PRIVATE int sqlite3BtreeSetVersion(Btree *pBt, int iVersion); SQLITE_PRIVATE void sqlite3BtreeCursorHints(BtCursor *, unsigned int mask); +SQLITE_PRIVATE int sqlite3BtreeIsReadonly(Btree *pBt); #ifndef NDEBUG SQLITE_PRIVATE int sqlite3BtreeCursorIsValid(BtCursor*); @@ -9136,7 +9265,7 @@ typedef struct VdbeOpList VdbeOpList; #define OP_Checkpoint 11 #define OP_JournalMode 12 #define OP_Vacuum 13 -#define OP_VFilter 14 /* synopsis: iPlan=r[P3] zPlan='P4' */ +#define OP_VFilter 14 /* synopsis: iplan=r[P3] zplan='P4' */ #define OP_VUpdate 15 /* synopsis: data=r[P3@P2] */ #define OP_Goto 16 #define OP_Gosub 17 @@ -9163,7 +9292,7 @@ typedef struct VdbeOpList VdbeOpList; #define OP_MustBeInt 38 #define OP_RealAffinity 39 #define OP_Permutation 40 -#define OP_Compare 41 +#define OP_Compare 41 /* synopsis: r[P1@P3] <-> r[P2@P3] */ #define OP_Jump 42 #define OP_Once 43 #define OP_If 44 @@ -9174,30 +9303,30 @@ typedef struct VdbeOpList VdbeOpList; #define OP_Count 49 /* synopsis: r[P2]=count() */ #define OP_ReadCookie 50 #define OP_SetCookie 51 -#define OP_OpenRead 52 /* synopsis: root=P2 iDb=P3 */ -#define OP_OpenWrite 53 /* synopsis: root=P2 iDb=P3 */ -#define OP_OpenAutoindex 54 /* synopsis: nColumn=P2 */ -#define OP_OpenEphemeral 55 /* synopsis: nColumn=P2 */ -#define OP_SorterOpen 56 -#define OP_OpenPseudo 57 /* synopsis: P3 columns in r[P2] */ -#define OP_Close 58 -#define OP_SeekLT 59 -#define OP_SeekLE 60 -#define OP_SeekGE 61 -#define OP_SeekGT 62 -#define OP_Seek 63 /* synopsis: intkey=r[P2] */ -#define OP_NoConflict 64 /* synopsis: key=r[P3@P4] */ -#define OP_NotFound 65 /* synopsis: key=r[P3@P4] */ -#define OP_Found 66 /* synopsis: key=r[P3@P4] */ -#define OP_NotExists 67 /* synopsis: intkey=r[P3] */ -#define OP_Sequence 68 /* synopsis: r[P2]=rowid */ -#define OP_NewRowid 69 /* synopsis: r[P2]=rowid */ -#define OP_Insert 70 /* synopsis: intkey=r[P3] data=r[P2] */ +#define OP_ReopenIdx 52 /* synopsis: root=P2 iDb=P3 */ +#define OP_OpenRead 53 /* synopsis: root=P2 iDb=P3 */ +#define OP_OpenWrite 54 /* synopsis: root=P2 iDb=P3 */ +#define OP_OpenAutoindex 55 /* synopsis: nColumn=P2 */ +#define OP_OpenEphemeral 56 /* synopsis: nColumn=P2 */ +#define OP_SorterOpen 57 +#define OP_OpenPseudo 58 /* synopsis: P3 columns in r[P2] */ +#define OP_Close 59 +#define OP_SeekLT 60 /* synopsis: key=r[P3@P4] */ +#define OP_SeekLE 61 /* synopsis: key=r[P3@P4] */ +#define OP_SeekGE 62 /* synopsis: key=r[P3@P4] */ +#define OP_SeekGT 63 /* synopsis: key=r[P3@P4] */ +#define OP_Seek 64 /* synopsis: intkey=r[P2] */ +#define OP_NoConflict 65 /* synopsis: key=r[P3@P4] */ +#define OP_NotFound 66 /* synopsis: key=r[P3@P4] */ +#define OP_Found 67 /* synopsis: key=r[P3@P4] */ +#define OP_NotExists 68 /* synopsis: intkey=r[P3] */ +#define OP_Sequence 69 /* synopsis: r[P2]=cursor[P1].ctr++ */ +#define OP_NewRowid 70 /* synopsis: r[P2]=rowid */ #define OP_Or 71 /* same as TK_OR, synopsis: r[P3]=(r[P1] || r[P2]) */ #define OP_And 72 /* same as TK_AND, synopsis: r[P3]=(r[P1] && r[P2]) */ -#define OP_InsertInt 73 /* synopsis: intkey=P3 data=r[P2] */ -#define OP_Delete 74 -#define OP_ResetCount 75 +#define OP_Insert 73 /* synopsis: intkey=r[P3] data=r[P2] */ +#define OP_InsertInt 74 /* synopsis: intkey=P3 data=r[P2] */ +#define OP_Delete 75 #define OP_IsNull 76 /* same as TK_ISNULL, synopsis: if r[P1]==NULL goto P2 */ #define OP_NotNull 77 /* same as TK_NOTNULL, synopsis: if r[P1]!=NULL goto P2 */ #define OP_Ne 78 /* same as TK_NE, synopsis: if r[P1]!=r[P3] goto P2 */ @@ -9206,7 +9335,7 @@ typedef struct VdbeOpList VdbeOpList; #define OP_Le 81 /* same as TK_LE, synopsis: if r[P1]<=r[P3] goto P2 */ #define OP_Lt 82 /* same as TK_LT, synopsis: if r[P1]=r[P3] goto P2 */ -#define OP_SorterCompare 84 /* synopsis: if key(P1)!=rtrim(r[P3],P4) goto P2 */ +#define OP_ResetCount 84 #define OP_BitAnd 85 /* same as TK_BITAND, synopsis: r[P3]=r[P1]&r[P2] */ #define OP_BitOr 86 /* same as TK_BITOR, synopsis: r[P3]=r[P1]|r[P2] */ #define OP_ShiftLeft 87 /* same as TK_LSHIFT, synopsis: r[P3]=r[P2]<0 goto P2 */ +#define OP_SorterData 98 /* synopsis: r[P2]=data */ +#define OP_RowKey 99 /* synopsis: r[P2]=key */ +#define OP_RowData 100 /* synopsis: r[P2]=data */ +#define OP_Rowid 101 /* synopsis: r[P2]=rowid */ +#define OP_NullRow 102 +#define OP_Last 103 +#define OP_SorterSort 104 +#define OP_Sort 105 +#define OP_Rewind 106 +#define OP_SorterInsert 107 +#define OP_IdxInsert 108 /* synopsis: key=r[P2] */ +#define OP_IdxDelete 109 /* synopsis: key=r[P2@P3] */ +#define OP_IdxRowid 110 /* synopsis: r[P2]=rowid */ +#define OP_IdxLE 111 /* synopsis: key=r[P3@P4] */ +#define OP_IdxGT 112 /* synopsis: key=r[P3@P4] */ +#define OP_IdxLT 113 /* synopsis: key=r[P3@P4] */ +#define OP_IdxGE 114 /* synopsis: key=r[P3@P4] */ +#define OP_Destroy 115 +#define OP_Clear 116 +#define OP_ResetSorter 117 +#define OP_CreateIndex 118 /* synopsis: r[P2]=root iDb=P1 */ +#define OP_CreateTable 119 /* synopsis: r[P2]=root iDb=P1 */ +#define OP_ParseSchema 120 +#define OP_LoadAnalysis 121 +#define OP_DropTable 122 +#define OP_DropIndex 123 +#define OP_DropTrigger 124 +#define OP_IntegrityCk 125 +#define OP_RowSetAdd 126 /* synopsis: rowset(P1)=r[P2] */ +#define OP_RowSetRead 127 /* synopsis: r[P3]=rowset(P1) */ +#define OP_RowSetTest 128 /* synopsis: if r[P3] in rowset(P1) goto P2 */ +#define OP_Program 129 +#define OP_Param 130 +#define OP_FkCounter 131 /* synopsis: fkctr[P1]+=P2 */ +#define OP_FkIfZero 132 /* synopsis: if fkctr[P1]==0 goto P2 */ #define OP_Real 133 /* same as TK_FLOAT, synopsis: r[P2]=P4 */ -#define OP_IfNeg 134 /* synopsis: if r[P1]<0 goto P2 */ -#define OP_IfZero 135 /* synopsis: r[P1]+=P3, if r[P1]==0 goto P2 */ -#define OP_AggFinal 136 /* synopsis: accum=r[P1] N=P2 */ -#define OP_IncrVacuum 137 -#define OP_Expire 138 -#define OP_TableLock 139 /* synopsis: iDb=P1 root=P2 write=P3 */ -#define OP_VBegin 140 -#define OP_VCreate 141 -#define OP_VDestroy 142 +#define OP_MemMax 134 /* synopsis: r[P1]=max(r[P1],r[P2]) */ +#define OP_IfPos 135 /* synopsis: if r[P1]>0 goto P2 */ +#define OP_IfNeg 136 /* synopsis: r[P1]+=P3, if r[P1]<0 goto P2 */ +#define OP_IfZero 137 /* synopsis: r[P1]+=P3, if r[P1]==0 goto P2 */ +#define OP_AggFinal 138 /* synopsis: accum=r[P1] N=P2 */ +#define OP_IncrVacuum 139 +#define OP_Expire 140 +#define OP_TableLock 141 /* synopsis: iDb=P1 root=P2 write=P3 */ +#define OP_VBegin 142 #define OP_ToText 143 /* same as TK_TO_TEXT */ #define OP_ToBlob 144 /* same as TK_TO_BLOB */ #define OP_ToNumeric 145 /* same as TK_TO_NUMERIC */ #define OP_ToInt 146 /* same as TK_TO_INT */ #define OP_ToReal 147 /* same as TK_TO_REAL */ -#define OP_VOpen 148 -#define OP_VColumn 149 /* synopsis: r[P3]=vcolumn(P2) */ -#define OP_VNext 150 -#define OP_VRename 151 -#define OP_Pagecount 152 -#define OP_MaxPgcnt 153 -#define OP_Init 154 /* synopsis: Start at P2 */ -#define OP_Noop 155 -#define OP_Explain 156 +#define OP_VCreate 148 +#define OP_VDestroy 149 +#define OP_VOpen 150 +#define OP_VColumn 151 /* synopsis: r[P3]=vcolumn(P2) */ +#define OP_VNext 152 +#define OP_VRename 153 +#define OP_Pagecount 154 +#define OP_MaxPgcnt 155 +#define OP_Init 156 /* synopsis: Start at P2 */ +#define OP_Noop 157 +#define OP_Explain 158 /* Properties such as "out2" or "jump" that are specified in @@ -9300,19 +9431,19 @@ typedef struct VdbeOpList VdbeOpList; /* 32 */ 0x00, 0x00, 0x20, 0x00, 0x00, 0x04, 0x05, 0x04,\ /* 40 */ 0x00, 0x00, 0x01, 0x01, 0x05, 0x05, 0x00, 0x00,\ /* 48 */ 0x00, 0x02, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00,\ -/* 56 */ 0x00, 0x00, 0x00, 0x11, 0x11, 0x11, 0x11, 0x08,\ -/* 64 */ 0x11, 0x11, 0x11, 0x11, 0x02, 0x02, 0x00, 0x4c,\ +/* 56 */ 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x11, 0x11,\ +/* 64 */ 0x08, 0x11, 0x11, 0x11, 0x11, 0x02, 0x02, 0x4c,\ /* 72 */ 0x4c, 0x00, 0x00, 0x00, 0x05, 0x05, 0x15, 0x15,\ /* 80 */ 0x15, 0x15, 0x15, 0x15, 0x00, 0x4c, 0x4c, 0x4c,\ /* 88 */ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x00,\ -/* 96 */ 0x24, 0x02, 0x00, 0x00, 0x02, 0x00, 0x01, 0x01,\ -/* 104 */ 0x01, 0x01, 0x08, 0x08, 0x00, 0x02, 0x01, 0x01,\ -/* 112 */ 0x01, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00,\ -/* 120 */ 0x00, 0x00, 0x00, 0x00, 0x0c, 0x45, 0x15, 0x01,\ -/* 128 */ 0x02, 0x00, 0x01, 0x08, 0x05, 0x02, 0x05, 0x05,\ -/* 136 */ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,\ -/* 144 */ 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x01, 0x00,\ -/* 152 */ 0x02, 0x02, 0x01, 0x00, 0x00,} +/* 96 */ 0x24, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01,\ +/* 104 */ 0x01, 0x01, 0x01, 0x08, 0x08, 0x00, 0x02, 0x01,\ +/* 112 */ 0x01, 0x01, 0x01, 0x02, 0x00, 0x00, 0x02, 0x02,\ +/* 120 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x45,\ +/* 128 */ 0x15, 0x01, 0x02, 0x00, 0x01, 0x02, 0x08, 0x05,\ +/* 136 */ 0x05, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04,\ +/* 144 */ 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00,\ +/* 152 */ 0x01, 0x00, 0x02, 0x02, 0x01, 0x00, 0x00,} /************** End of opcodes.h *********************************************/ /************** Continuing where we left off in vdbe.h ***********************/ @@ -9367,12 +9498,13 @@ SQLITE_PRIVATE void sqlite3VdbeSetVarmask(Vdbe*, int); #ifndef SQLITE_OMIT_TRACE SQLITE_PRIVATE char *sqlite3VdbeExpandSql(Vdbe*, const char*); #endif +SQLITE_PRIVATE int sqlite3MemCompare(const Mem*, const Mem*, const CollSeq*); SQLITE_PRIVATE void sqlite3VdbeRecordUnpack(KeyInfo*,int,const void*,UnpackedRecord*); -SQLITE_PRIVATE int sqlite3VdbeRecordCompare(int,const void*,const UnpackedRecord*,int); +SQLITE_PRIVATE int sqlite3VdbeRecordCompare(int,const void*,UnpackedRecord*,int); SQLITE_PRIVATE UnpackedRecord *sqlite3VdbeAllocUnpackedRecord(KeyInfo *, char *, int, char **); -typedef int (*RecordCompare)(int,const void*,const UnpackedRecord*,int); +typedef int (*RecordCompare)(int,const void*,UnpackedRecord*,int); SQLITE_PRIVATE RecordCompare sqlite3VdbeFindCompare(UnpackedRecord*); #ifndef SQLITE_OMIT_TRIGGER @@ -9850,83 +9982,71 @@ SQLITE_PRIVATE void sqlite3PCacheSetDefault(void); #define _SQLITE_OS_H_ /* -** Figure out if we are dealing with Unix, Windows, or some other -** operating system. After the following block of preprocess macros, -** all of SQLITE_OS_UNIX, SQLITE_OS_WIN, and SQLITE_OS_OTHER -** will defined to either 1 or 0. One of the four will be 1. The other -** three will be 0. +** Attempt to automatically detect the operating system and setup the +** necessary pre-processor macros for it. +*/ +/************** Include os_setup.h in the middle of os.h *********************/ +/************** Begin file os_setup.h ****************************************/ +/* +** 2013 November 25 +** +** The author disclaims copyright to this source code. In place of +** a legal notice, here is a blessing: +** +** May you do good and not evil. +** May you find forgiveness for yourself and forgive others. +** May you share freely, never taking more than you give. +** +****************************************************************************** +** +** This file contains pre-processor directives related to operating system +** detection and/or setup. +*/ +#ifndef _OS_SETUP_H_ +#define _OS_SETUP_H_ + +/* +** Figure out if we are dealing with Unix, Windows, or some other operating +** system. +** +** After the following block of preprocess macros, all of SQLITE_OS_UNIX, +** SQLITE_OS_WIN, and SQLITE_OS_OTHER will defined to either 1 or 0. One of +** the three will be 1. The other two will be 0. */ #if defined(SQLITE_OS_OTHER) -# if SQLITE_OS_OTHER==1 -# undef SQLITE_OS_UNIX -# define SQLITE_OS_UNIX 0 -# undef SQLITE_OS_WIN -# define SQLITE_OS_WIN 0 -# else -# undef SQLITE_OS_OTHER -# endif +# if SQLITE_OS_OTHER==1 +# undef SQLITE_OS_UNIX +# define SQLITE_OS_UNIX 0 +# undef SQLITE_OS_WIN +# define SQLITE_OS_WIN 0 +# else +# undef SQLITE_OS_OTHER +# endif #endif #if !defined(SQLITE_OS_UNIX) && !defined(SQLITE_OS_OTHER) -# define SQLITE_OS_OTHER 0 -# ifndef SQLITE_OS_WIN -# if defined(_WIN32) || defined(WIN32) || defined(__CYGWIN__) || defined(__MINGW32__) || defined(__BORLANDC__) -# define SQLITE_OS_WIN 1 -# define SQLITE_OS_UNIX 0 -# else -# define SQLITE_OS_WIN 0 -# define SQLITE_OS_UNIX 1 +# define SQLITE_OS_OTHER 0 +# ifndef SQLITE_OS_WIN +# if defined(_WIN32) || defined(WIN32) || defined(__CYGWIN__) || \ + defined(__MINGW32__) || defined(__BORLANDC__) +# define SQLITE_OS_WIN 1 +# define SQLITE_OS_UNIX 0 +# else +# define SQLITE_OS_WIN 0 +# define SQLITE_OS_UNIX 1 +# endif +# else +# define SQLITE_OS_UNIX 0 # endif -# else -# define SQLITE_OS_UNIX 0 -# endif #else -# ifndef SQLITE_OS_WIN -# define SQLITE_OS_WIN 0 -# endif +# ifndef SQLITE_OS_WIN +# define SQLITE_OS_WIN 0 +# endif #endif -#if SQLITE_OS_WIN -# include -#endif +#endif /* _OS_SETUP_H_ */ -/* -** Determine if we are dealing with Windows NT. -** -** We ought to be able to determine if we are compiling for win98 or winNT -** using the _WIN32_WINNT macro as follows: -** -** #if defined(_WIN32_WINNT) -** # define SQLITE_OS_WINNT 1 -** #else -** # define SQLITE_OS_WINNT 0 -** #endif -** -** However, vs2005 does not set _WIN32_WINNT by default, as it ought to, -** so the above test does not work. We'll just assume that everything is -** winNT unless the programmer explicitly says otherwise by setting -** SQLITE_OS_WINNT to 0. -*/ -#if SQLITE_OS_WIN && !defined(SQLITE_OS_WINNT) -# define SQLITE_OS_WINNT 1 -#endif - -/* -** Determine if we are dealing with WindowsCE - which has a much -** reduced API. -*/ -#if defined(_WIN32_WCE) -# define SQLITE_OS_WINCE 1 -#else -# define SQLITE_OS_WINCE 0 -#endif - -/* -** Determine if we are dealing with WinRT, which provides only a subset of -** the full Win32 API. -*/ -#if !defined(SQLITE_OS_WINRT) -# define SQLITE_OS_WINRT 0 -#endif +/************** End of os_setup.h ********************************************/ +/************** Continuing where we left off in os.h *************************/ /* If the SET_FULLSYNC macro is not defined above, then make it ** a no-op @@ -10230,7 +10350,7 @@ struct Schema { Table *pSeqTab; /* The sqlite_sequence table used by AUTOINCREMENT */ u8 file_format; /* Schema format version for this file */ u8 enc; /* Text encoding used by this database */ - u16 flags; /* Flags associated with this schema */ + u16 schemaFlags; /* Flags associated with this schema */ int cache_size; /* Number of pages to use in the cache */ }; @@ -10238,10 +10358,10 @@ struct Schema { ** These macros can be used to test, set, or clear bits in the ** Db.pSchema->flags field. */ -#define DbHasProperty(D,I,P) (((D)->aDb[I].pSchema->flags&(P))==(P)) -#define DbHasAnyProperty(D,I,P) (((D)->aDb[I].pSchema->flags&(P))!=0) -#define DbSetProperty(D,I,P) (D)->aDb[I].pSchema->flags|=(P) -#define DbClearProperty(D,I,P) (D)->aDb[I].pSchema->flags&=~(P) +#define DbHasProperty(D,I,P) (((D)->aDb[I].pSchema->schemaFlags&(P))==(P)) +#define DbHasAnyProperty(D,I,P) (((D)->aDb[I].pSchema->schemaFlags&(P))!=0) +#define DbSetProperty(D,I,P) (D)->aDb[I].pSchema->schemaFlags|=(P) +#define DbClearProperty(D,I,P) (D)->aDb[I].pSchema->schemaFlags&=~(P) /* ** Allowed values for the DB.pSchema->flags field. @@ -10825,12 +10945,15 @@ struct Table { #ifndef SQLITE_OMIT_CHECK ExprList *pCheck; /* All CHECK constraints */ #endif - tRowcnt nRowEst; /* Estimated rows in table - from sqlite_stat1 table */ + LogEst nRowLogEst; /* Estimated rows in table - from sqlite_stat1 table */ int tnum; /* Root BTree node for this table (see note above) */ i16 iPKey; /* If not negative, use aCol[iPKey] as the primary key */ i16 nCol; /* Number of columns in this table */ u16 nRef; /* Number of pointers to this Table */ LogEst szTabRow; /* Estimated size of each table row in bytes */ +#ifdef SQLITE_ENABLE_COSTMULT + LogEst costMult; /* Cost multiplier for using this table */ +#endif u8 tabFlags; /* Mask of TF_* values */ u8 keyConf; /* What to do in case of uniqueness conflict on iPKey */ #ifndef SQLITE_OMIT_ALTERTABLE @@ -10998,6 +11121,7 @@ struct UnpackedRecord { KeyInfo *pKeyInfo; /* Collation and sort-order information */ u16 nField; /* Number of entries in apMem[] */ i8 default_rc; /* Comparison result if keys are equal */ + u8 isCorrupt; /* Corruption detected by xRecordCompare() */ Mem *aMem; /* Values */ int r1; /* Value to return if (lhs > rhs) */ int r2; /* Value to return if (rhs < lhs) */ @@ -11033,7 +11157,7 @@ struct UnpackedRecord { struct Index { char *zName; /* Name of this index */ i16 *aiColumn; /* Which columns are used by this index. 1st is 0 */ - tRowcnt *aiRowEst; /* From ANALYZE: Est. rows selected by each column */ + LogEst *aiRowLogEst; /* From ANALYZE: Est. rows selected by each column */ Table *pTable; /* The SQL table being indexed */ char *zColAff; /* String defining the affinity of each column */ Index *pNext; /* The next index associated with the same table */ @@ -11047,7 +11171,7 @@ struct Index { u16 nKeyCol; /* Number of columns forming the key */ u16 nColumn; /* Number of columns stored in the index */ u8 onError; /* OE_Abort, OE_Ignore, OE_Replace, or OE_None */ - unsigned autoIndex:2; /* 1==UNIQUE, 2==PRIMARY KEY, 0==CREATE INDEX */ + unsigned idxType:2; /* 1==UNIQUE, 2==PRIMARY KEY, 0==CREATE INDEX */ unsigned bUnordered:1; /* Use this index for == or IN queries only */ unsigned uniqNotNull:1; /* True if UNIQUE and NOT NULL for all columns */ unsigned isResized:1; /* True if resizeIndexObject() has been called */ @@ -11060,6 +11184,19 @@ struct Index { #endif }; +/* +** Allowed values for Index.idxType +*/ +#define SQLITE_IDXTYPE_APPDEF 0 /* Created using CREATE INDEX */ +#define SQLITE_IDXTYPE_UNIQUE 1 /* Implements a UNIQUE constraint */ +#define SQLITE_IDXTYPE_PRIMARYKEY 2 /* Is the PRIMARY KEY for the table */ + +/* Return true if index X is a PRIMARY KEY index */ +#define IsPrimaryKeyIndex(X) ((X)->idxType==SQLITE_IDXTYPE_PRIMARYKEY) + +/* Return true if index X is a UNIQUE index */ +#define IsUniqueIndex(X) ((X)->onError!=OE_None) + /* ** Each sample stored in the sqlite_stat3 table is represented in memory ** using a structure of this type. See documentation at the top of the @@ -11264,8 +11401,8 @@ struct Expr { #define EP_VarSelect 0x000020 /* pSelect is correlated, not constant */ #define EP_DblQuoted 0x000040 /* token.z was originally in "..." */ #define EP_InfixFunc 0x000080 /* True for an infix function: LIKE, GLOB, etc */ -#define EP_Collate 0x000100 /* Tree contains a TK_COLLATE opeartor */ - /* unused 0x000200 */ +#define EP_Collate 0x000100 /* Tree contains a TK_COLLATE operator */ +#define EP_Generic 0x000200 /* Ignore COLLATE or affinity on this tree */ #define EP_IntValue 0x000400 /* Integer value contained in u.iValue */ #define EP_xIsSelect 0x000800 /* x.pSelect is valid (otherwise x.pList is) */ #define EP_Skip 0x001000 /* COLLATE, AS, or UNLIKELY */ @@ -11329,7 +11466,6 @@ struct Expr { */ struct ExprList { int nExpr; /* Number of expressions on the list */ - int iECursor; /* VDBE Cursor associated with this ExprList */ struct ExprList_item { /* For each expression in the list */ Expr *pExpr; /* The list of expressions */ char *zName; /* Token associated with this expression */ @@ -11479,6 +11615,8 @@ struct SrcList { #define WHERE_GROUPBY 0x0100 /* pOrderBy is really a GROUP BY */ #define WHERE_DISTINCTBY 0x0200 /* pOrderby is really a DISTINCT clause */ #define WHERE_WANT_DISTINCT 0x0400 /* All output needs to be distinct */ +#define WHERE_SORTBYGROUP 0x0800 /* Support sqlite3WhereIsSorted() */ +#define WHERE_REOPEN_IDX 0x1000 /* Try to use OP_ReopenIdx */ /* Allowed return values from sqlite3WhereIsDistinct() */ @@ -11553,7 +11691,7 @@ struct Select { u8 op; /* One of: TK_UNION TK_ALL TK_INTERSECT TK_EXCEPT */ u16 selFlags; /* Various SF_* values */ int iLimit, iOffset; /* Memory registers holding LIMIT & OFFSET counters */ - int addrOpenEphm[3]; /* OP_OpenEphem opcodes related to this select */ + int addrOpenEphm[2]; /* OP_OpenEphem opcodes related to this select */ u64 nSelectRow; /* Estimated number of result rows */ SrcList *pSrc; /* The FROM clause */ Expr *pWhere; /* The WHERE clause */ @@ -11577,9 +11715,9 @@ struct Select { #define SF_UsesEphemeral 0x0008 /* Uses the OpenEphemeral opcode */ #define SF_Expanded 0x0010 /* sqlite3SelectExpand() called on this */ #define SF_HasTypeInfo 0x0020 /* FROM subqueries have Table metadata */ -#define SF_UseSorter 0x0040 /* Sort using a sorter */ + /* 0x0040 NOT USED */ #define SF_Values 0x0080 /* Synthesized from VALUES clause */ -#define SF_Materialize 0x0100 /* NOT USED */ + /* 0x0100 NOT USED */ #define SF_NestedFrom 0x0200 /* Part of a parenthesized FROM clause */ #define SF_MaybeConvert 0x0400 /* Need convertCompoundSelectToSubquery() */ #define SF_Recursive 0x0800 /* The recursive part of a recursive CTE */ @@ -11632,13 +11770,15 @@ struct Select { ** starting with pDest->iSdst. ** ** SRT_Table Store results in temporary table pDest->iSDParm. -** This is like SRT_EphemTab except that the table -** is assumed to already be open. +** SRT_Fifo This is like SRT_EphemTab except that the table +** is assumed to already be open. SRT_Fifo has +** the additional property of being able to ignore +** the ORDER BY clause. ** -** SRT_DistTable Store results in a temporary table pDest->iSDParm. +** SRT_DistFifo Store results in a temporary table pDest->iSDParm. ** But also use temporary table pDest->iSDParm+1 as ** a record of all prior results and ignore any duplicate -** rows. Name means: "Distinct Table". +** rows. Name means: "Distinct Fifo". ** ** SRT_Queue Store results in priority queue pDest->iSDParm (really ** an index). Append a sequence number so that all entries @@ -11652,19 +11792,20 @@ struct Select { #define SRT_Except 2 /* Remove result from a UNION index */ #define SRT_Exists 3 /* Store 1 if the result is not empty */ #define SRT_Discard 4 /* Do not save the results anywhere */ +#define SRT_Fifo 5 /* Store result as data with an automatic rowid */ +#define SRT_DistFifo 6 /* Like SRT_Fifo, but unique results only */ +#define SRT_Queue 7 /* Store result in an queue */ +#define SRT_DistQueue 8 /* Like SRT_Queue, but unique results only */ /* The ORDER BY clause is ignored for all of the above */ -#define IgnorableOrderby(X) ((X->eDest)<=SRT_Discard) +#define IgnorableOrderby(X) ((X->eDest)<=SRT_DistQueue) -#define SRT_Output 5 /* Output each row of result */ -#define SRT_Mem 6 /* Store result in a memory cell */ -#define SRT_Set 7 /* Store results as keys in an index */ -#define SRT_EphemTab 8 /* Create transient tab and store like SRT_Table */ -#define SRT_Coroutine 9 /* Generate a single row of result */ -#define SRT_Table 10 /* Store result as data with an automatic rowid */ -#define SRT_DistTable 11 /* Like SRT_Table, but unique results only */ -#define SRT_Queue 12 /* Store result in an queue */ -#define SRT_DistQueue 13 /* Like SRT_Queue, but unique results only */ +#define SRT_Output 9 /* Output each row of result */ +#define SRT_Mem 10 /* Store result in a memory cell */ +#define SRT_Set 11 /* Store results as keys in an index */ +#define SRT_EphemTab 12 /* Create transient tab and store like SRT_Table */ +#define SRT_Coroutine 13 /* Generate a single row of result */ +#define SRT_Table 14 /* Store result as data with an automatic rowid */ /* ** An instance of this object describes where to put of the results of @@ -11732,9 +11873,19 @@ struct TriggerPrg { ** The yDbMask datatype for the bitmask of all attached databases. */ #if SQLITE_MAX_ATTACHED>30 - typedef sqlite3_uint64 yDbMask; + typedef unsigned char yDbMask[(SQLITE_MAX_ATTACHED+9)/8]; +# define DbMaskTest(M,I) (((M)[(I)/8]&(1<<((I)&7)))!=0) +# define DbMaskZero(M) memset((M),0,sizeof(M)) +# define DbMaskSet(M,I) (M)[(I)/8]|=(1<<((I)&7)) +# define DbMaskAllZero(M) sqlite3DbMaskAllZero(M) +# define DbMaskNonZero(M) (sqlite3DbMaskAllZero(M)==0) #else typedef unsigned int yDbMask; +# define DbMaskTest(M,I) (((M)&(((yDbMask)1)<<(I)))!=0) +# define DbMaskZero(M) (M)=0 +# define DbMaskSet(M,I) (M)|=(((yDbMask)1)<<(I)) +# define DbMaskAllZero(M) (M)==0 +# define DbMaskNonZero(M) (M)!=0 #endif /* @@ -11762,8 +11913,6 @@ struct Parse { u8 checkSchema; /* Causes schema cookie check after an error */ u8 nested; /* Number of nested calls to the parser/code generator */ u8 nTempReg; /* Number of temporary registers in aTempReg[] */ - u8 nColCache; /* Number of entries in aColCache[] */ - u8 iColCache; /* Next entry in aColCache[] to replace */ u8 isMultiWrite; /* True if statement may modify/insert multiple rows */ u8 mayAbort; /* True if statement may throw an ABORT exception */ u8 hasCompound; /* Need to invoke convertCompoundSelectToSubquery() */ @@ -12061,11 +12210,10 @@ struct Sqlite3Config { int isMutexInit; /* True after mutexes are initialized */ int isMallocInit; /* True after malloc is initialized */ int isPCacheInit; /* True after malloc is initialized */ - sqlite3_mutex *pInitMutex; /* Mutex used by sqlite3_initialize() */ int nRefInitMutex; /* Number of users of pInitMutex */ + sqlite3_mutex *pInitMutex; /* Mutex used by sqlite3_initialize() */ void (*xLog)(void*,int,const char*); /* Function for logging */ void *pLogArg; /* First argument to xLog() */ - int bLocaltimeFault; /* True to fail localtime() calls */ #ifdef SQLITE_ENABLE_SQLLOG void(*xSqllog)(void*,sqlite3*,const char*, int); void *pSqllogArg; @@ -12077,6 +12225,10 @@ struct Sqlite3Config { void (*xVdbeBranch)(void*,int iSrcLine,u8 eThis,u8 eMx); /* Callback */ void *pVdbeBranchArg; /* 1st argument */ #endif +#ifndef SQLITE_OMIT_BUILTIN_TEST + int (*xTestCallback)(int); /* Invoked by sqlite3FaultSim() */ +#endif + int bLocaltimeFault; /* True to fail localtime() calls */ }; /* @@ -12378,6 +12530,12 @@ SQLITE_PRIVATE int sqlite3ParseUri(const char*,const char*,unsigned int*, SQLITE_PRIVATE Btree *sqlite3DbNameToBtree(sqlite3*,const char*); SQLITE_PRIVATE int sqlite3CodeOnce(Parse *); +#ifdef SQLITE_OMIT_BUILTIN_TEST +# define sqlite3FaultSim(X) SQLITE_OK +#else +SQLITE_PRIVATE int sqlite3FaultSim(int); +#endif + SQLITE_PRIVATE Bitvec *sqlite3BitvecCreate(u32); SQLITE_PRIVATE int sqlite3BitvecTest(Bitvec*, u32); SQLITE_PRIVATE int sqlite3BitvecSet(Bitvec*, u32); @@ -12389,7 +12547,7 @@ SQLITE_PRIVATE int sqlite3BitvecBuiltinTest(int,int*); SQLITE_PRIVATE RowSet *sqlite3RowSetInit(sqlite3*, void*, unsigned int); SQLITE_PRIVATE void sqlite3RowSetClear(RowSet*); SQLITE_PRIVATE void sqlite3RowSetInsert(RowSet*, i64); -SQLITE_PRIVATE int sqlite3RowSetTest(RowSet*, u8 iBatch, i64); +SQLITE_PRIVATE int sqlite3RowSetTest(RowSet*, int iBatch, i64); SQLITE_PRIVATE int sqlite3RowSetNext(RowSet*, i64*); SQLITE_PRIVATE void sqlite3CreateView(Parse*,Token*,Token*,Token*,Select*,int,int); @@ -12400,6 +12558,9 @@ SQLITE_PRIVATE int sqlite3ViewGetColumnNames(Parse*,Table*); # define sqlite3ViewGetColumnNames(A,B) 0 #endif +#if SQLITE_MAX_ATTACHED>30 +SQLITE_PRIVATE int sqlite3DbMaskAllZero(yDbMask); +#endif SQLITE_PRIVATE void sqlite3DropTable(Parse*, SrcList*, int, int); SQLITE_PRIVATE void sqlite3CodeDropTable(Parse*, Table*, int, int); SQLITE_PRIVATE void sqlite3DeleteTable(sqlite3*, Table*); @@ -12445,6 +12606,7 @@ SQLITE_PRIVATE void sqlite3WhereEnd(WhereInfo*); SQLITE_PRIVATE u64 sqlite3WhereOutputRowCount(WhereInfo*); SQLITE_PRIVATE int sqlite3WhereIsDistinct(WhereInfo*); SQLITE_PRIVATE int sqlite3WhereIsOrdered(WhereInfo*); +SQLITE_PRIVATE int sqlite3WhereIsSorted(WhereInfo*); SQLITE_PRIVATE int sqlite3WhereContinueLabel(WhereInfo*); SQLITE_PRIVATE int sqlite3WhereBreakLabel(WhereInfo*); SQLITE_PRIVATE int sqlite3WhereOkOnePass(WhereInfo*, int*); @@ -12453,7 +12615,7 @@ SQLITE_PRIVATE void sqlite3ExprCodeGetColumnOfTable(Vdbe*, Table*, int, int, int SQLITE_PRIVATE void sqlite3ExprCodeMove(Parse*, int, int, int); SQLITE_PRIVATE void sqlite3ExprCacheStore(Parse*, int, int, int); SQLITE_PRIVATE void sqlite3ExprCachePush(Parse*); -SQLITE_PRIVATE void sqlite3ExprCachePop(Parse*, int); +SQLITE_PRIVATE void sqlite3ExprCachePop(Parse*); SQLITE_PRIVATE void sqlite3ExprCacheRemove(Parse*, int, int); SQLITE_PRIVATE void sqlite3ExprCacheClear(Parse*); SQLITE_PRIVATE void sqlite3ExprCacheAffinityChange(Parse*, int, int); @@ -12505,6 +12667,7 @@ SQLITE_PRIVATE int sqlite3IsRowid(const char*); SQLITE_PRIVATE void sqlite3GenerateRowDelete(Parse*,Table*,Trigger*,int,int,int,i16,u8,u8,u8); SQLITE_PRIVATE void sqlite3GenerateRowIndexDelete(Parse*, Table*, int, int, int*); SQLITE_PRIVATE int sqlite3GenerateIndexKey(Parse*, Index*, int, int, int, int*,Index*,int); +SQLITE_PRIVATE void sqlite3ResolvePartIdxLabel(Parse*,int); SQLITE_PRIVATE void sqlite3GenerateConstraintChecks(Parse*,Table*,int*,int,int,int,int, u8,u8,int,int*); SQLITE_PRIVATE void sqlite3CompleteInsertion(Parse*,Table*,int,int,int,int*,int,int,int); @@ -12648,6 +12811,7 @@ SQLITE_PRIVATE char sqlite3CompareAffinity(Expr *pExpr, char aff2); SQLITE_PRIVATE int sqlite3IndexAffinityOk(Expr *pExpr, char idx_affinity); SQLITE_PRIVATE char sqlite3ExprAffinity(Expr *pExpr); SQLITE_PRIVATE int sqlite3Atoi64(const char*, i64*, int, u8); +SQLITE_PRIVATE int sqlite3DecOrHexToI64(const char*, i64*); SQLITE_PRIVATE void sqlite3Error(sqlite3*, int, const char*,...); SQLITE_PRIVATE void *sqlite3HexToBlob(sqlite3*, const char *z, int n); SQLITE_PRIVATE u8 sqlite3HexToInt(int h); @@ -12662,7 +12826,7 @@ SQLITE_PRIVATE int sqlite3ReadSchema(Parse *pParse); SQLITE_PRIVATE CollSeq *sqlite3FindCollSeq(sqlite3*,u8 enc, const char*,int); SQLITE_PRIVATE CollSeq *sqlite3LocateCollSeq(Parse *pParse, const char*zName); SQLITE_PRIVATE CollSeq *sqlite3ExprCollSeq(Parse *pParse, Expr *pExpr); -SQLITE_PRIVATE Expr *sqlite3ExprAddCollateToken(Parse *pParse, Expr*, Token*); +SQLITE_PRIVATE Expr *sqlite3ExprAddCollateToken(Parse *pParse, Expr*, const Token*); SQLITE_PRIVATE Expr *sqlite3ExprAddCollateString(Parse*,Expr*,const char*); SQLITE_PRIVATE Expr *sqlite3ExprSkipCollate(Expr*); SQLITE_PRIVATE int sqlite3CheckCollSeq(Parse *, CollSeq *); @@ -12677,7 +12841,7 @@ SQLITE_PRIVATE void sqlite3FileSuffix3(const char*, char*); #else # define sqlite3FileSuffix3(X,Y) #endif -SQLITE_PRIVATE u8 sqlite3GetBoolean(const char *z,int); +SQLITE_PRIVATE u8 sqlite3GetBoolean(const char *z,u8); SQLITE_PRIVATE const void *sqlite3ValueText(sqlite3_value*, u8); SQLITE_PRIVATE int sqlite3ValueBytes(sqlite3_value*, u8); @@ -12762,7 +12926,9 @@ SQLITE_PRIVATE void sqlite3BackupUpdate(sqlite3_backup *, Pgno, const u8 *); #ifdef SQLITE_ENABLE_STAT3_OR_STAT4 SQLITE_PRIVATE void sqlite3AnalyzeFunctions(void); SQLITE_PRIVATE int sqlite3Stat4ProbeSetValue(Parse*,Index*,UnpackedRecord**,Expr*,u8,int,int*); +SQLITE_PRIVATE int sqlite3Stat4ValueFromExpr(Parse*, Expr*, u8, sqlite3_value**); SQLITE_PRIVATE void sqlite3Stat4ProbeFree(UnpackedRecord*); +SQLITE_PRIVATE int sqlite3Stat4Column(sqlite3*, const void*, int, int, sqlite3_value**); #endif /* @@ -12899,11 +13065,21 @@ SQLITE_PRIVATE void sqlite3EndBenignMalloc(void); #define sqlite3EndBenignMalloc() #endif -#define IN_INDEX_ROWID 1 -#define IN_INDEX_EPH 2 -#define IN_INDEX_INDEX_ASC 3 -#define IN_INDEX_INDEX_DESC 4 -SQLITE_PRIVATE int sqlite3FindInIndex(Parse *, Expr *, int*); +/* +** Allowed return values from sqlite3FindInIndex() +*/ +#define IN_INDEX_ROWID 1 /* Search the rowid of the table */ +#define IN_INDEX_EPH 2 /* Search an ephemeral b-tree */ +#define IN_INDEX_INDEX_ASC 3 /* Existing index ASCENDING */ +#define IN_INDEX_INDEX_DESC 4 /* Existing index DESCENDING */ +#define IN_INDEX_NOOP 5 /* No table available. Use comparisons */ +/* +** Allowed flags for the 3rd parameter to sqlite3FindInIndex(). +*/ +#define IN_INDEX_NOOP_OK 0x0001 /* OK to return IN_INDEX_NOOP */ +#define IN_INDEX_MEMBERSHIP 0x0002 /* IN operator used for membership test */ +#define IN_INDEX_LOOP 0x0004 /* IN operator used as a loop */ +SQLITE_PRIVATE int sqlite3FindInIndex(Parse *, Expr *, u32, int*); #ifdef SQLITE_ENABLE_ATOMIC_WRITE SQLITE_PRIVATE int sqlite3JournalOpen(sqlite3_vfs *, const char *, sqlite3_file *, int, int); @@ -13181,15 +13357,22 @@ SQLITE_PRIVATE SQLITE_WSD struct Sqlite3Config sqlite3Config = { 0, /* isMutexInit */ 0, /* isMallocInit */ 0, /* isPCacheInit */ - 0, /* pInitMutex */ 0, /* nRefInitMutex */ + 0, /* pInitMutex */ 0, /* xLog */ 0, /* pLogArg */ - 0, /* bLocaltimeFault */ #ifdef SQLITE_ENABLE_SQLLOG 0, /* xSqllog */ - 0 /* pSqllogArg */ + 0, /* pSqllogArg */ #endif +#ifdef SQLITE_VDBE_COVERAGE + 0, /* xVdbeBranch */ + 0, /* pVbeBranchArg */ +#endif +#ifndef SQLITE_OMIT_BUILTIN_TEST + 0, /* xTestCallback */ +#endif + 0 /* bLocaltimeFault */ }; /* @@ -13743,13 +13926,18 @@ struct VdbeCursor { int pseudoTableReg; /* Register holding pseudotable content. */ i16 nField; /* Number of fields in the header */ u16 nHdrParsed; /* Number of header fields parsed so far */ +#ifdef SQLITE_DEBUG + u8 seekOp; /* Most recent seek operation on this cursor */ +#endif i8 iDb; /* Index of cursor database in db->aDb[] (or -1) */ u8 nullRow; /* True if pointing to a row with no data */ u8 rowidIsValid; /* True if lastRowid is valid */ u8 deferredMoveto; /* A call to sqlite3BtreeMoveto() is needed */ + Bool isEphemeral:1; /* True for an ephemeral table */ Bool useRandomRowid:1;/* Generate new record numbers semi-randomly */ Bool isTable:1; /* True if a table requiring integer keys */ Bool isOrdered:1; /* True if the underlying table is BTREE_UNORDERED */ + Pgno pgnoRoot; /* Root page of the open btree cursor */ sqlite3_vtab_cursor *pVtabCursor; /* The cursor for a virtual table */ i64 seqCount; /* Sequence counter */ i64 movetoTarget; /* Argument to the deferred sqlite3BtreeMoveto() */ @@ -14066,9 +14254,8 @@ SQLITE_PRIVATE u32 sqlite3VdbeSerialGet(const unsigned char*, u32, Mem*); SQLITE_PRIVATE void sqlite3VdbeDeleteAuxData(Vdbe*, int, int); int sqlite2BtreeKeyCompare(BtCursor *, const void *, int, int, int *); -SQLITE_PRIVATE int sqlite3VdbeIdxKeyCompare(VdbeCursor*,const UnpackedRecord*,int*); +SQLITE_PRIVATE int sqlite3VdbeIdxKeyCompare(VdbeCursor*,UnpackedRecord*,int*); SQLITE_PRIVATE int sqlite3VdbeIdxRowid(sqlite3*, BtCursor *, i64 *); -SQLITE_PRIVATE int sqlite3MemCompare(const Mem*, const Mem*, const CollSeq*); SQLITE_PRIVATE int sqlite3VdbeExec(Vdbe*); SQLITE_PRIVATE int sqlite3VdbeList(Vdbe*); SQLITE_PRIVATE int sqlite3VdbeHalt(Vdbe*); @@ -14112,6 +14299,7 @@ SQLITE_PRIVATE int sqlite3VdbeFrameRestore(VdbeFrame *); SQLITE_PRIVATE int sqlite3VdbeTransferError(Vdbe *p); SQLITE_PRIVATE int sqlite3VdbeSorterInit(sqlite3 *, VdbeCursor *); +SQLITE_PRIVATE void sqlite3VdbeSorterReset(sqlite3 *, VdbeSorter *); SQLITE_PRIVATE void sqlite3VdbeSorterClose(sqlite3 *, VdbeCursor *); SQLITE_PRIVATE int sqlite3VdbeSorterRowkey(const VdbeCursor *, Mem *); SQLITE_PRIVATE int sqlite3VdbeSorterNext(sqlite3 *, const VdbeCursor *, int *); @@ -17851,7 +18039,7 @@ static void *memsys5MallocUnsafe(int nByte){ ** block. If not, then split a block of the next larger power of ** two in order to create a new free block of size iLogsize. */ - for(iBin=iLogsize; mem5.aiFreelist[iBin]<0 && iBin<=LOGMAX; iBin++){} + for(iBin=iLogsize; iBin<=LOGMAX && mem5.aiFreelist[iBin]<0; iBin++){} if( iBin>LOGMAX ){ testcase( sqlite3GlobalConfig.xLog!=0 ); sqlite3_log(SQLITE_NOMEM, "failed to allocate %u bytes", nByte); @@ -18262,7 +18450,7 @@ SQLITE_PRIVATE int sqlite3MutexEnd(void){ */ SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int id){ #ifndef SQLITE_OMIT_AUTOINIT - if( sqlite3_initialize() ) return 0; + if( id<=SQLITE_MUTEX_RECURSIVE && sqlite3_initialize() ) return 0; #endif return sqlite3GlobalConfig.mutex.xMutexAlloc(id); } @@ -18443,7 +18631,7 @@ static int debugMutexEnd(void){ return SQLITE_OK; } ** that means that a mutex could not be allocated. */ static sqlite3_mutex *debugMutexAlloc(int id){ - static sqlite3_debug_mutex aStatic[6]; + static sqlite3_debug_mutex aStatic[SQLITE_MUTEX_STATIC_APP3 - 1]; sqlite3_debug_mutex *pNew = 0; switch( id ){ case SQLITE_MUTEX_FAST: @@ -18640,10 +18828,13 @@ static int pthreadMutexEnd(void){ return SQLITE_OK; } **
  • SQLITE_MUTEX_RECURSIVE **
  • SQLITE_MUTEX_STATIC_MASTER **
  • SQLITE_MUTEX_STATIC_MEM -**
  • SQLITE_MUTEX_STATIC_MEM2 +**
  • SQLITE_MUTEX_STATIC_OPEN **
  • SQLITE_MUTEX_STATIC_PRNG **
  • SQLITE_MUTEX_STATIC_LRU **
  • SQLITE_MUTEX_STATIC_PMEM +**
  • SQLITE_MUTEX_STATIC_APP1 +**
  • SQLITE_MUTEX_STATIC_APP2 +**
  • SQLITE_MUTEX_STATIC_APP3 ** ** ** The first two constants cause sqlite3_mutex_alloc() to create @@ -18677,6 +18868,9 @@ static sqlite3_mutex *pthreadMutexAlloc(int iType){ SQLITE3_MUTEX_INITIALIZER, SQLITE3_MUTEX_INITIALIZER, SQLITE3_MUTEX_INITIALIZER, + SQLITE3_MUTEX_INITIALIZER, + SQLITE3_MUTEX_INITIALIZER, + SQLITE3_MUTEX_INITIALIZER, SQLITE3_MUTEX_INITIALIZER }; sqlite3_mutex *p; @@ -18907,12 +19101,303 @@ SQLITE_PRIVATE sqlite3_mutex_methods const *sqlite3DefaultMutex(void){ ** May you share freely, never taking more than you give. ** ************************************************************************* -** This file contains the C functions that implement mutexes for win32 +** This file contains the C functions that implement mutexes for Win32. */ +#if SQLITE_OS_WIN +/* +** Include code that is common to all os_*.c files +*/ +/************** Include os_common.h in the middle of mutex_w32.c *************/ +/************** Begin file os_common.h ***************************************/ +/* +** 2004 May 22 +** +** The author disclaims copyright to this source code. In place of +** a legal notice, here is a blessing: +** +** May you do good and not evil. +** May you find forgiveness for yourself and forgive others. +** May you share freely, never taking more than you give. +** +****************************************************************************** +** +** This file contains macros and a little bit of code that is common to +** all of the platform-specific files (os_*.c) and is #included into those +** files. +** +** This file should be #included by the os_*.c files only. It is not a +** general purpose header file. +*/ +#ifndef _OS_COMMON_H_ +#define _OS_COMMON_H_ + +/* +** At least two bugs have slipped in because we changed the MEMORY_DEBUG +** macro to SQLITE_DEBUG and some older makefiles have not yet made the +** switch. The following code should catch this problem at compile-time. +*/ +#ifdef MEMORY_DEBUG +# error "The MEMORY_DEBUG macro is obsolete. Use SQLITE_DEBUG instead." +#endif + +#if defined(SQLITE_TEST) && defined(SQLITE_DEBUG) +# ifndef SQLITE_DEBUG_OS_TRACE +# define SQLITE_DEBUG_OS_TRACE 0 +# endif + int sqlite3OSTrace = SQLITE_DEBUG_OS_TRACE; +# define OSTRACE(X) if( sqlite3OSTrace ) sqlite3DebugPrintf X +#else +# define OSTRACE(X) +#endif + +/* +** Macros for performance tracing. Normally turned off. Only works +** on i486 hardware. +*/ +#ifdef SQLITE_PERFORMANCE_TRACE + +/* +** hwtime.h contains inline assembler code for implementing +** high-performance timing routines. +*/ +/************** Include hwtime.h in the middle of os_common.h ****************/ +/************** Begin file hwtime.h ******************************************/ +/* +** 2008 May 27 +** +** The author disclaims copyright to this source code. In place of +** a legal notice, here is a blessing: +** +** May you do good and not evil. +** May you find forgiveness for yourself and forgive others. +** May you share freely, never taking more than you give. +** +****************************************************************************** +** +** This file contains inline asm code for retrieving "high-performance" +** counters for x86 class CPUs. +*/ +#ifndef _HWTIME_H_ +#define _HWTIME_H_ + +/* +** The following routine only works on pentium-class (or newer) processors. +** It uses the RDTSC opcode to read the cycle count value out of the +** processor and returns that value. This can be used for high-res +** profiling. +*/ +#if (defined(__GNUC__) || defined(_MSC_VER)) && \ + (defined(i386) || defined(__i386__) || defined(_M_IX86)) + + #if defined(__GNUC__) + + __inline__ sqlite_uint64 sqlite3Hwtime(void){ + unsigned int lo, hi; + __asm__ __volatile__ ("rdtsc" : "=a" (lo), "=d" (hi)); + return (sqlite_uint64)hi << 32 | lo; + } + + #elif defined(_MSC_VER) + + __declspec(naked) __inline sqlite_uint64 __cdecl sqlite3Hwtime(void){ + __asm { + rdtsc + ret ; return value at EDX:EAX + } + } + + #endif + +#elif (defined(__GNUC__) && defined(__x86_64__)) + + __inline__ sqlite_uint64 sqlite3Hwtime(void){ + unsigned long val; + __asm__ __volatile__ ("rdtsc" : "=A" (val)); + return val; + } + +#elif (defined(__GNUC__) && defined(__ppc__)) + + __inline__ sqlite_uint64 sqlite3Hwtime(void){ + unsigned long long retval; + unsigned long junk; + __asm__ __volatile__ ("\n\ + 1: mftbu %1\n\ + mftb %L0\n\ + mftbu %0\n\ + cmpw %0,%1\n\ + bne 1b" + : "=r" (retval), "=r" (junk)); + return retval; + } + +#else + + #error Need implementation of sqlite3Hwtime() for your platform. + + /* + ** To compile without implementing sqlite3Hwtime() for your platform, + ** you can remove the above #error and use the following + ** stub function. You will lose timing support for many + ** of the debugging and testing utilities, but it should at + ** least compile and run. + */ +SQLITE_PRIVATE sqlite_uint64 sqlite3Hwtime(void){ return ((sqlite_uint64)0); } + +#endif + +#endif /* !defined(_HWTIME_H_) */ + +/************** End of hwtime.h **********************************************/ +/************** Continuing where we left off in os_common.h ******************/ + +static sqlite_uint64 g_start; +static sqlite_uint64 g_elapsed; +#define TIMER_START g_start=sqlite3Hwtime() +#define TIMER_END g_elapsed=sqlite3Hwtime()-g_start +#define TIMER_ELAPSED g_elapsed +#else +#define TIMER_START +#define TIMER_END +#define TIMER_ELAPSED ((sqlite_uint64)0) +#endif + +/* +** If we compile with the SQLITE_TEST macro set, then the following block +** of code will give us the ability to simulate a disk I/O error. This +** is used for testing the I/O recovery logic. +*/ +#ifdef SQLITE_TEST +SQLITE_API int sqlite3_io_error_hit = 0; /* Total number of I/O Errors */ +SQLITE_API int sqlite3_io_error_hardhit = 0; /* Number of non-benign errors */ +SQLITE_API int sqlite3_io_error_pending = 0; /* Count down to first I/O error */ +SQLITE_API int sqlite3_io_error_persist = 0; /* True if I/O errors persist */ +SQLITE_API int sqlite3_io_error_benign = 0; /* True if errors are benign */ +SQLITE_API int sqlite3_diskfull_pending = 0; +SQLITE_API int sqlite3_diskfull = 0; +#define SimulateIOErrorBenign(X) sqlite3_io_error_benign=(X) +#define SimulateIOError(CODE) \ + if( (sqlite3_io_error_persist && sqlite3_io_error_hit) \ + || sqlite3_io_error_pending-- == 1 ) \ + { local_ioerr(); CODE; } +static void local_ioerr(){ + IOTRACE(("IOERR\n")); + sqlite3_io_error_hit++; + if( !sqlite3_io_error_benign ) sqlite3_io_error_hardhit++; +} +#define SimulateDiskfullError(CODE) \ + if( sqlite3_diskfull_pending ){ \ + if( sqlite3_diskfull_pending == 1 ){ \ + local_ioerr(); \ + sqlite3_diskfull = 1; \ + sqlite3_io_error_hit = 1; \ + CODE; \ + }else{ \ + sqlite3_diskfull_pending--; \ + } \ + } +#else +#define SimulateIOErrorBenign(X) +#define SimulateIOError(A) +#define SimulateDiskfullError(A) +#endif + +/* +** When testing, keep a count of the number of open files. +*/ +#ifdef SQLITE_TEST +SQLITE_API int sqlite3_open_file_count = 0; +#define OpenCounter(X) sqlite3_open_file_count+=(X) +#else +#define OpenCounter(X) +#endif + +#endif /* !defined(_OS_COMMON_H_) */ + +/************** End of os_common.h *******************************************/ +/************** Continuing where we left off in mutex_w32.c ******************/ + +/* +** Include the header file for the Windows VFS. +*/ +/************** Include os_win.h in the middle of mutex_w32.c ****************/ +/************** Begin file os_win.h ******************************************/ +/* +** 2013 November 25 +** +** The author disclaims copyright to this source code. In place of +** a legal notice, here is a blessing: +** +** May you do good and not evil. +** May you find forgiveness for yourself and forgive others. +** May you share freely, never taking more than you give. +** +****************************************************************************** +** +** This file contains code that is specific to Windows. +*/ +#ifndef _OS_WIN_H_ +#define _OS_WIN_H_ + +/* +** Include the primary Windows SDK header file. +*/ +#include "windows.h" + +#ifdef __CYGWIN__ +# include +# include /* amalgamator: dontcache */ +#endif + +/* +** Determine if we are dealing with Windows NT. +** +** We ought to be able to determine if we are compiling for Windows 9x or +** Windows NT using the _WIN32_WINNT macro as follows: +** +** #if defined(_WIN32_WINNT) +** # define SQLITE_OS_WINNT 1 +** #else +** # define SQLITE_OS_WINNT 0 +** #endif +** +** However, Visual Studio 2005 does not set _WIN32_WINNT by default, as +** it ought to, so the above test does not work. We'll just assume that +** everything is Windows NT unless the programmer explicitly says otherwise +** by setting SQLITE_OS_WINNT to 0. +*/ +#if SQLITE_OS_WIN && !defined(SQLITE_OS_WINNT) +# define SQLITE_OS_WINNT 1 +#endif + +/* +** Determine if we are dealing with Windows CE - which has a much reduced +** API. +*/ +#if defined(_WIN32_WCE) +# define SQLITE_OS_WINCE 1 +#else +# define SQLITE_OS_WINCE 0 +#endif + +/* +** Determine if we are dealing with WinRT, which provides only a subset of +** the full Win32 API. +*/ +#if !defined(SQLITE_OS_WINRT) +# define SQLITE_OS_WINRT 0 +#endif + +#endif /* _OS_WIN_H_ */ + +/************** End of os_win.h **********************************************/ +/************** Continuing where we left off in mutex_w32.c ******************/ +#endif + /* ** The code in this file is only used if we are compiling multithreaded -** on a win32 system. +** on a Win32 system. */ #ifdef SQLITE_MUTEX_W32 @@ -18925,48 +19410,22 @@ struct sqlite3_mutex { #ifdef SQLITE_DEBUG volatile int nRef; /* Number of enterances */ volatile DWORD owner; /* Thread holding this mutex */ - int trace; /* True to trace changes */ + volatile int trace; /* True to trace changes */ #endif }; -#define SQLITE_W32_MUTEX_INITIALIZER { 0 } -#ifdef SQLITE_DEBUG -#define SQLITE3_MUTEX_INITIALIZER { SQLITE_W32_MUTEX_INITIALIZER, 0, 0L, (DWORD)0, 0 } -#else -#define SQLITE3_MUTEX_INITIALIZER { SQLITE_W32_MUTEX_INITIALIZER, 0 } -#endif /* -** Return true (non-zero) if we are running under WinNT, Win2K, WinXP, -** or WinCE. Return false (zero) for Win95, Win98, or WinME. -** -** Here is an interesting observation: Win95, Win98, and WinME lack -** the LockFileEx() API. But we can still statically link against that -** API as long as we don't call it win running Win95/98/ME. A call to -** this routine is used to determine if the host is Win95/98/ME or -** WinNT/2K/XP so that we will know whether or not we can safely call -** the LockFileEx() API. -** -** mutexIsNT() is only used for the TryEnterCriticalSection() API call, -** which is only available if your application was compiled with -** _WIN32_WINNT defined to a value >= 0x0400. Currently, the only -** call to TryEnterCriticalSection() is #ifdef'ed out, so #ifdef -** this out as well. +** These are the initializer values used when declaring a "static" mutex +** on Win32. It should be noted that all mutexes require initialization +** on the Win32 platform. */ -#if 0 -#if SQLITE_OS_WINCE || SQLITE_OS_WINRT -# define mutexIsNT() (1) +#define SQLITE_W32_MUTEX_INITIALIZER { 0 } + +#ifdef SQLITE_DEBUG +#define SQLITE3_MUTEX_INITIALIZER { SQLITE_W32_MUTEX_INITIALIZER, 0, \ + 0L, (DWORD)0, 0 } #else - static int mutexIsNT(void){ - static int osType = 0; - if( osType==0 ){ - OSVERSIONINFO sInfo; - sInfo.dwOSVersionInfoSize = sizeof(sInfo); - GetVersionEx(&sInfo); - osType = sInfo.dwPlatformId==VER_PLATFORM_WIN32_NT ? 2 : 1; - } - return osType==2; - } -#endif /* SQLITE_OS_WINCE || SQLITE_OS_WINRT */ +#define SQLITE3_MUTEX_INITIALIZER { SQLITE_W32_MUTEX_INITIALIZER, 0 } #endif #ifdef SQLITE_DEBUG @@ -18977,20 +19436,24 @@ struct sqlite3_mutex { static int winMutexHeld(sqlite3_mutex *p){ return p->nRef!=0 && p->owner==GetCurrentThreadId(); } + static int winMutexNotheld2(sqlite3_mutex *p, DWORD tid){ return p->nRef==0 || p->owner!=tid; } + static int winMutexNotheld(sqlite3_mutex *p){ - DWORD tid = GetCurrentThreadId(); + DWORD tid = GetCurrentThreadId(); return winMutexNotheld2(p, tid); } #endif - /* ** Initialize and deinitialize the mutex subsystem. */ -static sqlite3_mutex winMutex_staticMutexes[6] = { +static sqlite3_mutex winMutex_staticMutexes[] = { + SQLITE3_MUTEX_INITIALIZER, + SQLITE3_MUTEX_INITIALIZER, + SQLITE3_MUTEX_INITIALIZER, SQLITE3_MUTEX_INITIALIZER, SQLITE3_MUTEX_INITIALIZER, SQLITE3_MUTEX_INITIALIZER, @@ -18998,17 +19461,20 @@ static sqlite3_mutex winMutex_staticMutexes[6] = { SQLITE3_MUTEX_INITIALIZER, SQLITE3_MUTEX_INITIALIZER }; -static int winMutex_isInit = 0; -/* As winMutexInit() and winMutexEnd() are called as part -** of the sqlite3_initialize and sqlite3_shutdown() -** processing, the "interlocked" magic is probably not -** strictly necessary. -*/ -static LONG winMutex_lock = 0; +static int winMutex_isInit = 0; +static int winMutex_isNt = -1; /* <0 means "need to query" */ + +/* As the winMutexInit() and winMutexEnd() functions are called as part +** of the sqlite3_initialize() and sqlite3_shutdown() processing, the +** "interlocked" magic used here is probably not strictly necessary. +*/ +static LONG volatile winMutex_lock = 0; + +SQLITE_API int sqlite3_win32_is_nt(void); /* os_win.c */ SQLITE_API void sqlite3_win32_sleep(DWORD milliseconds); /* os_win.c */ -static int winMutexInit(void){ +static int winMutexInit(void){ /* The first to increment to 1 does actual initialization */ if( InterlockedCompareExchange(&winMutex_lock, 1, 0)==0 ){ int i; @@ -19021,16 +19487,17 @@ static int winMutexInit(void){ } winMutex_isInit = 1; }else{ - /* Someone else is in the process of initing the static mutexes */ + /* Another thread is (in the process of) initializing the static + ** mutexes */ while( !winMutex_isInit ){ sqlite3_win32_sleep(1); } } - return SQLITE_OK; + return SQLITE_OK; } -static int winMutexEnd(void){ - /* The first to decrement to 0 does actual shutdown +static int winMutexEnd(void){ + /* The first to decrement to 0 does actual shutdown ** (which should be the last to shutdown.) */ if( InterlockedCompareExchange(&winMutex_lock, 0, 1)==1 ){ if( winMutex_isInit==1 ){ @@ -19041,7 +19508,7 @@ static int winMutexEnd(void){ winMutex_isInit = 0; } } - return SQLITE_OK; + return SQLITE_OK; } /* @@ -19056,10 +19523,13 @@ static int winMutexEnd(void){ **
  • SQLITE_MUTEX_RECURSIVE **
  • SQLITE_MUTEX_STATIC_MASTER **
  • SQLITE_MUTEX_STATIC_MEM -**
  • SQLITE_MUTEX_STATIC_MEM2 +**
  • SQLITE_MUTEX_STATIC_OPEN **
  • SQLITE_MUTEX_STATIC_PRNG **
  • SQLITE_MUTEX_STATIC_LRU **
  • SQLITE_MUTEX_STATIC_PMEM +**
  • SQLITE_MUTEX_STATIC_APP1 +**
  • SQLITE_MUTEX_STATIC_APP2 +**
  • SQLITE_MUTEX_STATIC_APP3 ** ** ** The first two constants cause sqlite3_mutex_alloc() to create @@ -19082,7 +19552,7 @@ static int winMutexEnd(void){ ** ** Note that if one of the dynamic mutex parameters (SQLITE_MUTEX_FAST ** or SQLITE_MUTEX_RECURSIVE) is used then sqlite3_mutex_alloc() -** returns a different mutex on every call. But for the static +** returns a different mutex on every call. But for the static ** mutex types, the same mutex is returned on every call that has ** the same type number. */ @@ -19093,9 +19563,12 @@ static sqlite3_mutex *winMutexAlloc(int iType){ case SQLITE_MUTEX_FAST: case SQLITE_MUTEX_RECURSIVE: { p = sqlite3MallocZero( sizeof(*p) ); - if( p ){ + if( p ){ #ifdef SQLITE_DEBUG p->id = iType; +#ifdef SQLITE_WIN32_MUTEX_TRACE_DYNAMIC + p->trace = 1; +#endif #endif #if SQLITE_OS_WINRT InitializeCriticalSectionEx(&p->mutex, 0, 0); @@ -19106,12 +19579,15 @@ static sqlite3_mutex *winMutexAlloc(int iType){ break; } default: { - assert( winMutex_isInit==1 ); assert( iType-2 >= 0 ); assert( iType-2 < ArraySize(winMutex_staticMutexes) ); + assert( winMutex_isInit==1 ); p = &winMutex_staticMutexes[iType-2]; #ifdef SQLITE_DEBUG p->id = iType; +#ifdef SQLITE_WIN32_MUTEX_TRACE_STATIC + p->trace = 1; +#endif #endif break; } @@ -19127,8 +19603,11 @@ static sqlite3_mutex *winMutexAlloc(int iType){ */ static void winMutexFree(sqlite3_mutex *p){ assert( p ); +#ifdef SQLITE_DEBUG assert( p->nRef==0 && p->owner==0 ); assert( p->id==SQLITE_MUTEX_FAST || p->id==SQLITE_MUTEX_RECURSIVE ); +#endif + assert( winMutex_isInit==1 ); DeleteCriticalSection(&p->mutex); sqlite3_free(p); } @@ -19145,30 +19624,39 @@ static void winMutexFree(sqlite3_mutex *p){ ** more than once, the behavior is undefined. */ static void winMutexEnter(sqlite3_mutex *p){ -#ifdef SQLITE_DEBUG - DWORD tid = GetCurrentThreadId(); - assert( p->id==SQLITE_MUTEX_RECURSIVE || winMutexNotheld2(p, tid) ); +#if defined(SQLITE_DEBUG) || defined(SQLITE_TEST) + DWORD tid = GetCurrentThreadId(); #endif +#ifdef SQLITE_DEBUG + assert( p ); + assert( p->id==SQLITE_MUTEX_RECURSIVE || winMutexNotheld2(p, tid) ); +#else + assert( p ); +#endif + assert( winMutex_isInit==1 ); EnterCriticalSection(&p->mutex); #ifdef SQLITE_DEBUG assert( p->nRef>0 || p->owner==0 ); - p->owner = tid; + p->owner = tid; p->nRef++; if( p->trace ){ - printf("enter mutex %p (%d) with nRef=%d\n", p, p->trace, p->nRef); + OSTRACE(("ENTER-MUTEX tid=%lu, mutex=%p (%d), nRef=%d\n", + tid, p, p->trace, p->nRef)); } #endif } + static int winMutexTry(sqlite3_mutex *p){ -#ifndef NDEBUG - DWORD tid = GetCurrentThreadId(); +#if defined(SQLITE_DEBUG) || defined(SQLITE_TEST) + DWORD tid = GetCurrentThreadId(); #endif int rc = SQLITE_BUSY; + assert( p ); assert( p->id==SQLITE_MUTEX_RECURSIVE || winMutexNotheld2(p, tid) ); /* ** The sqlite3_mutex_try() routine is very rarely used, and when it ** is used it is merely an optimization. So it is OK for it to always - ** fail. + ** fail. ** ** The TryEnterCriticalSection() interface is only available on WinNT. ** And some windows compilers complain if you try to use it without @@ -19176,18 +19664,27 @@ static int winMutexTry(sqlite3_mutex *p){ ** For that reason, we will omit this optimization for now. See ** ticket #2685. */ -#if 0 - if( mutexIsNT() && TryEnterCriticalSection(&p->mutex) ){ +#if defined(_WIN32_WINNT) && _WIN32_WINNT >= 0x0400 + assert( winMutex_isInit==1 ); + assert( winMutex_isNt>=-1 && winMutex_isNt<=1 ); + if( winMutex_isNt<0 ){ + winMutex_isNt = sqlite3_win32_is_nt(); + } + assert( winMutex_isNt==0 || winMutex_isNt==1 ); + if( winMutex_isNt && TryEnterCriticalSection(&p->mutex) ){ +#ifdef SQLITE_DEBUG p->owner = tid; p->nRef++; +#endif rc = SQLITE_OK; } #else UNUSED_PARAMETER(p); #endif #ifdef SQLITE_DEBUG - if( rc==SQLITE_OK && p->trace ){ - printf("try mutex %p (%d) with nRef=%d\n", p, p->trace, p->nRef); + if( p->trace ){ + OSTRACE(("TRY-MUTEX tid=%lu, mutex=%p (%d), owner=%lu, nRef=%d, rc=%s\n", + tid, p, p->trace, p->owner, p->nRef, sqlite3ErrName(rc))); } #endif return rc; @@ -19200,18 +19697,23 @@ static int winMutexTry(sqlite3_mutex *p){ ** is not currently allocated. SQLite will never do either. */ static void winMutexLeave(sqlite3_mutex *p){ -#ifndef NDEBUG +#if defined(SQLITE_DEBUG) || defined(SQLITE_TEST) DWORD tid = GetCurrentThreadId(); +#endif + assert( p ); +#ifdef SQLITE_DEBUG assert( p->nRef>0 ); assert( p->owner==tid ); p->nRef--; if( p->nRef==0 ) p->owner = 0; assert( p->nRef==0 || p->id==SQLITE_MUTEX_RECURSIVE ); #endif + assert( winMutex_isInit==1 ); LeaveCriticalSection(&p->mutex); #ifdef SQLITE_DEBUG if( p->trace ){ - printf("leave mutex %p (%d) with nRef=%d\n", p, p->trace, p->nRef); + OSTRACE(("LEAVE-MUTEX tid=%lu, mutex=%p (%d), nRef=%d\n", + tid, p, p->trace, p->nRef)); } #endif } @@ -19233,9 +19735,9 @@ SQLITE_PRIVATE sqlite3_mutex_methods const *sqlite3DefaultMutex(void){ 0 #endif }; - return &sMutex; } + #endif /* SQLITE_MUTEX_W32 */ /************** End of mutex_w32.c *******************************************/ @@ -20161,20 +20663,6 @@ static char et_getdigit(LONGDOUBLE_TYPE *val, int *cnt){ } #endif /* SQLITE_OMIT_FLOATING_POINT */ -/* -** Append N space characters to the given string buffer. -*/ -SQLITE_PRIVATE void sqlite3AppendSpace(StrAccum *pAccum, int N){ - static const char zSpaces[] = " "; - while( N>=(int)sizeof(zSpaces)-1 ){ - sqlite3StrAccumAppend(pAccum, zSpaces, sizeof(zSpaces)-1); - N -= sizeof(zSpaces)-1; - } - if( N>0 ){ - sqlite3StrAccumAppend(pAccum, zSpaces, N); - } -} - /* ** Set the StrAccum object to an error mode. */ @@ -20264,11 +20752,9 @@ SQLITE_PRIVATE void sqlite3VXPrintf( } for(; (c=(*fmt))!=0; ++fmt){ if( c!='%' ){ - int amt; bufpt = (char *)fmt; - amt = 1; - while( (c=(*++fmt))!='%' && c!=0 ) amt++; - sqlite3StrAccumAppend(pAccum, bufpt, amt); + while( (c=(*++fmt))!='%' && c!=0 ){}; + sqlite3StrAccumAppend(pAccum, bufpt, (int)(fmt - bufpt)); if( c==0 ) break; } if( (c=(*++fmt))==0 ){ @@ -20449,10 +20935,8 @@ SQLITE_PRIVATE void sqlite3VXPrintf( *(--bufpt) = zOrd[x*2]; } { - register const char *cset; /* Use registers for speed */ - register int base; - cset = &aDigits[infop->charset]; - base = infop->base; + const char *cset = &aDigits[infop->charset]; + u8 base = infop->base; do{ /* Convert to ascii */ *(--bufpt) = cset[longvalue%base]; longvalue = longvalue/base; @@ -20756,29 +21240,90 @@ SQLITE_PRIVATE void sqlite3VXPrintf( ** "length" characters long. The field width is "width". Do ** the output. */ - if( !flag_leftjustify ){ - register int nspace; - nspace = width-length; - if( nspace>0 ){ - sqlite3AppendSpace(pAccum, nspace); - } - } - if( length>0 ){ - sqlite3StrAccumAppend(pAccum, bufpt, length); - } - if( flag_leftjustify ){ - register int nspace; - nspace = width-length; - if( nspace>0 ){ - sqlite3AppendSpace(pAccum, nspace); - } - } + width -= length; + if( width>0 && !flag_leftjustify ) sqlite3AppendSpace(pAccum, width); + sqlite3StrAccumAppend(pAccum, bufpt, length); + if( width>0 && flag_leftjustify ) sqlite3AppendSpace(pAccum, width); + if( zExtra ) sqlite3_free(zExtra); }/* End for loop over the format string */ } /* End of function */ /* -** Append N bytes of text from z to the StrAccum object. +** Enlarge the memory allocation on a StrAccum object so that it is +** able to accept at least N more bytes of text. +** +** Return the number of bytes of text that StrAccum is able to accept +** after the attempted enlargement. The value returned might be zero. +*/ +static int sqlite3StrAccumEnlarge(StrAccum *p, int N){ + char *zNew; + assert( p->nChar+N >= p->nAlloc ); /* Only called if really needed */ + if( p->accError ){ + testcase(p->accError==STRACCUM_TOOBIG); + testcase(p->accError==STRACCUM_NOMEM); + return 0; + } + if( !p->useMalloc ){ + N = p->nAlloc - p->nChar - 1; + setStrAccumError(p, STRACCUM_TOOBIG); + return N; + }else{ + char *zOld = (p->zText==p->zBase ? 0 : p->zText); + i64 szNew = p->nChar; + szNew += N + 1; + if( szNew > p->mxAlloc ){ + sqlite3StrAccumReset(p); + setStrAccumError(p, STRACCUM_TOOBIG); + return 0; + }else{ + p->nAlloc = (int)szNew; + } + if( p->useMalloc==1 ){ + zNew = sqlite3DbRealloc(p->db, zOld, p->nAlloc); + }else{ + zNew = sqlite3_realloc(zOld, p->nAlloc); + } + if( zNew ){ + assert( p->zText!=0 || p->nChar==0 ); + if( zOld==0 && p->nChar>0 ) memcpy(zNew, p->zText, p->nChar); + p->zText = zNew; + }else{ + sqlite3StrAccumReset(p); + setStrAccumError(p, STRACCUM_NOMEM); + return 0; + } + } + return N; +} + +/* +** Append N space characters to the given string buffer. +*/ +SQLITE_PRIVATE void sqlite3AppendSpace(StrAccum *p, int N){ + if( p->nChar+N >= p->nAlloc && (N = sqlite3StrAccumEnlarge(p, N))<=0 ) return; + while( (N--)>0 ) p->zText[p->nChar++] = ' '; +} + +/* +** The StrAccum "p" is not large enough to accept N new bytes of z[]. +** So enlarge if first, then do the append. +** +** This is a helper routine to sqlite3StrAccumAppend() that does special-case +** work (enlarging the buffer) using tail recursion, so that the +** sqlite3StrAccumAppend() routine can use fast calling semantics. +*/ +static void enlargeAndAppend(StrAccum *p, const char *z, int N){ + N = sqlite3StrAccumEnlarge(p, N); + if( N>0 ){ + memcpy(&p->zText[p->nChar], z, N); + p->nChar += N; + } +} + +/* +** Append N bytes of text from z to the StrAccum object. Increase the +** size of the memory allocation for StrAccum if necessary. */ SQLITE_PRIVATE void sqlite3StrAccumAppend(StrAccum *p, const char *z, int N){ assert( z!=0 ); @@ -20786,43 +21331,8 @@ SQLITE_PRIVATE void sqlite3StrAccumAppend(StrAccum *p, const char *z, int N){ assert( N>=0 ); assert( p->accError==0 || p->nAlloc==0 ); if( p->nChar+N >= p->nAlloc ){ - char *zNew; - if( p->accError ){ - testcase(p->accError==STRACCUM_TOOBIG); - testcase(p->accError==STRACCUM_NOMEM); - return; - } - if( !p->useMalloc ){ - N = p->nAlloc - p->nChar - 1; - setStrAccumError(p, STRACCUM_TOOBIG); - if( N<=0 ){ - return; - } - }else{ - char *zOld = (p->zText==p->zBase ? 0 : p->zText); - i64 szNew = p->nChar; - szNew += N + 1; - if( szNew > p->mxAlloc ){ - sqlite3StrAccumReset(p); - setStrAccumError(p, STRACCUM_TOOBIG); - return; - }else{ - p->nAlloc = (int)szNew; - } - if( p->useMalloc==1 ){ - zNew = sqlite3DbRealloc(p->db, zOld, p->nAlloc); - }else{ - zNew = sqlite3_realloc(zOld, p->nAlloc); - } - if( zNew ){ - if( zOld==0 && p->nChar>0 ) memcpy(zNew, p->zText, p->nChar); - p->zText = zNew; - }else{ - sqlite3StrAccumReset(p); - setStrAccumError(p, STRACCUM_NOMEM); - return; - } - } + enlargeAndAppend(p,z,N); + return; } assert( p->zText ); memcpy(&p->zText[p->nChar], z, N); @@ -21344,8 +21854,8 @@ static const unsigned char sqlite3Utf8Trans1[] = { ** and rendered as themselves even though they are technically ** invalid characters. ** -** * This routine accepts an infinite number of different UTF8 encodings -** for unicode values 0x80 and greater. It do not change over-length +** * This routine accepts over-length UTF8 encodings +** for unicode values 0x80 and greater. It does not change over-length ** encodings to 0xfffd as some systems recommend. */ #define READ_UTF8(zIn, zTerm, c) \ @@ -21758,6 +22268,24 @@ SQLITE_PRIVATE void sqlite3Coverage(int x){ } #endif +/* +** Give a callback to the test harness that can be used to simulate faults +** in places where it is difficult or expensive to do so purely by means +** of inputs. +** +** The intent of the integer argument is to let the fault simulator know +** which of multiple sqlite3FaultSim() calls has been hit. +** +** Return whatever integer value the test callback returns, or return +** SQLITE_OK if no test callback is installed. +*/ +#ifndef SQLITE_OMIT_BUILTIN_TEST +SQLITE_PRIVATE int sqlite3FaultSim(int iTest){ + int (*xCallback)(int) = sqlite3GlobalConfig.xTestCallback; + return xCallback ? xCallback(iTest) : SQLITE_OK; +} +#endif + #ifndef SQLITE_OMIT_FLOATING_POINT /* ** Return true if the floating point value is Not a Number (NaN). @@ -22184,9 +22712,9 @@ static int compare2pow63(const char *zNum, int incr){ return c; } - /* -** Convert zNum to a 64-bit signed integer. +** Convert zNum to a 64-bit signed integer. zNum must be decimal. This +** routine does *not* accept hexadecimal notation. ** ** If the zNum value is representable as a 64-bit twos-complement ** integer, then write that value into *pNum and return 0. @@ -22274,10 +22802,44 @@ SQLITE_PRIVATE int sqlite3Atoi64(const char *zNum, i64 *pNum, int length, u8 enc } } +/* +** Transform a UTF-8 integer literal, in either decimal or hexadecimal, +** into a 64-bit signed integer. This routine accepts hexadecimal literals, +** whereas sqlite3Atoi64() does not. +** +** Returns: +** +** 0 Successful transformation. Fits in a 64-bit signed integer. +** 1 Integer too large for a 64-bit signed integer or is malformed +** 2 Special case of 9223372036854775808 +*/ +SQLITE_PRIVATE int sqlite3DecOrHexToI64(const char *z, i64 *pOut){ +#ifndef SQLITE_OMIT_HEX_INTEGER + if( z[0]=='0' + && (z[1]=='x' || z[1]=='X') + && sqlite3Isxdigit(z[2]) + ){ + u64 u = 0; + int i, k; + for(i=2; z[i]=='0'; i++){} + for(k=i; sqlite3Isxdigit(z[k]); k++){ + u = u*16 + sqlite3HexToInt(z[k]); + } + memcpy(pOut, &u, 8); + return (z[k]==0 && k-i<=16) ? 0 : 1; + }else +#endif /* SQLITE_OMIT_HEX_INTEGER */ + { + return sqlite3Atoi64(z, pOut, sqlite3Strlen30(z), SQLITE_UTF8); + } +} + /* ** If zNum represents an integer that will fit in 32-bits, then set ** *pValue to that integer and return true. Otherwise return false. ** +** This routine accepts both decimal and hexadecimal notation for integers. +** ** Any non-numeric characters that following zNum are ignored. ** This is different from sqlite3Atoi64() which requires the ** input number to be zero-terminated. @@ -22292,7 +22854,25 @@ SQLITE_PRIVATE int sqlite3GetInt32(const char *zNum, int *pValue){ }else if( zNum[0]=='+' ){ zNum++; } - while( zNum[0]=='0' ) zNum++; +#ifndef SQLITE_OMIT_HEX_INTEGER + else if( zNum[0]=='0' + && (zNum[1]=='x' || zNum[1]=='X') + && sqlite3Isxdigit(zNum[2]) + ){ + u32 u = 0; + zNum += 2; + while( zNum[0]=='0' ) zNum++; + for(i=0; sqlite3Isxdigit(zNum[i]) && i<8; i++){ + u = u*16 + sqlite3HexToInt(zNum[i]); + } + if( (u&0x80000000)==0 && sqlite3Isxdigit(zNum[i])==0 ){ + memcpy(pValue, &u, 4); + return 1; + }else{ + return 0; + } + } +#endif for(i=0; i<11 && (c = zNum[i] - '0')>=0 && c<=9; i++){ v = v*10 + c; } @@ -22973,8 +23553,8 @@ SQLITE_PRIVATE LogEst sqlite3LogEstAdd(LogEst a, LogEst b){ } /* -** Convert an integer into a LogEst. In other words, compute a -** good approximatation for 10*log2(x). +** Convert an integer into a LogEst. In other words, compute an +** approximation for 10*log2(x). */ SQLITE_PRIVATE LogEst sqlite3LogEst(u64 x){ static LogEst a[] = { 0, 2, 3, 5, 6, 7, 8, 9 }; @@ -23330,7 +23910,7 @@ SQLITE_PRIVATE const char *sqlite3OpcodeName(int i){ /* 11 */ "Checkpoint" OpHelp(""), /* 12 */ "JournalMode" OpHelp(""), /* 13 */ "Vacuum" OpHelp(""), - /* 14 */ "VFilter" OpHelp("iPlan=r[P3] zPlan='P4'"), + /* 14 */ "VFilter" OpHelp("iplan=r[P3] zplan='P4'"), /* 15 */ "VUpdate" OpHelp("data=r[P3@P2]"), /* 16 */ "Goto" OpHelp(""), /* 17 */ "Gosub" OpHelp(""), @@ -23357,7 +23937,7 @@ SQLITE_PRIVATE const char *sqlite3OpcodeName(int i){ /* 38 */ "MustBeInt" OpHelp(""), /* 39 */ "RealAffinity" OpHelp(""), /* 40 */ "Permutation" OpHelp(""), - /* 41 */ "Compare" OpHelp(""), + /* 41 */ "Compare" OpHelp("r[P1@P3] <-> r[P2@P3]"), /* 42 */ "Jump" OpHelp(""), /* 43 */ "Once" OpHelp(""), /* 44 */ "If" OpHelp(""), @@ -23368,30 +23948,30 @@ SQLITE_PRIVATE const char *sqlite3OpcodeName(int i){ /* 49 */ "Count" OpHelp("r[P2]=count()"), /* 50 */ "ReadCookie" OpHelp(""), /* 51 */ "SetCookie" OpHelp(""), - /* 52 */ "OpenRead" OpHelp("root=P2 iDb=P3"), - /* 53 */ "OpenWrite" OpHelp("root=P2 iDb=P3"), - /* 54 */ "OpenAutoindex" OpHelp("nColumn=P2"), - /* 55 */ "OpenEphemeral" OpHelp("nColumn=P2"), - /* 56 */ "SorterOpen" OpHelp(""), - /* 57 */ "OpenPseudo" OpHelp("P3 columns in r[P2]"), - /* 58 */ "Close" OpHelp(""), - /* 59 */ "SeekLT" OpHelp(""), - /* 60 */ "SeekLE" OpHelp(""), - /* 61 */ "SeekGE" OpHelp(""), - /* 62 */ "SeekGT" OpHelp(""), - /* 63 */ "Seek" OpHelp("intkey=r[P2]"), - /* 64 */ "NoConflict" OpHelp("key=r[P3@P4]"), - /* 65 */ "NotFound" OpHelp("key=r[P3@P4]"), - /* 66 */ "Found" OpHelp("key=r[P3@P4]"), - /* 67 */ "NotExists" OpHelp("intkey=r[P3]"), - /* 68 */ "Sequence" OpHelp("r[P2]=rowid"), - /* 69 */ "NewRowid" OpHelp("r[P2]=rowid"), - /* 70 */ "Insert" OpHelp("intkey=r[P3] data=r[P2]"), + /* 52 */ "ReopenIdx" OpHelp("root=P2 iDb=P3"), + /* 53 */ "OpenRead" OpHelp("root=P2 iDb=P3"), + /* 54 */ "OpenWrite" OpHelp("root=P2 iDb=P3"), + /* 55 */ "OpenAutoindex" OpHelp("nColumn=P2"), + /* 56 */ "OpenEphemeral" OpHelp("nColumn=P2"), + /* 57 */ "SorterOpen" OpHelp(""), + /* 58 */ "OpenPseudo" OpHelp("P3 columns in r[P2]"), + /* 59 */ "Close" OpHelp(""), + /* 60 */ "SeekLT" OpHelp("key=r[P3@P4]"), + /* 61 */ "SeekLE" OpHelp("key=r[P3@P4]"), + /* 62 */ "SeekGE" OpHelp("key=r[P3@P4]"), + /* 63 */ "SeekGT" OpHelp("key=r[P3@P4]"), + /* 64 */ "Seek" OpHelp("intkey=r[P2]"), + /* 65 */ "NoConflict" OpHelp("key=r[P3@P4]"), + /* 66 */ "NotFound" OpHelp("key=r[P3@P4]"), + /* 67 */ "Found" OpHelp("key=r[P3@P4]"), + /* 68 */ "NotExists" OpHelp("intkey=r[P3]"), + /* 69 */ "Sequence" OpHelp("r[P2]=cursor[P1].ctr++"), + /* 70 */ "NewRowid" OpHelp("r[P2]=rowid"), /* 71 */ "Or" OpHelp("r[P3]=(r[P1] || r[P2])"), /* 72 */ "And" OpHelp("r[P3]=(r[P1] && r[P2])"), - /* 73 */ "InsertInt" OpHelp("intkey=P3 data=r[P2]"), - /* 74 */ "Delete" OpHelp(""), - /* 75 */ "ResetCount" OpHelp(""), + /* 73 */ "Insert" OpHelp("intkey=r[P3] data=r[P2]"), + /* 74 */ "InsertInt" OpHelp("intkey=P3 data=r[P2]"), + /* 75 */ "Delete" OpHelp(""), /* 76 */ "IsNull" OpHelp("if r[P1]==NULL goto P2"), /* 77 */ "NotNull" OpHelp("if r[P1]!=NULL goto P2"), /* 78 */ "Ne" OpHelp("if r[P1]!=r[P3] goto P2"), @@ -23400,7 +23980,7 @@ SQLITE_PRIVATE const char *sqlite3OpcodeName(int i){ /* 81 */ "Le" OpHelp("if r[P1]<=r[P3] goto P2"), /* 82 */ "Lt" OpHelp("if r[P1]=r[P3] goto P2"), - /* 84 */ "SorterCompare" OpHelp("if key(P1)!=rtrim(r[P3],P4) goto P2"), + /* 84 */ "ResetCount" OpHelp(""), /* 85 */ "BitAnd" OpHelp("r[P3]=r[P1]&r[P2]"), /* 86 */ "BitOr" OpHelp("r[P3]=r[P1]|r[P2]"), /* 87 */ "ShiftLeft" OpHelp("r[P3]=r[P2]<0 goto P2"), + /* 98 */ "SorterData" OpHelp("r[P2]=data"), + /* 99 */ "RowKey" OpHelp("r[P2]=key"), + /* 100 */ "RowData" OpHelp("r[P2]=data"), + /* 101 */ "Rowid" OpHelp("r[P2]=rowid"), + /* 102 */ "NullRow" OpHelp(""), + /* 103 */ "Last" OpHelp(""), + /* 104 */ "SorterSort" OpHelp(""), + /* 105 */ "Sort" OpHelp(""), + /* 106 */ "Rewind" OpHelp(""), + /* 107 */ "SorterInsert" OpHelp(""), + /* 108 */ "IdxInsert" OpHelp("key=r[P2]"), + /* 109 */ "IdxDelete" OpHelp("key=r[P2@P3]"), + /* 110 */ "IdxRowid" OpHelp("r[P2]=rowid"), + /* 111 */ "IdxLE" OpHelp("key=r[P3@P4]"), + /* 112 */ "IdxGT" OpHelp("key=r[P3@P4]"), + /* 113 */ "IdxLT" OpHelp("key=r[P3@P4]"), + /* 114 */ "IdxGE" OpHelp("key=r[P3@P4]"), + /* 115 */ "Destroy" OpHelp(""), + /* 116 */ "Clear" OpHelp(""), + /* 117 */ "ResetSorter" OpHelp(""), + /* 118 */ "CreateIndex" OpHelp("r[P2]=root iDb=P1"), + /* 119 */ "CreateTable" OpHelp("r[P2]=root iDb=P1"), + /* 120 */ "ParseSchema" OpHelp(""), + /* 121 */ "LoadAnalysis" OpHelp(""), + /* 122 */ "DropTable" OpHelp(""), + /* 123 */ "DropIndex" OpHelp(""), + /* 124 */ "DropTrigger" OpHelp(""), + /* 125 */ "IntegrityCk" OpHelp(""), + /* 126 */ "RowSetAdd" OpHelp("rowset(P1)=r[P2]"), + /* 127 */ "RowSetRead" OpHelp("r[P3]=rowset(P1)"), + /* 128 */ "RowSetTest" OpHelp("if r[P3] in rowset(P1) goto P2"), + /* 129 */ "Program" OpHelp(""), + /* 130 */ "Param" OpHelp(""), + /* 131 */ "FkCounter" OpHelp("fkctr[P1]+=P2"), + /* 132 */ "FkIfZero" OpHelp("if fkctr[P1]==0 goto P2"), /* 133 */ "Real" OpHelp("r[P2]=P4"), - /* 134 */ "IfNeg" OpHelp("if r[P1]<0 goto P2"), - /* 135 */ "IfZero" OpHelp("r[P1]+=P3, if r[P1]==0 goto P2"), - /* 136 */ "AggFinal" OpHelp("accum=r[P1] N=P2"), - /* 137 */ "IncrVacuum" OpHelp(""), - /* 138 */ "Expire" OpHelp(""), - /* 139 */ "TableLock" OpHelp("iDb=P1 root=P2 write=P3"), - /* 140 */ "VBegin" OpHelp(""), - /* 141 */ "VCreate" OpHelp(""), - /* 142 */ "VDestroy" OpHelp(""), + /* 134 */ "MemMax" OpHelp("r[P1]=max(r[P1],r[P2])"), + /* 135 */ "IfPos" OpHelp("if r[P1]>0 goto P2"), + /* 136 */ "IfNeg" OpHelp("r[P1]+=P3, if r[P1]<0 goto P2"), + /* 137 */ "IfZero" OpHelp("r[P1]+=P3, if r[P1]==0 goto P2"), + /* 138 */ "AggFinal" OpHelp("accum=r[P1] N=P2"), + /* 139 */ "IncrVacuum" OpHelp(""), + /* 140 */ "Expire" OpHelp(""), + /* 141 */ "TableLock" OpHelp("iDb=P1 root=P2 write=P3"), + /* 142 */ "VBegin" OpHelp(""), /* 143 */ "ToText" OpHelp(""), /* 144 */ "ToBlob" OpHelp(""), /* 145 */ "ToNumeric" OpHelp(""), /* 146 */ "ToInt" OpHelp(""), /* 147 */ "ToReal" OpHelp(""), - /* 148 */ "VOpen" OpHelp(""), - /* 149 */ "VColumn" OpHelp("r[P3]=vcolumn(P2)"), - /* 150 */ "VNext" OpHelp(""), - /* 151 */ "VRename" OpHelp(""), - /* 152 */ "Pagecount" OpHelp(""), - /* 153 */ "MaxPgcnt" OpHelp(""), - /* 154 */ "Init" OpHelp("Start at P2"), - /* 155 */ "Noop" OpHelp(""), - /* 156 */ "Explain" OpHelp(""), + /* 148 */ "VCreate" OpHelp(""), + /* 149 */ "VDestroy" OpHelp(""), + /* 150 */ "VOpen" OpHelp(""), + /* 151 */ "VColumn" OpHelp("r[P3]=vcolumn(P2)"), + /* 152 */ "VNext" OpHelp(""), + /* 153 */ "VRename" OpHelp(""), + /* 154 */ "Pagecount" OpHelp(""), + /* 155 */ "MaxPgcnt" OpHelp(""), + /* 156 */ "Init" OpHelp("Start at P2"), + /* 157 */ "Noop" OpHelp(""), + /* 158 */ "Explain" OpHelp(""), }; return azName[i]; } @@ -23575,11 +24157,10 @@ SQLITE_PRIVATE const char *sqlite3OpcodeName(int i){ #include #include #if !defined(SQLITE_OMIT_WAL) || SQLITE_MAX_MMAP_SIZE>0 -#include +# include #endif - -#if SQLITE_ENABLE_LOCKING_STYLE +#if SQLITE_ENABLE_LOCKING_STYLE || OS_VXWORKS # include # if OS_VXWORKS # include @@ -24007,11 +24588,16 @@ static int posixOpen(const char *zFile, int flags, int mode){ ** we are not running as root. */ static int posixFchown(int fd, uid_t uid, gid_t gid){ +#if OS_VXWORKS + return 0; +#else return geteuid() ? 0 : fchown(fd,uid,gid); +#endif } /* Forward reference */ static int openDirectory(const char*, int*); +static int unixGetpagesize(void); /* ** Many system calls are accessed through pointer-to-functions so that @@ -24062,7 +24648,7 @@ static struct unix_syscall { { "read", (sqlite3_syscall_ptr)read, 0 }, #define osRead ((ssize_t(*)(int,void*,size_t))aSyscall[8].pCurrent) -#if defined(USE_PREAD) || SQLITE_ENABLE_LOCKING_STYLE +#if defined(USE_PREAD) || (SQLITE_ENABLE_LOCKING_STYLE && !OS_VXWORKS) { "pread", (sqlite3_syscall_ptr)pread, 0 }, #else { "pread", (sqlite3_syscall_ptr)0, 0 }, @@ -24079,7 +24665,7 @@ static struct unix_syscall { { "write", (sqlite3_syscall_ptr)write, 0 }, #define osWrite ((ssize_t(*)(int,const void*,size_t))aSyscall[11].pCurrent) -#if defined(USE_PREAD) || SQLITE_ENABLE_LOCKING_STYLE +#if defined(USE_PREAD) || (SQLITE_ENABLE_LOCKING_STYLE && !OS_VXWORKS) { "pwrite", (sqlite3_syscall_ptr)pwrite, 0 }, #else { "pwrite", (sqlite3_syscall_ptr)0, 0 }, @@ -24133,6 +24719,9 @@ static struct unix_syscall { { "mremap", (sqlite3_syscall_ptr)0, 0 }, #endif #define osMremap ((void*(*)(void*,size_t,size_t,int,...))aSyscall[23].pCurrent) + { "getpagesize", (sqlite3_syscall_ptr)unixGetpagesize, 0 }, +#define osGetpagesize ((int(*)(void))aSyscall[24].pCurrent) + #endif }; /* End of the overrideable system calls */ @@ -24446,16 +25035,6 @@ static int sqliteErrorFromPosixError(int posixError, int sqliteIOErr) { case EPERM: return SQLITE_PERM; - /* EDEADLK is only possible if a call to fcntl(F_SETLKW) is made. And - ** this module never makes such a call. And the code in SQLite itself - ** asserts that SQLITE_IOERR_BLOCKED is never returned. For these reasons - ** this case is also commented out. If the system does set errno to EDEADLK, - ** the default SQLITE_IOERR_XXX code will be returned. */ -#if 0 - case EDEADLK: - return SQLITE_IOERR_BLOCKED; -#endif - #if EOPNOTSUPP!=ENOTSUP case EOPNOTSUPP: /* something went terribly awry, unless during file system support @@ -24988,9 +25567,13 @@ static int findInodeInfo( ** Return TRUE if pFile has been renamed or unlinked since it was first opened. */ static int fileHasMoved(unixFile *pFile){ +#if OS_VXWORKS + return pFile->pInode!=0 && pFile->pId!=pFile->pInode->fileId.pId; +#else struct stat buf; return pFile->pInode!=0 && - (osStat(pFile->zPath, &buf)!=0 || buf.st_ino!=pFile->pInode->fileId.ino); + (osStat(pFile->zPath, &buf)!=0 || buf.st_ino!=pFile->pInode->fileId.ino); +#endif } @@ -25603,6 +26186,13 @@ static int closeUnixFile(sqlite3_file *id){ vxworksReleaseFileId(pFile->pId); pFile->pId = 0; } +#endif +#ifdef SQLITE_UNLINK_AFTER_CLOSE + if( pFile->ctrlFlags & UNIXFILE_DELETE ){ + osUnlink(pFile->zPath); + sqlite3_free(*(char**)&pFile->zPath); + pFile->zPath = 0; + } #endif OSTRACE(("CLOSE %-3d\n", pFile->h)); OpenCounter(-1); @@ -26126,7 +26716,6 @@ static int semCheckReservedLock(sqlite3_file *id, int *pResOut) { /* Otherwise see if some other process holds it. */ if( !reserved ){ sem_t *pSem = pFile->pInode->pSem; - struct stat statBuf; if( sem_trywait(pSem)==-1 ){ int tErrno = errno; @@ -26179,7 +26768,6 @@ static int semCheckReservedLock(sqlite3_file *id, int *pResOut) { */ static int semLock(sqlite3_file *id, int eFileLock) { unixFile *pFile = (unixFile*)id; - int fd; sem_t *pSem = pFile->pInode->pSem; int rc = SQLITE_OK; @@ -27642,8 +28230,25 @@ static int unixDeviceCharacteristics(sqlite3_file *id){ return rc; } -#ifndef SQLITE_OMIT_WAL +#if !defined(SQLITE_OMIT_WAL) || SQLITE_MAX_MMAP_SIZE>0 +/* +** Return the system page size. +** +** This function should not be called directly by other code in this file. +** Instead, it should be called via macro osGetpagesize(). +*/ +static int unixGetpagesize(void){ +#if defined(_BSD_SOURCE) + return getpagesize(); +#else + return (int)sysconf(_SC_PAGESIZE); +#endif +} + +#endif /* !defined(SQLITE_OMIT_WAL) || SQLITE_MAX_MMAP_SIZE>0 */ + +#ifndef SQLITE_OMIT_WAL /* ** Object used to represent an shared memory buffer. @@ -27794,6 +28399,22 @@ static int unixShmSystemLock( return rc; } +/* +** Return the minimum number of 32KB shm regions that should be mapped at +** a time, assuming that each mapping must be an integer multiple of the +** current system page-size. +** +** Usually, this is 1. The exception seems to be systems that are configured +** to use 64KB pages - in this case each mapping must cover at least two +** shm regions. +*/ +static int unixShmRegionPerMap(void){ + int shmsz = 32*1024; /* SHM region size */ + int pgsz = osGetpagesize(); /* System page size */ + assert( ((pgsz-1)&pgsz)==0 ); /* Page size must be a power of 2 */ + if( pgszpInode->pShmNode; assert( unixMutexHeld() ); if( p && p->nRef==0 ){ + int nShmPerMap = unixShmRegionPerMap(); int i; assert( p->pInode==pFd->pInode ); sqlite3_mutex_free(p->mutex); - for(i=0; inRegion; i++){ + for(i=0; inRegion; i+=nShmPerMap){ if( p->h>=0 ){ osMunmap(p->apRegion[i], p->szRegion); }else{ @@ -28015,6 +28637,8 @@ static int unixShmMap( unixShm *p; unixShmNode *pShmNode; int rc = SQLITE_OK; + int nShmPerMap = unixShmRegionPerMap(); + int nReqRegion; /* If the shared-memory file has not yet been opened, open it now. */ if( pDbFd->pShm==0 ){ @@ -28030,9 +28654,12 @@ static int unixShmMap( assert( pShmNode->h>=0 || pDbFd->pInode->bProcessLock==1 ); assert( pShmNode->h<0 || pDbFd->pInode->bProcessLock==0 ); - if( pShmNode->nRegion<=iRegion ){ + /* Minimum number of regions required to be mapped. */ + nReqRegion = ((iRegion+nShmPerMap) / nShmPerMap) * nShmPerMap; + + if( pShmNode->nRegionszRegion = szRegion; @@ -28081,17 +28708,19 @@ static int unixShmMap( /* Map the requested memory region into this processes address space. */ apNew = (char **)sqlite3_realloc( - pShmNode->apRegion, (iRegion+1)*sizeof(char *) + pShmNode->apRegion, nReqRegion*sizeof(char *) ); if( !apNew ){ rc = SQLITE_IOERR_NOMEM; goto shmpage_out; } pShmNode->apRegion = apNew; - while(pShmNode->nRegion<=iRegion){ + while( pShmNode->nRegionh>=0 ){ - pMem = osMmap(0, szRegion, + pMem = osMmap(0, nMap, pShmNode->isReadonly ? PROT_READ : PROT_READ|PROT_WRITE, MAP_SHARED, pShmNode->h, szRegion*(i64)pShmNode->nRegion ); @@ -28107,8 +28736,11 @@ static int unixShmMap( } memset(pMem, 0, szRegion); } - pShmNode->apRegion[pShmNode->nRegion] = pMem; - pShmNode->nRegion++; + + for(i=0; iapRegion[pShmNode->nRegion+i] = &((char*)pMem)[szRegion*i]; + } + pShmNode->nRegion += nShmPerMap; } } @@ -28322,19 +28954,6 @@ static void unixUnmapfile(unixFile *pFd){ } } -/* -** Return the system page size. -*/ -static int unixGetPagesize(void){ -#if HAVE_MREMAP - return 512; -#elif defined(_BSD_SOURCE) - return getpagesize(); -#else - return (int)sysconf(_SC_PAGESIZE); -#endif -} - /* ** Attempt to set the size of the memory mapping maintained by file ** descriptor pFd to nNew bytes. Any existing mapping is discarded. @@ -28371,8 +28990,12 @@ static void unixRemapfile( if( (pFd->ctrlFlags & UNIXFILE_RDONLY)==0 ) flags |= PROT_WRITE; if( pOrig ){ - const int szSyspage = unixGetPagesize(); +#if HAVE_MREMAP + i64 nReuse = pFd->mmapSize; +#else + const int szSyspage = osGetpagesize(); i64 nReuse = (pFd->mmapSize & ~(szSyspage-1)); +#endif u8 *pReq = &pOrig[nReuse]; /* Unmap any pages of the existing mapping that cannot be reused. */ @@ -29425,6 +30048,12 @@ static int unixOpen( if( isDelete ){ #if OS_VXWORKS zPath = zName; +#elif defined(SQLITE_UNLINK_AFTER_CLOSE) + zPath = sqlite3_mprintf("%s", zName); + if( zPath==0 ){ + robust_close(p, fd, __LINE__); + return SQLITE_NOMEM; + } #else osUnlink(zName); #endif @@ -29525,7 +30154,11 @@ static int unixDelete( UNUSED_PARAMETER(NotUsed); SimulateIOError(return SQLITE_IOERR_DELETE); if( osUnlink(zPath)==(-1) ){ - if( errno==ENOENT ){ + if( errno==ENOENT +#if OS_VXWORKS + || errno==0x380003 +#endif + ){ rc = SQLITE_IOERR_DELETE_NOENT; }else{ rc = unixLogError(SQLITE_IOERR_DELETE, "unlink", zPath); @@ -31118,7 +31751,7 @@ SQLITE_API int sqlite3_os_init(void){ /* Double-check that the aSyscall[] array has been constructed ** correctly. See ticket [bb3a86e890c8e96ab] */ - assert( ArraySize(aSyscall)==24 ); + assert( ArraySize(aSyscall)==25 ); /* Register all VFSes defined in the aVfs[] array */ for(i=0; i<(sizeof(aVfs)/sizeof(sqlite3_vfs)); i++){ @@ -31158,11 +31791,6 @@ SQLITE_API int sqlite3_os_end(void){ */ #if SQLITE_OS_WIN /* This file is used for Windows only */ -#ifdef __CYGWIN__ -# include -# include /* amalgamator: keep */ -#endif - /* ** Include code that is common to all os_*.c files */ @@ -31376,6 +32004,10 @@ SQLITE_API int sqlite3_open_file_count = 0; /************** End of os_common.h *******************************************/ /************** Continuing where we left off in os_win.c *********************/ +/* +** Include the header file for the Windows VFS. +*/ + /* ** Compiling and using WAL mode requires several APIs that are only ** available in Windows platforms based on the NT kernel. @@ -31423,18 +32055,14 @@ SQLITE_API int sqlite3_open_file_count = 0; #endif /* -** Check if the GetVersionEx[AW] functions should be considered deprecated -** and avoid using them in that case. It should be noted here that if the -** value of the SQLITE_WIN32_GETVERSIONEX pre-processor macro is zero -** (whether via this block or via being manually specified), that implies -** the underlying operating system will always be based on the Windows NT -** Kernel. +** Check to see if the GetVersionEx[AW] functions are deprecated on the +** target system. GetVersionEx was first deprecated in Win8.1. */ #ifndef SQLITE_WIN32_GETVERSIONEX # if defined(NTDDI_VERSION) && NTDDI_VERSION >= NTDDI_WINBLUE -# define SQLITE_WIN32_GETVERSIONEX 0 +# define SQLITE_WIN32_GETVERSIONEX 0 /* GetVersionEx() is deprecated */ # else -# define SQLITE_WIN32_GETVERSIONEX 1 +# define SQLITE_WIN32_GETVERSIONEX 1 /* GetVersionEx() is current */ # endif #endif @@ -31506,7 +32134,7 @@ SQLITE_API int sqlite3_open_file_count = 0; ** [sometimes] not used by the code (e.g. via conditional compilation). */ #ifndef UNUSED_VARIABLE_VALUE -# define UNUSED_VARIABLE_VALUE(x) (void)(x) +# define UNUSED_VARIABLE_VALUE(x) (void)(x) #endif /* @@ -31555,7 +32183,7 @@ WINBASEAPI BOOL WINAPI UnmapViewOfFile(LPCVOID); ** Some Microsoft compilers lack this definition. */ #ifndef INVALID_FILE_ATTRIBUTES -# define INVALID_FILE_ATTRIBUTES ((DWORD)-1) +# define INVALID_FILE_ATTRIBUTES ((DWORD)-1) #endif #ifndef FILE_FLAG_MASK @@ -31605,7 +32233,7 @@ struct winFile { int szChunk; /* Chunk size configured by FCNTL_CHUNK_SIZE */ #if SQLITE_OS_WINCE LPWSTR zDeleteOnClose; /* Name of file to delete when closing */ - HANDLE hMutex; /* Mutex used to control access to shared lock */ + HANDLE hMutex; /* Mutex used to control access to shared lock */ HANDLE hShared; /* Shared memory segment used for locking */ winceLock local; /* Locks obtained by this instance of winFile */ winceLock *shared; /* Global shared lock memory for the file */ @@ -31765,10 +32393,9 @@ SQLITE_PRIVATE const sqlite3_mem_methods *sqlite3MemGetWin32(void); ** can manually set this value to 1 to emulate Win98 behavior. */ #ifdef SQLITE_TEST -SQLITE_API int sqlite3_os_type = 0; -#elif !SQLITE_OS_WINCE && !SQLITE_OS_WINRT && \ - defined(SQLITE_WIN32_HAS_ANSI) && defined(SQLITE_WIN32_HAS_WIDE) -static int sqlite3_os_type = 0; +SQLITE_API LONG volatile sqlite3_os_type = 0; +#else +static LONG volatile sqlite3_os_type = 0; #endif #ifndef SYSCALL @@ -32399,6 +33026,22 @@ static struct win_syscall { #define osCreateFileMappingFromApp ((HANDLE(WINAPI*)(HANDLE, \ LPSECURITY_ATTRIBUTES,ULONG,ULONG64,LPCWSTR))aSyscall[75].pCurrent) +/* +** NOTE: On some sub-platforms, the InterlockedCompareExchange "function" +** is really just a macro that uses a compiler intrinsic (e.g. x64). +** So do not try to make this is into a redefinable interface. +*/ +#if defined(InterlockedCompareExchange) + { "InterlockedCompareExchange", (SYSCALL)0, 0 }, + +#define osInterlockedCompareExchange InterlockedCompareExchange +#else + { "InterlockedCompareExchange", (SYSCALL)InterlockedCompareExchange, 0 }, + +#define osInterlockedCompareExchange ((LONG(WINAPI*)(LONG volatile*, \ + LONG,LONG))aSyscall[76].pCurrent) +#endif /* defined(InterlockedCompareExchange) */ + }; /* End of the overrideable system calls */ /* @@ -32649,22 +33292,38 @@ SQLITE_API void sqlite3_win32_sleep(DWORD milliseconds){ #elif !defined(SQLITE_WIN32_HAS_WIDE) # define osIsNT() (0) #else - static int osIsNT(void){ - if( sqlite3_os_type==0 ){ -#if defined(NTDDI_VERSION) && NTDDI_VERSION >= NTDDI_WIN8 - OSVERSIONINFOW sInfo; - sInfo.dwOSVersionInfoSize = sizeof(sInfo); - osGetVersionExW(&sInfo); -#else - OSVERSIONINFOA sInfo; - sInfo.dwOSVersionInfoSize = sizeof(sInfo); - osGetVersionExA(&sInfo); +# define osIsNT() ((sqlite3_os_type==2) || sqlite3_win32_is_nt()) +#endif + +/* +** This function determines if the machine is running a version of Windows +** based on the NT kernel. +*/ +SQLITE_API int sqlite3_win32_is_nt(void){ +#if defined(SQLITE_WIN32_GETVERSIONEX) && SQLITE_WIN32_GETVERSIONEX + if( osInterlockedCompareExchange(&sqlite3_os_type, 0, 0)==0 ){ +#if !SQLITE_OS_WINRT && defined(SQLITE_WIN32_HAS_WIDE) && \ + defined(NTDDI_VERSION) && NTDDI_VERSION >= NTDDI_WIN8 + OSVERSIONINFOW sInfo; + sInfo.dwOSVersionInfoSize = sizeof(sInfo); + osGetVersionExW(&sInfo); + osInterlockedCompareExchange(&sqlite3_os_type, + (sInfo.dwPlatformId == VER_PLATFORM_WIN32_NT) ? 2 : 1, 0); +#elif defined(SQLITE_WIN32_HAS_ANSI) + OSVERSIONINFOA sInfo; + sInfo.dwOSVersionInfoSize = sizeof(sInfo); + osGetVersionExA(&sInfo); + osInterlockedCompareExchange(&sqlite3_os_type, + (sInfo.dwPlatformId == VER_PLATFORM_WIN32_NT) ? 2 : 1, 0); #endif - sqlite3_os_type = sInfo.dwPlatformId==VER_PLATFORM_WIN32_NT ? 2 : 1; - } - return sqlite3_os_type==2; } + return osInterlockedCompareExchange(&sqlite3_os_type, 2, 2)==2; +#elif SQLITE_TEST + return osInterlockedCompareExchange(&sqlite3_os_type, 2, 2)==2; +#else + return 1; #endif +} #ifdef SQLITE_WIN32_MALLOC /* @@ -32872,7 +33531,7 @@ SQLITE_PRIVATE void sqlite3MemSetDefault(void){ #endif /* SQLITE_WIN32_MALLOC */ /* -** Convert a UTF-8 string to Microsoft Unicode (UTF-16?). +** Convert a UTF-8 string to Microsoft Unicode (UTF-16?). ** ** Space to hold the returned string is obtained from malloc. */ @@ -32925,7 +33584,7 @@ static char *winUnicodeToUtf8(LPCWSTR zWideFilename){ /* ** Convert an ANSI string to Microsoft Unicode, based on the ** current codepage settings for file apis. -** +** ** Space to hold the returned string is obtained ** from sqlite3_malloc. */ @@ -32999,7 +33658,7 @@ SQLITE_API char *sqlite3_win32_mbcs_to_utf8(const char *zFilename){ } /* -** Convert UTF-8 to multibyte character string. Space to hold the +** Convert UTF-8 to multibyte character string. Space to hold the ** returned string is obtained from sqlite3_malloc(). */ SQLITE_API char *sqlite3_win32_utf8_to_mbcs(const char *zFilename){ @@ -33139,11 +33798,11 @@ static int winGetLastErrorMsg(DWORD lastErrno, int nBuf, char *zBuf){ ** ** This routine is invoked after an error occurs in an OS function. ** It logs a message using sqlite3_log() containing the current value of -** error code and, if possible, the human-readable equivalent from +** error code and, if possible, the human-readable equivalent from ** FormatMessage. ** ** The first argument passed to the macro should be the error code that -** will be returned to SQLite (e.g. SQLITE_IOERR_DELETE, SQLITE_CANTOPEN). +** will be returned to SQLite (e.g. SQLITE_IOERR_DELETE, SQLITE_CANTOPEN). ** The two subsequent arguments should be the name of the OS function that ** failed and the associated file-system path, if any. */ @@ -33174,7 +33833,7 @@ static int winLogErrorAtLine( /* ** The number of times that a ReadFile(), WriteFile(), and DeleteFile() -** will be retried following a locking error - probably caused by +** will be retried following a locking error - probably caused by ** antivirus software. Also the initial delay before the first retry. ** The delay increases linearly with each retry. */ @@ -33187,6 +33846,32 @@ static int winLogErrorAtLine( static int winIoerrRetry = SQLITE_WIN32_IOERR_RETRY; static int winIoerrRetryDelay = SQLITE_WIN32_IOERR_RETRY_DELAY; +/* +** The "winIoerrCanRetry1" macro is used to determine if a particular I/O +** error code obtained via GetLastError() is eligible to be retried. It +** must accept the error code DWORD as its only argument and should return +** non-zero if the error code is transient in nature and the operation +** responsible for generating the original error might succeed upon being +** retried. The argument to this macro should be a variable. +** +** Additionally, a macro named "winIoerrCanRetry2" may be defined. If it +** is defined, it will be consulted only when the macro "winIoerrCanRetry1" +** returns zero. The "winIoerrCanRetry2" macro is completely optional and +** may be used to include additional error codes in the set that should +** result in the failing I/O operation being retried by the caller. If +** defined, the "winIoerrCanRetry2" macro must exhibit external semantics +** identical to those of the "winIoerrCanRetry1" macro. +*/ +#if !defined(winIoerrCanRetry1) +#define winIoerrCanRetry1(a) (((a)==ERROR_ACCESS_DENIED) || \ + ((a)==ERROR_SHARING_VIOLATION) || \ + ((a)==ERROR_LOCK_VIOLATION) || \ + ((a)==ERROR_DEV_NOT_EXIST) || \ + ((a)==ERROR_NETNAME_DELETED) || \ + ((a)==ERROR_SEM_TIMEOUT) || \ + ((a)==ERROR_NETWORK_UNREACHABLE)) +#endif + /* ** If a ReadFile() or WriteFile() error occurs, invoke this routine ** to see if it should be retried. Return TRUE to retry. Return FALSE @@ -33200,13 +33885,18 @@ static int winRetryIoerr(int *pnRetry, DWORD *pError){ } return 0; } - if( e==ERROR_ACCESS_DENIED || - e==ERROR_LOCK_VIOLATION || - e==ERROR_SHARING_VIOLATION ){ + if( winIoerrCanRetry1(e) ){ sqlite3_win32_sleep(winIoerrRetryDelay*(1+*pnRetry)); ++*pnRetry; return 1; } +#if defined(winIoerrCanRetry2) + else if( winIoerrCanRetry2(e) ){ + sqlite3_win32_sleep(winIoerrRetryDelay*(1+*pnRetry)); + ++*pnRetry; + return 1; + } +#endif if( pError ){ *pError = e; } @@ -33218,7 +33908,7 @@ static int winRetryIoerr(int *pnRetry, DWORD *pError){ */ static void winLogIoerr(int nRetry){ if( nRetry ){ - sqlite3_log(SQLITE_IOERR, + sqlite3_log(SQLITE_IOERR, "delayed %dms for lock/sharing conflict", winIoerrRetryDelay*nRetry*(nRetry+1)/2 ); @@ -33312,17 +34002,17 @@ static int winceCreateLock(const char *zFilename, winFile *pFile){ /* Acquire the mutex before continuing */ winceMutexAcquire(pFile->hMutex); - - /* Since the names of named mutexes, semaphores, file mappings etc are + + /* Since the names of named mutexes, semaphores, file mappings etc are ** case-sensitive, take advantage of that by uppercasing the mutex name ** and using that as the shared filemapping name. */ osCharUpperW(zName); pFile->hShared = osCreateFileMappingW(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, sizeof(winceLock), - zName); + zName); - /* Set a flag that indicates we're the first to create the memory so it + /* Set a flag that indicates we're the first to create the memory so it ** must be zero-initialized */ lastErrno = osGetLastError(); if (lastErrno == ERROR_ALREADY_EXISTS){ @@ -33333,7 +34023,7 @@ static int winceCreateLock(const char *zFilename, winFile *pFile){ /* If we succeeded in making the shared memory handle, map it. */ if( pFile->hShared ){ - pFile->shared = (winceLock*)osMapViewOfFile(pFile->hShared, + pFile->shared = (winceLock*)osMapViewOfFile(pFile->hShared, FILE_MAP_READ|FILE_MAP_WRITE, 0, 0, sizeof(winceLock)); /* If mapping failed, close the shared memory handle and erase it */ if( !pFile->shared ){ @@ -33359,7 +34049,7 @@ static int winceCreateLock(const char *zFilename, winFile *pFile){ pFile->hMutex = NULL; return SQLITE_IOERR; } - + /* Initialize the shared memory if we're supposed to */ if( bInit ){ memset(pFile->shared, 0, sizeof(winceLock)); @@ -33397,13 +34087,13 @@ static void winceDestroyLock(winFile *pFile){ osCloseHandle(pFile->hShared); /* Done with the mutex */ - winceMutexRelease(pFile->hMutex); + winceMutexRelease(pFile->hMutex); osCloseHandle(pFile->hMutex); pFile->hMutex = NULL; } } -/* +/* ** An implementation of the LockFile() API of Windows for CE */ static BOOL winceLockFile( @@ -33614,8 +34304,8 @@ static BOOL winUnlockFile( #endif /* -** Move the current position of the file handle passed as the first -** argument to offset iOffset within the file. If successful, return 0. +** Move the current position of the file handle passed as the first +** argument to offset iOffset within the file. If successful, return 0. ** Otherwise, set pFile->lastErrno and return non-zero. */ static int winSeekFile(winFile *pFile, sqlite3_int64 iOffset){ @@ -33630,11 +34320,11 @@ static int winSeekFile(winFile *pFile, sqlite3_int64 iOffset){ upperBits = (LONG)((iOffset>>32) & 0x7fffffff); lowerBits = (LONG)(iOffset & 0xffffffff); - /* API oddity: If successful, SetFilePointer() returns a dword + /* API oddity: If successful, SetFilePointer() returns a dword ** containing the lower 32-bits of the new file-offset. Or, if it fails, - ** it returns INVALID_SET_FILE_POINTER. However according to MSDN, - ** INVALID_SET_FILE_POINTER may also be a valid new offset. So to determine - ** whether an error has actually occurred, it is also necessary to call + ** it returns INVALID_SET_FILE_POINTER. However according to MSDN, + ** INVALID_SET_FILE_POINTER may also be a valid new offset. So to determine + ** whether an error has actually occurred, it is also necessary to call ** GetLastError(). */ dwRet = osSetFilePointer(pFile->h, lowerBits, &upperBits, FILE_BEGIN); @@ -33717,7 +34407,7 @@ static int winClose(sqlite3_file *id){ int cnt = 0; while( osDeleteFileW(pFile->zDeleteOnClose)==0 - && osGetFileAttributesW(pFile->zDeleteOnClose)!=0xffffffff + && osGetFileAttributesW(pFile->zDeleteOnClose)!=0xffffffff && cnt++ < WINCE_DELETION_ATTEMPTS ){ sqlite3_win32_sleep(100); /* Wait a little before trying again */ @@ -34145,7 +34835,7 @@ static int winGetReadLock(winFile *pFile){ pFile->lastErrno = osGetLastError(); /* No need to log a failure to lock */ } - OSTRACE(("READ-LOCK file=%p, rc=%s\n", pFile->h, sqlite3ErrName(res))); + OSTRACE(("READ-LOCK file=%p, result=%d\n", pFile->h, res)); return res; } @@ -34169,7 +34859,7 @@ static int winUnlockReadLock(winFile *pFile){ winLogError(SQLITE_IOERR_UNLOCK, pFile->lastErrno, "winUnlockReadLock", pFile->zPath); } - OSTRACE(("READ-UNLOCK file=%p, rc=%s\n", pFile->h, sqlite3ErrName(res))); + OSTRACE(("READ-UNLOCK file=%p, result=%d\n", pFile->h, res)); return res; } @@ -34244,8 +34934,16 @@ static int winLock(sqlite3_file *id, int locktype){ ** If you are using this code as a model for alternative VFSes, do not ** copy this retry logic. It is a hack intended for Windows only. */ - OSTRACE(("LOCK-PENDING-FAIL file=%p, count=%d, rc=%s\n", - pFile->h, cnt, sqlite3ErrName(res))); + lastErrno = osGetLastError(); + OSTRACE(("LOCK-PENDING-FAIL file=%p, count=%d, result=%d\n", + pFile->h, cnt, res)); + if( lastErrno==ERROR_INVALID_HANDLE ){ + pFile->lastErrno = lastErrno; + rc = SQLITE_IOERR_LOCK; + OSTRACE(("LOCK-FAIL file=%p, count=%d, rc=%s\n", + pFile->h, cnt, sqlite3ErrName(rc))); + return rc; + } if( cnt ) sqlite3_win32_sleep(1); } gotPendingLock = res; @@ -34330,7 +35028,7 @@ static int winLock(sqlite3_file *id, int locktype){ ** non-zero, otherwise zero. */ static int winCheckReservedLock(sqlite3_file *id, int *pResOut){ - int rc; + int res; winFile *pFile = (winFile*)id; SimulateIOError( return SQLITE_IOERR_CHECKRESERVEDLOCK; ); @@ -34338,17 +35036,17 @@ static int winCheckReservedLock(sqlite3_file *id, int *pResOut){ assert( id!=0 ); if( pFile->locktype>=RESERVED_LOCK ){ - rc = 1; - OSTRACE(("TEST-WR-LOCK file=%p, rc=%d (local)\n", pFile->h, rc)); + res = 1; + OSTRACE(("TEST-WR-LOCK file=%p, result=%d (local)\n", pFile->h, res)); }else{ - rc = winLockFile(&pFile->h, SQLITE_LOCKFILEEX_FLAGS,RESERVED_BYTE, 0, 1, 0); - if( rc ){ + res = winLockFile(&pFile->h, SQLITE_LOCKFILEEX_FLAGS,RESERVED_BYTE, 0, 1, 0); + if( res ){ winUnlockFile(&pFile->h, RESERVED_BYTE, 0, 1, 0); } - rc = !rc; - OSTRACE(("TEST-WR-LOCK file=%p, rc=%d (remote)\n", pFile->h, rc)); + res = !res; + OSTRACE(("TEST-WR-LOCK file=%p, result=%d (remote)\n", pFile->h, res)); } - *pResOut = rc; + *pResOut = res; OSTRACE(("TEST-WR-LOCK file=%p, pResOut=%p, *pResOut=%d, rc=SQLITE_OK\n", pFile->h, pResOut, *pResOut)); return SQLITE_OK; @@ -34489,6 +35187,17 @@ static int winFileControl(sqlite3_file *id, int op, void *pArg){ OSTRACE(("FCNTL file=%p, rc=SQLITE_OK\n", pFile->h)); return SQLITE_OK; } +#ifdef SQLITE_TEST + case SQLITE_FCNTL_WIN32_SET_HANDLE: { + LPHANDLE phFile = (LPHANDLE)pArg; + HANDLE hOldFile = pFile->h; + pFile->h = *phFile; + *phFile = hOldFile; + OSTRACE(("FCNTL oldFile=%p, newFile=%p, rc=SQLITE_OK\n", + hOldFile, pFile->h)); + return SQLITE_OK; + } +#endif case SQLITE_FCNTL_TEMPFILENAME: { char *zTFile = 0; int rc = winGetTempname(pFile->pVfs, &zTFile); @@ -34546,7 +35255,7 @@ static int winDeviceCharacteristics(sqlite3_file *id){ ((p->ctrlFlags & WINFILE_PSOW)?SQLITE_IOCAP_POWERSAFE_OVERWRITE:0); } -/* +/* ** Windows will only let you create file view mappings ** on allocation size granularity boundaries. ** During sqlite3_os_init() we do a GetSystemInfo() @@ -34558,11 +35267,11 @@ static SYSTEM_INFO winSysInfo; /* ** Helper functions to obtain and relinquish the global mutex. The -** global mutex is used to protect the winLockInfo objects used by +** global mutex is used to protect the winLockInfo objects used by ** this file, all of which may be shared by multiple threads. ** -** Function winShmMutexHeld() is used to assert() that the global mutex -** is held when required. This function is only used as part of assert() +** Function winShmMutexHeld() is used to assert() that the global mutex +** is held when required. This function is only used as part of assert() ** statements. e.g. ** ** winShmEnterMutex() @@ -34592,10 +35301,10 @@ static int winShmMutexHeld(void) { ** this object or while reading or writing the following fields: ** ** nRef -** pNext +** pNext ** ** The following fields are read-only after the object is created: -** +** ** fid ** zFilename ** @@ -34691,7 +35400,7 @@ static int winShmSystemLock( if( lockType == _SHM_WRLCK ) dwFlags |= LOCKFILE_EXCLUSIVE_LOCK; rc = winLockFile(&pFile->hFile.h, dwFlags, ofst, 0, nByte, 0); } - + if( rc!= 0 ){ rc = SQLITE_OK; }else{ @@ -34787,7 +35496,7 @@ static int winOpenSharedMemory(winFile *pDbFd){ } pNew->zFilename = (char*)&pNew[1]; sqlite3_snprintf(nName+15, pNew->zFilename, "%s-shm", pDbFd->zPath); - sqlite3FileSuffix3(pDbFd->zPath, pNew->zFilename); + sqlite3FileSuffix3(pDbFd->zPath, pNew->zFilename); /* Look to see if there is an existing winShmNode that can be used. ** If no matching winShmNode currently exists, create a new one. @@ -34824,7 +35533,7 @@ static int winOpenSharedMemory(winFile *pDbFd){ } /* Check to see if another process is holding the dead-man switch. - ** If not, truncate the file to zero length. + ** If not, truncate the file to zero length. */ if( winShmSystemLock(pShmNode, _SHM_WRLCK, WIN_SHM_DMS, 1)==SQLITE_OK ){ rc = winTruncate((sqlite3_file *)&pShmNode->hFile, 0); @@ -34853,7 +35562,7 @@ static int winOpenSharedMemory(winFile *pDbFd){ ** the cover of the winShmEnterMutex() mutex and the pointer from the ** new (struct winShm) object to the pShmNode has been set. All that is ** left to do is to link the new object into the linked list starting - ** at pShmNode->pFirst. This must be done while holding the pShmNode->mutex + ** at pShmNode->pFirst. This must be done while holding the pShmNode->mutex ** mutex. */ sqlite3_mutex_enter(pShmNode->mutex); @@ -34873,7 +35582,7 @@ shm_open_err: } /* -** Close a connection to shared-memory. Delete the underlying +** Close a connection to shared-memory. Delete the underlying ** storage if deleteFlag is true. */ static int winShmUnmap( @@ -34962,7 +35671,7 @@ static int winShmLock( if( rc==SQLITE_OK ){ p->exclMask &= ~mask; p->sharedMask &= ~mask; - } + } }else if( flags & SQLITE_SHM_SHARED ){ u16 allShared = 0; /* Union of locks held by connections other than "p" */ @@ -35001,7 +35710,7 @@ static int winShmLock( break; } } - + /* Get the exclusive locks at the system level. Then if successful ** also mark the local connection as being locked. */ @@ -35021,7 +35730,7 @@ static int winShmLock( } /* -** Implement a memory barrier or memory fence on shared memory. +** Implement a memory barrier or memory fence on shared memory. ** ** All loads and stores begun before the barrier must complete before ** any load or store begun after the barrier. @@ -35036,22 +35745,22 @@ static void winShmBarrier( } /* -** This function is called to obtain a pointer to region iRegion of the -** shared-memory associated with the database file fd. Shared-memory regions -** are numbered starting from zero. Each shared-memory region is szRegion +** This function is called to obtain a pointer to region iRegion of the +** shared-memory associated with the database file fd. Shared-memory regions +** are numbered starting from zero. Each shared-memory region is szRegion ** bytes in size. ** ** If an error occurs, an error code is returned and *pp is set to NULL. ** ** Otherwise, if the isWrite parameter is 0 and the requested shared-memory ** region has not been allocated (by any client, including one running in a -** separate process), then *pp is set to NULL and SQLITE_OK returned. If -** isWrite is non-zero and the requested shared-memory region has not yet +** separate process), then *pp is set to NULL and SQLITE_OK returned. If +** isWrite is non-zero and the requested shared-memory region has not yet ** been allocated, it is allocated by this function. ** ** If the shared-memory region has already been allocated or is allocated by -** this call as described above, then it is mapped into this processes -** address space (if it is not already), *pp is set to point to the mapped +** this call as described above, then it is mapped into this processes +** address space (if it is not already), *pp is set to point to the mapped ** memory and SQLITE_OK returned. */ static int winShmMap( @@ -35123,17 +35832,17 @@ static int winShmMap( while( pShmNode->nRegion<=iRegion ){ HANDLE hMap = NULL; /* file-mapping handle */ void *pMap = 0; /* Mapped memory region */ - + #if SQLITE_OS_WINRT hMap = osCreateFileMappingFromApp(pShmNode->hFile.h, NULL, PAGE_READWRITE, nByte, NULL ); #elif defined(SQLITE_WIN32_HAS_WIDE) - hMap = osCreateFileMappingW(pShmNode->hFile.h, + hMap = osCreateFileMappingW(pShmNode->hFile.h, NULL, PAGE_READWRITE, 0, nByte, NULL ); #elif defined(SQLITE_WIN32_HAS_ANSI) - hMap = osCreateFileMappingA(pShmNode->hFile.h, + hMap = osCreateFileMappingA(pShmNode->hFile.h, NULL, PAGE_READWRITE, 0, nByte, NULL ); #endif @@ -35230,14 +35939,14 @@ static int winUnmapfile(winFile *pFile){ /* ** Memory map or remap the file opened by file-descriptor pFd (if the file -** is already mapped, the existing mapping is replaced by the new). Or, if -** there already exists a mapping for this file, and there are still +** is already mapped, the existing mapping is replaced by the new). Or, if +** there already exists a mapping for this file, and there are still ** outstanding xFetch() references to it, this function is a no-op. ** -** If parameter nByte is non-negative, then it is the requested size of -** the mapping to create. Otherwise, if nByte is less than zero, then the +** If parameter nByte is non-negative, then it is the requested size of +** the mapping to create. Otherwise, if nByte is less than zero, then the ** requested size is the size of the file on disk. The actual size of the -** created mapping is either the requested size or the value configured +** created mapping is either the requested size or the value configured ** using SQLITE_FCNTL_MMAP_SIZE, whichever is smaller. ** ** SQLITE_OK is returned if no error occurs (even if the mapping is not @@ -35266,7 +35975,7 @@ static int winMapfile(winFile *pFd, sqlite3_int64 nByte){ nMap = pFd->mmapSizeMax; } nMap &= ~(sqlite3_int64)(winSysInfo.dwPageSize - 1); - + if( nMap==0 && pFd->mmapSize>0 ){ winUnmapfile(pFd); } @@ -35338,7 +36047,7 @@ static int winMapfile(winFile *pFd, sqlite3_int64 nByte){ ** Finally, if an error does occur, return an SQLite error code. The final ** value of *pp is undefined in this case. ** -** If this function does return a pointer, the caller must eventually +** If this function does return a pointer, the caller must eventually ** release the reference by calling winUnfetch(). */ static int winFetch(sqlite3_file *fd, i64 iOff, int nAmt, void **pp){ @@ -35373,20 +36082,20 @@ static int winFetch(sqlite3_file *fd, i64 iOff, int nAmt, void **pp){ } /* -** If the third argument is non-NULL, then this function releases a +** If the third argument is non-NULL, then this function releases a ** reference obtained by an earlier call to winFetch(). The second ** argument passed to this function must be the same as the corresponding -** argument that was passed to the winFetch() invocation. +** argument that was passed to the winFetch() invocation. ** -** Or, if the third argument is NULL, then this function is being called -** to inform the VFS layer that, according to POSIX, any existing mapping +** Or, if the third argument is NULL, then this function is being called +** to inform the VFS layer that, according to POSIX, any existing mapping ** may now be invalid and should be unmapped. */ static int winUnfetch(sqlite3_file *fd, i64 iOff, void *p){ #if SQLITE_MAX_MMAP_SIZE>0 winFile *pFd = (winFile*)fd; /* The underlying database file */ - /* If p==0 (unmap the entire file) then there must be no outstanding + /* If p==0 (unmap the entire file) then there must be no outstanding ** xFetch references. Or, if p!=0 (meaning it is an xFetch reference), ** then there must be at least one outstanding. */ assert( (p==0)==(pFd->nFetchOut==0) ); @@ -35532,7 +36241,7 @@ static int winGetTempname(sqlite3_vfs *pVfs, char **pzBuf){ /* It's odd to simulate an io-error here, but really this is just ** using the io-error infrastructure to test that SQLite handles this - ** function failing. + ** function failing. */ SimulateIOError( return SQLITE_IOERR ); @@ -35714,7 +36423,7 @@ static int winGetTempname(sqlite3_vfs *pVfs, char **pzBuf){ } /* - ** Check that the output buffer is large enough for the temporary file + ** Check that the output buffer is large enough for the temporary file ** name in the following format: ** ** "/etilqs_XXXXXXXXXXXXXXX\0\0" @@ -35817,8 +36526,8 @@ static int winOpen( #ifndef NDEBUG int isOpenJournal = (isCreate && ( - eType==SQLITE_OPEN_MASTER_JOURNAL - || eType==SQLITE_OPEN_MAIN_JOURNAL + eType==SQLITE_OPEN_MASTER_JOURNAL + || eType==SQLITE_OPEN_MAIN_JOURNAL || eType==SQLITE_OPEN_WAL )); #endif @@ -35826,9 +36535,9 @@ static int winOpen( OSTRACE(("OPEN name=%s, pFile=%p, flags=%x, pOutFlags=%p\n", zUtf8Name, id, flags, pOutFlags)); - /* Check the following statements are true: + /* Check the following statements are true: ** - ** (a) Exactly one of the READWRITE and READONLY flags must be set, and + ** (a) Exactly one of the READWRITE and READONLY flags must be set, and ** (b) if CREATE is set, then READWRITE must also be set, and ** (c) if EXCLUSIVE is set, then CREATE must also be set. ** (d) if DELETEONCLOSE is set, then CREATE must also be set. @@ -35838,7 +36547,7 @@ static int winOpen( assert(isExclusive==0 || isCreate); assert(isDelete==0 || isCreate); - /* The main DB, main journal, WAL file and master journal are never + /* The main DB, main journal, WAL file and master journal are never ** automatically deleted. Nor are they ever temporary files. */ assert( (!isDelete && zName) || eType!=SQLITE_OPEN_MAIN_DB ); assert( (!isDelete && zName) || eType!=SQLITE_OPEN_MAIN_JOURNAL ); @@ -35846,9 +36555,9 @@ static int winOpen( assert( (!isDelete && zName) || eType!=SQLITE_OPEN_WAL ); /* Assert that the upper layer has set one of the "file-type" flags. */ - assert( eType==SQLITE_OPEN_MAIN_DB || eType==SQLITE_OPEN_TEMP_DB - || eType==SQLITE_OPEN_MAIN_JOURNAL || eType==SQLITE_OPEN_TEMP_JOURNAL - || eType==SQLITE_OPEN_SUBJOURNAL || eType==SQLITE_OPEN_MASTER_JOURNAL + assert( eType==SQLITE_OPEN_MAIN_DB || eType==SQLITE_OPEN_TEMP_DB + || eType==SQLITE_OPEN_MAIN_JOURNAL || eType==SQLITE_OPEN_TEMP_JOURNAL + || eType==SQLITE_OPEN_SUBJOURNAL || eType==SQLITE_OPEN_MASTER_JOURNAL || eType==SQLITE_OPEN_TRANSIENT_DB || eType==SQLITE_OPEN_WAL ); @@ -35863,8 +36572,8 @@ static int winOpen( } #endif - /* If the second argument to this function is NULL, generate a - ** temporary file name to use + /* If the second argument to this function is NULL, generate a + ** temporary file name to use */ if( !zUtf8Name ){ assert( isDelete && !isOpenJournal ); @@ -35904,8 +36613,8 @@ static int winOpen( dwDesiredAccess = GENERIC_READ; } - /* SQLITE_OPEN_EXCLUSIVE is used to make sure that a new file is - ** created. SQLite doesn't use it to indicate "exclusive access" + /* SQLITE_OPEN_EXCLUSIVE is used to make sure that a new file is + ** created. SQLite doesn't use it to indicate "exclusive access" ** as it is usually understood. */ if( isExclusive ){ @@ -35994,7 +36703,7 @@ static int winOpen( sqlite3_free(zConverted); sqlite3_free(zTmpname); if( isReadWrite && !isExclusive ){ - return winOpen(pVfs, zName, id, + return winOpen(pVfs, zName, id, ((flags|SQLITE_OPEN_READONLY) & ~(SQLITE_OPEN_CREATE|SQLITE_OPEN_READWRITE)), pOutFlags); @@ -36203,14 +36912,14 @@ static int winAccess( WIN32_FILE_ATTRIBUTE_DATA sAttrData; memset(&sAttrData, 0, sizeof(sAttrData)); while( !(rc = osGetFileAttributesExW((LPCWSTR)zConverted, - GetFileExInfoStandard, + GetFileExInfoStandard, &sAttrData)) && winRetryIoerr(&cnt, &lastErrno) ){} if( rc ){ /* For an SQLITE_ACCESS_EXISTS query, treat a zero-length file ** as if it does not exist. */ if( flags==SQLITE_ACCESS_EXISTS - && sAttrData.nFileSizeHigh==0 + && sAttrData.nFileSizeHigh==0 && sAttrData.nFileSizeLow==0 ){ attr = INVALID_FILE_ATTRIBUTES; }else{ @@ -36309,7 +37018,7 @@ static int winFullPathname( int nFull, /* Size of output buffer in bytes */ char *zFull /* Output buffer */ ){ - + #if defined(__CYGWIN__) SimulateIOError( return SQLITE_ERROR ); UNUSED_PARAMETER(nFull); @@ -36622,12 +37331,12 @@ SQLITE_API int sqlite3_current_time = 0; /* Fake system time in seconds since 1 ** epoch of noon in Greenwich on November 24, 4714 B.C according to the ** proleptic Gregorian calendar. ** -** On success, return SQLITE_OK. Return SQLITE_ERROR if the time and date +** On success, return SQLITE_OK. Return SQLITE_ERROR if the time and date ** cannot be found. */ static int winCurrentTimeInt64(sqlite3_vfs *pVfs, sqlite3_int64 *piNow){ - /* FILETIME structure is a 64-bit value representing the number of - 100-nanosecond intervals since January 1, 1601 (= JD 2305813.5). + /* FILETIME structure is a 64-bit value representing the number of + 100-nanosecond intervals since January 1, 1601 (= JD 2305813.5). */ FILETIME ft; static const sqlite3_int64 winFiletimeEpoch = 23058135*(sqlite3_int64)8640000; @@ -36635,7 +37344,7 @@ static int winCurrentTimeInt64(sqlite3_vfs *pVfs, sqlite3_int64 *piNow){ static const sqlite3_int64 unixEpoch = 24405875*(sqlite3_int64)8640000; #endif /* 2^32 - to avoid use of LL and warnings in gcc */ - static const sqlite3_int64 max32BitValue = + static const sqlite3_int64 max32BitValue = (sqlite3_int64)2000000000 + (sqlite3_int64)2000000000 + (sqlite3_int64)294967296; @@ -36651,7 +37360,7 @@ static int winCurrentTimeInt64(sqlite3_vfs *pVfs, sqlite3_int64 *piNow){ #endif *piNow = winFiletimeEpoch + - ((((sqlite3_int64)ft.dwHighDateTime)*max32BitValue) + + ((((sqlite3_int64)ft.dwHighDateTime)*max32BitValue) + (sqlite3_int64)ft.dwLowDateTime)/(sqlite3_int64)10000; #ifdef SQLITE_TEST @@ -36770,7 +37479,7 @@ SQLITE_API int sqlite3_os_init(void){ /* Double-check that the aSyscall[] array has been constructed ** correctly. See ticket [bb3a86e890c8e96ab] */ - assert( ArraySize(aSyscall)==76 ); + assert( ArraySize(aSyscall)==77 ); /* get memory map allocation granularity */ memset(&winSysInfo, 0, sizeof(SYSTEM_INFO)); @@ -36788,10 +37497,10 @@ SQLITE_API int sqlite3_os_init(void){ sqlite3_vfs_register(&winLongPathVfs, 0); #endif - return SQLITE_OK; + return SQLITE_OK; } -SQLITE_API int sqlite3_os_end(void){ +SQLITE_API int sqlite3_os_end(void){ #if SQLITE_OS_WINRT if( sleepObj!=NULL ){ osCloseHandle(sleepObj); @@ -38999,8 +39708,8 @@ struct RowSet { struct RowSetEntry *pFresh; /* Source of new entry objects */ struct RowSetEntry *pForest; /* List of binary trees of entries */ u16 nFresh; /* Number of objects on pFresh */ - u8 rsFlags; /* Various flags */ - u8 iBatch; /* Current insert batch */ + u16 rsFlags; /* Various flags */ + int iBatch; /* Current insert batch */ }; /* @@ -39334,7 +40043,7 @@ SQLITE_PRIVATE int sqlite3RowSetNext(RowSet *p, i64 *pRowid){ ** on pRowSet->pEntry, then sort those entires into the forest at ** pRowSet->pForest so that they can be tested. */ -SQLITE_PRIVATE int sqlite3RowSetTest(RowSet *pRowSet, u8 iBatch, sqlite3_int64 iRowid){ +SQLITE_PRIVATE int sqlite3RowSetTest(RowSet *pRowSet, int iBatch, sqlite3_int64 iRowid){ struct RowSetEntry *p, *pTree; /* This routine is never called after sqlite3RowSetNext() */ @@ -40163,7 +40872,8 @@ struct Pager { u8 ckptSyncFlags; /* SYNC_NORMAL or SYNC_FULL for checkpoint */ u8 walSyncFlags; /* SYNC_NORMAL or SYNC_FULL for wal writes */ u8 syncFlags; /* SYNC_NORMAL or SYNC_FULL otherwise */ - u8 tempFile; /* zFilename is a temporary file */ + u8 tempFile; /* zFilename is a temporary or immutable file */ + u8 noLock; /* Do not lock (except in WAL mode) */ u8 readOnly; /* True for a read-only database */ u8 memDb; /* True to inhibit all file I/O */ @@ -40628,7 +41338,7 @@ static int pagerUnlockDb(Pager *pPager, int eLock){ assert( eLock!=NO_LOCK || pagerUseWal(pPager)==0 ); if( isOpen(pPager->fd) ){ assert( pPager->eLock>=eLock ); - rc = sqlite3OsUnlock(pPager->fd, eLock); + rc = pPager->noLock ? SQLITE_OK : sqlite3OsUnlock(pPager->fd, eLock); if( pPager->eLock!=UNKNOWN_LOCK ){ pPager->eLock = (u8)eLock; } @@ -40652,7 +41362,7 @@ static int pagerLockDb(Pager *pPager, int eLock){ assert( eLock==SHARED_LOCK || eLock==RESERVED_LOCK || eLock==EXCLUSIVE_LOCK ); if( pPager->eLockeLock==UNKNOWN_LOCK ){ - rc = sqlite3OsLock(pPager->fd, eLock); + rc = pPager->noLock ? SQLITE_OK : sqlite3OsLock(pPager->fd, eLock); if( rc==SQLITE_OK && (pPager->eLock!=UNKNOWN_LOCK||eLock==EXCLUSIVE_LOCK) ){ pPager->eLock = (u8)eLock; IOTRACE(("LOCK %p %d\n", pPager, eLock)) @@ -41161,12 +41871,11 @@ static int writeMasterJournal(Pager *pPager, const char *zMaster){ if( !zMaster || pPager->journalMode==PAGER_JOURNALMODE_MEMORY - || pPager->journalMode==PAGER_JOURNALMODE_OFF + || !isOpen(pPager->jfd) ){ return SQLITE_OK; } pPager->setMaster = 1; - assert( isOpen(pPager->jfd) ); assert( pPager->journalHdr <= pPager->journalOff ); /* Calculate the length in bytes and the checksum of zMaster */ @@ -44212,30 +44921,38 @@ SQLITE_PRIVATE int sqlite3PagerOpen( ** + The value returned by sqlite3OsSectorSize() ** + The largest page size that can be written atomically. */ - if( rc==SQLITE_OK && !readOnly ){ - setSectorSize(pPager); - assert(SQLITE_DEFAULT_PAGE_SIZE<=SQLITE_MAX_DEFAULT_PAGE_SIZE); - if( szPageDfltsectorSize ){ - if( pPager->sectorSize>SQLITE_MAX_DEFAULT_PAGE_SIZE ){ - szPageDflt = SQLITE_MAX_DEFAULT_PAGE_SIZE; - }else{ - szPageDflt = (u32)pPager->sectorSize; - } - } -#ifdef SQLITE_ENABLE_ATOMIC_WRITE - { - int iDc = sqlite3OsDeviceCharacteristics(pPager->fd); - int ii; - assert(SQLITE_IOCAP_ATOMIC512==(512>>8)); - assert(SQLITE_IOCAP_ATOMIC64K==(65536>>8)); - assert(SQLITE_MAX_DEFAULT_PAGE_SIZE<=65536); - for(ii=szPageDflt; ii<=SQLITE_MAX_DEFAULT_PAGE_SIZE; ii=ii*2){ - if( iDc&(SQLITE_IOCAP_ATOMIC|(ii>>8)) ){ - szPageDflt = ii; + if( rc==SQLITE_OK ){ + int iDc = sqlite3OsDeviceCharacteristics(pPager->fd); + if( !readOnly ){ + setSectorSize(pPager); + assert(SQLITE_DEFAULT_PAGE_SIZE<=SQLITE_MAX_DEFAULT_PAGE_SIZE); + if( szPageDfltsectorSize ){ + if( pPager->sectorSize>SQLITE_MAX_DEFAULT_PAGE_SIZE ){ + szPageDflt = SQLITE_MAX_DEFAULT_PAGE_SIZE; + }else{ + szPageDflt = (u32)pPager->sectorSize; + } + } +#ifdef SQLITE_ENABLE_ATOMIC_WRITE + { + int ii; + assert(SQLITE_IOCAP_ATOMIC512==(512>>8)); + assert(SQLITE_IOCAP_ATOMIC64K==(65536>>8)); + assert(SQLITE_MAX_DEFAULT_PAGE_SIZE<=65536); + for(ii=szPageDflt; ii<=SQLITE_MAX_DEFAULT_PAGE_SIZE; ii=ii*2){ + if( iDc&(SQLITE_IOCAP_ATOMIC|(ii>>8)) ){ + szPageDflt = ii; + } } } - } #endif + } + pPager->noLock = sqlite3_uri_boolean(zFilename, "nolock", 0); + if( (iDc & SQLITE_IOCAP_IMMUTABLE)!=0 + || sqlite3_uri_boolean(zFilename, "immutable", 0) ){ + vfsFlags |= SQLITE_OPEN_READONLY; + goto act_like_temp_file; + } } }else{ /* If a temporary file is requested, it is not opened immediately. @@ -44245,10 +44962,14 @@ SQLITE_PRIVATE int sqlite3PagerOpen( ** This branch is also run for an in-memory database. An in-memory ** database is the same as a temp-file that is never written out to ** disk and uses an in-memory rollback journal. + ** + ** This branch also runs for files marked as immutable. */ +act_like_temp_file: tempFile = 1; - pPager->eState = PAGER_READER; - pPager->eLock = EXCLUSIVE_LOCK; + pPager->eState = PAGER_READER; /* Pretend we already have a lock */ + pPager->eLock = EXCLUSIVE_LOCK; /* Pretend we are in EXCLUSIVE locking mode */ + pPager->noLock = 1; /* Do no locking */ readOnly = (vfsFlags&SQLITE_OPEN_READONLY); } @@ -44289,9 +45010,6 @@ SQLITE_PRIVATE int sqlite3PagerOpen( /* pPager->nPage = 0; */ pPager->mxPgno = SQLITE_MAX_PAGE_COUNT; /* pPager->state = PAGER_UNLOCK; */ -#if 0 - assert( pPager->state == (tempFile ? PAGER_EXCLUSIVE : PAGER_UNLOCK) ); -#endif /* pPager->errMask = 0; */ pPager->tempFile = (u8)tempFile; assert( tempFile==PAGER_LOCKINGMODE_NORMAL @@ -48858,8 +49576,8 @@ static int walTryBeginRead(Wal *pWal, int *pChanged, int useWal, int cnt){ ** calls to sqlite3OsSleep() have a delay of 1 microsecond. Really this ** is more of a scheduler yield than an actual delay. But on the 10th ** an subsequent retries, the delays start becoming longer and longer, - ** so that on the 100th (and last) RETRY we delay for 21 milliseconds. - ** The total delay time before giving up is less than 1 second. + ** so that on the 100th (and last) RETRY we delay for 323 milliseconds. + ** The total delay time before giving up is less than 10 seconds. */ if( cnt>5 ){ int nDelay = 1; /* Pause time in microseconds */ @@ -48867,7 +49585,7 @@ static int walTryBeginRead(Wal *pWal, int *pChanged, int useWal, int cnt){ VVA_ONLY( pWal->lockError = 1; ) return SQLITE_PROTOCOL; } - if( cnt>=10 ) nDelay = (cnt-9)*238; /* Max delay 21ms. Total delay 996ms */ + if( cnt>=10 ) nDelay = (cnt-9)*(cnt-9)*39; sqlite3OsSleep(pWal->pVfs, nDelay); } @@ -50373,27 +51091,30 @@ struct BtCursor { BtShared *pBt; /* The BtShared this cursor points to */ BtCursor *pNext, *pPrev; /* Forms a linked list of all cursors */ struct KeyInfo *pKeyInfo; /* Argument passed to comparison function */ -#ifndef SQLITE_OMIT_INCRBLOB Pgno *aOverflow; /* Cache of overflow page locations */ -#endif - Pgno pgnoRoot; /* The root page of this tree */ CellInfo info; /* A parse of the cell we are pointing at */ - i64 nKey; /* Size of pKey, or last integer key */ - void *pKey; /* Saved key that was cursor's last known position */ + i64 nKey; /* Size of pKey, or last integer key */ + void *pKey; /* Saved key that was cursor last known position */ + Pgno pgnoRoot; /* The root page of this tree */ + int nOvflAlloc; /* Allocated size of aOverflow[] array */ int skipNext; /* Prev() is noop if negative. Next() is noop if positive */ - u8 wrFlag; /* True if writable */ - u8 atLast; /* Cursor pointing to the last entry */ - u8 validNKey; /* True if info.nKey is valid */ + u8 curFlags; /* zero or more BTCF_* flags defined below */ u8 eState; /* One of the CURSOR_XXX constants (see below) */ -#ifndef SQLITE_OMIT_INCRBLOB - u8 isIncrblobHandle; /* True if this cursor is an incr. io handle */ -#endif u8 hints; /* As configured by CursorSetHints() */ i16 iPage; /* Index of current page in apPage */ u16 aiIdx[BTCURSOR_MAX_DEPTH]; /* Current index in apPage[i] */ MemPage *apPage[BTCURSOR_MAX_DEPTH]; /* Pages from root to current page */ }; +/* +** Legal values for BtCursor.curFlags +*/ +#define BTCF_WriteFlag 0x01 /* True if a write cursor */ +#define BTCF_ValidNKey 0x02 /* True if info.nKey is valid */ +#define BTCF_ValidOvfl 0x04 /* True if aOverflow is valid */ +#define BTCF_AtLast 0x08 /* Cursor is pointing ot the last entry */ +#define BTCF_Incrblob 0x10 /* True if an incremental I/O handle */ + /* ** Potential values for BtCursor.eState. ** @@ -50980,7 +51701,7 @@ static int hasSharedCacheTableLock( ** the correct locks are held. So do not bother - just return true. ** This case does not come up very often anyhow. */ - if( isIndex && (!pSchema || (pSchema->flags&DB_SchemaLoaded)==0) ){ + if( isIndex && (!pSchema || (pSchema->schemaFlags&DB_SchemaLoaded)==0) ){ return 1; } @@ -51264,16 +51985,11 @@ static int cursorHoldsMutex(BtCursor *p){ } #endif - -#ifndef SQLITE_OMIT_INCRBLOB /* -** Invalidate the overflow page-list cache for cursor pCur, if any. +** Invalidate the overflow cache of the cursor passed as the first argument. +** on the shared btree structure pBt. */ -static void invalidateOverflowCache(BtCursor *pCur){ - assert( cursorHoldsMutex(pCur) ); - sqlite3_free(pCur->aOverflow); - pCur->aOverflow = 0; -} +#define invalidateOverflowCache(pCur) (pCur->curFlags &= ~BTCF_ValidOvfl) /* ** Invalidate the overflow page-list cache for all cursors opened @@ -51287,6 +52003,7 @@ static void invalidateAllOverflowCache(BtShared *pBt){ } } +#ifndef SQLITE_OMIT_INCRBLOB /* ** This function is called before modifying the contents of a table ** to invalidate any incrblob cursors that are open on the @@ -51309,16 +52026,14 @@ static void invalidateIncrblobCursors( BtShared *pBt = pBtree->pBt; assert( sqlite3BtreeHoldsMutex(pBtree) ); for(p=pBt->pCursor; p; p=p->pNext){ - if( p->isIncrblobHandle && (isClearTable || p->info.nKey==iRow) ){ + if( (p->curFlags & BTCF_Incrblob)!=0 && (isClearTable || p->info.nKey==iRow) ){ p->eState = CURSOR_INVALID; } } } #else - /* Stub functions when INCRBLOB is omitted */ - #define invalidateOverflowCache(x) - #define invalidateAllOverflowCache(x) + /* Stub function when INCRBLOB is omitted */ #define invalidateIncrblobCursors(x,y,z) #endif /* SQLITE_OMIT_INCRBLOB */ @@ -51564,20 +52279,32 @@ static int btreeRestoreCursorPosition(BtCursor *pCur){ ** at is deleted out from under them. ** ** This routine returns an error code if something goes wrong. The -** integer *pHasMoved is set to one if the cursor has moved and 0 if not. +** integer *pHasMoved is set as follows: +** +** 0: The cursor is unchanged +** 1: The cursor is still pointing at the same row, but the pointers +** returned by sqlite3BtreeKeyFetch() or sqlite3BtreeDataFetch() +** might now be invalid because of a balance() or other change to the +** b-tree. +** 2: The cursor is no longer pointing to the row. The row might have +** been deleted out from under the cursor. */ SQLITE_PRIVATE int sqlite3BtreeCursorHasMoved(BtCursor *pCur, int *pHasMoved){ int rc; + if( pCur->eState==CURSOR_VALID ){ + *pHasMoved = 0; + return SQLITE_OK; + } rc = restoreCursorPosition(pCur); if( rc ){ - *pHasMoved = 1; + *pHasMoved = 2; return rc; } if( pCur->eState!=CURSOR_VALID || NEVER(pCur->skipNext!=0) ){ - *pHasMoved = 1; + *pHasMoved = 2; }else{ - *pHasMoved = 0; + *pHasMoved = 1; } return SQLITE_OK; } @@ -52444,7 +53171,7 @@ static Pgno btreePagecount(BtShared *pBt){ SQLITE_PRIVATE u32 sqlite3BtreeLastPage(Btree *p){ assert( sqlite3BtreeHoldsMutex(p) ); assert( ((p->pBt->nPage)&0x8000000)==0 ); - return (int)btreePagecount(p->pBt); + return btreePagecount(p->pBt); } /* @@ -52979,6 +53706,7 @@ SQLITE_PRIVATE int sqlite3BtreeSetCacheSize(Btree *p, int mxPage){ return SQLITE_OK; } +#if SQLITE_MAX_MMAP_SIZE>0 /* ** Change the limit on the amount of the database file that may be ** memory mapped. @@ -52991,6 +53719,7 @@ SQLITE_PRIVATE int sqlite3BtreeSetMmapLimit(Btree *p, sqlite3_int64 szMmap){ sqlite3BtreeLeave(p); return SQLITE_OK; } +#endif /* SQLITE_MAX_MMAP_SIZE>0 */ /* ** Change the way data is synced to disk in order to increase or decrease @@ -53367,7 +54096,8 @@ static int countValidCursors(BtShared *pBt, int wrOnly){ BtCursor *pCur; int r = 0; for(pCur=pBt->pCursor; pCur; pCur=pCur->pNext){ - if( (wrOnly==0 || pCur->wrFlag) && pCur->eState!=CURSOR_FAULT ) r++; + if( (wrOnly==0 || (pCur->curFlags & BTCF_WriteFlag)!=0) + && pCur->eState!=CURSOR_FAULT ) r++; } return r; } @@ -54442,7 +55172,8 @@ static int btreeCursor( pCur->pKeyInfo = pKeyInfo; pCur->pBtree = p; pCur->pBt = pBt; - pCur->wrFlag = (u8)wrFlag; + assert( wrFlag==0 || wrFlag==BTCF_WriteFlag ); + pCur->curFlags = wrFlag; pCur->pNext = pBt->pCursor; if( pCur->pNext ){ pCur->pNext->pPrev = pCur; @@ -54512,7 +55243,7 @@ SQLITE_PRIVATE int sqlite3BtreeCloseCursor(BtCursor *pCur){ releasePage(pCur->apPage[i]); } unlockBtreeIfUnused(pBt); - invalidateOverflowCache(pCur); + sqlite3DbFree(pBtree->db, pCur->aOverflow); /* sqlite3_free(pCur); */ sqlite3BtreeLeave(pBtree); } @@ -54551,7 +55282,7 @@ SQLITE_PRIVATE int sqlite3BtreeCloseCursor(BtCursor *pCur){ if( pCur->info.nSize==0 ){ int iPage = pCur->iPage; btreeParseCell(pCur->apPage[iPage],pCur->aiIdx[iPage],&pCur->info); - pCur->validNKey = 1; + pCur->curFlags |= BTCF_ValidNKey; }else{ assertCellInfo(pCur); } @@ -54561,8 +55292,8 @@ SQLITE_PRIVATE int sqlite3BtreeCloseCursor(BtCursor *pCur){ #define getCellInfo(pCur) \ if( pCur->info.nSize==0 ){ \ int iPage = pCur->iPage; \ - btreeParseCell(pCur->apPage[iPage],pCur->aiIdx[iPage],&pCur->info); \ - pCur->validNKey = 1; \ + btreeParseCell(pCur->apPage[iPage],pCur->aiIdx[iPage],&pCur->info); \ + pCur->curFlags |= BTCF_ValidNKey; \ }else{ \ assertCellInfo(pCur); \ } @@ -54733,10 +55464,12 @@ static int copyPayload( /* ** This function is used to read or overwrite payload information -** for the entry that the pCur cursor is pointing to. If the eOp -** parameter is 0, this is a read operation (data copied into -** buffer pBuf). If it is non-zero, a write (data copied from -** buffer pBuf). +** for the entry that the pCur cursor is pointing to. The eOp +** argument is interpreted as follows: +** +** 0: The operation is a read. Populate the overflow cache. +** 1: The operation is a write. Populate the overflow cache. +** 2: The operation is a read. Do not populate the overflow cache. ** ** A total of "amt" bytes are read or written beginning at "offset". ** Data is read to or from the buffer pBuf. @@ -54744,11 +55477,11 @@ static int copyPayload( ** The content being read or written might appear on the main page ** or be scattered out on multiple overflow pages. ** -** If the BtCursor.isIncrblobHandle flag is set, and the current -** cursor entry uses one or more overflow pages, this function -** allocates space for and lazily popluates the overflow page-list -** cache array (BtCursor.aOverflow). Subsequent calls use this -** cache to make seeking to the supplied offset more efficient. +** If the current cursor entry uses one or more overflow pages and the +** eOp argument is not 2, this function may allocate space for and lazily +** popluates the overflow page-list cache array (BtCursor.aOverflow). +** Subsequent calls use this cache to make seeking to the supplied offset +** more efficient. ** ** Once an overflow page-list cache has been allocated, it may be ** invalidated if some other cursor writes to the same table, or if @@ -54772,15 +55505,22 @@ static int accessPayload( int iIdx = 0; MemPage *pPage = pCur->apPage[pCur->iPage]; /* Btree page of current entry */ BtShared *pBt = pCur->pBt; /* Btree this cursor belongs to */ +#ifdef SQLITE_DIRECT_OVERFLOW_READ + int bEnd; /* True if reading to end of data */ +#endif assert( pPage ); assert( pCur->eState==CURSOR_VALID ); assert( pCur->aiIdx[pCur->iPage]nCell ); assert( cursorHoldsMutex(pCur) ); + assert( eOp!=2 || offset==0 ); /* Always start from beginning for eOp==2 */ getCellInfo(pCur); aPayload = pCur->info.pCell + pCur->info.nHeader; nKey = (pPage->intKey ? 0 : (int)pCur->info.nKey); +#ifdef SQLITE_DIRECT_OVERFLOW_READ + bEnd = (offset+amt==nKey+pCur->info.nData); +#endif if( NEVER(offset+amt > nKey+pCur->info.nData) || &aPayload[pCur->info.nLocal] > &pPage->aData[pBt->usableSize] @@ -54795,7 +55535,7 @@ static int accessPayload( if( a+offset>pCur->info.nLocal ){ a = pCur->info.nLocal - offset; } - rc = copyPayload(&aPayload[offset], pBuf, a, eOp, pPage->pDbPage); + rc = copyPayload(&aPayload[offset], pBuf, a, (eOp & 0x01), pPage->pDbPage); offset = 0; pBuf += a; amt -= a; @@ -54809,21 +55549,30 @@ static int accessPayload( nextPage = get4byte(&aPayload[pCur->info.nLocal]); -#ifndef SQLITE_OMIT_INCRBLOB - /* If the isIncrblobHandle flag is set and the BtCursor.aOverflow[] - ** has not been allocated, allocate it now. The array is sized at - ** one entry for each overflow page in the overflow chain. The - ** page number of the first overflow page is stored in aOverflow[0], - ** etc. A value of 0 in the aOverflow[] array means "not yet known" - ** (the cache is lazily populated). + /* If the BtCursor.aOverflow[] has not been allocated, allocate it now. + ** Except, do not allocate aOverflow[] for eOp==2. + ** + ** The aOverflow[] array is sized at one entry for each overflow page + ** in the overflow chain. The page number of the first overflow page is + ** stored in aOverflow[0], etc. A value of 0 in the aOverflow[] array + ** means "not yet known" (the cache is lazily populated). */ - if( pCur->isIncrblobHandle && !pCur->aOverflow ){ + if( eOp!=2 && (pCur->curFlags & BTCF_ValidOvfl)==0 ){ int nOvfl = (pCur->info.nPayload-pCur->info.nLocal+ovflSize-1)/ovflSize; - pCur->aOverflow = (Pgno *)sqlite3MallocZero(sizeof(Pgno)*nOvfl); - /* nOvfl is always positive. If it were zero, fetchPayload would have - ** been used instead of this routine. */ - if( ALWAYS(nOvfl) && !pCur->aOverflow ){ - rc = SQLITE_NOMEM; + if( nOvfl>pCur->nOvflAlloc ){ + Pgno *aNew = (Pgno*)sqlite3DbRealloc( + pCur->pBtree->db, pCur->aOverflow, nOvfl*2*sizeof(Pgno) + ); + if( aNew==0 ){ + rc = SQLITE_NOMEM; + }else{ + pCur->nOvflAlloc = nOvfl*2; + pCur->aOverflow = aNew; + } + } + if( rc==SQLITE_OK ){ + memset(pCur->aOverflow, 0, nOvfl*sizeof(Pgno)); + pCur->curFlags |= BTCF_ValidOvfl; } } @@ -54831,22 +55580,19 @@ static int accessPayload( ** entry for the first required overflow page is valid, skip ** directly to it. */ - if( pCur->aOverflow && pCur->aOverflow[offset/ovflSize] ){ + if( (pCur->curFlags & BTCF_ValidOvfl)!=0 && pCur->aOverflow[offset/ovflSize] ){ iIdx = (offset/ovflSize); nextPage = pCur->aOverflow[iIdx]; offset = (offset%ovflSize); } -#endif for( ; rc==SQLITE_OK && amt>0 && nextPage; iIdx++){ -#ifndef SQLITE_OMIT_INCRBLOB /* If required, populate the overflow page-list cache. */ - if( pCur->aOverflow ){ + if( (pCur->curFlags & BTCF_ValidOvfl)!=0 ){ assert(!pCur->aOverflow[iIdx] || pCur->aOverflow[iIdx]==nextPage); pCur->aOverflow[iIdx] = nextPage; } -#endif if( offset>=ovflSize ){ /* The only reason to read this page is to obtain the page @@ -54854,13 +55600,17 @@ static int accessPayload( ** data is not required. So first try to lookup the overflow ** page-list cache, if any, then fall back to the getOverflowPage() ** function. + ** + ** Note that the aOverflow[] array must be allocated because eOp!=2 + ** here. If eOp==2, then offset==0 and this branch is never taken. */ -#ifndef SQLITE_OMIT_INCRBLOB - if( pCur->aOverflow && pCur->aOverflow[iIdx+1] ){ + assert( eOp!=2 ); + assert( pCur->curFlags & BTCF_ValidOvfl ); + if( pCur->aOverflow[iIdx+1] ){ nextPage = pCur->aOverflow[iIdx+1]; - } else -#endif + }else{ rc = getOverflowPage(pBt, nextPage, 0, &nextPage); + } offset -= ovflSize; }else{ /* Need to read this page properly. It contains some of the @@ -54882,13 +55632,15 @@ static int accessPayload( ** 3) the database is file-backed, and ** 4) there is no open write-transaction, and ** 5) the database is not a WAL database, + ** 6) all data from the page is being read. ** ** then data can be read directly from the database file into the ** output buffer, bypassing the page-cache altogether. This speeds ** up loading large records that span many overflow pages. */ - if( eOp==0 /* (1) */ + if( (eOp&0x01)==0 /* (1) */ && offset==0 /* (2) */ + && (bEnd || a==ovflSize) /* (6) */ && pBt->inTransaction==TRANS_READ /* (4) */ && (fd = sqlite3PagerFile(pBt->pPager))->pMethods /* (3) */ && pBt->pPage1->aData[19]==0x01 /* (5) */ @@ -54905,12 +55657,12 @@ static int accessPayload( { DbPage *pDbPage; rc = sqlite3PagerAcquire(pBt->pPager, nextPage, &pDbPage, - (eOp==0 ? PAGER_GET_READONLY : 0) + ((eOp&0x01)==0 ? PAGER_GET_READONLY : 0) ); if( rc==SQLITE_OK ){ aPayload = sqlite3PagerGetData(pDbPage); nextPage = get4byte(aPayload); - rc = copyPayload(&aPayload[offset+4], pBuf, a, eOp, pDbPage); + rc = copyPayload(&aPayload[offset+4], pBuf, a, (eOp&0x01), pDbPage); sqlite3PagerUnref(pDbPage); offset = 0; } @@ -55004,10 +55756,7 @@ static const void *fetchPayload( assert( sqlite3_mutex_held(pCur->pBtree->db->mutex) ); assert( cursorHoldsMutex(pCur) ); assert( pCur->aiIdx[pCur->iPage]apPage[pCur->iPage]->nCell ); - if( pCur->info.nSize==0 ){ - btreeParseCell(pCur->apPage[pCur->iPage], pCur->aiIdx[pCur->iPage], - &pCur->info); - } + assert( pCur->info.nSize>0 ); *pAmt = pCur->info.nLocal; return (void*)(pCur->info.pCell + pCur->info.nHeader); } @@ -55058,14 +55807,14 @@ static int moveToChild(BtCursor *pCur, u32 newPgno){ return SQLITE_CORRUPT_BKPT; } rc = getAndInitPage(pBt, newPgno, &pNewPage, - pCur->wrFlag==0 ? PAGER_GET_READONLY : 0); + (pCur->curFlags & BTCF_WriteFlag)==0 ? PAGER_GET_READONLY : 0); if( rc ) return rc; pCur->apPage[i+1] = pNewPage; pCur->aiIdx[i+1] = 0; pCur->iPage++; pCur->info.nSize = 0; - pCur->validNKey = 0; + pCur->curFlags &= ~(BTCF_ValidNKey|BTCF_ValidOvfl); if( pNewPage->nCell<1 || pNewPage->intKey!=pCur->apPage[i]->intKey ){ return SQLITE_CORRUPT_BKPT; } @@ -55123,7 +55872,7 @@ static void moveToParent(BtCursor *pCur){ releasePage(pCur->apPage[pCur->iPage]); pCur->iPage--; pCur->info.nSize = 0; - pCur->validNKey = 0; + pCur->curFlags &= ~(BTCF_ValidNKey|BTCF_ValidOvfl); } /* @@ -55170,7 +55919,7 @@ static int moveToRoot(BtCursor *pCur){ return SQLITE_OK; }else{ rc = getAndInitPage(pCur->pBtree->pBt, pCur->pgnoRoot, &pCur->apPage[0], - pCur->wrFlag==0 ? PAGER_GET_READONLY : 0); + (pCur->curFlags & BTCF_WriteFlag)==0 ? PAGER_GET_READONLY : 0); if( rc!=SQLITE_OK ){ pCur->eState = CURSOR_INVALID; return rc; @@ -55197,8 +55946,7 @@ static int moveToRoot(BtCursor *pCur){ pCur->aiIdx[0] = 0; pCur->info.nSize = 0; - pCur->atLast = 0; - pCur->validNKey = 0; + pCur->curFlags &= ~(BTCF_AtLast|BTCF_ValidNKey|BTCF_ValidOvfl); if( pRoot->nCell>0 ){ pCur->eState = CURSOR_VALID; @@ -55261,7 +56009,7 @@ static int moveToRightmost(BtCursor *pCur){ if( rc==SQLITE_OK ){ pCur->aiIdx[pCur->iPage] = pPage->nCell-1; pCur->info.nSize = 0; - pCur->validNKey = 0; + pCur->curFlags &= ~BTCF_ValidNKey; } return rc; } @@ -55300,7 +56048,7 @@ SQLITE_PRIVATE int sqlite3BtreeLast(BtCursor *pCur, int *pRes){ assert( sqlite3_mutex_held(pCur->pBtree->db->mutex) ); /* If the cursor already points to the last entry, this is a no-op. */ - if( CURSOR_VALID==pCur->eState && pCur->atLast ){ + if( CURSOR_VALID==pCur->eState && (pCur->curFlags & BTCF_AtLast)!=0 ){ #ifdef SQLITE_DEBUG /* This block serves to assert() that the cursor really does point ** to the last entry in the b-tree. */ @@ -55323,7 +56071,12 @@ SQLITE_PRIVATE int sqlite3BtreeLast(BtCursor *pCur, int *pRes){ assert( pCur->eState==CURSOR_VALID ); *pRes = 0; rc = moveToRightmost(pCur); - pCur->atLast = rc==SQLITE_OK ?1:0; + if( rc==SQLITE_OK ){ + pCur->curFlags |= BTCF_AtLast; + }else{ + pCur->curFlags &= ~BTCF_AtLast; + } + } } return rc; @@ -55374,14 +56127,14 @@ SQLITE_PRIVATE int sqlite3BtreeMovetoUnpacked( /* If the cursor is already positioned at the point we are trying ** to move to, then just return without doing any work */ - if( pCur->eState==CURSOR_VALID && pCur->validNKey + if( pCur->eState==CURSOR_VALID && (pCur->curFlags & BTCF_ValidNKey)!=0 && pCur->apPage[0]->intKey ){ if( pCur->info.nKey==intKey ){ *pRes = 0; return SQLITE_OK; } - if( pCur->atLast && pCur->info.nKeycurFlags & BTCF_AtLast)!=0 && pCur->info.nKeyisCorrupt = 0; assert( pIdxKey->default_rc==1 || pIdxKey->default_rc==0 || pIdxKey->default_rc==-1 @@ -55447,7 +56201,7 @@ SQLITE_PRIVATE int sqlite3BtreeMovetoUnpacked( if( lwr>upr ){ c = +1; break; } }else{ assert( nCellKey==intKey ); - pCur->validNKey = 1; + pCur->curFlags |= BTCF_ValidNKey; pCur->info.nKey = nCellKey; pCur->aiIdx[pCur->iPage] = (u16)idx; if( !pPage->leaf ){ @@ -55504,7 +56258,7 @@ SQLITE_PRIVATE int sqlite3BtreeMovetoUnpacked( goto moveto_finish; } pCur->aiIdx[pCur->iPage] = (u16)idx; - rc = accessPayload(pCur, 0, nCell, (unsigned char*)pCellKey, 0); + rc = accessPayload(pCur, 0, nCell, (unsigned char*)pCellKey, 2); if( rc ){ sqlite3_free(pCellKey); goto moveto_finish; @@ -55512,6 +56266,7 @@ SQLITE_PRIVATE int sqlite3BtreeMovetoUnpacked( c = xRecordCompare(nCell, pCellKey, pIdxKey, 0); sqlite3_free(pCellKey); } + assert( pIdxKey->isCorrupt==0 || c==0 ); if( c<0 ){ lwr = idx+1; }else if( c>0 ){ @@ -55521,6 +56276,7 @@ SQLITE_PRIVATE int sqlite3BtreeMovetoUnpacked( *pRes = 0; rc = SQLITE_OK; pCur->aiIdx[pCur->iPage] = (u16)idx; + if( pIdxKey->isCorrupt ) rc = SQLITE_CORRUPT; goto moveto_finish; } if( lwr>upr ) break; @@ -55549,7 +56305,7 @@ moveto_next_layer: } moveto_finish: pCur->info.nSize = 0; - pCur->validNKey = 0; + pCur->curFlags &= ~(BTCF_ValidNKey|BTCF_ValidOvfl); return rc; } @@ -55594,6 +56350,7 @@ SQLITE_PRIVATE int sqlite3BtreeNext(BtCursor *pCur, int *pRes){ assert( *pRes==0 || *pRes==1 ); assert( pCur->skipNext==0 || pCur->eState!=CURSOR_VALID ); if( pCur->eState!=CURSOR_VALID ){ + invalidateOverflowCache(pCur); rc = restoreCursorPosition(pCur); if( rc!=SQLITE_OK ){ *pRes = 0; @@ -55627,7 +56384,7 @@ SQLITE_PRIVATE int sqlite3BtreeNext(BtCursor *pCur, int *pRes){ testcase( idx>pPage->nCell ); pCur->info.nSize = 0; - pCur->validNKey = 0; + pCur->curFlags &= ~(BTCF_ValidNKey|BTCF_ValidOvfl); if( idx>=pPage->nCell ){ if( !pPage->leaf ){ rc = moveToChild(pCur, get4byte(&pPage->aData[pPage->hdrOffset+8])); @@ -55688,7 +56445,7 @@ SQLITE_PRIVATE int sqlite3BtreePrevious(BtCursor *pCur, int *pRes){ assert( pRes!=0 ); assert( *pRes==0 || *pRes==1 ); assert( pCur->skipNext==0 || pCur->eState!=CURSOR_VALID ); - pCur->atLast = 0; + pCur->curFlags &= ~(BTCF_AtLast|BTCF_ValidOvfl); if( pCur->eState!=CURSOR_VALID ){ if( ALWAYS(pCur->eState>=CURSOR_REQUIRESEEK) ){ rc = btreeRestoreCursorPosition(pCur); @@ -55733,7 +56490,7 @@ SQLITE_PRIVATE int sqlite3BtreePrevious(BtCursor *pCur, int *pRes){ moveToParent(pCur); } pCur->info.nSize = 0; - pCur->validNKey = 0; + pCur->curFlags &= ~(BTCF_ValidNKey|BTCF_ValidOvfl); pCur->aiIdx[pCur->iPage]--; pPage = pCur->apPage[pCur->iPage]; @@ -56523,7 +57280,8 @@ static void insertCell( if( *pRC ) return; assert( i>=0 && i<=pPage->nCell+pPage->nOverflow ); - assert( pPage->nCell<=MX_CELL(pPage->pBt) && MX_CELL(pPage->pBt)<=10921 ); + assert( MX_CELL(pPage->pBt)<=10921 ); + assert( pPage->nCell<=MX_CELL(pPage->pBt) || CORRUPT_DB ); assert( pPage->nOverflow<=ArraySize(pPage->apOvfl) ); assert( ArraySize(pPage->apOvfl)==ArraySize(pPage->aiOvfl) ); assert( sqlite3_mutex_held(pPage->pBt->mutex) ); @@ -57758,7 +58516,7 @@ SQLITE_PRIVATE int sqlite3BtreeInsert( } assert( cursorHoldsMutex(pCur) ); - assert( pCur->wrFlag && pBt->inTransaction==TRANS_WRITE + assert( (pCur->curFlags & BTCF_WriteFlag)!=0 && pBt->inTransaction==TRANS_WRITE && (pBt->btsFlags & BTS_READ_ONLY)==0 ); assert( hasSharedCacheTableLock(p, pCur->pgnoRoot, pCur->pKeyInfo!=0, 2) ); @@ -57791,7 +58549,7 @@ SQLITE_PRIVATE int sqlite3BtreeInsert( /* If the cursor is currently on the last row and we are appending a ** new row onto the end, set the "loc" to avoid an unnecessary btreeMoveto() ** call */ - if( pCur->validNKey && nKey>0 && pCur->info.nKey==nKey-1 ){ + if( (pCur->curFlags&BTCF_ValidNKey)!=0 && nKey>0 && pCur->info.nKey==nKey-1 ){ loc = -1; } } @@ -57844,7 +58602,7 @@ SQLITE_PRIVATE int sqlite3BtreeInsert( /* If no error has occurred and pPage has an overflow cell, call balance() ** to redistribute the cells within the tree. Since balance() may move - ** the cursor, zero the BtCursor.info.nSize and BtCursor.validNKey + ** the cursor, zero the BtCursor.info.nSize and BTCF_ValidNKey ** variables. ** ** Previous versions of SQLite called moveToRoot() to move the cursor @@ -57864,7 +58622,7 @@ SQLITE_PRIVATE int sqlite3BtreeInsert( */ pCur->info.nSize = 0; if( rc==SQLITE_OK && pPage->nOverflow ){ - pCur->validNKey = 0; + pCur->curFlags &= ~(BTCF_ValidNKey); rc = balance(pCur); /* Must make sure nOverflow is reset to zero even if the balance() @@ -57896,7 +58654,7 @@ SQLITE_PRIVATE int sqlite3BtreeDelete(BtCursor *pCur){ assert( cursorHoldsMutex(pCur) ); assert( pBt->inTransaction==TRANS_WRITE ); assert( (pBt->btsFlags & BTS_READ_ONLY)==0 ); - assert( pCur->wrFlag ); + assert( pCur->curFlags & BTCF_WriteFlag ); assert( hasSharedCacheTableLock(p, pCur->pgnoRoot, pCur->pKeyInfo!=0, 2) ); assert( !hasReadConflicts(p, pCur->pgnoRoot) ); @@ -58241,6 +58999,15 @@ SQLITE_PRIVATE int sqlite3BtreeClearTable(Btree *p, int iTable, int *pnChange){ return rc; } +/* +** Delete all information from the single table that pCur is open on. +** +** This routine only work for pCur on an ephemeral table. +*/ +SQLITE_PRIVATE int sqlite3BtreeClearTableOfCursor(BtCursor *pCur){ + return sqlite3BtreeClearTable(pCur->pBtree, pCur->pgnoRoot, 0); +} + /* ** Erase all information in a table and add the root of the table to ** the freelist. Except, the root of the principle table (the one on @@ -59200,7 +59967,7 @@ SQLITE_PRIVATE int sqlite3BtreePutData(BtCursor *pCsr, u32 offset, u32 amt, void int rc; assert( cursorHoldsMutex(pCsr) ); assert( sqlite3_mutex_held(pCsr->pBtree->db->mutex) ); - assert( pCsr->isIncrblobHandle ); + assert( pCsr->curFlags & BTCF_Incrblob ); rc = restoreCursorPosition(pCsr); if( rc!=SQLITE_OK ){ @@ -59229,7 +59996,7 @@ SQLITE_PRIVATE int sqlite3BtreePutData(BtCursor *pCsr, u32 offset, u32 amt, void ** (d) there are no conflicting read-locks, and ** (e) the cursor points at a valid row of an intKey table. */ - if( !pCsr->wrFlag ){ + if( (pCsr->curFlags & BTCF_WriteFlag)==0 ){ return SQLITE_READONLY; } assert( (pCsr->pBt->btsFlags & BTS_READ_ONLY)==0 @@ -59242,20 +60009,10 @@ SQLITE_PRIVATE int sqlite3BtreePutData(BtCursor *pCsr, u32 offset, u32 amt, void } /* -** Set a flag on this cursor to cache the locations of pages from the -** overflow list for the current row. This is used by cursors opened -** for incremental blob IO only. -** -** This function sets a flag only. The actual page location cache -** (stored in BtCursor.aOverflow[]) is allocated and used by function -** accessPayload() (the worker function for sqlite3BtreeData() and -** sqlite3BtreePutData()). +** Mark this cursor as an incremental blob cursor. */ -SQLITE_PRIVATE void sqlite3BtreeCacheOverflow(BtCursor *pCur){ - assert( cursorHoldsMutex(pCur) ); - assert( sqlite3_mutex_held(pCur->pBtree->db->mutex) ); - invalidateOverflowCache(pCur); - pCur->isIncrblobHandle = 1; +SQLITE_PRIVATE void sqlite3BtreeIncrblobCursor(BtCursor *pCur){ + pCur->curFlags |= BTCF_Incrblob; } #endif @@ -59304,6 +60061,13 @@ SQLITE_PRIVATE void sqlite3BtreeCursorHints(BtCursor *pCsr, unsigned int mask){ pCsr->hints = mask; } +/* +** Return true if the given Btree is read-only. +*/ +SQLITE_PRIVATE int sqlite3BtreeIsReadonly(Btree *p){ + return (p->pBt->btsFlags & BTS_READ_ONLY)!=0; +} + /************** End of btree.c ***********************************************/ /************** Begin file backup.c ******************************************/ /* @@ -61207,6 +61971,68 @@ SQLITE_PRIVATE void sqlite3AnalyzeFunctions(void){ } } +/* +** Attempt to extract a value from pExpr and use it to construct *ppVal. +** +** If pAlloc is not NULL, then an UnpackedRecord object is created for +** pAlloc if one does not exist and the new value is added to the +** UnpackedRecord object. +** +** A value is extracted in the following cases: +** +** * (pExpr==0). In this case the value is assumed to be an SQL NULL, +** +** * The expression is a bound variable, and this is a reprepare, or +** +** * The expression is a literal value. +** +** On success, *ppVal is made to point to the extracted value. The caller +** is responsible for ensuring that the value is eventually freed. +*/ +static int stat4ValueFromExpr( + Parse *pParse, /* Parse context */ + Expr *pExpr, /* The expression to extract a value from */ + u8 affinity, /* Affinity to use */ + struct ValueNewStat4Ctx *pAlloc,/* How to allocate space. Or NULL */ + sqlite3_value **ppVal /* OUT: New value object (or NULL) */ +){ + int rc = SQLITE_OK; + sqlite3_value *pVal = 0; + sqlite3 *db = pParse->db; + + /* Skip over any TK_COLLATE nodes */ + pExpr = sqlite3ExprSkipCollate(pExpr); + + if( !pExpr ){ + pVal = valueNew(db, pAlloc); + if( pVal ){ + sqlite3VdbeMemSetNull((Mem*)pVal); + } + }else if( pExpr->op==TK_VARIABLE + || NEVER(pExpr->op==TK_REGISTER && pExpr->op2==TK_VARIABLE) + ){ + Vdbe *v; + int iBindVar = pExpr->iColumn; + sqlite3VdbeSetVarmask(pParse->pVdbe, iBindVar); + if( (v = pParse->pReprepare)!=0 ){ + pVal = valueNew(db, pAlloc); + if( pVal ){ + rc = sqlite3VdbeMemCopy((Mem*)pVal, &v->aVar[iBindVar-1]); + if( rc==SQLITE_OK ){ + sqlite3ValueApplyAffinity(pVal, affinity, ENC(db)); + } + pVal->db = pParse->db; + } + } + }else{ + rc = valueFromExpr(db, pExpr, ENC(db), affinity, &pVal, pAlloc); + } + + assert( pVal==0 || pVal->db==db ); + *ppVal = pVal; + return rc; +} + /* ** This function is used to allocate and populate UnpackedRecord ** structures intended to be compared against sample index keys stored @@ -61246,50 +62072,88 @@ SQLITE_PRIVATE int sqlite3Stat4ProbeSetValue( int iVal, /* Array element to populate */ int *pbOk /* OUT: True if value was extracted */ ){ - int rc = SQLITE_OK; + int rc; sqlite3_value *pVal = 0; - sqlite3 *db = pParse->db; - - struct ValueNewStat4Ctx alloc; + alloc.pParse = pParse; alloc.pIdx = pIdx; alloc.ppRec = ppRec; alloc.iVal = iVal; - /* Skip over any TK_COLLATE nodes */ - pExpr = sqlite3ExprSkipCollate(pExpr); - - if( !pExpr ){ - pVal = valueNew(db, &alloc); - if( pVal ){ - sqlite3VdbeMemSetNull((Mem*)pVal); - } - }else if( pExpr->op==TK_VARIABLE - || NEVER(pExpr->op==TK_REGISTER && pExpr->op2==TK_VARIABLE) - ){ - Vdbe *v; - int iBindVar = pExpr->iColumn; - sqlite3VdbeSetVarmask(pParse->pVdbe, iBindVar); - if( (v = pParse->pReprepare)!=0 ){ - pVal = valueNew(db, &alloc); - if( pVal ){ - rc = sqlite3VdbeMemCopy((Mem*)pVal, &v->aVar[iBindVar-1]); - if( rc==SQLITE_OK ){ - sqlite3ValueApplyAffinity(pVal, affinity, ENC(db)); - } - pVal->db = pParse->db; - } - } - }else{ - rc = valueFromExpr(db, pExpr, ENC(db), affinity, &pVal, &alloc); - } + rc = stat4ValueFromExpr(pParse, pExpr, affinity, &alloc, &pVal); + assert( pVal==0 || pVal->db==pParse->db ); *pbOk = (pVal!=0); - - assert( pVal==0 || pVal->db==db ); return rc; } +/* +** Attempt to extract a value from expression pExpr using the methods +** as described for sqlite3Stat4ProbeSetValue() above. +** +** If successful, set *ppVal to point to a new value object and return +** SQLITE_OK. If no value can be extracted, but no other error occurs +** (e.g. OOM), return SQLITE_OK and set *ppVal to NULL. Or, if an error +** does occur, return an SQLite error code. The final value of *ppVal +** is undefined in this case. +*/ +SQLITE_PRIVATE int sqlite3Stat4ValueFromExpr( + Parse *pParse, /* Parse context */ + Expr *pExpr, /* The expression to extract a value from */ + u8 affinity, /* Affinity to use */ + sqlite3_value **ppVal /* OUT: New value object (or NULL) */ +){ + return stat4ValueFromExpr(pParse, pExpr, affinity, 0, ppVal); +} + +/* +** Extract the iCol-th column from the nRec-byte record in pRec. Write +** the column value into *ppVal. If *ppVal is initially NULL then a new +** sqlite3_value object is allocated. +** +** If *ppVal is initially NULL then the caller is responsible for +** ensuring that the value written into *ppVal is eventually freed. +*/ +SQLITE_PRIVATE int sqlite3Stat4Column( + sqlite3 *db, /* Database handle */ + const void *pRec, /* Pointer to buffer containing record */ + int nRec, /* Size of buffer pRec in bytes */ + int iCol, /* Column to extract */ + sqlite3_value **ppVal /* OUT: Extracted value */ +){ + u32 t; /* a column type code */ + int nHdr; /* Size of the header in the record */ + int iHdr; /* Next unread header byte */ + int iField; /* Next unread data byte */ + int szField; /* Size of the current data field */ + int i; /* Column index */ + u8 *a = (u8*)pRec; /* Typecast byte array */ + Mem *pMem = *ppVal; /* Write result into this Mem object */ + + assert( iCol>0 ); + iHdr = getVarint32(a, nHdr); + if( nHdr>nRec || iHdr>=nHdr ) return SQLITE_CORRUPT_BKPT; + iField = nHdr; + for(i=0; i<=iCol; i++){ + iHdr += getVarint32(&a[iHdr], t); + testcase( iHdr==nHdr ); + testcase( iHdr==nHdr+1 ); + if( iHdr>nHdr ) return SQLITE_CORRUPT_BKPT; + szField = sqlite3VdbeSerialTypeLen(t); + iField += szField; + } + testcase( iField==nRec ); + testcase( iField==nRec+1 ); + if( iField>nRec ) return SQLITE_CORRUPT_BKPT; + if( pMem==0 ){ + pMem = *ppVal = sqlite3ValueNew(db); + if( pMem==0 ) return SQLITE_NOMEM; + } + sqlite3VdbeSerialGet(&a[iField-szField], t, pMem); + pMem->enc = ENC(db); + return SQLITE_OK; +} + /* ** Unless it is NULL, the argument must be an UnpackedRecord object returned ** by an earlier call to sqlite3Stat4ProbeSetValue(). This call deletes @@ -61434,18 +62298,35 @@ SQLITE_PRIVATE void sqlite3VdbeSwap(Vdbe *pA, Vdbe *pB){ } /* -** Resize the Vdbe.aOp array so that it is at least one op larger than -** it was. +** Resize the Vdbe.aOp array so that it is at least nOp elements larger +** than its current size. nOp is guaranteed to be less than or equal +** to 1024/sizeof(Op). ** ** If an out-of-memory error occurs while resizing the array, return -** SQLITE_NOMEM. In this case Vdbe.aOp and Vdbe.nOpAlloc remain +** SQLITE_NOMEM. In this case Vdbe.aOp and Parse.nOpAlloc remain ** unchanged (this is so that any opcodes already allocated can be ** correctly deallocated along with the rest of the Vdbe). */ -static int growOpArray(Vdbe *v){ +static int growOpArray(Vdbe *v, int nOp){ VdbeOp *pNew; Parse *p = v->pParse; + + /* The SQLITE_TEST_REALLOC_STRESS compile-time option is designed to force + ** more frequent reallocs and hence provide more opportunities for + ** simulated OOM faults. SQLITE_TEST_REALLOC_STRESS is generally used + ** during testing only. With SQLITE_TEST_REALLOC_STRESS grow the op array + ** by the minimum* amount required until the size reaches 512. Normal + ** operation (without SQLITE_TEST_REALLOC_STRESS) is to double the current + ** size of the op array or add 1KB of space, whichever is smaller. */ +#ifdef SQLITE_TEST_REALLOC_STRESS + int nNew = (p->nOpAlloc>=512 ? p->nOpAlloc*2 : p->nOpAlloc+nOp); +#else int nNew = (p->nOpAlloc ? p->nOpAlloc*2 : (int)(1024/sizeof(Op))); + UNUSED_PARAMETER(nOp); +#endif + + assert( nOp<=(1024/sizeof(Op)) ); + assert( nNew>=(p->nOpAlloc+nOp) ); pNew = sqlite3DbRealloc(p->db, v->aOp, nNew*sizeof(Op)); if( pNew ){ p->nOpAlloc = sqlite3DbMallocSize(p->db, pNew)/sizeof(Op); @@ -61489,7 +62370,7 @@ SQLITE_PRIVATE int sqlite3VdbeAddOp3(Vdbe *p, int op, int p1, int p2, int p3){ assert( p->magic==VDBE_MAGIC_INIT ); assert( op>0 && op<0xff ); if( p->pParse->nOpAlloc<=i ){ - if( growOpArray(p) ){ + if( growOpArray(p, 1) ){ return 1; } } @@ -61626,7 +62507,7 @@ SQLITE_PRIVATE void sqlite3VdbeResolveLabel(Vdbe *v, int x){ int j = -1-x; assert( v->magic==VDBE_MAGIC_INIT ); assert( jnLabel ); - if( j>=0 && p->aLabel ){ + if( ALWAYS(j>=0) && p->aLabel ){ p->aLabel[j] = v->nOp; } p->iFixedOp = v->nOp - 1; @@ -61849,7 +62730,7 @@ static void resolveP2Values(Vdbe *p, int *pMaxFuncArgs){ pParse->aLabel = 0; pParse->nLabel = 0; *pMaxFuncArgs = nMaxArgs; - assert( p->bIsReader!=0 || p->btreeMask==0 ); + assert( p->bIsReader!=0 || DbMaskAllZero(p->btreeMask) ); } /* @@ -61876,7 +62757,7 @@ SQLITE_PRIVATE VdbeOp *sqlite3VdbeTakeOpArray(Vdbe *p, int *pnOp, int *pnMaxArg) assert( aOp && !p->db->mallocFailed ); /* Check that sqlite3VdbeUsesBtree() was not called on this VM */ - assert( p->btreeMask==0 ); + assert( DbMaskAllZero(p->btreeMask) ); resolveP2Values(p, pnMaxArg); *pnOp = p->nOp; @@ -61891,7 +62772,7 @@ SQLITE_PRIVATE VdbeOp *sqlite3VdbeTakeOpArray(Vdbe *p, int *pnOp, int *pnMaxArg) SQLITE_PRIVATE int sqlite3VdbeAddOpList(Vdbe *p, int nOp, VdbeOpList const *aOp, int iLineno){ int addr; assert( p->magic==VDBE_MAGIC_INIT ); - if( p->nOp + nOp > p->pParse->nOpAlloc && growOpArray(p) ){ + if( p->nOp + nOp > p->pParse->nOpAlloc && growOpArray(p, nOp) ){ return 0; } addr = p->nOp; @@ -62076,7 +62957,7 @@ SQLITE_PRIVATE void sqlite3VdbeLinkSubProgram(Vdbe *pVdbe, SubProgram *p){ ** Change the opcode at addr into OP_Noop */ SQLITE_PRIVATE void sqlite3VdbeChangeToNoop(Vdbe *p, int addr){ - if( p->aOp ){ + if( addrnOp ){ VdbeOp *pOp = &p->aOp[addr]; sqlite3 *db = p->db; freeP4(db, pOp->p4type, pOp->p4.p); @@ -62133,7 +63014,9 @@ SQLITE_PRIVATE void sqlite3VdbeChangeP4(Vdbe *p, int addr, const char *zP4, int addr = p->nOp - 1; } pOp = &p->aOp[addr]; - assert( pOp->p4type==P4_NOTUSED || pOp->p4type==P4_INT32 ); + assert( pOp->p4type==P4_NOTUSED + || pOp->p4type==P4_INT32 + || pOp->p4type==P4_KEYINFO ); freeP4(db, pOp->p4type, pOp->p4.p); pOp->p4.p = 0; if( n==P4_INT32 ){ @@ -62459,9 +63342,9 @@ static char *displayP4(Op *pOp, char *zTemp, int nTemp){ SQLITE_PRIVATE void sqlite3VdbeUsesBtree(Vdbe *p, int i){ assert( i>=0 && idb->nDb && i<(int)sizeof(yDbMask)*8 ); assert( i<(int)sizeof(p->btreeMask)*8 ); - p->btreeMask |= ((yDbMask)1)<btreeMask, i); if( i!=1 && sqlite3BtreeSharable(p->db->aDb[i].pBt) ){ - p->lockMask |= ((yDbMask)1)<lockMask, i); } } @@ -62489,16 +63372,15 @@ SQLITE_PRIVATE void sqlite3VdbeUsesBtree(Vdbe *p, int i){ */ SQLITE_PRIVATE void sqlite3VdbeEnter(Vdbe *p){ int i; - yDbMask mask; sqlite3 *db; Db *aDb; int nDb; - if( p->lockMask==0 ) return; /* The common case */ + if( DbMaskAllZero(p->lockMask) ) return; /* The common case */ db = p->db; aDb = db->aDb; nDb = db->nDb; - for(i=0, mask=1; ilockMask)!=0 && ALWAYS(aDb[i].pBt!=0) ){ + for(i=0; ilockMask,i) && ALWAYS(aDb[i].pBt!=0) ){ sqlite3BtreeEnter(aDb[i].pBt); } } @@ -62511,16 +63393,15 @@ SQLITE_PRIVATE void sqlite3VdbeEnter(Vdbe *p){ */ SQLITE_PRIVATE void sqlite3VdbeLeave(Vdbe *p){ int i; - yDbMask mask; sqlite3 *db; Db *aDb; int nDb; - if( p->lockMask==0 ) return; /* The common case */ + if( DbMaskAllZero(p->lockMask) ) return; /* The common case */ db = p->db; aDb = db->aDb; nDb = db->nDb; - for(i=0, mask=1; ilockMask)!=0 && ALWAYS(aDb[i].pBt!=0) ){ + for(i=0; ilockMask,i) && ALWAYS(aDb[i].pBt!=0) ){ sqlite3BtreeLeave(aDb[i].pBt); } } @@ -63491,7 +64372,7 @@ static void checkActiveVdbeCnt(sqlite3 *db){ int nRead = 0; p = db->pVdbe; while( p ){ - if( p->magic==VDBE_MAGIC_RUN && p->pc>=0 ){ + if( sqlite3_stmt_busy((sqlite3_stmt*)p) ){ cnt++; if( p->readOnly==0 ) nWrite++; if( p->bIsReader ) nRead++; @@ -63651,7 +64532,6 @@ SQLITE_PRIVATE int sqlite3VdbeHalt(Vdbe *p){ /* Check for one of the special errors */ mrc = p->rc & 0xff; - assert( p->rc!=SQLITE_IOERR_BLOCKED ); /* This error no longer exists */ isSpecialError = mrc==SQLITE_NOMEM || mrc==SQLITE_IOERR || mrc==SQLITE_INTERRUPT || mrc==SQLITE_FULL; if( isSpecialError ){ @@ -64083,7 +64963,7 @@ SQLITE_PRIVATE int sqlite3VdbeCursorMoveto(VdbeCursor *p){ if( rc ) return rc; if( hasMoved ){ p->cacheStatus = CACHE_STALE; - p->nullRow = 1; + if( hasMoved==2 ) p->nullRow = 1; } } return SQLITE_OK; @@ -64136,7 +65016,7 @@ SQLITE_PRIVATE int sqlite3VdbeCursorMoveto(VdbeCursor *p){ */ SQLITE_PRIVATE u32 sqlite3VdbeSerialType(Mem *pMem, int file_format){ int flags = pMem->flags; - int n; + u32 n; if( flags&MEM_Null ){ return 0; @@ -64166,11 +65046,11 @@ SQLITE_PRIVATE u32 sqlite3VdbeSerialType(Mem *pMem, int file_format){ return 7; } assert( pMem->db->mallocFailed || flags&(MEM_Str|MEM_Blob) ); - n = pMem->n; + assert( pMem->n>=0 ); + n = (u32)pMem->n; if( flags & MEM_Zero ){ n += pMem->u.nZero; } - assert( n>=0 ); return ((n*2) + 12 + ((flags&MEM_Str)!=0)); } @@ -64753,10 +65633,13 @@ static i64 vdbeRecordDecodeInt(u32 serial_type, const u8 *aKey){ ** Key1 and Key2 do not have to contain the same number of fields. If all ** fields that appear in both keys are equal, then pPKey2->default_rc is ** returned. +** +** If database corruption is discovered, set pPKey2->isCorrupt to non-zero +** and return 0. */ SQLITE_PRIVATE int sqlite3VdbeRecordCompare( int nKey1, const void *pKey1, /* Left key */ - const UnpackedRecord *pPKey2, /* Right key */ + UnpackedRecord *pPKey2, /* Right key */ int bSkip /* If true, skip the first field */ ){ u32 d1; /* Offset into aKey[] of next data element */ @@ -64782,6 +65665,10 @@ SQLITE_PRIVATE int sqlite3VdbeRecordCompare( }else{ idx1 = getVarint32(aKey1, szHdr1); d1 = szHdr1; + if( d1>(unsigned)nKey1 ){ + pPKey2->isCorrupt = (u8)SQLITE_CORRUPT_BKPT; + return 0; /* Corruption */ + } i = 0; } @@ -64858,7 +65745,8 @@ SQLITE_PRIVATE int sqlite3VdbeRecordCompare( testcase( (d1+mem1.n)==(unsigned)nKey1 ); testcase( (d1+mem1.n+1)==(unsigned)nKey1 ); if( (d1+mem1.n) > (unsigned)nKey1 ){ - rc = 1; /* Corruption */ + pPKey2->isCorrupt = (u8)SQLITE_CORRUPT_BKPT; + return 0; /* Corruption */ }else if( pKeyInfo->aColl[i] ){ mem1.enc = pKeyInfo->enc; mem1.db = pKeyInfo->db; @@ -64884,7 +65772,8 @@ SQLITE_PRIVATE int sqlite3VdbeRecordCompare( testcase( (d1+nStr)==(unsigned)nKey1 ); testcase( (d1+nStr+1)==(unsigned)nKey1 ); if( (d1+nStr) > (unsigned)nKey1 ){ - rc = 1; /* Corruption */ + pPKey2->isCorrupt = (u8)SQLITE_CORRUPT_BKPT; + return 0; /* Corruption */ }else{ int nCmp = MIN(nStr, pRhs->n); rc = memcmp(&aKey1[d1], pRhs->z, nCmp); @@ -64928,6 +65817,7 @@ SQLITE_PRIVATE int sqlite3VdbeRecordCompare( ** value. */ assert( CORRUPT_DB || pPKey2->default_rc==vdbeRecordCompareDebug(nKey1, pKey1, pPKey2) + || pKeyInfo->db->mallocFailed ); return pPKey2->default_rc; } @@ -64937,10 +65827,13 @@ SQLITE_PRIVATE int sqlite3VdbeRecordCompare( ** that (a) the first field of pPKey2 is an integer, and (b) the ** size-of-header varint at the start of (pKey1/nKey1) fits in a single ** byte (i.e. is less than 128). +** +** To avoid concerns about buffer overreads, this routine is only used +** on schemas where the maximum valid header size is 63 bytes or less. */ static int vdbeRecordCompareInt( int nKey1, const void *pKey1, /* Left key */ - const UnpackedRecord *pPKey2, /* Right key */ + UnpackedRecord *pPKey2, /* Right key */ int bSkip /* Ignored */ ){ const u8 *aKey = &((const u8*)pKey1)[*(const u8*)pKey1 & 0x3F]; @@ -64953,6 +65846,7 @@ static int vdbeRecordCompareInt( UNUSED_PARAMETER(bSkip); assert( bSkip==0 ); + assert( (*(u8*)pKey1)<=0x3F || CORRUPT_DB ); switch( serial_type ){ case 1: { /* 1-byte signed integer */ lhs = ONE_BYTE_INT(aKey); @@ -65037,7 +65931,7 @@ static int vdbeRecordCompareInt( */ static int vdbeRecordCompareString( int nKey1, const void *pKey1, /* Left key */ - const UnpackedRecord *pPKey2, /* Right key */ + UnpackedRecord *pPKey2, /* Right key */ int bSkip ){ const u8 *aKey1 = (const u8*)pKey1; @@ -65058,7 +65952,10 @@ static int vdbeRecordCompareString( int szHdr = aKey1[0]; nStr = (serial_type-12) / 2; - if( (szHdr + nStr) > nKey1 ) return 0; /* Corruption */ + if( (szHdr + nStr) > nKey1 ){ + pPKey2->isCorrupt = (u8)SQLITE_CORRUPT_BKPT; + return 0; /* Corruption */ + } nCmp = MIN( pPKey2->aMem[0].n, nStr ); res = memcmp(&aKey1[szHdr], pPKey2->aMem[0].z, nCmp); @@ -65086,6 +65983,7 @@ static int vdbeRecordCompareString( || (res<0 && vdbeRecordCompareDebug(nKey1, pKey1, pPKey2)<0) || (res>0 && vdbeRecordCompareDebug(nKey1, pKey1, pPKey2)>0) || CORRUPT_DB + || pPKey2->pKeyInfo->db->mallocFailed ); return res; } @@ -65223,7 +66121,7 @@ idx_rowid_corruption: */ SQLITE_PRIVATE int sqlite3VdbeIdxKeyCompare( VdbeCursor *pC, /* The cursor to compare against */ - const UnpackedRecord *pUnpacked, /* Unpacked version of key */ + UnpackedRecord *pUnpacked, /* Unpacked version of key */ int *res /* Write the comparison result here */ ){ i64 nCellKey = 0; @@ -66670,7 +67568,7 @@ SQLITE_API int sqlite3_stmt_readonly(sqlite3_stmt *pStmt){ */ SQLITE_API int sqlite3_stmt_busy(sqlite3_stmt *pStmt){ Vdbe *v = (Vdbe*)pStmt; - return v!=0 && v->pc>0 && v->magic==VDBE_MAGIC_RUN; + return v!=0 && v->pc>=0 && v->magic==VDBE_MAGIC_RUN; } /* @@ -67120,6 +68018,12 @@ SQLITE_API int sqlite3_found_count = 0; ** branch can go. It is usually 2. "I" is the direction the branch ** goes. 0 means falls through. 1 means branch is taken. 2 means the ** second alternative branch is taken. +** +** iSrcLine is the source code line (from the __LINE__ macro) that +** generated the VDBE instruction. This instrumentation assumes that all +** source code is in a single file (the amalgamation). Special values 1 +** and 2 for the iSrcLine parameter mean that this particular branch is +** always taken or never taken, respectively. */ #if !defined(SQLITE_VDBE_COVERAGE) # define VdbeBranchTaken(I,M) @@ -67228,21 +68132,21 @@ static VdbeCursor *allocateCursor( ** look like a number, leave it alone. */ static void applyNumericAffinity(Mem *pRec){ - if( (pRec->flags & (MEM_Real|MEM_Int))==0 ){ - double rValue; - i64 iValue; - u8 enc = pRec->enc; - if( (pRec->flags&MEM_Str)==0 ) return; - if( sqlite3AtoF(pRec->z, &rValue, pRec->n, enc)==0 ) return; - if( 0==sqlite3Atoi64(pRec->z, &iValue, pRec->n, enc) ){ - pRec->u.i = iValue; - pRec->flags |= MEM_Int; - }else{ - pRec->r = rValue; - pRec->flags |= MEM_Real; - } + double rValue; + i64 iValue; + u8 enc = pRec->enc; + if( (pRec->flags&MEM_Str)==0 ) return; + if( sqlite3AtoF(pRec->z, &rValue, pRec->n, enc)==0 ) return; + if( 0==sqlite3Atoi64(pRec->z, &iValue, pRec->n, enc) ){ + pRec->u.i = iValue; + pRec->flags |= MEM_Int; + }else{ + pRec->r = rValue; + pRec->flags |= MEM_Real; } } +#define ApplyNumericAffinity(X) \ + if(((X)->flags&(MEM_Real|MEM_Int))==0){applyNumericAffinity(X);} /* ** Processing is determine by the affinity parameter: @@ -67279,7 +68183,7 @@ static void applyAffinity( }else if( affinity!=SQLITE_AFF_NONE ){ assert( affinity==SQLITE_AFF_INTEGER || affinity==SQLITE_AFF_REAL || affinity==SQLITE_AFF_NUMERIC ); - applyNumericAffinity(pRec); + ApplyNumericAffinity(pRec); if( pRec->flags & MEM_Real ){ sqlite3VdbeIntegerAffinity(pRec); } @@ -67314,6 +68218,29 @@ SQLITE_PRIVATE void sqlite3ValueApplyAffinity( applyAffinity((Mem *)pVal, affinity, enc); } +/* +** Return the numeric type for pMem, either MEM_Int or MEM_Real or both or +** none. +** +** Unlike applyNumericAffinity(), this routine does not modify pMem->flags. +** But it does set pMem->r and pMem->u.i appropriately. +*/ +static u16 numericType(Mem *pMem){ + if( pMem->flags & (MEM_Int|MEM_Real) ){ + return pMem->flags & (MEM_Int|MEM_Real); + } + if( pMem->flags & (MEM_Str|MEM_Blob) ){ + if( sqlite3AtoF(pMem->z, &pMem->r, pMem->n, pMem->enc)==0 ){ + return 0; + } + if( sqlite3Atoi64(pMem->z, &pMem->u.i, pMem->n, pMem->enc)==SQLITE_OK ){ + return MEM_Int; + } + return MEM_Real; + } + return 0; +} + #ifdef SQLITE_DEBUG /* ** Write a nice string representation of the contents of cell pMem @@ -67837,12 +68764,14 @@ case OP_Return: { /* in1 */ /* Opcode: InitCoroutine P1 P2 P3 * * ** -** Set up register P1 so that it will OP_Yield to the co-routine +** Set up register P1 so that it will Yield to the coroutine ** located at address P3. ** -** If P2!=0 then the co-routine implementation immediately follows -** this opcode. So jump over the co-routine implementation to +** If P2!=0 then the coroutine implementation immediately follows +** this opcode. So jump over the coroutine implementation to ** address P2. +** +** See also: EndCoroutine */ case OP_InitCoroutine: { /* jump */ assert( pOp->p1>0 && pOp->p1<=(p->nMem-p->nCursor) ); @@ -67858,9 +68787,11 @@ case OP_InitCoroutine: { /* jump */ /* Opcode: EndCoroutine P1 * * * * ** -** The instruction at the address in register P1 is an OP_Yield. -** Jump to the P2 parameter of that OP_Yield. +** The instruction at the address in register P1 is a Yield. +** Jump to the P2 parameter of that Yield. ** After the jump, register P1 becomes undefined. +** +** See also: InitCoroutine */ case OP_EndCoroutine: { /* in1 */ VdbeOp *pCaller; @@ -67877,11 +68808,16 @@ case OP_EndCoroutine: { /* in1 */ /* Opcode: Yield P1 P2 * * * ** -** Swap the program counter with the value in register P1. +** Swap the program counter with the value in register P1. This +** has the effect of yielding to a coroutine. ** -** If the co-routine ends with OP_Yield or OP_Return then continue -** to the next instruction. But if the co-routine ends with -** OP_EndCoroutine, jump immediately to P2. +** If the coroutine that is launched by this instruction ends with +** Yield or Return then continue to the next instruction. But if +** the coroutine launched by this instruction ends with +** EndCoroutine, then jump to P2 rather than continuing with the +** next instruction. +** +** See also: InitCoroutine */ case OP_Yield: { /* in1, jump */ int pcDest; @@ -68044,7 +68980,7 @@ case OP_Real: { /* same as TK_FLOAT, out2-prerelease */ ** Synopsis: r[P2]='P4' ** ** P4 points to a nul terminated UTF-8 string. This opcode is transformed -** into an OP_String before it is executed for the first time. During +** into a String before it is executed for the first time. During ** this transformation, the length of string P4 is computed and stored ** as the P1 parameter. */ @@ -68173,10 +69109,11 @@ case OP_Variable: { /* out2-prerelease */ /* Opcode: Move P1 P2 P3 * * ** Synopsis: r[P2@P3]=r[P1@P3] ** -** Move the values in register P1..P1+P3 over into -** registers P2..P2+P3. Registers P1..P1+P3 are +** Move the P3 values in register P1..P1+P3-1 over into +** registers P2..P2+P3-1. Registers P1..P1+P3-1 are ** left holding a NULL. It is an error for register ranges -** P1..P1+P3 and P2..P2+P3 to overlap. +** P1..P1+P3-1 and P2..P2+P3-1 to overlap. It is an error +** for P3 to be less than 1. */ case OP_Move: { char *zMalloc; /* Holding variable for allocated memory */ @@ -68187,7 +69124,7 @@ case OP_Move: { n = pOp->p3; p1 = pOp->p1; p2 = pOp->p2; - assert( n>=0 && p1>0 && p2>0 ); + assert( n>0 && p1>0 && p2>0 ); assert( p1+n<=p2 || p2+n<=p1 ); pIn1 = &aMem[p1]; @@ -68211,7 +69148,7 @@ case OP_Move: { REGISTER_TRACE(p2++, pOut); pIn1++; pOut++; - }while( n-- ); + }while( --n ); break; } @@ -68443,20 +69380,22 @@ case OP_Multiply: /* same as TK_STAR, in1, in2, out3 */ case OP_Divide: /* same as TK_SLASH, in1, in2, out3 */ case OP_Remainder: { /* same as TK_REM, in1, in2, out3 */ char bIntint; /* Started out as two integer operands */ - int flags; /* Combined MEM_* flags from both inputs */ + u16 flags; /* Combined MEM_* flags from both inputs */ + u16 type1; /* Numeric type of left operand */ + u16 type2; /* Numeric type of right operand */ i64 iA; /* Integer value of left operand */ i64 iB; /* Integer value of right operand */ double rA; /* Real value of left operand */ double rB; /* Real value of right operand */ pIn1 = &aMem[pOp->p1]; - applyNumericAffinity(pIn1); + type1 = numericType(pIn1); pIn2 = &aMem[pOp->p2]; - applyNumericAffinity(pIn2); + type2 = numericType(pIn2); pOut = &aMem[pOp->p3]; flags = pIn1->flags | pIn2->flags; if( (flags & MEM_Null)!=0 ) goto arithmetic_result_is_null; - if( (pIn1->flags & pIn2->flags & MEM_Int)==MEM_Int ){ + if( (type1 & type2 & MEM_Int)!=0 ){ iA = pIn1->u.i; iB = pIn2->u.i; bIntint = 1; @@ -68512,7 +69451,7 @@ fp_math: } pOut->r = rB; MemSetTypeFlag(pOut, MEM_Real); - if( (flags & MEM_Real)==0 && !bIntint ){ + if( ((type1|type2)&MEM_Real)==0 && !bIntint ){ sqlite3VdbeIntegerAffinity(pOut); } #endif @@ -69088,6 +70027,7 @@ case OP_Permutation: { } /* Opcode: Compare P1 P2 P3 P4 P5 +** Synopsis: r[P1@P3] <-> r[P2@P3] ** ** Compare two vectors of registers in reg(P1)..reg(P1+P3-1) (call this ** vector "A") and in reg(P2)..reg(P2+P3-1) ("B"). Save the result of @@ -69262,10 +70202,14 @@ case OP_BitNot: { /* same as TK_BITNOT, in1, out2 */ /* Opcode: Once P1 P2 * * * ** -** Check if OP_Once flag P1 is set. If so, jump to instruction P2. Otherwise, -** set the flag and fall through to the next instruction. In other words, -** this opcode causes all following opcodes up through P2 (but not including -** P2) to run just once and to be skipped on subsequent times through the loop. +** Check the "once" flag number P1. If it is set, jump to instruction P2. +** Otherwise, set the flag and fall through to the next instruction. +** In other words, this opcode causes all following opcodes up through P2 +** (but not including P2) to run just once and to be skipped on subsequent +** times through the loop. +** +** All "once" flags are initially cleared whenever a prepared statement +** first begins to run. */ case OP_Once: { /* jump */ assert( pOp->p1nOnceFlag ); @@ -69282,13 +70226,13 @@ case OP_Once: { /* jump */ ** ** Jump to P2 if the value in register P1 is true. The value ** is considered true if it is numeric and non-zero. If the value -** in P1 is NULL then take the jump if P3 is non-zero. +** in P1 is NULL then take the jump if and only if P3 is non-zero. */ /* Opcode: IfNot P1 P2 P3 * * ** ** Jump to P2 if the value in register P1 is False. The value ** is considered false if it has a numeric value of zero. If the value -** in P1 is NULL then take the jump if P3 is zero. +** in P1 is NULL then take the jump if and only if P3 is non-zero. */ case OP_If: /* jump, in1 */ case OP_IfNot: { /* jump, in1 */ @@ -70100,7 +71044,7 @@ case OP_Transaction: { assert( p->bIsReader ); assert( p->readOnly==0 || pOp->p2==0 ); assert( pOp->p1>=0 && pOp->p1nDb ); - assert( (p->btreeMask & (((yDbMask)1)<p1))!=0 ); + assert( DbMaskTest(p->btreeMask, pOp->p1) ); if( pOp->p2 && (db->flags & SQLITE_QueryOnly)!=0 ){ rc = SQLITE_READONLY; goto abort_due_to_error; @@ -70195,7 +71139,7 @@ case OP_ReadCookie: { /* out2-prerelease */ assert( pOp->p3=0 && iDbnDb ); assert( db->aDb[iDb].pBt!=0 ); - assert( (p->btreeMask & (((yDbMask)1)<btreeMask, iDb) ); sqlite3BtreeGetMeta(db->aDb[iDb].pBt, iCookie, (u32 *)&iMeta); pOut->u.i = iMeta; @@ -70216,7 +71160,7 @@ case OP_SetCookie: { /* in3 */ Db *pDb; assert( pOp->p2p1>=0 && pOp->p1nDb ); - assert( (p->btreeMask & (((yDbMask)1)<p1))!=0 ); + assert( DbMaskTest(p->btreeMask, pOp->p1) ); assert( p->readOnly==0 ); pDb = &db->aDb[pOp->p1]; assert( pDb->pBt!=0 ); @@ -70271,7 +71215,21 @@ case OP_SetCookie: { /* in3 */ ** sequence of the index being opened. Otherwise, if P4 is an integer ** value, it is set to the number of columns in the table. ** -** See also OpenWrite. +** See also: OpenWrite, ReopenIdx +*/ +/* Opcode: ReopenIdx P1 P2 P3 P4 P5 +** Synopsis: root=P2 iDb=P3 +** +** The ReopenIdx opcode works exactly like ReadOpen except that it first +** checks to see if the cursor on P1 is already open with a root page +** number of P2 and if it is this opcode becomes a no-op. In other words, +** if the cursor is already open, do not reopen it. +** +** The ReopenIdx opcode may only be used with P5==0 and with P4 being +** a P4_KEYINFO object. Furthermore, the P3 value must be the same as +** every other ReopenIdx or OpenRead for the same cursor number. +** +** See the OpenRead opcode documentation for additional information. */ /* Opcode: OpenWrite P1 P2 P3 P4 P5 ** Synopsis: root=P2 iDb=P3 @@ -70293,6 +71251,19 @@ case OP_SetCookie: { /* in3 */ ** ** See also OpenRead. */ +case OP_ReopenIdx: { + VdbeCursor *pCur; + + assert( pOp->p5==0 ); + assert( pOp->p4type==P4_KEYINFO ); + pCur = p->apCsr[pOp->p1]; + if( pCur && pCur->pgnoRoot==(u32)pOp->p2 ){ + assert( pCur->iDb==pOp->p3 ); /* Guaranteed by the code generator */ + break; + } + /* If the cursor is not currently open or is open on a different + ** index, then fall through into OP_OpenRead to force a reopen */ +} case OP_OpenRead: case OP_OpenWrite: { int nField; @@ -70307,7 +71278,8 @@ case OP_OpenWrite: { assert( (pOp->p5&(OPFLAG_P2ISREG|OPFLAG_BULKCSR))==pOp->p5 ); assert( pOp->opcode==OP_OpenWrite || pOp->p5==0 ); assert( p->bIsReader ); - assert( pOp->opcode==OP_OpenRead || p->readOnly==0 ); + assert( pOp->opcode==OP_OpenRead || pOp->opcode==OP_ReopenIdx + || p->readOnly==0 ); if( p->expired ){ rc = SQLITE_ABORT; @@ -70319,7 +71291,7 @@ case OP_OpenWrite: { p2 = pOp->p2; iDb = pOp->p3; assert( iDb>=0 && iDbnDb ); - assert( (p->btreeMask & (((yDbMask)1)<btreeMask, iDb) ); pDb = &db->aDb[iDb]; pX = pDb->pBt; assert( pX!=0 ); @@ -70364,6 +71336,7 @@ case OP_OpenWrite: { if( pCur==0 ) goto no_mem; pCur->nullRow = 1; pCur->isOrdered = 1; + pCur->pgnoRoot = p2; rc = sqlite3BtreeCursor(pX, p2, wrFlag, pKeyInfo, pCur->pCursor); pCur->pKeyInfo = pKeyInfo; assert( OPFLAG_BULKCSR==BTREE_BULKLOAD ); @@ -70423,6 +71396,7 @@ case OP_OpenEphemeral: { pCx = allocateCursor(p, pOp->p1, pOp->p2, -1, 1); if( pCx==0 ) goto no_mem; pCx->nullRow = 1; + pCx->isEphemeral = 1; rc = sqlite3BtreeOpen(db->pVfs, 0, db, &pCx->pBt, BTREE_OMIT_JOURNAL | BTREE_SINGLE | pOp->p5, vfsFlags); if( rc==SQLITE_OK ){ @@ -70517,7 +71491,7 @@ case OP_Close: { break; } -/* Opcode: SeekGe P1 P2 P3 P4 * +/* Opcode: SeekGE P1 P2 P3 P4 * ** Synopsis: key=r[P3@P4] ** ** If cursor P1 refers to an SQL table (B-Tree that uses integer keys), @@ -70529,9 +71503,13 @@ case OP_Close: { ** is greater than or equal to the key value. If there are no records ** greater than or equal to the key and P2 is not zero, then jump to P2. ** -** See also: Found, NotFound, Distinct, SeekLt, SeekGt, SeekLe +** This opcode leaves the cursor configured to move in forward order, +** from the beginning toward the end. In other words, the cursor is +** configured to use Next, not Prev. +** +** See also: Found, NotFound, SeekLt, SeekGt, SeekLe */ -/* Opcode: SeekGt P1 P2 P3 P4 * +/* Opcode: SeekGT P1 P2 P3 P4 * ** Synopsis: key=r[P3@P4] ** ** If cursor P1 refers to an SQL table (B-Tree that uses integer keys), @@ -70543,9 +71521,13 @@ case OP_Close: { ** is greater than the key value. If there are no records greater than ** the key and P2 is not zero, then jump to P2. ** -** See also: Found, NotFound, Distinct, SeekLt, SeekGe, SeekLe +** This opcode leaves the cursor configured to move in forward order, +** from the beginning toward the end. In other words, the cursor is +** configured to use Next, not Prev. +** +** See also: Found, NotFound, SeekLt, SeekGe, SeekLe */ -/* Opcode: SeekLt P1 P2 P3 P4 * +/* Opcode: SeekLT P1 P2 P3 P4 * ** Synopsis: key=r[P3@P4] ** ** If cursor P1 refers to an SQL table (B-Tree that uses integer keys), @@ -70557,9 +71539,13 @@ case OP_Close: { ** is less than the key value. If there are no records less than ** the key and P2 is not zero, then jump to P2. ** -** See also: Found, NotFound, Distinct, SeekGt, SeekGe, SeekLe +** This opcode leaves the cursor configured to move in reverse order, +** from the end toward the beginning. In other words, the cursor is +** configured to use Prev, not Next. +** +** See also: Found, NotFound, SeekGt, SeekGe, SeekLe */ -/* Opcode: SeekLe P1 P2 P3 P4 * +/* Opcode: SeekLE P1 P2 P3 P4 * ** Synopsis: key=r[P3@P4] ** ** If cursor P1 refers to an SQL table (B-Tree that uses integer keys), @@ -70571,7 +71557,11 @@ case OP_Close: { ** is less than or equal to the key value. If there are no records ** less than or equal to the key and P2 is not zero, then jump to P2. ** -** See also: Found, NotFound, Distinct, SeekGt, SeekGe, SeekLt +** This opcode leaves the cursor configured to move in reverse order, +** from the end toward the beginning. In other words, the cursor is +** configured to use Prev, not Next. +** +** See also: Found, NotFound, SeekGt, SeekGe, SeekLt */ case OP_SeekLT: /* jump, in3 */ case OP_SeekLE: /* jump, in3 */ @@ -70596,12 +71586,15 @@ case OP_SeekGT: { /* jump, in3 */ assert( pC->pCursor!=0 ); oc = pOp->opcode; pC->nullRow = 0; +#ifdef SQLITE_DEBUG + pC->seekOp = pOp->opcode; +#endif if( pC->isTable ){ /* The input value in P3 might be of any type: integer, real, string, ** blob, or NULL. But it needs to be an integer before we can do ** the seek, so covert it. */ pIn3 = &aMem[pOp->p3]; - applyNumericAffinity(pIn3); + ApplyNumericAffinity(pIn3); iKey = sqlite3VdbeIntValue(pIn3); pC->rowidIsValid = 0; @@ -70751,6 +71744,10 @@ case OP_Seek: { /* in2 */ ** is a prefix of any entry in P1 then a jump is made to P2 and ** P1 is left pointing at the matching entry. ** +** This operation leaves the cursor in a state where it can be +** advanced in the forward direction. The Next instruction will work, +** but not the Prev instruction. +** ** See also: NotFound, NoConflict, NotExists. SeekGe */ /* Opcode: NotFound P1 P2 P3 P4 * @@ -70766,6 +71763,10 @@ case OP_Seek: { /* in2 */ ** falls through to the next instruction and P1 is left pointing at the ** matching entry. ** +** This operation leaves the cursor in a state where it cannot be +** advanced in either direction. In other words, the Next and Prev +** opcodes do not work after this operation. +** ** See also: Found, NotExists, NoConflict */ /* Opcode: NoConflict P1 P2 P3 P4 * @@ -70785,6 +71786,10 @@ case OP_Seek: { /* in2 */ ** This opcode is similar to OP_NotFound with the exceptions that the ** branch is always taken if any part of the search key input is NULL. ** +** This operation leaves the cursor in a state where it cannot be +** advanced in either direction. In other words, the Next and Prev +** opcodes do not work after this operation. +** ** See also: NotFound, Found, NotExists */ case OP_NoConflict: /* jump, in3 */ @@ -70807,6 +71812,9 @@ case OP_Found: { /* jump, in3 */ assert( pOp->p4type==P4_INT32 ); pC = p->apCsr[pOp->p1]; assert( pC!=0 ); +#ifdef SQLITE_DEBUG + pC->seekOp = pOp->opcode; +#endif pIn3 = &aMem[pOp->p3]; assert( pC->pCursor!=0 ); assert( pC->isTable==0 ); @@ -70878,6 +71886,10 @@ case OP_Found: { /* jump, in3 */ ** The OP_NotFound opcode performs the same operation on index btrees ** (with arbitrary multi-value keys). ** +** This opcode leaves the cursor in a state where it cannot be advanced +** in either direction. In other words, the Next and Prev opcodes will +** not work following this opcode. +** ** See also: Found, NotFound, NoConflict */ case OP_NotExists: { /* jump, in3 */ @@ -70891,6 +71903,9 @@ case OP_NotExists: { /* jump, in3 */ assert( pOp->p1>=0 && pOp->p1nCursor ); pC = p->apCsr[pOp->p1]; assert( pC!=0 ); +#ifdef SQLITE_DEBUG + pC->seekOp = 0; +#endif assert( pC->isTable ); assert( pC->pseudoTableReg==0 ); pCrsr = pC->pCursor; @@ -70913,7 +71928,7 @@ case OP_NotExists: { /* jump, in3 */ } /* Opcode: Sequence P1 P2 * * * -** Synopsis: r[P2]=rowid +** Synopsis: r[P2]=cursor[P1].ctr++ ** ** Find the next available sequence number for cursor P1. ** Write the sequence number into register P2. @@ -71193,7 +72208,7 @@ case OP_InsertInt: { ** The cursor will be left pointing at either the next or the previous ** record in the table. If it is left pointing at the next record, then ** the next Next instruction will be a no-op. Hence it is OK to delete -** a record from within an Next loop. +** a record from within a Next loop. ** ** If the OPFLAG_NCHANGE flag of P2 is set, then the row change count is ** incremented (otherwise not). @@ -71253,12 +72268,12 @@ case OP_ResetCount: { } /* Opcode: SorterCompare P1 P2 P3 P4 -** Synopsis: if key(P1)!=rtrim(r[P3],P4) goto P2 +** Synopsis: if key(P1)!=trim(r[P3],P4) goto P2 ** ** P1 is a sorter cursor. This instruction compares a prefix of the -** the record blob in register P3 against a prefix of the entry that -** the sorter cursor currently points to. The final P4 fields of both -** the P3 and sorter record are ignored. +** record blob in register P3 against a prefix of the entry that +** the sorter cursor currently points to. Only the first P4 fields +** of r[P3] and the sorter record are compared. ** ** If either P3 or the sorter contains a NULL in one of their significant ** fields (not counting the P4 fields at the end which are ignored) then @@ -71270,14 +72285,14 @@ case OP_ResetCount: { case OP_SorterCompare: { VdbeCursor *pC; int res; - int nIgnore; + int nKeyCol; pC = p->apCsr[pOp->p1]; assert( isSorter(pC) ); assert( pOp->p4type==P4_INT32 ); pIn3 = &aMem[pOp->p3]; - nIgnore = pOp->p4.i; - rc = sqlite3VdbeSorterCompare(pC, pIn3, nIgnore, &res); + nKeyCol = pOp->p4.i; + rc = sqlite3VdbeSorterCompare(pC, pIn3, nKeyCol, &res); VdbeBranchTaken(res!=0,2); if( res ){ pc = pOp->p2-1; @@ -71297,6 +72312,7 @@ case OP_SorterData: { pC = p->apCsr[pOp->p1]; assert( isSorter(pC) ); rc = sqlite3VdbeSorterRowkey(pC, pOut); + assert( rc!=SQLITE_OK || (pOut->flags & MEM_Blob) ); break; } @@ -71456,11 +72472,15 @@ case OP_NullRow: { /* Opcode: Last P1 P2 * * * ** -** The next use of the Rowid or Column or Next instruction for P1 +** The next use of the Rowid or Column or Prev instruction for P1 ** will refer to the last entry in the database table or index. ** If the table or index is empty and P2>0, then jump immediately to P2. ** If P2 is 0 or if the table or index is not empty, fall through ** to the following instruction. +** +** This opcode leaves the cursor configured to move in reverse order, +** from the end toward the beginning. In other words, the cursor is +** configured to use Prev, not Next. */ case OP_Last: { /* jump */ VdbeCursor *pC; @@ -71478,6 +72498,9 @@ case OP_Last: { /* jump */ pC->deferredMoveto = 0; pC->rowidIsValid = 0; pC->cacheStatus = CACHE_STALE; +#ifdef SQLITE_DEBUG + pC->seekOp = OP_Last; +#endif if( pOp->p2>0 ){ VdbeBranchTaken(res!=0,2); if( res ) pc = pOp->p2 - 1; @@ -71514,6 +72537,10 @@ case OP_Sort: { /* jump */ ** If the table or index is empty and P2>0, then jump immediately to P2. ** If P2 is 0 or if the table or index is not empty, fall through ** to the following instruction. +** +** This opcode leaves the cursor configured to move in forward order, +** from the beginning toward the end. In other words, the cursor is +** configured to use Next, not Prev. */ case OP_Rewind: { /* jump */ VdbeCursor *pC; @@ -71525,6 +72552,9 @@ case OP_Rewind: { /* jump */ assert( pC!=0 ); assert( isSorter(pC)==(pOp->opcode==OP_SorterSort) ); res = 1; +#ifdef SQLITE_DEBUG + pC->seekOp = OP_Rewind; +#endif if( isSorter(pC) ){ rc = sqlite3VdbeSorterRewind(db, pC, &res); }else{ @@ -71551,6 +72581,10 @@ case OP_Rewind: { /* jump */ ** to the following instruction. But if the cursor advance was successful, ** jump immediately to P2. ** +** The Next opcode is only valid following an SeekGT, SeekGE, or +** OP_Rewind opcode used to position the cursor. Next is not allowed +** to follow SeekLT, SeekLE, or OP_Last. +** ** The P1 cursor must be for a real table, not a pseudo-table. P1 must have ** been opened prior to this opcode or the program will segfault. ** @@ -71569,7 +72603,7 @@ case OP_Rewind: { /* jump */ */ /* Opcode: NextIfOpen P1 P2 P3 P4 P5 ** -** This opcode works just like OP_Next except that if cursor P1 is not +** This opcode works just like Next except that if cursor P1 is not ** open it behaves a no-op. */ /* Opcode: Prev P1 P2 P3 P4 P5 @@ -71579,6 +72613,11 @@ case OP_Rewind: { /* jump */ ** to the following instruction. But if the cursor backup was successful, ** jump immediately to P2. ** +** +** The Prev opcode is only valid following an SeekLT, SeekLE, or +** OP_Last opcode used to position the cursor. Prev is not allowed +** to follow SeekGT, SeekGE, or OP_Rewind. +** ** The P1 cursor must be for a real table, not a pseudo-table. If P1 is ** not open then the behavior is undefined. ** @@ -71595,7 +72634,7 @@ case OP_Rewind: { /* jump */ */ /* Opcode: PrevIfOpen P1 P2 P3 P4 P5 ** -** This opcode works just like OP_Prev except that if cursor P1 is not +** This opcode works just like Prev except that if cursor P1 is not ** open it behaves a no-op. */ case OP_SorterNext: { /* jump */ @@ -71604,6 +72643,7 @@ case OP_SorterNext: { /* jump */ pC = p->apCsr[pOp->p1]; assert( isSorter(pC) ); + res = 0; rc = sqlite3VdbeSorterNext(db, pC, &res); goto next_tail; case OP_PrevIfOpen: /* jump */ @@ -71625,6 +72665,16 @@ case OP_Next: /* jump */ assert( pOp->opcode!=OP_Prev || pOp->p4.xAdvance==sqlite3BtreePrevious ); assert( pOp->opcode!=OP_NextIfOpen || pOp->p4.xAdvance==sqlite3BtreeNext ); assert( pOp->opcode!=OP_PrevIfOpen || pOp->p4.xAdvance==sqlite3BtreePrevious); + + /* The Next opcode is only used after SeekGT, SeekGE, and Rewind. + ** The Prev opcode is only used after SeekLT, SeekLE, and Last. */ + assert( pOp->opcode!=OP_Next || pOp->opcode!=OP_NextIfOpen + || pC->seekOp==OP_SeekGT || pC->seekOp==OP_SeekGE + || pC->seekOp==OP_Rewind || pC->seekOp==OP_Found); + assert( pOp->opcode!=OP_Prev || pOp->opcode!=OP_PrevIfOpen + || pC->seekOp==OP_SeekLT || pC->seekOp==OP_SeekLE + || pC->seekOp==OP_Last ); + rc = pOp->p4.xAdvance(pC->pCursor, &res); next_tail: pC->cacheStatus = CACHE_STALE; @@ -71907,7 +72957,7 @@ case OP_Destroy: { /* out2-prerelease */ }else{ iDb = pOp->p3; assert( iCnt==1 ); - assert( (p->btreeMask & (((yDbMask)1)<btreeMask, iDb) ); iMoved = 0; /* Not needed. Only to silence a warning. */ rc = sqlite3BtreeDropTable(db->aDb[iDb].pBt, pOp->p1, &iMoved); pOut->flags = MEM_Int; @@ -71947,7 +72997,7 @@ case OP_Clear: { nChange = 0; assert( p->readOnly==0 ); - assert( (p->btreeMask & (((yDbMask)1)<p2))!=0 ); + assert( DbMaskTest(p->btreeMask, pOp->p2) ); rc = sqlite3BtreeClearTable( db->aDb[pOp->p2].pBt, pOp->p1, (pOp->p3 ? &nChange : 0) ); @@ -71962,6 +73012,29 @@ case OP_Clear: { break; } +/* Opcode: ResetSorter P1 * * * * +** +** Delete all contents from the ephemeral table or sorter +** that is open on cursor P1. +** +** This opcode only works for cursors used for sorting and +** opened with OP_OpenEphemeral or OP_SorterOpen. +*/ +case OP_ResetSorter: { + VdbeCursor *pC; + + assert( pOp->p1>=0 && pOp->p1nCursor ); + pC = p->apCsr[pOp->p1]; + assert( pC!=0 ); + if( pC->pSorter ){ + sqlite3VdbeSorterReset(db, pC->pSorter); + }else{ + assert( pC->isEphemeral ); + rc = sqlite3BtreeClearTableOfCursor(pC->pCursor); + } + break; +} + /* Opcode: CreateTable P1 P2 * * * ** Synopsis: r[P2]=root iDb=P1 ** @@ -71994,7 +73067,7 @@ case OP_CreateTable: { /* out2-prerelease */ pgno = 0; assert( pOp->p1>=0 && pOp->p1nDb ); - assert( (p->btreeMask & (((yDbMask)1)<p1))!=0 ); + assert( DbMaskTest(p->btreeMask, pOp->p1) ); assert( p->readOnly==0 ); pDb = &db->aDb[pOp->p1]; assert( pDb->pBt!=0 ); @@ -72082,7 +73155,8 @@ case OP_LoadAnalysis: { ** ** Remove the internal (in-memory) data structures that describe ** the table named P4 in database P1. This is called after a table -** is dropped in order to keep the internal representation of the +** is dropped from disk (using the Destroy opcode) in order to keep +** the internal representation of the ** schema consistent with what is on disk. */ case OP_DropTable: { @@ -72094,7 +73168,8 @@ case OP_DropTable: { ** ** Remove the internal (in-memory) data structures that describe ** the index named P4 in database P1. This is called after an index -** is dropped in order to keep the internal representation of the +** is dropped from disk (using the Destroy opcode) +** in order to keep the internal representation of the ** schema consistent with what is on disk. */ case OP_DropIndex: { @@ -72106,7 +73181,8 @@ case OP_DropIndex: { ** ** Remove the internal (in-memory) data structures that describe ** the trigger named P4 in database P1. This is called after a trigger -** is dropped in order to keep the internal representation of the +** is dropped from disk (using the Destroy opcode) in order to keep +** the internal representation of the ** schema consistent with what is on disk. */ case OP_DropTrigger: { @@ -72159,7 +73235,7 @@ case OP_IntegrityCk: { } aRoot[j] = 0; assert( pOp->p5nDb ); - assert( (p->btreeMask & (((yDbMask)1)<p5))!=0 ); + assert( DbMaskTest(p->btreeMask, pOp->p5) ); z = sqlite3BtreeIntegrityCheck(db->aDb[pOp->p5].pBt, aRoot, nRoot, (int)pnErr->u.i, &nErr); sqlite3DbFree(db, aRoot); @@ -72268,9 +73344,7 @@ case OP_RowSetTest: { /* jump, in1, in3 */ assert( pOp->p4type==P4_INT32 ); assert( iSet==-1 || iSet>=0 ); if( iSet ){ - exists = sqlite3RowSetTest(pIn1->u.pRowSet, - (u8)(iSet>=0 ? iSet & 0xf : 0xff), - pIn3->u.i); + exists = sqlite3RowSetTest(pIn1->u.pRowSet, iSet, pIn3->u.i); VdbeBranchTaken(exists!=0,2); if( exists ){ pc = pOp->p2 - 1; @@ -72523,17 +73597,16 @@ case OP_IfPos: { /* jump, in1 */ break; } -/* Opcode: IfNeg P1 P2 * * * -** Synopsis: if r[P1]<0 goto P2 +/* Opcode: IfNeg P1 P2 P3 * * +** Synopsis: r[P1]+=P3, if r[P1]<0 goto P2 ** -** If the value of register P1 is less than zero, jump to P2. -** -** It is illegal to use this instruction on a register that does -** not contain an integer. An assertion fault will result if you try. +** Register P1 must contain an integer. Add literal P3 to the value in +** register P1 then if the value of register P1 is less than zero, jump to P2. */ case OP_IfNeg: { /* jump, in1 */ pIn1 = &aMem[pOp->p1]; assert( pIn1->flags&MEM_Int ); + pIn1->u.i += pOp->p3; VdbeBranchTaken(pIn1->u.i<0, 2); if( pIn1->u.i<0 ){ pc = pOp->p2 - 1; @@ -72546,9 +73619,6 @@ case OP_IfNeg: { /* jump, in1 */ ** ** The register P1 must contain an integer. Add literal P3 to the ** value in register P1. If the result is exactly 0, jump to P2. -** -** It is illegal to use this instruction on a register that does -** not contain an integer. An assertion fault will result if you try. */ case OP_IfZero: { /* jump, in1 */ pIn1 = &aMem[pOp->p1]; @@ -72821,7 +73891,7 @@ case OP_IncrVacuum: { /* jump */ Btree *pBt; assert( pOp->p1>=0 && pOp->p1nDb ); - assert( (p->btreeMask & (((yDbMask)1)<p1))!=0 ); + assert( DbMaskTest(p->btreeMask, pOp->p1) ); assert( p->readOnly==0 ); pBt = db->aDb[pOp->p1].pBt; rc = sqlite3BtreeIncrVacuum(pBt); @@ -72836,12 +73906,13 @@ case OP_IncrVacuum: { /* jump */ /* Opcode: Expire P1 * * * * ** -** Cause precompiled statements to become expired. An expired statement -** fails with an error code of SQLITE_SCHEMA if it is ever executed -** (via sqlite3_step()). +** Cause precompiled statements to expire. When an expired statement +** is executed using sqlite3_step() it will either automatically +** reprepare itself (if it was originally created using sqlite3_prepare_v2()) +** or it will fail with SQLITE_SCHEMA. ** ** If P1 is 0, then all SQL statements become expired. If P1 is non-zero, -** then only the currently executing statement is affected. +** then only the currently executing statement is expired. */ case OP_Expire: { if( !pOp->p1 ){ @@ -72873,7 +73944,7 @@ case OP_TableLock: { if( isWriteLock || 0==(db->flags&SQLITE_ReadUncommitted) ){ int p1 = pOp->p1; assert( p1>=0 && p1nDb ); - assert( (p->btreeMask & (((yDbMask)1)<btreeMask, p1) ); assert( isWriteLock==0 || isWriteLock==1 ); rc = sqlite3BtreeLockTable(db->aDb[p1].pBt, pOp->p2, isWriteLock); if( (rc&0xFF)==SQLITE_LOCKED ){ @@ -72970,7 +74041,7 @@ case OP_VOpen: { #ifndef SQLITE_OMIT_VIRTUALTABLE /* Opcode: VFilter P1 P2 P3 P4 * -** Synopsis: iPlan=r[P3] zPlan='P4' +** Synopsis: iplan=r[P3] zplan='P4' ** ** P1 is a cursor opened using VOpen. P2 is an address to jump to if ** the filtered result set is empty. @@ -73323,7 +74394,7 @@ case OP_Init: { /* jump */ if( zTrace ){ int i; for(i=0; inDb; i++){ - if( MASKBIT(i) & p->btreeMask)==0 ) continue; + if( DbMaskTest(p->btreeMask, i)==0 ) continue; sqlite3_file_control(db, db->aDb[i].zName, SQLITE_FCNTL_TRACE, zTrace); } } @@ -73366,8 +74437,8 @@ default: { /* This is really OP_Noop and OP_Explain */ #ifdef VDBE_PROFILE { - u64 elapsed = sqlite3Hwtime() - start; - pOp->cycles += elapsed; + u64 endTime = sqlite3Hwtime(); + if( endTime>start ) pOp->cycles += endTime - start; pOp->cnt++; } #endif @@ -73538,9 +74609,7 @@ static int blobSeekToRow(Incrblob *p, sqlite3_int64 iRow, char **pzErr){ p->iOffset = pC->aType[p->iCol + pC->nField]; p->nByte = sqlite3VdbeSerialTypeLen(type); p->pCsr = pC->pCursor; - sqlite3BtreeEnterCursor(p->pCsr); - sqlite3BtreeCacheOverflow(p->pCsr); - sqlite3BtreeLeaveCursor(p->pCsr); + sqlite3BtreeIncrblobCursor(p->pCsr); } } @@ -74280,7 +75349,6 @@ static int vdbeSorterIterInit( rc = sqlite3OsRead( pSorter->pTemp1, &pIter->aBuffer[iBuf], nRead, iStart ); - assert( rc!=SQLITE_IOERR_SHORT_READ ); } if( rc==SQLITE_OK ){ @@ -74316,7 +75384,7 @@ static int vdbeSorterIterInit( */ static void vdbeSorterCompare( const VdbeCursor *pCsr, /* Cursor object (for pKeyInfo) */ - int nIgnore, /* Ignore the last nIgnore fields */ + int nKeyCol, /* Num of columns. 0 means "all" */ const void *pKey1, int nKey1, /* Left side of comparison */ const void *pKey2, int nKey2, /* Right side of comparison */ int *pRes /* OUT: Result of comparison */ @@ -74330,10 +75398,9 @@ static void vdbeSorterCompare( sqlite3VdbeRecordUnpack(pKeyInfo, nKey2, pKey2, r2); } - if( nIgnore ){ - r2->nField = pKeyInfo->nField - nIgnore; - assert( r2->nField>0 ); - for(i=0; inField; i++){ + if( nKeyCol ){ + r2->nField = nKeyCol; + for(i=0; iaMem[i].flags & MEM_Null ){ *pRes = -1; return; @@ -74434,23 +75501,40 @@ static void vdbeSorterRecordFree(sqlite3 *db, SorterRecord *pRecord){ } } +/* +** Reset a sorting cursor back to its original empty state. +*/ +SQLITE_PRIVATE void sqlite3VdbeSorterReset(sqlite3 *db, VdbeSorter *pSorter){ + if( pSorter->aIter ){ + int i; + for(i=0; inTree; i++){ + vdbeSorterIterZero(db, &pSorter->aIter[i]); + } + sqlite3DbFree(db, pSorter->aIter); + pSorter->aIter = 0; + } + if( pSorter->pTemp1 ){ + sqlite3OsCloseFree(pSorter->pTemp1); + pSorter->pTemp1 = 0; + } + vdbeSorterRecordFree(db, pSorter->pRecord); + pSorter->pRecord = 0; + pSorter->iWriteOff = 0; + pSorter->iReadOff = 0; + pSorter->nInMemory = 0; + pSorter->nTree = 0; + pSorter->nPMA = 0; + pSorter->aTree = 0; +} + + /* ** Free any cursor components allocated by sqlite3VdbeSorterXXX routines. */ SQLITE_PRIVATE void sqlite3VdbeSorterClose(sqlite3 *db, VdbeCursor *pCsr){ VdbeSorter *pSorter = pCsr->pSorter; if( pSorter ){ - if( pSorter->aIter ){ - int i; - for(i=0; inTree; i++){ - vdbeSorterIterZero(db, &pSorter->aIter[i]); - } - sqlite3DbFree(db, pSorter->aIter); - } - if( pSorter->pTemp1 ){ - sqlite3OsCloseFree(pSorter->pTemp1); - } - vdbeSorterRecordFree(db, pSorter->pRecord); + sqlite3VdbeSorterReset(db, pSorter); sqlite3DbFree(db, pSorter->pUnpacked); sqlite3DbFree(db, pSorter); pCsr->pSorter = 0; @@ -74886,14 +75970,55 @@ SQLITE_PRIVATE int sqlite3VdbeSorterNext(sqlite3 *db, const VdbeCursor *pCsr, in if( pSorter->aTree ){ int iPrev = pSorter->aTree[1];/* Index of iterator to advance */ - int i; /* Index of aTree[] to recalculate */ - rc = vdbeSorterIterNext(db, &pSorter->aIter[iPrev]); - for(i=(pSorter->nTree+iPrev)/2; rc==SQLITE_OK && i>0; i=i/2){ - rc = vdbeSorterDoCompare(pCsr, i); - } + if( rc==SQLITE_OK ){ + int i; /* Index of aTree[] to recalculate */ + VdbeSorterIter *pIter1; /* First iterator to compare */ + VdbeSorterIter *pIter2; /* Second iterator to compare */ + u8 *pKey2; /* To pIter2->aKey, or 0 if record cached */ - *pbEof = (pSorter->aIter[pSorter->aTree[1]].pFile==0); + /* Find the first two iterators to compare. The one that was just + ** advanced (iPrev) and the one next to it in the array. */ + pIter1 = &pSorter->aIter[(iPrev & 0xFFFE)]; + pIter2 = &pSorter->aIter[(iPrev | 0x0001)]; + pKey2 = pIter2->aKey; + + for(i=(pSorter->nTree+iPrev)/2; i>0; i=i/2){ + /* Compare pIter1 and pIter2. Store the result in variable iRes. */ + int iRes; + if( pIter1->pFile==0 ){ + iRes = +1; + }else if( pIter2->pFile==0 ){ + iRes = -1; + }else{ + vdbeSorterCompare(pCsr, 0, + pIter1->aKey, pIter1->nKey, pKey2, pIter2->nKey, &iRes + ); + } + + /* If pIter1 contained the smaller value, set aTree[i] to its index. + ** Then set pIter2 to the next iterator to compare to pIter1. In this + ** case there is no cache of pIter2 in pSorter->pUnpacked, so set + ** pKey2 to point to the record belonging to pIter2. + ** + ** Alternatively, if pIter2 contains the smaller of the two values, + ** set aTree[i] to its index and update pIter1. If vdbeSorterCompare() + ** was actually called above, then pSorter->pUnpacked now contains + ** a value equivalent to pIter2. So set pKey2 to NULL to prevent + ** vdbeSorterCompare() from decoding pIter2 again. */ + if( iRes<=0 ){ + pSorter->aTree[i] = (int)(pIter1 - pSorter->aIter); + pIter2 = &pSorter->aIter[ pSorter->aTree[i ^ 0x0001] ]; + pKey2 = pIter2->aKey; + }else{ + if( pIter1->pFile ) pKey2 = 0; + pSorter->aTree[i] = (int)(pIter2 - pSorter->aIter); + pIter1 = &pSorter->aIter[ pSorter->aTree[i ^ 0x0001] ]; + } + + } + *pbEof = (pSorter->aIter[pSorter->aTree[1]].pFile==0); + } }else{ SorterRecord *pFree = pSorter->pRecord; pSorter->pRecord = pFree->pNext; @@ -74957,14 +76082,14 @@ SQLITE_PRIVATE int sqlite3VdbeSorterRowkey(const VdbeCursor *pCsr, Mem *pOut){ SQLITE_PRIVATE int sqlite3VdbeSorterCompare( const VdbeCursor *pCsr, /* Sorter cursor */ Mem *pVal, /* Value to compare to current sorter key */ - int nIgnore, /* Ignore this many fields at the end */ + int nKeyCol, /* Only compare this many fields */ int *pRes /* OUT: Result of comparison */ ){ VdbeSorter *pSorter = pCsr->pSorter; void *pKey; int nKey; /* Sorter key to compare pVal with */ pKey = vdbeSorterRowkey(pSorter, &nKey); - vdbeSorterCompare(pCsr, nIgnore, pVal->z, pVal->n, pKey, nKey, pRes); + vdbeSorterCompare(pCsr, nKeyCol, pVal->z, pVal->n, pKey, nKey, pRes); return SQLITE_OK; } @@ -75996,7 +77121,7 @@ static int lookupName( } } if( iCol>=pTab->nCol && sqlite3IsRowid(zCol) && HasRowid(pTab) ){ - /* IMP: R-24309-18625 */ + /* IMP: R-51414-32910 */ /* IMP: R-44911-55124 */ iCol = -1; } @@ -76352,8 +77477,13 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){ /* EVIDENCE-OF: R-61304-29449 The unlikely(X) function is equivalent to ** likelihood(X, 0.0625). ** EVIDENCE-OF: R-01283-11636 The unlikely(X) function is short-hand for - ** likelihood(X,0.0625). */ - pExpr->iTable = 62; /* TUNING: Default 2nd arg to unlikely() is 0.0625 */ + ** likelihood(X,0.0625). + ** EVIDENCE-OF: R-36850-34127 The likely(X) function is short-hand for + ** likelihood(X,0.9375). + ** EVIDENCE-OF: R-53436-40973 The likely(X) function is equivalent to + ** likelihood(X,0.9375). */ + /* TUNING: unlikely() probability is 0.0625. likely() is 0.9375 */ + pExpr->iTable = pDef->zName[0]=='u' ? 62 : 938; } } } @@ -77129,6 +78259,7 @@ SQLITE_PRIVATE void sqlite3ResolveSelfReference( SQLITE_PRIVATE char sqlite3ExprAffinity(Expr *pExpr){ int op; pExpr = sqlite3ExprSkipCollate(pExpr); + if( pExpr->flags & EP_Generic ) return 0; op = pExpr->op; if( op==TK_SELECT ){ assert( pExpr->flags&EP_xIsSelect ); @@ -77161,7 +78292,11 @@ SQLITE_PRIVATE char sqlite3ExprAffinity(Expr *pExpr){ ** If a memory allocation error occurs, that fact is recorded in pParse->db ** and the pExpr parameter is returned unchanged. */ -SQLITE_PRIVATE Expr *sqlite3ExprAddCollateToken(Parse *pParse, Expr *pExpr, Token *pCollName){ +SQLITE_PRIVATE Expr *sqlite3ExprAddCollateToken( + Parse *pParse, /* Parsing context */ + Expr *pExpr, /* Add the "COLLATE" clause to this expression */ + const Token *pCollName /* Name of collating sequence */ +){ if( pCollName->n>0 ){ Expr *pNew = sqlite3ExprAlloc(pParse->db, TK_COLLATE, pCollName, 1); if( pNew ){ @@ -77214,6 +78349,7 @@ SQLITE_PRIVATE CollSeq *sqlite3ExprCollSeq(Parse *pParse, Expr *pExpr){ Expr *p = pExpr; while( p ){ int op = p->op; + if( p->flags & EP_Generic ) break; if( op==TK_CAST || op==TK_UPLUS ){ p = p->pLeft; continue; @@ -78045,7 +79181,6 @@ SQLITE_PRIVATE ExprList *sqlite3ExprListDup(sqlite3 *db, ExprList *p, int flags) if( p==0 ) return 0; pNew = sqlite3DbMallocRaw(db, sizeof(*pNew) ); if( pNew==0 ) return 0; - pNew->iECursor = 0; pNew->nExpr = i = p->nExpr; if( (flags & EXPRDUP_REDUCE)==0 ) for(i=1; inExpr; i+=i){} pNew->a = pItem = sqlite3DbMallocRaw(db, i*sizeof(p->a[0]) ); @@ -78158,7 +79293,6 @@ SQLITE_PRIVATE Select *sqlite3SelectDup(sqlite3 *db, Select *p, int flags){ pNew->selFlags = p->selFlags & ~SF_UsesEphemeral; pNew->addrOpenEphm[0] = -1; pNew->addrOpenEphm[1] = -1; - pNew->addrOpenEphm[2] = -1; pNew->nSelectRow = p->nSelectRow; pNew->pWith = withDup(db, p->pWith); return pNew; @@ -78460,6 +79594,9 @@ SQLITE_PRIVATE int sqlite3ExprCanBeNull(const Expr *p){ case TK_FLOAT: case TK_BLOB: return 0; + case TK_COLUMN: + assert( p->pTab!=0 ); + return p->iColumn>=0 && p->pTab->aCol[p->iColumn].notNull==0; default: return 1; } @@ -78567,6 +79704,40 @@ SQLITE_PRIVATE int sqlite3CodeOnce(Parse *pParse){ return sqlite3VdbeAddOp1(v, OP_Once, pParse->nOnce++); } +/* +** Generate code that checks the left-most column of index table iCur to see if +** it contains any NULL entries. Cause the register at regHasNull to be set +** to a non-NULL value if iCur contains no NULLs. Cause register regHasNull +** to be set to NULL if iCur contains one or more NULL values. +*/ +static void sqlite3SetHasNullFlag(Vdbe *v, int iCur, int regHasNull){ + int j1; + sqlite3VdbeAddOp2(v, OP_Integer, 0, regHasNull); + j1 = sqlite3VdbeAddOp1(v, OP_Rewind, iCur); VdbeCoverage(v); + sqlite3VdbeAddOp3(v, OP_Column, iCur, 0, regHasNull); + sqlite3VdbeChangeP5(v, OPFLAG_TYPEOFARG); + VdbeComment((v, "first_entry_in(%d)", iCur)); + sqlite3VdbeJumpHere(v, j1); +} + + +#ifndef SQLITE_OMIT_SUBQUERY +/* +** The argument is an IN operator with a list (not a subquery) on the +** right-hand side. Return TRUE if that list is constant. +*/ +static int sqlite3InRhsIsConstant(Expr *pIn){ + Expr *pLHS; + int res; + assert( !ExprHasProperty(pIn, EP_xIsSelect) ); + pLHS = pIn->pLeft; + pIn->pLeft = 0; + res = sqlite3ExprIsConstant(pIn); + pIn->pLeft = pLHS; + return res; +} +#endif + /* ** This function is used by the implementation of the IN (...) operator. ** The pX parameter is the expression on the RHS of the IN operator, which @@ -78576,7 +79747,7 @@ SQLITE_PRIVATE int sqlite3CodeOnce(Parse *pParse){ ** be used either to test for membership in the RHS set or to iterate through ** all members of the RHS set, skipping duplicates. ** -** A cursor is opened on the b-tree object that the RHS of the IN operator +** A cursor is opened on the b-tree object that is the RHS of the IN operator ** and pX->iTable is set to the index of that cursor. ** ** The returned value of this function indicates the b-tree type, as follows: @@ -78586,6 +79757,8 @@ SQLITE_PRIVATE int sqlite3CodeOnce(Parse *pParse){ ** IN_INDEX_INDEX_DESC - The cursor was opened on a descending index. ** IN_INDEX_EPH - The cursor was opened on a specially created and ** populated epheremal table. +** IN_INDEX_NOOP - No cursor was allocated. The IN operator must be +** implemented as a sequence of comparisons. ** ** An existing b-tree might be used if the RHS expression pX is a simple ** subquery such as: @@ -78595,51 +79768,56 @@ SQLITE_PRIVATE int sqlite3CodeOnce(Parse *pParse){ ** If the RHS of the IN operator is a list or a more complex subquery, then ** an ephemeral table might need to be generated from the RHS and then ** pX->iTable made to point to the ephermeral table instead of an -** existing table. +** existing table. ** -** If the prNotFound parameter is 0, then the b-tree will be used to iterate -** through the set members, skipping any duplicates. In this case an -** epheremal table must be used unless the selected is guaranteed +** The inFlags parameter must contain exactly one of the bits +** IN_INDEX_MEMBERSHIP or IN_INDEX_LOOP. If inFlags contains +** IN_INDEX_MEMBERSHIP, then the generated table will be used for a +** fast membership test. When the IN_INDEX_LOOP bit is set, the +** IN index will be used to loop over all values of the RHS of the +** IN operator. +** +** When IN_INDEX_LOOP is used (and the b-tree will be used to iterate +** through the set members) then the b-tree must not contain duplicates. +** An epheremal table must be used unless the selected is guaranteed ** to be unique - either because it is an INTEGER PRIMARY KEY or it ** has a UNIQUE constraint or UNIQUE index. ** -** If the prNotFound parameter is not 0, then the b-tree will be used -** for fast set membership tests. In this case an epheremal table must +** When IN_INDEX_MEMBERSHIP is used (and the b-tree will be used +** for fast set membership tests) then an epheremal table must ** be used unless is an INTEGER PRIMARY KEY or an index can ** be found with as its left-most column. ** +** If the IN_INDEX_NOOP_OK and IN_INDEX_MEMBERSHIP are both set and +** if the RHS of the IN operator is a list (not a subquery) then this +** routine might decide that creating an ephemeral b-tree for membership +** testing is too expensive and return IN_INDEX_NOOP. In that case, the +** calling routine should implement the IN operator using a sequence +** of Eq or Ne comparison operations. +** ** When the b-tree is being used for membership tests, the calling function -** needs to know whether or not the structure contains an SQL NULL -** value in order to correctly evaluate expressions like "X IN (Y, Z)". -** If there is any chance that the (...) might contain a NULL value at +** might need to know whether or not the RHS side of the IN operator +** contains a NULL. If prRhsHasNull is not a NULL pointer and +** if there is any chance that the (...) might contain a NULL value at ** runtime, then a register is allocated and the register number written -** to *prNotFound. If there is no chance that the (...) contains a -** NULL value, then *prNotFound is left unchanged. +** to *prRhsHasNull. If there is no chance that the (...) contains a +** NULL value, then *prRhsHasNull is left unchanged. ** -** If a register is allocated and its location stored in *prNotFound, then -** its initial value is NULL. If the (...) does not remain constant -** for the duration of the query (i.e. the SELECT within the (...) -** is a correlated subquery) then the value of the allocated register is -** reset to NULL each time the subquery is rerun. This allows the -** caller to use vdbe code equivalent to the following: -** -** if( register==NULL ){ -** has_null = -** register = 1 -** } -** -** in order to avoid running the -** test more often than is necessary. +** If a register is allocated and its location stored in *prRhsHasNull, then +** the value in that register will be NULL if the b-tree contains one or more +** NULL values, and it will be some non-NULL value if the b-tree contains no +** NULL values. */ #ifndef SQLITE_OMIT_SUBQUERY -SQLITE_PRIVATE int sqlite3FindInIndex(Parse *pParse, Expr *pX, int *prNotFound){ +SQLITE_PRIVATE int sqlite3FindInIndex(Parse *pParse, Expr *pX, u32 inFlags, int *prRhsHasNull){ Select *p; /* SELECT to the right of IN operator */ int eType = 0; /* Type of RHS table. IN_INDEX_* */ int iTab = pParse->nTab++; /* Cursor of the RHS table */ - int mustBeUnique = (prNotFound==0); /* True if RHS must be unique */ + int mustBeUnique; /* True if RHS must be unique */ Vdbe *v = sqlite3GetVdbe(pParse); /* Virtual machine being coded */ assert( pX->op==TK_IN ); + mustBeUnique = (inFlags & IN_INDEX_LOOP)!=0; /* Check to see if an existing table or index can be used to ** satisfy the query. This is preferable to generating a new @@ -78696,7 +79874,7 @@ SQLITE_PRIVATE int sqlite3FindInIndex(Parse *pParse, Expr *pX, int *prNotFound){ for(pIdx=pTab->pIndex; pIdx && eType==0 && affinity_ok; pIdx=pIdx->pNext){ if( (pIdx->aiColumn[0]==iCol) && sqlite3FindCollSeq(db, ENC(db), pIdx->azColl[0], 0)==pReq - && (!mustBeUnique || (pIdx->nKeyCol==1 && pIdx->onError!=OE_None)) + && (!mustBeUnique || (pIdx->nKeyCol==1 && IsUniqueIndex(pIdx))) ){ int iAddr = sqlite3CodeOnce(pParse); VdbeCoverage(v); sqlite3VdbeAddOp3(v, OP_OpenRead, iTab, pIdx->tnum, iDb); @@ -78705,9 +79883,9 @@ SQLITE_PRIVATE int sqlite3FindInIndex(Parse *pParse, Expr *pX, int *prNotFound){ assert( IN_INDEX_INDEX_DESC == IN_INDEX_INDEX_ASC+1 ); eType = IN_INDEX_INDEX_ASC + pIdx->aSortOrder[0]; - if( prNotFound && !pTab->aCol[iCol].notNull ){ - *prNotFound = ++pParse->nMem; - sqlite3VdbeAddOp2(v, OP_Null, 0, *prNotFound); + if( prRhsHasNull && !pTab->aCol[iCol].notNull ){ + *prRhsHasNull = ++pParse->nMem; + sqlite3SetHasNullFlag(v, iTab, *prRhsHasNull); } sqlite3VdbeJumpHere(v, iAddr); } @@ -78715,22 +79893,36 @@ SQLITE_PRIVATE int sqlite3FindInIndex(Parse *pParse, Expr *pX, int *prNotFound){ } } + /* If no preexisting index is available for the IN clause + ** and IN_INDEX_NOOP is an allowed reply + ** and the RHS of the IN operator is a list, not a subquery + ** and the RHS is not contant or has two or fewer terms, + ** then it is not worth creating an ephermeral table to evaluate + ** the IN operator so return IN_INDEX_NOOP. + */ + if( eType==0 + && (inFlags & IN_INDEX_NOOP_OK) + && !ExprHasProperty(pX, EP_xIsSelect) + && (!sqlite3InRhsIsConstant(pX) || pX->x.pList->nExpr<=2) + ){ + eType = IN_INDEX_NOOP; + } + + if( eType==0 ){ - /* Could not found an existing table or index to use as the RHS b-tree. + /* Could not find an existing table or index to use as the RHS b-tree. ** We will have to generate an ephemeral table to do the job. */ u32 savedNQueryLoop = pParse->nQueryLoop; int rMayHaveNull = 0; eType = IN_INDEX_EPH; - if( prNotFound ){ - *prNotFound = rMayHaveNull = ++pParse->nMem; - sqlite3VdbeAddOp2(v, OP_Null, 0, *prNotFound); - }else{ - testcase( pParse->nQueryLoop>0 ); + if( inFlags & IN_INDEX_LOOP ){ pParse->nQueryLoop = 0; if( pX->pLeft->iColumn<0 && !ExprHasProperty(pX, EP_xIsSelect) ){ eType = IN_INDEX_ROWID; } + }else if( prRhsHasNull ){ + *prRhsHasNull = rMayHaveNull = ++pParse->nMem; } sqlite3CodeSubselect(pParse, pX, rMayHaveNull, eType==IN_INDEX_ROWID); pParse->nQueryLoop = savedNQueryLoop; @@ -78761,15 +79953,9 @@ SQLITE_PRIVATE int sqlite3FindInIndex(Parse *pParse, Expr *pX, int *prNotFound){ ** ** If rMayHaveNull is non-zero, that means that the operation is an IN ** (not a SELECT or EXISTS) and that the RHS might contains NULLs. -** Furthermore, the IN is in a WHERE clause and that we really want -** to iterate over the RHS of the IN operator in order to quickly locate -** all corresponding LHS elements. All this routine does is initialize -** the register given by rMayHaveNull to NULL. Calling routines will take -** care of changing this register value to non-NULL if the RHS is NULL-free. -** -** If rMayHaveNull is zero, that means that the subquery is being used -** for membership testing only. There is no need to initialize any -** registers to indicate the presence or absence of NULLs on the RHS. +** All this routine does is initialize the register given by rMayHaveNull +** to NULL. Calling routines will take care of changing this register +** value to non-NULL if the RHS is NULL-free. ** ** For a SELECT or EXISTS operator, return the register that holds the ** result. For IN operators or if an error occurs, the return value is 0. @@ -78778,10 +79964,10 @@ SQLITE_PRIVATE int sqlite3FindInIndex(Parse *pParse, Expr *pX, int *prNotFound){ SQLITE_PRIVATE int sqlite3CodeSubselect( Parse *pParse, /* Parsing context */ Expr *pExpr, /* The IN, SELECT, or EXISTS operator */ - int rMayHaveNull, /* Register that records whether NULLs exist in RHS */ + int rHasNullFlag, /* Register that records whether NULLs exist in RHS */ int isRowid /* If true, LHS of IN operator is a rowid */ ){ - int testAddr = -1; /* One-time test address */ + int jmpIfDynamic = -1; /* One-time test address */ int rReg = 0; /* Register storing resulting */ Vdbe *v = sqlite3GetVdbe(pParse); if( NEVER(v==0) ) return 0; @@ -78798,13 +79984,13 @@ SQLITE_PRIVATE int sqlite3CodeSubselect( ** save the results, and reuse the same result on subsequent invocations. */ if( !ExprHasProperty(pExpr, EP_VarSelect) ){ - testAddr = sqlite3CodeOnce(pParse); VdbeCoverage(v); + jmpIfDynamic = sqlite3CodeOnce(pParse); VdbeCoverage(v); } #ifndef SQLITE_OMIT_EXPLAIN if( pParse->explain==2 ){ char *zMsg = sqlite3MPrintf( - pParse->db, "EXECUTE %s%s SUBQUERY %d", testAddr>=0?"":"CORRELATED ", + pParse->db, "EXECUTE %s%s SUBQUERY %d", jmpIfDynamic>=0?"":"CORRELATED ", pExpr->op==TK_IN?"LIST":"SCALAR", pParse->iNextSelectId ); sqlite3VdbeAddOp4(v, OP_Explain, pParse->iSelectId, 0, 0, zMsg, P4_DYNAMIC); @@ -78818,10 +80004,6 @@ SQLITE_PRIVATE int sqlite3CodeSubselect( Expr *pLeft = pExpr->pLeft; /* the LHS of the IN operator */ KeyInfo *pKeyInfo = 0; /* Key information */ - if( rMayHaveNull ){ - sqlite3VdbeAddOp2(v, OP_Null, 0, rMayHaveNull); - } - affinity = sqlite3ExprAffinity(pLeft); /* Whether this is an 'x IN(SELECT...)' or an 'x IN()' @@ -78847,6 +80029,7 @@ SQLITE_PRIVATE int sqlite3CodeSubselect( ** Generate code to write the results of the select into the temporary ** table allocated and opened above. */ + Select *pSelect = pExpr->x.pSelect; SelectDest dest; ExprList *pEList; @@ -78854,13 +80037,15 @@ SQLITE_PRIVATE int sqlite3CodeSubselect( sqlite3SelectDestInit(&dest, SRT_Set, pExpr->iTable); dest.affSdst = (u8)affinity; assert( (pExpr->iTable&0x0000FFFF)==pExpr->iTable ); - pExpr->x.pSelect->iLimit = 0; + pSelect->iLimit = 0; + testcase( pSelect->selFlags & SF_Distinct ); + pSelect->selFlags &= ~SF_Distinct; testcase( pKeyInfo==0 ); /* Caused by OOM in sqlite3KeyInfoAlloc() */ - if( sqlite3Select(pParse, pExpr->x.pSelect, &dest) ){ + if( sqlite3Select(pParse, pSelect, &dest) ){ sqlite3KeyInfoUnref(pKeyInfo); return 0; } - pEList = pExpr->x.pSelect->pEList; + pEList = pSelect->pEList; assert( pKeyInfo!=0 ); /* OOM will cause exit after sqlite3Select() */ assert( pEList!=0 ); assert( pEList->nExpr>0 ); @@ -78891,7 +80076,7 @@ SQLITE_PRIVATE int sqlite3CodeSubselect( /* Loop through each expression in . */ r1 = sqlite3GetTempReg(pParse); r2 = sqlite3GetTempReg(pParse); - sqlite3VdbeAddOp2(v, OP_Null, 0, r2); + if( isRowid ) sqlite3VdbeAddOp2(v, OP_Null, 0, r2); for(i=pList->nExpr, pItem=pList->a; i>0; i--, pItem++){ Expr *pE2 = pItem->pExpr; int iValToIns; @@ -78901,9 +80086,9 @@ SQLITE_PRIVATE int sqlite3CodeSubselect( ** this code only executes once. Because for a non-constant ** expression we need to rerun this code each time. */ - if( testAddr>=0 && !sqlite3ExprIsConstant(pE2) ){ - sqlite3VdbeChangeToNoop(v, testAddr); - testAddr = -1; + if( jmpIfDynamic>=0 && !sqlite3ExprIsConstant(pE2) ){ + sqlite3VdbeChangeToNoop(v, jmpIfDynamic); + jmpIfDynamic = -1; } /* Evaluate the expression and insert it into the temp table */ @@ -78973,10 +80158,14 @@ SQLITE_PRIVATE int sqlite3CodeSubselect( } } - if( testAddr>=0 ){ - sqlite3VdbeJumpHere(v, testAddr); + if( rHasNullFlag ){ + sqlite3SetHasNullFlag(v, pExpr->iTable, rHasNullFlag); } - sqlite3ExprCachePop(pParse, 1); + + if( jmpIfDynamic>=0 ){ + sqlite3VdbeJumpHere(v, jmpIfDynamic); + } + sqlite3ExprCachePop(pParse); return rReg; } @@ -78995,7 +80184,7 @@ SQLITE_PRIVATE int sqlite3CodeSubselect( ** if the LHS is NULL or if the LHS is not contained within the RHS and the ** RHS contains one or more NULL values. ** -** This routine generates code will jump to destIfFalse if the LHS is not +** This routine generates code that jumps to destIfFalse if the LHS is not ** contained within the RHS. If due to NULLs we cannot determine if the LHS ** is contained in the RHS then jump to destIfNull. If the LHS is contained ** within the RHS then fall through. @@ -79018,7 +80207,9 @@ static void sqlite3ExprCodeIN( v = pParse->pVdbe; assert( v!=0 ); /* OOM detected prior to this routine */ VdbeNoopComment((v, "begin IN expr")); - eType = sqlite3FindInIndex(pParse, pExpr, &rRhsHasNull); + eType = sqlite3FindInIndex(pParse, pExpr, + IN_INDEX_MEMBERSHIP | IN_INDEX_NOOP_OK, + destIfFalse==destIfNull ? 0 : &rRhsHasNull); /* Figure out the affinity to use to create a key from the results ** of the expression. affinityStr stores a static string suitable for @@ -79032,86 +80223,118 @@ static void sqlite3ExprCodeIN( r1 = sqlite3GetTempReg(pParse); sqlite3ExprCode(pParse, pExpr->pLeft, r1); - /* If the LHS is NULL, then the result is either false or NULL depending - ** on whether the RHS is empty or not, respectively. + /* If sqlite3FindInIndex() did not find or create an index that is + ** suitable for evaluating the IN operator, then evaluate using a + ** sequence of comparisons. */ - if( destIfNull==destIfFalse ){ - /* Shortcut for the common case where the false and NULL outcomes are - ** the same. */ - sqlite3VdbeAddOp2(v, OP_IsNull, r1, destIfNull); VdbeCoverage(v); + if( eType==IN_INDEX_NOOP ){ + ExprList *pList = pExpr->x.pList; + CollSeq *pColl = sqlite3ExprCollSeq(pParse, pExpr->pLeft); + int labelOk = sqlite3VdbeMakeLabel(v); + int r2, regToFree; + int regCkNull = 0; + int ii; + assert( !ExprHasProperty(pExpr, EP_xIsSelect) ); + if( destIfNull!=destIfFalse ){ + regCkNull = sqlite3GetTempReg(pParse); + sqlite3VdbeAddOp3(v, OP_BitAnd, r1, r1, regCkNull); + } + for(ii=0; iinExpr; ii++){ + r2 = sqlite3ExprCodeTemp(pParse, pList->a[ii].pExpr, ®ToFree); + if( regCkNull && sqlite3ExprCanBeNull(pList->a[ii].pExpr) ){ + sqlite3VdbeAddOp3(v, OP_BitAnd, regCkNull, r2, regCkNull); + } + if( iinExpr-1 || destIfNull!=destIfFalse ){ + sqlite3VdbeAddOp4(v, OP_Eq, r1, labelOk, r2, + (void*)pColl, P4_COLLSEQ); + VdbeCoverageIf(v, iinExpr-1); + VdbeCoverageIf(v, ii==pList->nExpr-1); + sqlite3VdbeChangeP5(v, affinity); + }else{ + assert( destIfNull==destIfFalse ); + sqlite3VdbeAddOp4(v, OP_Ne, r1, destIfFalse, r2, + (void*)pColl, P4_COLLSEQ); VdbeCoverage(v); + sqlite3VdbeChangeP5(v, affinity | SQLITE_JUMPIFNULL); + } + sqlite3ReleaseTempReg(pParse, regToFree); + } + if( regCkNull ){ + sqlite3VdbeAddOp2(v, OP_IsNull, regCkNull, destIfNull); VdbeCoverage(v); + sqlite3VdbeAddOp2(v, OP_Goto, 0, destIfFalse); + } + sqlite3VdbeResolveLabel(v, labelOk); + sqlite3ReleaseTempReg(pParse, regCkNull); }else{ - int addr1 = sqlite3VdbeAddOp1(v, OP_NotNull, r1); VdbeCoverage(v); - sqlite3VdbeAddOp2(v, OP_Rewind, pExpr->iTable, destIfFalse); - VdbeCoverage(v); - sqlite3VdbeAddOp2(v, OP_Goto, 0, destIfNull); - sqlite3VdbeJumpHere(v, addr1); - } - - if( eType==IN_INDEX_ROWID ){ - /* In this case, the RHS is the ROWID of table b-tree + + /* If the LHS is NULL, then the result is either false or NULL depending + ** on whether the RHS is empty or not, respectively. */ - sqlite3VdbeAddOp2(v, OP_MustBeInt, r1, destIfFalse); VdbeCoverage(v); - sqlite3VdbeAddOp3(v, OP_NotExists, pExpr->iTable, destIfFalse, r1); - VdbeCoverage(v); - }else{ - /* In this case, the RHS is an index b-tree. - */ - sqlite3VdbeAddOp4(v, OP_Affinity, r1, 1, 0, &affinity, 1); - - /* If the set membership test fails, then the result of the - ** "x IN (...)" expression must be either 0 or NULL. If the set - ** contains no NULL values, then the result is 0. If the set - ** contains one or more NULL values, then the result of the - ** expression is also NULL. - */ - if( rRhsHasNull==0 || destIfFalse==destIfNull ){ - /* This branch runs if it is known at compile time that the RHS - ** cannot contain NULL values. This happens as the result - ** of a "NOT NULL" constraint in the database schema. - ** - ** Also run this branch if NULL is equivalent to FALSE - ** for this particular IN operator. + if( sqlite3ExprCanBeNull(pExpr->pLeft) ){ + if( destIfNull==destIfFalse ){ + /* Shortcut for the common case where the false and NULL outcomes are + ** the same. */ + sqlite3VdbeAddOp2(v, OP_IsNull, r1, destIfNull); VdbeCoverage(v); + }else{ + int addr1 = sqlite3VdbeAddOp1(v, OP_NotNull, r1); VdbeCoverage(v); + sqlite3VdbeAddOp2(v, OP_Rewind, pExpr->iTable, destIfFalse); + VdbeCoverage(v); + sqlite3VdbeAddOp2(v, OP_Goto, 0, destIfNull); + sqlite3VdbeJumpHere(v, addr1); + } + } + + if( eType==IN_INDEX_ROWID ){ + /* In this case, the RHS is the ROWID of table b-tree */ - sqlite3VdbeAddOp4Int(v, OP_NotFound, pExpr->iTable, destIfFalse, r1, 1); + sqlite3VdbeAddOp2(v, OP_MustBeInt, r1, destIfFalse); VdbeCoverage(v); + sqlite3VdbeAddOp3(v, OP_NotExists, pExpr->iTable, destIfFalse, r1); VdbeCoverage(v); }else{ - /* In this branch, the RHS of the IN might contain a NULL and - ** the presence of a NULL on the RHS makes a difference in the - ** outcome. + /* In this case, the RHS is an index b-tree. */ - int j1, j2; - - /* First check to see if the LHS is contained in the RHS. If so, - ** then the presence of NULLs in the RHS does not matter, so jump - ** over all of the code that follows. + sqlite3VdbeAddOp4(v, OP_Affinity, r1, 1, 0, &affinity, 1); + + /* If the set membership test fails, then the result of the + ** "x IN (...)" expression must be either 0 or NULL. If the set + ** contains no NULL values, then the result is 0. If the set + ** contains one or more NULL values, then the result of the + ** expression is also NULL. */ - j1 = sqlite3VdbeAddOp4Int(v, OP_Found, pExpr->iTable, 0, r1, 1); - VdbeCoverage(v); - - /* Here we begin generating code that runs if the LHS is not - ** contained within the RHS. Generate additional code that - ** tests the RHS for NULLs. If the RHS contains a NULL then - ** jump to destIfNull. If there are no NULLs in the RHS then - ** jump to destIfFalse. - */ - sqlite3VdbeAddOp2(v, OP_If, rRhsHasNull, destIfNull); VdbeCoverage(v); - sqlite3VdbeAddOp2(v, OP_IfNot, rRhsHasNull, destIfFalse); VdbeCoverage(v); - j2 = sqlite3VdbeAddOp4Int(v, OP_Found, pExpr->iTable, 0, rRhsHasNull, 1); - VdbeCoverage(v); - sqlite3VdbeAddOp2(v, OP_Integer, 0, rRhsHasNull); - sqlite3VdbeAddOp2(v, OP_Goto, 0, destIfFalse); - sqlite3VdbeJumpHere(v, j2); - sqlite3VdbeAddOp2(v, OP_Integer, 1, rRhsHasNull); - sqlite3VdbeAddOp2(v, OP_Goto, 0, destIfNull); - - /* The OP_Found at the top of this branch jumps here when true, - ** causing the overall IN expression evaluation to fall through. - */ - sqlite3VdbeJumpHere(v, j1); + assert( destIfFalse!=destIfNull || rRhsHasNull==0 ); + if( rRhsHasNull==0 ){ + /* This branch runs if it is known at compile time that the RHS + ** cannot contain NULL values. This happens as the result + ** of a "NOT NULL" constraint in the database schema. + ** + ** Also run this branch if NULL is equivalent to FALSE + ** for this particular IN operator. + */ + sqlite3VdbeAddOp4Int(v, OP_NotFound, pExpr->iTable, destIfFalse, r1, 1); + VdbeCoverage(v); + }else{ + /* In this branch, the RHS of the IN might contain a NULL and + ** the presence of a NULL on the RHS makes a difference in the + ** outcome. + */ + int j1; + + /* First check to see if the LHS is contained in the RHS. If so, + ** then the answer is TRUE the presence of NULLs in the RHS does + ** not matter. If the LHS is not contained in the RHS, then the + ** answer is NULL if the RHS contains NULLs and the answer is + ** FALSE if the RHS is NULL-free. + */ + j1 = sqlite3VdbeAddOp4Int(v, OP_Found, pExpr->iTable, 0, r1, 1); + VdbeCoverage(v); + sqlite3VdbeAddOp2(v, OP_IsNull, rRhsHasNull, destIfNull); + VdbeCoverage(v); + sqlite3VdbeAddOp2(v, OP_Goto, 0, destIfFalse); + sqlite3VdbeJumpHere(v, j1); + } } } sqlite3ReleaseTempReg(pParse, r1); - sqlite3ExprCachePop(pParse, 1); + sqlite3ExprCachePop(pParse); VdbeComment((v, "end IN expr")); } #endif /* SQLITE_OMIT_SUBQUERY */ @@ -79168,7 +80391,7 @@ static void codeInteger(Parse *pParse, Expr *pExpr, int negFlag, int iMem){ i64 value; const char *z = pExpr->u.zToken; assert( z!=0 ); - c = sqlite3Atoi64(z, &value, sqlite3Strlen30(z), SQLITE_UTF8); + c = sqlite3DecOrHexToI64(z, &value); if( c==0 || (c==2 && negFlag) ){ char *zV; if( negFlag ){ value = c==2 ? SMALLEST_INT64 : -value; } @@ -79178,7 +80401,14 @@ static void codeInteger(Parse *pParse, Expr *pExpr, int negFlag, int iMem){ #ifdef SQLITE_OMIT_FLOATING_POINT sqlite3ErrorMsg(pParse, "oversized integer: %s%s", negFlag ? "-" : "", z); #else - codeReal(v, z, negFlag, iMem); +#ifndef SQLITE_OMIT_HEX_INTEGER + if( sqlite3_strnicmp(z,"0x",2)==0 ){ + sqlite3ErrorMsg(pParse, "hex literal too big: %s", z); + }else +#endif + { + codeReal(v, z, negFlag, iMem); + } #endif } } @@ -79294,15 +80524,14 @@ SQLITE_PRIVATE void sqlite3ExprCachePush(Parse *pParse){ /* ** Remove from the column cache any entries that were added since the -** the previous N Push operations. In other words, restore the cache -** to the state it was in N Pushes ago. +** the previous sqlite3ExprCachePush operation. In other words, restore +** the cache to the state it was in prior the most recent Push. */ -SQLITE_PRIVATE void sqlite3ExprCachePop(Parse *pParse, int N){ +SQLITE_PRIVATE void sqlite3ExprCachePop(Parse *pParse){ int i; struct yColCache *p; - assert( N>0 ); - assert( pParse->iCacheLevel>=N ); - pParse->iCacheLevel -= N; + assert( pParse->iCacheLevel>=1 ); + pParse->iCacheLevel--; #ifdef SQLITE_DEBUG if( pParse->db->flags & SQLITE_VdbeAddopTrace ){ printf("POP to %d\n", pParse->iCacheLevel); @@ -79431,7 +80660,7 @@ SQLITE_PRIVATE void sqlite3ExprCodeMove(Parse *pParse, int iFrom, int iTo, int n int i; struct yColCache *p; assert( iFrom>=iTo+nReg || iFrom+nReg<=iTo ); - sqlite3VdbeAddOp3(pParse->pVdbe, OP_Move, iFrom, iTo, nReg-1); + sqlite3VdbeAddOp3(pParse->pVdbe, OP_Move, iFrom, iTo, nReg); for(i=0, p=pParse->aColCache; iiReg; if( x>=iFrom && xu.zToken; nId = sqlite3Strlen30(zId); pDef = sqlite3FindFunction(db, zId, nId, nFarg, enc, 0); - if( pDef==0 ){ + if( pDef==0 || pDef->xFunc==0 ){ sqlite3ErrorMsg(pParse, "unknown function: %.*s()", nId, zId); break; } @@ -79780,7 +81009,7 @@ SQLITE_PRIVATE int sqlite3ExprCodeTarget(Parse *pParse, Expr *pExpr, int target) sqlite3ExprCacheRemove(pParse, target, 1); sqlite3ExprCachePush(pParse); sqlite3ExprCode(pParse, pFarg->a[i].pExpr, target); - sqlite3ExprCachePop(pParse, 1); + sqlite3ExprCachePop(pParse); } sqlite3VdbeResolveLabel(v, endCoalesce); break; @@ -79832,9 +81061,9 @@ SQLITE_PRIVATE int sqlite3ExprCodeTarget(Parse *pParse, Expr *pExpr, int target) } sqlite3ExprCachePush(pParse); /* Ticket 2ea2425d34be */ - sqlite3ExprCodeExprList(pParse, pFarg, r1, + sqlite3ExprCodeExprList(pParse, pFarg, r1, SQLITE_ECEL_DUP|SQLITE_ECEL_FACTOR); - sqlite3ExprCachePop(pParse, 1); /* Ticket 2ea2425d34be */ + sqlite3ExprCachePop(pParse); /* Ticket 2ea2425d34be */ }else{ r1 = 0; } @@ -80054,13 +81283,13 @@ SQLITE_PRIVATE int sqlite3ExprCodeTarget(Parse *pParse, Expr *pExpr, int target) testcase( aListelem[i+1].pExpr->op==TK_COLUMN ); sqlite3ExprCode(pParse, aListelem[i+1].pExpr, target); sqlite3VdbeAddOp2(v, OP_Goto, 0, endLabel); - sqlite3ExprCachePop(pParse, 1); + sqlite3ExprCachePop(pParse); sqlite3VdbeResolveLabel(v, nextCase); } if( (nExpr&1)!=0 ){ sqlite3ExprCachePush(pParse); sqlite3ExprCode(pParse, pEList->a[nExpr-1].pExpr, target); - sqlite3ExprCachePop(pParse, 1); + sqlite3ExprCachePop(pParse); }else{ sqlite3VdbeAddOp2(v, OP_Null, 0, target); } @@ -80639,7 +81868,7 @@ SQLITE_PRIVATE void sqlite3ExprIfTrue(Parse *pParse, Expr *pExpr, int dest, int sqlite3ExprCachePush(pParse); sqlite3ExprIfTrue(pParse, pExpr->pRight, dest, jumpIfNull); sqlite3VdbeResolveLabel(v, d2); - sqlite3ExprCachePop(pParse, 1); + sqlite3ExprCachePop(pParse); break; } case TK_OR: { @@ -80647,7 +81876,7 @@ SQLITE_PRIVATE void sqlite3ExprIfTrue(Parse *pParse, Expr *pExpr, int dest, int sqlite3ExprIfTrue(pParse, pExpr->pLeft, dest, jumpIfNull); sqlite3ExprCachePush(pParse); sqlite3ExprIfTrue(pParse, pExpr->pRight, dest, jumpIfNull); - sqlite3ExprCachePop(pParse, 1); + sqlite3ExprCachePop(pParse); break; } case TK_NOT: { @@ -80793,7 +82022,7 @@ SQLITE_PRIVATE void sqlite3ExprIfFalse(Parse *pParse, Expr *pExpr, int dest, int sqlite3ExprIfFalse(pParse, pExpr->pLeft, dest, jumpIfNull); sqlite3ExprCachePush(pParse); sqlite3ExprIfFalse(pParse, pExpr->pRight, dest, jumpIfNull); - sqlite3ExprCachePop(pParse, 1); + sqlite3ExprCachePop(pParse); break; } case TK_OR: { @@ -80803,7 +82032,7 @@ SQLITE_PRIVATE void sqlite3ExprIfFalse(Parse *pParse, Expr *pExpr, int dest, int sqlite3ExprCachePush(pParse); sqlite3ExprIfFalse(pParse, pExpr->pRight, dest, jumpIfNull); sqlite3VdbeResolveLabel(v, d2); - sqlite3ExprCachePop(pParse, 1); + sqlite3ExprCachePop(pParse); break; } case TK_NOT: { @@ -81467,6 +82696,7 @@ static void renameParentFunc( int token; /* Type of token */ UNUSED_PARAMETER(NotUsed); + if( zInput==0 || zOld==0 ) return; for(z=zInput; *z; z=z+n){ n = sqlite3GetToken(z, &token); if( token==TK_REFERENCES ){ @@ -82426,6 +83656,7 @@ static void openStatTable( assert( i1 ); /* >1 because it includes the rowid column */ + assert( nCol>0 ); nColUp = sizeof(tRowcnt)<8 ? (nCol+1)&~1 : nCol; + nKeyCol = sqlite3_value_int(argv[1]); + assert( nKeyCol<=nCol ); + assert( nKeyCol>0 ); /* Allocate the space required for the Stat4Accum object */ n = sizeof(*p) @@ -82595,6 +83844,7 @@ static void statInit( p->db = db; p->nRow = 0; p->nCol = nCol; + p->nKeyCol = nKeyCol; p->current.anDLt = (tRowcnt*)&p[1]; p->current.anEq = &p->current.anDLt[nColUp]; @@ -82605,9 +83855,9 @@ static void statInit( p->iGet = -1; p->mxSample = mxSample; - p->nPSample = (tRowcnt)(sqlite3_value_int64(argv[1])/(mxSample/3+1) + 1); + p->nPSample = (tRowcnt)(sqlite3_value_int64(argv[2])/(mxSample/3+1) + 1); p->current.anLt = &p->current.anEq[nColUp]; - p->iPrn = nCol*0x689e962d ^ sqlite3_value_int(argv[1])*0xd0944565; + p->iPrn = nCol*0x689e962d ^ sqlite3_value_int(argv[2])*0xd0944565; /* Set up the Stat4Accum.a[] and aBest[] arrays */ p->a = (struct Stat4Sample*)&p->current.anLt[nColUp]; @@ -82630,7 +83880,7 @@ static void statInit( sqlite3_result_blob(context, p, sizeof(p), stat4Destructor); } static const FuncDef statInitFuncdef = { - 1+IsStat34, /* nArg */ + 2+IsStat34, /* nArg */ SQLITE_UTF8, /* funcFlags */ 0, /* pUserData */ 0, /* pNext */ @@ -82854,7 +84104,10 @@ static void samplePushPrevious(Stat4Accum *p, int iChng){ ** R Rowid for the current row. Might be a key record for ** WITHOUT ROWID tables. ** -** The SQL function always returns NULL. +** This SQL function always returns NULL. It's purpose it to accumulate +** statistical data and/or samples in the Stat4Accum object about the +** index being analyzed. The stat_get() SQL function will later be used to +** extract relevant information for constructing the sqlite_statN tables. ** ** The R parameter is only used for STAT3 and STAT4 */ @@ -82871,7 +84124,7 @@ static void statPush( UNUSED_PARAMETER( argc ); UNUSED_PARAMETER( context ); - assert( p->nCol>1 ); /* Includes rowid field */ + assert( p->nCol>0 ); assert( iChngnCol ); if( p->nRow==0 ){ @@ -82948,7 +84201,10 @@ static const FuncDef statPushFuncdef = { /* ** Implementation of the stat_get(P,J) SQL function. This routine is -** used to query the results. Content is returned for parameter J +** used to query statistical information that has been gathered into +** the Stat4Accum object by prior calls to stat_push(). The P parameter +** is a BLOB which is decoded into a pointer to the Stat4Accum objects. +** The content to returned is determined by the parameter J ** which is one of the STAT_GET_xxxx values defined above. ** ** If neither STAT3 nor STAT4 are enabled, then J is always @@ -82999,7 +84255,7 @@ static void statGet( char *z; int i; - char *zRet = sqlite3MallocZero(p->nCol * 25); + char *zRet = sqlite3MallocZero( (p->nKeyCol+1)*25 ); if( zRet==0 ){ sqlite3_result_error_nomem(context); return; @@ -83007,7 +84263,7 @@ static void statGet( sqlite3_snprintf(24, zRet, "%llu", (u64)p->nRow); z = zRet + sqlite3Strlen30(zRet); - for(i=0; i<(p->nCol-1); i++){ + for(i=0; inKeyCol; i++){ u64 nDistinct = p->current.anDLt[i] + 1; u64 iVal = (p->nRow + nDistinct - 1) / nDistinct; sqlite3_snprintf(24, z, " %llu", iVal); @@ -83167,27 +84423,27 @@ static void analyzeOneTable( sqlite3VdbeAddOp4(v, OP_String8, 0, regTabname, 0, pTab->zName, 0); for(pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext){ - int nCol; /* Number of columns indexed by pIdx */ - int *aGotoChng; /* Array of jump instruction addresses */ + int nCol; /* Number of columns in pIdx. "N" */ int addrRewind; /* Address of "OP_Rewind iIdxCur" */ - int addrGotoChng0; /* Address of "Goto addr_chng_0" */ int addrNextRow; /* Address of "next_row:" */ const char *zIdxName; /* Name of the index */ + int nColTest; /* Number of columns to test for changes */ if( pOnlyIdx && pOnlyIdx!=pIdx ) continue; if( pIdx->pPartIdxWhere==0 ) needTableCnt = 0; - VdbeNoopComment((v, "Begin analysis of %s", pIdx->zName)); - nCol = pIdx->nKeyCol; - aGotoChng = sqlite3DbMallocRaw(db, sizeof(int)*(nCol+1)); - if( aGotoChng==0 ) continue; + if( !HasRowid(pTab) && IsPrimaryKeyIndex(pIdx) ){ + nCol = pIdx->nKeyCol; + zIdxName = pTab->zName; + nColTest = nCol - 1; + }else{ + nCol = pIdx->nColumn; + zIdxName = pIdx->zName; + nColTest = pIdx->uniqNotNull ? pIdx->nKeyCol-1 : nCol-1; + } /* Populate the register containing the index name. */ - if( pIdx->autoIndex==2 && !HasRowid(pTab) ){ - zIdxName = pTab->zName; - }else{ - zIdxName = pIdx->zName; - } sqlite3VdbeAddOp4(v, OP_String8, 0, regIdxname, 0, zIdxName, 0); + VdbeComment((v, "Analysis for %s.%s", pTab->zName, zIdxName)); /* ** Pseudo-code for loop that calls stat_push(): @@ -83212,7 +84468,7 @@ static void analyzeOneTable( ** regPrev(1) = idx(1) ** ... ** - ** chng_addr_N: + ** endDistinctTest: ** regRowid = idx(rowid) ** stat_push(P, regChng, regRowid) ** Next csr @@ -83225,7 +84481,7 @@ static void analyzeOneTable( ** the regPrev array and a trailing rowid (the rowid slot is required ** when building a record to insert into the sample column of ** the sqlite_stat4 table. */ - pParse->nMem = MAX(pParse->nMem, regPrev+nCol); + pParse->nMem = MAX(pParse->nMem, regPrev+nColTest); /* Open a read-only cursor on the index being analyzed. */ assert( iDb==sqlite3SchemaToIndex(db, pIdx->pSchema) ); @@ -83235,18 +84491,22 @@ static void analyzeOneTable( /* Invoke the stat_init() function. The arguments are: ** - ** (1) the number of columns in the index including the rowid, - ** (2) the number of rows in the index, + ** (1) the number of columns in the index including the rowid + ** (or for a WITHOUT ROWID table, the number of PK columns), + ** (2) the number of columns in the key without the rowid/pk + ** (3) the number of rows in the index, ** - ** The second argument is only used for STAT3 and STAT4 + ** + ** The third argument is only used for STAT3 and STAT4 */ #ifdef SQLITE_ENABLE_STAT3_OR_STAT4 - sqlite3VdbeAddOp2(v, OP_Count, iIdxCur, regStat4+2); + sqlite3VdbeAddOp2(v, OP_Count, iIdxCur, regStat4+3); #endif - sqlite3VdbeAddOp2(v, OP_Integer, nCol+1, regStat4+1); + sqlite3VdbeAddOp2(v, OP_Integer, nCol, regStat4+1); + sqlite3VdbeAddOp2(v, OP_Integer, pIdx->nKeyCol, regStat4+2); sqlite3VdbeAddOp3(v, OP_Function, 0, regStat4+1, regStat4); sqlite3VdbeChangeP4(v, -1, (char*)&statInitFuncdef, P4_FUNCDEF); - sqlite3VdbeChangeP5(v, 1+IsStat34); + sqlite3VdbeChangeP5(v, 2+IsStat34); /* Implementation of the following: ** @@ -83259,44 +84519,62 @@ static void analyzeOneTable( addrRewind = sqlite3VdbeAddOp1(v, OP_Rewind, iIdxCur); VdbeCoverage(v); sqlite3VdbeAddOp2(v, OP_Integer, 0, regChng); - addrGotoChng0 = sqlite3VdbeAddOp0(v, OP_Goto); - - /* - ** next_row: - ** regChng = 0 - ** if( idx(0) != regPrev(0) ) goto chng_addr_0 - ** regChng = 1 - ** if( idx(1) != regPrev(1) ) goto chng_addr_1 - ** ... - ** regChng = N - ** goto chng_addr_N - */ addrNextRow = sqlite3VdbeCurrentAddr(v); - for(i=0; iazColl[i]); - sqlite3VdbeAddOp2(v, OP_Integer, i, regChng); - sqlite3VdbeAddOp3(v, OP_Column, iIdxCur, i, regTemp); - aGotoChng[i] = - sqlite3VdbeAddOp4(v, OP_Ne, regTemp, 0, regPrev+i, pColl, P4_COLLSEQ); - sqlite3VdbeChangeP5(v, SQLITE_NULLEQ); - VdbeCoverage(v); - } - sqlite3VdbeAddOp2(v, OP_Integer, nCol, regChng); - aGotoChng[nCol] = sqlite3VdbeAddOp0(v, OP_Goto); - /* - ** chng_addr_0: - ** regPrev(0) = idx(0) - ** chng_addr_1: - ** regPrev(1) = idx(1) - ** ... - */ - sqlite3VdbeJumpHere(v, addrGotoChng0); - for(i=0; i0 ){ + int endDistinctTest = sqlite3VdbeMakeLabel(v); + int *aGotoChng; /* Array of jump instruction addresses */ + aGotoChng = sqlite3DbMallocRaw(db, sizeof(int)*nColTest); + if( aGotoChng==0 ) continue; + /* + ** next_row: + ** regChng = 0 + ** if( idx(0) != regPrev(0) ) goto chng_addr_0 + ** regChng = 1 + ** if( idx(1) != regPrev(1) ) goto chng_addr_1 + ** ... + ** regChng = N + ** goto endDistinctTest + */ + sqlite3VdbeAddOp0(v, OP_Goto); + addrNextRow = sqlite3VdbeCurrentAddr(v); + if( nColTest==1 && pIdx->nKeyCol==1 && IsUniqueIndex(pIdx) ){ + /* For a single-column UNIQUE index, once we have found a non-NULL + ** row, we know that all the rest will be distinct, so skip + ** subsequent distinctness tests. */ + sqlite3VdbeAddOp2(v, OP_NotNull, regPrev, endDistinctTest); + VdbeCoverage(v); + } + for(i=0; iazColl[i]); + sqlite3VdbeAddOp2(v, OP_Integer, i, regChng); + sqlite3VdbeAddOp3(v, OP_Column, iIdxCur, i, regTemp); + aGotoChng[i] = + sqlite3VdbeAddOp4(v, OP_Ne, regTemp, 0, regPrev+i, pColl, P4_COLLSEQ); + sqlite3VdbeChangeP5(v, SQLITE_NULLEQ); + VdbeCoverage(v); + } + sqlite3VdbeAddOp2(v, OP_Integer, nColTest, regChng); + sqlite3VdbeAddOp2(v, OP_Goto, 0, endDistinctTest); + + + /* + ** chng_addr_0: + ** regPrev(0) = idx(0) + ** chng_addr_1: + ** regPrev(1) = idx(1) + ** ... + */ + sqlite3VdbeJumpHere(v, addrNextRow-1); + for(i=0; inMem = MAX(pParse->nMem, regCol+nCol+1); + pParse->nMem = MAX(pParse->nMem, regCol+nCol); addrNext = sqlite3VdbeCurrentAddr(v); callStatGet(v, regStat4, STAT_GET_ROWID, regSampleRowid); @@ -83370,7 +84647,7 @@ static void analyzeOneTable( i16 iCol = pIdx->aiColumn[i]; sqlite3ExprCodeGetColumnOfTable(v, pTab, iTabCur, iCol, regCol+i); } - sqlite3VdbeAddOp3(v, OP_MakeRecord, regCol, nCol+1, regSample); + sqlite3VdbeAddOp3(v, OP_MakeRecord, regCol, nCol, regSample); #endif sqlite3VdbeAddOp3(v, OP_MakeRecord, regTabname, 6, regTemp); sqlite3VdbeAddOp2(v, OP_NewRowid, iStatCur+1, regNewRowid); @@ -83382,7 +84659,6 @@ static void analyzeOneTable( /* End of analysis */ sqlite3VdbeJumpHere(v, addrRewind); - sqlite3DbFree(db, aGotoChng); } @@ -83483,6 +84759,7 @@ SQLITE_PRIVATE void sqlite3Analyze(Parse *pParse, Token *pName1, Token *pName2){ Table *pTab; Index *pIdx; Token *pTableName; + Vdbe *v; /* Read the database schema. If an error occurs, leave an error message ** and code in pParse and return NULL. */ @@ -83530,6 +84807,8 @@ SQLITE_PRIVATE void sqlite3Analyze(Parse *pParse, Token *pName1, Token *pName2){ } } } + v = sqlite3GetVdbe(pParse); + if( v ) sqlite3VdbeAddOp0(v, OP_Expire); } /* @@ -83551,6 +84830,7 @@ static void decodeIntArray( char *zIntArray, /* String containing int array to decode */ int nOut, /* Number of slots in aOut[] */ tRowcnt *aOut, /* Store integers here */ + LogEst *aLog, /* Or, if aOut==0, here */ Index *pIndex /* Handle extra flags for this index, if not NULL */ ){ char *z = zIntArray; @@ -83569,7 +84849,17 @@ static void decodeIntArray( v = v*10 + c - '0'; z++; } - aOut[i] = v; +#ifdef SQLITE_ENABLE_STAT3_OR_STAT4 + if( aOut ){ + aOut[i] = v; + }else +#else + assert( aOut==0 ); + UNUSED_PARAMETER(aOut); +#endif + { + aLog[i] = sqlite3LogEst(v); + } if( *z==' ' ) z++; } #ifndef SQLITE_ENABLE_STAT3_OR_STAT4 @@ -83577,14 +84867,19 @@ static void decodeIntArray( #else if( pIndex ) #endif - { - if( strcmp(z, "unordered")==0 ){ + while( z[0] ){ + if( sqlite3_strglob("unordered*", z)==0 ){ pIndex->bUnordered = 1; }else if( sqlite3_strglob("sz=[0-9]*", z)==0 ){ - int v32 = 0; - sqlite3GetInt32(z+3, &v32); - pIndex->szIdxRow = sqlite3LogEst(v32); + pIndex->szIdxRow = sqlite3LogEst(sqlite3Atoi(z+3)); } +#ifdef SQLITE_ENABLE_COSTMULT + else if( sqlite3_strglob("costmult=[0-9]*",z)==0 ){ + pIndex->pTable->costMult = sqlite3LogEst(sqlite3Atoi(z+9)); + } +#endif + while( z[0]!=0 && z[0]!=' ' ) z++; + while( z[0]==' ' ) z++; } } @@ -83625,12 +84920,16 @@ static int analysisLoader(void *pData, int argc, char **argv, char **NotUsed){ z = argv[2]; if( pIndex ){ - decodeIntArray((char*)z, pIndex->nKeyCol+1, pIndex->aiRowEst, pIndex); - if( pIndex->pPartIdxWhere==0 ) pTable->nRowEst = pIndex->aiRowEst[0]; + pIndex->bUnordered = 0; + decodeIntArray((char*)z, pIndex->nKeyCol+1, 0, pIndex->aiRowLogEst, pIndex); + if( pIndex->pPartIdxWhere==0 ) pTable->nRowLogEst = pIndex->aiRowLogEst[0]; }else{ Index fakeIdx; fakeIdx.szIdxRow = pTable->szTabRow; - decodeIntArray((char*)z, 1, &pTable->nRowEst, &fakeIdx); +#ifdef SQLITE_ENABLE_COSTMULT + fakeIdx.pTable = pTable; +#endif + decodeIntArray((char*)z, 1, 0, &pTable->nRowLogEst, &fakeIdx); pTable->szTabRow = fakeIdx.szIdxRow; } @@ -83671,7 +84970,16 @@ static void initAvgEq(Index *pIdx){ IndexSample *aSample = pIdx->aSample; IndexSample *pFinal = &aSample[pIdx->nSample-1]; int iCol; - for(iCol=0; iColnKeyCol; iCol++){ + int nCol = 1; + if( pIdx->nSampleCol>1 ){ + /* If this is stat4 data, then calculate aAvgEq[] values for all + ** sample columns except the last. The last is always set to 1, as + ** once the trailing PK fields are considered all index keys are + ** unique. */ + nCol = pIdx->nSampleCol-1; + pIdx->aAvgEq[nCol] = 1; + } + for(iCol=0; iColaAvgEq[iCol] = avgEq; - if( pIdx->nSampleCol==1 ) break; } } } @@ -83753,7 +85060,6 @@ static int loadStatTbl( while( sqlite3_step(pStmt)==SQLITE_ROW ){ int nIdxCol = 1; /* Number of columns in stat4 records */ - int nAvgCol = 1; /* Number of entries in Index.aAvgEq */ char *zIndex; /* Index name */ Index *pIdx; /* Pointer to the index object */ @@ -83771,13 +85077,17 @@ static int loadStatTbl( ** loaded from the stat4 table. In this case ignore stat3 data. */ if( pIdx==0 || pIdx->nSample ) continue; if( bStat3==0 ){ - nIdxCol = pIdx->nKeyCol+1; - nAvgCol = pIdx->nKeyCol; + assert( !HasRowid(pIdx->pTable) || pIdx->nColumn==pIdx->nKeyCol+1 ); + if( !HasRowid(pIdx->pTable) && IsPrimaryKeyIndex(pIdx) ){ + nIdxCol = pIdx->nKeyCol; + }else{ + nIdxCol = pIdx->nColumn; + } } pIdx->nSampleCol = nIdxCol; nByte = sizeof(IndexSample) * nSample; nByte += sizeof(tRowcnt) * nIdxCol * 3 * nSample; - nByte += nAvgCol * sizeof(tRowcnt); /* Space for Index.aAvgEq[] */ + nByte += nIdxCol * sizeof(tRowcnt); /* Space for Index.aAvgEq[] */ pIdx->aSample = sqlite3DbMallocZero(db, nByte); if( pIdx->aSample==0 ){ @@ -83785,7 +85095,7 @@ static int loadStatTbl( return SQLITE_NOMEM; } pSpace = (tRowcnt*)&pIdx->aSample[nSample]; - pIdx->aAvgEq = pSpace; pSpace += nAvgCol; + pIdx->aAvgEq = pSpace; pSpace += nIdxCol; for(i=0; iaSample[i].anEq = pSpace; pSpace += nIdxCol; pIdx->aSample[i].anLt = pSpace; pSpace += nIdxCol; @@ -83822,9 +85132,9 @@ static int loadStatTbl( pPrevIdx = pIdx; } pSample = &pIdx->aSample[pIdx->nSample]; - decodeIntArray((char*)sqlite3_column_text(pStmt,1), nCol, pSample->anEq, 0); - decodeIntArray((char*)sqlite3_column_text(pStmt,2), nCol, pSample->anLt, 0); - decodeIntArray((char*)sqlite3_column_text(pStmt,3), nCol, pSample->anDLt,0); + decodeIntArray((char*)sqlite3_column_text(pStmt,1),nCol,pSample->anEq,0,0); + decodeIntArray((char*)sqlite3_column_text(pStmt,2),nCol,pSample->anLt,0,0); + decodeIntArray((char*)sqlite3_column_text(pStmt,3),nCol,pSample->anDLt,0,0); /* Take a copy of the sample. Add two 0x00 bytes the end of the buffer. ** This is in case the sample record is corrupted. In that case, the @@ -84894,6 +86204,19 @@ static void codeTableLocks(Parse *pParse){ #define codeTableLocks(x) #endif +/* +** Return TRUE if the given yDbMask object is empty - if it contains no +** 1 bits. This routine is used by the DbMaskAllZero() and DbMaskNotZero() +** macros when SQLITE_MAX_ATTACHED is greater than 30. +*/ +#if SQLITE_MAX_ATTACHED>30 +SQLITE_PRIVATE int sqlite3DbMaskAllZero(yDbMask m){ + int i; + for(i=0; imallocFailed==0 && (pParse->cookieMask || pParse->pConstExpr) ){ - yDbMask mask; + if( db->mallocFailed==0 + && (DbMaskNonZero(pParse->cookieMask) || pParse->pConstExpr) + ){ int iDb, i; assert( sqlite3VdbeGetOp(v, 0)->opcode==OP_Init ); sqlite3VdbeJumpHere(v, 0); - for(iDb=0, mask=1; iDbnDb; mask<<=1, iDb++){ - if( (mask & pParse->cookieMask)==0 ) continue; + for(iDb=0; iDbnDb; iDb++){ + if( DbMaskTest(pParse->cookieMask, iDb)==0 ) continue; sqlite3VdbeUsesBtree(v, iDb); sqlite3VdbeAddOp4Int(v, OP_Transaction, /* Opcode */ iDb, /* P1 */ - (mask & pParse->writeMask)!=0, /* P2 */ + DbMaskTest(pParse->writeMask,iDb), /* P2 */ pParse->cookieValue[iDb], /* P3 */ db->aDb[iDb].pSchema->iGeneration /* P4 */ ); @@ -84997,7 +86321,7 @@ SQLITE_PRIVATE void sqlite3FinishCoding(Parse *pParse){ pParse->nMem = 0; pParse->nSet = 0; pParse->nVar = 0; - pParse->cookieMask = 0; + DbMaskZero(pParse->cookieMask); } /* @@ -85538,7 +86862,7 @@ SQLITE_PRIVATE int sqlite3CheckObjectName(Parse *pParse, const char *zName){ */ SQLITE_PRIVATE Index *sqlite3PrimaryKeyIndex(Table *pTab){ Index *p; - for(p=pTab->pIndex; p && p->autoIndex!=2; p=p->pNext){} + for(p=pTab->pIndex; p && !IsPrimaryKeyIndex(p); p=p->pNext){} return p; } @@ -85686,7 +87010,7 @@ SQLITE_PRIVATE void sqlite3StartTable( pTable->iPKey = -1; pTable->pSchema = db->aDb[iDb].pSchema; pTable->nRef = 1; - pTable->nRowEst = 1048576; + pTable->nRowLogEst = 200; assert( 200==sqlite3LogEst(1048576) ); assert( pParse->pNewTable==0 ); pParse->pNewTable = pTable; @@ -86067,7 +87391,7 @@ SQLITE_PRIVATE void sqlite3AddPrimaryKey( p = sqlite3CreateIndex(pParse, 0, 0, 0, pList, onError, 0, 0, sortOrder, 0); if( p ){ - p->autoIndex = 2; + p->idxType = SQLITE_IDXTYPE_PRIMARYKEY; if( v ) sqlite3VdbeJumpHere(v, pParse->addrSkipPK); } pList = 0; @@ -86087,7 +87411,10 @@ SQLITE_PRIVATE void sqlite3AddCheckConstraint( ){ #ifndef SQLITE_OMIT_CHECK Table *pTab = pParse->pNewTable; - if( pTab && !IN_DECLARE_VTAB ){ + sqlite3 *db = pParse->db; + if( pTab && !IN_DECLARE_VTAB + && !sqlite3BtreeIsReadonly(db->aDb[db->init.iDb].pBt) + ){ pTab->pCheck = sqlite3ExprListAppend(pParse, pTab->pCheck, pCheckExpr); if( pParse->constraintName.n ){ sqlite3ExprListSetName(pParse, pTab->pCheck, &pParse->constraintName, 1); @@ -86439,7 +87766,7 @@ static void convertToWithoutRowidTable(Parse *pParse, Table *pTab){ assert( pParse->pNewTable==pTab ); pPk = sqlite3CreateIndex(pParse, 0, 0, 0, pList, pTab->keyConf, 0, 0, 0, 0); if( pPk==0 ) return; - pPk->autoIndex = 2; + pPk->idxType = SQLITE_IDXTYPE_PRIMARYKEY; pTab->iPKey = -1; }else{ pPk = sqlite3PrimaryKeyIndex(pTab); @@ -86462,7 +87789,7 @@ static void convertToWithoutRowidTable(Parse *pParse, Table *pTab){ */ for(pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext){ int n; - if( pIdx->autoIndex==2 ) continue; + if( IsPrimaryKeyIndex(pIdx) ) continue; for(i=n=0; iaiColumn, pIdx->nKeyCol, pPk->aiColumn[i]) ) n++; } @@ -86894,7 +88221,7 @@ SQLITE_PRIVATE int sqlite3ViewGetColumnNames(Parse *pParse, Table *pTable){ pSelTab->aCol = 0; sqlite3DeleteTable(db, pSelTab); assert( sqlite3SchemaMutexHeld(db, 0, pTable->pSchema) ); - pTable->pSchema->flags |= DB_UnresetViews; + pTable->pSchema->schemaFlags |= DB_UnresetViews; }else{ pTable->nCol = 0; nErr++; @@ -87461,7 +88788,7 @@ static void sqlite3RefillIndex(Parse *pParse, Index *pIndex, int memRootPage){ sqlite3GenerateIndexKey(pParse,pIndex,iTab,regRecord,0,&iPartIdxLabel,0,0); sqlite3VdbeAddOp2(v, OP_SorterInsert, iSorter, regRecord); - sqlite3VdbeResolveLabel(v, iPartIdxLabel); + sqlite3ResolvePartIdxLabel(pParse, iPartIdxLabel); sqlite3VdbeAddOp2(v, OP_Next, iTab, addr1+1); VdbeCoverage(v); sqlite3VdbeJumpHere(v, addr1); if( memRootPage<0 ) sqlite3VdbeAddOp2(v, OP_Clear, tnum, iDb); @@ -87471,12 +88798,12 @@ static void sqlite3RefillIndex(Parse *pParse, Index *pIndex, int memRootPage){ addr1 = sqlite3VdbeAddOp2(v, OP_SorterSort, iSorter, 0); VdbeCoverage(v); assert( pKey!=0 || db->mallocFailed || pParse->nErr ); - if( pIndex->onError!=OE_None && pKey!=0 ){ + if( IsUniqueIndex(pIndex) && pKey!=0 ){ int j2 = sqlite3VdbeCurrentAddr(v) + 3; sqlite3VdbeAddOp2(v, OP_Goto, 0, j2); addr2 = sqlite3VdbeCurrentAddr(v); sqlite3VdbeAddOp4Int(v, OP_SorterCompare, iSorter, j2, regRecord, - pKey->nField - pIndex->nKeyCol); VdbeCoverage(v); + pIndex->nKeyCol); VdbeCoverage(v); sqlite3UniqueConstraint(pParse, OE_Abort, pIndex); }else{ addr2 = sqlite3VdbeCurrentAddr(v); @@ -87511,15 +88838,15 @@ SQLITE_PRIVATE Index *sqlite3AllocateIndexObject( nByte = ROUND8(sizeof(Index)) + /* Index structure */ ROUND8(sizeof(char*)*nCol) + /* Index.azColl */ - ROUND8(sizeof(tRowcnt)*(nCol+1) + /* Index.aiRowEst */ + ROUND8(sizeof(LogEst)*(nCol+1) + /* Index.aiRowLogEst */ sizeof(i16)*nCol + /* Index.aiColumn */ sizeof(u8)*nCol); /* Index.aSortOrder */ p = sqlite3DbMallocZero(db, nByte + nExtra); if( p ){ char *pExtra = ((char*)p)+ROUND8(sizeof(Index)); - p->azColl = (char**)pExtra; pExtra += ROUND8(sizeof(char*)*nCol); - p->aiRowEst = (tRowcnt*)pExtra; pExtra += sizeof(tRowcnt)*(nCol+1); - p->aiColumn = (i16*)pExtra; pExtra += sizeof(i16)*nCol; + p->azColl = (char**)pExtra; pExtra += ROUND8(sizeof(char*)*nCol); + p->aiRowLogEst = (LogEst*)pExtra; pExtra += sizeof(LogEst)*(nCol+1); + p->aiColumn = (i16*)pExtra; pExtra += sizeof(i16)*nCol; p->aSortOrder = (u8*)pExtra; p->nColumn = nCol; p->nKeyCol = nCol - 1; @@ -87542,7 +88869,7 @@ SQLITE_PRIVATE Index *sqlite3AllocateIndexObject( ** ** If the index is created successfully, return a pointer to the new Index ** structure. This is used by sqlite3AddPrimaryKey() to mark the index -** as the tables primary key (Index.autoIndex==2). +** as the tables primary key (Index.idxType==SQLITE_IDXTYPE_PRIMARYKEY) */ SQLITE_PRIVATE Index *sqlite3CreateIndex( Parse *pParse, /* All information about this parse */ @@ -87749,7 +89076,7 @@ SQLITE_PRIVATE Index *sqlite3CreateIndex( if( db->mallocFailed ){ goto exit_create_index; } - assert( EIGHT_BYTE_ALIGNMENT(pIndex->aiRowEst) ); + assert( EIGHT_BYTE_ALIGNMENT(pIndex->aiRowLogEst) ); assert( EIGHT_BYTE_ALIGNMENT(pIndex->azColl) ); pIndex->zName = zExtra; zExtra += nName + 1; @@ -87757,7 +89084,7 @@ SQLITE_PRIVATE Index *sqlite3CreateIndex( pIndex->pTable = pTab; pIndex->onError = (u8)onError; pIndex->uniqNotNull = onError!=OE_None; - pIndex->autoIndex = (u8)(pName==0); + pIndex->idxType = pName ? SQLITE_IDXTYPE_APPDEF : SQLITE_IDXTYPE_UNIQUE; pIndex->pSchema = db->aDb[iDb].pSchema; pIndex->nKeyCol = pList->nExpr; if( pPIWhere ){ @@ -87868,9 +89195,9 @@ SQLITE_PRIVATE Index *sqlite3CreateIndex( Index *pIdx; for(pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext){ int k; - assert( pIdx->onError!=OE_None ); - assert( pIdx->autoIndex ); - assert( pIndex->onError!=OE_None ); + assert( IsUniqueIndex(pIdx) ); + assert( pIdx->idxType!=SQLITE_IDXTYPE_APPDEF ); + assert( IsUniqueIndex(pIndex) ); if( pIdx->nKeyCol!=pIndex->nKeyCol ) continue; for(k=0; knKeyCol; k++){ @@ -88030,7 +89357,7 @@ exit_create_index: ** Since we do not know, guess 1 million. aiRowEst[1] is an estimate of the ** number of rows in the table that match any particular value of the ** first column of the index. aiRowEst[2] is an estimate of the number -** of rows that match any particular combiniation of the first 2 columns +** of rows that match any particular combination of the first 2 columns ** of the index. And so forth. It must always be the case that * ** aiRowEst[N]<=aiRowEst[N-1] @@ -88041,20 +89368,27 @@ exit_create_index: ** are based on typical values found in actual indices. */ SQLITE_PRIVATE void sqlite3DefaultRowEst(Index *pIdx){ - tRowcnt *a = pIdx->aiRowEst; + /* 10, 9, 8, 7, 6 */ + LogEst aVal[] = { 33, 32, 30, 28, 26 }; + LogEst *a = pIdx->aiRowLogEst; + int nCopy = MIN(ArraySize(aVal), pIdx->nKeyCol); int i; - tRowcnt n; - assert( a!=0 ); - a[0] = pIdx->pTable->nRowEst; - if( a[0]<10 ) a[0] = 10; - n = 10; - for(i=1; i<=pIdx->nKeyCol; i++){ - a[i] = n; - if( n>5 ) n--; - } - if( pIdx->onError!=OE_None ){ - a[pIdx->nKeyCol] = 1; + + /* Set the first entry (number of rows in the index) to the estimated + ** number of rows in the table. Or 10, if the estimated number of rows + ** in the table is less than that. */ + a[0] = pIdx->pTable->nRowLogEst; + if( a[0]<33 ) a[0] = 33; assert( 33==sqlite3LogEst(10) ); + + /* Estimate that a[1] is 10, a[2] is 9, a[3] is 8, a[4] is 7, a[5] is + ** 6 and each subsequent value (if any) is 5. */ + memcpy(&a[1], aVal, nCopy*sizeof(LogEst)); + for(i=nCopy+1; i<=pIdx->nKeyCol; i++){ + a[i] = 23; assert( 23==sqlite3LogEst(5) ); } + + assert( 0==sqlite3LogEst(1) ); + if( IsUniqueIndex(pIdx) ) a[pIdx->nKeyCol] = 0; } /* @@ -88085,7 +89419,7 @@ SQLITE_PRIVATE void sqlite3DropIndex(Parse *pParse, SrcList *pName, int ifExists pParse->checkSchema = 1; goto exit_drop_index; } - if( pIndex->autoIndex ){ + if( pIndex->idxType!=SQLITE_IDXTYPE_APPDEF ){ sqlite3ErrorMsg(pParse, "index associated with UNIQUE " "or PRIMARY KEY constraint cannot be dropped", 0); goto exit_drop_index; @@ -88614,15 +89948,13 @@ SQLITE_PRIVATE int sqlite3OpenTempDatabase(Parse *pParse){ SQLITE_PRIVATE void sqlite3CodeVerifySchema(Parse *pParse, int iDb){ Parse *pToplevel = sqlite3ParseToplevel(pParse); sqlite3 *db = pToplevel->db; - yDbMask mask; assert( iDb>=0 && iDbnDb ); assert( db->aDb[iDb].pBt!=0 || iDb==1 ); assert( iDbcookieMask & mask)==0 ){ - pToplevel->cookieMask |= mask; + if( DbMaskTest(pToplevel->cookieMask, iDb)==0 ){ + DbMaskSet(pToplevel->cookieMask, iDb); pToplevel->cookieValue[iDb] = db->aDb[iDb].pSchema->schema_cookie; if( !OMIT_TEMPDB && iDb==1 ){ sqlite3OpenTempDatabase(pToplevel); @@ -88661,7 +89993,7 @@ SQLITE_PRIVATE void sqlite3CodeVerifyNamedSchema(Parse *pParse, const char *zDb) SQLITE_PRIVATE void sqlite3BeginWriteOperation(Parse *pParse, int setStatement, int iDb){ Parse *pToplevel = sqlite3ParseToplevel(pParse); sqlite3CodeVerifySchema(pParse, iDb); - pToplevel->writeMask |= ((yDbMask)1)<writeMask, iDb); pToplevel->isMultiWrite |= setStatement; } @@ -88744,7 +90076,8 @@ SQLITE_PRIVATE void sqlite3UniqueConstraint( } zErr = sqlite3StrAccumFinish(&errMsg); sqlite3HaltConstraint(pParse, - (pIdx->autoIndex==2)?SQLITE_CONSTRAINT_PRIMARYKEY:SQLITE_CONSTRAINT_UNIQUE, + IsPrimaryKeyIndex(pIdx) ? SQLITE_CONSTRAINT_PRIMARYKEY + : SQLITE_CONSTRAINT_UNIQUE, onError, zErr, P4_DYNAMIC, P5_ConstraintUnique); } @@ -89467,9 +90800,9 @@ SQLITE_PRIVATE void sqlite3SchemaClear(void *p){ sqlite3HashClear(&temp1); sqlite3HashClear(&pSchema->fkeyHash); pSchema->pSeqTab = 0; - if( pSchema->flags & DB_SchemaLoaded ){ + if( pSchema->schemaFlags & DB_SchemaLoaded ){ pSchema->iGeneration++; - pSchema->flags &= ~DB_SchemaLoaded; + pSchema->schemaFlags &= ~DB_SchemaLoaded; } } @@ -90238,7 +91571,7 @@ SQLITE_PRIVATE void sqlite3GenerateRowIndexDelete( &iPartIdxLabel, pPrior, r1); sqlite3VdbeAddOp3(v, OP_IdxDelete, iIdxCur+i, r1, pIdx->uniqNotNull ? pIdx->nKeyCol : pIdx->nColumn); - sqlite3VdbeResolveLabel(v, iPartIdxLabel); + sqlite3ResolvePartIdxLabel(pParse, iPartIdxLabel); pPrior = pIdx; } } @@ -90257,10 +91590,11 @@ SQLITE_PRIVATE void sqlite3GenerateRowIndexDelete( ** ** If *piPartIdxLabel is not NULL, fill it in with a label and jump ** to that label if pIdx is a partial index that should be skipped. +** The label should be resolved using sqlite3ResolvePartIdxLabel(). ** A partial index should be skipped if its WHERE clause evaluates ** to false or null. If pIdx is not a partial index, *piPartIdxLabel ** will be set to zero which is an empty label that is ignored by -** sqlite3VdbeResolveLabel(). +** sqlite3ResolvePartIdxLabel(). ** ** The pPrior and regPrior parameters are used to implement a cache to ** avoid unnecessary register loads. If pPrior is not NULL, then it is @@ -90293,6 +91627,7 @@ SQLITE_PRIVATE int sqlite3GenerateIndexKey( if( pIdx->pPartIdxWhere ){ *piPartIdxLabel = sqlite3VdbeMakeLabel(v); pParse->iPartIdxTab = iDataCur; + sqlite3ExprCachePush(pParse); sqlite3ExprIfFalse(pParse, pIdx->pPartIdxWhere, *piPartIdxLabel, SQLITE_JUMPIFNULL); }else{ @@ -90321,6 +91656,18 @@ SQLITE_PRIVATE int sqlite3GenerateIndexKey( return regBase; } +/* +** If a prior call to sqlite3GenerateIndexKey() generated a jump-over label +** because it was a partial index, then this routine should be called to +** resolve that label. +*/ +SQLITE_PRIVATE void sqlite3ResolvePartIdxLabel(Parse *pParse, int iLabel){ + if( iLabel ){ + sqlite3VdbeResolveLabel(pParse->pVdbe, iLabel); + sqlite3ExprCachePop(pParse); + } +} + /************** End of delete.c **********************************************/ /************** Begin file func.c ********************************************/ /* @@ -90334,12 +91681,9 @@ SQLITE_PRIVATE int sqlite3GenerateIndexKey( ** May you share freely, never taking more than you give. ** ************************************************************************* -** This file contains the C functions that implement various SQL -** functions of SQLite. -** -** There is only one exported symbol in this file - the function -** sqliteRegisterBuildinFunctions() found at the bottom of the file. -** All other code has file scope. +** This file contains the C-language implementions for many of the SQL +** functions of SQLite. (Some function, and in particular the date and +** time functions, are implemented separately.) */ /* #include */ /* #include */ @@ -91864,7 +93208,7 @@ static void groupConcatStep( } zVal = (char*)sqlite3_value_text(argv[0]); nVal = sqlite3_value_bytes(argv[0]); - if( nVal ) sqlite3StrAccumAppend(pAccum, zVal, nVal); + if( zVal ) sqlite3StrAccumAppend(pAccum, zVal, nVal); } } static void groupConcatFinalize(sqlite3_context *context){ @@ -92014,6 +93358,7 @@ SQLITE_PRIVATE void sqlite3RegisterGlobalFunctions(void){ FUNCTION2(ifnull, 2, 0, 0, noopFunc, SQLITE_FUNC_COALESCE), FUNCTION2(unlikely, 1, 0, 0, noopFunc, SQLITE_FUNC_UNLIKELY), FUNCTION2(likelihood, 2, 0, 0, noopFunc, SQLITE_FUNC_UNLIKELY), + FUNCTION2(likely, 1, 0, 0, noopFunc, SQLITE_FUNC_UNLIKELY), VFUNCTION(random, 0, 0, 0, randomFunc ), VFUNCTION(randomblob, 1, 0, 0, randomBlob ), FUNCTION(nullif, 2, 0, 1, nullifFunc ), @@ -92300,7 +93645,7 @@ SQLITE_PRIVATE int sqlite3FkLocateIndex( } for(pIdx=pParent->pIndex; pIdx; pIdx=pIdx->pNext){ - if( pIdx->nKeyCol==nCol && pIdx->onError!=OE_None ){ + if( pIdx->nKeyCol==nCol && IsUniqueIndex(pIdx) ){ /* pIdx is a UNIQUE index (or a PRIMARY KEY) and has the right number ** of columns. If each indexed column corresponds to a foreign key ** column of pFKey, then this index is a winner. */ @@ -92308,8 +93653,8 @@ SQLITE_PRIVATE int sqlite3FkLocateIndex( if( zKey==0 ){ /* If zKey is NULL, then this foreign key is implicitly mapped to ** the PRIMARY KEY of table pParent. The PRIMARY KEY index may be - ** identified by the test (Index.autoIndex==2). */ - if( pIdx->autoIndex==2 ){ + ** identified by the test. */ + if( IsPrimaryKeyIndex(pIdx) ){ if( aiCol ){ int i; for(i=0; iaCol[i].iFrom; @@ -94054,6 +95399,7 @@ SQLITE_PRIVATE void sqlite3Insert( if( j>=pTab->nCol ){ if( sqlite3IsRowid(pColumn->a[i].zName) && !withoutRowid ){ ipkColumn = i; + bIdListInOrder = 0; }else{ sqlite3ErrorMsg(pParse, "table %S has no column named %s", pTabList, 0, pColumn->a[i].zName); @@ -94902,7 +96248,7 @@ SQLITE_PRIVATE void sqlite3GenerateConstraintChecks( ** KEY values of this row before the update. */ int addrJump = sqlite3VdbeCurrentAddr(v)+pPk->nKeyCol; int op = OP_Ne; - int regCmp = (pIdx->autoIndex==2 ? regIdx : regR); + int regCmp = (IsPrimaryKeyIndex(pIdx) ? regIdx : regR); for(i=0; inKeyCol; i++){ char *p4 = (char*)sqlite3LocateCollSeq(pParse, pPk->azColl[i]); @@ -95003,7 +96349,7 @@ SQLITE_PRIVATE void sqlite3CompleteInsertion( sqlite3VdbeAddOp2(v, OP_IdxInsert, iIdxCur+i, aRegIdx[i]); pik_flags = 0; if( useSeekResult ) pik_flags = OPFLAG_USESEEKRESULT; - if( pIdx->autoIndex==2 && !HasRowid(pTab) ){ + if( IsPrimaryKeyIndex(pIdx) && !HasRowid(pTab) ){ assert( pParse->nested==0 ); pik_flags |= OPFLAG_NCHANGE; } @@ -95089,7 +96435,7 @@ SQLITE_PRIVATE int sqlite3OpenTableAndIndices( for(i=0, pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext, i++){ int iIdxCur = iBase++; assert( pIdx->pSchema==pTab->pSchema ); - if( pIdx->autoIndex==2 && !HasRowid(pTab) && piDataCur ){ + if( IsPrimaryKeyIndex(pIdx) && !HasRowid(pTab) && piDataCur ){ *piDataCur = iIdxCur; } if( aToOpen==0 || aToOpen[i+1] ){ @@ -95305,18 +96651,27 @@ static int xferOptimization( return 0; /* Both tables must have the same INTEGER PRIMARY KEY */ } for(i=0; inCol; i++){ - if( pDest->aCol[i].affinity!=pSrc->aCol[i].affinity ){ + Column *pDestCol = &pDest->aCol[i]; + Column *pSrcCol = &pSrc->aCol[i]; + if( pDestCol->affinity!=pSrcCol->affinity ){ return 0; /* Affinity must be the same on all columns */ } - if( !xferCompatibleCollation(pDest->aCol[i].zColl, pSrc->aCol[i].zColl) ){ + if( !xferCompatibleCollation(pDestCol->zColl, pSrcCol->zColl) ){ return 0; /* Collating sequence must be the same on all columns */ } - if( pDest->aCol[i].notNull && !pSrc->aCol[i].notNull ){ + if( pDestCol->notNull && !pSrcCol->notNull ){ return 0; /* tab2 must be NOT NULL if tab1 is */ } + /* Default values for second and subsequent columns need to match. */ + if( i>0 + && ((pDestCol->zDflt==0)!=(pSrcCol->zDflt==0) + || (pDestCol->zDflt && strcmp(pDestCol->zDflt, pSrcCol->zDflt)!=0)) + ){ + return 0; /* Default values must be the same for all columns */ + } } for(pDestIdx=pDest->pIndex; pDestIdx; pDestIdx=pDestIdx->pNext){ - if( pDestIdx->onError!=OE_None ){ + if( IsUniqueIndex(pDestIdx) ){ destHasUniqueIdx = 1; } for(pSrcIdx=pSrc->pIndex; pSrcIdx; pSrcIdx=pSrcIdx->pNext){ @@ -95546,6 +96901,9 @@ SQLITE_API int sqlite3_exec( } } if( xCallback(pArg, nCol, azVals, azCols) ){ + /* EVIDENCE-OF: R-38229-40159 If the callback function to + ** sqlite3_exec() returns non-zero, then sqlite3_exec() will + ** return SQLITE_ABORT. */ rc = SQLITE_ABORT; sqlite3VdbeFinalize((Vdbe *)pStmt); pStmt = 0; @@ -97323,7 +98681,7 @@ static const struct sPragmaNames { ** to support legacy SQL code. The safety level used to be boolean ** and older scripts may have used numbers 0 for OFF and 1 for ON. */ -static u8 getSafetyLevel(const char *z, int omitFull, int dflt){ +static u8 getSafetyLevel(const char *z, int omitFull, u8 dflt){ /* 123456789 123456789 */ static const char zText[] = "onoffalseyestruefull"; static const u8 iOffset[] = {0, 1, 2, 4, 9, 12, 16}; @@ -97345,7 +98703,7 @@ static u8 getSafetyLevel(const char *z, int omitFull, int dflt){ /* ** Interpret the given string as a boolean value. */ -SQLITE_PRIVATE u8 sqlite3GetBoolean(const char *z, int dflt){ +SQLITE_PRIVATE u8 sqlite3GetBoolean(const char *z, u8 dflt){ return getSafetyLevel(z,1,dflt)!=0; } @@ -97891,7 +99249,7 @@ SQLITE_PRIVATE void sqlite3Pragma( Pager *pPager = sqlite3BtreePager(pDb->pBt); i64 iLimit = -2; if( zRight ){ - sqlite3Atoi64(zRight, &iLimit, sqlite3Strlen30(zRight), SQLITE_UTF8); + sqlite3DecOrHexToI64(zRight, &iLimit); if( iLimit<-1 ) iLimit = -1; } iLimit = sqlite3PagerJournalSizeLimit(pPager, iLimit); @@ -98019,7 +99377,7 @@ SQLITE_PRIVATE void sqlite3Pragma( assert( sqlite3SchemaMutexHeld(db, iDb, 0) ); if( zRight ){ int ii; - sqlite3Atoi64(zRight, &sz, sqlite3Strlen30(zRight), SQLITE_UTF8); + sqlite3DecOrHexToI64(zRight, &sz); if( sz<0 ) sz = sqlite3GlobalConfig.szMmap; if( pId2->n==0 ) db->szMmap = sz; for(ii=db->nDb-1; ii>=0; ii--){ @@ -98331,13 +99689,15 @@ SQLITE_PRIVATE void sqlite3Pragma( sqlite3VdbeAddOp2(v, OP_Null, 0, 2); sqlite3VdbeAddOp2(v, OP_Integer, (int)sqlite3LogEstToInt(pTab->szTabRow), 3); - sqlite3VdbeAddOp2(v, OP_Integer, (int)pTab->nRowEst, 4); + sqlite3VdbeAddOp2(v, OP_Integer, + (int)sqlite3LogEstToInt(pTab->nRowLogEst), 4); sqlite3VdbeAddOp2(v, OP_ResultRow, 1, 4); for(pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext){ sqlite3VdbeAddOp4(v, OP_String8, 0, 2, 0, pIdx->zName, 0); sqlite3VdbeAddOp2(v, OP_Integer, (int)sqlite3LogEstToInt(pIdx->szIdxRow), 3); - sqlite3VdbeAddOp2(v, OP_Integer, (int)pIdx->aiRowEst[0], 4); + sqlite3VdbeAddOp2(v, OP_Integer, + (int)sqlite3LogEstToInt(pIdx->aiRowLogEst[0]), 4); sqlite3VdbeAddOp2(v, OP_ResultRow, 1, 4); } } @@ -98385,7 +99745,7 @@ SQLITE_PRIVATE void sqlite3Pragma( for(pIdx=pTab->pIndex, i=0; pIdx; pIdx=pIdx->pNext, i++){ sqlite3VdbeAddOp2(v, OP_Integer, i, 1); sqlite3VdbeAddOp4(v, OP_String8, 0, 2, 0, pIdx->zName, 0); - sqlite3VdbeAddOp2(v, OP_Integer, pIdx->onError!=OE_None, 3); + sqlite3VdbeAddOp2(v, OP_Integer, IsUniqueIndex(pIdx), 3); sqlite3VdbeAddOp2(v, OP_ResultRow, 1, 3); } } @@ -98635,9 +99995,8 @@ SQLITE_PRIVATE void sqlite3Pragma( */ static const int iLn = VDBE_OFFSET_LINENO(2); static const VdbeOpList endCode[] = { - { OP_AddImm, 1, 0, 0}, /* 0 */ - { OP_IfNeg, 1, 0, 0}, /* 1 */ - { OP_String8, 0, 3, 0}, /* 2 */ + { OP_IfNeg, 1, 0, 0}, /* 0 */ + { OP_String8, 0, 3, 0}, /* 1 */ { OP_ResultRow, 3, 1, 0}, }; @@ -98718,7 +100077,7 @@ SQLITE_PRIVATE void sqlite3Pragma( sqlite3VdbeAddOp4(v, OP_String8, 0, 3, 0, sqlite3MPrintf(db, "*** in database %s ***\n", db->aDb[i].zName), P4_DYNAMIC); - sqlite3VdbeAddOp2(v, OP_Move, 2, 4); + sqlite3VdbeAddOp3(v, OP_Move, 2, 4, 1); sqlite3VdbeAddOp3(v, OP_Concat, 4, 3, 2); sqlite3VdbeAddOp2(v, OP_ResultRow, 2, 1); sqlite3VdbeJumpHere(v, addr); @@ -98749,29 +100108,77 @@ SQLITE_PRIVATE void sqlite3Pragma( pParse->nMem = MAX(pParse->nMem, 8+j); sqlite3VdbeAddOp2(v, OP_Rewind, iDataCur, 0); VdbeCoverage(v); loopTop = sqlite3VdbeAddOp2(v, OP_AddImm, 7, 1); + /* Verify that all NOT NULL columns really are NOT NULL */ + for(j=0; jnCol; j++){ + char *zErr; + int jmp2, jmp3; + if( j==pTab->iPKey ) continue; + if( pTab->aCol[j].notNull==0 ) continue; + sqlite3ExprCodeGetColumnOfTable(v, pTab, iDataCur, j, 3); + sqlite3VdbeChangeP5(v, OPFLAG_TYPEOFARG); + jmp2 = sqlite3VdbeAddOp1(v, OP_NotNull, 3); VdbeCoverage(v); + sqlite3VdbeAddOp2(v, OP_AddImm, 1, -1); /* Decrement error limit */ + zErr = sqlite3MPrintf(db, "NULL value in %s.%s", pTab->zName, + pTab->aCol[j].zName); + sqlite3VdbeAddOp4(v, OP_String8, 0, 3, 0, zErr, P4_DYNAMIC); + sqlite3VdbeAddOp2(v, OP_ResultRow, 3, 1); + jmp3 = sqlite3VdbeAddOp1(v, OP_IfPos, 1); VdbeCoverage(v); + sqlite3VdbeAddOp0(v, OP_Halt); + sqlite3VdbeJumpHere(v, jmp2); + sqlite3VdbeJumpHere(v, jmp3); + } + /* Validate index entries for the current row */ for(j=0, pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext, j++){ - int jmp2, jmp3, jmp4; + int jmp2, jmp3, jmp4, jmp5; + int ckUniq = sqlite3VdbeMakeLabel(v); if( pPk==pIdx ) continue; r1 = sqlite3GenerateIndexKey(pParse, pIdx, iDataCur, 0, 0, &jmp3, pPrior, r1); pPrior = pIdx; sqlite3VdbeAddOp2(v, OP_AddImm, 8+j, 1); /* increment entry count */ - jmp2 = sqlite3VdbeAddOp4Int(v, OP_Found, iIdxCur+j, 0, r1, + /* Verify that an index entry exists for the current table row */ + jmp2 = sqlite3VdbeAddOp4Int(v, OP_Found, iIdxCur+j, ckUniq, r1, pIdx->nColumn); VdbeCoverage(v); sqlite3VdbeAddOp2(v, OP_AddImm, 1, -1); /* Decrement error limit */ sqlite3VdbeAddOp4(v, OP_String8, 0, 3, 0, "row ", P4_STATIC); sqlite3VdbeAddOp3(v, OP_Concat, 7, 3, 3); - sqlite3VdbeAddOp4(v, OP_String8, 0, 4, 0, " missing from index ", - P4_STATIC); + sqlite3VdbeAddOp4(v, OP_String8, 0, 4, 0, + " missing from index ", P4_STATIC); sqlite3VdbeAddOp3(v, OP_Concat, 4, 3, 3); - sqlite3VdbeAddOp4(v, OP_String8, 0, 4, 0, pIdx->zName, P4_TRANSIENT); + jmp5 = sqlite3VdbeAddOp4(v, OP_String8, 0, 4, 0, + pIdx->zName, P4_TRANSIENT); sqlite3VdbeAddOp3(v, OP_Concat, 4, 3, 3); sqlite3VdbeAddOp2(v, OP_ResultRow, 3, 1); jmp4 = sqlite3VdbeAddOp1(v, OP_IfPos, 1); VdbeCoverage(v); sqlite3VdbeAddOp0(v, OP_Halt); - sqlite3VdbeJumpHere(v, jmp4); sqlite3VdbeJumpHere(v, jmp2); - sqlite3VdbeResolveLabel(v, jmp3); + /* For UNIQUE indexes, verify that only one entry exists with the + ** current key. The entry is unique if (1) any column is NULL + ** or (2) the next entry has a different key */ + if( IsUniqueIndex(pIdx) ){ + int uniqOk = sqlite3VdbeMakeLabel(v); + int jmp6; + int kk; + for(kk=0; kknKeyCol; kk++){ + int iCol = pIdx->aiColumn[kk]; + assert( iCol>=0 && iColnCol ); + if( pTab->aCol[iCol].notNull ) continue; + sqlite3VdbeAddOp2(v, OP_IsNull, r1+kk, uniqOk); + VdbeCoverage(v); + } + jmp6 = sqlite3VdbeAddOp1(v, OP_Next, iIdxCur+j); VdbeCoverage(v); + sqlite3VdbeAddOp2(v, OP_Goto, 0, uniqOk); + sqlite3VdbeJumpHere(v, jmp6); + sqlite3VdbeAddOp4Int(v, OP_IdxGT, iIdxCur+j, uniqOk, r1, + pIdx->nKeyCol); VdbeCoverage(v); + sqlite3VdbeAddOp2(v, OP_AddImm, 1, -1); /* Decrement error limit */ + sqlite3VdbeAddOp4(v, OP_String8, 0, 3, 0, + "non-unique entry in index ", P4_STATIC); + sqlite3VdbeAddOp2(v, OP_Goto, 0, jmp5); + sqlite3VdbeResolveLabel(v, uniqOk); + } + sqlite3VdbeJumpHere(v, jmp4); + sqlite3ResolvePartIdxLabel(pParse, jmp3); } sqlite3VdbeAddOp2(v, OP_Next, iDataCur, loopTop); VdbeCoverage(v); sqlite3VdbeJumpHere(v, loopTop-1); @@ -98795,9 +100202,9 @@ SQLITE_PRIVATE void sqlite3Pragma( } } addr = sqlite3VdbeAddOpList(v, ArraySize(endCode), endCode, iLn); - sqlite3VdbeChangeP2(v, addr, -mxErr); - sqlite3VdbeJumpHere(v, addr+1); - sqlite3VdbeChangeP4(v, addr+2, "ok", P4_STATIC); + sqlite3VdbeChangeP3(v, addr, -mxErr); + sqlite3VdbeJumpHere(v, addr); + sqlite3VdbeChangeP4(v, addr+1, "ok", P4_STATIC); } break; #endif /* SQLITE_OMIT_INTEGRITY_CHECK */ @@ -99060,7 +100467,7 @@ SQLITE_PRIVATE void sqlite3Pragma( */ case PragTyp_SOFT_HEAP_LIMIT: { sqlite3_int64 N; - if( zRight && sqlite3Atoi64(zRight, &N, 1000000, SQLITE_UTF8)==SQLITE_OK ){ + if( zRight && sqlite3DecOrHexToI64(zRight, &N)==SQLITE_OK ){ sqlite3_soft_heap_limit64(N); } returnSingleInt(pParse, "soft_heap_limit", sqlite3_soft_heap_limit64(-1)); @@ -100056,6 +101463,34 @@ SQLITE_API int sqlite3_prepare16_v2( ** to handle SELECT statements in SQLite. */ +/* +** An instance of the following object is used to record information about +** how to process the DISTINCT keyword, to simplify passing that information +** into the selectInnerLoop() routine. +*/ +typedef struct DistinctCtx DistinctCtx; +struct DistinctCtx { + u8 isTnct; /* True if the DISTINCT keyword is present */ + u8 eTnctType; /* One of the WHERE_DISTINCT_* operators */ + int tabTnct; /* Ephemeral table used for DISTINCT processing */ + int addrTnct; /* Address of OP_OpenEphemeral opcode for tabTnct */ +}; + +/* +** An instance of the following object is used to record information about +** the ORDER BY (or GROUP BY) clause of query is being coded. +*/ +typedef struct SortCtx SortCtx; +struct SortCtx { + ExprList *pOrderBy; /* The ORDER BY (or GROUP BY clause) */ + int nOBSat; /* Number of ORDER BY terms satisfied by indices */ + int iECursor; /* Cursor number for the sorter */ + int regReturn; /* Register holding block-output return address */ + int labelBkOut; /* Start label for the block-output subroutine */ + int addrSortIndex; /* Address of the OP_SorterOpen or OP_OpenEphemeral */ + u8 sortFlags; /* Zero or more SORTFLAG_* bits */ +}; +#define SORTFLAG_UseSorter 0x01 /* Use SorterOpen instead of OpenEphemeral */ /* ** Delete all the content of a Select structure but do not deallocate @@ -100129,7 +101564,6 @@ SQLITE_PRIVATE Select *sqlite3SelectNew( assert( pOffset==0 || pLimit!=0 ); pNew->addrOpenEphm[0] = -1; pNew->addrOpenEphm[1] = -1; - pNew->addrOpenEphm[2] = -1; if( db->mallocFailed ) { clearSelect(db, pNew); if( pNew!=&standin ) sqlite3DbFree(db, pNew); @@ -100461,34 +101895,73 @@ static int sqliteProcessJoin(Parse *pParse, Select *p){ return 0; } +/* Forward reference */ +static KeyInfo *keyInfoFromExprList( + Parse *pParse, /* Parsing context */ + ExprList *pList, /* Form the KeyInfo object from this ExprList */ + int iStart, /* Begin with this column of pList */ + int nExtra /* Add this many extra columns to the end */ +); + /* -** Insert code into "v" that will push the record on the top of the -** stack into the sorter. +** Insert code into "v" that will push the record in register regData +** into the sorter. */ static void pushOntoSorter( Parse *pParse, /* Parser context */ - ExprList *pOrderBy, /* The ORDER BY clause */ + SortCtx *pSort, /* Information about the ORDER BY clause */ Select *pSelect, /* The whole SELECT statement */ int regData /* Register holding data to be sorted */ ){ Vdbe *v = pParse->pVdbe; - int nExpr = pOrderBy->nExpr; - int regBase = sqlite3GetTempRange(pParse, nExpr+2); - int regRecord = sqlite3GetTempReg(pParse); + int nExpr = pSort->pOrderBy->nExpr; + int regRecord = ++pParse->nMem; + int regBase = pParse->nMem+1; + int nOBSat = pSort->nOBSat; int op; + + pParse->nMem += nExpr+2; /* nExpr+2 registers allocated at regBase */ sqlite3ExprCacheClear(pParse); - sqlite3ExprCodeExprList(pParse, pOrderBy, regBase, 0); - sqlite3VdbeAddOp2(v, OP_Sequence, pOrderBy->iECursor, regBase+nExpr); + sqlite3ExprCodeExprList(pParse, pSort->pOrderBy, regBase, 0); + sqlite3VdbeAddOp2(v, OP_Sequence, pSort->iECursor, regBase+nExpr); sqlite3ExprCodeMove(pParse, regData, regBase+nExpr+1, 1); - sqlite3VdbeAddOp3(v, OP_MakeRecord, regBase, nExpr + 2, regRecord); - if( pSelect->selFlags & SF_UseSorter ){ + sqlite3VdbeAddOp3(v, OP_MakeRecord, regBase+nOBSat, nExpr+2-nOBSat,regRecord); + if( nOBSat>0 ){ + int regPrevKey; /* The first nOBSat columns of the previous row */ + int addrFirst; /* Address of the OP_IfNot opcode */ + int addrJmp; /* Address of the OP_Jump opcode */ + VdbeOp *pOp; /* Opcode that opens the sorter */ + int nKey; /* Number of sorting key columns, including OP_Sequence */ + KeyInfo *pKI; /* Original KeyInfo on the sorter table */ + + regPrevKey = pParse->nMem+1; + pParse->nMem += pSort->nOBSat; + nKey = nExpr - pSort->nOBSat + 1; + addrFirst = sqlite3VdbeAddOp1(v, OP_IfNot, regBase+nExpr); VdbeCoverage(v); + sqlite3VdbeAddOp3(v, OP_Compare, regPrevKey, regBase, pSort->nOBSat); + pOp = sqlite3VdbeGetOp(v, pSort->addrSortIndex); + if( pParse->db->mallocFailed ) return; + pOp->p2 = nKey + 1; + pKI = pOp->p4.pKeyInfo; + memset(pKI->aSortOrder, 0, pKI->nField); /* Makes OP_Jump below testable */ + sqlite3VdbeChangeP4(v, -1, (char*)pKI, P4_KEYINFO); + pOp->p4.pKeyInfo = keyInfoFromExprList(pParse, pSort->pOrderBy, nOBSat, 1); + addrJmp = sqlite3VdbeCurrentAddr(v); + sqlite3VdbeAddOp3(v, OP_Jump, addrJmp+1, 0, addrJmp+1); VdbeCoverage(v); + pSort->labelBkOut = sqlite3VdbeMakeLabel(v); + pSort->regReturn = ++pParse->nMem; + sqlite3VdbeAddOp2(v, OP_Gosub, pSort->regReturn, pSort->labelBkOut); + sqlite3VdbeAddOp1(v, OP_ResetSorter, pSort->iECursor); + sqlite3VdbeJumpHere(v, addrFirst); + sqlite3VdbeAddOp3(v, OP_Move, regBase, regPrevKey, pSort->nOBSat); + sqlite3VdbeJumpHere(v, addrJmp); + } + if( pSort->sortFlags & SORTFLAG_UseSorter ){ op = OP_SorterInsert; }else{ op = OP_IdxInsert; } - sqlite3VdbeAddOp2(v, op, pOrderBy->iECursor, regRecord); - sqlite3ReleaseTempReg(pParse, regRecord); - sqlite3ReleaseTempRange(pParse, regBase, nExpr+2); + sqlite3VdbeAddOp2(v, op, pSort->iECursor, regRecord); if( pSelect->iLimit ){ int addr1, addr2; int iLimit; @@ -100501,8 +101974,8 @@ static void pushOntoSorter( sqlite3VdbeAddOp2(v, OP_AddImm, iLimit, -1); addr2 = sqlite3VdbeAddOp0(v, OP_Goto); sqlite3VdbeJumpHere(v, addr1); - sqlite3VdbeAddOp1(v, OP_Last, pOrderBy->iECursor); - sqlite3VdbeAddOp1(v, OP_Delete, pOrderBy->iECursor); + sqlite3VdbeAddOp1(v, OP_Last, pSort->iECursor); + sqlite3VdbeAddOp1(v, OP_Delete, pSort->iECursor); sqlite3VdbeJumpHere(v, addr2); } } @@ -100515,10 +101988,9 @@ static void codeOffset( int iOffset, /* Register holding the offset counter */ int iContinue /* Jump here to skip the current record */ ){ - if( iOffset>0 && iContinue!=0 ){ + if( iOffset>0 ){ int addr; - sqlite3VdbeAddOp2(v, OP_AddImm, iOffset, -1); - addr = sqlite3VdbeAddOp1(v, OP_IfNeg, iOffset); VdbeCoverage(v); + addr = sqlite3VdbeAddOp3(v, OP_IfNeg, iOffset, 0, -1); VdbeCoverage(v); sqlite3VdbeAddOp2(v, OP_Goto, 0, iContinue); VdbeComment((v, "skip OFFSET records")); sqlite3VdbeJumpHere(v, addr); @@ -100576,19 +102048,6 @@ static int checkForMultiColumnSelectError( } #endif -/* -** An instance of the following object is used to record information about -** how to process the DISTINCT keyword, to simplify passing that information -** into the selectInnerLoop() routine. -*/ -typedef struct DistinctCtx DistinctCtx; -struct DistinctCtx { - u8 isTnct; /* True if the DISTINCT keyword is present */ - u8 eTnctType; /* One of the WHERE_DISTINCT_* operators */ - int tabTnct; /* Ephemeral table used for DISTINCT processing */ - int addrTnct; /* Address of OP_OpenEphemeral opcode for tabTnct */ -}; - /* ** This routine generates the code for the inside of the inner loop ** of a SELECT. @@ -100603,7 +102062,7 @@ static void selectInnerLoop( Select *p, /* The complete select statement being coded */ ExprList *pEList, /* List of values being extracted */ int srcTab, /* Pull data from this table */ - ExprList *pOrderBy, /* If not NULL, sort results using this key */ + SortCtx *pSort, /* If not NULL, info on how to process ORDER BY */ DistinctCtx *pDistinct, /* If not NULL, info on how to process DISTINCT */ SelectDest *pDest, /* How to dispose of the results */ int iContinue, /* Jump here to continue with next row */ @@ -100620,7 +102079,9 @@ static void selectInnerLoop( assert( v ); assert( pEList!=0 ); hasDistinct = pDistinct ? pDistinct->eTnctType : WHERE_DISTINCT_NOOP; - if( pOrderBy==0 && !hasDistinct ){ + if( pSort && pSort->pOrderBy==0 ) pSort = 0; + if( pSort==0 && !hasDistinct ){ + assert( iContinue!=0 ); codeOffset(v, p->iOffset, iContinue); } @@ -100694,7 +102155,7 @@ static void selectInnerLoop( sqlite3VdbeChangeP4(v, -1, (const char *)pColl, P4_COLLSEQ); sqlite3VdbeChangeP5(v, SQLITE_NULLEQ); } - assert( sqlite3VdbeCurrentAddr(v)==iJump ); + assert( sqlite3VdbeCurrentAddr(v)==iJump || pParse->db->mallocFailed ); sqlite3VdbeAddOp3(v, OP_Copy, regResult, regPrev, nResultCol-1); break; } @@ -100710,7 +102171,7 @@ static void selectInnerLoop( break; } } - if( pOrderBy==0 ){ + if( pSort==0 ){ codeOffset(v, p->iOffset, iContinue); } } @@ -100741,7 +102202,8 @@ static void selectInnerLoop( /* Store the result as data using a unique key. */ - case SRT_DistTable: + case SRT_Fifo: + case SRT_DistFifo: case SRT_Table: case SRT_EphemTab: { int r1 = sqlite3GetTempReg(pParse); @@ -100749,8 +102211,8 @@ static void selectInnerLoop( testcase( eDest==SRT_EphemTab ); sqlite3VdbeAddOp3(v, OP_MakeRecord, regResult, nResultCol, r1); #ifndef SQLITE_OMIT_CTE - if( eDest==SRT_DistTable ){ - /* If the destination is DistTable, then cursor (iParm+1) is open + if( eDest==SRT_DistFifo ){ + /* If the destination is DistFifo, then cursor (iParm+1) is open ** on an ephemeral index. If the current row is already present ** in the index, do not write it to the output. If not, add the ** current row to the index and proceed with writing it to the @@ -100758,11 +102220,11 @@ static void selectInnerLoop( int addr = sqlite3VdbeCurrentAddr(v) + 4; sqlite3VdbeAddOp4Int(v, OP_Found, iParm+1, addr, r1, 0); VdbeCoverage(v); sqlite3VdbeAddOp2(v, OP_IdxInsert, iParm+1, r1); - assert( pOrderBy==0 ); + assert( pSort==0 ); } #endif - if( pOrderBy ){ - pushOntoSorter(pParse, pOrderBy, p, r1); + if( pSort ){ + pushOntoSorter(pParse, pSort, p, r1); }else{ int r2 = sqlite3GetTempReg(pParse); sqlite3VdbeAddOp2(v, OP_NewRowid, iParm, r2); @@ -100783,12 +102245,12 @@ static void selectInnerLoop( assert( nResultCol==1 ); pDest->affSdst = sqlite3CompareAffinity(pEList->a[0].pExpr, pDest->affSdst); - if( pOrderBy ){ + if( pSort ){ /* At first glance you would think we could optimize out the ** ORDER BY in this case since the order of entries in the set ** does not matter. But there might be a LIMIT clause, in which ** case the order does matter */ - pushOntoSorter(pParse, pOrderBy, p, regResult); + pushOntoSorter(pParse, pSort, p, regResult); }else{ int r1 = sqlite3GetTempReg(pParse); sqlite3VdbeAddOp4(v, OP_MakeRecord, regResult,1,r1, &pDest->affSdst, 1); @@ -100813,8 +102275,8 @@ static void selectInnerLoop( */ case SRT_Mem: { assert( nResultCol==1 ); - if( pOrderBy ){ - pushOntoSorter(pParse, pOrderBy, p, regResult); + if( pSort ){ + pushOntoSorter(pParse, pSort, p, regResult); }else{ sqlite3ExprCodeMove(pParse, regResult, iParm, 1); /* The LIMIT clause will jump out of the loop for us */ @@ -100827,10 +102289,10 @@ static void selectInnerLoop( case SRT_Output: { /* Return the results */ testcase( eDest==SRT_Coroutine ); testcase( eDest==SRT_Output ); - if( pOrderBy ){ + if( pSort ){ int r1 = sqlite3GetTempReg(pParse); sqlite3VdbeAddOp3(v, OP_MakeRecord, regResult, nResultCol, r1); - pushOntoSorter(pParse, pOrderBy, p, r1); + pushOntoSorter(pParse, pSort, p, r1); sqlite3ReleaseTempReg(pParse, r1); }else if( eDest==SRT_Coroutine ){ sqlite3VdbeAddOp1(v, OP_Yield, pDest->iSDParm); @@ -100907,7 +102369,7 @@ static void selectInnerLoop( ** there is a sorter, in which case the sorter has already limited ** the output for us. */ - if( pOrderBy==0 && p->iLimit ){ + if( pSort==0 && p->iLimit ){ sqlite3VdbeAddOp3(v, OP_IfZero, p->iLimit, iBreak, -1); VdbeCoverage(v); } } @@ -100978,7 +102440,12 @@ SQLITE_PRIVATE int sqlite3KeyInfoIsWriteable(KeyInfo *p){ return p->nRef==1; } ** function is responsible for seeing that this structure is eventually ** freed. */ -static KeyInfo *keyInfoFromExprList(Parse *pParse, ExprList *pList, int nExtra){ +static KeyInfo *keyInfoFromExprList( + Parse *pParse, /* Parsing context */ + ExprList *pList, /* Form the KeyInfo object from this ExprList */ + int iStart, /* Begin with this column of pList */ + int nExtra /* Add this many extra columns to the end */ +){ int nExpr; KeyInfo *pInfo; struct ExprList_item *pItem; @@ -100986,15 +102453,15 @@ static KeyInfo *keyInfoFromExprList(Parse *pParse, ExprList *pList, int nExtra){ int i; nExpr = pList->nExpr; - pInfo = sqlite3KeyInfoAlloc(db, nExpr+nExtra, 1); + pInfo = sqlite3KeyInfoAlloc(db, nExpr+nExtra-iStart, 1); if( pInfo ){ assert( sqlite3KeyInfoIsWriteable(pInfo) ); - for(i=0, pItem=pList->a; ia+iStart; ipExpr); if( !pColl ) pColl = db->pDfltColl; - pInfo->aColl[i] = pColl; - pInfo->aSortOrder[i] = pItem->sortOrder; + pInfo->aColl[i-iStart] = pColl; + pInfo->aSortOrder[i-iStart] = pItem->sortOrder; } } return pInfo; @@ -101096,24 +102563,31 @@ static void explainComposite( static void generateSortTail( Parse *pParse, /* Parsing context */ Select *p, /* The SELECT statement */ - Vdbe *v, /* Generate code into this VDBE */ + SortCtx *pSort, /* Information on the ORDER BY clause */ int nColumn, /* Number of columns of data */ SelectDest *pDest /* Write the sorted results here */ ){ + Vdbe *v = pParse->pVdbe; /* The prepared statement */ int addrBreak = sqlite3VdbeMakeLabel(v); /* Jump here to exit loop */ int addrContinue = sqlite3VdbeMakeLabel(v); /* Jump here for next cycle */ int addr; + int addrOnce = 0; int iTab; int pseudoTab = 0; - ExprList *pOrderBy = p->pOrderBy; - + ExprList *pOrderBy = pSort->pOrderBy; int eDest = pDest->eDest; int iParm = pDest->iSDParm; - int regRow; int regRowid; + int nKey; - iTab = pOrderBy->iECursor; + if( pSort->labelBkOut ){ + sqlite3VdbeAddOp2(v, OP_Gosub, pSort->regReturn, pSort->labelBkOut); + sqlite3VdbeAddOp2(v, OP_Goto, 0, addrBreak); + sqlite3VdbeResolveLabel(v, pSort->labelBkOut); + addrOnce = sqlite3CodeOnce(pParse); VdbeCoverage(v); + } + iTab = pSort->iECursor; regRow = sqlite3GetTempReg(pParse); if( eDest==SRT_Output || eDest==SRT_Coroutine ){ pseudoTab = pParse->nTab++; @@ -101122,20 +102596,23 @@ static void generateSortTail( }else{ regRowid = sqlite3GetTempReg(pParse); } - if( p->selFlags & SF_UseSorter ){ + nKey = pOrderBy->nExpr - pSort->nOBSat; + if( pSort->sortFlags & SORTFLAG_UseSorter ){ int regSortOut = ++pParse->nMem; int ptab2 = pParse->nTab++; - sqlite3VdbeAddOp3(v, OP_OpenPseudo, ptab2, regSortOut, pOrderBy->nExpr+2); + sqlite3VdbeAddOp3(v, OP_OpenPseudo, ptab2, regSortOut, nKey+2); + if( addrOnce ) sqlite3VdbeJumpHere(v, addrOnce); addr = 1 + sqlite3VdbeAddOp2(v, OP_SorterSort, iTab, addrBreak); VdbeCoverage(v); codeOffset(v, p->iOffset, addrContinue); sqlite3VdbeAddOp2(v, OP_SorterData, iTab, regSortOut); - sqlite3VdbeAddOp3(v, OP_Column, ptab2, pOrderBy->nExpr+1, regRow); + sqlite3VdbeAddOp3(v, OP_Column, ptab2, nKey+1, regRow); sqlite3VdbeChangeP5(v, OPFLAG_CLEARCACHE); }else{ + if( addrOnce ) sqlite3VdbeJumpHere(v, addrOnce); addr = 1 + sqlite3VdbeAddOp2(v, OP_Sort, iTab, addrBreak); VdbeCoverage(v); codeOffset(v, p->iOffset, addrContinue); - sqlite3VdbeAddOp3(v, OP_Column, iTab, pOrderBy->nExpr+1, regRow); + sqlite3VdbeAddOp3(v, OP_Column, iTab, nKey+1, regRow); } switch( eDest ){ case SRT_Table: @@ -101190,15 +102667,13 @@ static void generateSortTail( /* The bottom of the loop */ sqlite3VdbeResolveLabel(v, addrContinue); - if( p->selFlags & SF_UseSorter ){ + if( pSort->sortFlags & SORTFLAG_UseSorter ){ sqlite3VdbeAddOp2(v, OP_SorterNext, iTab, addr); VdbeCoverage(v); }else{ sqlite3VdbeAddOp2(v, OP_Next, iTab, addr); VdbeCoverage(v); } + if( pSort->regReturn ) sqlite3VdbeAddOp1(v, OP_Return, pSort->regReturn); sqlite3VdbeResolveLabel(v, addrBreak); - if( eDest==SRT_Output || eDest==SRT_Coroutine ){ - sqlite3VdbeAddOp2(v, OP_Close, pseudoTab, 0); - } } /* @@ -101658,7 +103133,7 @@ SQLITE_PRIVATE Table *sqlite3ResultSetOfSelect(Parse *pParse, Select *pSelect){ assert( db->lookaside.bEnabled==0 ); pTab->nRef = 1; pTab->zName = 0; - pTab->nRowEst = 1048576; + pTab->nRowLogEst = 200; assert( 200==sqlite3LogEst(1048576) ); selectColumnsFromExprList(pParse, pSelect->pEList, &pTab->nCol, &pTab->aCol); selectAddColumnTypeAndCollation(pParse, pTab, pSelect); pTab->iPKey = -1; @@ -101876,7 +103351,7 @@ static void generateWithRecursiveQuery( int regCurrent; /* Register holding Current table */ int iQueue; /* The Queue table */ int iDistinct = 0; /* To ensure unique results if UNION */ - int eDest = SRT_Table; /* How to write to Queue */ + int eDest = SRT_Fifo; /* How to write to Queue */ SelectDest destQueue; /* SelectDest targetting the Queue table */ int i; /* Loop counter */ int rc; /* Result code */ @@ -101908,13 +103383,13 @@ static void generateWithRecursiveQuery( /* Allocate cursors numbers for Queue and Distinct. The cursor number for ** the Distinct table must be exactly one greater than Queue in order - ** for the SRT_DistTable and SRT_DistQueue destinations to work. */ + ** for the SRT_DistFifo and SRT_DistQueue destinations to work. */ iQueue = pParse->nTab++; if( p->op==TK_UNION ){ - eDest = pOrderBy ? SRT_DistQueue : SRT_DistTable; + eDest = pOrderBy ? SRT_DistQueue : SRT_DistFifo; iDistinct = pParse->nTab++; }else{ - eDest = pOrderBy ? SRT_Queue : SRT_Table; + eDest = pOrderBy ? SRT_Queue : SRT_Fifo; } sqlite3SelectDestInit(&destQueue, eDest, iQueue); @@ -101980,6 +103455,7 @@ static void generateWithRecursiveQuery( sqlite3VdbeResolveLabel(v, addrBreak); end_of_recursive_query: + sqlite3ExprListDelete(pParse->db, p->pOrderBy); p->pOrderBy = pOrderBy; p->pLimit = pLimit; p->pOffset = pOffset; @@ -103796,7 +105272,7 @@ static int withExpand( pTab->nRef = 1; pTab->zName = sqlite3DbStrDup(db, pCte->zName); pTab->iPKey = -1; - pTab->nRowEst = 1048576; + pTab->nRowLogEst = 200; assert( 200==sqlite3LogEst(1048576) ); pTab->tabFlags |= TF_Ephemeral; pFrom->pSelect = sqlite3SelectDup(db, pCte->pSelect, 0); if( db->mallocFailed ) return SQLITE_NOMEM; @@ -103972,7 +105448,7 @@ static int selectExpander(Walker *pWalker, Select *p){ while( pSel->pPrior ){ pSel = pSel->pPrior; } selectColumnsFromExprList(pParse, pSel->pEList, &pTab->nCol, &pTab->aCol); pTab->iPKey = -1; - pTab->nRowEst = 1048576; + pTab->nRowLogEst = 200; assert( 200==sqlite3LogEst(1048576) ); pTab->tabFlags |= TF_Ephemeral; #endif }else{ @@ -104351,7 +105827,7 @@ static void resetAccumulator(Parse *pParse, AggInfo *pAggInfo){ "argument"); pFunc->iDistinct = -1; }else{ - KeyInfo *pKeyInfo = keyInfoFromExprList(pParse, pE->x.pList, 0); + KeyInfo *pKeyInfo = keyInfoFromExprList(pParse, pE->x.pList, 0, 0); sqlite3VdbeAddOp4(v, OP_OpenEphemeral, pFunc->iDistinct, 0, 0, (char*)pKeyInfo, P4_KEYINFO); } @@ -104467,10 +105943,11 @@ static void explainSimpleCount( Index *pIdx /* Index used to optimize scan, or NULL */ ){ if( pParse->explain==2 ){ + int bCover = (pIdx!=0 && (HasRowid(pTab) || !IsPrimaryKeyIndex(pIdx))); char *zEqp = sqlite3MPrintf(pParse->db, "SCAN TABLE %s%s%s", - pTab->zName, - pIdx ? " USING COVERING INDEX " : "", - pIdx ? pIdx->zName : "" + pTab->zName, + bCover ? " USING COVERING INDEX " : "", + bCover ? pIdx->zName : "" ); sqlite3VdbeAddOp4( pParse->pVdbe, OP_Explain, pParse->iSelectId, 0, 0, zEqp, P4_DYNAMIC @@ -104506,12 +105983,11 @@ SQLITE_PRIVATE int sqlite3Select( ExprList *pEList; /* List of columns to extract. */ SrcList *pTabList; /* List of tables to select from */ Expr *pWhere; /* The WHERE clause. May be NULL */ - ExprList *pOrderBy; /* The ORDER BY clause. May be NULL */ ExprList *pGroupBy; /* The GROUP BY clause. May be NULL */ Expr *pHaving; /* The HAVING clause. May be NULL */ int rc = 1; /* Value to return from this function */ - int addrSortIndex; /* Address of an OP_OpenEphemeral instruction */ DistinctCtx sDistinct; /* Info on how to code the DISTINCT keyword */ + SortCtx sSort; /* Info on how to code the ORDER BY clause */ AggInfo sAggInfo; /* Information used by aggregate queries */ int iEnd; /* Address of the end of the query */ sqlite3 *db; /* The database connection */ @@ -104528,9 +106004,15 @@ SQLITE_PRIVATE int sqlite3Select( if( sqlite3AuthCheck(pParse, SQLITE_SELECT, 0, 0, 0) ) return 1; memset(&sAggInfo, 0, sizeof(sAggInfo)); + assert( p->pOrderBy==0 || pDest->eDest!=SRT_DistFifo ); + assert( p->pOrderBy==0 || pDest->eDest!=SRT_Fifo ); + assert( p->pOrderBy==0 || pDest->eDest!=SRT_DistQueue ); + assert( p->pOrderBy==0 || pDest->eDest!=SRT_Queue ); if( IgnorableOrderby(pDest) ){ assert(pDest->eDest==SRT_Exists || pDest->eDest==SRT_Union || - pDest->eDest==SRT_Except || pDest->eDest==SRT_Discard); + pDest->eDest==SRT_Except || pDest->eDest==SRT_Discard || + pDest->eDest==SRT_Queue || pDest->eDest==SRT_DistFifo || + pDest->eDest==SRT_DistQueue || pDest->eDest==SRT_Fifo); /* If ORDER BY makes no difference in the output then neither does ** DISTINCT so it can be removed too. */ sqlite3ExprListDelete(db, p->pOrderBy); @@ -104538,7 +106020,8 @@ SQLITE_PRIVATE int sqlite3Select( p->selFlags &= ~SF_Distinct; } sqlite3SelectPrep(pParse, p, 0); - pOrderBy = p->pOrderBy; + memset(&sSort, 0, sizeof(sSort)); + sSort.pOrderBy = p->pOrderBy; pTabList = p->pSrc; pEList = p->pEList; if( pParse->nErr || db->mallocFailed ){ @@ -104616,7 +106099,7 @@ SQLITE_PRIVATE int sqlite3Select( sqlite3SelectDestInit(&dest, SRT_Coroutine, pItem->regReturn); explainSetInteger(pItem->iSelectId, (u8)pParse->iNextSelectId); sqlite3Select(pParse, pSub, &dest); - pItem->pTab->nRowEst = (unsigned)pSub->nSelectRow; + pItem->pTab->nRowLogEst = sqlite3LogEst(pSub->nSelectRow); pItem->viaCoroutine = 1; pItem->regResult = dest.iSdst; sqlite3VdbeAddOp1(v, OP_EndCoroutine, pItem->regReturn); @@ -104647,7 +106130,7 @@ SQLITE_PRIVATE int sqlite3Select( sqlite3SelectDestInit(&dest, SRT_EphemTab, pItem->iCursor); explainSetInteger(pItem->iSelectId, (u8)pParse->iNextSelectId); sqlite3Select(pParse, pSub, &dest); - pItem->pTab->nRowEst = (unsigned)pSub->nSelectRow; + pItem->pTab->nRowLogEst = sqlite3LogEst(pSub->nSelectRow); if( onceAddr ) sqlite3VdbeJumpHere(v, onceAddr); retAddr = sqlite3VdbeAddOp1(v, OP_Return, pItem->regReturn); VdbeComment((v, "end %s", pItem->pTab->zName)); @@ -104660,7 +106143,7 @@ SQLITE_PRIVATE int sqlite3Select( pParse->nHeight -= sqlite3SelectExprHeight(p); pTabList = p->pSrc; if( !IgnorableOrderby(pDest) ){ - pOrderBy = p->pOrderBy; + sSort.pOrderBy = p->pOrderBy; } } pEList = p->pEList; @@ -104680,18 +106163,6 @@ SQLITE_PRIVATE int sqlite3Select( } #endif - /* If there is both a GROUP BY and an ORDER BY clause and they are - ** identical, then disable the ORDER BY clause since the GROUP BY - ** will cause elements to come out in the correct order. This is - ** an optimization - the correct answer should result regardless. - ** Use the SQLITE_GroupByOrder flag with SQLITE_TESTCTRL_OPTIMIZER - ** to disable this optimization for testing purposes. - */ - if( sqlite3ExprListCompare(p->pGroupBy, pOrderBy, -1)==0 - && OptimizationEnabled(db, SQLITE_GroupByOrder) ){ - pOrderBy = 0; - } - /* If the query is DISTINCT with an ORDER BY but is not an aggregate, and ** if the select-list is the same as the ORDER BY list, then this query ** can be rewritten as a GROUP BY. In other words, this: @@ -104708,12 +106179,12 @@ SQLITE_PRIVATE int sqlite3Select( ** BY and DISTINCT, and an index or separate temp-table for the other. */ if( (p->selFlags & (SF_Distinct|SF_Aggregate))==SF_Distinct - && sqlite3ExprListCompare(pOrderBy, p->pEList, -1)==0 + && sqlite3ExprListCompare(sSort.pOrderBy, p->pEList, -1)==0 ){ p->selFlags &= ~SF_Distinct; p->pGroupBy = sqlite3ExprListDup(db, p->pEList, 0); pGroupBy = p->pGroupBy; - pOrderBy = 0; + sSort.pOrderBy = 0; /* Notice that even thought SF_Distinct has been cleared from p->selFlags, ** the sDistinct.isTnct is still set. Hence, isTnct represents the ** original setting of the SF_Distinct flag, not the current setting */ @@ -104727,16 +106198,16 @@ SQLITE_PRIVATE int sqlite3Select( ** we figure out that the sorting index is not needed. The addrSortIndex ** variable is used to facilitate that change. */ - if( pOrderBy ){ + if( sSort.pOrderBy ){ KeyInfo *pKeyInfo; - pKeyInfo = keyInfoFromExprList(pParse, pOrderBy, 0); - pOrderBy->iECursor = pParse->nTab++; - p->addrOpenEphm[2] = addrSortIndex = + pKeyInfo = keyInfoFromExprList(pParse, sSort.pOrderBy, 0, 0); + sSort.iECursor = pParse->nTab++; + sSort.addrSortIndex = sqlite3VdbeAddOp4(v, OP_OpenEphemeral, - pOrderBy->iECursor, pOrderBy->nExpr+2, 0, + sSort.iECursor, sSort.pOrderBy->nExpr+2, 0, (char*)pKeyInfo, P4_KEYINFO); }else{ - addrSortIndex = -1; + sSort.addrSortIndex = -1; } /* If the output is destined for a temporary table, open that table. @@ -104750,9 +106221,9 @@ SQLITE_PRIVATE int sqlite3Select( iEnd = sqlite3VdbeMakeLabel(v); p->nSelectRow = LARGEST_INT64; computeLimitRegisters(pParse, p, iEnd); - if( p->iLimit==0 && addrSortIndex>=0 ){ - sqlite3VdbeGetOp(v, addrSortIndex)->opcode = OP_SorterOpen; - p->selFlags |= SF_UseSorter; + if( p->iLimit==0 && sSort.addrSortIndex>=0 ){ + sqlite3VdbeGetOp(v, sSort.addrSortIndex)->opcode = OP_SorterOpen; + sSort.sortFlags |= SORTFLAG_UseSorter; } /* Open a virtual index to use for the distinct set. @@ -104761,7 +106232,7 @@ SQLITE_PRIVATE int sqlite3Select( sDistinct.tabTnct = pParse->nTab++; sDistinct.addrTnct = sqlite3VdbeAddOp4(v, OP_OpenEphemeral, sDistinct.tabTnct, 0, 0, - (char*)keyInfoFromExprList(pParse, p->pEList, 0), + (char*)keyInfoFromExprList(pParse, p->pEList,0,0), P4_KEYINFO); sqlite3VdbeChangeP5(v, BTREE_UNORDERED); sDistinct.eTnctType = WHERE_DISTINCT_UNORDERED; @@ -104774,8 +106245,8 @@ SQLITE_PRIVATE int sqlite3Select( u16 wctrlFlags = (sDistinct.isTnct ? WHERE_WANT_DISTINCT : 0); /* Begin the database scan. */ - pWInfo = sqlite3WhereBegin(pParse, pTabList, pWhere, pOrderBy, p->pEList, - wctrlFlags, 0); + pWInfo = sqlite3WhereBegin(pParse, pTabList, pWhere, sSort.pOrderBy, + p->pEList, wctrlFlags, 0); if( pWInfo==0 ) goto select_end; if( sqlite3WhereOutputRowCount(pWInfo) < p->nSelectRow ){ p->nSelectRow = sqlite3WhereOutputRowCount(pWInfo); @@ -104783,19 +106254,23 @@ SQLITE_PRIVATE int sqlite3Select( if( sDistinct.isTnct && sqlite3WhereIsDistinct(pWInfo) ){ sDistinct.eTnctType = sqlite3WhereIsDistinct(pWInfo); } - if( pOrderBy && sqlite3WhereIsOrdered(pWInfo) ) pOrderBy = 0; + if( sSort.pOrderBy ){ + sSort.nOBSat = sqlite3WhereIsOrdered(pWInfo); + if( sSort.nOBSat==sSort.pOrderBy->nExpr ){ + sSort.pOrderBy = 0; + } + } /* If sorting index that was created by a prior OP_OpenEphemeral ** instruction ended up not being needed, then change the OP_OpenEphemeral ** into an OP_Noop. */ - if( addrSortIndex>=0 && pOrderBy==0 ){ - sqlite3VdbeChangeToNoop(v, addrSortIndex); - p->addrOpenEphm[2] = -1; + if( sSort.addrSortIndex>=0 && sSort.pOrderBy==0 ){ + sqlite3VdbeChangeToNoop(v, sSort.addrSortIndex); } /* Use the standard inner loop. */ - selectInnerLoop(pParse, p, pEList, -1, pOrderBy, &sDistinct, pDest, + selectInnerLoop(pParse, p, pEList, -1, &sSort, &sDistinct, pDest, sqlite3WhereContinueLabel(pWInfo), sqlite3WhereBreakLabel(pWInfo)); @@ -104816,6 +106291,7 @@ SQLITE_PRIVATE int sqlite3Select( int addrEnd; /* End of processing for this SELECT */ int sortPTab = 0; /* Pseudotable used to decode sorting results */ int sortOut = 0; /* Output register from the sorter */ + int orderByGrp = 0; /* True if the GROUP BY and ORDER BY are the same */ /* Remove any and all aliases between the result set and the ** GROUP BY clause. @@ -104835,6 +106311,18 @@ SQLITE_PRIVATE int sqlite3Select( p->nSelectRow = 1; } + + /* If there is both a GROUP BY and an ORDER BY clause and they are + ** identical, then it may be possible to disable the ORDER BY clause + ** on the grounds that the GROUP BY will cause elements to come out + ** in the correct order. It also may not - the GROUP BY may use a + ** database index that causes rows to be grouped together as required + ** but not actually sorted. Either way, record the fact that the + ** ORDER BY and GROUP BY clauses are the same by setting the orderByGrp + ** variable. */ + if( sqlite3ExprListCompare(pGroupBy, sSort.pOrderBy, -1)==0 ){ + orderByGrp = 1; + } /* Create a label to jump to when we want to abort the query */ addrEnd = sqlite3VdbeMakeLabel(v); @@ -104851,7 +106339,7 @@ SQLITE_PRIVATE int sqlite3Select( sAggInfo.nSortingColumn = pGroupBy ? pGroupBy->nExpr+1 : 0; sAggInfo.pGroupBy = pGroupBy; sqlite3ExprAnalyzeAggList(&sNC, pEList); - sqlite3ExprAnalyzeAggList(&sNC, pOrderBy); + sqlite3ExprAnalyzeAggList(&sNC, sSort.pOrderBy); if( pHaving ){ sqlite3ExprAnalyzeAggregates(&sNC, pHaving); } @@ -104885,7 +106373,7 @@ SQLITE_PRIVATE int sqlite3Select( ** will be converted into a Noop. */ sAggInfo.sortingIdx = pParse->nTab++; - pKeyInfo = keyInfoFromExprList(pParse, pGroupBy, 0); + pKeyInfo = keyInfoFromExprList(pParse, pGroupBy, 0, 0); addrSortingIdx = sqlite3VdbeAddOp4(v, OP_SorterOpen, sAggInfo.sortingIdx, sAggInfo.nSortingColumn, 0, (char*)pKeyInfo, P4_KEYINFO); @@ -104914,10 +106402,11 @@ SQLITE_PRIVATE int sqlite3Select( ** in the right order to begin with. */ sqlite3VdbeAddOp2(v, OP_Gosub, regReset, addrReset); - pWInfo = sqlite3WhereBegin(pParse, pTabList, pWhere, pGroupBy, 0, - WHERE_GROUPBY, 0); + pWInfo = sqlite3WhereBegin(pParse, pTabList, pWhere, pGroupBy, 0, + WHERE_GROUPBY | (orderByGrp ? WHERE_SORTBYGROUP : 0), 0 + ); if( pWInfo==0 ) goto select_end; - if( sqlite3WhereIsOrdered(pWInfo) ){ + if( sqlite3WhereIsOrdered(pWInfo)==pGroupBy->nExpr ){ /* The optimizer is able to deliver rows in group by order so ** we do not have to sort. The OP_OpenEphemeral table will be ** cancelled later because we still need to use the pKeyInfo @@ -104980,6 +106469,21 @@ SQLITE_PRIVATE int sqlite3Select( VdbeComment((v, "GROUP BY sort")); VdbeCoverage(v); sAggInfo.useSortingIdx = 1; sqlite3ExprCacheClear(pParse); + + } + + /* If the index or temporary table used by the GROUP BY sort + ** will naturally deliver rows in the order required by the ORDER BY + ** clause, cancel the ephemeral table open coded earlier. + ** + ** This is an optimization - the correct answer should result regardless. + ** Use the SQLITE_GroupByOrder flag with SQLITE_TESTCTRL_OPTIMIZER to + ** disable this optimization for testing purposes. */ + if( orderByGrp && OptimizationEnabled(db, SQLITE_GroupByOrder) + && (groupBySort || sqlite3WhereIsSorted(pWInfo)) + ){ + sSort.pOrderBy = 0; + sqlite3VdbeChangeToNoop(v, sSort.addrSortIndex); } /* Evaluate the current GROUP BY terms and store in b0, b1, b2... @@ -105068,7 +106572,7 @@ SQLITE_PRIVATE int sqlite3Select( sqlite3VdbeAddOp1(v, OP_Return, regOutputRow); finalizeAggFunctions(pParse, &sAggInfo); sqlite3ExprIfFalse(pParse, pHaving, addrOutputRow+1, SQLITE_JUMPIFNULL); - selectInnerLoop(pParse, p, p->pEList, -1, pOrderBy, + selectInnerLoop(pParse, p, p->pEList, -1, &sSort, &sDistinct, pDest, addrOutputRow+1, addrSetAbort); sqlite3VdbeAddOp1(v, OP_Return, regOutputRow); @@ -105200,7 +106704,7 @@ SQLITE_PRIVATE int sqlite3Select( } updateAccumulator(pParse, &sAggInfo); assert( pMinMax==0 || pMinMax->nExpr==1 ); - if( sqlite3WhereIsOrdered(pWInfo) ){ + if( sqlite3WhereIsOrdered(pWInfo)>0 ){ sqlite3VdbeAddOp2(v, OP_Goto, 0, sqlite3WhereBreakLabel(pWInfo)); VdbeComment((v, "%s() by index", (flag==WHERE_ORDERBY_MIN?"min":"max"))); @@ -105209,7 +106713,7 @@ SQLITE_PRIVATE int sqlite3Select( finalizeAggFunctions(pParse, &sAggInfo); } - pOrderBy = 0; + sSort.pOrderBy = 0; sqlite3ExprIfFalse(pParse, pHaving, addrEnd, SQLITE_JUMPIFNULL); selectInnerLoop(pParse, p, p->pEList, -1, 0, 0, pDest, addrEnd, addrEnd); @@ -105226,9 +106730,9 @@ SQLITE_PRIVATE int sqlite3Select( /* If there is an ORDER BY clause, then we need to sort the results ** and send them to the callback one by one. */ - if( pOrderBy ){ - explainTempTable(pParse, "ORDER BY"); - generateSortTail(pParse, p, v, pEList->nExpr, pDest); + if( sSort.pOrderBy ){ + explainTempTable(pParse, sSort.nOBSat>0 ? "RIGHT PART OF ORDER BY":"ORDER BY"); + generateSortTail(pParse, p, &sSort, pEList->nExpr, pDest); } /* Jump here to skip this query @@ -106867,7 +108371,7 @@ SQLITE_PRIVATE void sqlite3Update( iIdxCur = iDataCur+1; pPk = HasRowid(pTab) ? 0 : sqlite3PrimaryKeyIndex(pTab); for(nIdx=0, pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext, nIdx++){ - if( pIdx->autoIndex==2 && pPk!=0 ){ + if( IsPrimaryKeyIndex(pIdx) && pPk!=0 ){ iDataCur = pParse->nTab; pTabList->a[0].iCursor = iDataCur; } @@ -107118,7 +108622,8 @@ SQLITE_PRIVATE void sqlite3Update( } labelContinue = labelBreak; sqlite3VdbeAddOp2(v, OP_IsNull, pPk ? regKey : regOldRowid, labelBreak); - VdbeCoverage(v); + VdbeCoverageIf(v, pPk==0); + VdbeCoverageIf(v, pPk!=0); }else if( pPk ){ labelContinue = sqlite3VdbeMakeLabel(v); sqlite3VdbeAddOp2(v, OP_Rewind, iEph, labelBreak); VdbeCoverage(v); @@ -109066,7 +110571,7 @@ struct WhereLoop { struct { /* Information for virtual tables */ int idxNum; /* Index number */ u8 needFree; /* True if sqlite3_free(idxStr) is needed */ - u8 isOrdered; /* True if satisfies ORDER BY */ + i8 isOrdered; /* True if satisfies ORDER BY */ u16 omitMask; /* Terms that may be omitted */ char *idxStr; /* Index identifier string */ } vtab; @@ -109128,8 +110633,8 @@ struct WherePath { Bitmask revLoop; /* aLoop[]s that should be reversed for ORDER BY */ LogEst nRow; /* Estimated number of rows generated by this path */ LogEst rCost; /* Total cost of this path */ - u8 isOrdered; /* True if this path satisfies ORDER BY */ - u8 isOrderedValid; /* True if the isOrdered field is valid */ + LogEst rUnsorted; /* Total cost of this path ignoring sorting costs */ + i8 isOrdered; /* No. of ORDER BY terms satisfied. -1 for unknown */ WhereLoop **aLoop; /* Array of WhereLoop objects implementing this path */ }; @@ -109343,7 +110848,8 @@ struct WhereInfo { Bitmask revMask; /* Mask of ORDER BY terms that need reversing */ LogEst nRowOut; /* Estimated number of output rows */ u16 wctrlFlags; /* Flags originally passed to sqlite3WhereBegin() */ - u8 bOBSat; /* ORDER BY satisfied by indices */ + i8 nOBSat; /* Number of ORDER BY terms satisfied by indices */ + u8 sorted; /* True if really sorted (not just grouped) */ u8 okOnePass; /* Ok to use one-pass algorithm for UPDATE/DELETE */ u8 untestedTerms; /* Not all WHERE terms resolved by outer loop */ u8 eDistinct; /* One of the WHERE_DISTINCT_* values below */ @@ -109427,7 +110933,7 @@ SQLITE_PRIVATE int sqlite3WhereIsDistinct(WhereInfo *pWInfo){ ** Return FALSE if the output needs to be sorted. */ SQLITE_PRIVATE int sqlite3WhereIsOrdered(WhereInfo *pWInfo){ - return pWInfo->bOBSat!=0; + return pWInfo->nOBSat; } /* @@ -109435,6 +110941,7 @@ SQLITE_PRIVATE int sqlite3WhereIsOrdered(WhereInfo *pWInfo){ ** immediately with the next row of a WHERE clause. */ SQLITE_PRIVATE int sqlite3WhereContinueLabel(WhereInfo *pWInfo){ + assert( pWInfo->iContinue!=0 ); return pWInfo->iContinue; } @@ -109614,7 +111121,7 @@ static int whereClauseInsert(WhereClause *pWC, Expr *p, u8 wtFlags){ if( p && ExprHasProperty(p, EP_Unlikely) ){ pTerm->truthProb = sqlite3LogEst(p->iTable) - 99; }else{ - pTerm->truthProb = -1; + pTerm->truthProb = 1; } pTerm->pExpr = sqlite3ExprSkipCollate(p); pTerm->wtFlags = wtFlags; @@ -109931,7 +111438,7 @@ static WhereTerm *whereScanInit( if( pIdx && iColumn>=0 ){ pScan->idxaff = pIdx->pTable->aCol[iColumn].affinity; for(j=0; pIdx->aiColumn[j]!=iColumn; j++){ - if( NEVER(j>=pIdx->nKeyCol) ) return 0; + if( NEVER(j>pIdx->nColumn) ) return 0; } pScan->zCollName = pIdx->azColl[j]; }else{ @@ -110857,7 +112364,7 @@ static int isDistinctRedundant( ** contain a "col=X" term are subject to a NOT NULL constraint. */ for(pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext){ - if( pIdx->onError==OE_None ) continue; + if( !IsUniqueIndex(pIdx) ) continue; for(i=0; inKeyCol; i++){ i16 iCol = pIdx->aiColumn[i]; if( 0==findTerm(pWC, iBase, iCol, ~(Bitmask)0, WO_EQ, pIdx) ){ @@ -110881,8 +112388,7 @@ static int isDistinctRedundant( ** Estimate the logarithm of the input value to base 2. */ static LogEst estLog(LogEst N){ - LogEst x = sqlite3LogEst(N); - return x>33 ? x - 33 : 0; + return N<=10 ? 0 : sqlite3LogEst(N) - 33; } /* @@ -111343,10 +112849,11 @@ static void whereKeyStats( iLower = 0; iUpper = aSample[0].anLt[iCol]; }else{ - iUpper = i>=pIdx->nSample ? pIdx->aiRowEst[0] : aSample[i].anLt[iCol]; + i64 nRow0 = sqlite3LogEstToInt(pIdx->aiRowLogEst[0]); + iUpper = i>=pIdx->nSample ? nRow0 : aSample[i].anLt[iCol]; iLower = aSample[i-1].anEq[iCol] + aSample[i-1].anLt[iCol]; } - aStat[1] = (pIdx->nKeyCol>iCol ? pIdx->aAvgEq[iCol] : 1); + aStat[1] = pIdx->aAvgEq[iCol]; if( iLower>=iUpper ){ iGap = 0; }else{ @@ -111362,6 +112869,138 @@ static void whereKeyStats( } #endif /* SQLITE_ENABLE_STAT3_OR_STAT4 */ +/* +** If it is not NULL, pTerm is a term that provides an upper or lower +** bound on a range scan. Without considering pTerm, it is estimated +** that the scan will visit nNew rows. This function returns the number +** estimated to be visited after taking pTerm into account. +** +** If the user explicitly specified a likelihood() value for this term, +** then the return value is the likelihood multiplied by the number of +** input rows. Otherwise, this function assumes that an "IS NOT NULL" term +** has a likelihood of 0.50, and any other term a likelihood of 0.25. +*/ +static LogEst whereRangeAdjust(WhereTerm *pTerm, LogEst nNew){ + LogEst nRet = nNew; + if( pTerm ){ + if( pTerm->truthProb<=0 ){ + nRet += pTerm->truthProb; + }else if( (pTerm->wtFlags & TERM_VNULL)==0 ){ + nRet -= 20; assert( 20==sqlite3LogEst(4) ); + } + } + return nRet; +} + +#ifdef SQLITE_ENABLE_STAT3_OR_STAT4 +/* +** This function is called to estimate the number of rows visited by a +** range-scan on a skip-scan index. For example: +** +** CREATE INDEX i1 ON t1(a, b, c); +** SELECT * FROM t1 WHERE a=? AND c BETWEEN ? AND ?; +** +** Value pLoop->nOut is currently set to the estimated number of rows +** visited for scanning (a=? AND b=?). This function reduces that estimate +** by some factor to account for the (c BETWEEN ? AND ?) expression based +** on the stat4 data for the index. this scan will be peformed multiple +** times (once for each (a,b) combination that matches a=?) is dealt with +** by the caller. +** +** It does this by scanning through all stat4 samples, comparing values +** extracted from pLower and pUpper with the corresponding column in each +** sample. If L and U are the number of samples found to be less than or +** equal to the values extracted from pLower and pUpper respectively, and +** N is the total number of samples, the pLoop->nOut value is adjusted +** as follows: +** +** nOut = nOut * ( min(U - L, 1) / N ) +** +** If pLower is NULL, or a value cannot be extracted from the term, L is +** set to zero. If pUpper is NULL, or a value cannot be extracted from it, +** U is set to N. +** +** Normally, this function sets *pbDone to 1 before returning. However, +** if no value can be extracted from either pLower or pUpper (and so the +** estimate of the number of rows delivered remains unchanged), *pbDone +** is left as is. +** +** If an error occurs, an SQLite error code is returned. Otherwise, +** SQLITE_OK. +*/ +static int whereRangeSkipScanEst( + Parse *pParse, /* Parsing & code generating context */ + WhereTerm *pLower, /* Lower bound on the range. ex: "x>123" Might be NULL */ + WhereTerm *pUpper, /* Upper bound on the range. ex: "x<455" Might be NULL */ + WhereLoop *pLoop, /* Update the .nOut value of this loop */ + int *pbDone /* Set to true if at least one expr. value extracted */ +){ + Index *p = pLoop->u.btree.pIndex; + int nEq = pLoop->u.btree.nEq; + sqlite3 *db = pParse->db; + int nLower = -1; + int nUpper = p->nSample+1; + int rc = SQLITE_OK; + int iCol = p->aiColumn[nEq]; + u8 aff = iCol>=0 ? p->pTable->aCol[iCol].affinity : SQLITE_AFF_INTEGER; + CollSeq *pColl; + + sqlite3_value *p1 = 0; /* Value extracted from pLower */ + sqlite3_value *p2 = 0; /* Value extracted from pUpper */ + sqlite3_value *pVal = 0; /* Value extracted from record */ + + pColl = sqlite3LocateCollSeq(pParse, p->azColl[nEq]); + if( pLower ){ + rc = sqlite3Stat4ValueFromExpr(pParse, pLower->pExpr->pRight, aff, &p1); + nLower = 0; + } + if( pUpper && rc==SQLITE_OK ){ + rc = sqlite3Stat4ValueFromExpr(pParse, pUpper->pExpr->pRight, aff, &p2); + nUpper = p2 ? 0 : p->nSample; + } + + if( p1 || p2 ){ + int i; + int nDiff; + for(i=0; rc==SQLITE_OK && inSample; i++){ + rc = sqlite3Stat4Column(db, p->aSample[i].p, p->aSample[i].n, nEq, &pVal); + if( rc==SQLITE_OK && p1 ){ + int res = sqlite3MemCompare(p1, pVal, pColl); + if( res>=0 ) nLower++; + } + if( rc==SQLITE_OK && p2 ){ + int res = sqlite3MemCompare(p2, pVal, pColl); + if( res>=0 ) nUpper++; + } + } + nDiff = (nUpper - nLower); + if( nDiff<=0 ) nDiff = 1; + + /* If there is both an upper and lower bound specified, and the + ** comparisons indicate that they are close together, use the fallback + ** method (assume that the scan visits 1/64 of the rows) for estimating + ** the number of rows visited. Otherwise, estimate the number of rows + ** using the method described in the header comment for this function. */ + if( nDiff!=1 || pUpper==0 || pLower==0 ){ + int nAdjust = (sqlite3LogEst(p->nSample) - sqlite3LogEst(nDiff)); + pLoop->nOut -= nAdjust; + *pbDone = 1; + WHERETRACE(0x10, ("range skip-scan regions: %u..%u adjust=%d est=%d\n", + nLower, nUpper, nAdjust*-1, pLoop->nOut)); + } + + }else{ + assert( *pbDone==0 ); + } + + sqlite3ValueFree(p1); + sqlite3ValueFree(p2); + sqlite3ValueFree(pVal); + + return rc; +} +#endif /* SQLITE_ENABLE_STAT3_OR_STAT4 */ + /* ** This function is used to estimate the number of rows that will be visited ** by scanning an index for a range of values. The range may have an upper @@ -111398,9 +113037,9 @@ static void whereKeyStats( ** to account for the range contraints pLower and pUpper. ** ** In the absence of sqlite_stat4 ANALYZE data, or if such data cannot be -** used, each range inequality reduces the search space by a factor of 4. -** Hence a pair of constraints (x>? AND x? AND xu.btree.nEq; if( p->nSample>0 - && nEq==pBuilder->nRecValid && nEqnSampleCol && OptimizationEnabled(pParse->db, SQLITE_Stat3) ){ - UnpackedRecord *pRec = pBuilder->pRec; - tRowcnt a[2]; - u8 aff; + if( nEq==pBuilder->nRecValid ){ + UnpackedRecord *pRec = pBuilder->pRec; + tRowcnt a[2]; + u8 aff; - /* Variable iLower will be set to the estimate of the number of rows in - ** the index that are less than the lower bound of the range query. The - ** lower bound being the concatenation of $P and $L, where $P is the - ** key-prefix formed by the nEq values matched against the nEq left-most - ** columns of the index, and $L is the value in pLower. - ** - ** Or, if pLower is NULL or $L cannot be extracted from it (because it - ** is not a simple variable or literal value), the lower bound of the - ** range is $P. Due to a quirk in the way whereKeyStats() works, even - ** if $L is available, whereKeyStats() is called for both ($P) and - ** ($P:$L) and the larger of the two returned values used. - ** - ** Similarly, iUpper is to be set to the estimate of the number of rows - ** less than the upper bound of the range query. Where the upper bound - ** is either ($P) or ($P:$U). Again, even if $U is available, both values - ** of iUpper are requested of whereKeyStats() and the smaller used. - */ - tRowcnt iLower; - tRowcnt iUpper; + /* Variable iLower will be set to the estimate of the number of rows in + ** the index that are less than the lower bound of the range query. The + ** lower bound being the concatenation of $P and $L, where $P is the + ** key-prefix formed by the nEq values matched against the nEq left-most + ** columns of the index, and $L is the value in pLower. + ** + ** Or, if pLower is NULL or $L cannot be extracted from it (because it + ** is not a simple variable or literal value), the lower bound of the + ** range is $P. Due to a quirk in the way whereKeyStats() works, even + ** if $L is available, whereKeyStats() is called for both ($P) and + ** ($P:$L) and the larger of the two returned values used. + ** + ** Similarly, iUpper is to be set to the estimate of the number of rows + ** less than the upper bound of the range query. Where the upper bound + ** is either ($P) or ($P:$U). Again, even if $U is available, both values + ** of iUpper are requested of whereKeyStats() and the smaller used. + */ + tRowcnt iLower; + tRowcnt iUpper; - if( nEq==p->nKeyCol ){ - aff = SQLITE_AFF_INTEGER; - }else{ - aff = p->pTable->aCol[p->aiColumn[nEq]].affinity; - } - /* Determine iLower and iUpper using ($P) only. */ - if( nEq==0 ){ - iLower = 0; - iUpper = p->aiRowEst[0]; - }else{ - /* Note: this call could be optimized away - since the same values must - ** have been requested when testing key $P in whereEqualScanEst(). */ - whereKeyStats(pParse, p, pRec, 0, a); - iLower = a[0]; - iUpper = a[0] + a[1]; - } - - /* If possible, improve on the iLower estimate using ($P:$L). */ - if( pLower ){ - int bOk; /* True if value is extracted from pExpr */ - Expr *pExpr = pLower->pExpr->pRight; - assert( (pLower->eOperator & (WO_GT|WO_GE))!=0 ); - rc = sqlite3Stat4ProbeSetValue(pParse, p, &pRec, pExpr, aff, nEq, &bOk); - if( rc==SQLITE_OK && bOk ){ - tRowcnt iNew; - whereKeyStats(pParse, p, pRec, 0, a); - iNew = a[0] + ((pLower->eOperator & WO_GT) ? a[1] : 0); - if( iNew>iLower ) iLower = iNew; - nOut--; - } - } - - /* If possible, improve on the iUpper estimate using ($P:$U). */ - if( pUpper ){ - int bOk; /* True if value is extracted from pExpr */ - Expr *pExpr = pUpper->pExpr->pRight; - assert( (pUpper->eOperator & (WO_LT|WO_LE))!=0 ); - rc = sqlite3Stat4ProbeSetValue(pParse, p, &pRec, pExpr, aff, nEq, &bOk); - if( rc==SQLITE_OK && bOk ){ - tRowcnt iNew; - whereKeyStats(pParse, p, pRec, 1, a); - iNew = a[0] + ((pUpper->eOperator & WO_LE) ? a[1] : 0); - if( iNewpRec = pRec; - if( rc==SQLITE_OK ){ - if( iUpper>iLower ){ - nNew = sqlite3LogEst(iUpper - iLower); + if( nEq==p->nKeyCol ){ + aff = SQLITE_AFF_INTEGER; }else{ - nNew = 10; assert( 10==sqlite3LogEst(2) ); + aff = p->pTable->aCol[p->aiColumn[nEq]].affinity; } - if( nNewaiRowLogEst[0]); + }else{ + /* Note: this call could be optimized away - since the same values must + ** have been requested when testing key $P in whereEqualScanEst(). */ + whereKeyStats(pParse, p, pRec, 0, a); + iLower = a[0]; + iUpper = a[0] + a[1]; } - pLoop->nOut = (LogEst)nOut; - WHERETRACE(0x10, ("range scan regions: %u..%u est=%d\n", - (u32)iLower, (u32)iUpper, nOut)); - return SQLITE_OK; + + /* If possible, improve on the iLower estimate using ($P:$L). */ + if( pLower ){ + int bOk; /* True if value is extracted from pExpr */ + Expr *pExpr = pLower->pExpr->pRight; + assert( (pLower->eOperator & (WO_GT|WO_GE))!=0 ); + rc = sqlite3Stat4ProbeSetValue(pParse, p, &pRec, pExpr, aff, nEq, &bOk); + if( rc==SQLITE_OK && bOk ){ + tRowcnt iNew; + whereKeyStats(pParse, p, pRec, 0, a); + iNew = a[0] + ((pLower->eOperator & WO_GT) ? a[1] : 0); + if( iNew>iLower ) iLower = iNew; + nOut--; + } + } + + /* If possible, improve on the iUpper estimate using ($P:$U). */ + if( pUpper ){ + int bOk; /* True if value is extracted from pExpr */ + Expr *pExpr = pUpper->pExpr->pRight; + assert( (pUpper->eOperator & (WO_LT|WO_LE))!=0 ); + rc = sqlite3Stat4ProbeSetValue(pParse, p, &pRec, pExpr, aff, nEq, &bOk); + if( rc==SQLITE_OK && bOk ){ + tRowcnt iNew; + whereKeyStats(pParse, p, pRec, 1, a); + iNew = a[0] + ((pUpper->eOperator & WO_LE) ? a[1] : 0); + if( iNewpRec = pRec; + if( rc==SQLITE_OK ){ + if( iUpper>iLower ){ + nNew = sqlite3LogEst(iUpper - iLower); + }else{ + nNew = 10; assert( 10==sqlite3LogEst(2) ); + } + if( nNewnOut = (LogEst)nOut; + WHERETRACE(0x10, ("range scan regions: %u..%u est=%d\n", + (u32)iLower, (u32)iUpper, nOut)); + return SQLITE_OK; + } + }else{ + int bDone = 0; + rc = whereRangeSkipScanEst(pParse, pLower, pUpper, pLoop, &bDone); + if( bDone ) return rc; } } #else @@ -111514,17 +113158,18 @@ static int whereRangeScanEst( UNUSED_PARAMETER(pBuilder); #endif assert( pLower || pUpper ); - /* TUNING: Each inequality constraint reduces the search space 4-fold. - ** A BETWEEN operator, therefore, reduces the search space 16-fold */ - nNew = nOut; - if( pLower && (pLower->wtFlags & TERM_VNULL)==0 ){ - nNew -= 20; assert( 20==sqlite3LogEst(4) ); - nOut--; - } - if( pUpper ){ - nNew -= 20; assert( 20==sqlite3LogEst(4) ); - nOut--; - } + assert( pUpper==0 || (pUpper->wtFlags & TERM_VNULL)==0 ); + nNew = whereRangeAdjust(pLower, nOut); + nNew = whereRangeAdjust(pUpper, nNew); + + /* TUNING: If there is both an upper and lower limit, assume the range is + ** reduced by an additional 75%. This means that, by default, an open-ended + ** range query (e.g. col > ?) is assumed to match 1/4 of the rows in the + ** index. While a closed range (e.g. col BETWEEN ? AND ?) is estimated to + ** match 1/64 of the index. */ + if( pLower && pUpper ) nNew -= 20; + + nOut -= (pLower!=0) + (pUpper!=0); if( nNew<10 ) nNew = 10; if( nNewnOut = (LogEst)nOut; @@ -111564,7 +113209,7 @@ static int whereEqualScanEst( int bOk; assert( nEq>=1 ); - assert( nEq<=(p->nKeyCol+1) ); + assert( nEq<=p->nColumn ); assert( p->aSample!=0 ); assert( p->nSample>0 ); assert( pBuilder->nRecValidp->nKeyCol ){ + if( nEq>=p->nColumn ){ *pnRow = 1; return SQLITE_OK; } @@ -111621,6 +113266,7 @@ static int whereInScanEst( tRowcnt *pnRow /* Write the revised row estimate here */ ){ Index *p = pBuilder->pNew->u.btree.pIndex; + i64 nRow0 = sqlite3LogEstToInt(p->aiRowLogEst[0]); int nRecValid = pBuilder->nRecValid; int rc = SQLITE_OK; /* Subfunction return code */ tRowcnt nEst; /* Number of rows for a single term */ @@ -111629,14 +113275,14 @@ static int whereInScanEst( assert( p->aSample!=0 ); for(i=0; rc==SQLITE_OK && inExpr; i++){ - nEst = p->aiRowEst[0]; + nEst = nRow0; rc = whereEqualScanEst(pParse, pBuilder, pList->a[i].pExpr, &nEst); nRowEst += nEst; pBuilder->nRecValid = nRecValid; } if( rc==SQLITE_OK ){ - if( nRowEst > p->aiRowEst[0] ) nRowEst = p->aiRowEst[0]; + if( nRowEst > nRow0 ) nRowEst = nRow0; *pnRow = nRowEst; WHERETRACE(0x10,("IN row estimate: est=%g\n", nRowEst)); } @@ -111770,7 +113416,7 @@ static int codeEqualityTerm( } assert( pX->op==TK_IN ); iReg = iTarget; - eType = sqlite3FindInIndex(pParse, pX, 0); + eType = sqlite3FindInIndex(pParse, pX, IN_INDEX_LOOP, 0); if( eType==IN_INDEX_INDEX_DESC ){ testcase( bRev ); bRev = !bRev; @@ -112007,7 +113653,7 @@ static char *explainIndexRange(sqlite3 *db, WhereLoop *pLoop, Table *pTab){ txt.db = db; sqlite3StrAccumAppend(&txt, " (", 2); for(i=0; inKeyCol ) ? "rowid" : aCol[aiColumn[i]].zName; + char *z = aiColumn[i] < 0 ? "rowid" : aCol[aiColumn[i]].zName; if( i>=nSkip ){ explainAppendTerm(&txt, i, z, "="); }else{ @@ -112020,11 +113666,11 @@ static char *explainIndexRange(sqlite3 *db, WhereLoop *pLoop, Table *pTab){ j = i; if( pLoop->wsFlags&WHERE_BTM_LIMIT ){ - char *z = (j==pIndex->nKeyCol ) ? "rowid" : aCol[aiColumn[j]].zName; + char *z = aiColumn[j] < 0 ? "rowid" : aCol[aiColumn[j]].zName; explainAppendTerm(&txt, i++, z, ">"); } if( pLoop->wsFlags&WHERE_TOP_LIMIT ){ - char *z = (j==pIndex->nKeyCol ) ? "rowid" : aCol[aiColumn[j]].zName; + char *z = aiColumn[j] < 0 ? "rowid" : aCol[aiColumn[j]].zName; explainAppendTerm(&txt, i, z, "<"); } sqlite3StrAccumAppend(&txt, ")", 1); @@ -112079,13 +113725,20 @@ static void explainOneScan( if( (flags & (WHERE_IPK|WHERE_VIRTUALTABLE))==0 && ALWAYS(pLoop->u.btree.pIndex!=0) ){ + const char *zFmt; + Index *pIdx = pLoop->u.btree.pIndex; char *zWhere = explainIndexRange(db, pLoop, pItem->pTab); - zMsg = sqlite3MAppendf(db, zMsg, - ((flags & WHERE_AUTO_INDEX) ? - "%s USING AUTOMATIC %sINDEX%.0s%s" : - "%s USING %sINDEX %s%s"), - zMsg, ((flags & WHERE_IDX_ONLY) ? "COVERING " : ""), - pLoop->u.btree.pIndex->zName, zWhere); + assert( !(flags&WHERE_AUTO_INDEX) || (flags&WHERE_IDX_ONLY) ); + if( !HasRowid(pItem->pTab) && IsPrimaryKeyIndex(pIdx) ){ + zFmt = zWhere ? "%s USING PRIMARY KEY%.0s%s" : "%s%.0s%s"; + }else if( flags & WHERE_AUTO_INDEX ){ + zFmt = "%s USING AUTOMATIC COVERING INDEX%.0s%s"; + }else if( flags & WHERE_IDX_ONLY ){ + zFmt = "%s USING COVERING INDEX %s%s"; + }else{ + zFmt = "%s USING INDEX %s%s"; + } + zMsg = sqlite3MAppendf(db, zMsg, zFmt, zMsg, pIdx->zName, zWhere); sqlite3DbFree(db, zWhere); }else if( (flags & WHERE_IPK)!=0 && (flags & WHERE_CONSTRAINT)!=0 ){ zMsg = sqlite3MAppendf(db, zMsg, "%s USING INTEGER PRIMARY KEY", zMsg); @@ -112228,7 +113881,7 @@ static Bitmask codeOneLoopStart( pLevel->p1 = iCur; pLevel->p2 = sqlite3VdbeCurrentAddr(v); sqlite3ReleaseTempRange(pParse, iReg, nConstraint+2); - sqlite3ExprCachePop(pParse, 1); + sqlite3ExprCachePop(pParse); }else #endif /* SQLITE_OMIT_VIRTUALTABLE */ @@ -112424,8 +114077,11 @@ static Bitmask codeOneLoopStart( ** the first one after the nEq equality constraints in the index, ** this requires some special handling. */ + assert( pWInfo->pOrderBy==0 + || pWInfo->pOrderBy->nExpr==1 + || (pWInfo->wctrlFlags&WHERE_ORDERBY_MIN)==0 ); if( (pWInfo->wctrlFlags&WHERE_ORDERBY_MIN)!=0 - && (pWInfo->bOBSat!=0) + && pWInfo->nOBSat>0 && (pIdx->nKeyCol>nEq) ){ assert( pLoop->u.btree.nSkip==0 ); @@ -112574,7 +114230,7 @@ static Bitmask codeOneLoopStart( sqlite3VdbeAddOp2(v, OP_IdxRowid, iIdxCur, iRowidReg); sqlite3ExprCacheStore(pParse, iCur, -1, iRowidReg); sqlite3VdbeAddOp2(v, OP_Seek, iCur, iRowidReg); /* Deferred seek */ - }else{ + }else if( iCur!=iIdxCur ){ Index *pPk = sqlite3PrimaryKeyIndex(pIdx->pTable); iRowidReg = sqlite3GetTempRange(pParse, pPk->nKeyCol); for(j=0; jnKeyCol; j++){ @@ -112596,8 +114252,7 @@ static Bitmask codeOneLoopStart( pLevel->op = OP_Next; } pLevel->p1 = iIdxCur; - assert( (WHERE_UNQ_WANTED>>16)==1 ); - pLevel->p3 = (pLoop->wsFlags>>16)&1; + pLevel->p3 = (pLoop->wsFlags&WHERE_UNQ_WANTED)!=0 ? 1:0; if( (pLoop->wsFlags & WHERE_CONSTRAINT)==0 ){ pLevel->p5 = SQLITE_STMTSTATUS_FULLSCAN_STEP; }else{ @@ -112645,6 +114300,10 @@ static Bitmask codeOneLoopStart( ** ** B: ** + ** Added 2014-05-26: If the table is a WITHOUT ROWID table, then + ** use an ephermeral index instead of a RowSet to record the primary + ** keys of the rows we have already seen. + ** */ WhereClause *pOrWc; /* The OR-clause broken out into subterms */ SrcList *pOrTab; /* Shortened table list or OR-clause generation */ @@ -112658,7 +114317,9 @@ static Bitmask codeOneLoopStart( int iRetInit; /* Address of regReturn init */ int untestedTerms = 0; /* Some terms not completely tested */ int ii; /* Loop counter */ + u16 wctrlFlags; /* Flags for sub-WHERE clause */ Expr *pAndExpr = 0; /* An ".. AND (...)" expression */ + Table *pTab = pTabItem->pTab; pTerm = pLoop->aLTerm[0]; assert( pTerm!=0 ); @@ -112691,7 +114352,8 @@ static Bitmask codeOneLoopStart( } /* Initialize the rowset register to contain NULL. An SQL NULL is - ** equivalent to an empty rowset. + ** equivalent to an empty rowset. Or, create an ephermeral index + ** capable of holding primary keys in the case of a WITHOUT ROWID. ** ** Also initialize regReturn to contain the address of the instruction ** immediately following the OP_Return at the bottom of the loop. This @@ -112702,9 +114364,16 @@ static Bitmask codeOneLoopStart( ** called on an uninitialized cursor. */ if( (pWInfo->wctrlFlags & WHERE_DUPLICATES_OK)==0 ){ - regRowset = ++pParse->nMem; + if( HasRowid(pTab) ){ + regRowset = ++pParse->nMem; + sqlite3VdbeAddOp2(v, OP_Null, 0, regRowset); + }else{ + Index *pPk = sqlite3PrimaryKeyIndex(pTab); + regRowset = pParse->nTab++; + sqlite3VdbeAddOp2(v, OP_OpenEphemeral, regRowset, pPk->nKeyCol); + sqlite3VdbeSetP4KeyInfo(pParse, pPk); + } regRowid = ++pParse->nMem; - sqlite3VdbeAddOp2(v, OP_Null, 0, regRowset); } iRetInit = sqlite3VdbeAddOp2(v, OP_Integer, 0, regReturn); @@ -112740,36 +114409,88 @@ static Bitmask codeOneLoopStart( } } + /* Run a separate WHERE clause for each term of the OR clause. After + ** eliminating duplicates from other WHERE clauses, the action for each + ** sub-WHERE clause is to to invoke the main loop body as a subroutine. + */ + wctrlFlags = WHERE_OMIT_OPEN_CLOSE | WHERE_AND_ONLY | + WHERE_FORCE_TABLE | WHERE_ONETABLE_ONLY; for(ii=0; iinTerm; ii++){ WhereTerm *pOrTerm = &pOrWc->a[ii]; if( pOrTerm->leftCursor==iCur || (pOrTerm->eOperator & WO_AND)!=0 ){ - WhereInfo *pSubWInfo; /* Info for single OR-term scan */ - Expr *pOrExpr = pOrTerm->pExpr; + WhereInfo *pSubWInfo; /* Info for single OR-term scan */ + Expr *pOrExpr = pOrTerm->pExpr; /* Current OR clause term */ + int j1 = 0; /* Address of jump operation */ if( pAndExpr && !ExprHasProperty(pOrExpr, EP_FromJoin) ){ pAndExpr->pLeft = pOrExpr; pOrExpr = pAndExpr; } /* Loop through table entries that match term pOrTerm. */ pSubWInfo = sqlite3WhereBegin(pParse, pOrTab, pOrExpr, 0, 0, - WHERE_OMIT_OPEN_CLOSE | WHERE_AND_ONLY | - WHERE_FORCE_TABLE | WHERE_ONETABLE_ONLY, iCovCur); + wctrlFlags, iCovCur); assert( pSubWInfo || pParse->nErr || db->mallocFailed ); if( pSubWInfo ){ WhereLoop *pSubLoop; explainOneScan( pParse, pOrTab, &pSubWInfo->a[0], iLevel, pLevel->iFrom, 0 ); + /* This is the sub-WHERE clause body. First skip over + ** duplicate rows from prior sub-WHERE clauses, and record the + ** rowid (or PRIMARY KEY) for the current row so that the same + ** row will be skipped in subsequent sub-WHERE clauses. + */ if( (pWInfo->wctrlFlags & WHERE_DUPLICATES_OK)==0 ){ - int iSet = ((ii==pOrWc->nTerm-1)?-1:ii); int r; - r = sqlite3ExprCodeGetColumn(pParse, pTabItem->pTab, -1, iCur, - regRowid, 0); - sqlite3VdbeAddOp4Int(v, OP_RowSetTest, regRowset, - sqlite3VdbeCurrentAddr(v)+2, r, iSet); - VdbeCoverage(v); + int iSet = ((ii==pOrWc->nTerm-1)?-1:ii); + if( HasRowid(pTab) ){ + r = sqlite3ExprCodeGetColumn(pParse, pTab, -1, iCur, regRowid, 0); + j1 = sqlite3VdbeAddOp4Int(v, OP_RowSetTest, regRowset, 0, r,iSet); + VdbeCoverage(v); + }else{ + Index *pPk = sqlite3PrimaryKeyIndex(pTab); + int nPk = pPk->nKeyCol; + int iPk; + + /* Read the PK into an array of temp registers. */ + r = sqlite3GetTempRange(pParse, nPk); + for(iPk=0; iPkaiColumn[iPk]; + sqlite3ExprCodeGetColumn(pParse, pTab, iCol, iCur, r+iPk, 0); + } + + /* Check if the temp table already contains this key. If so, + ** the row has already been included in the result set and + ** can be ignored (by jumping past the Gosub below). Otherwise, + ** insert the key into the temp table and proceed with processing + ** the row. + ** + ** Use some of the same optimizations as OP_RowSetTest: If iSet + ** is zero, assume that the key cannot already be present in + ** the temp table. And if iSet is -1, assume that there is no + ** need to insert the key into the temp table, as it will never + ** be tested for. */ + if( iSet ){ + j1 = sqlite3VdbeAddOp4Int(v, OP_Found, regRowset, 0, r, nPk); + VdbeCoverage(v); + } + if( iSet>=0 ){ + sqlite3VdbeAddOp3(v, OP_MakeRecord, r, nPk, regRowid); + sqlite3VdbeAddOp3(v, OP_IdxInsert, regRowset, regRowid, 0); + if( iSet ) sqlite3VdbeChangeP5(v, OPFLAG_USESEEKRESULT); + } + + /* Release the array of temp registers */ + sqlite3ReleaseTempRange(pParse, r, nPk); + } } + + /* Invoke the main loop body as a subroutine */ sqlite3VdbeAddOp2(v, OP_Gosub, regReturn, iLoopBody); + /* Jump here (skipping the main loop body subroutine) if the + ** current sub-WHERE row is a duplicate from prior sub-WHEREs. */ + if( j1 ) sqlite3VdbeJumpHere(v, j1); + /* The pSubWInfo->untestedTerms flag means that this OR term ** contained one or more AND term from a notReady table. The ** terms from the notReady table could not be tested and will @@ -112793,9 +114514,11 @@ static Bitmask codeOneLoopStart( assert( (pSubLoop->wsFlags & WHERE_AUTO_INDEX)==0 ); if( (pSubLoop->wsFlags & WHERE_INDEXED)!=0 && (ii==0 || pSubLoop->u.btree.pIndex==pCov) + && (HasRowid(pTab) || !IsPrimaryKeyIndex(pSubLoop->u.btree.pIndex)) ){ assert( pSubWInfo->a[0].iIdxCur==iCovCur ); pCov = pSubLoop->u.btree.pIndex; + wctrlFlags |= WHERE_REOPEN_IDX; }else{ pCov = 0; } @@ -112974,7 +114697,7 @@ static void whereLoopPrint(WhereLoop *p, WhereClause *pWC){ sqlite3DebugPrintf(" %-19s", z); sqlite3_free(z); } - sqlite3DebugPrintf(" f %04x N %d", p->wsFlags, p->nLTerm); + sqlite3DebugPrintf(" f %05x N %d", p->wsFlags, p->nLTerm); sqlite3DebugPrintf(" cost %d,%d,%d\n", p->rSetup, p->rRun, p->nOut); #ifdef SQLITE_ENABLE_TREE_EXPLAIN /* If the 0x100 bit of wheretracing is set, then show all of the constraint @@ -113096,6 +114819,161 @@ static void whereInfoFree(sqlite3 *db, WhereInfo *pWInfo){ } } +/* +** Return TRUE if both of the following are true: +** +** (1) X has the same or lower cost that Y +** (2) X is a proper subset of Y +** +** By "proper subset" we mean that X uses fewer WHERE clause terms +** than Y and that every WHERE clause term used by X is also used +** by Y. +** +** If X is a proper subset of Y then Y is a better choice and ought +** to have a lower cost. This routine returns TRUE when that cost +** relationship is inverted and needs to be adjusted. +*/ +static int whereLoopCheaperProperSubset( + const WhereLoop *pX, /* First WhereLoop to compare */ + const WhereLoop *pY /* Compare against this WhereLoop */ +){ + int i, j; + if( pX->nLTerm >= pY->nLTerm ) return 0; /* X is not a subset of Y */ + if( pX->rRun >= pY->rRun ){ + if( pX->rRun > pY->rRun ) return 0; /* X costs more than Y */ + if( pX->nOut > pY->nOut ) return 0; /* X costs more than Y */ + } + for(i=pX->nLTerm-1; i>=0; i--){ + for(j=pY->nLTerm-1; j>=0; j--){ + if( pY->aLTerm[j]==pX->aLTerm[i] ) break; + } + if( j<0 ) return 0; /* X not a subset of Y since term X[i] not used by Y */ + } + return 1; /* All conditions meet */ +} + +/* +** Try to adjust the cost of WhereLoop pTemplate upwards or downwards so +** that: +** +** (1) pTemplate costs less than any other WhereLoops that are a proper +** subset of pTemplate +** +** (2) pTemplate costs more than any other WhereLoops for which pTemplate +** is a proper subset. +** +** To say "WhereLoop X is a proper subset of Y" means that X uses fewer +** WHERE clause terms than Y and that every WHERE clause term used by X is +** also used by Y. +** +** This adjustment is omitted for SKIPSCAN loops. In a SKIPSCAN loop, the +** WhereLoop.nLTerm field is not an accurate measure of the number of WHERE +** clause terms covered, since some of the first nLTerm entries in aLTerm[] +** will be NULL (because they are skipped). That makes it more difficult +** to compare the loops. We could add extra code to do the comparison, and +** perhaps we will someday. But SKIPSCAN is sufficiently uncommon, and this +** adjustment is sufficient minor, that it is very difficult to construct +** a test case where the extra code would improve the query plan. Better +** to avoid the added complexity and just omit cost adjustments to SKIPSCAN +** loops. +*/ +static void whereLoopAdjustCost(const WhereLoop *p, WhereLoop *pTemplate){ + if( (pTemplate->wsFlags & WHERE_INDEXED)==0 ) return; + if( (pTemplate->wsFlags & WHERE_SKIPSCAN)!=0 ) return; + for(; p; p=p->pNextLoop){ + if( p->iTab!=pTemplate->iTab ) continue; + if( (p->wsFlags & WHERE_INDEXED)==0 ) continue; + if( (p->wsFlags & WHERE_SKIPSCAN)!=0 ) continue; + if( whereLoopCheaperProperSubset(p, pTemplate) ){ + /* Adjust pTemplate cost downward so that it is cheaper than its + ** subset p */ + pTemplate->rRun = p->rRun; + pTemplate->nOut = p->nOut - 1; + }else if( whereLoopCheaperProperSubset(pTemplate, p) ){ + /* Adjust pTemplate cost upward so that it is costlier than p since + ** pTemplate is a proper subset of p */ + pTemplate->rRun = p->rRun; + pTemplate->nOut = p->nOut + 1; + } + } +} + +/* +** Search the list of WhereLoops in *ppPrev looking for one that can be +** supplanted by pTemplate. +** +** Return NULL if the WhereLoop list contains an entry that can supplant +** pTemplate, in other words if pTemplate does not belong on the list. +** +** If pX is a WhereLoop that pTemplate can supplant, then return the +** link that points to pX. +** +** If pTemplate cannot supplant any existing element of the list but needs +** to be added to the list, then return a pointer to the tail of the list. +*/ +static WhereLoop **whereLoopFindLesser( + WhereLoop **ppPrev, + const WhereLoop *pTemplate +){ + WhereLoop *p; + for(p=(*ppPrev); p; ppPrev=&p->pNextLoop, p=*ppPrev){ + if( p->iTab!=pTemplate->iTab || p->iSortIdx!=pTemplate->iSortIdx ){ + /* If either the iTab or iSortIdx values for two WhereLoop are different + ** then those WhereLoops need to be considered separately. Neither is + ** a candidate to replace the other. */ + continue; + } + /* In the current implementation, the rSetup value is either zero + ** or the cost of building an automatic index (NlogN) and the NlogN + ** is the same for compatible WhereLoops. */ + assert( p->rSetup==0 || pTemplate->rSetup==0 + || p->rSetup==pTemplate->rSetup ); + + /* whereLoopAddBtree() always generates and inserts the automatic index + ** case first. Hence compatible candidate WhereLoops never have a larger + ** rSetup. Call this SETUP-INVARIANT */ + assert( p->rSetup>=pTemplate->rSetup ); + + /* Any loop using an appliation-defined index (or PRIMARY KEY or + ** UNIQUE constraint) with one or more == constraints is better + ** than an automatic index. */ + if( (p->wsFlags & WHERE_AUTO_INDEX)!=0 + && (pTemplate->wsFlags & WHERE_INDEXED)!=0 + && (pTemplate->wsFlags & WHERE_COLUMN_EQ)!=0 + && (p->prereq & pTemplate->prereq)==pTemplate->prereq + ){ + break; + } + + /* If existing WhereLoop p is better than pTemplate, pTemplate can be + ** discarded. WhereLoop p is better if: + ** (1) p has no more dependencies than pTemplate, and + ** (2) p has an equal or lower cost than pTemplate + */ + if( (p->prereq & pTemplate->prereq)==p->prereq /* (1) */ + && p->rSetup<=pTemplate->rSetup /* (2a) */ + && p->rRun<=pTemplate->rRun /* (2b) */ + && p->nOut<=pTemplate->nOut /* (2c) */ + ){ + return 0; /* Discard pTemplate */ + } + + /* If pTemplate is always better than p, then cause p to be overwritten + ** with pTemplate. pTemplate is better than p if: + ** (1) pTemplate has no more dependences than p, and + ** (2) pTemplate has an equal or lower cost than p. + */ + if( (p->prereq & pTemplate->prereq)==pTemplate->prereq /* (1) */ + && p->rRun>=pTemplate->rRun /* (2a) */ + && p->nOut>=pTemplate->nOut /* (2b) */ + ){ + assert( p->rSetup>=pTemplate->rSetup ); /* SETUP-INVARIANT above */ + break; /* Cause p to be overwritten by pTemplate */ + } + } + return ppPrev; +} + /* ** Insert or replace a WhereLoop entry using the template supplied. ** @@ -113105,25 +114983,23 @@ static void whereInfoFree(sqlite3 *db, WhereInfo *pWInfo){ ** fewer dependencies than the template. Otherwise a new WhereLoop is ** added based on the template. ** -** If pBuilder->pOrSet is not NULL then we only care about only the +** If pBuilder->pOrSet is not NULL then we care about only the ** prerequisites and rRun and nOut costs of the N best loops. That ** information is gathered in the pBuilder->pOrSet object. This special ** processing mode is used only for OR clause processing. ** ** When accumulating multiple loops (when pBuilder->pOrSet is NULL) we ** still might overwrite similar loops with the new template if the -** template is better. Loops may be overwritten if the following +** new template is better. Loops may be overwritten if the following ** conditions are met: ** ** (1) They have the same iTab. ** (2) They have the same iSortIdx. ** (3) The template has same or fewer dependencies than the current loop ** (4) The template has the same or lower cost than the current loop -** (5) The template uses more terms of the same index but has no additional -** dependencies */ static int whereLoopInsert(WhereLoopBuilder *pBuilder, WhereLoop *pTemplate){ - WhereLoop **ppPrev, *p, *pNext = 0; + WhereLoop **ppPrev, *p; WhereInfo *pWInfo = pBuilder->pWInfo; sqlite3 *db = pWInfo->pParse->db; @@ -113146,64 +115022,23 @@ static int whereLoopInsert(WhereLoopBuilder *pBuilder, WhereLoop *pTemplate){ return SQLITE_OK; } - /* Search for an existing WhereLoop to overwrite, or which takes - ** priority over pTemplate. + /* Look for an existing WhereLoop to replace with pTemplate */ - for(ppPrev=&pWInfo->pLoops, p=*ppPrev; p; ppPrev=&p->pNextLoop, p=*ppPrev){ - if( p->iTab!=pTemplate->iTab || p->iSortIdx!=pTemplate->iSortIdx ){ - /* If either the iTab or iSortIdx values for two WhereLoop are different - ** then those WhereLoops need to be considered separately. Neither is - ** a candidate to replace the other. */ - continue; - } - /* In the current implementation, the rSetup value is either zero - ** or the cost of building an automatic index (NlogN) and the NlogN - ** is the same for compatible WhereLoops. */ - assert( p->rSetup==0 || pTemplate->rSetup==0 - || p->rSetup==pTemplate->rSetup ); + whereLoopAdjustCost(pWInfo->pLoops, pTemplate); + ppPrev = whereLoopFindLesser(&pWInfo->pLoops, pTemplate); - /* whereLoopAddBtree() always generates and inserts the automatic index - ** case first. Hence compatible candidate WhereLoops never have a larger - ** rSetup. Call this SETUP-INVARIANT */ - assert( p->rSetup>=pTemplate->rSetup ); - - if( (p->prereq & pTemplate->prereq)==p->prereq - && p->rSetup<=pTemplate->rSetup - && p->rRun<=pTemplate->rRun - && p->nOut<=pTemplate->nOut - ){ - /* This branch taken when p is equal or better than pTemplate in - ** all of (1) dependencies (2) setup-cost, (3) run-cost, and - ** (4) number of output rows. */ - assert( p->rSetup==pTemplate->rSetup ); - if( p->prereq==pTemplate->prereq - && p->nLTermnLTerm - && (p->wsFlags & pTemplate->wsFlags & WHERE_INDEXED)!=0 - && (p->u.btree.pIndex==pTemplate->u.btree.pIndex - || pTemplate->rRun+p->nLTerm<=p->rRun+pTemplate->nLTerm) - ){ - /* Overwrite an existing WhereLoop with an similar one that uses - ** more terms of the index */ - pNext = p->pNextLoop; - break; - }else{ - /* pTemplate is not helpful. - ** Return without changing or adding anything */ - goto whereLoopInsert_noop; - } - } - if( (p->prereq & pTemplate->prereq)==pTemplate->prereq - && p->rRun>=pTemplate->rRun - && p->nOut>=pTemplate->nOut - ){ - /* Overwrite an existing WhereLoop with a better one: one that is - ** better at one of (1) dependencies, (2) setup-cost, (3) run-cost - ** or (4) number of output rows, and is no worse in any of those - ** categories. */ - assert( p->rSetup>=pTemplate->rSetup ); /* SETUP-INVARIANT above */ - pNext = p->pNextLoop; - break; + if( ppPrev==0 ){ + /* There already exists a WhereLoop on the list that is better + ** than pTemplate, so just ignore pTemplate */ +#if WHERETRACE_ENABLED /* 0x8 */ + if( sqlite3WhereTrace & 0x8 ){ + sqlite3DebugPrintf("ins-noop: "); + whereLoopPrint(pTemplate, pBuilder->pWC); } +#endif + return SQLITE_OK; + }else{ + p = *ppPrev; } /* If we reach this point it means that either p[] should be overwritten @@ -113221,13 +115056,33 @@ static int whereLoopInsert(WhereLoopBuilder *pBuilder, WhereLoop *pTemplate){ } #endif if( p==0 ){ - p = sqlite3DbMallocRaw(db, sizeof(WhereLoop)); + /* Allocate a new WhereLoop to add to the end of the list */ + *ppPrev = p = sqlite3DbMallocRaw(db, sizeof(WhereLoop)); if( p==0 ) return SQLITE_NOMEM; whereLoopInit(p); + p->pNextLoop = 0; + }else{ + /* We will be overwriting WhereLoop p[]. But before we do, first + ** go through the rest of the list and delete any other entries besides + ** p[] that are also supplated by pTemplate */ + WhereLoop **ppTail = &p->pNextLoop; + WhereLoop *pToDel; + while( *ppTail ){ + ppTail = whereLoopFindLesser(ppTail, pTemplate); + if( ppTail==0 ) break; + pToDel = *ppTail; + if( pToDel==0 ) break; + *ppTail = pToDel->pNextLoop; +#if WHERETRACE_ENABLED /* 0x8 */ + if( sqlite3WhereTrace & 0x8 ){ + sqlite3DebugPrintf("ins-del: "); + whereLoopPrint(pToDel, pBuilder->pWC); + } +#endif + whereLoopDelete(db, pToDel); + } } whereLoopXfer(db, p, pTemplate); - p->pNextLoop = pNext; - *ppPrev = p; if( (p->wsFlags & WHERE_VIRTUALTABLE)==0 ){ Index *pIndex = p->u.btree.pIndex; if( pIndex && pIndex->tnum==0 ){ @@ -113235,16 +115090,6 @@ static int whereLoopInsert(WhereLoopBuilder *pBuilder, WhereLoop *pTemplate){ } } return SQLITE_OK; - - /* Jump here if the insert is a no-op */ -whereLoopInsert_noop: -#if WHERETRACE_ENABLED /* 0x8 */ - if( sqlite3WhereTrace & 0x8 ){ - sqlite3DebugPrintf("ins-noop: "); - whereLoopPrint(pTemplate, pBuilder->pWC); - } -#endif - return SQLITE_OK; } /* @@ -113274,13 +115119,30 @@ static void whereLoopOutputAdjust(WhereClause *pWC, WhereLoop *pLoop){ if( pX==pTerm ) break; if( pX->iParent>=0 && (&pWC->a[pX->iParent])==pTerm ) break; } - if( j<0 ) pLoop->nOut += pTerm->truthProb; + if( j<0 ){ + pLoop->nOut += (pTerm->truthProb<=0 ? pTerm->truthProb : -1); + } } } /* -** We have so far matched pBuilder->pNew->u.btree.nEq terms of the index pIndex. -** Try to match one more. +** Adjust the cost C by the costMult facter T. This only occurs if +** compiled with -DSQLITE_ENABLE_COSTMULT +*/ +#ifdef SQLITE_ENABLE_COSTMULT +# define ApplyCostMultiplier(C,T) C += T +#else +# define ApplyCostMultiplier(C,T) +#endif + +/* +** We have so far matched pBuilder->pNew->u.btree.nEq terms of the +** index pIndex. Try to match one more. +** +** When this function is called, pBuilder->pNew->nOut contains the +** number of rows expected to be visited by filtering using the nEq +** terms only. If it is modified, this value is restored before this +** function returns. ** ** If pProbe->tnum==0, that means pIndex is a fake index used for the ** INTEGER PRIMARY KEY. @@ -113306,7 +115168,6 @@ static int whereLoopAddBtreeIndex( LogEst saved_nOut; /* Original value of pNew->nOut */ int iCol; /* Index of the column in the table */ int rc = SQLITE_OK; /* Return code */ - LogEst nRowEst; /* Estimated index selectivity */ LogEst rLogSize; /* Logarithm of table size */ WhereTerm *pTop = 0, *pBtm = 0; /* Top and bottom range constraints */ @@ -113324,15 +115185,9 @@ static int whereLoopAddBtreeIndex( } if( pProbe->bUnordered ) opMask &= ~(WO_GT|WO_GE|WO_LT|WO_LE); - assert( pNew->u.btree.nEq<=pProbe->nKeyCol ); - if( pNew->u.btree.nEq < pProbe->nKeyCol ){ - iCol = pProbe->aiColumn[pNew->u.btree.nEq]; - nRowEst = sqlite3LogEst(pProbe->aiRowEst[pNew->u.btree.nEq+1]); - if( nRowEst==0 && pProbe->onError==OE_None ) nRowEst = 1; - }else{ - iCol = -1; - nRowEst = 0; - } + assert( pNew->u.btree.nEqnColumn ); + iCol = pProbe->aiColumn[pNew->u.btree.nEq]; + pTerm = whereScanInit(&scan, pBuilder->pWC, pSrc->iCursor, iCol, opMask, pProbe); saved_nEq = pNew->u.btree.nEq; @@ -113342,18 +115197,23 @@ static int whereLoopAddBtreeIndex( saved_prereq = pNew->prereq; saved_nOut = pNew->nOut; pNew->rSetup = 0; - rLogSize = estLog(sqlite3LogEst(pProbe->aiRowEst[0])); + rLogSize = estLog(pProbe->aiRowLogEst[0]); /* Consider using a skip-scan if there are no WHERE clause constraints ** available for the left-most terms of the index, and if the average - ** number of repeats in the left-most terms is at least 18. The magic - ** number 18 was found by experimentation to be the payoff point where - ** skip-scan become faster than a full-scan. - */ + ** number of repeats in the left-most terms is at least 18. + ** + ** The magic number 18 is selected on the basis that scanning 17 rows + ** is almost always quicker than an index seek (even though if the index + ** contains fewer than 2^17 rows we assume otherwise in other parts of + ** the code). And, even if it is not, it should not be too much slower. + ** On the other hand, the extra seeks could end up being significantly + ** more expensive. */ + assert( 42==sqlite3LogEst(18) ); if( pTerm==0 && saved_nEq==saved_nSkip && saved_nEq+1nKeyCol - && pProbe->aiRowEst[saved_nEq+1]>=18 /* TUNING: Minimum for skip-scan */ + && pProbe->aiRowLogEst[saved_nEq+1]>=42 /* TUNING: Minimum for skip-scan */ && (rc = whereLoopResize(db, pNew, pNew->nLTerm+1))==SQLITE_OK ){ LogEst nIter; @@ -113361,34 +115221,40 @@ static int whereLoopAddBtreeIndex( pNew->u.btree.nSkip++; pNew->aLTerm[pNew->nLTerm++] = 0; pNew->wsFlags |= WHERE_SKIPSCAN; - nIter = sqlite3LogEst(pProbe->aiRowEst[0]/pProbe->aiRowEst[saved_nEq+1]); - pNew->rRun = rLogSize + nIter; - pNew->nOut += nIter; - whereLoopAddBtreeIndex(pBuilder, pSrc, pProbe, nIter); + nIter = pProbe->aiRowLogEst[saved_nEq] - pProbe->aiRowLogEst[saved_nEq+1]; + pNew->nOut -= nIter; + whereLoopAddBtreeIndex(pBuilder, pSrc, pProbe, nIter + nInMul); pNew->nOut = saved_nOut; } for(; rc==SQLITE_OK && pTerm!=0; pTerm = whereScanNext(&scan)){ + u16 eOp = pTerm->eOperator; /* Shorthand for pTerm->eOperator */ + LogEst rCostIdx; + LogEst nOutUnadjusted; /* nOut before IN() and WHERE adjustments */ int nIn = 0; #ifdef SQLITE_ENABLE_STAT3_OR_STAT4 int nRecValid = pBuilder->nRecValid; #endif - if( (pTerm->eOperator==WO_ISNULL || (pTerm->wtFlags&TERM_VNULL)!=0) + if( (eOp==WO_ISNULL || (pTerm->wtFlags&TERM_VNULL)!=0) && (iCol<0 || pSrc->pTab->aCol[iCol].notNull) ){ continue; /* ignore IS [NOT] NULL constraints on NOT NULL columns */ } if( pTerm->prereqRight & pNew->maskSelf ) continue; - assert( pNew->nOut==saved_nOut ); - pNew->wsFlags = saved_wsFlags; pNew->u.btree.nEq = saved_nEq; pNew->nLTerm = saved_nLTerm; if( whereLoopResize(db, pNew, pNew->nLTerm+1) ) break; /* OOM */ pNew->aLTerm[pNew->nLTerm++] = pTerm; pNew->prereq = (saved_prereq | pTerm->prereqRight) & ~pNew->maskSelf; - pNew->rRun = rLogSize; /* Baseline cost is log2(N). Adjustments below */ - if( pTerm->eOperator & WO_IN ){ + + assert( nInMul==0 + || (pNew->wsFlags & WHERE_COLUMN_NULL)!=0 + || (pNew->wsFlags & WHERE_COLUMN_IN)!=0 + || (pNew->wsFlags & WHERE_SKIPSCAN)!=0 + ); + + if( eOp & WO_IN ){ Expr *pExpr = pTerm->pExpr; pNew->wsFlags |= WHERE_COLUMN_IN; if( ExprHasProperty(pExpr, EP_xIsSelect) ){ @@ -113398,85 +115264,120 @@ static int whereLoopAddBtreeIndex( /* "x IN (value, value, ...)" */ nIn = sqlite3LogEst(pExpr->x.pList->nExpr); } - pNew->rRun += nIn; - pNew->u.btree.nEq++; - pNew->nOut = nRowEst + nInMul + nIn; - }else if( pTerm->eOperator & (WO_EQ) ){ - assert( - (pNew->wsFlags & (WHERE_COLUMN_NULL|WHERE_COLUMN_IN|WHERE_SKIPSCAN))!=0 - || nInMul==0 - ); + assert( nIn>0 ); /* RHS always has 2 or more terms... The parser + ** changes "x IN (?)" into "x=?". */ + + }else if( eOp & (WO_EQ) ){ pNew->wsFlags |= WHERE_COLUMN_EQ; - if( iCol<0 || (nInMul==0 && pNew->u.btree.nEq==pProbe->nKeyCol-1)){ - assert( (pNew->wsFlags & WHERE_COLUMN_IN)==0 || iCol<0 ); - if( iCol>=0 && pProbe->onError==OE_None ){ + if( iCol<0 || (nInMul==0 && pNew->u.btree.nEq==pProbe->nKeyCol-1) ){ + if( iCol>=0 && !IsUniqueIndex(pProbe) ){ pNew->wsFlags |= WHERE_UNQ_WANTED; }else{ pNew->wsFlags |= WHERE_ONEROW; } } - pNew->u.btree.nEq++; - pNew->nOut = nRowEst + nInMul; - }else if( pTerm->eOperator & (WO_ISNULL) ){ + }else if( eOp & WO_ISNULL ){ pNew->wsFlags |= WHERE_COLUMN_NULL; - pNew->u.btree.nEq++; - /* TUNING: IS NULL selects 2 rows */ - nIn = 10; assert( 10==sqlite3LogEst(2) ); - pNew->nOut = nRowEst + nInMul + nIn; - }else if( pTerm->eOperator & (WO_GT|WO_GE) ){ - testcase( pTerm->eOperator & WO_GT ); - testcase( pTerm->eOperator & WO_GE ); + }else if( eOp & (WO_GT|WO_GE) ){ + testcase( eOp & WO_GT ); + testcase( eOp & WO_GE ); pNew->wsFlags |= WHERE_COLUMN_RANGE|WHERE_BTM_LIMIT; pBtm = pTerm; pTop = 0; }else{ - assert( pTerm->eOperator & (WO_LT|WO_LE) ); - testcase( pTerm->eOperator & WO_LT ); - testcase( pTerm->eOperator & WO_LE ); + assert( eOp & (WO_LT|WO_LE) ); + testcase( eOp & WO_LT ); + testcase( eOp & WO_LE ); pNew->wsFlags |= WHERE_COLUMN_RANGE|WHERE_TOP_LIMIT; pTop = pTerm; pBtm = (pNew->wsFlags & WHERE_BTM_LIMIT)!=0 ? pNew->aLTerm[pNew->nLTerm-2] : 0; } + + /* At this point pNew->nOut is set to the number of rows expected to + ** be visited by the index scan before considering term pTerm, or the + ** values of nIn and nInMul. In other words, assuming that all + ** "x IN(...)" terms are replaced with "x = ?". This block updates + ** the value of pNew->nOut to account for pTerm (but not nIn/nInMul). */ + assert( pNew->nOut==saved_nOut ); if( pNew->wsFlags & WHERE_COLUMN_RANGE ){ - /* Adjust nOut and rRun for STAT3 range values */ - assert( pNew->nOut==saved_nOut ); + /* Adjust nOut using stat3/stat4 data. Or, if there is no stat3/stat4 + ** data, using some other estimate. */ whereRangeScanEst(pParse, pBuilder, pBtm, pTop, pNew); - } + }else{ + int nEq = ++pNew->u.btree.nEq; + assert( eOp & (WO_ISNULL|WO_EQ|WO_IN) ); + + assert( pNew->nOut==saved_nOut ); + if( pTerm->truthProb<=0 && iCol>=0 ){ + assert( (eOp & WO_IN) || nIn==0 ); + testcase( eOp & WO_IN ); + pNew->nOut += pTerm->truthProb; + pNew->nOut -= nIn; + }else{ #ifdef SQLITE_ENABLE_STAT3_OR_STAT4 - if( nInMul==0 - && pProbe->nSample - && pNew->u.btree.nEq<=pProbe->nSampleCol - && OptimizationEnabled(db, SQLITE_Stat3) - ){ - Expr *pExpr = pTerm->pExpr; - tRowcnt nOut = 0; - if( (pTerm->eOperator & (WO_EQ|WO_ISNULL))!=0 ){ - testcase( pTerm->eOperator & WO_EQ ); - testcase( pTerm->eOperator & WO_ISNULL ); - rc = whereEqualScanEst(pParse, pBuilder, pExpr->pRight, &nOut); - }else if( (pTerm->eOperator & WO_IN) - && !ExprHasProperty(pExpr, EP_xIsSelect) ){ - rc = whereInScanEst(pParse, pBuilder, pExpr->x.pList, &nOut); - } - assert( nOut==0 || rc==SQLITE_OK ); - if( nOut ){ - pNew->nOut = sqlite3LogEst(nOut); - if( pNew->nOut>saved_nOut ) pNew->nOut = saved_nOut; - } - } + tRowcnt nOut = 0; + if( nInMul==0 + && pProbe->nSample + && pNew->u.btree.nEq<=pProbe->nSampleCol + && OptimizationEnabled(db, SQLITE_Stat3) + && ((eOp & WO_IN)==0 || !ExprHasProperty(pTerm->pExpr, EP_xIsSelect)) + ){ + Expr *pExpr = pTerm->pExpr; + if( (eOp & (WO_EQ|WO_ISNULL))!=0 ){ + testcase( eOp & WO_EQ ); + testcase( eOp & WO_ISNULL ); + rc = whereEqualScanEst(pParse, pBuilder, pExpr->pRight, &nOut); + }else{ + rc = whereInScanEst(pParse, pBuilder, pExpr->x.pList, &nOut); + } + if( rc==SQLITE_NOTFOUND ) rc = SQLITE_OK; + if( rc!=SQLITE_OK ) break; /* Jump out of the pTerm loop */ + if( nOut ){ + pNew->nOut = sqlite3LogEst(nOut); + if( pNew->nOut>saved_nOut ) pNew->nOut = saved_nOut; + pNew->nOut -= nIn; + } + } + if( nOut==0 ) #endif - if( (pNew->wsFlags & (WHERE_IDX_ONLY|WHERE_IPK))==0 ){ - /* Each row involves a step of the index, then a binary search of - ** the main table */ - pNew->rRun = sqlite3LogEstAdd(pNew->rRun,rLogSize>27 ? rLogSize-17 : 10); + { + pNew->nOut += (pProbe->aiRowLogEst[nEq] - pProbe->aiRowLogEst[nEq-1]); + if( eOp & WO_ISNULL ){ + /* TUNING: If there is no likelihood() value, assume that a + ** "col IS NULL" expression matches twice as many rows + ** as (col=?). */ + pNew->nOut += 10; + } + } + } } - /* Step cost for each output row */ - pNew->rRun = sqlite3LogEstAdd(pNew->rRun, pNew->nOut); + + /* Set rCostIdx to the cost of visiting selected rows in index. Add + ** it to pNew->rRun, which is currently set to the cost of the index + ** seek only. Then, if this is a non-covering index, add the cost of + ** visiting the rows in the main table. */ + rCostIdx = pNew->nOut + 1 + (15*pProbe->szIdxRow)/pSrc->pTab->szTabRow; + pNew->rRun = sqlite3LogEstAdd(rLogSize, rCostIdx); + if( (pNew->wsFlags & (WHERE_IDX_ONLY|WHERE_IPK))==0 ){ + pNew->rRun = sqlite3LogEstAdd(pNew->rRun, pNew->nOut + 16); + } + ApplyCostMultiplier(pNew->rRun, pProbe->pTable->costMult); + + nOutUnadjusted = pNew->nOut; + pNew->rRun += nInMul + nIn; + pNew->nOut += nInMul + nIn; whereLoopOutputAdjust(pBuilder->pWC, pNew); rc = whereLoopInsert(pBuilder, pNew); + + if( pNew->wsFlags & WHERE_COLUMN_RANGE ){ + pNew->nOut = saved_nOut; + }else{ + pNew->nOut = nOutUnadjusted; + } + if( (pNew->wsFlags & WHERE_TOP_LIMIT)==0 - && pNew->u.btree.nEq<(pProbe->nKeyCol + (pProbe->zName!=0)) + && pNew->u.btree.nEqnColumn ){ whereLoopAddBtreeIndex(pBuilder, pSrc, pProbe, nInMul+nIn); } @@ -113558,6 +115459,37 @@ static int whereUsablePartialIndex(int iTab, WhereClause *pWC, Expr *pWhere){ ** Add all WhereLoop objects for a single table of the join where the table ** is idenfied by pBuilder->pNew->iTab. That table is guaranteed to be ** a b-tree table, not a virtual table. +** +** The costs (WhereLoop.rRun) of the b-tree loops added by this function +** are calculated as follows: +** +** For a full scan, assuming the table (or index) contains nRow rows: +** +** cost = nRow * 3.0 // full-table scan +** cost = nRow * K // scan of covering index +** cost = nRow * (K+3.0) // scan of non-covering index +** +** where K is a value between 1.1 and 3.0 set based on the relative +** estimated average size of the index and table records. +** +** For an index scan, where nVisit is the number of index rows visited +** by the scan, and nSeek is the number of seek operations required on +** the index b-tree: +** +** cost = nSeek * (log(nRow) + K * nVisit) // covering index +** cost = nSeek * (log(nRow) + (K+3.0) * nVisit) // non-covering index +** +** Normally, nSeek is 1. nSeek values greater than 1 come about if the +** WHERE clause includes "x IN (....)" terms used in place of "x=?". Or when +** implicit "x IN (SELECT x FROM tbl)" terms are added for skip-scans. +** +** The estimated values (nRow, nVisit, nSeek) often contain a large amount +** of uncertainty. For this reason, scoring is designed to pick plans that +** "do the least harm" if the estimates are inaccurate. For example, a +** log(nRow) factor is omitted from a non-covering index scan in order to +** bias the scoring in favor of using an index, since the worst-case +** performance of using an index is far better than the worst-case performance +** of a full table scan. */ static int whereLoopAddBtree( WhereLoopBuilder *pBuilder, /* WHERE clause information */ @@ -113566,7 +115498,7 @@ static int whereLoopAddBtree( WhereInfo *pWInfo; /* WHERE analysis context */ Index *pProbe; /* An index we are evaluating */ Index sPk; /* A fake index object for the primary key */ - tRowcnt aiRowEstPk[2]; /* The aiRowEst[] value for the sPk index */ + LogEst aiRowEstPk[2]; /* The aiRowLogEst[] value for the sPk index */ i16 aiColumnPk = -1; /* The aColumn[] value for the sPk index */ SrcList *pTabList; /* The FROM clause */ struct SrcList_item *pSrc; /* The FROM clause btree term to add */ @@ -113600,12 +115532,14 @@ static int whereLoopAddBtree( Index *pFirst; /* First of real indices on the table */ memset(&sPk, 0, sizeof(Index)); sPk.nKeyCol = 1; + sPk.nColumn = 1; sPk.aiColumn = &aiColumnPk; - sPk.aiRowEst = aiRowEstPk; + sPk.aiRowLogEst = aiRowEstPk; sPk.onError = OE_Replace; sPk.pTable = pTab; - aiRowEstPk[0] = pTab->nRowEst; - aiRowEstPk[1] = 1; + sPk.szIdxRow = pTab->szTabRow; + aiRowEstPk[0] = pTab->nRowLogEst; + aiRowEstPk[1] = 0; pFirst = pSrc->pTab->pIndex; if( pSrc->notIndexed==0 ){ /* The real indices of the table are only considered if the @@ -113614,7 +115548,7 @@ static int whereLoopAddBtree( } pProbe = &sPk; } - rSize = sqlite3LogEst(pTab->nRowEst); + rSize = pTab->nRowLogEst; rLogSize = estLog(rSize); #ifndef SQLITE_OMIT_AUTOMATIC_INDEX @@ -113643,6 +115577,7 @@ static int whereLoopAddBtree( ** approximately 7*N*log2(N) where N is the number of rows in ** the table being indexed. */ pNew->rSetup = rLogSize + rSize + 28; assert( 28==sqlite3LogEst(7) ); + ApplyCostMultiplier(pNew->rSetup, pTab->costMult); /* TUNING: Each index lookup yields 20 rows in the table. This ** is more than the usual guess of 10 rows, since we have no way ** of knowning how selective the index will ultimately be. It would @@ -113664,6 +115599,7 @@ static int whereLoopAddBtree( && !whereUsablePartialIndex(pNew->iTab, pWC, pProbe->pPartIdxWhere) ){ continue; /* Partial index inappropriate for this query */ } + rSize = pProbe->aiRowLogEst[0]; pNew->u.btree.nEq = 0; pNew->u.btree.nSkip = 0; pNew->nLTerm = 0; @@ -113681,10 +115617,9 @@ static int whereLoopAddBtree( /* Full table scan */ pNew->iSortIdx = b ? iSortIdx : 0; - /* TUNING: Cost of full table scan is 3*(N + log2(N)). - ** + The extra 3 factor is to encourage the use of indexed lookups - ** over full scans. FIXME */ - pNew->rRun = sqlite3LogEstAdd(rSize,rLogSize) + 16; + /* TUNING: Cost of full table scan is (N*3.0). */ + pNew->rRun = rSize + 16; + ApplyCostMultiplier(pNew->rRun, pTab->costMult); whereLoopOutputAdjust(pWC, pNew); rc = whereLoopInsert(pBuilder, pNew); pNew->nOut = rSize; @@ -113711,19 +115646,16 @@ static int whereLoopAddBtree( ) ){ pNew->iSortIdx = b ? iSortIdx : 0; - if( m==0 ){ - /* TUNING: Cost of a covering index scan is K*(N + log2(N)). - ** + The extra factor K of between 1.1 and 3.0 that depends - ** on the relative sizes of the table and the index. K - ** is smaller for smaller indices, thus favoring them. - */ - pNew->rRun = sqlite3LogEstAdd(rSize,rLogSize) + 1 + - (15*pProbe->szIdxRow)/pTab->szTabRow; - }else{ - /* TUNING: Cost of scanning a non-covering index is (N+1)*log2(N) - ** which we will simplify to just N*log2(N) */ - pNew->rRun = rSize + rLogSize; + + /* The cost of visiting the index rows is N*K, where K is + ** between 1.1 and 3.0, depending on the relative sizes of the + ** index and table rows. If this is a non-covering index scan, + ** also add the cost of visiting table rows (N*3.0). */ + pNew->rRun = rSize + 1 + (15*pProbe->szIdxRow)/pTab->szTabRow; + if( m!=0 ){ + pNew->rRun = sqlite3LogEstAdd(pNew->rRun, rSize+16); } + ApplyCostMultiplier(pNew->rRun, pTab->costMult); whereLoopOutputAdjust(pWC, pNew); rc = whereLoopInsert(pBuilder, pNew); pNew->nOut = rSize; @@ -113894,8 +115826,8 @@ static int whereLoopAddVirtual( pNew->u.vtab.needFree = pIdxInfo->needToFreeIdxStr; pIdxInfo->needToFreeIdxStr = 0; pNew->u.vtab.idxStr = pIdxInfo->idxStr; - pNew->u.vtab.isOrdered = (u8)((pIdxInfo->nOrderBy!=0) - && pIdxInfo->orderByConsumed); + pNew->u.vtab.isOrdered = (i8)(pIdxInfo->orderByConsumed ? + pIdxInfo->nOrderBy : 0); pNew->rSetup = 0; pNew->rRun = sqlite3LogEstFromDouble(pIdxInfo->estimatedCost); pNew->nOut = sqlite3LogEst(pIdxInfo->estimatedRows); @@ -113927,7 +115859,7 @@ static int whereLoopAddOr(WhereLoopBuilder *pBuilder, Bitmask mExtra){ int iCur; WhereClause tempWC; WhereLoopBuilder sSubBuild; - WhereOrSet sSum, sCur, sPrev; + WhereOrSet sSum, sCur; struct SrcList_item *pItem; pWC = pBuilder->pWC; @@ -113936,7 +115868,6 @@ static int whereLoopAddOr(WhereLoopBuilder *pBuilder, Bitmask mExtra){ pNew = pBuilder->pNew; memset(&sSum, 0, sizeof(sSum)); pItem = pWInfo->pTabList->a + pNew->iTab; - if( !HasRowid(pItem->pTab) ) return SQLITE_OK; iCur = pItem->iCursor; for(pTerm=pWC->a; pTermiSortIdx = 0; memset(&pNew->u, 0, sizeof(pNew->u)); for(i=0; rc==SQLITE_OK && irRun = sSum.a[i].rRun + 18; + /* TUNING: Currently sSum.a[i].rRun is set to the sum of the costs + ** of all sub-scans required by the OR-scan. However, due to rounding + ** errors, it may be that the cost of the OR-scan is equal to its + ** most expensive sub-scan. Add the smallest possible penalty + ** (equivalent to multiplying the cost by 1.07) to ensure that + ** this does not happen. Otherwise, for WHERE clauses such as the + ** following where there is an index on "y": + ** + ** WHERE likelihood(x=?, 0.99) OR y=? + ** + ** the planner may elect to "OR" together a full-table scan and an + ** index lookup. And other similarly odd results. */ + pNew->rRun = sSum.a[i].rRun + 1; pNew->nOut = sSum.a[i].nOut; pNew->prereq = sSum.a[i].prereq; rc = whereLoopInsert(pBuilder, pNew); @@ -114056,21 +115999,21 @@ static int whereLoopAddAll(WhereLoopBuilder *pBuilder){ /* ** Examine a WherePath (with the addition of the extra WhereLoop of the 5th ** parameters) to see if it outputs rows in the requested ORDER BY -** (or GROUP BY) without requiring a separate sort operation. Return: +** (or GROUP BY) without requiring a separate sort operation. Return N: ** -** 0: ORDER BY is not satisfied. Sorting required -** 1: ORDER BY is satisfied. Omit sorting -** -1: Unknown at this time +** N>0: N terms of the ORDER BY clause are satisfied +** N==0: No terms of the ORDER BY clause are satisfied +** N<0: Unknown yet how many terms of ORDER BY might be satisfied. ** ** Note that processing for WHERE_GROUPBY and WHERE_DISTINCTBY is not as ** strict. With GROUP BY and DISTINCT the only requirement is that ** equivalent rows appear immediately adjacent to one another. GROUP BY -** and DISTINT do not require rows to appear in any particular order as long +** and DISTINCT do not require rows to appear in any particular order as long ** as equivelent rows are grouped together. Thus for GROUP BY and DISTINCT ** the pOrderBy terms can be matched in any order. With ORDER BY, the ** pOrderBy terms must be matched in strict left-to-right order. */ -static int wherePathSatisfiesOrderBy( +static i8 wherePathSatisfiesOrderBy( WhereInfo *pWInfo, /* The WHERE clause */ ExprList *pOrderBy, /* ORDER BY or GROUP BY or DISTINCT clause to check */ WherePath *pPath, /* The WherePath to check */ @@ -114126,14 +116069,6 @@ static int wherePathSatisfiesOrderBy( */ assert( pOrderBy!=0 ); - - /* Sortability of virtual tables is determined by the xBestIndex method - ** of the virtual table itself */ - if( pLast->wsFlags & WHERE_VIRTUALTABLE ){ - testcase( nLoop>0 ); /* True when outer loops are one-row and match - ** no ORDER BY terms */ - return pLast->u.vtab.isOrdered; - } if( nLoop && OptimizationDisabled(db, SQLITE_OrderByIdxJoin) ) return 0; nOrderBy = pOrderBy->nExpr; @@ -114146,7 +116081,10 @@ static int wherePathSatisfiesOrderBy( for(iLoop=0; isOrderDistinct && obSat0 ) ready |= pLoop->maskSelf; pLoop = iLoopaLoop[iLoop] : pLast; - assert( (pLoop->wsFlags & WHERE_VIRTUALTABLE)==0 ); + if( pLoop->wsFlags & WHERE_VIRTUALTABLE ){ + if( pLoop->u.vtab.isOrdered ) obSat = obDone; + break; + } iCur = pWInfo->pTabList->a[pLoop->iTab].iCursor; /* Mark off any ORDER BY term X that is a column in the table of @@ -114187,7 +116125,7 @@ static int wherePathSatisfiesOrderBy( nColumn = pIndex->nColumn; assert( nColumn==nKeyCol+1 || !HasRowid(pIndex->pTable) ); assert( pIndex->aiColumn[nColumn-1]==(-1) || !HasRowid(pIndex->pTable)); - isOrderDistinct = pIndex->onError!=OE_None; + isOrderDistinct = IsUniqueIndex(pIndex); } /* Loop through all columns of the index and deal with the ones @@ -114234,7 +116172,7 @@ static int wherePathSatisfiesOrderBy( } /* Find the ORDER BY term that corresponds to the j-th column - ** of the index and and mark that ORDER BY term off + ** of the index and mark that ORDER BY term off */ bOnce = 1; isMatch = 0; @@ -114255,23 +116193,23 @@ static int wherePathSatisfiesOrderBy( isMatch = 1; break; } + if( isMatch && (pWInfo->wctrlFlags & WHERE_GROUPBY)==0 ){ + /* Make sure the sort order is compatible in an ORDER BY clause. + ** Sort order is irrelevant for a GROUP BY clause. */ + if( revSet ){ + if( (rev ^ revIdx)!=pOrderBy->a[i].sortOrder ) isMatch = 0; + }else{ + rev = revIdx ^ pOrderBy->a[i].sortOrder; + if( rev ) *pRevMask |= MASKBIT(iLoop); + revSet = 1; + } + } if( isMatch ){ if( iColumn<0 ){ testcase( distinctColumns==0 ); distinctColumns = 1; } obSat |= MASKBIT(i); - if( (pWInfo->wctrlFlags & WHERE_GROUPBY)==0 ){ - /* Make sure the sort order is compatible in an ORDER BY clause. - ** Sort order is irrelevant for a GROUP BY clause. */ - if( revSet ){ - if( (rev ^ revIdx)!=pOrderBy->a[i].sortOrder ) return 0; - }else{ - rev = revIdx ^ pOrderBy->a[i].sortOrder; - if( rev ) *pRevMask |= MASKBIT(iLoop); - revSet = 1; - } - } }else{ /* No match found */ if( j==0 || j0; i--){ + Bitmask m = MASKBIT(i) - 1; + if( (obSat&m)==m ) return i; + } + return 0; + } return -1; } + +/* +** If the WHERE_GROUPBY flag is set in the mask passed to sqlite3WhereBegin(), +** the planner assumes that the specified pOrderBy list is actually a GROUP +** BY clause - and so any order that groups rows as required satisfies the +** request. +** +** Normally, in this case it is not possible for the caller to determine +** whether or not the rows are really being delivered in sorted order, or +** just in some other order that provides the required grouping. However, +** if the WHERE_SORTBYGROUP flag is also passed to sqlite3WhereBegin(), then +** this function may be called on the returned WhereInfo object. It returns +** true if the rows really will be sorted in the specified order, or false +** otherwise. +** +** For example, assuming: +** +** CREATE INDEX i1 ON t1(x, Y); +** +** then +** +** SELECT * FROM t1 GROUP BY x,y ORDER BY x,y; -- IsSorted()==1 +** SELECT * FROM t1 GROUP BY y,x ORDER BY y,x; -- IsSorted()==0 +*/ +SQLITE_PRIVATE int sqlite3WhereIsSorted(WhereInfo *pWInfo){ + assert( pWInfo->wctrlFlags & WHERE_GROUPBY ); + assert( pWInfo->wctrlFlags & WHERE_SORTBYGROUP ); + return pWInfo->sorted; +} + #ifdef WHERETRACE_ENABLED /* For debugging use only: */ static const char *wherePathName(WherePath *pPath, int nLoop, WhereLoop *pLast){ @@ -114320,6 +116294,44 @@ static const char *wherePathName(WherePath *pPath, int nLoop, WhereLoop *pLast){ } #endif +/* +** Return the cost of sorting nRow rows, assuming that the keys have +** nOrderby columns and that the first nSorted columns are already in +** order. +*/ +static LogEst whereSortingCost( + WhereInfo *pWInfo, + LogEst nRow, + int nOrderBy, + int nSorted +){ + /* TUNING: Estimated cost of a full external sort, where N is + ** the number of rows to sort is: + ** + ** cost = (3.0 * N * log(N)). + ** + ** Or, if the order-by clause has X terms but only the last Y + ** terms are out of order, then block-sorting will reduce the + ** sorting cost to: + ** + ** cost = (3.0 * N * log(N)) * (Y/X) + ** + ** The (Y/X) term is implemented using stack variable rScale + ** below. */ + LogEst rScale, rSortCost; + assert( nOrderBy>0 && 66==sqlite3LogEst(100) ); + rScale = sqlite3LogEst((nOrderBy-nSorted)*100/nOrderBy) - 66; + rSortCost = nRow + estLog(nRow) + rScale + 16; + + /* TUNING: The cost of implementing DISTINCT using a B-TREE is + ** similar but with a larger constant of proportionality. + ** Multiply by an additional factor of 3.0. */ + if( pWInfo->wctrlFlags & WHERE_WANT_DISTINCT ){ + rSortCost += 16; + } + + return rSortCost; +} /* ** Given the list of WhereLoop objects at pWInfo->pLoops, this routine @@ -114341,11 +116353,9 @@ static int wherePathSolver(WhereInfo *pWInfo, LogEst nRowEst){ int iLoop; /* Loop counter over the terms of the join */ int ii, jj; /* Loop counters */ int mxI = 0; /* Index of next entry to replace */ - LogEst rCost; /* Cost of a path */ - LogEst nOut; /* Number of outputs */ + int nOrderBy; /* Number of ORDER BY clause terms */ LogEst mxCost = 0; /* Maximum cost of a set of paths */ - LogEst mxOut = 0; /* Maximum nOut value on the set of paths */ - LogEst rSortCost; /* Cost to do a sort */ + LogEst mxUnsorted = 0; /* Maximum unsorted cost of a set of path */ int nTo, nFrom; /* Number of valid entries in aTo[] and aFrom[] */ WherePath *aFrom; /* All nFrom paths at the previous level */ WherePath *aTo; /* The nTo best paths at the current level */ @@ -114353,7 +116363,9 @@ static int wherePathSolver(WhereInfo *pWInfo, LogEst nRowEst){ WherePath *pTo; /* An element of aTo[] that we are working on */ WhereLoop *pWLoop; /* One of the WhereLoop objects */ WhereLoop **pX; /* Used to divy up the pSpace memory */ + LogEst *aSortCost = 0; /* Sorting and partial sorting costs */ char *pSpace; /* Temporary memory used by this routine */ + int nSpace; /* Bytes of space allocated at pSpace */ pParse = pWInfo->pParse; db = pParse->db; @@ -114361,13 +116373,25 @@ static int wherePathSolver(WhereInfo *pWInfo, LogEst nRowEst){ /* TUNING: For simple queries, only the best path is tracked. ** For 2-way joins, the 5 best paths are followed. ** For joins of 3 or more tables, track the 10 best paths */ - mxChoice = (nLoop==1) ? 1 : (nLoop==2 ? 5 : 10); + mxChoice = (nLoop<=1) ? 1 : (nLoop==2 ? 5 : 10); assert( nLoop<=pWInfo->pTabList->nSrc ); - WHERETRACE(0x002, ("---- begin solver\n")); + WHERETRACE(0x002, ("---- begin solver. (nRowEst=%d)\n", nRowEst)); - /* Allocate and initialize space for aTo and aFrom */ - ii = (sizeof(WherePath)+sizeof(WhereLoop*)*nLoop)*mxChoice*2; - pSpace = sqlite3DbMallocRaw(db, ii); + /* If nRowEst is zero and there is an ORDER BY clause, ignore it. In this + ** case the purpose of this call is to estimate the number of rows returned + ** by the overall query. Once this estimate has been obtained, the caller + ** will invoke this function a second time, passing the estimate as the + ** nRowEst parameter. */ + if( pWInfo->pOrderBy==0 || nRowEst==0 ){ + nOrderBy = 0; + }else{ + nOrderBy = pWInfo->pOrderBy->nExpr; + } + + /* Allocate and initialize space for aTo, aFrom and aSortCost[] */ + nSpace = (sizeof(WherePath)+sizeof(WhereLoop*)*nLoop)*mxChoice*2; + nSpace += sizeof(LogEst) * nOrderBy; + pSpace = sqlite3DbMallocRaw(db, nSpace); if( pSpace==0 ) return SQLITE_NOMEM; aTo = (WherePath*)pSpace; aFrom = aTo+mxChoice; @@ -114376,6 +116400,18 @@ static int wherePathSolver(WhereInfo *pWInfo, LogEst nRowEst){ for(ii=mxChoice*2, pFrom=aTo; ii>0; ii--, pFrom++, pX += nLoop){ pFrom->aLoop = pX; } + if( nOrderBy ){ + /* If there is an ORDER BY clause and it is not being ignored, set up + ** space for the aSortCost[] array. Each element of the aSortCost array + ** is either zero - meaning it has not yet been initialized - or the + ** cost of sorting nRowEst rows of data where the first X terms of + ** the ORDER BY clause are already in order, where X is the array + ** index. */ + aSortCost = (LogEst*)pX; + memset(aSortCost, 0, sizeof(LogEst) * nOrderBy); + } + assert( aSortCost==0 || &pSpace[nSpace]==(char*)&aSortCost[nOrderBy] ); + assert( aSortCost!=0 || &pSpace[nSpace]==(char*)pX ); /* Seed the search with a single WherePath containing zero WhereLoops. ** @@ -114384,19 +116420,15 @@ static int wherePathSolver(WhereInfo *pWInfo, LogEst nRowEst){ ** rows, then do not use the automatic index. */ aFrom[0].nRow = MIN(pParse->nQueryLoop, 46); assert( 46==sqlite3LogEst(25) ); nFrom = 1; - - /* Precompute the cost of sorting the final result set, if the caller - ** to sqlite3WhereBegin() was concerned about sorting */ - rSortCost = 0; - if( pWInfo->pOrderBy==0 || nRowEst==0 ){ - aFrom[0].isOrderedValid = 1; - }else{ - /* TUNING: Estimated cost of sorting is 48*N*log2(N) where N is the - ** number of output rows. The 48 is the expected size of a row to sort. - ** FIXME: compute a better estimate of the 48 multiplier based on the - ** result set expressions. */ - rSortCost = nRowEst + estLog(nRowEst); - WHERETRACE(0x002,("---- sort cost=%-3d\n", rSortCost)); + assert( aFrom[0].isOrdered==0 ); + if( nOrderBy ){ + /* If nLoop is zero, then there are no FROM terms in the query. Since + ** in this case the query may return a maximum of one row, the results + ** are already in the requested order. Set isOrdered to nOrderBy to + ** indicate this. Or, if nLoop is greater than zero, set isOrdered to + ** -1, indicating that the result set may or may not be ordered, + ** depending on the loops added to the current plan. */ + aFrom[0].isOrdered = nLoop>0 ? -1 : nOrderBy; } /* Compute successively longer WherePaths using the previous generation @@ -114406,60 +116438,82 @@ static int wherePathSolver(WhereInfo *pWInfo, LogEst nRowEst){ nTo = 0; for(ii=0, pFrom=aFrom; iipLoops; pWLoop; pWLoop=pWLoop->pNextLoop){ - Bitmask maskNew; - Bitmask revMask = 0; - u8 isOrderedValid = pFrom->isOrderedValid; - u8 isOrdered = pFrom->isOrdered; + LogEst nOut; /* Rows visited by (pFrom+pWLoop) */ + LogEst rCost; /* Cost of path (pFrom+pWLoop) */ + LogEst rUnsorted; /* Unsorted cost of (pFrom+pWLoop) */ + i8 isOrdered = pFrom->isOrdered; /* isOrdered for (pFrom+pWLoop) */ + Bitmask maskNew; /* Mask of src visited by (..) */ + Bitmask revMask = 0; /* Mask of rev-order loops for (..) */ + if( (pWLoop->prereq & ~pFrom->maskLoop)!=0 ) continue; if( (pWLoop->maskSelf & pFrom->maskLoop)!=0 ) continue; /* At this point, pWLoop is a candidate to be the next loop. ** Compute its cost */ - rCost = sqlite3LogEstAdd(pWLoop->rSetup,pWLoop->rRun + pFrom->nRow); - rCost = sqlite3LogEstAdd(rCost, pFrom->rCost); + rUnsorted = sqlite3LogEstAdd(pWLoop->rSetup,pWLoop->rRun + pFrom->nRow); + rUnsorted = sqlite3LogEstAdd(rUnsorted, pFrom->rUnsorted); nOut = pFrom->nRow + pWLoop->nOut; maskNew = pFrom->maskLoop | pWLoop->maskSelf; - if( !isOrderedValid ){ - switch( wherePathSatisfiesOrderBy(pWInfo, + if( isOrdered<0 ){ + isOrdered = wherePathSatisfiesOrderBy(pWInfo, pWInfo->pOrderBy, pFrom, pWInfo->wctrlFlags, - iLoop, pWLoop, &revMask) ){ - case 1: /* Yes. pFrom+pWLoop does satisfy the ORDER BY clause */ - isOrdered = 1; - isOrderedValid = 1; - break; - case 0: /* No. pFrom+pWLoop will require a separate sort */ - isOrdered = 0; - isOrderedValid = 1; - rCost = sqlite3LogEstAdd(rCost, rSortCost); - break; - default: /* Cannot tell yet. Try again on the next iteration */ - break; - } + iLoop, pWLoop, &revMask); }else{ revMask = pFrom->revLoop; } - /* Check to see if pWLoop should be added to the mxChoice best so far */ + if( isOrdered>=0 && isOrderedisOrdered^isOrdered)&0x80)==0" is equivalent + ** to (pTo->isOrdered==(-1))==(isOrdered==(-1))" for the range + ** of legal values for isOrdered, -1..64. + */ for(jj=0, pTo=aTo; jjmaskLoop==maskNew - && pTo->isOrderedValid==isOrderedValid - && ((pTo->rCost<=rCost && pTo->nRow<=nOut) || - (pTo->rCost>=rCost && pTo->nRow>=nOut)) + && ((pTo->isOrdered^isOrdered)&0x80)==0 ){ testcase( jj==nTo-1 ); break; } } if( jj>=nTo ){ - if( nTo>=mxChoice && rCost>=mxCost ){ + /* None of the existing best-so-far paths match the candidate. */ + if( nTo>=mxChoice + && (rCost>mxCost || (rCost==mxCost && rUnsorted>=mxUnsorted)) + ){ + /* The current candidate is no better than any of the mxChoice + ** paths currently in the best-so-far buffer. So discard + ** this candidate as not viable. */ #ifdef WHERETRACE_ENABLED /* 0x4 */ if( sqlite3WhereTrace&0x4 ){ sqlite3DebugPrintf("Skip %s cost=%-3d,%3d order=%c\n", wherePathName(pFrom, iLoop, pWLoop), rCost, nOut, - isOrderedValid ? (isOrdered ? 'Y' : 'N') : '?'); + isOrdered>=0 ? isOrdered+'0' : '?'); } #endif continue; } - /* Add a new Path to the aTo[] set */ + /* If we reach this points it means that the new candidate path + ** needs to be added to the set of best-so-far paths. */ if( nTo=0 ? isOrdered+'0' : '?'); } #endif }else{ - if( pTo->rCost<=rCost && pTo->nRow<=nOut ){ + /* Control reaches here if best-so-far path pTo=aTo[jj] covers the + ** same set of loops and has the sam isOrdered setting as the + ** candidate path. Check to see if the candidate should replace + ** pTo or if the candidate should be skipped */ + if( pTo->rCostrCost==rCost && pTo->nRow<=nOut) ){ #ifdef WHERETRACE_ENABLED /* 0x4 */ if( sqlite3WhereTrace&0x4 ){ sqlite3DebugPrintf( "Skip %s cost=%-3d,%3d order=%c", wherePathName(pFrom, iLoop, pWLoop), rCost, nOut, - isOrderedValid ? (isOrdered ? 'Y' : 'N') : '?'); + isOrdered>=0 ? isOrdered+'0' : '?'); sqlite3DebugPrintf(" vs %s cost=%-3d,%d order=%c\n", wherePathName(pTo, iLoop+1, 0), pTo->rCost, pTo->nRow, - pTo->isOrderedValid ? (pTo->isOrdered ? 'Y' : 'N') : '?'); + pTo->isOrdered>=0 ? pTo->isOrdered+'0' : '?'); } #endif + /* Discard the candidate path from further consideration */ testcase( pTo->rCost==rCost ); continue; } testcase( pTo->rCost==rCost+1 ); - /* A new and better score for a previously created equivalent path */ + /* Control reaches here if the candidate path is better than the + ** pTo path. Replace pTo with the candidate. */ #ifdef WHERETRACE_ENABLED /* 0x4 */ if( sqlite3WhereTrace&0x4 ){ sqlite3DebugPrintf( "Update %s cost=%-3d,%3d order=%c", wherePathName(pFrom, iLoop, pWLoop), rCost, nOut, - isOrderedValid ? (isOrdered ? 'Y' : 'N') : '?'); + isOrdered>=0 ? isOrdered+'0' : '?'); sqlite3DebugPrintf(" was %s cost=%-3d,%3d order=%c\n", wherePathName(pTo, iLoop+1, 0), pTo->rCost, pTo->nRow, - pTo->isOrderedValid ? (pTo->isOrdered ? 'Y' : 'N') : '?'); + pTo->isOrdered>=0 ? pTo->isOrdered+'0' : '?'); } #endif } @@ -114510,18 +116570,20 @@ static int wherePathSolver(WhereInfo *pWInfo, LogEst nRowEst){ pTo->revLoop = revMask; pTo->nRow = nOut; pTo->rCost = rCost; - pTo->isOrderedValid = isOrderedValid; + pTo->rUnsorted = rUnsorted; pTo->isOrdered = isOrdered; memcpy(pTo->aLoop, pFrom->aLoop, sizeof(WhereLoop*)*iLoop); pTo->aLoop[iLoop] = pWLoop; if( nTo>=mxChoice ){ mxI = 0; mxCost = aTo[0].rCost; - mxOut = aTo[0].nRow; + mxUnsorted = aTo[0].nRow; for(jj=1, pTo=&aTo[1]; jjrCost>mxCost || (pTo->rCost==mxCost && pTo->nRow>mxOut) ){ + if( pTo->rCost>mxCost + || (pTo->rCost==mxCost && pTo->rUnsorted>mxUnsorted) + ){ mxCost = pTo->rCost; - mxOut = pTo->nRow; + mxUnsorted = pTo->rUnsorted; mxI = jj; } } @@ -114535,8 +116597,8 @@ static int wherePathSolver(WhereInfo *pWInfo, LogEst nRowEst){ for(ii=0, pTo=aTo; iirCost, pTo->nRow, - pTo->isOrderedValid ? (pTo->isOrdered ? 'Y' : 'N') : '?'); - if( pTo->isOrderedValid && pTo->isOrdered ){ + pTo->isOrdered>=0 ? (pTo->isOrdered+'0') : '?'); + if( pTo->isOrdered>0 ){ sqlite3DebugPrintf(" rev=0x%llx\n", pTo->revLoop); }else{ sqlite3DebugPrintf("\n"); @@ -114579,16 +116641,33 @@ static int wherePathSolver(WhereInfo *pWInfo, LogEst nRowEst){ Bitmask notUsed; int rc = wherePathSatisfiesOrderBy(pWInfo, pWInfo->pResultSet, pFrom, WHERE_DISTINCTBY, nLoop-1, pFrom->aLoop[nLoop-1], ¬Used); - if( rc==1 ) pWInfo->eDistinct = WHERE_DISTINCT_ORDERED; - } - if( pFrom->isOrdered ){ - if( pWInfo->wctrlFlags & WHERE_DISTINCTBY ){ + if( rc==pWInfo->pResultSet->nExpr ){ pWInfo->eDistinct = WHERE_DISTINCT_ORDERED; - }else{ - pWInfo->bOBSat = 1; - pWInfo->revMask = pFrom->revLoop; } } + if( pWInfo->pOrderBy ){ + if( pWInfo->wctrlFlags & WHERE_DISTINCTBY ){ + if( pFrom->isOrdered==pWInfo->pOrderBy->nExpr ){ + pWInfo->eDistinct = WHERE_DISTINCT_ORDERED; + } + }else{ + pWInfo->nOBSat = pFrom->isOrdered; + if( pWInfo->nOBSat<0 ) pWInfo->nOBSat = 0; + pWInfo->revMask = pFrom->revLoop; + } + if( (pWInfo->wctrlFlags & WHERE_SORTBYGROUP) + && pWInfo->nOBSat==pWInfo->pOrderBy->nExpr + ){ + Bitmask notUsed = 0; + int nOrder = wherePathSatisfiesOrderBy(pWInfo, pWInfo->pOrderBy, + pFrom, 0, nLoop-1, pFrom->aLoop[nLoop-1], ¬Used + ); + assert( pWInfo->sorted==0 ); + pWInfo->sorted = (nOrder==pWInfo->pOrderBy->nExpr); + } + } + + pWInfo->nRowOut = pFrom->nRow; /* Free temporary memory and return success */ @@ -114642,7 +116721,7 @@ static int whereShortCut(WhereLoopBuilder *pBuilder){ for(pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext){ assert( pLoop->aLTermSpace==pLoop->aLTerm ); assert( ArraySize(pLoop->aLTermSpace)==4 ); - if( pIdx->onError==OE_None + if( !IsUniqueIndex(pIdx) || pIdx->pPartIdxWhere!=0 || pIdx->nKeyCol>ArraySize(pLoop->aLTermSpace) ) continue; @@ -114670,7 +116749,7 @@ static int whereShortCut(WhereLoopBuilder *pBuilder){ pLoop->maskSelf = getMask(&pWInfo->sMaskSet, iCur); pWInfo->a[0].iTabCur = iCur; pWInfo->nRowOut = 1; - if( pWInfo->pOrderBy ) pWInfo->bOBSat = 1; + if( pWInfo->pOrderBy ) pWInfo->nOBSat = pWInfo->pOrderBy->nExpr; if( pWInfo->wctrlFlags & WHERE_WANT_DISTINCT ){ pWInfo->eDistinct = WHERE_DISTINCT_UNIQUE; } @@ -114774,7 +116853,7 @@ SQLITE_PRIVATE WhereInfo *sqlite3WhereBegin( Parse *pParse, /* The parser context */ SrcList *pTabList, /* FROM clause: A list of all tables to be scanned */ Expr *pWhere, /* The WHERE clause */ - ExprList *pOrderBy, /* An ORDER BY clause, or NULL */ + ExprList *pOrderBy, /* An ORDER BY (or GROUP BY) clause, or NULL */ ExprList *pResultSet, /* Result set of the query */ u16 wctrlFlags, /* One of the WHERE_* flags defined in sqliteInt.h */ int iIdxCur /* If WHERE_ONETABLE_ONLY is set, index cursor number */ @@ -114796,6 +116875,10 @@ SQLITE_PRIVATE WhereInfo *sqlite3WhereBegin( /* Variable initialization */ db = pParse->db; memset(&sWLB, 0, sizeof(sWLB)); + + /* An ORDER/GROUP BY clause of more than 63 terms cannot be optimized */ + testcase( pOrderBy && pOrderBy->nExpr==BMS-1 ); + if( pOrderBy && pOrderBy->nExpr>=BMS ) pOrderBy = 0; sWLB.pOrderBy = pOrderBy; /* Disable the DISTINCT optimization if SQLITE_DistinctOpt is set via @@ -114840,7 +116923,7 @@ SQLITE_PRIVATE WhereInfo *sqlite3WhereBegin( pWInfo->pTabList = pTabList; pWInfo->pOrderBy = pOrderBy; pWInfo->pResultSet = pResultSet; - pWInfo->iBreak = sqlite3VdbeMakeLabel(v); + pWInfo->iBreak = pWInfo->iContinue = sqlite3VdbeMakeLabel(v); pWInfo->wctrlFlags = wctrlFlags; pWInfo->savedNQueryLoop = pParse->nQueryLoop; pMaskSet = &pWInfo->sMaskSet; @@ -114874,7 +116957,7 @@ SQLITE_PRIVATE WhereInfo *sqlite3WhereBegin( /* Special case: No FROM clause */ if( nTabList==0 ){ - if( pOrderBy ) pWInfo->bOBSat = 1; + if( pOrderBy ) pWInfo->nOBSat = pOrderBy->nExpr; if( wctrlFlags & WHERE_WANT_DISTINCT ){ pWInfo->eDistinct = WHERE_DISTINCT_UNIQUE; } @@ -114985,8 +117068,8 @@ SQLITE_PRIVATE WhereInfo *sqlite3WhereBegin( if( sqlite3WhereTrace ){ int ii; sqlite3DebugPrintf("---- Solution nRow=%d", pWInfo->nRowOut); - if( pWInfo->bOBSat ){ - sqlite3DebugPrintf(" ORDERBY=0x%llx", pWInfo->revMask); + if( pWInfo->nOBSat>0 ){ + sqlite3DebugPrintf(" ORDERBY=%d,0x%llx", pWInfo->nOBSat, pWInfo->revMask); } switch( pWInfo->eDistinct ){ case WHERE_DISTINCT_UNIQUE: { @@ -115109,7 +117192,14 @@ SQLITE_PRIVATE WhereInfo *sqlite3WhereBegin( int op = OP_OpenRead; /* iIdxCur is always set if to a positive value if ONEPASS is possible */ assert( iIdxCur!=0 || (pWInfo->wctrlFlags & WHERE_ONEPASS_DESIRED)==0 ); - if( pWInfo->okOnePass ){ + if( !HasRowid(pTab) && IsPrimaryKeyIndex(pIx) + && (wctrlFlags & WHERE_ONETABLE_ONLY)!=0 + ){ + /* This is one term of an OR-optimization using the PRIMARY KEY of a + ** WITHOUT ROWID table. No need for a separate index */ + iIndexCur = pLevel->iTabCur; + op = 0; + }else if( pWInfo->okOnePass ){ Index *pJ = pTabItem->pTab->pIndex; iIndexCur = iIdxCur; assert( wctrlFlags & WHERE_ONEPASS_DESIRED ); @@ -115121,15 +117211,18 @@ SQLITE_PRIVATE WhereInfo *sqlite3WhereBegin( pWInfo->aiCurOnePass[1] = iIndexCur; }else if( iIdxCur && (wctrlFlags & WHERE_ONETABLE_ONLY)!=0 ){ iIndexCur = iIdxCur; + if( wctrlFlags & WHERE_REOPEN_IDX ) op = OP_ReopenIdx; }else{ iIndexCur = pParse->nTab++; } pLevel->iIdxCur = iIndexCur; assert( pIx->pSchema==pTab->pSchema ); assert( iIndexCur>=0 ); - sqlite3VdbeAddOp3(v, op, iIndexCur, pIx->tnum, iDb); - sqlite3VdbeSetP4KeyInfo(pParse, pIx); - VdbeComment((v, "%s", pIx->zName)); + if( op ){ + sqlite3VdbeAddOp3(v, op, iIndexCur, pIx->tnum, iDb); + sqlite3VdbeSetP4KeyInfo(pParse, pIx); + VdbeComment((v, "%s", pIx->zName)); + } } if( iDb>=0 ) sqlite3CodeVerifySchema(pParse, iDb); notReady &= ~getMask(&pWInfo->sMaskSet, pTabItem->iCursor); @@ -115268,7 +117361,7 @@ SQLITE_PRIVATE void sqlite3WhereEnd(WhereInfo *pWInfo){ for(; kp1!=pLevel->iTabCur ) continue; if( pOp->opcode==OP_Column ){ - pOp->opcode = OP_SCopy; + pOp->opcode = OP_Copy; pOp->p1 = pOp->p2 + pTabItem->regResult; pOp->p2 = pOp->p3; pOp->p3 = 0; @@ -118216,6 +120309,33 @@ static void yy_reduce( */ yygotominor.yy346.pExpr = sqlite3PExpr(pParse, TK_INTEGER, 0, 0, &sqlite3IntTokens[yymsp[-3].minor.yy328]); sqlite3ExprDelete(pParse->db, yymsp[-4].minor.yy346.pExpr); + }else if( yymsp[-1].minor.yy14->nExpr==1 ){ + /* Expressions of the form: + ** + ** expr1 IN (?1) + ** expr1 NOT IN (?2) + ** + ** with exactly one value on the RHS can be simplified to something + ** like this: + ** + ** expr1 == ?1 + ** expr1 <> ?2 + ** + ** But, the RHS of the == or <> is marked with the EP_Generic flag + ** so that it may not contribute to the computation of comparison + ** affinity or the collating sequence to use for comparison. Otherwise, + ** the semantics would be subtly different from IN or NOT IN. + */ + Expr *pRHS = yymsp[-1].minor.yy14->a[0].pExpr; + yymsp[-1].minor.yy14->a[0].pExpr = 0; + sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy14); + /* pRHS cannot be NULL because a malloc error would have been detected + ** before now and control would have never reached this point */ + if( ALWAYS(pRHS) ){ + pRHS->flags &= ~EP_Collate; + pRHS->flags |= EP_Generic; + } + yygotominor.yy346.pExpr = sqlite3PExpr(pParse, yymsp[-3].minor.yy328 ? TK_NE : TK_EQ, yymsp[-4].minor.yy346.pExpr, pRHS, 0); }else{ yygotominor.yy346.pExpr = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy346.pExpr, 0, 0); if( yygotominor.yy346.pExpr ){ @@ -119416,6 +121536,12 @@ SQLITE_PRIVATE int sqlite3GetToken(const unsigned char *z, int *tokenType){ testcase( z[0]=='6' ); testcase( z[0]=='7' ); testcase( z[0]=='8' ); testcase( z[0]=='9' ); *tokenType = TK_INTEGER; +#ifndef SQLITE_OMIT_HEX_INTEGER + if( z[0]=='0' && (z[1]=='x' || z[1]=='X') && sqlite3Isxdigit(z[2]) ){ + for(i=3; sqlite3Isxdigit(z[i]); i++){} + return i; + } +#endif for(i=0; sqlite3Isdigit(z[i]); i++){} #ifndef SQLITE_OMIT_FLOATING_POINT if( z[i]=='.' ){ @@ -120836,6 +122962,7 @@ static void disconnectAllVtab(sqlite3 *db){ } } } + sqlite3VtabUnlockList(db); sqlite3BtreeLeaveAll(db); #else UNUSED_PARAMETER(db); @@ -120862,6 +122989,8 @@ static int connectionIsBusy(sqlite3 *db){ */ static int sqlite3Close(sqlite3 *db, int forceZombie){ if( !db ){ + /* EVIDENCE-OF: R-63257-11740 Calling sqlite3_close() or + ** sqlite3_close_v2() with a NULL pointer argument is a harmless no-op. */ return SQLITE_OK; } if( !sqlite3SafetyCheckSickOrOk(db) ){ @@ -121091,7 +123220,7 @@ SQLITE_PRIVATE void sqlite3RollbackAll(sqlite3 *db, int tripCode){ ** Return a static string containing the name corresponding to the error code ** specified in the argument. */ -#if defined(SQLITE_TEST) +#if (defined(SQLITE_DEBUG) && SQLITE_OS_WIN) || defined(SQLITE_TEST) SQLITE_PRIVATE const char *sqlite3ErrName(int rc){ const char *zName = 0; int i, origRc = rc; @@ -121126,7 +123255,6 @@ SQLITE_PRIVATE const char *sqlite3ErrName(int rc){ case SQLITE_IOERR_UNLOCK: zName = "SQLITE_IOERR_UNLOCK"; break; case SQLITE_IOERR_RDLOCK: zName = "SQLITE_IOERR_RDLOCK"; break; case SQLITE_IOERR_DELETE: zName = "SQLITE_IOERR_DELETE"; break; - case SQLITE_IOERR_BLOCKED: zName = "SQLITE_IOERR_BLOCKED"; break; case SQLITE_IOERR_NOMEM: zName = "SQLITE_IOERR_NOMEM"; break; case SQLITE_IOERR_ACCESS: zName = "SQLITE_IOERR_ACCESS"; break; case SQLITE_IOERR_CHECKRESERVEDLOCK: @@ -122111,7 +124239,7 @@ static const int aHardLimit[] = { SQLITE_MAX_FUNCTION_ARG, SQLITE_MAX_ATTACHED, SQLITE_MAX_LIKE_PATTERN_LENGTH, - SQLITE_MAX_VARIABLE_NUMBER, + SQLITE_MAX_VARIABLE_NUMBER, /* IMP: R-38091-32352 */ SQLITE_MAX_TRIGGER_DEPTH, }; @@ -122136,8 +124264,8 @@ static const int aHardLimit[] = { #if SQLITE_MAX_FUNCTION_ARG<0 || SQLITE_MAX_FUNCTION_ARG>1000 # error SQLITE_MAX_FUNCTION_ARG must be between 0 and 1000 #endif -#if SQLITE_MAX_ATTACHED<0 || SQLITE_MAX_ATTACHED>62 -# error SQLITE_MAX_ATTACHED must be between 0 and 62 +#if SQLITE_MAX_ATTACHED<0 || SQLITE_MAX_ATTACHED>125 +# error SQLITE_MAX_ATTACHED must be between 0 and 125 #endif #if SQLITE_MAX_LIKE_PATTERN_LENGTH<1 # error SQLITE_MAX_LIKE_PATTERN_LENGTH must be at least 1 @@ -123149,6 +125277,28 @@ SQLITE_API int sqlite3_test_control(int op, ...){ break; } + /* + ** sqlite3_test_control(FAULT_INSTALL, xCallback) + ** + ** Arrange to invoke xCallback() whenever sqlite3FaultSim() is called, + ** if xCallback is not NULL. + ** + ** As a test of the fault simulator mechanism itself, sqlite3FaultSim(0) + ** is called immediately after installing the new callback and the return + ** value from sqlite3FaultSim(0) becomes the return from + ** sqlite3_test_control(). + */ + case SQLITE_TESTCTRL_FAULT_INSTALL: { + /* MSVC is picky about pulling func ptrs from va lists. + ** http://support.microsoft.com/kb/47961 + ** sqlite3GlobalConfig.xTestCallback = va_arg(ap, int(*)(int)); + */ + typedef int(*TESTCALLBACKFUNC_t)(int); + sqlite3GlobalConfig.xTestCallback = va_arg(ap, TESTCALLBACKFUNC_t); + rc = sqlite3FaultSim(0); + break; + } + /* ** sqlite3_test_control(BENIGN_MALLOC_HOOKS, xBegin, xEnd) ** @@ -123240,6 +125390,22 @@ SQLITE_API int sqlite3_test_control(int op, ...){ break; } + /* + ** sqlite3_test_control(SQLITE_TESTCTRL_BYTEORDER); + ** + ** The integer returned reveals the byte-order of the computer on which + ** SQLite is running: + ** + ** 1 big-endian, determined at run-time + ** 10 little-endian, determined at run-time + ** 432101 big-endian, determined at compile-time + ** 123410 little-endian, determined at compile-time + */ + case SQLITE_TESTCTRL_BYTEORDER: { + rc = SQLITE_BYTEORDER*100 + SQLITE_LITTLEENDIAN*10 + SQLITE_BIGENDIAN; + break; + } + /* sqlite3_test_control(SQLITE_TESTCTRL_RESERVE, sqlite3 *db, int N) ** ** Set the nReserve size to N for the main database on the database @@ -123358,6 +125524,16 @@ SQLITE_API int sqlite3_test_control(int op, ...){ break; } + /* sqlite3_test_control(SQLITE_TESTCTRL_ISINIT); + ** + ** Return SQLITE_OK if SQLite has been initialized and SQLITE_ERROR if + ** not. + */ + case SQLITE_TESTCTRL_ISINIT: { + if( sqlite3GlobalConfig.isInit==0 ) rc = SQLITE_ERROR; + break; + } + } va_end(ap); #endif /* SQLITE_OMIT_BUILTIN_TEST */ @@ -123406,7 +125582,7 @@ SQLITE_API sqlite3_int64 sqlite3_uri_int64( ){ const char *z = sqlite3_uri_parameter(zFilename, zParam); sqlite3_int64 v; - if( z && sqlite3Atoi64(z, &v, sqlite3Strlen30(z), SQLITE_UTF8)==SQLITE_OK ){ + if( z && sqlite3DecOrHexToI64(z, &v)==SQLITE_OK ){ bDflt = v; } return bDflt; @@ -123442,7 +125618,7 @@ SQLITE_API const char *sqlite3_db_filename(sqlite3 *db, const char *zDbName){ */ SQLITE_API int sqlite3_db_readonly(sqlite3 *db, const char *zDbName){ Btree *pBt = sqlite3DbNameToBtree(db, zDbName); - return pBt ? sqlite3PagerIsreadonly(sqlite3BtreePager(pBt)) : -1; + return pBt ? sqlite3BtreeIsReadonly(pBt) : -1; } /************** End of main.c ************************************************/ @@ -124562,20 +126738,20 @@ struct Fts3Table { sqlite3_tokenizer *pTokenizer; /* tokenizer for inserts and queries */ char *zContentTbl; /* content=xxx option, or NULL */ char *zLanguageid; /* languageid=xxx option, or NULL */ - u8 bAutoincrmerge; /* True if automerge=1 */ + int nAutoincrmerge; /* Value configured by 'automerge' */ u32 nLeafAdd; /* Number of leaf blocks added this trans */ /* Precompiled statements used by the implementation. Each of these ** statements is run and reset within a single virtual table API call. */ - sqlite3_stmt *aStmt[37]; + sqlite3_stmt *aStmt[40]; char *zReadExprlist; char *zWriteExprlist; int nNodeSize; /* Soft limit for node size */ u8 bFts4; /* True for FTS4, false for FTS3 */ - u8 bHasStat; /* True if %_stat table exists */ + u8 bHasStat; /* True if %_stat table exists (2==unknown) */ u8 bHasDocsize; /* True if %_docsize table exists */ u8 bDescIdx; /* True if doclists are in reverse order */ u8 bIgnoreSavepoint; /* True to ignore xSavepoint invocations */ @@ -124937,7 +127113,7 @@ SQLITE_PRIVATE int sqlite3Fts3MsrIncrRestart(Fts3MultiSegReader *pCsr); SQLITE_PRIVATE int sqlite3Fts3InitTok(sqlite3*, Fts3Hash *); /* fts3_unicode2.c (functions generated by parsing unicode text files) */ -#ifdef SQLITE_ENABLE_FTS4_UNICODE61 +#ifndef SQLITE_DISABLE_FTS3_UNICODE SQLITE_PRIVATE int sqlite3FtsUnicodeFold(int, int); SQLITE_PRIVATE int sqlite3FtsUnicodeIsalnum(int); SQLITE_PRIVATE int sqlite3FtsUnicodeIsdiacritic(int); @@ -125990,7 +128166,7 @@ static int fts3InitVtab( p->bHasStat = isFts4; p->bFts4 = isFts4; p->bDescIdx = bDescIdx; - p->bAutoincrmerge = 0xff; /* 0xff means setting unknown */ + p->nAutoincrmerge = 0xff; /* 0xff means setting unknown */ p->zContentTbl = zContent; p->zLanguageid = zLanguageid; zContent = 0; @@ -126033,7 +128209,9 @@ static int fts3InitVtab( int n = (int)strlen(p->azColumn[iCol]); for(i=0; iazColumn[iCol], zNot, n) ){ + if( zNot && n==(int)strlen(zNot) + && 0==sqlite3_strnicmp(p->azColumn[iCol], zNot, n) + ){ p->abNotindexed[iCol] = 1; sqlite3_free(zNot); azNotindexed[i] = 0; @@ -126067,10 +128245,7 @@ static int fts3InitVtab( ** addition of a %_stat table so that it can use incremental merge. */ if( !isFts4 && !isCreate ){ - int rc2 = SQLITE_OK; - fts3DbExec(&rc2, db, "SELECT 1 FROM %Q.'%q_stat' WHERE id=2", - p->zDb, p->zName); - if( rc2==SQLITE_OK ) p->bHasStat = 1; + p->bHasStat = 2; } /* Figure out the page-size for the database. This is required in order to @@ -127962,7 +130137,10 @@ static int fts3SyncMethod(sqlite3_vtab *pVtab){ Fts3Table *p = (Fts3Table*)pVtab; int rc = sqlite3Fts3PendingTermsFlush(p); - if( rc==SQLITE_OK && p->bAutoincrmerge==1 && p->nLeafAdd>(nMinMerge/16) ){ + if( rc==SQLITE_OK + && p->nLeafAdd>(nMinMerge/16) + && p->nAutoincrmerge && p->nAutoincrmerge!=0xff + ){ int mxLevel = 0; /* Maximum relative level value in db */ int A; /* Incr-merge parameter A */ @@ -127970,14 +130148,41 @@ static int fts3SyncMethod(sqlite3_vtab *pVtab){ assert( rc==SQLITE_OK || mxLevel==0 ); A = p->nLeafAdd * mxLevel; A += (A/2); - if( A>(int)nMinMerge ) rc = sqlite3Fts3Incrmerge(p, A, 8); + if( A>(int)nMinMerge ) rc = sqlite3Fts3Incrmerge(p, A, p->nAutoincrmerge); } sqlite3Fts3SegmentsClose(p); return rc; } /* -** Implementation of xBegin() method. This is a no-op. +** If it is currently unknown whether or not the FTS table has an %_stat +** table (if p->bHasStat==2), attempt to determine this (set p->bHasStat +** to 0 or 1). Return SQLITE_OK if successful, or an SQLite error code +** if an error occurs. +*/ +static int fts3SetHasStat(Fts3Table *p){ + int rc = SQLITE_OK; + if( p->bHasStat==2 ){ + const char *zFmt ="SELECT 1 FROM %Q.sqlite_master WHERE tbl_name='%q_stat'"; + char *zSql = sqlite3_mprintf(zFmt, p->zDb, p->zName); + if( zSql ){ + sqlite3_stmt *pStmt = 0; + rc = sqlite3_prepare_v2(p->db, zSql, -1, &pStmt, 0); + if( rc==SQLITE_OK ){ + int bHasStat = (sqlite3_step(pStmt)==SQLITE_ROW); + rc = sqlite3_finalize(pStmt); + if( rc==SQLITE_OK ) p->bHasStat = bHasStat; + } + sqlite3_free(zSql); + }else{ + rc = SQLITE_NOMEM; + } + } + return rc; +} + +/* +** Implementation of xBegin() method. */ static int fts3BeginMethod(sqlite3_vtab *pVtab){ Fts3Table *p = (Fts3Table*)pVtab; @@ -127988,7 +130193,7 @@ static int fts3BeginMethod(sqlite3_vtab *pVtab){ TESTONLY( p->inTransaction = 1 ); TESTONLY( p->mxSavepoint = -1; ); p->nLeafAdd = 0; - return SQLITE_OK; + return fts3SetHasStat(p); } /* @@ -128237,6 +130442,10 @@ static int fts3RenameMethod( sqlite3 *db = p->db; /* Database connection */ int rc; /* Return Code */ + /* At this point it must be known if the %_stat table exists or not. + ** So bHasStat may not be 2. */ + rc = fts3SetHasStat(p); + /* As it happens, the pending terms table is always empty here. This is ** because an "ALTER TABLE RENAME TABLE" statement inside a transaction ** always opens a savepoint transaction. And the xSavepoint() method @@ -128244,7 +130453,9 @@ static int fts3RenameMethod( ** PendingTermsFlush() in in case that changes. */ assert( p->nPendingData==0 ); - rc = sqlite3Fts3PendingTermsFlush(p); + if( rc==SQLITE_OK ){ + rc = sqlite3Fts3PendingTermsFlush(p); + } if( p->zContentTbl==0 ){ fts3DbExec(&rc, db, @@ -128372,7 +130583,7 @@ static void hashDestroy(void *p){ */ SQLITE_PRIVATE void sqlite3Fts3SimpleTokenizerModule(sqlite3_tokenizer_module const**ppModule); SQLITE_PRIVATE void sqlite3Fts3PorterTokenizerModule(sqlite3_tokenizer_module const**ppModule); -#ifdef SQLITE_ENABLE_FTS4_UNICODE61 +#ifndef SQLITE_DISABLE_FTS3_UNICODE SQLITE_PRIVATE void sqlite3Fts3UnicodeTokenizer(sqlite3_tokenizer_module const**ppModule); #endif #ifdef SQLITE_ENABLE_ICU @@ -128390,7 +130601,7 @@ SQLITE_PRIVATE int sqlite3Fts3Init(sqlite3 *db){ Fts3Hash *pHash = 0; const sqlite3_tokenizer_module *pSimple = 0; const sqlite3_tokenizer_module *pPorter = 0; -#ifdef SQLITE_ENABLE_FTS4_UNICODE61 +#ifndef SQLITE_DISABLE_FTS3_UNICODE const sqlite3_tokenizer_module *pUnicode = 0; #endif @@ -128399,7 +130610,7 @@ SQLITE_PRIVATE int sqlite3Fts3Init(sqlite3 *db){ sqlite3Fts3IcuTokenizerModule(&pIcu); #endif -#ifdef SQLITE_ENABLE_FTS4_UNICODE61 +#ifndef SQLITE_DISABLE_FTS3_UNICODE sqlite3Fts3UnicodeTokenizer(&pUnicode); #endif @@ -128427,7 +130638,7 @@ SQLITE_PRIVATE int sqlite3Fts3Init(sqlite3 *db){ if( sqlite3Fts3HashInsert(pHash, "simple", 7, (void *)pSimple) || sqlite3Fts3HashInsert(pHash, "porter", 7, (void *)pPorter) -#ifdef SQLITE_ENABLE_FTS4_UNICODE61 +#ifndef SQLITE_DISABLE_FTS3_UNICODE || sqlite3Fts3HashInsert(pHash, "unicode61", 10, (void *)pUnicode) #endif #ifdef SQLITE_ENABLE_ICU @@ -131160,40 +133371,23 @@ static int getNextToken( int rc; sqlite3_tokenizer_cursor *pCursor; Fts3Expr *pRet = 0; - int nConsumed = 0; + int i = 0; - rc = sqlite3Fts3OpenTokenizer(pTokenizer, pParse->iLangid, z, n, &pCursor); + /* Set variable i to the maximum number of bytes of input to tokenize. */ + for(i=0; iiLangid, z, i, &pCursor); if( rc==SQLITE_OK ){ const char *zToken; int nToken = 0, iStart = 0, iEnd = 0, iPosition = 0; int nByte; /* total space to allocate */ rc = pModule->xNext(pCursor, &zToken, &nToken, &iStart, &iEnd, &iPosition); - - if( (rc==SQLITE_OK || rc==SQLITE_DONE) && sqlite3_fts3_enable_parentheses ){ - int i; - if( rc==SQLITE_DONE ) iStart = n; - for(i=0; inNest++; - rc = fts3ExprParse(pParse, &z[i+1], n-i-1, &pRet, &nConsumed); - if( rc==SQLITE_OK && !pRet ){ - rc = SQLITE_DONE; - } - nConsumed = (int)(i + 1 + nConsumed); - break; - } - - if( z[i]==')' ){ - rc = SQLITE_DONE; - pParse->nNest--; - nConsumed = i+1; - break; - } - } - } - - if( nConsumed==0 && rc==SQLITE_OK ){ + if( rc==SQLITE_OK ){ nByte = sizeof(Fts3Expr) + sizeof(Fts3Phrase) + nToken; pRet = (Fts3Expr *)fts3MallocZero(nByte); if( !pRet ){ @@ -131227,13 +133421,14 @@ static int getNextToken( } } - nConsumed = iEnd; + *pnConsumed = iEnd; + }else if( i && rc==SQLITE_DONE ){ + rc = SQLITE_OK; } pModule->xClose(pCursor); } - *pnConsumed = nConsumed; *ppExpr = pRet; return rc; } @@ -131483,6 +133678,21 @@ static int getNextNode( return getNextString(pParse, &zInput[1], ii-1, ppExpr); } + if( sqlite3_fts3_enable_parentheses ){ + if( *zInput=='(' ){ + int nConsumed = 0; + pParse->nNest++; + rc = fts3ExprParse(pParse, zInput+1, nInput-1, ppExpr, &nConsumed); + if( rc==SQLITE_OK && !*ppExpr ){ rc = SQLITE_DONE; } + *pnConsumed = (int)(zInput - z) + 1 + nConsumed; + return rc; + }else if( *zInput==')' ){ + pParse->nNest--; + *pnConsumed = (int)((zInput - z) + 1); + *ppExpr = 0; + return SQLITE_DONE; + } + } /* If control flows to this point, this must be a regular token, or ** the end of the input. Read a regular token using the sqlite3_tokenizer @@ -131601,96 +133811,100 @@ static int fts3ExprParse( while( rc==SQLITE_OK ){ Fts3Expr *p = 0; int nByte = 0; + rc = getNextNode(pParse, zIn, nIn, &p, &nByte); + assert( nByte>0 || (rc!=SQLITE_OK && p==0) ); if( rc==SQLITE_OK ){ - int isPhrase; + if( p ){ + int isPhrase; - if( !sqlite3_fts3_enable_parentheses - && p->eType==FTSQUERY_PHRASE && pParse->isNot - ){ - /* Create an implicit NOT operator. */ - Fts3Expr *pNot = fts3MallocZero(sizeof(Fts3Expr)); - if( !pNot ){ - sqlite3Fts3ExprFree(p); - rc = SQLITE_NOMEM; - goto exprparse_out; - } - pNot->eType = FTSQUERY_NOT; - pNot->pRight = p; - p->pParent = pNot; - if( pNotBranch ){ - pNot->pLeft = pNotBranch; - pNotBranch->pParent = pNot; - } - pNotBranch = pNot; - p = pPrev; - }else{ - int eType = p->eType; - isPhrase = (eType==FTSQUERY_PHRASE || p->pLeft); - - /* The isRequirePhrase variable is set to true if a phrase or - ** an expression contained in parenthesis is required. If a - ** binary operator (AND, OR, NOT or NEAR) is encounted when - ** isRequirePhrase is set, this is a syntax error. - */ - if( !isPhrase && isRequirePhrase ){ - sqlite3Fts3ExprFree(p); - rc = SQLITE_ERROR; - goto exprparse_out; - } - - if( isPhrase && !isRequirePhrase ){ - /* Insert an implicit AND operator. */ - Fts3Expr *pAnd; - assert( pRet && pPrev ); - pAnd = fts3MallocZero(sizeof(Fts3Expr)); - if( !pAnd ){ + if( !sqlite3_fts3_enable_parentheses + && p->eType==FTSQUERY_PHRASE && pParse->isNot + ){ + /* Create an implicit NOT operator. */ + Fts3Expr *pNot = fts3MallocZero(sizeof(Fts3Expr)); + if( !pNot ){ sqlite3Fts3ExprFree(p); rc = SQLITE_NOMEM; goto exprparse_out; } - pAnd->eType = FTSQUERY_AND; - insertBinaryOperator(&pRet, pPrev, pAnd); - pPrev = pAnd; - } + pNot->eType = FTSQUERY_NOT; + pNot->pRight = p; + p->pParent = pNot; + if( pNotBranch ){ + pNot->pLeft = pNotBranch; + pNotBranch->pParent = pNot; + } + pNotBranch = pNot; + p = pPrev; + }else{ + int eType = p->eType; + isPhrase = (eType==FTSQUERY_PHRASE || p->pLeft); - /* This test catches attempts to make either operand of a NEAR - ** operator something other than a phrase. For example, either of - ** the following: - ** - ** (bracketed expression) NEAR phrase - ** phrase NEAR (bracketed expression) - ** - ** Return an error in either case. - */ - if( pPrev && ( + /* The isRequirePhrase variable is set to true if a phrase or + ** an expression contained in parenthesis is required. If a + ** binary operator (AND, OR, NOT or NEAR) is encounted when + ** isRequirePhrase is set, this is a syntax error. + */ + if( !isPhrase && isRequirePhrase ){ + sqlite3Fts3ExprFree(p); + rc = SQLITE_ERROR; + goto exprparse_out; + } + + if( isPhrase && !isRequirePhrase ){ + /* Insert an implicit AND operator. */ + Fts3Expr *pAnd; + assert( pRet && pPrev ); + pAnd = fts3MallocZero(sizeof(Fts3Expr)); + if( !pAnd ){ + sqlite3Fts3ExprFree(p); + rc = SQLITE_NOMEM; + goto exprparse_out; + } + pAnd->eType = FTSQUERY_AND; + insertBinaryOperator(&pRet, pPrev, pAnd); + pPrev = pAnd; + } + + /* This test catches attempts to make either operand of a NEAR + ** operator something other than a phrase. For example, either of + ** the following: + ** + ** (bracketed expression) NEAR phrase + ** phrase NEAR (bracketed expression) + ** + ** Return an error in either case. + */ + if( pPrev && ( (eType==FTSQUERY_NEAR && !isPhrase && pPrev->eType!=FTSQUERY_PHRASE) || (eType!=FTSQUERY_PHRASE && isPhrase && pPrev->eType==FTSQUERY_NEAR) - )){ - sqlite3Fts3ExprFree(p); - rc = SQLITE_ERROR; - goto exprparse_out; - } - - if( isPhrase ){ - if( pRet ){ - assert( pPrev && pPrev->pLeft && pPrev->pRight==0 ); - pPrev->pRight = p; - p->pParent = pPrev; - }else{ - pRet = p; + )){ + sqlite3Fts3ExprFree(p); + rc = SQLITE_ERROR; + goto exprparse_out; } - }else{ - insertBinaryOperator(&pRet, pPrev, p); + + if( isPhrase ){ + if( pRet ){ + assert( pPrev && pPrev->pLeft && pPrev->pRight==0 ); + pPrev->pRight = p; + p->pParent = pPrev; + }else{ + pRet = p; + } + }else{ + insertBinaryOperator(&pRet, pPrev, p); + } + isRequirePhrase = !isPhrase; } - isRequirePhrase = !isPhrase; + pPrev = p; } assert( nByte>0 ); } assert( rc!=SQLITE_OK || (nByte>0 && nByte<=nIn) ); nIn -= nByte; zIn += nByte; - pPrev = p; } if( rc==SQLITE_DONE && pRet && isRequirePhrase ){ @@ -134678,6 +136892,7 @@ struct SegmentWriter { int nSize; /* Size of allocation at aData */ int nData; /* Bytes of data in aData */ char *aData; /* Pointer to block from malloc() */ + i64 nLeafData; /* Number of bytes of leaf data written */ }; /* @@ -134753,6 +136968,10 @@ struct SegmentNode { #define SQL_SELECT_INDEXES 35 #define SQL_SELECT_MXLEVEL 36 +#define SQL_SELECT_LEVEL_RANGE2 37 +#define SQL_UPDATE_LEVEL_IDX 38 +#define SQL_UPDATE_LEVEL 39 + /* ** This function is used to obtain an SQLite prepared statement handle ** for the statement identified by the second argument. If successful, @@ -134854,7 +137073,18 @@ static int fts3SqlStmt( /* SQL_SELECT_MXLEVEL ** Return the largest relative level in the FTS index or indexes. */ -/* 36 */ "SELECT max( level %% 1024 ) FROM %Q.'%q_segdir'" +/* 36 */ "SELECT max( level %% 1024 ) FROM %Q.'%q_segdir'", + + /* Return segments in order from oldest to newest.*/ +/* 37 */ "SELECT level, idx, end_block " + "FROM %Q.'%q_segdir' WHERE level BETWEEN ? AND ? " + "ORDER BY level DESC, idx ASC", + + /* Update statements used while promoting segments */ +/* 38 */ "UPDATE OR FAIL %Q.'%q_segdir' SET level=-1,idx=? " + "WHERE level=? AND idx=?", +/* 39 */ "UPDATE OR FAIL %Q.'%q_segdir' SET level=? WHERE level=-1" + }; int rc = SQLITE_OK; sqlite3_stmt *pStmt; @@ -136395,6 +138625,7 @@ static int fts3WriteSegdir( sqlite3_int64 iStartBlock, /* Value for "start_block" field */ sqlite3_int64 iLeafEndBlock, /* Value for "leaves_end_block" field */ sqlite3_int64 iEndBlock, /* Value for "end_block" field */ + sqlite3_int64 nLeafData, /* Bytes of leaf data in segment */ char *zRoot, /* Blob value for "root" field */ int nRoot /* Number of bytes in buffer zRoot */ ){ @@ -136405,7 +138636,13 @@ static int fts3WriteSegdir( sqlite3_bind_int(pStmt, 2, iIdx); sqlite3_bind_int64(pStmt, 3, iStartBlock); sqlite3_bind_int64(pStmt, 4, iLeafEndBlock); - sqlite3_bind_int64(pStmt, 5, iEndBlock); + if( nLeafData==0 ){ + sqlite3_bind_int64(pStmt, 5, iEndBlock); + }else{ + char *zEnd = sqlite3_mprintf("%lld %lld", iEndBlock, nLeafData); + if( !zEnd ) return SQLITE_NOMEM; + sqlite3_bind_text(pStmt, 5, zEnd, -1, sqlite3_free); + } sqlite3_bind_blob(pStmt, 6, zRoot, nRoot, SQLITE_STATIC); sqlite3_step(pStmt); rc = sqlite3_reset(pStmt); @@ -136731,6 +138968,9 @@ static int fts3SegWriterAdd( nDoclist; /* Doclist data */ } + /* Increase the total number of bytes written to account for the new entry. */ + pWriter->nLeafData += nReq; + /* If the buffer currently allocated is too small for this entry, realloc ** the buffer to make it large enough. */ @@ -136802,13 +139042,13 @@ static int fts3SegWriterFlush( pWriter->iFirst, pWriter->iFree, &iLast, &zRoot, &nRoot); } if( rc==SQLITE_OK ){ - rc = fts3WriteSegdir( - p, iLevel, iIdx, pWriter->iFirst, iLastLeaf, iLast, zRoot, nRoot); + rc = fts3WriteSegdir(p, iLevel, iIdx, + pWriter->iFirst, iLastLeaf, iLast, pWriter->nLeafData, zRoot, nRoot); } }else{ /* The entire tree fits on the root node. Write it to the segdir table. */ - rc = fts3WriteSegdir( - p, iLevel, iIdx, 0, 0, 0, pWriter->aData, pWriter->nData); + rc = fts3WriteSegdir(p, iLevel, iIdx, + 0, 0, 0, pWriter->nLeafData, pWriter->aData, pWriter->nData); } p->nLeafAdd++; return rc; @@ -136892,6 +139132,37 @@ static int fts3SegmentMaxLevel( return sqlite3_reset(pStmt); } +/* +** iAbsLevel is an absolute level that may be assumed to exist within +** the database. This function checks if it is the largest level number +** within its index. Assuming no error occurs, *pbMax is set to 1 if +** iAbsLevel is indeed the largest level, or 0 otherwise, and SQLITE_OK +** is returned. If an error occurs, an error code is returned and the +** final value of *pbMax is undefined. +*/ +static int fts3SegmentIsMaxLevel(Fts3Table *p, i64 iAbsLevel, int *pbMax){ + + /* Set pStmt to the compiled version of: + ** + ** SELECT max(level) FROM %Q.'%q_segdir' WHERE level BETWEEN ? AND ? + ** + ** (1024 is actually the value of macro FTS3_SEGDIR_PREFIXLEVEL_STR). + */ + sqlite3_stmt *pStmt; + int rc = fts3SqlStmt(p, SQL_SELECT_SEGDIR_MAX_LEVEL, &pStmt, 0); + if( rc!=SQLITE_OK ) return rc; + sqlite3_bind_int64(pStmt, 1, iAbsLevel+1); + sqlite3_bind_int64(pStmt, 2, + ((iAbsLevel/FTS3_SEGDIR_MAXLEVEL)+1) * FTS3_SEGDIR_MAXLEVEL + ); + + *pbMax = 0; + if( SQLITE_ROW==sqlite3_step(pStmt) ){ + *pbMax = sqlite3_column_type(pStmt, 0)==SQLITE_NULL; + } + return sqlite3_reset(pStmt); +} + /* ** Delete all entries in the %_segments table associated with the segment ** opened with seg-reader pSeg. This function does not affect the contents @@ -137427,6 +139698,140 @@ SQLITE_PRIVATE void sqlite3Fts3SegReaderFinish( } } +/* +** Decode the "end_block" field, selected by column iCol of the SELECT +** statement passed as the first argument. +** +** The "end_block" field may contain either an integer, or a text field +** containing the text representation of two non-negative integers separated +** by one or more space (0x20) characters. In the first case, set *piEndBlock +** to the integer value and *pnByte to zero before returning. In the second, +** set *piEndBlock to the first value and *pnByte to the second. +*/ +static void fts3ReadEndBlockField( + sqlite3_stmt *pStmt, + int iCol, + i64 *piEndBlock, + i64 *pnByte +){ + const unsigned char *zText = sqlite3_column_text(pStmt, iCol); + if( zText ){ + int i; + int iMul = 1; + i64 iVal = 0; + for(i=0; zText[i]>='0' && zText[i]<='9'; i++){ + iVal = iVal*10 + (zText[i] - '0'); + } + *piEndBlock = iVal; + while( zText[i]==' ' ) i++; + iVal = 0; + if( zText[i]=='-' ){ + i++; + iMul = -1; + } + for(/* no-op */; zText[i]>='0' && zText[i]<='9'; i++){ + iVal = iVal*10 + (zText[i] - '0'); + } + *pnByte = (iVal * (i64)iMul); + } +} + + +/* +** A segment of size nByte bytes has just been written to absolute level +** iAbsLevel. Promote any segments that should be promoted as a result. +*/ +static int fts3PromoteSegments( + Fts3Table *p, /* FTS table handle */ + sqlite3_int64 iAbsLevel, /* Absolute level just updated */ + sqlite3_int64 nByte /* Size of new segment at iAbsLevel */ +){ + int rc = SQLITE_OK; + sqlite3_stmt *pRange; + + rc = fts3SqlStmt(p, SQL_SELECT_LEVEL_RANGE2, &pRange, 0); + + if( rc==SQLITE_OK ){ + int bOk = 0; + i64 iLast = (iAbsLevel/FTS3_SEGDIR_MAXLEVEL + 1) * FTS3_SEGDIR_MAXLEVEL - 1; + i64 nLimit = (nByte*3)/2; + + /* Loop through all entries in the %_segdir table corresponding to + ** segments in this index on levels greater than iAbsLevel. If there is + ** at least one such segment, and it is possible to determine that all + ** such segments are smaller than nLimit bytes in size, they will be + ** promoted to level iAbsLevel. */ + sqlite3_bind_int64(pRange, 1, iAbsLevel+1); + sqlite3_bind_int64(pRange, 2, iLast); + while( SQLITE_ROW==sqlite3_step(pRange) ){ + i64 nSize = 0, dummy; + fts3ReadEndBlockField(pRange, 2, &dummy, &nSize); + if( nSize<=0 || nSize>nLimit ){ + /* If nSize==0, then the %_segdir.end_block field does not not + ** contain a size value. This happens if it was written by an + ** old version of FTS. In this case it is not possible to determine + ** the size of the segment, and so segment promotion does not + ** take place. */ + bOk = 0; + break; + } + bOk = 1; + } + rc = sqlite3_reset(pRange); + + if( bOk ){ + int iIdx = 0; + sqlite3_stmt *pUpdate1; + sqlite3_stmt *pUpdate2; + + if( rc==SQLITE_OK ){ + rc = fts3SqlStmt(p, SQL_UPDATE_LEVEL_IDX, &pUpdate1, 0); + } + if( rc==SQLITE_OK ){ + rc = fts3SqlStmt(p, SQL_UPDATE_LEVEL, &pUpdate2, 0); + } + + if( rc==SQLITE_OK ){ + + /* Loop through all %_segdir entries for segments in this index with + ** levels equal to or greater than iAbsLevel. As each entry is visited, + ** updated it to set (level = -1) and (idx = N), where N is 0 for the + ** oldest segment in the range, 1 for the next oldest, and so on. + ** + ** In other words, move all segments being promoted to level -1, + ** setting the "idx" fields as appropriate to keep them in the same + ** order. The contents of level -1 (which is never used, except + ** transiently here), will be moved back to level iAbsLevel below. */ + sqlite3_bind_int64(pRange, 1, iAbsLevel); + while( SQLITE_ROW==sqlite3_step(pRange) ){ + sqlite3_bind_int(pUpdate1, 1, iIdx++); + sqlite3_bind_int(pUpdate1, 2, sqlite3_column_int(pRange, 0)); + sqlite3_bind_int(pUpdate1, 3, sqlite3_column_int(pRange, 1)); + sqlite3_step(pUpdate1); + rc = sqlite3_reset(pUpdate1); + if( rc!=SQLITE_OK ){ + sqlite3_reset(pRange); + break; + } + } + } + if( rc==SQLITE_OK ){ + rc = sqlite3_reset(pRange); + } + + /* Move level -1 to level iAbsLevel */ + if( rc==SQLITE_OK ){ + sqlite3_bind_int64(pUpdate2, 1, iAbsLevel); + sqlite3_step(pUpdate2); + rc = sqlite3_reset(pUpdate2); + } + } + } + + + return rc; +} + /* ** Merge all level iLevel segments in the database into a single ** iLevel+1 segment. Or, if iLevel<0, merge all segments into a @@ -137451,6 +139856,7 @@ static int fts3SegmentMerge( Fts3SegFilter filter; /* Segment term filter condition */ Fts3MultiSegReader csr; /* Cursor to iterate through level(s) */ int bIgnoreEmpty = 0; /* True to ignore empty segments */ + i64 iMaxLevel = 0; /* Max level number for this index/langid */ assert( iLevel==FTS3_SEGCURSOR_ALL || iLevel==FTS3_SEGCURSOR_PENDING @@ -137462,6 +139868,11 @@ static int fts3SegmentMerge( rc = sqlite3Fts3SegReaderCursor(p, iLangid, iIndex, iLevel, 0, 0, 1, 0, &csr); if( rc!=SQLITE_OK || csr.nSegment==0 ) goto finished; + if( iLevel!=FTS3_SEGCURSOR_PENDING ){ + rc = fts3SegmentMaxLevel(p, iLangid, iIndex, &iMaxLevel); + if( rc!=SQLITE_OK ) goto finished; + } + if( iLevel==FTS3_SEGCURSOR_ALL ){ /* This call is to merge all segments in the database to a single ** segment. The level of the new segment is equal to the numerically @@ -137471,21 +139882,21 @@ static int fts3SegmentMerge( rc = SQLITE_DONE; goto finished; } - rc = fts3SegmentMaxLevel(p, iLangid, iIndex, &iNewLevel); + iNewLevel = iMaxLevel; bIgnoreEmpty = 1; - }else if( iLevel==FTS3_SEGCURSOR_PENDING ){ - iNewLevel = getAbsoluteLevel(p, iLangid, iIndex, 0); - rc = fts3AllocateSegdirIdx(p, iLangid, iIndex, 0, &iIdx); }else{ /* This call is to merge all segments at level iLevel. find the next ** available segment index at level iLevel+1. The call to ** fts3AllocateSegdirIdx() will merge the segments at level iLevel+1 to ** a single iLevel+2 segment if necessary. */ - rc = fts3AllocateSegdirIdx(p, iLangid, iIndex, iLevel+1, &iIdx); + assert( FTS3_SEGCURSOR_PENDING==-1 ); iNewLevel = getAbsoluteLevel(p, iLangid, iIndex, iLevel+1); + rc = fts3AllocateSegdirIdx(p, iLangid, iIndex, iLevel+1, &iIdx); + bIgnoreEmpty = (iLevel!=FTS3_SEGCURSOR_PENDING) && (iNewLevel>iMaxLevel); } if( rc!=SQLITE_OK ) goto finished; + assert( csr.nSegment>0 ); assert( iNewLevel>=getAbsoluteLevel(p, iLangid, iIndex, 0) ); assert( iNewLevelnLeafData); + } + } + } finished: fts3SegWriterFree(pWriter); @@ -137520,7 +139938,7 @@ static int fts3SegmentMerge( /* -** Flush the contents of pendingTerms to level 0 segments. +** Flush the contents of pendingTerms to level 0 segments. */ SQLITE_PRIVATE int sqlite3Fts3PendingTermsFlush(Fts3Table *p){ int rc = SQLITE_OK; @@ -137536,14 +139954,19 @@ SQLITE_PRIVATE int sqlite3Fts3PendingTermsFlush(Fts3Table *p){ ** estimate the number of leaf blocks of content to be written */ if( rc==SQLITE_OK && p->bHasStat - && p->bAutoincrmerge==0xff && p->nLeafAdd>0 + && p->nAutoincrmerge==0xff && p->nLeafAdd>0 ){ sqlite3_stmt *pStmt = 0; rc = fts3SqlStmt(p, SQL_SELECT_STAT, &pStmt, 0); if( rc==SQLITE_OK ){ sqlite3_bind_int(pStmt, 1, FTS_STAT_AUTOINCRMERGE); rc = sqlite3_step(pStmt); - p->bAutoincrmerge = (rc==SQLITE_ROW && sqlite3_column_int(pStmt, 0)); + if( rc==SQLITE_ROW ){ + p->nAutoincrmerge = sqlite3_column_int(pStmt, 0); + if( p->nAutoincrmerge==1 ) p->nAutoincrmerge = 8; + }else if( rc==SQLITE_DONE ){ + p->nAutoincrmerge = 0; + } rc = sqlite3_reset(pStmt); } } @@ -137911,6 +140334,8 @@ struct IncrmergeWriter { int iIdx; /* Index of *output* segment in iAbsLevel+1 */ sqlite3_int64 iStart; /* Block number of first allocated block */ sqlite3_int64 iEnd; /* Block number of last allocated block */ + sqlite3_int64 nLeafData; /* Bytes of leaf page data so far */ + u8 bNoLeafData; /* If true, store 0 for segment size */ NodeWriter aNodeWriter[FTS_MAX_APPENDABLE_HEIGHT]; }; @@ -138249,8 +140674,8 @@ static int fts3IncrmergeAppend( nSpace += sqlite3Fts3VarintLen(nDoclist) + nDoclist; } + pWriter->nLeafData += nSpace; blobGrowBuffer(&pLeaf->block, pLeaf->block.n + nSpace, &rc); - if( rc==SQLITE_OK ){ if( pLeaf->block.n==0 ){ pLeaf->block.n = 1; @@ -138349,6 +140774,7 @@ static void fts3IncrmergeRelease( pWriter->iStart, /* start_block */ pWriter->aNodeWriter[0].iBlock, /* leaves_end_block */ pWriter->iEnd, /* end_block */ + (pWriter->bNoLeafData==0 ? pWriter->nLeafData : 0), /* end_block */ pRoot->block.a, pRoot->block.n /* root */ ); } @@ -138450,7 +140876,11 @@ static int fts3IncrmergeLoad( if( sqlite3_step(pSelect)==SQLITE_ROW ){ iStart = sqlite3_column_int64(pSelect, 1); iLeafEnd = sqlite3_column_int64(pSelect, 2); - iEnd = sqlite3_column_int64(pSelect, 3); + fts3ReadEndBlockField(pSelect, 3, &iEnd, &pWriter->nLeafData); + if( pWriter->nLeafData<0 ){ + pWriter->nLeafData = pWriter->nLeafData * -1; + } + pWriter->bNoLeafData = (pWriter->nLeafData==0); nRoot = sqlite3_column_bytes(pSelect, 4); aRoot = sqlite3_column_blob(pSelect, 4); }else{ @@ -139051,11 +141481,11 @@ static int fts3IncrmergeHintPop(Blob *pHint, i64 *piAbsLevel, int *pnInput){ /* ** Attempt an incremental merge that writes nMerge leaf blocks. ** -** Incremental merges happen nMin segments at a time. The two -** segments to be merged are the nMin oldest segments (the ones with -** the smallest indexes) in the highest level that contains at least -** nMin segments. Multiple merges might occur in an attempt to write the -** quota of nMerge leaf blocks. +** Incremental merges happen nMin segments at a time. The segments +** to be merged are the nMin oldest segments (the ones with the smallest +** values for the _segdir.idx field) in the highest level that contains +** at least nMin segments. Multiple merges might occur in an attempt to +** write the quota of nMerge leaf blocks. */ SQLITE_PRIVATE int sqlite3Fts3Incrmerge(Fts3Table *p, int nMerge, int nMin){ int rc; /* Return code */ @@ -139080,6 +141510,7 @@ SQLITE_PRIVATE int sqlite3Fts3Incrmerge(Fts3Table *p, int nMerge, int nMin){ const i64 nMod = FTS3_SEGDIR_MAXLEVEL * p->nIndex; sqlite3_stmt *pFindLevel = 0; /* SQL used to determine iAbsLevel */ int bUseHint = 0; /* True if attempting to append */ + int iIdx = 0; /* Largest idx in level (iAbsLevel+1) */ /* Search the %_segdir table for the absolute level with the smallest ** relative level number that contains at least nMin segments, if any. @@ -139133,6 +141564,19 @@ SQLITE_PRIVATE int sqlite3Fts3Incrmerge(Fts3Table *p, int nMerge, int nMin){ ** to start work on some other level. */ memset(pWriter, 0, nAlloc); pFilter->flags = FTS3_SEGMENT_REQUIRE_POS; + + if( rc==SQLITE_OK ){ + rc = fts3IncrmergeOutputIdx(p, iAbsLevel, &iIdx); + assert( bUseHint==1 || bUseHint==0 ); + if( iIdx==0 || (bUseHint && iIdx==1) ){ + int bIgnore = 0; + rc = fts3SegmentIsMaxLevel(p, iAbsLevel+1, &bIgnore); + if( bIgnore ){ + pFilter->flags |= FTS3_SEGMENT_IGNORE_EMPTY; + } + } + } + if( rc==SQLITE_OK ){ rc = fts3IncrmergeCsr(p, iAbsLevel, nSeg, pCsr); } @@ -139140,16 +141584,12 @@ SQLITE_PRIVATE int sqlite3Fts3Incrmerge(Fts3Table *p, int nMerge, int nMin){ && SQLITE_OK==(rc = sqlite3Fts3SegReaderStart(p, pCsr, pFilter)) && SQLITE_ROW==(rc = sqlite3Fts3SegReaderStep(p, pCsr)) ){ - int iIdx = 0; /* Largest idx in level (iAbsLevel+1) */ - rc = fts3IncrmergeOutputIdx(p, iAbsLevel, &iIdx); - if( rc==SQLITE_OK ){ - if( bUseHint && iIdx>0 ){ - const char *zKey = pCsr->zTerm; - int nKey = pCsr->nTerm; - rc = fts3IncrmergeLoad(p, iAbsLevel, iIdx-1, zKey, nKey, pWriter); - }else{ - rc = fts3IncrmergeWriter(p, iAbsLevel, iIdx, pCsr, pWriter); - } + if( bUseHint && iIdx>0 ){ + const char *zKey = pCsr->zTerm; + int nKey = pCsr->nTerm; + rc = fts3IncrmergeLoad(p, iAbsLevel, iIdx-1, zKey, nKey, pWriter); + }else{ + rc = fts3IncrmergeWriter(p, iAbsLevel, iIdx, pCsr, pWriter); } if( rc==SQLITE_OK && pWriter->nLeafEst ){ @@ -139171,7 +141611,13 @@ SQLITE_PRIVATE int sqlite3Fts3Incrmerge(Fts3Table *p, int nMerge, int nMin){ } } + if( nSeg!=0 ){ + pWriter->nLeafData = pWriter->nLeafData * -1; + } fts3IncrmergeRelease(p, pWriter, &rc); + if( nSeg==0 && pWriter->bNoLeafData==0 ){ + fts3PromoteSegments(p, iAbsLevel+1, pWriter->nLeafData); + } } sqlite3Fts3SegReaderFinish(pCsr); @@ -139258,7 +141704,10 @@ static int fts3DoAutoincrmerge( ){ int rc = SQLITE_OK; sqlite3_stmt *pStmt = 0; - p->bAutoincrmerge = fts3Getint(&zParam)!=0; + p->nAutoincrmerge = fts3Getint(&zParam); + if( p->nAutoincrmerge==1 || p->nAutoincrmerge>FTS3_MERGE_COUNT ){ + p->nAutoincrmerge = 8; + } if( !p->bHasStat ){ assert( p->bFts4==0 ); sqlite3Fts3CreateStatTable(&rc, p); @@ -139267,7 +141716,7 @@ static int fts3DoAutoincrmerge( rc = fts3SqlStmt(p, SQL_REPLACE_STAT, &pStmt, 0); if( rc ) return rc; sqlite3_bind_int(pStmt, 1, FTS_STAT_AUTOINCRMERGE); - sqlite3_bind_int(pStmt, 2, p->bAutoincrmerge); + sqlite3_bind_int(pStmt, 2, p->nAutoincrmerge); sqlite3_step(pStmt); rc = sqlite3_reset(pStmt); return rc; @@ -139424,34 +141873,36 @@ static int fts3IntegrityCheck(Fts3Table *p, int *pbOk){ int iCol; for(iCol=0; rc==SQLITE_OK && iColnColumn; iCol++){ - const char *zText = (const char *)sqlite3_column_text(pStmt, iCol+1); - int nText = sqlite3_column_bytes(pStmt, iCol+1); - sqlite3_tokenizer_cursor *pT = 0; + if( p->abNotindexed[iCol]==0 ){ + const char *zText = (const char *)sqlite3_column_text(pStmt, iCol+1); + int nText = sqlite3_column_bytes(pStmt, iCol+1); + sqlite3_tokenizer_cursor *pT = 0; - rc = sqlite3Fts3OpenTokenizer(p->pTokenizer, iLang, zText, nText, &pT); - while( rc==SQLITE_OK ){ - char const *zToken; /* Buffer containing token */ - int nToken = 0; /* Number of bytes in token */ - int iDum1 = 0, iDum2 = 0; /* Dummy variables */ - int iPos = 0; /* Position of token in zText */ + rc = sqlite3Fts3OpenTokenizer(p->pTokenizer, iLang, zText, nText,&pT); + while( rc==SQLITE_OK ){ + char const *zToken; /* Buffer containing token */ + int nToken = 0; /* Number of bytes in token */ + int iDum1 = 0, iDum2 = 0; /* Dummy variables */ + int iPos = 0; /* Position of token in zText */ - rc = pModule->xNext(pT, &zToken, &nToken, &iDum1, &iDum2, &iPos); - if( rc==SQLITE_OK ){ - int i; - cksum2 = cksum2 ^ fts3ChecksumEntry( - zToken, nToken, iLang, 0, iDocid, iCol, iPos - ); - for(i=1; inIndex; i++){ - if( p->aIndex[i].nPrefix<=nToken ){ - cksum2 = cksum2 ^ fts3ChecksumEntry( - zToken, p->aIndex[i].nPrefix, iLang, i, iDocid, iCol, iPos - ); + rc = pModule->xNext(pT, &zToken, &nToken, &iDum1, &iDum2, &iPos); + if( rc==SQLITE_OK ){ + int i; + cksum2 = cksum2 ^ fts3ChecksumEntry( + zToken, nToken, iLang, 0, iDocid, iCol, iPos + ); + for(i=1; inIndex; i++){ + if( p->aIndex[i].nPrefix<=nToken ){ + cksum2 = cksum2 ^ fts3ChecksumEntry( + zToken, p->aIndex[i].nPrefix, iLang, i, iDocid, iCol, iPos + ); + } } } } + if( pT ) pModule->xClose(pT); + if( rc==SQLITE_DONE ) rc = SQLITE_OK; } - if( pT ) pModule->xClose(pT); - if( rc==SQLITE_DONE ) rc = SQLITE_OK; } } @@ -139756,6 +142207,10 @@ SQLITE_PRIVATE int sqlite3Fts3UpdateMethod( int nChng = 0; /* Net change in number of documents */ int bInsertDone = 0; + /* At this point it must be known if the %_stat table exists or not. + ** So bHasStat may not be 2. */ + assert( p->bHasStat==0 || p->bHasStat==1 ); + assert( p->pSegments==0 ); assert( nArg==1 /* DELETE operations */ @@ -141443,7 +143898,7 @@ SQLITE_PRIVATE void sqlite3Fts3Matchinfo( ** Implementation of the "unicode" full-text-search tokenizer. */ -#ifdef SQLITE_ENABLE_FTS4_UNICODE61 +#ifndef SQLITE_DISABLE_FTS3_UNICODE #if !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3) @@ -141659,7 +144114,7 @@ static int unicodeCreate( for(i=0; rc==SQLITE_OK && ibRemoveDiacritic = 1; @@ -141746,7 +144201,7 @@ static int unicodeNext( ){ unicode_cursor *pCsr = (unicode_cursor *)pC; unicode_tokenizer *p = ((unicode_tokenizer *)pCsr->base.pTokenizer); - int iCode; + int iCode = 0; char *zOut; const unsigned char *z = &pCsr->aInput[pCsr->iOff]; const unsigned char *zStart = z; @@ -141791,11 +144246,11 @@ static int unicodeNext( ); /* Set the output variables and return. */ - pCsr->iOff = (z - pCsr->aInput); + pCsr->iOff = (int)(z - pCsr->aInput); *paToken = pCsr->zToken; - *pnToken = zOut - pCsr->zToken; - *piStart = (zStart - pCsr->aInput); - *piEnd = (zEnd - pCsr->aInput); + *pnToken = (int)(zOut - pCsr->zToken); + *piStart = (int)(zStart - pCsr->aInput); + *piEnd = (int)(zEnd - pCsr->aInput); *piPos = pCsr->iToken++; return SQLITE_OK; } @@ -141818,7 +144273,7 @@ SQLITE_PRIVATE void sqlite3Fts3UnicodeTokenizer(sqlite3_tokenizer_module const * } #endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3) */ -#endif /* ifndef SQLITE_ENABLE_FTS4_UNICODE61 */ +#endif /* ifndef SQLITE_DISABLE_FTS3_UNICODE */ /************** End of fts3_unicode.c ****************************************/ /************** Begin file fts3_unicode2.c ***********************************/ @@ -141839,7 +144294,7 @@ SQLITE_PRIVATE void sqlite3Fts3UnicodeTokenizer(sqlite3_tokenizer_module const * ** DO NOT EDIT THIS MACHINE GENERATED FILE. */ -#if defined(SQLITE_ENABLE_FTS4_UNICODE61) +#ifndef SQLITE_DISABLE_FTS3_UNICODE #if defined(SQLITE_ENABLE_FTS3) || defined(SQLITE_ENABLE_FTS4) /* #include */ @@ -141863,7 +144318,7 @@ SQLITE_PRIVATE int sqlite3FtsUnicodeIsalnum(int c){ ** C. It is not possible to represent a range larger than 1023 codepoints ** using this format. */ - const static unsigned int aEntry[] = { + static const unsigned int aEntry[] = { 0x00000030, 0x0000E807, 0x00016C06, 0x0001EC2F, 0x0002AC07, 0x0002D001, 0x0002D803, 0x0002EC01, 0x0002FC01, 0x00035C01, 0x0003DC01, 0x000B0804, 0x000B480E, 0x000B9407, 0x000BB401, @@ -141955,7 +144410,7 @@ SQLITE_PRIVATE int sqlite3FtsUnicodeIsalnum(int c){ return ( (aAscii[c >> 5] & (1 << (c & 0x001F)))==0 ); }else if( c<(1<<22) ){ unsigned int key = (((unsigned int)c)<<10) | 0x000003FF; - int iRes; + int iRes = 0; int iHi = sizeof(aEntry)/sizeof(aEntry[0]) - 1; int iLo = 0; while( iHi>=iLo ){ @@ -142026,7 +144481,7 @@ static int remove_diacritic(int c){ } assert( key>=aDia[iRes] ); return ((c > (aDia[iRes]>>3) + (aDia[iRes]&0x07)) ? c : (int)aChar[iRes]); -}; +} /* @@ -142186,7 +144641,7 @@ SQLITE_PRIVATE int sqlite3FtsUnicodeFold(int c, int bRemoveDiacritic){ return ret; } #endif /* defined(SQLITE_ENABLE_FTS3) || defined(SQLITE_ENABLE_FTS4) */ -#endif /* !defined(SQLITE_ENABLE_FTS4_UNICODE61) */ +#endif /* !defined(SQLITE_DISABLE_FTS3_UNICODE) */ /************** End of fts3_unicode2.c ***************************************/ /************** Begin file rtree.c *******************************************/ @@ -142246,48 +144701,6 @@ SQLITE_PRIVATE int sqlite3FtsUnicodeFold(int c, int bRemoveDiacritic){ #if !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_RTREE) -/* -** This file contains an implementation of a couple of different variants -** of the r-tree algorithm. See the README file for further details. The -** same data-structure is used for all, but the algorithms for insert and -** delete operations vary. The variants used are selected at compile time -** by defining the following symbols: -*/ - -/* Either, both or none of the following may be set to activate -** r*tree variant algorithms. -*/ -#define VARIANT_RSTARTREE_CHOOSESUBTREE 0 -#define VARIANT_RSTARTREE_REINSERT 1 - -/* -** Exactly one of the following must be set to 1. -*/ -#define VARIANT_GUTTMAN_QUADRATIC_SPLIT 0 -#define VARIANT_GUTTMAN_LINEAR_SPLIT 0 -#define VARIANT_RSTARTREE_SPLIT 1 - -#define VARIANT_GUTTMAN_SPLIT \ - (VARIANT_GUTTMAN_LINEAR_SPLIT||VARIANT_GUTTMAN_QUADRATIC_SPLIT) - -#if VARIANT_GUTTMAN_QUADRATIC_SPLIT - #define PickNext QuadraticPickNext - #define PickSeeds QuadraticPickSeeds - #define AssignCells splitNodeGuttman -#endif -#if VARIANT_GUTTMAN_LINEAR_SPLIT - #define PickNext LinearPickNext - #define PickSeeds LinearPickSeeds - #define AssignCells splitNodeGuttman -#endif -#if VARIANT_RSTARTREE_SPLIT - #define AssignCells splitNodeStartree -#endif - -#if !defined(NDEBUG) && !defined(SQLITE_DEBUG) -# define NDEBUG 1 -#endif - #ifndef SQLITE_CORE SQLITE_EXTENSION_INIT1 #else @@ -142295,11 +144708,13 @@ SQLITE_PRIVATE int sqlite3FtsUnicodeFold(int c, int bRemoveDiacritic){ /* #include */ /* #include */ +/* #include */ #ifndef SQLITE_AMALGAMATION #include "sqlite3rtree.h" typedef sqlite3_int64 i64; typedef unsigned char u8; +typedef unsigned short u16; typedef unsigned int u32; #endif @@ -142317,6 +144732,7 @@ typedef struct RtreeConstraint RtreeConstraint; typedef struct RtreeMatchArg RtreeMatchArg; typedef struct RtreeGeomCallback RtreeGeomCallback; typedef union RtreeCoord RtreeCoord; +typedef struct RtreeSearchPoint RtreeSearchPoint; /* The rtree may have between 1 and RTREE_MAX_DIMENSIONS dimensions. */ #define RTREE_MAX_DIMENSIONS 5 @@ -142325,7 +144741,7 @@ typedef union RtreeCoord RtreeCoord; ** ever contain very many entries, so a fixed number of buckets is ** used. */ -#define HASHSIZE 128 +#define HASHSIZE 97 /* The xBestIndex method of this virtual table requires an estimate of ** the number of rows in the virtual table to calculate the costs of @@ -142341,15 +144757,15 @@ typedef union RtreeCoord RtreeCoord; ** An rtree virtual-table object. */ struct Rtree { - sqlite3_vtab base; + sqlite3_vtab base; /* Base class. Must be first */ sqlite3 *db; /* Host database connection */ int iNodeSize; /* Size in bytes of each node in the node table */ - int nDim; /* Number of dimensions */ - int nBytesPerCell; /* Bytes consumed per cell */ + u8 nDim; /* Number of dimensions */ + u8 eCoordType; /* RTREE_COORD_REAL32 or RTREE_COORD_INT32 */ + u8 nBytesPerCell; /* Bytes consumed per cell */ int iDepth; /* Current depth of the r-tree structure */ char *zDb; /* Name of database containing r-tree table */ char *zName; /* Name of r-tree table */ - RtreeNode *aHash[HASHSIZE]; /* Hash table of in-memory nodes. */ int nBusy; /* Current number of users of this structure */ i64 nRowEst; /* Estimated number of rows in this table */ @@ -142376,10 +144792,10 @@ struct Rtree { sqlite3_stmt *pWriteParent; sqlite3_stmt *pDeleteParent; - int eCoordType; + RtreeNode *aHash[HASHSIZE]; /* Hash table of in-memory nodes. */ }; -/* Possible values for eCoordType: */ +/* Possible values for Rtree.eCoordType: */ #define RTREE_COORD_REAL32 0 #define RTREE_COORD_INT32 1 @@ -142391,11 +144807,30 @@ struct Rtree { #ifdef SQLITE_RTREE_INT_ONLY typedef sqlite3_int64 RtreeDValue; /* High accuracy coordinate */ typedef int RtreeValue; /* Low accuracy coordinate */ +# define RTREE_ZERO 0 #else typedef double RtreeDValue; /* High accuracy coordinate */ typedef float RtreeValue; /* Low accuracy coordinate */ +# define RTREE_ZERO 0.0 #endif +/* +** When doing a search of an r-tree, instances of the following structure +** record intermediate results from the tree walk. +** +** The id is always a node-id. For iLevel>=1 the id is the node-id of +** the node that the RtreeSearchPoint represents. When iLevel==0, however, +** the id is of the parent node and the cell that RtreeSearchPoint +** represents is the iCell-th entry in the parent node. +*/ +struct RtreeSearchPoint { + RtreeDValue rScore; /* The score for this node. Smallest goes first. */ + sqlite3_int64 id; /* Node ID */ + u8 iLevel; /* 0=entries. 1=leaf node. 2+ for higher */ + u8 eWithin; /* PARTLY_WITHIN or FULLY_WITHIN */ + u8 iCell; /* Cell index within the node */ +}; + /* ** The minimum number of cells allowed for a node is a third of the ** maximum. In Gutman's notation: @@ -142418,21 +144853,44 @@ struct Rtree { */ #define RTREE_MAX_DEPTH 40 + +/* +** Number of entries in the cursor RtreeNode cache. The first entry is +** used to cache the RtreeNode for RtreeCursor.sPoint. The remaining +** entries cache the RtreeNode for the first elements of the priority queue. +*/ +#define RTREE_CACHE_SZ 5 + /* ** An rtree cursor object. */ struct RtreeCursor { - sqlite3_vtab_cursor base; - RtreeNode *pNode; /* Node cursor is currently pointing at */ - int iCell; /* Index of current cell in pNode */ + sqlite3_vtab_cursor base; /* Base class. Must be first */ + u8 atEOF; /* True if at end of search */ + u8 bPoint; /* True if sPoint is valid */ int iStrategy; /* Copy of idxNum search parameter */ int nConstraint; /* Number of entries in aConstraint */ RtreeConstraint *aConstraint; /* Search constraints. */ + int nPointAlloc; /* Number of slots allocated for aPoint[] */ + int nPoint; /* Number of slots used in aPoint[] */ + int mxLevel; /* iLevel value for root of the tree */ + RtreeSearchPoint *aPoint; /* Priority queue for search points */ + RtreeSearchPoint sPoint; /* Cached next search point */ + RtreeNode *aNode[RTREE_CACHE_SZ]; /* Rtree node cache */ + u32 anQueue[RTREE_MAX_DEPTH+1]; /* Number of queued entries by iLevel */ }; +/* Return the Rtree of a RtreeCursor */ +#define RTREE_OF_CURSOR(X) ((Rtree*)((X)->base.pVtab)) + +/* +** A coordinate can be either a floating point number or a integer. All +** coordinates within a single R-Tree are always of the same time. +*/ union RtreeCoord { - RtreeValue f; - int i; + RtreeValue f; /* Floating point value */ + int i; /* Integer value */ + u32 u; /* Unsigned for byte-order conversions */ }; /* @@ -142457,38 +144915,67 @@ union RtreeCoord { struct RtreeConstraint { int iCoord; /* Index of constrained coordinate */ int op; /* Constraining operation */ - RtreeDValue rValue; /* Constraint value. */ - int (*xGeom)(sqlite3_rtree_geometry*, int, RtreeDValue*, int*); - sqlite3_rtree_geometry *pGeom; /* Constraint callback argument for a MATCH */ + union { + RtreeDValue rValue; /* Constraint value. */ + int (*xGeom)(sqlite3_rtree_geometry*,int,RtreeDValue*,int*); + int (*xQueryFunc)(sqlite3_rtree_query_info*); + } u; + sqlite3_rtree_query_info *pInfo; /* xGeom and xQueryFunc argument */ }; /* Possible values for RtreeConstraint.op */ -#define RTREE_EQ 0x41 -#define RTREE_LE 0x42 -#define RTREE_LT 0x43 -#define RTREE_GE 0x44 -#define RTREE_GT 0x45 -#define RTREE_MATCH 0x46 +#define RTREE_EQ 0x41 /* A */ +#define RTREE_LE 0x42 /* B */ +#define RTREE_LT 0x43 /* C */ +#define RTREE_GE 0x44 /* D */ +#define RTREE_GT 0x45 /* E */ +#define RTREE_MATCH 0x46 /* F: Old-style sqlite3_rtree_geometry_callback() */ +#define RTREE_QUERY 0x47 /* G: New-style sqlite3_rtree_query_callback() */ + /* ** An rtree structure node. */ struct RtreeNode { - RtreeNode *pParent; /* Parent node */ - i64 iNode; - int nRef; - int isDirty; - u8 *zData; - RtreeNode *pNext; /* Next node in this hash chain */ + RtreeNode *pParent; /* Parent node */ + i64 iNode; /* The node number */ + int nRef; /* Number of references to this node */ + int isDirty; /* True if the node needs to be written to disk */ + u8 *zData; /* Content of the node, as should be on disk */ + RtreeNode *pNext; /* Next node in this hash collision chain */ }; + +/* Return the number of cells in a node */ #define NCELL(pNode) readInt16(&(pNode)->zData[2]) /* -** Structure to store a deserialized rtree record. +** A single cell from a node, deserialized */ struct RtreeCell { - i64 iRowid; - RtreeCoord aCoord[RTREE_MAX_DIMENSIONS*2]; + i64 iRowid; /* Node or entry ID */ + RtreeCoord aCoord[RTREE_MAX_DIMENSIONS*2]; /* Bounding box coordinates */ +}; + + +/* +** This object becomes the sqlite3_user_data() for the SQL functions +** that are created by sqlite3_rtree_geometry_callback() and +** sqlite3_rtree_query_callback() and which appear on the right of MATCH +** operators in order to constrain a search. +** +** xGeom and xQueryFunc are the callback functions. Exactly one of +** xGeom and xQueryFunc fields is non-NULL, depending on whether the +** SQL function was created using sqlite3_rtree_geometry_callback() or +** sqlite3_rtree_query_callback(). +** +** This object is deleted automatically by the destructor mechanism in +** sqlite3_create_function_v2(). +*/ +struct RtreeGeomCallback { + int (*xGeom)(sqlite3_rtree_geometry*, int, RtreeDValue*, int*); + int (*xQueryFunc)(sqlite3_rtree_query_info*); + void (*xDestructor)(void*); + void *pContext; }; @@ -142500,29 +144987,16 @@ struct RtreeCell { #define RTREE_GEOMETRY_MAGIC 0x891245AB /* -** An instance of this structure must be supplied as a blob argument to -** the right-hand-side of an SQL MATCH operator used to constrain an -** r-tree query. +** An instance of this structure (in the form of a BLOB) is returned by +** the SQL functions that sqlite3_rtree_geometry_callback() and +** sqlite3_rtree_query_callback() create, and is read as the right-hand +** operand to the MATCH operator of an R-Tree. */ struct RtreeMatchArg { - u32 magic; /* Always RTREE_GEOMETRY_MAGIC */ - int (*xGeom)(sqlite3_rtree_geometry *, int, RtreeDValue*, int *); - void *pContext; - int nParam; - RtreeDValue aParam[1]; -}; - -/* -** When a geometry callback is created (see sqlite3_rtree_geometry_callback), -** a single instance of the following structure is allocated. It is used -** as the context for the user-function created by by s_r_g_c(). The object -** is eventually deleted by the destructor mechanism provided by -** sqlite3_create_function_v2() (which is called by s_r_g_c() to create -** the geometry callback function). -*/ -struct RtreeGeomCallback { - int (*xGeom)(sqlite3_rtree_geometry*, int, RtreeDValue*, int*); - void *pContext; + u32 magic; /* Always RTREE_GEOMETRY_MAGIC */ + RtreeGeomCallback cb; /* Info about the callback functions */ + int nParam; /* Number of parameters to the SQL function */ + RtreeDValue aParam[1]; /* Values for parameters to the SQL function */ }; #ifndef MAX @@ -142616,10 +145090,7 @@ static void nodeZero(Rtree *pRtree, RtreeNode *p){ ** in the Rtree.aHash table. */ static int nodeHash(i64 iNode){ - return ( - (iNode>>56) ^ (iNode>>48) ^ (iNode>>40) ^ (iNode>>32) ^ - (iNode>>24) ^ (iNode>>16) ^ (iNode>> 8) ^ (iNode>> 0) - ) % HASHSIZE; + return iNode % HASHSIZE; } /* @@ -142679,8 +145150,7 @@ static RtreeNode *nodeNew(Rtree *pRtree, RtreeNode *pParent){ /* ** Obtain a reference to an r-tree node. */ -static int -nodeAcquire( +static int nodeAcquire( Rtree *pRtree, /* R-tree structure */ i64 iNode, /* Node number to load */ RtreeNode *pParent, /* Either the parent node or NULL */ @@ -142769,10 +145239,10 @@ nodeAcquire( ** Overwrite cell iCell of node pNode with the contents of pCell. */ static void nodeOverwriteCell( - Rtree *pRtree, - RtreeNode *pNode, - RtreeCell *pCell, - int iCell + Rtree *pRtree, /* The overall R-Tree */ + RtreeNode *pNode, /* The node into which the cell is to be written */ + RtreeCell *pCell, /* The cell to write */ + int iCell /* Index into pNode into which pCell is written */ ){ int ii; u8 *p = &pNode->zData[4 + pRtree->nBytesPerCell*iCell]; @@ -142784,7 +145254,7 @@ static void nodeOverwriteCell( } /* -** Remove cell the cell with index iCell from node pNode. +** Remove the cell with index iCell from node pNode. */ static void nodeDeleteCell(Rtree *pRtree, RtreeNode *pNode, int iCell){ u8 *pDst = &pNode->zData[4 + pRtree->nBytesPerCell*iCell]; @@ -142801,11 +145271,10 @@ static void nodeDeleteCell(Rtree *pRtree, RtreeNode *pNode, int iCell){ ** ** If there is not enough free space in pNode, return SQLITE_FULL. */ -static int -nodeInsertCell( - Rtree *pRtree, - RtreeNode *pNode, - RtreeCell *pCell +static int nodeInsertCell( + Rtree *pRtree, /* The overall R-Tree */ + RtreeNode *pNode, /* Write new cell into this node */ + RtreeCell *pCell /* The cell to be inserted */ ){ int nCell; /* Current number of cells in pNode */ int nMaxCell; /* Maximum number of cells for pNode */ @@ -142826,8 +145295,7 @@ nodeInsertCell( /* ** If the node is dirty, write it out to the database. */ -static int -nodeWrite(Rtree *pRtree, RtreeNode *pNode){ +static int nodeWrite(Rtree *pRtree, RtreeNode *pNode){ int rc = SQLITE_OK; if( pNode->isDirty ){ sqlite3_stmt *p = pRtree->pWriteNode; @@ -142852,8 +145320,7 @@ nodeWrite(Rtree *pRtree, RtreeNode *pNode){ ** Release a reference to a node. If the node is dirty and the reference ** count drops to zero, the node data is written to the database. */ -static int -nodeRelease(Rtree *pRtree, RtreeNode *pNode){ +static int nodeRelease(Rtree *pRtree, RtreeNode *pNode){ int rc = SQLITE_OK; if( pNode ){ assert( pNode->nRef>0 ); @@ -142881,9 +145348,9 @@ nodeRelease(Rtree *pRtree, RtreeNode *pNode){ ** an internal node, then the 64-bit integer is a child page number. */ static i64 nodeGetRowid( - Rtree *pRtree, - RtreeNode *pNode, - int iCell + Rtree *pRtree, /* The overall R-Tree */ + RtreeNode *pNode, /* The node from which to extract the ID */ + int iCell /* The cell index from which to extract the ID */ ){ assert( iCellzData[4 + pRtree->nBytesPerCell*iCell]); @@ -142893,11 +145360,11 @@ static i64 nodeGetRowid( ** Return coordinate iCoord from cell iCell in node pNode. */ static void nodeGetCoord( - Rtree *pRtree, - RtreeNode *pNode, - int iCell, - int iCoord, - RtreeCoord *pCoord /* Space to write result to */ + Rtree *pRtree, /* The overall R-Tree */ + RtreeNode *pNode, /* The node from which to extract a coordinate */ + int iCell, /* The index of the cell within the node */ + int iCoord, /* Which coordinate to extract */ + RtreeCoord *pCoord /* OUT: Space to write result to */ ){ readCoord(&pNode->zData[12 + pRtree->nBytesPerCell*iCell + 4*iCoord], pCoord); } @@ -142907,15 +145374,20 @@ static void nodeGetCoord( ** to by pCell with the results. */ static void nodeGetCell( - Rtree *pRtree, - RtreeNode *pNode, - int iCell, - RtreeCell *pCell + Rtree *pRtree, /* The overall R-Tree */ + RtreeNode *pNode, /* The node containing the cell to be read */ + int iCell, /* Index of the cell within the node */ + RtreeCell *pCell /* OUT: Write the cell contents here */ ){ - int ii; + u8 *pData; + u8 *pEnd; + RtreeCoord *pCoord; pCell->iRowid = nodeGetRowid(pRtree, pNode, iCell); - for(ii=0; iinDim*2; ii++){ - nodeGetCoord(pRtree, pNode, iCell, ii, &pCell->aCoord[ii]); + pData = pNode->zData + (12 + pRtree->nBytesPerCell*iCell); + pEnd = pData + pRtree->nDim*8; + pCoord = pCell->aCoord; + for(; pDataaConstraint ){ int i; /* Used to iterate through constraint array */ for(i=0; inConstraint; i++){ - sqlite3_rtree_geometry *pGeom = pCsr->aConstraint[i].pGeom; - if( pGeom ){ - if( pGeom->xDelUser ) pGeom->xDelUser(pGeom->pUser); - sqlite3_free(pGeom); + sqlite3_rtree_query_info *pInfo = pCsr->aConstraint[i].pInfo; + if( pInfo ){ + if( pInfo->xDelUser ) pInfo->xDelUser(pInfo->pUser); + sqlite3_free(pInfo); } } sqlite3_free(pCsr->aConstraint); @@ -143057,12 +145529,13 @@ static void freeCursorConstraints(RtreeCursor *pCsr){ */ static int rtreeClose(sqlite3_vtab_cursor *cur){ Rtree *pRtree = (Rtree *)(cur->pVtab); - int rc; + int ii; RtreeCursor *pCsr = (RtreeCursor *)cur; freeCursorConstraints(pCsr); - rc = nodeRelease(pRtree, pCsr->pNode); + sqlite3_free(pCsr->aPoint); + for(ii=0; iiaNode[ii]); sqlite3_free(pCsr); - return rc; + return SQLITE_OK; } /* @@ -143073,196 +145546,166 @@ static int rtreeClose(sqlite3_vtab_cursor *cur){ */ static int rtreeEof(sqlite3_vtab_cursor *cur){ RtreeCursor *pCsr = (RtreeCursor *)cur; - return (pCsr->pNode==0); + return pCsr->atEOF; } /* -** The r-tree constraint passed as the second argument to this function is -** guaranteed to be a MATCH constraint. -*/ -static int testRtreeGeom( - Rtree *pRtree, /* R-Tree object */ - RtreeConstraint *pConstraint, /* MATCH constraint to test */ - RtreeCell *pCell, /* Cell to test */ - int *pbRes /* OUT: Test result */ -){ - int i; - RtreeDValue aCoord[RTREE_MAX_DIMENSIONS*2]; - int nCoord = pRtree->nDim*2; - - assert( pConstraint->op==RTREE_MATCH ); - assert( pConstraint->pGeom ); - - for(i=0; iaCoord[i]); - } - return pConstraint->xGeom(pConstraint->pGeom, nCoord, aCoord, pbRes); -} - -/* -** Cursor pCursor currently points to a cell in a non-leaf page. -** Set *pbEof to true if the sub-tree headed by the cell is filtered -** (excluded) by the constraints in the pCursor->aConstraint[] -** array, or false otherwise. +** Convert raw bits from the on-disk RTree record into a coordinate value. +** The on-disk format is big-endian and needs to be converted for little- +** endian platforms. The on-disk record stores integer coordinates if +** eInt is true and it stores 32-bit floating point records if eInt is +** false. a[] is the four bytes of the on-disk record to be decoded. +** Store the results in "r". ** -** Return SQLITE_OK if successful or an SQLite error code if an error -** occurs within a geometry callback. +** There are three versions of this macro, one each for little-endian and +** big-endian processors and a third generic implementation. The endian- +** specific implementations are much faster and are preferred if the +** processor endianness is known at compile-time. The SQLITE_BYTEORDER +** macro is part of sqliteInt.h and hence the endian-specific +** implementation will only be used if this module is compiled as part +** of the amalgamation. */ -static int testRtreeCell(Rtree *pRtree, RtreeCursor *pCursor, int *pbEof){ - RtreeCell cell; - int ii; - int bRes = 0; - int rc = SQLITE_OK; - - nodeGetCell(pRtree, pCursor->pNode, pCursor->iCell, &cell); - for(ii=0; bRes==0 && iinConstraint; ii++){ - RtreeConstraint *p = &pCursor->aConstraint[ii]; - RtreeDValue cell_min = DCOORD(cell.aCoord[(p->iCoord>>1)*2]); - RtreeDValue cell_max = DCOORD(cell.aCoord[(p->iCoord>>1)*2+1]); - - assert(p->op==RTREE_LE || p->op==RTREE_LT || p->op==RTREE_GE - || p->op==RTREE_GT || p->op==RTREE_EQ || p->op==RTREE_MATCH - ); - - switch( p->op ){ - case RTREE_LE: case RTREE_LT: - bRes = p->rValuerValue>cell_max; - break; - - case RTREE_EQ: - bRes = (p->rValue>cell_max || p->rValueop==RTREE_MATCH ); - rc = testRtreeGeom(pRtree, p, &cell, &bRes); - bRes = !bRes; - break; - } - } - } - - *pbEof = bRes; - return rc; +#if defined(SQLITE_BYTEORDER) && SQLITE_BYTEORDER==1234 +#define RTREE_DECODE_COORD(eInt, a, r) { \ + RtreeCoord c; /* Coordinate decoded */ \ + memcpy(&c.u,a,4); \ + c.u = ((c.u>>24)&0xff)|((c.u>>8)&0xff00)| \ + ((c.u&0xff)<<24)|((c.u&0xff00)<<8); \ + r = eInt ? (sqlite3_rtree_dbl)c.i : (sqlite3_rtree_dbl)c.f; \ } - -/* -** Test if the cell that cursor pCursor currently points to -** would be filtered (excluded) by the constraints in the -** pCursor->aConstraint[] array. If so, set *pbEof to true before -** returning. If the cell is not filtered (excluded) by the constraints, -** set pbEof to zero. -** -** Return SQLITE_OK if successful or an SQLite error code if an error -** occurs within a geometry callback. -** -** This function assumes that the cell is part of a leaf node. -*/ -static int testRtreeEntry(Rtree *pRtree, RtreeCursor *pCursor, int *pbEof){ - RtreeCell cell; - int ii; - *pbEof = 0; - - nodeGetCell(pRtree, pCursor->pNode, pCursor->iCell, &cell); - for(ii=0; iinConstraint; ii++){ - RtreeConstraint *p = &pCursor->aConstraint[ii]; - RtreeDValue coord = DCOORD(cell.aCoord[p->iCoord]); - int res; - assert(p->op==RTREE_LE || p->op==RTREE_LT || p->op==RTREE_GE - || p->op==RTREE_GT || p->op==RTREE_EQ || p->op==RTREE_MATCH - ); - switch( p->op ){ - case RTREE_LE: res = (coord<=p->rValue); break; - case RTREE_LT: res = (coordrValue); break; - case RTREE_GE: res = (coord>=p->rValue); break; - case RTREE_GT: res = (coord>p->rValue); break; - case RTREE_EQ: res = (coord==p->rValue); break; - default: { - int rc; - assert( p->op==RTREE_MATCH ); - rc = testRtreeGeom(pRtree, p, &cell, &res); - if( rc!=SQLITE_OK ){ - return rc; - } - break; - } - } - - if( !res ){ - *pbEof = 1; - return SQLITE_OK; - } - } - - return SQLITE_OK; +#elif defined(SQLITE_BYTEORDER) && SQLITE_BYTEORDER==4321 +#define RTREE_DECODE_COORD(eInt, a, r) { \ + RtreeCoord c; /* Coordinate decoded */ \ + memcpy(&c.u,a,4); \ + r = eInt ? (sqlite3_rtree_dbl)c.i : (sqlite3_rtree_dbl)c.f; \ } +#else +#define RTREE_DECODE_COORD(eInt, a, r) { \ + RtreeCoord c; /* Coordinate decoded */ \ + c.u = ((u32)a[0]<<24) + ((u32)a[1]<<16) \ + +((u32)a[2]<<8) + a[3]; \ + r = eInt ? (sqlite3_rtree_dbl)c.i : (sqlite3_rtree_dbl)c.f; \ +} +#endif /* -** Cursor pCursor currently points at a node that heads a sub-tree of -** height iHeight (if iHeight==0, then the node is a leaf). Descend -** to point to the left-most cell of the sub-tree that matches the -** configured constraints. +** Check the RTree node or entry given by pCellData and p against the MATCH +** constraint pConstraint. */ -static int descendToCell( - Rtree *pRtree, - RtreeCursor *pCursor, - int iHeight, - int *pEof /* OUT: Set to true if cannot descend */ +static int rtreeCallbackConstraint( + RtreeConstraint *pConstraint, /* The constraint to test */ + int eInt, /* True if RTree holding integer coordinates */ + u8 *pCellData, /* Raw cell content */ + RtreeSearchPoint *pSearch, /* Container of this cell */ + sqlite3_rtree_dbl *prScore, /* OUT: score for the cell */ + int *peWithin /* OUT: visibility of the cell */ ){ - int isEof; - int rc; - int ii; - RtreeNode *pChild; - sqlite3_int64 iRowid; + int i; /* Loop counter */ + sqlite3_rtree_query_info *pInfo = pConstraint->pInfo; /* Callback info */ + int nCoord = pInfo->nCoord; /* No. of coordinates */ + int rc; /* Callback return code */ + sqlite3_rtree_dbl aCoord[RTREE_MAX_DIMENSIONS*2]; /* Decoded coordinates */ - RtreeNode *pSavedNode = pCursor->pNode; - int iSavedCell = pCursor->iCell; + assert( pConstraint->op==RTREE_MATCH || pConstraint->op==RTREE_QUERY ); + assert( nCoord==2 || nCoord==4 || nCoord==6 || nCoord==8 || nCoord==10 ); - assert( iHeight>=0 ); - - if( iHeight==0 ){ - rc = testRtreeEntry(pRtree, pCursor, &isEof); + if( pConstraint->op==RTREE_QUERY && pSearch->iLevel==1 ){ + pInfo->iRowid = readInt64(pCellData); + } + pCellData += 8; + for(i=0; iop==RTREE_MATCH ){ + rc = pConstraint->u.xGeom((sqlite3_rtree_geometry*)pInfo, + nCoord, aCoord, &i); + if( i==0 ) *peWithin = NOT_WITHIN; + *prScore = RTREE_ZERO; }else{ - rc = testRtreeCell(pRtree, pCursor, &isEof); - } - if( rc!=SQLITE_OK || isEof || iHeight==0 ){ - goto descend_to_cell_out; - } - - iRowid = nodeGetRowid(pRtree, pCursor->pNode, pCursor->iCell); - rc = nodeAcquire(pRtree, iRowid, pCursor->pNode, &pChild); - if( rc!=SQLITE_OK ){ - goto descend_to_cell_out; - } - - nodeRelease(pRtree, pCursor->pNode); - pCursor->pNode = pChild; - isEof = 1; - for(ii=0; isEof && iiiCell = ii; - rc = descendToCell(pRtree, pCursor, iHeight-1, &isEof); - if( rc!=SQLITE_OK ){ - goto descend_to_cell_out; + pInfo->aCoord = aCoord; + pInfo->iLevel = pSearch->iLevel - 1; + pInfo->rScore = pInfo->rParentScore = pSearch->rScore; + pInfo->eWithin = pInfo->eParentWithin = pSearch->eWithin; + rc = pConstraint->u.xQueryFunc(pInfo); + if( pInfo->eWithin<*peWithin ) *peWithin = pInfo->eWithin; + if( pInfo->rScore<*prScore || *prScorerScore; } } - - if( isEof ){ - assert( pCursor->pNode==pChild ); - nodeReference(pSavedNode); - nodeRelease(pRtree, pChild); - pCursor->pNode = pSavedNode; - pCursor->iCell = iSavedCell; - } - -descend_to_cell_out: - *pEof = isEof; return rc; } +/* +** Check the internal RTree node given by pCellData against constraint p. +** If this constraint cannot be satisfied by any child within the node, +** set *peWithin to NOT_WITHIN. +*/ +static void rtreeNonleafConstraint( + RtreeConstraint *p, /* The constraint to test */ + int eInt, /* True if RTree holds integer coordinates */ + u8 *pCellData, /* Raw cell content as appears on disk */ + int *peWithin /* Adjust downward, as appropriate */ +){ + sqlite3_rtree_dbl val; /* Coordinate value convert to a double */ + + /* p->iCoord might point to either a lower or upper bound coordinate + ** in a coordinate pair. But make pCellData point to the lower bound. + */ + pCellData += 8 + 4*(p->iCoord&0xfe); + + assert(p->op==RTREE_LE || p->op==RTREE_LT || p->op==RTREE_GE + || p->op==RTREE_GT || p->op==RTREE_EQ ); + switch( p->op ){ + case RTREE_LE: + case RTREE_LT: + case RTREE_EQ: + RTREE_DECODE_COORD(eInt, pCellData, val); + /* val now holds the lower bound of the coordinate pair */ + if( p->u.rValue>=val ) return; + if( p->op!=RTREE_EQ ) break; /* RTREE_LE and RTREE_LT end here */ + /* Fall through for the RTREE_EQ case */ + + default: /* RTREE_GT or RTREE_GE, or fallthrough of RTREE_EQ */ + pCellData += 4; + RTREE_DECODE_COORD(eInt, pCellData, val); + /* val now holds the upper bound of the coordinate pair */ + if( p->u.rValue<=val ) return; + } + *peWithin = NOT_WITHIN; +} + +/* +** Check the leaf RTree cell given by pCellData against constraint p. +** If this constraint is not satisfied, set *peWithin to NOT_WITHIN. +** If the constraint is satisfied, leave *peWithin unchanged. +** +** The constraint is of the form: xN op $val +** +** The op is given by p->op. The xN is p->iCoord-th coordinate in +** pCellData. $val is given by p->u.rValue. +*/ +static void rtreeLeafConstraint( + RtreeConstraint *p, /* The constraint to test */ + int eInt, /* True if RTree holds integer coordinates */ + u8 *pCellData, /* Raw cell content as appears on disk */ + int *peWithin /* Adjust downward, as appropriate */ +){ + RtreeDValue xN; /* Coordinate value converted to a double */ + + assert(p->op==RTREE_LE || p->op==RTREE_LT || p->op==RTREE_GE + || p->op==RTREE_GT || p->op==RTREE_EQ ); + pCellData += 8 + p->iCoord*4; + RTREE_DECODE_COORD(eInt, pCellData, xN); + switch( p->op ){ + case RTREE_LE: if( xN <= p->u.rValue ) return; break; + case RTREE_LT: if( xN < p->u.rValue ) return; break; + case RTREE_GE: if( xN >= p->u.rValue ) return; break; + case RTREE_GT: if( xN > p->u.rValue ) return; break; + default: if( xN == p->u.rValue ) return; break; + } + *peWithin = NOT_WITHIN; +} + /* ** One of the cells in node pNode is guaranteed to have a 64-bit ** integer value equal to iRowid. Return the index of this cell. @@ -143275,6 +145718,7 @@ static int nodeRowidIndex( ){ int ii; int nCell = NCELL(pNode); + assert( nCell<200 ); for(ii=0; iirScorerScore ) return -1; + if( pA->rScore>pB->rScore ) return +1; + if( pA->iLeveliLevel ) return -1; + if( pA->iLevel>pB->iLevel ) return +1; + return 0; +} + +/* +** Interchange to search points in a cursor. +*/ +static void rtreeSearchPointSwap(RtreeCursor *p, int i, int j){ + RtreeSearchPoint t = p->aPoint[i]; + assert( iaPoint[i] = p->aPoint[j]; + p->aPoint[j] = t; + i++; j++; + if( i=RTREE_CACHE_SZ ){ + nodeRelease(RTREE_OF_CURSOR(p), p->aNode[i]); + p->aNode[i] = 0; + }else{ + RtreeNode *pTemp = p->aNode[i]; + p->aNode[i] = p->aNode[j]; + p->aNode[j] = pTemp; + } + } +} + +/* +** Return the search point with the lowest current score. +*/ +static RtreeSearchPoint *rtreeSearchPointFirst(RtreeCursor *pCur){ + return pCur->bPoint ? &pCur->sPoint : pCur->nPoint ? pCur->aPoint : 0; +} + +/* +** Get the RtreeNode for the search point with the lowest score. +*/ +static RtreeNode *rtreeNodeOfFirstSearchPoint(RtreeCursor *pCur, int *pRC){ + sqlite3_int64 id; + int ii = 1 - pCur->bPoint; + assert( ii==0 || ii==1 ); + assert( pCur->bPoint || pCur->nPoint ); + if( pCur->aNode[ii]==0 ){ + assert( pRC!=0 ); + id = ii ? pCur->aPoint[0].id : pCur->sPoint.id; + *pRC = nodeAcquire(RTREE_OF_CURSOR(pCur), id, 0, &pCur->aNode[ii]); + } + return pCur->aNode[ii]; +} + +/* +** Push a new element onto the priority queue +*/ +static RtreeSearchPoint *rtreeEnqueue( + RtreeCursor *pCur, /* The cursor */ + RtreeDValue rScore, /* Score for the new search point */ + u8 iLevel /* Level for the new search point */ +){ + int i, j; + RtreeSearchPoint *pNew; + if( pCur->nPoint>=pCur->nPointAlloc ){ + int nNew = pCur->nPointAlloc*2 + 8; + pNew = sqlite3_realloc(pCur->aPoint, nNew*sizeof(pCur->aPoint[0])); + if( pNew==0 ) return 0; + pCur->aPoint = pNew; + pCur->nPointAlloc = nNew; + } + i = pCur->nPoint++; + pNew = pCur->aPoint + i; + pNew->rScore = rScore; + pNew->iLevel = iLevel; + assert( iLevel>=0 && iLevel<=RTREE_MAX_DEPTH ); + while( i>0 ){ + RtreeSearchPoint *pParent; + j = (i-1)/2; + pParent = pCur->aPoint + j; + if( rtreeSearchPointCompare(pNew, pParent)>=0 ) break; + rtreeSearchPointSwap(pCur, j, i); + i = j; + pNew = pParent; + } + return pNew; +} + +/* +** Allocate a new RtreeSearchPoint and return a pointer to it. Return +** NULL if malloc fails. +*/ +static RtreeSearchPoint *rtreeSearchPointNew( + RtreeCursor *pCur, /* The cursor */ + RtreeDValue rScore, /* Score for the new search point */ + u8 iLevel /* Level for the new search point */ +){ + RtreeSearchPoint *pNew, *pFirst; + pFirst = rtreeSearchPointFirst(pCur); + pCur->anQueue[iLevel]++; + if( pFirst==0 + || pFirst->rScore>rScore + || (pFirst->rScore==rScore && pFirst->iLevel>iLevel) + ){ + if( pCur->bPoint ){ + int ii; + pNew = rtreeEnqueue(pCur, rScore, iLevel); + if( pNew==0 ) return 0; + ii = (int)(pNew - pCur->aPoint) + 1; + if( iiaNode[ii]==0 ); + pCur->aNode[ii] = pCur->aNode[0]; + }else{ + nodeRelease(RTREE_OF_CURSOR(pCur), pCur->aNode[0]); + } + pCur->aNode[0] = 0; + *pNew = pCur->sPoint; + } + pCur->sPoint.rScore = rScore; + pCur->sPoint.iLevel = iLevel; + pCur->bPoint = 1; + return &pCur->sPoint; + }else{ + return rtreeEnqueue(pCur, rScore, iLevel); + } +} + +#if 0 +/* Tracing routines for the RtreeSearchPoint queue */ +static void tracePoint(RtreeSearchPoint *p, int idx, RtreeCursor *pCur){ + if( idx<0 ){ printf(" s"); }else{ printf("%2d", idx); } + printf(" %d.%05lld.%02d %g %d", + p->iLevel, p->id, p->iCell, p->rScore, p->eWithin + ); + idx++; + if( idxaNode[idx]); + }else{ + printf("\n"); + } +} +static void traceQueue(RtreeCursor *pCur, const char *zPrefix){ + int ii; + printf("=== %9s ", zPrefix); + if( pCur->bPoint ){ + tracePoint(&pCur->sPoint, -1, pCur); + } + for(ii=0; iinPoint; ii++){ + if( ii>0 || pCur->bPoint ) printf(" "); + tracePoint(&pCur->aPoint[ii], ii, pCur); + } +} +# define RTREE_QUEUE_TRACE(A,B) traceQueue(A,B) +#else +# define RTREE_QUEUE_TRACE(A,B) /* no-op */ +#endif + +/* Remove the search point with the lowest current score. +*/ +static void rtreeSearchPointPop(RtreeCursor *p){ + int i, j, k, n; + i = 1 - p->bPoint; + assert( i==0 || i==1 ); + if( p->aNode[i] ){ + nodeRelease(RTREE_OF_CURSOR(p), p->aNode[i]); + p->aNode[i] = 0; + } + if( p->bPoint ){ + p->anQueue[p->sPoint.iLevel]--; + p->bPoint = 0; + }else if( p->nPoint ){ + p->anQueue[p->aPoint[0].iLevel]--; + n = --p->nPoint; + p->aPoint[0] = p->aPoint[n]; + if( naNode[1] = p->aNode[n+1]; + p->aNode[n+1] = 0; + } + i = 0; + while( (j = i*2+1)aPoint[k], &p->aPoint[j])<0 ){ + if( rtreeSearchPointCompare(&p->aPoint[k], &p->aPoint[i])<0 ){ + rtreeSearchPointSwap(p, i, k); + i = k; + }else{ + break; + } + }else{ + if( rtreeSearchPointCompare(&p->aPoint[j], &p->aPoint[i])<0 ){ + rtreeSearchPointSwap(p, i, j); + i = j; + }else{ + break; + } + } + } + } +} + + +/* +** Continue the search on cursor pCur until the front of the queue +** contains an entry suitable for returning as a result-set row, +** or until the RtreeSearchPoint queue is empty, indicating that the +** query has completed. +*/ +static int rtreeStepToLeaf(RtreeCursor *pCur){ + RtreeSearchPoint *p; + Rtree *pRtree = RTREE_OF_CURSOR(pCur); + RtreeNode *pNode; + int eWithin; + int rc = SQLITE_OK; + int nCell; + int nConstraint = pCur->nConstraint; + int ii; + int eInt; + RtreeSearchPoint x; + + eInt = pRtree->eCoordType==RTREE_COORD_INT32; + while( (p = rtreeSearchPointFirst(pCur))!=0 && p->iLevel>0 ){ + pNode = rtreeNodeOfFirstSearchPoint(pCur, &rc); + if( rc ) return rc; + nCell = NCELL(pNode); + assert( nCell<200 ); + while( p->iCellzData + (4+pRtree->nBytesPerCell*p->iCell); + eWithin = FULLY_WITHIN; + for(ii=0; iiaConstraint + ii; + if( pConstraint->op>=RTREE_MATCH ){ + rc = rtreeCallbackConstraint(pConstraint, eInt, pCellData, p, + &rScore, &eWithin); + if( rc ) return rc; + }else if( p->iLevel==1 ){ + rtreeLeafConstraint(pConstraint, eInt, pCellData, &eWithin); + }else{ + rtreeNonleafConstraint(pConstraint, eInt, pCellData, &eWithin); + } + if( eWithin==NOT_WITHIN ) break; + } + p->iCell++; + if( eWithin==NOT_WITHIN ) continue; + x.iLevel = p->iLevel - 1; + if( x.iLevel ){ + x.id = readInt64(pCellData); + x.iCell = 0; + }else{ + x.id = p->id; + x.iCell = p->iCell - 1; + } + if( p->iCell>=nCell ){ + RTREE_QUEUE_TRACE(pCur, "POP-S:"); + rtreeSearchPointPop(pCur); + } + if( rScoreeWithin = eWithin; + p->id = x.id; + p->iCell = x.iCell; + RTREE_QUEUE_TRACE(pCur, "PUSH-S:"); + break; + } + if( p->iCell>=nCell ){ + RTREE_QUEUE_TRACE(pCur, "POP-Se:"); + rtreeSearchPointPop(pCur); + } + } + pCur->atEOF = p==0; + return SQLITE_OK; +} + /* ** Rtree virtual table module xNext method. */ static int rtreeNext(sqlite3_vtab_cursor *pVtabCursor){ - Rtree *pRtree = (Rtree *)(pVtabCursor->pVtab); RtreeCursor *pCsr = (RtreeCursor *)pVtabCursor; int rc = SQLITE_OK; - /* RtreeCursor.pNode must not be NULL. If is is NULL, then this cursor is - ** already at EOF. It is against the rules to call the xNext() method of - ** a cursor that has already reached EOF. - */ - assert( pCsr->pNode ); - - if( pCsr->iStrategy==1 ){ - /* This "scan" is a direct lookup by rowid. There is no next entry. */ - nodeRelease(pRtree, pCsr->pNode); - pCsr->pNode = 0; - }else{ - /* Move to the next entry that matches the configured constraints. */ - int iHeight = 0; - while( pCsr->pNode ){ - RtreeNode *pNode = pCsr->pNode; - int nCell = NCELL(pNode); - for(pCsr->iCell++; pCsr->iCelliCell++){ - int isEof; - rc = descendToCell(pRtree, pCsr, iHeight, &isEof); - if( rc!=SQLITE_OK || !isEof ){ - return rc; - } - } - pCsr->pNode = pNode->pParent; - rc = nodeParentIndex(pRtree, pNode, &pCsr->iCell); - if( rc!=SQLITE_OK ){ - return rc; - } - nodeReference(pCsr->pNode); - nodeRelease(pRtree, pNode); - iHeight++; - } - } - + /* Move to the next entry that matches the configured constraints. */ + RTREE_QUEUE_TRACE(pCsr, "POP-Nx:"); + rtreeSearchPointPop(pCsr); + rc = rtreeStepToLeaf(pCsr); return rc; } @@ -143346,13 +146044,14 @@ static int rtreeNext(sqlite3_vtab_cursor *pVtabCursor){ ** Rtree virtual table module xRowid method. */ static int rtreeRowid(sqlite3_vtab_cursor *pVtabCursor, sqlite_int64 *pRowid){ - Rtree *pRtree = (Rtree *)pVtabCursor->pVtab; RtreeCursor *pCsr = (RtreeCursor *)pVtabCursor; - - assert(pCsr->pNode); - *pRowid = nodeGetRowid(pRtree, pCsr->pNode, pCsr->iCell); - - return SQLITE_OK; + RtreeSearchPoint *p = rtreeSearchPointFirst(pCsr); + int rc = SQLITE_OK; + RtreeNode *pNode = rtreeNodeOfFirstSearchPoint(pCsr, &rc); + if( rc==SQLITE_OK && p ){ + *pRowid = nodeGetRowid(RTREE_OF_CURSOR(pCsr), pNode, p->iCell); + } + return rc; } /* @@ -143361,13 +146060,18 @@ static int rtreeRowid(sqlite3_vtab_cursor *pVtabCursor, sqlite_int64 *pRowid){ static int rtreeColumn(sqlite3_vtab_cursor *cur, sqlite3_context *ctx, int i){ Rtree *pRtree = (Rtree *)cur->pVtab; RtreeCursor *pCsr = (RtreeCursor *)cur; + RtreeSearchPoint *p = rtreeSearchPointFirst(pCsr); + RtreeCoord c; + int rc = SQLITE_OK; + RtreeNode *pNode = rtreeNodeOfFirstSearchPoint(pCsr, &rc); + if( rc ) return rc; + if( p==0 ) return SQLITE_OK; if( i==0 ){ - i64 iRowid = nodeGetRowid(pRtree, pCsr->pNode, pCsr->iCell); - sqlite3_result_int64(ctx, iRowid); + sqlite3_result_int64(ctx, nodeGetRowid(pRtree, pNode, p->iCell)); }else{ - RtreeCoord c; - nodeGetCoord(pRtree, pCsr->pNode, pCsr->iCell, i-1, &c); + if( rc ) return rc; + nodeGetCoord(pRtree, pNode, p->iCell, i-1, &c); #ifndef SQLITE_RTREE_INT_ONLY if( pRtree->eCoordType==RTREE_COORD_REAL32 ){ sqlite3_result_double(ctx, c.f); @@ -143378,7 +146082,6 @@ static int rtreeColumn(sqlite3_vtab_cursor *cur, sqlite3_context *ctx, int i){ sqlite3_result_int(ctx, c.i); } } - return SQLITE_OK; } @@ -143389,12 +146092,18 @@ static int rtreeColumn(sqlite3_vtab_cursor *cur, sqlite3_context *ctx, int i){ ** *ppLeaf to 0 and return SQLITE_OK. If an error occurs, set *ppLeaf ** to zero and return an SQLite error code. */ -static int findLeafNode(Rtree *pRtree, i64 iRowid, RtreeNode **ppLeaf){ +static int findLeafNode( + Rtree *pRtree, /* RTree to search */ + i64 iRowid, /* The rowid searching for */ + RtreeNode **ppLeaf, /* Write the node here */ + sqlite3_int64 *piNode /* Write the node-id here */ +){ int rc; *ppLeaf = 0; sqlite3_bind_int64(pRtree->pReadRowid, 1, iRowid); if( sqlite3_step(pRtree->pReadRowid)==SQLITE_ROW ){ i64 iNode = sqlite3_column_int64(pRtree->pReadRowid, 0); + if( piNode ) *piNode = iNode; rc = nodeAcquire(pRtree, iNode, 0, ppLeaf); sqlite3_reset(pRtree->pReadRowid); }else{ @@ -143410,9 +146119,10 @@ static int findLeafNode(Rtree *pRtree, i64 iRowid, RtreeNode **ppLeaf){ ** operator. */ static int deserializeGeometry(sqlite3_value *pValue, RtreeConstraint *pCons){ - RtreeMatchArg *p; - sqlite3_rtree_geometry *pGeom; - int nBlob; + RtreeMatchArg *pBlob; /* BLOB returned by geometry function */ + sqlite3_rtree_query_info *pInfo; /* Callback information */ + int nBlob; /* Size of the geometry function blob */ + int nExpected; /* Expected size of the BLOB */ /* Check that value is actually a blob. */ if( sqlite3_value_type(pValue)!=SQLITE_BLOB ) return SQLITE_ERROR; @@ -143425,27 +146135,29 @@ static int deserializeGeometry(sqlite3_value *pValue, RtreeConstraint *pCons){ return SQLITE_ERROR; } - pGeom = (sqlite3_rtree_geometry *)sqlite3_malloc( - sizeof(sqlite3_rtree_geometry) + nBlob - ); - if( !pGeom ) return SQLITE_NOMEM; - memset(pGeom, 0, sizeof(sqlite3_rtree_geometry)); - p = (RtreeMatchArg *)&pGeom[1]; + pInfo = (sqlite3_rtree_query_info*)sqlite3_malloc( sizeof(*pInfo)+nBlob ); + if( !pInfo ) return SQLITE_NOMEM; + memset(pInfo, 0, sizeof(*pInfo)); + pBlob = (RtreeMatchArg*)&pInfo[1]; - memcpy(p, sqlite3_value_blob(pValue), nBlob); - if( p->magic!=RTREE_GEOMETRY_MAGIC - || nBlob!=(int)(sizeof(RtreeMatchArg) + (p->nParam-1)*sizeof(RtreeDValue)) - ){ - sqlite3_free(pGeom); + memcpy(pBlob, sqlite3_value_blob(pValue), nBlob); + nExpected = (int)(sizeof(RtreeMatchArg) + + (pBlob->nParam-1)*sizeof(RtreeDValue)); + if( pBlob->magic!=RTREE_GEOMETRY_MAGIC || nBlob!=nExpected ){ + sqlite3_free(pInfo); return SQLITE_ERROR; } + pInfo->pContext = pBlob->cb.pContext; + pInfo->nParam = pBlob->nParam; + pInfo->aParam = pBlob->aParam; - pGeom->pContext = p->pContext; - pGeom->nParam = p->nParam; - pGeom->aParam = p->aParam; - - pCons->xGeom = p->xGeom; - pCons->pGeom = pGeom; + if( pBlob->cb.xGeom ){ + pCons->u.xGeom = pBlob->cb.xGeom; + }else{ + pCons->op = RTREE_QUERY; + pCons->u.xQueryFunc = pBlob->cb.xQueryFunc; + } + pCons->pInfo = pInfo; return SQLITE_OK; } @@ -143459,44 +146171,59 @@ static int rtreeFilter( ){ Rtree *pRtree = (Rtree *)pVtabCursor->pVtab; RtreeCursor *pCsr = (RtreeCursor *)pVtabCursor; - RtreeNode *pRoot = 0; int ii; int rc = SQLITE_OK; + int iCell = 0; rtreeReference(pRtree); + /* Reset the cursor to the same state as rtreeOpen() leaves it in. */ freeCursorConstraints(pCsr); - pCsr->iStrategy = idxNum; + sqlite3_free(pCsr->aPoint); + memset(pCsr, 0, sizeof(RtreeCursor)); + pCsr->base.pVtab = (sqlite3_vtab*)pRtree; + pCsr->iStrategy = idxNum; if( idxNum==1 ){ /* Special case - lookup by rowid. */ RtreeNode *pLeaf; /* Leaf on which the required cell resides */ + RtreeSearchPoint *p; /* Search point for the the leaf */ i64 iRowid = sqlite3_value_int64(argv[0]); - rc = findLeafNode(pRtree, iRowid, &pLeaf); - pCsr->pNode = pLeaf; - if( pLeaf ){ - assert( rc==SQLITE_OK ); - rc = nodeRowidIndex(pRtree, pLeaf, iRowid, &pCsr->iCell); + i64 iNode = 0; + rc = findLeafNode(pRtree, iRowid, &pLeaf, &iNode); + if( rc==SQLITE_OK && pLeaf!=0 ){ + p = rtreeSearchPointNew(pCsr, RTREE_ZERO, 0); + assert( p!=0 ); /* Always returns pCsr->sPoint */ + pCsr->aNode[0] = pLeaf; + p->id = iNode; + p->eWithin = PARTLY_WITHIN; + rc = nodeRowidIndex(pRtree, pLeaf, iRowid, &iCell); + p->iCell = iCell; + RTREE_QUEUE_TRACE(pCsr, "PUSH-F1:"); + }else{ + pCsr->atEOF = 1; } }else{ /* Normal case - r-tree scan. Set up the RtreeCursor.aConstraint array ** with the configured constraints. */ - if( argc>0 ){ + rc = nodeAcquire(pRtree, 1, 0, &pRoot); + if( rc==SQLITE_OK && argc>0 ){ pCsr->aConstraint = sqlite3_malloc(sizeof(RtreeConstraint)*argc); pCsr->nConstraint = argc; if( !pCsr->aConstraint ){ rc = SQLITE_NOMEM; }else{ memset(pCsr->aConstraint, 0, sizeof(RtreeConstraint)*argc); + memset(pCsr->anQueue, 0, sizeof(u32)*(pRtree->iDepth + 1)); assert( (idxStr==0 && argc==0) || (idxStr && (int)strlen(idxStr)==argc*2) ); for(ii=0; iiaConstraint[ii]; p->op = idxStr[ii*2]; - p->iCoord = idxStr[ii*2+1]-'a'; - if( p->op==RTREE_MATCH ){ + p->iCoord = idxStr[ii*2+1]-'0'; + if( p->op>=RTREE_MATCH ){ /* A MATCH operator. The right-hand-side must be a blob that ** can be cast into an RtreeMatchArg object. One created using ** an sqlite3_rtree_geometry_callback() SQL user function. @@ -143505,41 +146232,35 @@ static int rtreeFilter( if( rc!=SQLITE_OK ){ break; } + p->pInfo->nCoord = pRtree->nDim*2; + p->pInfo->anQueue = pCsr->anQueue; + p->pInfo->mxLevel = pRtree->iDepth + 1; }else{ #ifdef SQLITE_RTREE_INT_ONLY - p->rValue = sqlite3_value_int64(argv[ii]); + p->u.rValue = sqlite3_value_int64(argv[ii]); #else - p->rValue = sqlite3_value_double(argv[ii]); + p->u.rValue = sqlite3_value_double(argv[ii]); #endif } } } } - if( rc==SQLITE_OK ){ - pCsr->pNode = 0; - rc = nodeAcquire(pRtree, 1, 0, &pRoot); - } - if( rc==SQLITE_OK ){ - int isEof = 1; - int nCell = NCELL(pRoot); - pCsr->pNode = pRoot; - for(pCsr->iCell=0; rc==SQLITE_OK && pCsr->iCelliCell++){ - assert( pCsr->pNode==pRoot ); - rc = descendToCell(pRtree, pCsr, pRtree->iDepth, &isEof); - if( !isEof ){ - break; - } - } - if( rc==SQLITE_OK && isEof ){ - assert( pCsr->pNode==pRoot ); - nodeRelease(pRtree, pRoot); - pCsr->pNode = 0; - } - assert( rc!=SQLITE_OK || !pCsr->pNode || pCsr->iCellpNode) ); + RtreeSearchPoint *pNew; + pNew = rtreeSearchPointNew(pCsr, RTREE_ZERO, pRtree->iDepth+1); + if( pNew==0 ) return SQLITE_NOMEM; + pNew->id = 1; + pNew->iCell = 0; + pNew->eWithin = PARTLY_WITHIN; + assert( pCsr->bPoint==1 ); + pCsr->aNode[0] = pRoot; + pRoot = 0; + RTREE_QUEUE_TRACE(pCsr, "PUSH-Fm:"); + rc = rtreeStepToLeaf(pCsr); } } + nodeRelease(pRtree, pRoot); rtreeRelease(pRtree); return rc; } @@ -143641,7 +146362,7 @@ static int rtreeBestIndex(sqlite3_vtab *tab, sqlite3_index_info *pIdxInfo){ break; } zIdxStr[iIdx++] = op; - zIdxStr[iIdx++] = p->iColumn - 1 + 'a'; + zIdxStr[iIdx++] = p->iColumn - 1 + '0'; pIdxInfo->aConstraintUsage[ii].argvIndex = (iIdx/2); pIdxInfo->aConstraintUsage[ii].omit = 1; } @@ -143734,62 +146455,32 @@ static RtreeDValue cellGrowth(Rtree *pRtree, RtreeCell *p, RtreeCell *pCell){ return (cellArea(pRtree, &cell)-area); } -#if VARIANT_RSTARTREE_CHOOSESUBTREE || VARIANT_RSTARTREE_SPLIT static RtreeDValue cellOverlap( Rtree *pRtree, RtreeCell *p, RtreeCell *aCell, - int nCell, - int iExclude + int nCell ){ int ii; - RtreeDValue overlap = 0.0; + RtreeDValue overlap = RTREE_ZERO; for(ii=0; iinDim*2); jj+=2){ - RtreeDValue x1, x2; - - x1 = MAX(DCOORD(p->aCoord[jj]), DCOORD(aCell[ii].aCoord[jj])); - x2 = MIN(DCOORD(p->aCoord[jj+1]), DCOORD(aCell[ii].aCoord[jj+1])); - - if( x2nDim*2); jj+=2){ + RtreeDValue x1, x2; + x1 = MAX(DCOORD(p->aCoord[jj]), DCOORD(aCell[ii].aCoord[jj])); + x2 = MIN(DCOORD(p->aCoord[jj+1]), DCOORD(aCell[ii].aCoord[jj+1])); + if( x2iDepth-1) ){ - int jj; - aCell = sqlite3_malloc(sizeof(RtreeCell)*nCell); - if( !aCell ){ - rc = SQLITE_NOMEM; - nodeRelease(pRtree, pNode); - pNode = 0; - continue; - } - for(jj=0; jjiDepth-1) ){ - overlap = cellOverlapEnlargement(pRtree,&cell,pCell,aCell,nCell,iCell); - }else{ - overlap = 0.0; - } - if( (iCell==0) - || (overlapnDim; i++){ - RtreeDValue x1 = DCOORD(aCell[0].aCoord[i*2]); - RtreeDValue x2 = DCOORD(aCell[0].aCoord[i*2+1]); - RtreeDValue x3 = x1; - RtreeDValue x4 = x2; - int jj; - - int iCellLeft = 0; - int iCellRight = 0; - - for(jj=1; jjx4 ) x4 = right; - if( left>x3 ){ - x3 = left; - iCellRight = jj; - } - if( rightmaxNormalInnerWidth ){ - iLeftSeed = iCellLeft; - iRightSeed = iCellRight; - } - } - } - - *piLeftSeed = iLeftSeed; - *piRightSeed = iRightSeed; -} -#endif /* VARIANT_GUTTMAN_LINEAR_SPLIT */ - -#if VARIANT_GUTTMAN_QUADRATIC_SPLIT -/* -** Implementation of the quadratic variant of the PickNext() function from -** Guttman[84]. -*/ -static RtreeCell *QuadraticPickNext( - Rtree *pRtree, - RtreeCell *aCell, - int nCell, - RtreeCell *pLeftBox, - RtreeCell *pRightBox, - int *aiUsed -){ - #define FABS(a) ((a)<0.0?-1.0*(a):(a)) - - int iSelect = -1; - RtreeDValue fDiff; - int ii; - for(ii=0; iifDiff ){ - fDiff = diff; - iSelect = ii; - } - } - } - aiUsed[iSelect] = 1; - return &aCell[iSelect]; -} - -/* -** Implementation of the quadratic variant of the PickSeeds() function from -** Guttman[84]. -*/ -static void QuadraticPickSeeds( - Rtree *pRtree, - RtreeCell *aCell, - int nCell, - int *piLeftSeed, - int *piRightSeed -){ - int ii; - int jj; - - int iLeftSeed = 0; - int iRightSeed = 1; - RtreeDValue fWaste = 0.0; - - for(ii=0; iifWaste ){ - iLeftSeed = ii; - iRightSeed = jj; - fWaste = waste; - } - } - } - - *piLeftSeed = iLeftSeed; - *piRightSeed = iRightSeed; -} -#endif /* VARIANT_GUTTMAN_QUADRATIC_SPLIT */ /* ** Arguments aIdx, aDistance and aSpare all point to arrays of size @@ -144230,7 +146735,6 @@ static void SortByDimension( } } -#if VARIANT_RSTARTREE_SPLIT /* ** Implementation of the R*-tree variant of SplitNode from Beckman[1990]. */ @@ -144249,7 +146753,7 @@ static int splitNodeStartree( int iBestDim = 0; int iBestSplit = 0; - RtreeDValue fBestMargin = 0.0; + RtreeDValue fBestMargin = RTREE_ZERO; int nByte = (pRtree->nDim+1)*(sizeof(int*)+nCell*sizeof(int)); @@ -144270,9 +146774,9 @@ static int splitNodeStartree( } for(ii=0; iinDim; ii++){ - RtreeDValue margin = 0.0; - RtreeDValue fBestOverlap = 0.0; - RtreeDValue fBestArea = 0.0; + RtreeDValue margin = RTREE_ZERO; + RtreeDValue fBestOverlap = RTREE_ZERO; + RtreeDValue fBestArea = RTREE_ZERO; int iBestLeft = 0; int nLeft; @@ -144298,7 +146802,7 @@ static int splitNodeStartree( } margin += cellMargin(pRtree, &left); margin += cellMargin(pRtree, &right); - overlap = cellOverlap(pRtree, &left, &right, 1, -1); + overlap = cellOverlap(pRtree, &left, &right, 1); area = cellArea(pRtree, &left) + cellArea(pRtree, &right); if( (nLeft==RTREE_MINCELLS(pRtree)) || (overlap0; i--){ - RtreeCell *pNext; - pNext = PickNext(pRtree, aCell, nCell, pBboxLeft, pBboxRight, aiUsed); - RtreeDValue diff = - cellGrowth(pRtree, pBboxLeft, pNext) - - cellGrowth(pRtree, pBboxRight, pNext) - ; - if( (RTREE_MINCELLS(pRtree)-NCELL(pRight)==i) - || (diff>0.0 && (RTREE_MINCELLS(pRtree)-NCELL(pLeft)!=i)) - ){ - nodeInsertCell(pRtree, pRight, pNext); - cellUnion(pRtree, pBboxRight, pNext); - }else{ - nodeInsertCell(pRtree, pLeft, pNext); - cellUnion(pRtree, pBboxLeft, pNext); - } - } - - sqlite3_free(aiUsed); - return SQLITE_OK; -} -#endif static int updateMapping( Rtree *pRtree, @@ -144464,7 +146912,8 @@ static int SplitNode( memset(pLeft->zData, 0, pRtree->iNodeSize); memset(pRight->zData, 0, pRtree->iNodeSize); - rc = AssignCells(pRtree, aCell, nCell, pLeft, pRight, &leftbbox, &rightbbox); + rc = splitNodeStartree(pRtree, aCell, nCell, pLeft, pRight, + &leftbbox, &rightbbox); if( rc!=SQLITE_OK ){ goto splitnode_out; } @@ -144747,7 +147196,7 @@ static int Reinsert( } for(ii=0; iinDim; iDim++){ RtreeDValue coord = (DCOORD(aCell[ii].aCoord[iDim*2+1]) - DCOORD(aCell[ii].aCoord[iDim*2])); @@ -144813,16 +147262,12 @@ static int rtreeInsertCell( } } if( nodeInsertCell(pRtree, pNode, pCell) ){ -#if VARIANT_RSTARTREE_REINSERT if( iHeight<=pRtree->iReinsertHeight || pNode->iNode==1){ rc = SplitNode(pRtree, pNode, pCell, iHeight); }else{ pRtree->iReinsertHeight = iHeight; rc = Reinsert(pRtree, pNode, pCell, iHeight); } -#else - rc = SplitNode(pRtree, pNode, pCell, iHeight); -#endif }else{ rc = AdjustTree(pRtree, pNode, pCell); if( rc==SQLITE_OK ){ @@ -144892,7 +147337,7 @@ static int rtreeDeleteRowid(Rtree *pRtree, sqlite3_int64 iDelete){ ** about to be deleted. */ if( rc==SQLITE_OK ){ - rc = findLeafNode(pRtree, iDelete, &pLeaf); + rc = findLeafNode(pRtree, iDelete, &pLeaf, 0); } /* Delete the cell in question from the leaf node. */ @@ -145137,26 +147582,32 @@ static int rtreeRename(sqlite3_vtab *pVtab, const char *zNewName){ ** on sqlite_stat1 data. Otherwise, use RTREE_DEFAULT_ROWEST. */ static int rtreeQueryStat1(sqlite3 *db, Rtree *pRtree){ - const char *zSql = "SELECT stat FROM sqlite_stat1 WHERE tbl= ? || '_rowid'"; + const char *zFmt = "SELECT stat FROM %Q.sqlite_stat1 WHERE tbl = '%q_rowid'"; + char *zSql; sqlite3_stmt *p; int rc; i64 nRow = 0; - rc = sqlite3_prepare_v2(db, zSql, -1, &p, 0); - if( rc==SQLITE_OK ){ - sqlite3_bind_text(p, 1, pRtree->zName, -1, SQLITE_STATIC); - if( sqlite3_step(p)==SQLITE_ROW ) nRow = sqlite3_column_int64(p, 0); - rc = sqlite3_finalize(p); - }else if( rc!=SQLITE_NOMEM ){ - rc = SQLITE_OK; - } - - if( rc==SQLITE_OK ){ - if( nRow==0 ){ - pRtree->nRowEst = RTREE_DEFAULT_ROWEST; - }else{ - pRtree->nRowEst = MAX(nRow, RTREE_MIN_ROWEST); + zSql = sqlite3_mprintf(zFmt, pRtree->zDb, pRtree->zName); + if( zSql==0 ){ + rc = SQLITE_NOMEM; + }else{ + rc = sqlite3_prepare_v2(db, zSql, -1, &p, 0); + if( rc==SQLITE_OK ){ + if( sqlite3_step(p)==SQLITE_ROW ) nRow = sqlite3_column_int64(p, 0); + rc = sqlite3_finalize(p); + }else if( rc!=SQLITE_NOMEM ){ + rc = SQLITE_OK; } + + if( rc==SQLITE_OK ){ + if( nRow==0 ){ + pRtree->nRowEst = RTREE_DEFAULT_ROWEST; + }else{ + pRtree->nRowEst = MAX(nRow, RTREE_MIN_ROWEST); + } + } + sqlite3_free(zSql); } return rc; @@ -145223,7 +147674,8 @@ static int rtreeSqlInit( char *zCreate = sqlite3_mprintf( "CREATE TABLE \"%w\".\"%w_node\"(nodeno INTEGER PRIMARY KEY, data BLOB);" "CREATE TABLE \"%w\".\"%w_rowid\"(rowid INTEGER PRIMARY KEY, nodeno INTEGER);" -"CREATE TABLE \"%w\".\"%w_parent\"(nodeno INTEGER PRIMARY KEY, parentnode INTEGER);" +"CREATE TABLE \"%w\".\"%w_parent\"(nodeno INTEGER PRIMARY KEY," + " parentnode INTEGER);" "INSERT INTO '%q'.'%q_node' VALUES(1, zeroblob(%d))", zDb, zPrefix, zDb, zPrefix, zDb, zPrefix, zDb, zPrefix, pRtree->iNodeSize ); @@ -145425,6 +147877,8 @@ static int rtreeInit( if( rc==SQLITE_OK ){ *ppVtab = (sqlite3_vtab *)pRtree; }else{ + assert( *ppVtab==0 ); + assert( pRtree->nBusy==1 ); rtreeRelease(pRtree); } return rc; @@ -145435,10 +147889,10 @@ static int rtreeInit( ** Implementation of a scalar function that decodes r-tree nodes to ** human readable strings. This can be used for debugging and analysis. ** -** The scalar function takes two arguments, a blob of data containing -** an r-tree node, and the number of dimensions the r-tree indexes. -** For a two-dimensional r-tree structure called "rt", to deserialize -** all nodes, a statement like: +** The scalar function takes two arguments: (1) the number of dimensions +** to the rtree (between 1 and 5, inclusive) and (2) a blob of data containing +** an r-tree node. For a two-dimensional r-tree structure called "rt", to +** deserialize all nodes, a statement like: ** ** SELECT rtreenode(2, data) FROM rt_node; ** @@ -145471,7 +147925,7 @@ static void rtreenode(sqlite3_context *ctx, int nArg, sqlite3_value **apArg){ nCell = (int)strlen(zCell); for(jj=0; jjxDestructor ) pInfo->xDestructor(pInfo->pContext); sqlite3_free(p); } /* -** Each call to sqlite3_rtree_geometry_callback() creates an ordinary SQLite -** scalar user function. This C function is the callback used for all such -** registered SQL functions. +** Each call to sqlite3_rtree_geometry_callback() or +** sqlite3_rtree_query_callback() creates an ordinary SQLite +** scalar function that is implemented by this routine. ** -** The scalar user functions return a blob that is interpreted by r-tree -** table MATCH operators. +** All this function does is construct an RtreeMatchArg object that +** contains the geometry-checking callback routines and a list of +** parameters to this function, then return that RtreeMatchArg object +** as a BLOB. +** +** The R-Tree MATCH operator will read the returned BLOB, deserialize +** the RtreeMatchArg object, and use the RtreeMatchArg object to figure +** out which elements of the R-Tree should be returned by the query. */ static void geomCallback(sqlite3_context *ctx, int nArg, sqlite3_value **aArg){ RtreeGeomCallback *pGeomCtx = (RtreeGeomCallback *)sqlite3_user_data(ctx); @@ -145563,8 +148035,7 @@ static void geomCallback(sqlite3_context *ctx, int nArg, sqlite3_value **aArg){ }else{ int i; pBlob->magic = RTREE_GEOMETRY_MAGIC; - pBlob->xGeom = pGeomCtx->xGeom; - pBlob->pContext = pGeomCtx->pContext; + pBlob->cb = pGeomCtx[0]; pBlob->nParam = nArg; for(i=0; iaParam[i] = sqlite3_value_double(aArg[i]); #endif } - sqlite3_result_blob(ctx, pBlob, nBlob, doSqlite3Free); + sqlite3_result_blob(ctx, pBlob, nBlob, sqlite3_free); } } @@ -145581,10 +148052,10 @@ static void geomCallback(sqlite3_context *ctx, int nArg, sqlite3_value **aArg){ ** Register a new geometry function for use with the r-tree MATCH operator. */ SQLITE_API int sqlite3_rtree_geometry_callback( - sqlite3 *db, - const char *zGeom, - int (*xGeom)(sqlite3_rtree_geometry *, int, RtreeDValue *, int *), - void *pContext + sqlite3 *db, /* Register SQL function on this connection */ + const char *zGeom, /* Name of the new SQL function */ + int (*xGeom)(sqlite3_rtree_geometry*,int,RtreeDValue*,int*), /* Callback */ + void *pContext /* Extra data associated with the callback */ ){ RtreeGeomCallback *pGeomCtx; /* Context object for new user-function */ @@ -145592,12 +148063,36 @@ SQLITE_API int sqlite3_rtree_geometry_callback( pGeomCtx = (RtreeGeomCallback *)sqlite3_malloc(sizeof(RtreeGeomCallback)); if( !pGeomCtx ) return SQLITE_NOMEM; pGeomCtx->xGeom = xGeom; + pGeomCtx->xQueryFunc = 0; + pGeomCtx->xDestructor = 0; pGeomCtx->pContext = pContext; - - /* Create the new user-function. Register a destructor function to delete - ** the context object when it is no longer required. */ return sqlite3_create_function_v2(db, zGeom, -1, SQLITE_ANY, - (void *)pGeomCtx, geomCallback, 0, 0, doSqlite3Free + (void *)pGeomCtx, geomCallback, 0, 0, rtreeFreeCallback + ); +} + +/* +** Register a new 2nd-generation geometry function for use with the +** r-tree MATCH operator. +*/ +SQLITE_API int sqlite3_rtree_query_callback( + sqlite3 *db, /* Register SQL function on this connection */ + const char *zQueryFunc, /* Name of new SQL function */ + int (*xQueryFunc)(sqlite3_rtree_query_info*), /* Callback */ + void *pContext, /* Extra data passed into the callback */ + void (*xDestructor)(void*) /* Destructor for the extra data */ +){ + RtreeGeomCallback *pGeomCtx; /* Context object for new user-function */ + + /* Allocate and populate the context object. */ + pGeomCtx = (RtreeGeomCallback *)sqlite3_malloc(sizeof(RtreeGeomCallback)); + if( !pGeomCtx ) return SQLITE_NOMEM; + pGeomCtx->xGeom = 0; + pGeomCtx->xQueryFunc = xQueryFunc; + pGeomCtx->xDestructor = xDestructor; + pGeomCtx->pContext = pContext; + return sqlite3_create_function_v2(db, zQueryFunc, -1, SQLITE_ANY, + (void *)pGeomCtx, geomCallback, 0, 0, rtreeFreeCallback ); } diff --git a/Data/SQLite/src/sqlite3.h b/Data/SQLite/src/sqlite3.h index 1f19ada4c..9879f80d4 100644 --- a/Data/SQLite/src/sqlite3.h +++ b/Data/SQLite/src/sqlite3.h @@ -107,9 +107,9 @@ extern "C" { ** [sqlite3_libversion_number()], [sqlite3_sourceid()], ** [sqlite_version()] and [sqlite_source_id()]. */ -#define SQLITE_VERSION "3.8.4.1" -#define SQLITE_VERSION_NUMBER 3008004 -#define SQLITE_SOURCE_ID "2014-03-11 15:27:36 018d317b1257ce68a92908b05c9c7cf1494050d0" +#define SQLITE_VERSION "3.8.6" +#define SQLITE_VERSION_NUMBER 3008006 +#define SQLITE_SOURCE_ID "2014-08-15 11:46:33 9491ba7d738528f168657adb43a198238abde19e" /* ** CAPI3REF: Run-Time Library Version Numbers @@ -269,7 +269,7 @@ typedef sqlite_uint64 sqlite3_uint64; ** ** ^The sqlite3_close() and sqlite3_close_v2() routines are destructors ** for the [sqlite3] object. -** ^Calls to sqlite3_close() and sqlite3_close_v2() return SQLITE_OK if +** ^Calls to sqlite3_close() and sqlite3_close_v2() return [SQLITE_OK] if ** the [sqlite3] object is successfully destroyed and all associated ** resources are deallocated. ** @@ -277,7 +277,7 @@ typedef sqlite_uint64 sqlite3_uint64; ** statements or unfinished sqlite3_backup objects then sqlite3_close() ** will leave the database connection open and return [SQLITE_BUSY]. ** ^If sqlite3_close_v2() is called with unfinalized prepared statements -** and unfinished sqlite3_backups, then the database connection becomes +** and/or unfinished sqlite3_backups, then the database connection becomes ** an unusable "zombie" which will automatically be deallocated when the ** last prepared statement is finalized or the last sqlite3_backup is ** finished. The sqlite3_close_v2() interface is intended for use with @@ -290,7 +290,7 @@ typedef sqlite_uint64 sqlite3_uint64; ** with the [sqlite3] object prior to attempting to close the object. ^If ** sqlite3_close_v2() is called on a [database connection] that still has ** outstanding [prepared statements], [BLOB handles], and/or -** [sqlite3_backup] objects then it returns SQLITE_OK but the deallocation +** [sqlite3_backup] objects then it returns [SQLITE_OK] and the deallocation ** of resources is deferred until all [prepared statements], [BLOB handles], ** and [sqlite3_backup] objects are also destroyed. ** @@ -386,16 +386,14 @@ SQLITE_API int sqlite3_exec( /* ** CAPI3REF: Result Codes -** KEYWORDS: SQLITE_OK {error code} {error codes} -** KEYWORDS: {result code} {result codes} +** KEYWORDS: {result code definitions} ** ** Many SQLite functions return an integer result code from the set shown ** here in order to indicate success or failure. ** ** New error codes may be added in future versions of SQLite. ** -** See also: [SQLITE_IOERR_READ | extended result codes], -** [sqlite3_vtab_on_conflict()] [SQLITE_ROLLBACK | result codes]. +** See also: [extended result code definitions] */ #define SQLITE_OK 0 /* Successful result */ /* beginning-of-error-codes */ @@ -433,26 +431,19 @@ SQLITE_API int sqlite3_exec( /* ** CAPI3REF: Extended Result Codes -** KEYWORDS: {extended error code} {extended error codes} -** KEYWORDS: {extended result code} {extended result codes} +** KEYWORDS: {extended result code definitions} ** -** In its default configuration, SQLite API routines return one of 26 integer -** [SQLITE_OK | result codes]. However, experience has shown that many of +** In its default configuration, SQLite API routines return one of 30 integer +** [result codes]. However, experience has shown that many of ** these result codes are too coarse-grained. They do not provide as ** much information about problems as programmers might like. In an effort to ** address this, newer versions of SQLite (version 3.3.8 and later) include ** support for additional result codes that provide more detailed information -** about errors. The extended result codes are enabled or disabled +** about errors. These [extended result codes] are enabled or disabled ** on a per database connection basis using the -** [sqlite3_extended_result_codes()] API. -** -** Some of the available extended result codes are listed here. -** One may expect the number of extended result codes will increase -** over time. Software that uses extended result codes should expect -** to see new result codes in future releases of SQLite. -** -** The SQLITE_OK result code will never be extended. It will always -** be exactly zero. +** [sqlite3_extended_result_codes()] API. Or, the extended code for +** the most recent error can be obtained using +** [sqlite3_extended_errcode()]. */ #define SQLITE_IOERR_READ (SQLITE_IOERR | (1<<8)) #define SQLITE_IOERR_SHORT_READ (SQLITE_IOERR | (2<<8)) @@ -560,7 +551,10 @@ SQLITE_API int sqlite3_exec( ** file that were written at the application level might have changed ** and that adjacent bytes, even bytes within the same sector are ** guaranteed to be unchanged. The SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN -** flag indicate that a file cannot be deleted when open. +** flag indicate that a file cannot be deleted when open. The +** SQLITE_IOCAP_IMMUTABLE flag indicates that the file is on +** read-only media and cannot be changed even by processes with +** elevated privileges. */ #define SQLITE_IOCAP_ATOMIC 0x00000001 #define SQLITE_IOCAP_ATOMIC512 0x00000002 @@ -575,6 +569,7 @@ SQLITE_API int sqlite3_exec( #define SQLITE_IOCAP_SEQUENTIAL 0x00000400 #define SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN 0x00000800 #define SQLITE_IOCAP_POWERSAFE_OVERWRITE 0x00001000 +#define SQLITE_IOCAP_IMMUTABLE 0x00002000 /* ** CAPI3REF: File Locking Levels @@ -681,7 +676,7 @@ struct sqlite3_file { ** locking strategy (for example to use dot-file locks), to inquire ** about the status of a lock, or to break stale locks. The SQLite ** core reserves all opcodes less than 100 for its own use. -** A [SQLITE_FCNTL_LOCKSTATE | list of opcodes] less than 100 is available. +** A [file control opcodes | list of opcodes] less than 100 is available. ** Applications that define a custom xFileControl method should use opcodes ** greater than 100 to avoid conflicts. VFS implementations should ** return [SQLITE_NOTFOUND] for file control opcodes that they do not @@ -754,6 +749,7 @@ struct sqlite3_io_methods { /* ** CAPI3REF: Standard File Control Opcodes +** KEYWORDS: {file control opcodes} {file control opcode} ** ** These integer constants are opcodes for the xFileControl method ** of the [sqlite3_io_methods] object and for the [sqlite3_file_control()] @@ -943,6 +939,12 @@ struct sqlite3_io_methods { ** on whether or not the file has been renamed, moved, or deleted since it ** was first opened. ** +**
  • [[SQLITE_FCNTL_WIN32_SET_HANDLE]] +** The [SQLITE_FCNTL_WIN32_SET_HANDLE] opcode is used for debugging. This +** opcode causes the xFileControl method to swap the file handle with the one +** pointed to by the pArg argument. This capability is used during testing +** and only needs to be supported when SQLITE_TEST is defined. +** ** */ #define SQLITE_FCNTL_LOCKSTATE 1 @@ -966,6 +968,7 @@ struct sqlite3_io_methods { #define SQLITE_FCNTL_HAS_MOVED 20 #define SQLITE_FCNTL_SYNC 21 #define SQLITE_FCNTL_COMMIT_PHASETWO 22 +#define SQLITE_FCNTL_WIN32_SET_HANDLE 23 /* ** CAPI3REF: Mutex Handle @@ -2026,27 +2029,33 @@ SQLITE_API int sqlite3_complete16(const void *sql); /* ** CAPI3REF: Register A Callback To Handle SQLITE_BUSY Errors ** -** ^This routine sets a callback function that might be invoked whenever -** an attempt is made to open a database table that another thread -** or process has locked. +** ^The sqlite3_busy_handler(D,X,P) routine sets a callback function X +** that might be invoked with argument P whenever +** an attempt is made to access a database table associated with +** [database connection] D when another thread +** or process has the table locked. +** The sqlite3_busy_handler() interface is used to implement +** [sqlite3_busy_timeout()] and [PRAGMA busy_timeout]. ** -** ^If the busy callback is NULL, then [SQLITE_BUSY] or [SQLITE_IOERR_BLOCKED] +** ^If the busy callback is NULL, then [SQLITE_BUSY] ** is returned immediately upon encountering the lock. ^If the busy callback ** is not NULL, then the callback might be invoked with two arguments. ** ** ^The first argument to the busy handler is a copy of the void* pointer which ** is the third argument to sqlite3_busy_handler(). ^The second argument to ** the busy handler callback is the number of times that the busy handler has -** been invoked for this locking event. ^If the +** been invoked for the same locking event. ^If the ** busy callback returns 0, then no additional attempts are made to -** access the database and [SQLITE_BUSY] or [SQLITE_IOERR_BLOCKED] is returned. +** access the database and [SQLITE_BUSY] is returned +** to the application. ** ^If the callback returns non-zero, then another attempt -** is made to open the database for reading and the cycle repeats. +** is made to access the database and the cycle repeats. ** ** The presence of a busy handler does not guarantee that it will be invoked ** when there is lock contention. ^If SQLite determines that invoking the busy ** handler could result in a deadlock, it will go ahead and return [SQLITE_BUSY] -** or [SQLITE_IOERR_BLOCKED] instead of invoking the busy handler. +** to the application instead of invoking the +** busy handler. ** Consider a scenario where one process is holding a read lock that ** it is trying to promote to a reserved lock and ** a second process is holding a reserved lock that it is trying @@ -2060,28 +2069,15 @@ SQLITE_API int sqlite3_complete16(const void *sql); ** ** ^The default busy callback is NULL. ** -** ^The [SQLITE_BUSY] error is converted to [SQLITE_IOERR_BLOCKED] -** when SQLite is in the middle of a large transaction where all the -** changes will not fit into the in-memory cache. SQLite will -** already hold a RESERVED lock on the database file, but it needs -** to promote this lock to EXCLUSIVE so that it can spill cache -** pages into the database file without harm to concurrent -** readers. ^If it is unable to promote the lock, then the in-memory -** cache will be left in an inconsistent state and so the error -** code is promoted from the relatively benign [SQLITE_BUSY] to -** the more severe [SQLITE_IOERR_BLOCKED]. ^This error code promotion -** forces an automatic rollback of the changes. See the -** -** CorruptionFollowingBusyError wiki page for a discussion of why -** this is important. -** ** ^(There can only be a single busy handler defined for each ** [database connection]. Setting a new busy handler clears any ** previously set handler.)^ ^Note that calling [sqlite3_busy_timeout()] -** will also set or clear the busy handler. +** or evaluating [PRAGMA busy_timeout=N] will change the +** busy handler and thus clear any previously set busy handler. ** ** The busy callback should not take any actions which modify the -** database connection that invoked the busy handler. Any such actions +** database connection that invoked the busy handler. In other words, +** the busy handler is not reentrant. Any such actions ** result in undefined behavior. ** ** A busy handler must not close the database connection @@ -2097,7 +2093,7 @@ SQLITE_API int sqlite3_busy_handler(sqlite3*, int(*)(void*,int), void*); ** will sleep multiple times until at least "ms" milliseconds of sleeping ** have accumulated. ^After at least "ms" milliseconds of sleeping, ** the handler returns 0 which causes [sqlite3_step()] to return -** [SQLITE_BUSY] or [SQLITE_IOERR_BLOCKED]. +** [SQLITE_BUSY]. ** ** ^Calling this routine with an argument less than or equal to zero ** turns off all busy handlers. @@ -2106,6 +2102,8 @@ SQLITE_API int sqlite3_busy_handler(sqlite3*, int(*)(void*,int), void*); ** [database connection] any any given moment. If another busy handler ** was defined (using [sqlite3_busy_handler()]) prior to calling ** this routine, that other busy handler is cleared.)^ +** +** See also: [PRAGMA busy_timeout] */ SQLITE_API int sqlite3_busy_timeout(sqlite3*, int ms); @@ -2507,8 +2505,8 @@ SQLITE_API int sqlite3_set_authorizer( ** [sqlite3_set_authorizer | authorizer documentation] for additional ** information. ** -** Note that SQLITE_IGNORE is also used as a [SQLITE_ROLLBACK | return code] -** from the [sqlite3_vtab_on_conflict()] interface. +** Note that SQLITE_IGNORE is also used as a [conflict resolution mode] +** returned from the [sqlite3_vtab_on_conflict()] interface. */ #define SQLITE_DENY 1 /* Abort the SQL statement with an error */ #define SQLITE_IGNORE 2 /* Don't allow access, but don't generate an error */ @@ -2779,6 +2777,30 @@ SQLITE_API void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*); ** ^If sqlite3_open_v2() is used and the "cache" parameter is present in ** a URI filename, its value overrides any behavior requested by setting ** SQLITE_OPEN_PRIVATECACHE or SQLITE_OPEN_SHAREDCACHE flag. +** +**
  • psow: ^The psow parameter may be "true" (or "on" or "yes" or +** "1") or "false" (or "off" or "no" or "0") to indicate that the +** [powersafe overwrite] property does or does not apply to the +** storage media on which the database file resides. ^The psow query +** parameter only works for the built-in unix and Windows VFSes. +** +**
  • nolock: ^The nolock parameter is a boolean query parameter +** which if set disables file locking in rollback journal modes. This +** is useful for accessing a database on a filesystem that does not +** support locking. Caution: Database corruption might result if two +** or more processes write to the same database and any one of those +** processes uses nolock=1. +** +**
  • immutable: ^The immutable parameter is a boolean query +** parameter that indicates that the database file is stored on +** read-only media. ^When immutable is set, SQLite assumes that the +** database file cannot be changed, even by a process with higher +** privilege, and so the database is opened read-only and all locking +** and change detection is disabled. Caution: Setting the immutable +** property on a database file that does in fact change can result +** in incorrect query results and/or [SQLITE_CORRUPT] errors. +** See also: [SQLITE_IOCAP_IMMUTABLE]. +** ** ** ** ^Specifying an unknown parameter in the query component of a URI is not an @@ -2808,8 +2830,9 @@ SQLITE_API void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*); ** Open file "data.db" in the current directory for read-only access. ** Regardless of whether or not shared-cache mode is enabled by ** default, use a private cache. -** file:/home/fred/data.db?vfs=unix-nolock -** Open file "/home/fred/data.db". Use the special VFS "unix-nolock". +** file:/home/fred/data.db?vfs=unix-dotfile +** Open file "/home/fred/data.db". Use the special VFS "unix-dotfile" +** that uses dot-files in place of posix advisory locking. ** file:data.db?mode=readonly ** An error. "readonly" is not a valid option for the "mode" parameter. ** @@ -4670,6 +4693,13 @@ SQLITE_API int sqlite3_sleep(int); ** is a NULL pointer, then SQLite performs a search for an appropriate ** temporary file directory. ** +** Applications are strongly discouraged from using this global variable. +** It is required to set a temporary folder on Windows Runtime (WinRT). +** But for all other platforms, it is highly recommended that applications +** neither read nor write this variable. This global variable is a relic +** that exists for backwards compatibility of legacy applications and should +** be avoided in new projects. +** ** It is not safe to read or modify this variable in more than one ** thread at a time. It is not safe to read or modify this variable ** if a [database connection] is being used at the same time in a separate @@ -4688,6 +4718,11 @@ SQLITE_API int sqlite3_sleep(int); ** Hence, if this variable is modified directly, either it should be ** made NULL or made to point to memory obtained from [sqlite3_malloc] ** or else the use of the [temp_store_directory pragma] should be avoided. +** Except when requested by the [temp_store_directory pragma], SQLite +** does not free the memory that sqlite3_temp_directory points to. If +** the application wants that memory to be freed, it must do +** so itself, taking care to only do so after all [database connection] +** objects have been destroyed. ** ** Note to Windows Runtime users: The temporary directory must be set ** prior to calling [sqlite3_open] or [sqlite3_open_v2]. Otherwise, various @@ -5822,10 +5857,12 @@ SQLITE_API int sqlite3_vfs_unregister(sqlite3_vfs*); **
  • SQLITE_MUTEX_RECURSIVE **
  • SQLITE_MUTEX_STATIC_MASTER **
  • SQLITE_MUTEX_STATIC_MEM -**
  • SQLITE_MUTEX_STATIC_MEM2 +**
  • SQLITE_MUTEX_STATIC_OPEN **
  • SQLITE_MUTEX_STATIC_PRNG **
  • SQLITE_MUTEX_STATIC_LRU -**
  • SQLITE_MUTEX_STATIC_LRU2 +**
  • SQLITE_MUTEX_STATIC_PMEM +**
  • SQLITE_MUTEX_STATIC_APP1 +**
  • SQLITE_MUTEX_STATIC_APP2 ** )^ ** ** ^The first two constants (SQLITE_MUTEX_FAST and SQLITE_MUTEX_RECURSIVE) @@ -6029,6 +6066,9 @@ SQLITE_API int sqlite3_mutex_notheld(sqlite3_mutex*); #define SQLITE_MUTEX_STATIC_LRU 6 /* lru page list */ #define SQLITE_MUTEX_STATIC_LRU2 7 /* NOT USED */ #define SQLITE_MUTEX_STATIC_PMEM 7 /* sqlite3PageMalloc() */ +#define SQLITE_MUTEX_STATIC_APP1 8 /* For use by application */ +#define SQLITE_MUTEX_STATIC_APP2 9 /* For use by application */ +#define SQLITE_MUTEX_STATIC_APP3 10 /* For use by application */ /* ** CAPI3REF: Retrieve the mutex for a database connection @@ -6123,7 +6163,9 @@ SQLITE_API int sqlite3_test_control(int op, ...); #define SQLITE_TESTCTRL_EXPLAIN_STMT 19 #define SQLITE_TESTCTRL_NEVER_CORRUPT 20 #define SQLITE_TESTCTRL_VDBE_COVERAGE 21 -#define SQLITE_TESTCTRL_LAST 21 +#define SQLITE_TESTCTRL_BYTEORDER 22 +#define SQLITE_TESTCTRL_ISINIT 23 +#define SQLITE_TESTCTRL_LAST 23 /* ** CAPI3REF: SQLite Runtime Status @@ -7107,6 +7149,9 @@ SQLITE_API void *sqlite3_wal_hook( ** ^The [wal_autocheckpoint pragma] can be used to invoke this interface ** from SQL. ** +** ^Checkpoints initiated by this mechanism are +** [sqlite3_wal_checkpoint_v2|PASSIVE]. +** ** ^Every new [database connection] defaults to having the auto-checkpoint ** enabled with a threshold of 1000 or [SQLITE_DEFAULT_WAL_AUTOCHECKPOINT] ** pages. The use of this interface @@ -7123,6 +7168,10 @@ SQLITE_API int sqlite3_wal_autocheckpoint(sqlite3 *db, int N); ** empty string, then a checkpoint is run on all databases of ** connection D. ^If the database connection D is not in ** [WAL | write-ahead log mode] then this interface is a harmless no-op. +** ^The [sqlite3_wal_checkpoint(D,X)] interface initiates a +** [sqlite3_wal_checkpoint_v2|PASSIVE] checkpoint. +** Use the [sqlite3_wal_checkpoint_v2()] interface to get a FULL +** or RESET checkpoint. ** ** ^The [wal_checkpoint pragma] can be used to invoke this interface ** from SQL. ^The [sqlite3_wal_autocheckpoint()] interface and the @@ -7145,10 +7194,12 @@ SQLITE_API int sqlite3_wal_checkpoint(sqlite3 *db, const char *zDb); ** Checkpoint as many frames as possible without waiting for any database ** readers or writers to finish. Sync the db file if all frames in the log ** are checkpointed. This mode is the same as calling -** sqlite3_wal_checkpoint(). The busy-handler callback is never invoked. +** sqlite3_wal_checkpoint(). The [sqlite3_busy_handler|busy-handler callback] +** is never invoked. ** **
    SQLITE_CHECKPOINT_FULL
    -** This mode blocks (calls the busy-handler callback) until there is no +** This mode blocks (it invokes the +** [sqlite3_busy_handler|busy-handler callback]) until there is no ** database writer and all readers are reading from the most recent database ** snapshot. It then checkpoints all frames in the log file and syncs the ** database file. This call blocks database writers while it is running, @@ -7156,7 +7207,8 @@ SQLITE_API int sqlite3_wal_checkpoint(sqlite3 *db, const char *zDb); ** **
    SQLITE_CHECKPOINT_RESTART
    ** This mode works the same way as SQLITE_CHECKPOINT_FULL, except after -** checkpointing the log file it blocks (calls the busy-handler callback) +** checkpointing the log file it blocks (calls the +** [sqlite3_busy_handler|busy-handler callback]) ** until all readers are reading from the database file only. This ensures ** that the next client to write to the database file restarts the log file ** from the beginning. This call blocks database writers while it is running, @@ -7294,6 +7346,7 @@ SQLITE_API int sqlite3_vtab_on_conflict(sqlite3 *); /* ** CAPI3REF: Conflict resolution modes +** KEYWORDS: {conflict resolution mode} ** ** These constants are returned by [sqlite3_vtab_on_conflict()] to ** inform a [virtual table] implementation what the [ON CONFLICT] mode @@ -7346,6 +7399,16 @@ extern "C" { #endif typedef struct sqlite3_rtree_geometry sqlite3_rtree_geometry; +typedef struct sqlite3_rtree_query_info sqlite3_rtree_query_info; + +/* The double-precision datatype used by RTree depends on the +** SQLITE_RTREE_INT_ONLY compile-time option. +*/ +#ifdef SQLITE_RTREE_INT_ONLY + typedef sqlite3_int64 sqlite3_rtree_dbl; +#else + typedef double sqlite3_rtree_dbl; +#endif /* ** Register a geometry callback named zGeom that can be used as part of an @@ -7356,11 +7419,7 @@ typedef struct sqlite3_rtree_geometry sqlite3_rtree_geometry; SQLITE_API int sqlite3_rtree_geometry_callback( sqlite3 *db, const char *zGeom, -#ifdef SQLITE_RTREE_INT_ONLY - int (*xGeom)(sqlite3_rtree_geometry*, int n, sqlite3_int64 *a, int *pRes), -#else - int (*xGeom)(sqlite3_rtree_geometry*, int n, double *a, int *pRes), -#endif + int (*xGeom)(sqlite3_rtree_geometry*, int, sqlite3_rtree_dbl*,int*), void *pContext ); @@ -7372,11 +7431,60 @@ SQLITE_API int sqlite3_rtree_geometry_callback( struct sqlite3_rtree_geometry { void *pContext; /* Copy of pContext passed to s_r_g_c() */ int nParam; /* Size of array aParam[] */ - double *aParam; /* Parameters passed to SQL geom function */ + sqlite3_rtree_dbl *aParam; /* Parameters passed to SQL geom function */ void *pUser; /* Callback implementation user data */ void (*xDelUser)(void *); /* Called by SQLite to clean up pUser */ }; +/* +** Register a 2nd-generation geometry callback named zScore that can be +** used as part of an R-Tree geometry query as follows: +** +** SELECT ... FROM WHERE MATCH $zQueryFunc(... params ...) +*/ +SQLITE_API int sqlite3_rtree_query_callback( + sqlite3 *db, + const char *zQueryFunc, + int (*xQueryFunc)(sqlite3_rtree_query_info*), + void *pContext, + void (*xDestructor)(void*) +); + + +/* +** A pointer to a structure of the following type is passed as the +** argument to scored geometry callback registered using +** sqlite3_rtree_query_callback(). +** +** Note that the first 5 fields of this structure are identical to +** sqlite3_rtree_geometry. This structure is a subclass of +** sqlite3_rtree_geometry. +*/ +struct sqlite3_rtree_query_info { + void *pContext; /* pContext from when function registered */ + int nParam; /* Number of function parameters */ + sqlite3_rtree_dbl *aParam; /* value of function parameters */ + void *pUser; /* callback can use this, if desired */ + void (*xDelUser)(void*); /* function to free pUser */ + sqlite3_rtree_dbl *aCoord; /* Coordinates of node or entry to check */ + unsigned int *anQueue; /* Number of pending entries in the queue */ + int nCoord; /* Number of coordinates */ + int iLevel; /* Level of current node or entry */ + int mxLevel; /* The largest iLevel value in the tree */ + sqlite3_int64 iRowid; /* Rowid for current entry */ + sqlite3_rtree_dbl rParentScore; /* Score of parent node */ + int eParentWithin; /* Visibility of parent node */ + int eWithin; /* OUT: Visiblity */ + sqlite3_rtree_dbl rScore; /* OUT: Write the score here */ +}; + +/* +** Allowed values for sqlite3_rtree_query.eWithin and .eParentWithin. +*/ +#define NOT_WITHIN 0 /* Object completely outside of query region */ +#define PARTLY_WITHIN 1 /* Object partially overlaps query region */ +#define FULLY_WITHIN 2 /* Object fully contained within query region */ + #ifdef __cplusplus } /* end of the 'extern "C"' block */ diff --git a/Data/SQLite/testsuite/TestSuite_CE_vs90.vcproj b/Data/SQLite/testsuite/TestSuite_CE_vs90.vcproj index 5d53c0240..617c23752 100644 --- a/Data/SQLite/testsuite/TestSuite_CE_vs90.vcproj +++ b/Data/SQLite/testsuite/TestSuite_CE_vs90.vcproj @@ -46,7 +46,8 @@ CompileAs="0" DisableSpecificWarnings="4800;" CompileForArchitecture="2" - InterworkCalls="false"/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false diff --git a/Data/SQLite/testsuite/TestSuite_WEC2013_vs110.vcxproj.filters b/Data/SQLite/testsuite/TestSuite_WEC2013_vs110.vcxproj.filters index 0b2f56fde..ac00f3055 100644 --- a/Data/SQLite/testsuite/TestSuite_WEC2013_vs110.vcxproj.filters +++ b/Data/SQLite/testsuite/TestSuite_WEC2013_vs110.vcxproj.filters @@ -2,28 +2,28 @@ - {3535331d-a727-4c3c-952d-6c605c46e299} + {abe1edd7-913a-497d-b29f-4b7a69fc8559} - {8b77cd93-bc3d-4fe2-aa58-3a71019fc652} + {1972677a-06cc-4b80-9331-989f35ed0b70} - {59485ed4-205f-477f-a092-4299eb657993} + {59cbce51-d9f8-46b6-bf89-eab1c71c9eaa} - {c602ea06-1f70-4b19-bbe7-a11360ee2653} + {bb91f742-5387-4ace-bd64-a58be9732aba} - {60dab515-4e7f-4bc5-995b-9f9eea556050} + {c1286965-20b3-4ba5-a9b7-ef5bc981f2ce} - {b9e3336d-4256-460d-a57d-55ebbbab1c0b} + {474c8138-cd27-40fc-ab92-7fcf81f8bdb4} - {a63f2894-4a05-4703-8e95-b951ff5768ea} + {fe3f2bbd-3ee5-4ddf-8e06-9b6bb116fe64} - {8b1baeea-9332-466e-ba91-008bad096fa9} + {44ba84fa-ec58-4e3b-af1f-78c4b2b2d8ba} diff --git a/Data/SQLite/testsuite/TestSuite_WEC2013_vs120.vcxproj b/Data/SQLite/testsuite/TestSuite_WEC2013_vs120.vcxproj index dd6f159b8..cc4002eff 100644 --- a/Data/SQLite/testsuite/TestSuite_WEC2013_vs120.vcxproj +++ b/Data/SQLite/testsuite/TestSuite_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false diff --git a/Data/SQLite/testsuite/TestSuite_WEC2013_vs120.vcxproj.filters b/Data/SQLite/testsuite/TestSuite_WEC2013_vs120.vcxproj.filters index cd34bfc2c..5b2f59280 100644 --- a/Data/SQLite/testsuite/TestSuite_WEC2013_vs120.vcxproj.filters +++ b/Data/SQLite/testsuite/TestSuite_WEC2013_vs120.vcxproj.filters @@ -2,28 +2,28 @@ - {7702524d-eaba-4672-a9c1-752d1d7d07c9} + {75ee1d5d-2f7b-4800-87a3-25194cc4b496} - {681a4a13-9cb2-4abe-b3b3-ba56c0d7f15b} + {ac3baa53-5a7b-45b6-b5d0-e30116effecd} - {beef90bc-f5cb-49c7-a812-f4e7c72ca87e} + {79f5f4d7-ba1e-4df7-aef0-847fce15cc92} - {8261186e-8ae9-4dab-8736-4cc16b324e78} + {8c45765f-dbdd-4dbe-ad4e-bdde82dc2774} - {8fa74a0c-7873-43d7-aceb-e4b203672b3f} + {d88f2247-8ce7-4fa5-864d-f686ca5bfdd7} - {eb0bde92-e628-4e3f-8378-4b0e71ac8dbc} + {28228594-fcb7-4435-98e6-182e01c40731} - {007504fa-18aa-4972-9de3-0bd298eaa085} + {da1f6cc1-2f20-4fc5-ad9e-2f56a91dcb2c} - {094f7426-1d38-418c-8a86-7eba34663c6b} + {666ae7cb-e058-4330-9e19-75897ac64704} diff --git a/Data/SQLite/testsuite/TestSuite_vs100.vcxproj b/Data/SQLite/testsuite/TestSuite_vs100.vcxproj index c41c07459..f7f129330 100644 --- a/Data/SQLite/testsuite/TestSuite_vs100.vcxproj +++ b/Data/SQLite/testsuite/TestSuite_vs100.vcxproj @@ -87,22 +87,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false TestSuited TestSuited @@ -129,6 +129,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitd.lib;WinTestRunnerd.lib;%(AdditionalDependencies) @@ -139,6 +140,7 @@ bin\TestSuited.pdb Windows MachineX86 + %(AdditionalOptions) @@ -161,6 +163,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnit.lib;WinTestRunner.lib;%(AdditionalDependencies) @@ -171,6 +174,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -191,6 +195,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmtd.lib;WinTestRunnermtd.lib;iphlpapi.lib;winmm.lib;nafxcwd.lib;libcmtd.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -202,6 +207,7 @@ bin\static_mt\TestSuited.pdb Windows MachineX86 + %(AdditionalOptions) @@ -224,6 +230,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmt.lib;WinTestRunnermt.lib;iphlpapi.lib;winmm.lib;nafxcw.lib;libcmt.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -235,6 +242,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -255,6 +263,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmdd.lib;WinTestRunnermdd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -265,6 +274,7 @@ bin\static_md\TestSuited.pdb Windows MachineX86 + %(AdditionalOptions) @@ -287,6 +297,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmd.lib;WinTestRunnermd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -297,6 +308,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Data/SQLite/testsuite/TestSuite_vs100.vcxproj.filters b/Data/SQLite/testsuite/TestSuite_vs100.vcxproj.filters index 00b5b5d72..ce03b33d9 100644 --- a/Data/SQLite/testsuite/TestSuite_vs100.vcxproj.filters +++ b/Data/SQLite/testsuite/TestSuite_vs100.vcxproj.filters @@ -2,28 +2,28 @@ - {ce70b33b-f445-4e47-8a7c-83c876dcc432} + {e091b1d8-7ced-4407-ae63-9f78c8cdae1c} - {8ac91aeb-69d7-4323-afa2-43d9ba51f98b} + {4f70b09e-bf5c-4191-ab0f-03dabecc48c6} - {5014fecb-3dfe-43f3-844f-8c19623caa10} + {8739997b-8d4a-4344-8904-6c53c43226a5} - {36ccc698-5871-4558-8b8d-dbc51ff0d144} + {4925874b-24b5-45fd-beca-083e50782718} - {7095a95b-ccec-4633-b843-5cca0b6c85ea} + {6a6de3d9-75cd-47ef-90d4-cec406df6e61} - {0e1d4cec-f692-4db5-ab98-c7dfb302d067} + {4602b1e2-1015-47b4-a9ba-cd6f54a971e0} - {baf21283-da1a-4f55-ad6b-fe9ef0035edd} + {ff30fb88-16bf-4c7f-a8c9-89ba46c5bf25} - {86fab0fb-c9be-4df4-b7d5-2c4e2204ad72} + {4577094f-8d00-4fc7-afc6-cac45c98a2fd} diff --git a/Data/SQLite/testsuite/TestSuite_vs110.vcxproj b/Data/SQLite/testsuite/TestSuite_vs110.vcxproj index 0ca6eed33..ec39f2c90 100644 --- a/Data/SQLite/testsuite/TestSuite_vs110.vcxproj +++ b/Data/SQLite/testsuite/TestSuite_vs110.vcxproj @@ -101,32 +101,32 @@ bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false diff --git a/Data/SQLite/testsuite/TestSuite_vs110.vcxproj.filters b/Data/SQLite/testsuite/TestSuite_vs110.vcxproj.filters index a9ced7780..3c12a67c3 100644 --- a/Data/SQLite/testsuite/TestSuite_vs110.vcxproj.filters +++ b/Data/SQLite/testsuite/TestSuite_vs110.vcxproj.filters @@ -2,28 +2,28 @@ - {b890c730-f3e5-4a1f-83c5-2e03413e82c9} + {93c54141-6c1f-4631-b84d-0afff5f11112} - {3886ddee-d477-41e1-972f-e95bc999f6b7} + {6f6c0ffe-f172-4eab-bcbe-c705281f1010} - {affe1d18-e2c2-468f-9722-915214bd52a3} + {f49b151d-3d30-4daf-9f1e-155d25a6ca74} - {a2787e67-75af-4bb5-877e-1f3d3864f2b2} + {ab0d392a-d37e-4ae9-89c3-3bf8a67aaaff} - {ecff4d01-8e5a-4764-87ad-af6fa5cda377} + {9f773e9a-a221-4738-8280-351484f636a8} - {13d24074-fbc2-46f7-97b3-e534c26f8b9a} + {0afb78e6-b05d-4f2f-a611-79361c8f7d21} - {c247ab47-a3dc-43c6-8667-23ac597e72a1} + {38d078aa-b19b-4949-bffa-0856a1102e2a} - {b21aed73-2d7a-4a2f-8be8-8feb17a606be} + {672b65ae-b5b2-4727-b5c8-ff97aec19a74} diff --git a/Data/SQLite/testsuite/TestSuite_vs120.vcxproj b/Data/SQLite/testsuite/TestSuite_vs120.vcxproj index 96498bbb1..40ee324bc 100644 --- a/Data/SQLite/testsuite/TestSuite_vs120.vcxproj +++ b/Data/SQLite/testsuite/TestSuite_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false diff --git a/Data/SQLite/testsuite/TestSuite_vs120.vcxproj.filters b/Data/SQLite/testsuite/TestSuite_vs120.vcxproj.filters index 5140578cf..ef711d6e5 100644 --- a/Data/SQLite/testsuite/TestSuite_vs120.vcxproj.filters +++ b/Data/SQLite/testsuite/TestSuite_vs120.vcxproj.filters @@ -2,28 +2,28 @@ - {a7be1b37-53f2-4ed3-b3a0-c8aec1c0b538} + {81450ca6-a1fc-4081-acb6-b7edcc9933d3} - {276f37bd-6568-4b7e-a37a-7a88d2be2ee2} + {107164ff-1dce-4ecc-842e-451b19a57857} - {faf5b649-ff8b-4bcd-a2e0-dc9800fcd88e} + {f9b914a2-a532-45a4-b4de-039129476215} - {34a2a543-ca48-4da1-8295-9ac4d464bc4d} + {49e61030-7239-4d27-ba00-07d67c0e3b5a} - {2a6bc1f7-0a00-421e-b2ba-665fbfc7b389} + {6bab4f47-088e-458d-8fcf-6a79973ed9b0} - {58e16d1d-7cfe-4437-876c-92c9aa4a73cb} + {81b37400-09da-4ec8-ad14-caaaec53d00b} - {4de6fa21-6b1c-438f-91af-5834bf4adc6d} + {0a483d9e-ac62-4c9c-9ac2-6f55a4c2bef1} - {5351f035-65ba-4569-9dd7-c224e5593350} + {84846517-2b58-4d06-94cd-dd57f55d3e48} diff --git a/Data/SQLite/testsuite/TestSuite_x64_vs100.vcxproj b/Data/SQLite/testsuite/TestSuite_x64_vs100.vcxproj index 164fc9e02..6d3be5b9b 100644 --- a/Data/SQLite/testsuite/TestSuite_x64_vs100.vcxproj +++ b/Data/SQLite/testsuite/TestSuite_x64_vs100.vcxproj @@ -87,22 +87,22 @@ <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false TestSuited TestSuited @@ -129,6 +129,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitd.lib;WinTestRunnerd.lib;%(AdditionalDependencies) @@ -139,6 +140,7 @@ bin64\TestSuited.pdb Windows MachineX64 + %(AdditionalOptions) @@ -161,6 +163,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnit.lib;WinTestRunner.lib;%(AdditionalDependencies) @@ -171,6 +174,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -191,6 +195,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmtd.lib;WinTestRunnermtd.lib;iphlpapi.lib;winmm.lib;nafxcwd.lib;libcmtd.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -202,6 +207,7 @@ bin64\static_mt\TestSuited.pdb Windows MachineX64 + %(AdditionalOptions) @@ -224,6 +230,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmt.lib;WinTestRunnermt.lib;iphlpapi.lib;winmm.lib;nafxcw.lib;libcmt.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -235,6 +242,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -255,6 +263,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmdd.lib;WinTestRunnermdd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -265,6 +274,7 @@ bin64\static_md\TestSuited.pdb Windows MachineX64 + %(AdditionalOptions) @@ -287,6 +297,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmd.lib;WinTestRunnermd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -297,6 +308,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Data/SQLite/testsuite/TestSuite_x64_vs100.vcxproj.filters b/Data/SQLite/testsuite/TestSuite_x64_vs100.vcxproj.filters index 55d58173f..3b62b9e46 100644 --- a/Data/SQLite/testsuite/TestSuite_x64_vs100.vcxproj.filters +++ b/Data/SQLite/testsuite/TestSuite_x64_vs100.vcxproj.filters @@ -2,28 +2,28 @@ - {f4d5b02f-8e3f-4cc6-af60-93cf8b7aa7a3} + {683f3baf-22ff-41c1-be6a-a034acda6c34} - {95772d97-1a80-445d-bc0b-7bfe404d384f} + {234ad27a-9126-4faf-8b04-324783993681} - {a0a4f278-4bfb-4c63-ba46-0d589d6b6894} + {73d765a7-4f40-45c4-bbeb-e60f3d586b33} - {94ba1fb4-b0aa-4b3a-843a-50cbc1862477} + {fa5d6b61-da76-421e-abff-f83973fd1db1} - {485e27e2-f5c9-4dfc-9020-493ce6a7b3d5} + {4203894d-00b9-4ea5-b754-44eebd925543} - {cea6e52c-ee9f-4137-8b69-18dcb399e730} + {231a7e9e-2551-4667-8561-8872b0d75d5f} - {fa2ddf82-1654-440a-9305-53d3b040a165} + {7ad5ee76-f4cd-499c-8359-38bdb5afdc53} - {023a0b6f-34bb-497b-a472-274b7613301e} + {6805ce59-5423-408f-8070-8e59c953f368} diff --git a/Data/SQLite/testsuite/TestSuite_x64_vs110.vcxproj b/Data/SQLite/testsuite/TestSuite_x64_vs110.vcxproj index 7d9dd7354..d3b463792 100644 --- a/Data/SQLite/testsuite/TestSuite_x64_vs110.vcxproj +++ b/Data/SQLite/testsuite/TestSuite_x64_vs110.vcxproj @@ -101,32 +101,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false diff --git a/Data/SQLite/testsuite/TestSuite_x64_vs110.vcxproj.filters b/Data/SQLite/testsuite/TestSuite_x64_vs110.vcxproj.filters index 17ea609a1..795489c2a 100644 --- a/Data/SQLite/testsuite/TestSuite_x64_vs110.vcxproj.filters +++ b/Data/SQLite/testsuite/TestSuite_x64_vs110.vcxproj.filters @@ -2,28 +2,28 @@ - {e062d948-8d59-433f-88cc-82d444073d02} + {c6e222ee-beae-441f-b4b7-8b0128568878} - {338cf7a4-f178-4c22-bc3a-f65318d3e422} + {c2ac76d2-92c5-4da5-bfb6-c606f48a823b} - {2a24d61c-4a8c-433c-a52a-98f2282e058b} + {74530263-9195-4e6c-88a0-9c462557c310} - {e4c7fa93-0d90-4ded-96a1-2bc67401ae2c} + {4587e180-f686-4d08-b50f-1b1a05e3a5d8} - {acda1983-abf0-439b-981b-76fe542fce09} + {5dac8234-ff8e-490c-b803-6564cc403bf4} - {bb7b52dc-2a97-423c-8d80-3d9ae4aebb3d} + {d441583f-0b9a-42f0-9eed-09ce53940b46} - {64656ae3-ef76-47aa-b7ca-d17f02499b5d} + {575633a2-3682-464f-be47-5cef784145bd} - {153d1452-cde8-43a7-8e5e-ac696f8206e4} + {b2c817c6-2f68-4afe-9bb0-aa82367a0bdb} diff --git a/Data/SQLite/testsuite/TestSuite_x64_vs120.vcxproj b/Data/SQLite/testsuite/TestSuite_x64_vs120.vcxproj index 322731d0b..9d14e3950 100644 --- a/Data/SQLite/testsuite/TestSuite_x64_vs120.vcxproj +++ b/Data/SQLite/testsuite/TestSuite_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false diff --git a/Data/SQLite/testsuite/TestSuite_x64_vs120.vcxproj.filters b/Data/SQLite/testsuite/TestSuite_x64_vs120.vcxproj.filters index 208ab950d..d3739cdf1 100644 --- a/Data/SQLite/testsuite/TestSuite_x64_vs120.vcxproj.filters +++ b/Data/SQLite/testsuite/TestSuite_x64_vs120.vcxproj.filters @@ -2,28 +2,28 @@ - {7e3b6dec-4efe-496a-a153-b24f2a3fd652} + {c65989f5-67ab-41f1-bc9d-3ed1563c587b} - {a3eb398c-8896-47b9-a624-d5b3b5d38fc2} + {7f336709-9a69-4688-9695-dfebd3fb2552} - {48abd185-a9e6-42d6-9f0e-e82bbcfa81f2} + {ee50a248-8420-429f-bbda-16b4a84bbda7} - {2b7b440f-34e4-4840-a747-004678088605} + {d2556834-756e-4edd-8aa0-b22c632fb8a1} - {f443b4b7-e684-4c24-95d1-389c13cb53b7} + {3aec1bfa-4771-4bbd-83ae-1ae4ae38f2ee} - {04c1d2c0-7155-4f97-b957-54fb57471612} + {9638a891-366e-457f-be96-5177ca99f26b} - {f829e37f-51cd-4acf-96bf-e9c28da30920} + {0a629fec-af13-4088-94d7-85ffead565e3} - {6dc009c0-ef35-4b5c-b220-e438246c0450} + {e9d1052b-c0d2-4786-8a13-63265348072a} diff --git a/Data/SQLite/testsuite/TestSuite_x64_vs90.vcproj b/Data/SQLite/testsuite/TestSuite_x64_vs90.vcproj index decd1cf0f..ce7038c29 100644 --- a/Data/SQLite/testsuite/TestSuite_x64_vs90.vcproj +++ b/Data/SQLite/testsuite/TestSuite_x64_vs90.vcproj @@ -33,7 +33,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\include;..\..\..\CppUnit\include;..\..\..\CppUnit\WinTestRunner\include;..\..\..\Foundation\include;..\..\..\Data\include" - PreprocessorDefinitions="SQLITE_ENABLE_FTS3;WIN32;_DEBUG;_WINDOWS;WINVER=0x0501;" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;WINVER=0x0501;" StringPooling="true" MinimalRebuild="true" BasicRuntimeChecks="3" @@ -47,7 +47,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> Type; typedef SharedPtr Ptr; - explicit InternalBulkExtraction(C& result, + InternalBulkExtraction(C& result, Column* pColumn, Poco::UInt32 limit, const Position& pos = Position(0)): diff --git a/Data/include/Poco/Data/Extraction.h b/Data/include/Poco/Data/Extraction.h index e929e7da8..14bdc7458 100644 --- a/Data/include/Poco/Data/Extraction.h +++ b/Data/include/Poco/Data/Extraction.h @@ -511,7 +511,7 @@ public: typedef SharedPtr Ptr; - explicit InternalExtraction(C& result, Column* pColumn, const Position& pos = Position(0)): + InternalExtraction(C& result, Column* pColumn, const Position& pos = Position(0)): Extraction(result, ValType(), pos), _pColumn(pColumn) /// Creates InternalExtraction. diff --git a/Data/include/Poco/Data/RecordSet.h b/Data/include/Poco/Data/RecordSet.h index 48fe0c14d..fa6dbc4d7 100644 --- a/Data/include/Poco/Data/RecordSet.h +++ b/Data/include/Poco/Data/RecordSet.h @@ -82,12 +82,12 @@ public: RowFormatter::Ptr pRowFormatter = 0); /// Creates the RecordSet. - explicit RecordSet(Session& rSession, + RecordSet(Session& rSession, const std::string& query, RowFormatter::Ptr pRowFormatter = 0); /// Creates the RecordSet. - explicit RecordSet(Session& rSession, + RecordSet(Session& rSession, const std::string& query, const RowFormatter& rowFormatter); /// Creates the RecordSet. diff --git a/Data/include/Poco/Data/SimpleRowFormatter.h b/Data/include/Poco/Data/SimpleRowFormatter.h index c9a26da71..9b9d10715 100644 --- a/Data/include/Poco/Data/SimpleRowFormatter.h +++ b/Data/include/Poco/Data/SimpleRowFormatter.h @@ -37,8 +37,9 @@ public: //typedef RowFormatter::ValueVec ValueVec; static const int DEFAULT_COLUMN_WIDTH = 16; + static const int DEFAULT_SPACING = 1; - SimpleRowFormatter(std::streamsize columnWidth = DEFAULT_COLUMN_WIDTH); + SimpleRowFormatter(std::streamsize columnWidth = DEFAULT_COLUMN_WIDTH, std::streamsize spacing = DEFAULT_SPACING); /// Creates the SimpleRowFormatter and sets the column width to specified value. SimpleRowFormatter(const SimpleRowFormatter& other); @@ -67,9 +68,13 @@ public: std::streamsize getColumnWidth() const; /// Returns the column width. + + std::streamsize getSpacing() const; + /// Returns the spacing. private: std::streamsize _colWidth; + std::streamsize _spacing; int _rowCount; }; @@ -95,6 +100,12 @@ inline std::streamsize SimpleRowFormatter::getColumnWidth() const } +inline std::streamsize SimpleRowFormatter::getSpacing() const +{ + return _spacing; +} + + } } // namespace Poco::Data diff --git a/Data/samples/Binding/Binding_CE_vs90.vcproj b/Data/samples/Binding/Binding_CE_vs90.vcproj index 8ac35542e..bf16bddcb 100644 --- a/Data/samples/Binding/Binding_CE_vs90.vcproj +++ b/Data/samples/Binding/Binding_CE_vs90.vcproj @@ -46,7 +46,8 @@ CompileAs="0" DisableSpecificWarnings="4800;" CompileForArchitecture="2" - InterworkCalls="false"/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\Binding\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\Binding\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\Binding\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\Binding\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\Binding\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\Binding\$(Platform)\$(Configuration)\ false diff --git a/Data/samples/Binding/Binding_WEC2013_vs110.vcxproj.filters b/Data/samples/Binding/Binding_WEC2013_vs110.vcxproj.filters index 001ce1a6e..805364258 100644 --- a/Data/samples/Binding/Binding_WEC2013_vs110.vcxproj.filters +++ b/Data/samples/Binding/Binding_WEC2013_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {0251586b-64d9-46c8-ae5c-727d4ca4b72e} + {02354d80-5448-4322-ac46-52c6948ba61b} - {418f66ba-adc3-4195-b10f-fd48429f1f55} + {b3d04e33-044e-433c-ba2c-a73d3d8bbec0} diff --git a/Data/samples/Binding/Binding_WEC2013_vs120.vcxproj b/Data/samples/Binding/Binding_WEC2013_vs120.vcxproj index 30e45f8a9..3ece1f70c 100644 --- a/Data/samples/Binding/Binding_WEC2013_vs120.vcxproj +++ b/Data/samples/Binding/Binding_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\Binding\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\Binding\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\Binding\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\Binding\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\Binding\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\Binding\$(Platform)\$(Configuration)\ false diff --git a/Data/samples/Binding/Binding_WEC2013_vs120.vcxproj.filters b/Data/samples/Binding/Binding_WEC2013_vs120.vcxproj.filters index 438954a10..4a76098f1 100644 --- a/Data/samples/Binding/Binding_WEC2013_vs120.vcxproj.filters +++ b/Data/samples/Binding/Binding_WEC2013_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {c210c7b8-daba-407a-96cb-4adce0b79315} + {3666d52c-1ba7-475d-929a-63ebeae1330e} - {0d8cb191-8ea6-4565-9cc3-aa171731847d} + {83ac0779-02d3-40ba-9c8d-fe90dcb3a447} diff --git a/Data/samples/Binding/Binding_vs100.vcxproj b/Data/samples/Binding/Binding_vs100.vcxproj index 2a9097fa5..5a1ebafdf 100644 --- a/Data/samples/Binding/Binding_vs100.vcxproj +++ b/Data/samples/Binding/Binding_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\Binding\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\Binding\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\Binding\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\Binding\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\Binding\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\Binding\$(Configuration)\ false Bindingd Bindingd @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\Bindingd.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\Bindingd.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\Bindingd.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Data/samples/Binding/Binding_vs100.vcxproj.filters b/Data/samples/Binding/Binding_vs100.vcxproj.filters index 5e7877326..cda625d5c 100644 --- a/Data/samples/Binding/Binding_vs100.vcxproj.filters +++ b/Data/samples/Binding/Binding_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {f2bd424a-15f3-4e67-8064-fe933e0756b5} + {da789a88-7af4-4548-8e8e-37dabf0d31aa} - {0331bf57-3031-4ccb-994a-6583c3c894b8} + {cf9332ee-8ab6-4913-a1de-b62dc7c0d929} diff --git a/Data/samples/Binding/Binding_vs110.vcxproj b/Data/samples/Binding/Binding_vs110.vcxproj index b047e6995..98764cab6 100644 --- a/Data/samples/Binding/Binding_vs110.vcxproj +++ b/Data/samples/Binding/Binding_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\Binding\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\Binding\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\Binding\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\Binding\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\Binding\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\Binding\$(Configuration)\ false diff --git a/Data/samples/Binding/Binding_vs110.vcxproj.filters b/Data/samples/Binding/Binding_vs110.vcxproj.filters index 7b6acb612..e56620e6b 100644 --- a/Data/samples/Binding/Binding_vs110.vcxproj.filters +++ b/Data/samples/Binding/Binding_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {281d099c-f640-4541-aef8-04a6f05369d3} + {f831b06f-a1aa-4649-b74f-d56250c2b9c0} - {a570943e-8689-4b05-af88-daab51c05533} + {471078f5-7ae1-4e89-82f3-e79b78f1e3d4} diff --git a/Data/samples/Binding/Binding_vs120.vcxproj b/Data/samples/Binding/Binding_vs120.vcxproj index 7ff8871d4..094d5ba27 100644 --- a/Data/samples/Binding/Binding_vs120.vcxproj +++ b/Data/samples/Binding/Binding_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\Binding\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\Binding\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\Binding\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\Binding\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\Binding\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\Binding\$(Configuration)\ false diff --git a/Data/samples/Binding/Binding_vs120.vcxproj.filters b/Data/samples/Binding/Binding_vs120.vcxproj.filters index b85c2d124..c43f10c06 100644 --- a/Data/samples/Binding/Binding_vs120.vcxproj.filters +++ b/Data/samples/Binding/Binding_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {13702bf4-c436-4238-b175-f42ae47e1dde} + {b9e809ec-9f13-4c5d-ac1c-46d3b68ae89e} - {49cb2e10-3e78-43e7-b8ff-6e6873df2182} + {26bba423-a7c9-41c5-bf40-15fea7e74620} diff --git a/Data/samples/Binding/Binding_vs71.vcproj b/Data/samples/Binding/Binding_vs71.vcproj index 677f3a99b..931c415c3 100644 --- a/Data/samples/Binding/Binding_vs71.vcproj +++ b/Data/samples/Binding/Binding_vs71.vcproj @@ -36,19 +36,21 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\Binding\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\Binding\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Binding\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Binding\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\Binding\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\Binding\$(Configuration)\ false Bindingd Bindingd @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\Bindingd.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\Bindingd.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\Bindingd.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Data/samples/Binding/Binding_x64_vs100.vcxproj.filters b/Data/samples/Binding/Binding_x64_vs100.vcxproj.filters index c4ab561b8..547c8599a 100644 --- a/Data/samples/Binding/Binding_x64_vs100.vcxproj.filters +++ b/Data/samples/Binding/Binding_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {0e83e2ee-0252-49ca-9fa2-4eb44cb8d5cf} + {6ba174ed-1a2c-4289-b1f3-8ada1fbdb47f} - {93fe9333-e447-4e4f-8b75-af5b07b33101} + {e3ce51e8-0076-402f-a740-d7251ac12613} diff --git a/Data/samples/Binding/Binding_x64_vs110.vcxproj b/Data/samples/Binding/Binding_x64_vs110.vcxproj index 3ffc1c204..b694564f9 100644 --- a/Data/samples/Binding/Binding_x64_vs110.vcxproj +++ b/Data/samples/Binding/Binding_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\Binding\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\Binding\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Binding\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Binding\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\Binding\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\Binding\$(Configuration)\ false diff --git a/Data/samples/Binding/Binding_x64_vs110.vcxproj.filters b/Data/samples/Binding/Binding_x64_vs110.vcxproj.filters index 3c0b41e33..83d7fe6c0 100644 --- a/Data/samples/Binding/Binding_x64_vs110.vcxproj.filters +++ b/Data/samples/Binding/Binding_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {b4f3fe67-6203-4a89-a3fb-4dba6599b343} + {2700ecee-ab67-4dd0-9a47-1f1305796b69} - {c9544301-1fdf-47d3-bfc1-68238a66523e} + {ed632b16-a88a-462b-b88c-36a292e23e4d} diff --git a/Data/samples/Binding/Binding_x64_vs120.vcxproj b/Data/samples/Binding/Binding_x64_vs120.vcxproj index 89510904f..dfa4d88f9 100644 --- a/Data/samples/Binding/Binding_x64_vs120.vcxproj +++ b/Data/samples/Binding/Binding_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\Binding\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\Binding\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Binding\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Binding\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\Binding\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\Binding\$(Configuration)\ false diff --git a/Data/samples/Binding/Binding_x64_vs120.vcxproj.filters b/Data/samples/Binding/Binding_x64_vs120.vcxproj.filters index 84b691db4..2e95a7243 100644 --- a/Data/samples/Binding/Binding_x64_vs120.vcxproj.filters +++ b/Data/samples/Binding/Binding_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {99b40c9a-bd1a-4fc7-8018-0f8a2f5c4619} + {daee5805-943b-4735-8198-efbf1714bc08} - {77b1e921-60d8-4586-859c-ebb6efdf291d} + {9b1e3c75-2a79-4b23-8e16-fbba8bdfa2a2} diff --git a/Data/samples/Binding/Binding_x64_vs90.vcproj b/Data/samples/Binding/Binding_x64_vs90.vcproj index 2b693859c..57019a4d3 100644 --- a/Data/samples/Binding/Binding_x64_vs90.vcproj +++ b/Data/samples/Binding/Binding_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\RecordSet\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\RecordSet\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\RecordSet\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\RecordSet\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\RecordSet\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\RecordSet\$(Platform)\$(Configuration)\ false diff --git a/Data/samples/RecordSet/RecordSet_WEC2013_vs110.vcxproj.filters b/Data/samples/RecordSet/RecordSet_WEC2013_vs110.vcxproj.filters index d378db5da..ec2d867c2 100644 --- a/Data/samples/RecordSet/RecordSet_WEC2013_vs110.vcxproj.filters +++ b/Data/samples/RecordSet/RecordSet_WEC2013_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {95e9ed46-9bec-4415-a112-bce96dca6eff} + {343e02e9-0c38-4808-a2dd-12043d4bece3} - {ecbf664a-e330-4b3c-b15b-9ac64bc532b5} + {f8298177-e5fa-4eab-a968-034d91dc5fad} diff --git a/Data/samples/RecordSet/RecordSet_WEC2013_vs120.vcxproj b/Data/samples/RecordSet/RecordSet_WEC2013_vs120.vcxproj index b86767f96..919e4e65b 100644 --- a/Data/samples/RecordSet/RecordSet_WEC2013_vs120.vcxproj +++ b/Data/samples/RecordSet/RecordSet_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\RecordSet\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\RecordSet\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\RecordSet\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\RecordSet\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\RecordSet\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\RecordSet\$(Platform)\$(Configuration)\ false diff --git a/Data/samples/RecordSet/RecordSet_WEC2013_vs120.vcxproj.filters b/Data/samples/RecordSet/RecordSet_WEC2013_vs120.vcxproj.filters index 2234eb0eb..3ada9d373 100644 --- a/Data/samples/RecordSet/RecordSet_WEC2013_vs120.vcxproj.filters +++ b/Data/samples/RecordSet/RecordSet_WEC2013_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {54d3e556-aab6-43d8-8fc4-35f08a96e2c5} + {d0ef6a88-0775-4e31-beb6-1bf810797e66} - {d75c515e-8ed0-4a9d-ad3b-5e8f0eb283ff} + {7f995252-983d-425a-b8d0-947769726456} diff --git a/Data/samples/RecordSet/RecordSet_vs100.vcxproj b/Data/samples/RecordSet/RecordSet_vs100.vcxproj index 2fcd686b0..bc59acb81 100644 --- a/Data/samples/RecordSet/RecordSet_vs100.vcxproj +++ b/Data/samples/RecordSet/RecordSet_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\RecordSet\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\RecordSet\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\RecordSet\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\RecordSet\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\RecordSet\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\RecordSet\$(Configuration)\ false RecordSetd RecordSetd @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\RecordSetd.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\RecordSetd.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\RecordSetd.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Data/samples/RecordSet/RecordSet_vs100.vcxproj.filters b/Data/samples/RecordSet/RecordSet_vs100.vcxproj.filters index 8c9da6eef..a1fbfafdc 100644 --- a/Data/samples/RecordSet/RecordSet_vs100.vcxproj.filters +++ b/Data/samples/RecordSet/RecordSet_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {11604c8c-3173-4fe4-8a40-8ff7393f4070} + {c739f2cb-922b-4f5a-9beb-10022edbcbee} - {c354e337-fa23-42f4-8d82-c9a8cd751598} + {5db30a89-6b5f-42b7-b655-e19b5068c524} diff --git a/Data/samples/RecordSet/RecordSet_vs110.vcxproj b/Data/samples/RecordSet/RecordSet_vs110.vcxproj index 2d36f0026..3e5a07986 100644 --- a/Data/samples/RecordSet/RecordSet_vs110.vcxproj +++ b/Data/samples/RecordSet/RecordSet_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\RecordSet\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\RecordSet\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\RecordSet\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\RecordSet\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\RecordSet\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\RecordSet\$(Configuration)\ false diff --git a/Data/samples/RecordSet/RecordSet_vs110.vcxproj.filters b/Data/samples/RecordSet/RecordSet_vs110.vcxproj.filters index 270b019fc..5b3be176f 100644 --- a/Data/samples/RecordSet/RecordSet_vs110.vcxproj.filters +++ b/Data/samples/RecordSet/RecordSet_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {8b7036bb-43f2-4244-a01c-9db23b82f22c} + {5fc95d7f-a7bd-4784-be6a-af1c96c0480c} - {2121c00d-5ee0-4595-a305-6e199868381f} + {32147424-64f3-4c43-bc97-86c09515c2b2} diff --git a/Data/samples/RecordSet/RecordSet_vs120.vcxproj b/Data/samples/RecordSet/RecordSet_vs120.vcxproj index ca16dd891..e8ca1a719 100644 --- a/Data/samples/RecordSet/RecordSet_vs120.vcxproj +++ b/Data/samples/RecordSet/RecordSet_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\RecordSet\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\RecordSet\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\RecordSet\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\RecordSet\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\RecordSet\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\RecordSet\$(Configuration)\ false diff --git a/Data/samples/RecordSet/RecordSet_vs120.vcxproj.filters b/Data/samples/RecordSet/RecordSet_vs120.vcxproj.filters index 1c9c3a8f0..97521231b 100644 --- a/Data/samples/RecordSet/RecordSet_vs120.vcxproj.filters +++ b/Data/samples/RecordSet/RecordSet_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {a329c89e-3830-41bf-95e1-fe62de8ac618} + {81d1d28e-ebb6-410f-87d5-4a12ecd2ce52} - {975b370f-1592-490b-96ee-9f859c176701} + {4d3bff1d-0046-458f-9c73-62ccd626d409} diff --git a/Data/samples/RecordSet/RecordSet_vs71.vcproj b/Data/samples/RecordSet/RecordSet_vs71.vcproj index ecb3a858d..3c2b8507e 100644 --- a/Data/samples/RecordSet/RecordSet_vs71.vcproj +++ b/Data/samples/RecordSet/RecordSet_vs71.vcproj @@ -36,19 +36,21 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\RecordSet\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\RecordSet\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\RecordSet\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\RecordSet\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\RecordSet\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\RecordSet\$(Configuration)\ false RecordSetd RecordSetd @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\RecordSetd.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\RecordSetd.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\RecordSetd.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Data/samples/RecordSet/RecordSet_x64_vs100.vcxproj.filters b/Data/samples/RecordSet/RecordSet_x64_vs100.vcxproj.filters index d1335270b..f9746fcde 100644 --- a/Data/samples/RecordSet/RecordSet_x64_vs100.vcxproj.filters +++ b/Data/samples/RecordSet/RecordSet_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {ec60424b-4795-4cb4-9a22-78cb92c93f6d} + {5d844f36-8e05-4d90-bb24-c139657739e4} - {3cd2a9bf-8879-481f-a137-0166dc1a2ecb} + {508632cf-85eb-485a-8dd3-af05ebf0c188} diff --git a/Data/samples/RecordSet/RecordSet_x64_vs110.vcxproj b/Data/samples/RecordSet/RecordSet_x64_vs110.vcxproj index f3b03a55b..f48faa51e 100644 --- a/Data/samples/RecordSet/RecordSet_x64_vs110.vcxproj +++ b/Data/samples/RecordSet/RecordSet_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\RecordSet\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\RecordSet\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\RecordSet\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\RecordSet\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\RecordSet\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\RecordSet\$(Configuration)\ false diff --git a/Data/samples/RecordSet/RecordSet_x64_vs110.vcxproj.filters b/Data/samples/RecordSet/RecordSet_x64_vs110.vcxproj.filters index 01f426bfd..985f6d8be 100644 --- a/Data/samples/RecordSet/RecordSet_x64_vs110.vcxproj.filters +++ b/Data/samples/RecordSet/RecordSet_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {e21da48c-edf1-4bcc-94e5-9711a8d56fbb} + {6af5dc94-e2fd-4c35-8771-e560c73f7f50} - {ba78aaa9-d0f2-4dab-9bc3-ab75b897a022} + {6c4e2fac-dd7b-4e4f-9119-c70b1045ad0d} diff --git a/Data/samples/RecordSet/RecordSet_x64_vs120.vcxproj b/Data/samples/RecordSet/RecordSet_x64_vs120.vcxproj index b925f29e8..581d43176 100644 --- a/Data/samples/RecordSet/RecordSet_x64_vs120.vcxproj +++ b/Data/samples/RecordSet/RecordSet_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\RecordSet\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\RecordSet\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\RecordSet\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\RecordSet\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\RecordSet\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\RecordSet\$(Configuration)\ false diff --git a/Data/samples/RecordSet/RecordSet_x64_vs120.vcxproj.filters b/Data/samples/RecordSet/RecordSet_x64_vs120.vcxproj.filters index c239eb17c..63f789ccb 100644 --- a/Data/samples/RecordSet/RecordSet_x64_vs120.vcxproj.filters +++ b/Data/samples/RecordSet/RecordSet_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {1da81fa8-e18b-4c7f-b1d5-75b734f8bef9} + {844d0f22-b726-48e1-bdf5-2b2bff82efd4} - {484b3cdb-bd85-420d-9d2a-18b805d9f684} + {ce41d7b8-fde7-4d5c-b68c-876bf6b645fe} diff --git a/Data/samples/RecordSet/RecordSet_x64_vs90.vcproj b/Data/samples/RecordSet/RecordSet_x64_vs90.vcproj index 7bc724bbe..aa7214509 100644 --- a/Data/samples/RecordSet/RecordSet_x64_vs90.vcproj +++ b/Data/samples/RecordSet/RecordSet_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\RowFormatter\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\RowFormatter\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\RowFormatter\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\RowFormatter\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\RowFormatter\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\RowFormatter\$(Platform)\$(Configuration)\ false diff --git a/Data/samples/RowFormatter/RowFormatter_WEC2013_vs110.vcxproj.filters b/Data/samples/RowFormatter/RowFormatter_WEC2013_vs110.vcxproj.filters index c1fe33ec3..a69472f3c 100644 --- a/Data/samples/RowFormatter/RowFormatter_WEC2013_vs110.vcxproj.filters +++ b/Data/samples/RowFormatter/RowFormatter_WEC2013_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {fe4e6ed2-fc33-4bf6-9995-be35a97c17a8} + {94b4d486-bf11-4a52-bc2e-6f868b7c7512} - {f82d241a-cb72-4ac6-a490-c32516cc916a} + {f9292ec6-4e4c-4edf-a498-b4577968b25f} diff --git a/Data/samples/RowFormatter/RowFormatter_WEC2013_vs120.vcxproj b/Data/samples/RowFormatter/RowFormatter_WEC2013_vs120.vcxproj index 03197ca33..763a2f08d 100644 --- a/Data/samples/RowFormatter/RowFormatter_WEC2013_vs120.vcxproj +++ b/Data/samples/RowFormatter/RowFormatter_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\RowFormatter\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\RowFormatter\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\RowFormatter\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\RowFormatter\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\RowFormatter\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\RowFormatter\$(Platform)\$(Configuration)\ false diff --git a/Data/samples/RowFormatter/RowFormatter_WEC2013_vs120.vcxproj.filters b/Data/samples/RowFormatter/RowFormatter_WEC2013_vs120.vcxproj.filters index f3ba15d6f..80c05aaa1 100644 --- a/Data/samples/RowFormatter/RowFormatter_WEC2013_vs120.vcxproj.filters +++ b/Data/samples/RowFormatter/RowFormatter_WEC2013_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {bf60eba7-f6dc-4555-b470-1b7216ba72f3} + {e559ada1-bd91-4761-8761-14d525896175} - {15425cbb-e4f0-4f57-be9a-2e1c24085a8e} + {b65ab58b-5087-437c-8b7a-2d9ec987d110} diff --git a/Data/samples/RowFormatter/RowFormatter_vs100.vcxproj b/Data/samples/RowFormatter/RowFormatter_vs100.vcxproj index 7c9eb4eef..0f7e70852 100644 --- a/Data/samples/RowFormatter/RowFormatter_vs100.vcxproj +++ b/Data/samples/RowFormatter/RowFormatter_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\RowFormatter\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\RowFormatter\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\RowFormatter\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\RowFormatter\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\RowFormatter\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\RowFormatter\$(Configuration)\ false RowFormatterd RowFormatterd @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\RowFormatterd.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\RowFormatterd.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\RowFormatterd.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Data/samples/RowFormatter/RowFormatter_vs100.vcxproj.filters b/Data/samples/RowFormatter/RowFormatter_vs100.vcxproj.filters index 18c4cc1a3..278163522 100644 --- a/Data/samples/RowFormatter/RowFormatter_vs100.vcxproj.filters +++ b/Data/samples/RowFormatter/RowFormatter_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {09a91a3c-9c1b-45a8-b913-20ba98c572de} + {191173f5-5b60-4e0a-a99d-1bd224f98488} - {2ff6a3ea-eee3-41e6-9127-c76dfb7a45ec} + {5eb8d6d4-0cce-4c93-870b-9e55c541b168} diff --git a/Data/samples/RowFormatter/RowFormatter_vs110.vcxproj b/Data/samples/RowFormatter/RowFormatter_vs110.vcxproj index 6834d090c..96c3ee387 100644 --- a/Data/samples/RowFormatter/RowFormatter_vs110.vcxproj +++ b/Data/samples/RowFormatter/RowFormatter_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\RowFormatter\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\RowFormatter\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\RowFormatter\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\RowFormatter\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\RowFormatter\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\RowFormatter\$(Configuration)\ false diff --git a/Data/samples/RowFormatter/RowFormatter_vs110.vcxproj.filters b/Data/samples/RowFormatter/RowFormatter_vs110.vcxproj.filters index ff52d9f7b..c8d20c469 100644 --- a/Data/samples/RowFormatter/RowFormatter_vs110.vcxproj.filters +++ b/Data/samples/RowFormatter/RowFormatter_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {187164e3-6208-4c69-8f5b-7bd1b1c76fb3} + {f8f5f82e-1010-4a7f-a145-96e6749f7ff4} - {3091c2df-6c2f-4803-8de6-bc2af76b65f1} + {472f96ef-7a33-4f69-b7aa-c0acc0a58b7e} diff --git a/Data/samples/RowFormatter/RowFormatter_vs120.vcxproj b/Data/samples/RowFormatter/RowFormatter_vs120.vcxproj index d3dbd76c0..02fb5d563 100644 --- a/Data/samples/RowFormatter/RowFormatter_vs120.vcxproj +++ b/Data/samples/RowFormatter/RowFormatter_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\RowFormatter\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\RowFormatter\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\RowFormatter\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\RowFormatter\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\RowFormatter\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\RowFormatter\$(Configuration)\ false diff --git a/Data/samples/RowFormatter/RowFormatter_vs120.vcxproj.filters b/Data/samples/RowFormatter/RowFormatter_vs120.vcxproj.filters index 1e8563ae2..ed9868c27 100644 --- a/Data/samples/RowFormatter/RowFormatter_vs120.vcxproj.filters +++ b/Data/samples/RowFormatter/RowFormatter_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {c9d6021b-af82-4250-ba31-ab90ab0a4fff} + {1887de8d-b1d3-4a03-a15d-25027d2ece48} - {c4691272-2e89-4abd-bb9b-e994c0ac93c9} + {38e6320e-0163-41ea-b0c9-7a2cadec645d} diff --git a/Data/samples/RowFormatter/RowFormatter_vs71.vcproj b/Data/samples/RowFormatter/RowFormatter_vs71.vcproj index 706469286..fe011d47a 100644 --- a/Data/samples/RowFormatter/RowFormatter_vs71.vcproj +++ b/Data/samples/RowFormatter/RowFormatter_vs71.vcproj @@ -36,19 +36,21 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\RowFormatter\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\RowFormatter\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\RowFormatter\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\RowFormatter\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\RowFormatter\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\RowFormatter\$(Configuration)\ false RowFormatterd RowFormatterd @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\RowFormatterd.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\RowFormatterd.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\RowFormatterd.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Data/samples/RowFormatter/RowFormatter_x64_vs100.vcxproj.filters b/Data/samples/RowFormatter/RowFormatter_x64_vs100.vcxproj.filters index 30798e250..feed52f95 100644 --- a/Data/samples/RowFormatter/RowFormatter_x64_vs100.vcxproj.filters +++ b/Data/samples/RowFormatter/RowFormatter_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {cce5d764-4172-4f35-8894-73fa8e95355a} + {d6ae67e4-bebc-4368-b5c6-a43080e58f2e} - {07b2796d-acfe-46e2-8e6c-f19761b085a6} + {36f696a9-1797-44ba-b8f4-99a83b515f02} diff --git a/Data/samples/RowFormatter/RowFormatter_x64_vs110.vcxproj b/Data/samples/RowFormatter/RowFormatter_x64_vs110.vcxproj index 6417427ad..fa01e286c 100644 --- a/Data/samples/RowFormatter/RowFormatter_x64_vs110.vcxproj +++ b/Data/samples/RowFormatter/RowFormatter_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\RowFormatter\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\RowFormatter\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\RowFormatter\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\RowFormatter\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\RowFormatter\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\RowFormatter\$(Configuration)\ false diff --git a/Data/samples/RowFormatter/RowFormatter_x64_vs110.vcxproj.filters b/Data/samples/RowFormatter/RowFormatter_x64_vs110.vcxproj.filters index b3c200c78..a0191ecb7 100644 --- a/Data/samples/RowFormatter/RowFormatter_x64_vs110.vcxproj.filters +++ b/Data/samples/RowFormatter/RowFormatter_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {cee04c2a-4f07-4a52-9fc6-3b7fa0980d56} + {83c16d7f-ed4d-440e-9c86-b7e62d725e47} - {1c377984-c4fe-4de9-b925-771da63bdf74} + {7ea098f6-a874-4c52-8380-1539ec563386} diff --git a/Data/samples/RowFormatter/RowFormatter_x64_vs120.vcxproj b/Data/samples/RowFormatter/RowFormatter_x64_vs120.vcxproj index 5565b9fb7..593e88fd1 100644 --- a/Data/samples/RowFormatter/RowFormatter_x64_vs120.vcxproj +++ b/Data/samples/RowFormatter/RowFormatter_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\RowFormatter\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\RowFormatter\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\RowFormatter\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\RowFormatter\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\RowFormatter\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\RowFormatter\$(Configuration)\ false diff --git a/Data/samples/RowFormatter/RowFormatter_x64_vs120.vcxproj.filters b/Data/samples/RowFormatter/RowFormatter_x64_vs120.vcxproj.filters index ac1da9676..356374132 100644 --- a/Data/samples/RowFormatter/RowFormatter_x64_vs120.vcxproj.filters +++ b/Data/samples/RowFormatter/RowFormatter_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {36ccae32-0c99-40c0-8fd5-240dd93c1ad1} + {3fd960a9-ebc3-4ac4-a88e-b8391fbc4d7f} - {3b98d88c-9d0c-4554-8189-97f610d9c1a2} + {78630f00-e63e-4b17-af68-dc3345aa8b08} diff --git a/Data/samples/RowFormatter/RowFormatter_x64_vs90.vcproj b/Data/samples/RowFormatter/RowFormatter_x64_vs90.vcproj index 93782957b..5e88c6bc9 100644 --- a/Data/samples/RowFormatter/RowFormatter_x64_vs90.vcproj +++ b/Data/samples/RowFormatter/RowFormatter_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\Tuple\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\Tuple\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\Tuple\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\Tuple\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\Tuple\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\Tuple\$(Platform)\$(Configuration)\ false diff --git a/Data/samples/Tuple/Tuple_WEC2013_vs110.vcxproj.filters b/Data/samples/Tuple/Tuple_WEC2013_vs110.vcxproj.filters index 7f986684c..f09811792 100644 --- a/Data/samples/Tuple/Tuple_WEC2013_vs110.vcxproj.filters +++ b/Data/samples/Tuple/Tuple_WEC2013_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {ccd95993-240c-4b35-8da0-1967a2646077} + {959e4742-876e-451d-a9f7-48769cbeb236} - {06522ff2-fc20-49b5-a62b-6b641448d5c4} + {c3997a47-6f8c-44ed-8609-c8e02ff1719f} diff --git a/Data/samples/Tuple/Tuple_WEC2013_vs120.vcxproj b/Data/samples/Tuple/Tuple_WEC2013_vs120.vcxproj index a1dc78874..5f0906262 100644 --- a/Data/samples/Tuple/Tuple_WEC2013_vs120.vcxproj +++ b/Data/samples/Tuple/Tuple_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\Tuple\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\Tuple\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\Tuple\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\Tuple\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\Tuple\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\Tuple\$(Platform)\$(Configuration)\ false diff --git a/Data/samples/Tuple/Tuple_WEC2013_vs120.vcxproj.filters b/Data/samples/Tuple/Tuple_WEC2013_vs120.vcxproj.filters index 1c43e1d8a..5965ffa5b 100644 --- a/Data/samples/Tuple/Tuple_WEC2013_vs120.vcxproj.filters +++ b/Data/samples/Tuple/Tuple_WEC2013_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {8bdc41f8-d9e2-4448-8076-6adc779b007c} + {cb4bf2ef-305a-4c4f-a4cb-f95b26358ce9} - {0b36c2a4-2ad8-45e6-ac32-3532ecaa6f78} + {83234b0b-de48-4ebf-9e4c-0cc5812928ca} diff --git a/Data/samples/Tuple/Tuple_vs100.vcxproj b/Data/samples/Tuple/Tuple_vs100.vcxproj index c77a9a93b..261a20eeb 100644 --- a/Data/samples/Tuple/Tuple_vs100.vcxproj +++ b/Data/samples/Tuple/Tuple_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\Tuple\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\Tuple\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\Tuple\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\Tuple\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\Tuple\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\Tuple\$(Configuration)\ false Tupled Tupled @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\Tupled.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\Tupled.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\Tupled.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Data/samples/Tuple/Tuple_vs100.vcxproj.filters b/Data/samples/Tuple/Tuple_vs100.vcxproj.filters index b69ea77f0..a1be34059 100644 --- a/Data/samples/Tuple/Tuple_vs100.vcxproj.filters +++ b/Data/samples/Tuple/Tuple_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {80f6027f-08ee-4586-8acf-3b733071da04} + {d3ff7a68-8969-4629-a621-66aeedebd2bf} - {9fb1e4e9-4e08-48c9-9853-54da2d5b206a} + {55159b16-3ef7-4e49-9741-cb7f1d1b86ca} diff --git a/Data/samples/Tuple/Tuple_vs110.vcxproj b/Data/samples/Tuple/Tuple_vs110.vcxproj index 99aa8cd65..db6a37aa8 100644 --- a/Data/samples/Tuple/Tuple_vs110.vcxproj +++ b/Data/samples/Tuple/Tuple_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\Tuple\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\Tuple\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\Tuple\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\Tuple\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\Tuple\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\Tuple\$(Configuration)\ false diff --git a/Data/samples/Tuple/Tuple_vs110.vcxproj.filters b/Data/samples/Tuple/Tuple_vs110.vcxproj.filters index 6b627b71b..2e98269f2 100644 --- a/Data/samples/Tuple/Tuple_vs110.vcxproj.filters +++ b/Data/samples/Tuple/Tuple_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {281dc01d-a9fa-48bd-8c50-1554500215cd} + {67409cdc-9304-4bd6-8bd8-4656b3819ae5} - {ec8d227f-266e-4292-99ff-5aefc3de28c5} + {389400f5-0ec6-45b2-a98e-a3a288806718} diff --git a/Data/samples/Tuple/Tuple_vs120.vcxproj b/Data/samples/Tuple/Tuple_vs120.vcxproj index e51d1d6f1..da4d3b65e 100644 --- a/Data/samples/Tuple/Tuple_vs120.vcxproj +++ b/Data/samples/Tuple/Tuple_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\Tuple\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\Tuple\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\Tuple\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\Tuple\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\Tuple\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\Tuple\$(Configuration)\ false diff --git a/Data/samples/Tuple/Tuple_vs120.vcxproj.filters b/Data/samples/Tuple/Tuple_vs120.vcxproj.filters index 4217816fb..0a4105fce 100644 --- a/Data/samples/Tuple/Tuple_vs120.vcxproj.filters +++ b/Data/samples/Tuple/Tuple_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {4cc2484a-0ae6-41f5-b1ad-73e89f43bde7} + {03e34dc4-e85a-4afc-8d19-4db8d3097175} - {d8182ef0-b6dc-465e-a416-fb8f6a0649a8} + {a39b727d-635c-48d7-8e96-c14719565713} diff --git a/Data/samples/Tuple/Tuple_vs71.vcproj b/Data/samples/Tuple/Tuple_vs71.vcproj index 409cabed3..ec5ce49a2 100644 --- a/Data/samples/Tuple/Tuple_vs71.vcproj +++ b/Data/samples/Tuple/Tuple_vs71.vcproj @@ -36,19 +36,21 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\Tuple\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\Tuple\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Tuple\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Tuple\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\Tuple\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\Tuple\$(Configuration)\ false Tupled Tupled @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\Tupled.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\Tupled.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\Tupled.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Data/samples/Tuple/Tuple_x64_vs100.vcxproj.filters b/Data/samples/Tuple/Tuple_x64_vs100.vcxproj.filters index dfe6b4704..a45d3ccca 100644 --- a/Data/samples/Tuple/Tuple_x64_vs100.vcxproj.filters +++ b/Data/samples/Tuple/Tuple_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {019b37f2-90f7-4ddc-8f05-baffd29652b6} + {594c47c9-da76-40ba-a50a-a9d614b27e9f} - {ea252747-a4d2-4ffe-8571-68473afc6cb5} + {c2ed948e-9c1f-43f0-8fff-7a2afb7fe530} diff --git a/Data/samples/Tuple/Tuple_x64_vs110.vcxproj b/Data/samples/Tuple/Tuple_x64_vs110.vcxproj index c02f8d408..67157278c 100644 --- a/Data/samples/Tuple/Tuple_x64_vs110.vcxproj +++ b/Data/samples/Tuple/Tuple_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\Tuple\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\Tuple\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Tuple\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Tuple\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\Tuple\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\Tuple\$(Configuration)\ false diff --git a/Data/samples/Tuple/Tuple_x64_vs110.vcxproj.filters b/Data/samples/Tuple/Tuple_x64_vs110.vcxproj.filters index 7185e7eef..14848b156 100644 --- a/Data/samples/Tuple/Tuple_x64_vs110.vcxproj.filters +++ b/Data/samples/Tuple/Tuple_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {73752382-b622-4fa2-b7a2-d67c103e1873} + {c650513d-2146-4df2-9526-99a15e7d1606} - {88d1776f-e824-4390-8af1-82dbb8025aec} + {f9518cc8-a789-43b0-9387-bdd81579bcce} diff --git a/Data/samples/Tuple/Tuple_x64_vs120.vcxproj b/Data/samples/Tuple/Tuple_x64_vs120.vcxproj index 49d06e347..5b03a8e4e 100644 --- a/Data/samples/Tuple/Tuple_x64_vs120.vcxproj +++ b/Data/samples/Tuple/Tuple_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\Tuple\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\Tuple\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Tuple\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Tuple\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\Tuple\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\Tuple\$(Configuration)\ false diff --git a/Data/samples/Tuple/Tuple_x64_vs120.vcxproj.filters b/Data/samples/Tuple/Tuple_x64_vs120.vcxproj.filters index 187e59834..b7cbb7fc1 100644 --- a/Data/samples/Tuple/Tuple_x64_vs120.vcxproj.filters +++ b/Data/samples/Tuple/Tuple_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {dff5c091-2650-47c2-ae3c-85160575e185} + {fdd15a5d-6021-492e-9481-4a450b97839e} - {a503a0be-09b2-4ee7-b2dc-c451f9f56678} + {6c3be3e5-1199-4755-a78d-b062ab09cbf3} diff --git a/Data/samples/Tuple/Tuple_x64_vs90.vcproj b/Data/samples/Tuple/Tuple_x64_vs90.vcproj index c22fd970a..e78c3119e 100644 --- a/Data/samples/Tuple/Tuple_x64_vs90.vcproj +++ b/Data/samples/Tuple/Tuple_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\TypeHandler\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\TypeHandler\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\TypeHandler\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\TypeHandler\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\TypeHandler\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\TypeHandler\$(Platform)\$(Configuration)\ false diff --git a/Data/samples/TypeHandler/TypeHandler_WEC2013_vs110.vcxproj.filters b/Data/samples/TypeHandler/TypeHandler_WEC2013_vs110.vcxproj.filters index 546a28f3a..c06563b59 100644 --- a/Data/samples/TypeHandler/TypeHandler_WEC2013_vs110.vcxproj.filters +++ b/Data/samples/TypeHandler/TypeHandler_WEC2013_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {b2bad6d1-22b9-4dfe-b45c-f6ad637fe936} + {31ed5805-03bd-4d29-9123-f95c2c00702e} - {4bb07d79-08d8-4a3f-a05b-6fc40f908bec} + {ea2c7d83-e0f6-4b92-b001-fe1afbb10920} diff --git a/Data/samples/TypeHandler/TypeHandler_WEC2013_vs120.vcxproj b/Data/samples/TypeHandler/TypeHandler_WEC2013_vs120.vcxproj index 46ce3a6aa..256be0aec 100644 --- a/Data/samples/TypeHandler/TypeHandler_WEC2013_vs120.vcxproj +++ b/Data/samples/TypeHandler/TypeHandler_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\TypeHandler\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\TypeHandler\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\TypeHandler\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\TypeHandler\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\TypeHandler\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\TypeHandler\$(Platform)\$(Configuration)\ false diff --git a/Data/samples/TypeHandler/TypeHandler_WEC2013_vs120.vcxproj.filters b/Data/samples/TypeHandler/TypeHandler_WEC2013_vs120.vcxproj.filters index b7027c120..b01300b6b 100644 --- a/Data/samples/TypeHandler/TypeHandler_WEC2013_vs120.vcxproj.filters +++ b/Data/samples/TypeHandler/TypeHandler_WEC2013_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {1b112dbe-f45a-49cb-b81a-097df4106b31} + {cbbf70ae-ad3b-4de7-a846-f6a2682e5bbe} - {a9639c24-d238-4dae-ba59-a794df04fdce} + {2349e6c1-3a3f-43ec-94cb-ec3e1231cee0} diff --git a/Data/samples/TypeHandler/TypeHandler_vs100.vcxproj b/Data/samples/TypeHandler/TypeHandler_vs100.vcxproj index ed0717238..f9d778d1f 100644 --- a/Data/samples/TypeHandler/TypeHandler_vs100.vcxproj +++ b/Data/samples/TypeHandler/TypeHandler_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\TypeHandler\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TypeHandler\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TypeHandler\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TypeHandler\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TypeHandler\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TypeHandler\$(Configuration)\ false TypeHandlerd TypeHandlerd @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\TypeHandlerd.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\TypeHandlerd.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\TypeHandlerd.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Data/samples/TypeHandler/TypeHandler_vs100.vcxproj.filters b/Data/samples/TypeHandler/TypeHandler_vs100.vcxproj.filters index 8b80a7ac5..679cefe14 100644 --- a/Data/samples/TypeHandler/TypeHandler_vs100.vcxproj.filters +++ b/Data/samples/TypeHandler/TypeHandler_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {a67ba569-de10-4865-9bec-b765260d2174} + {cfe4dd75-b288-4a95-87df-d92d922ef54f} - {2e152e6b-d7e1-43be-ac70-8cf60225feee} + {d9f37766-aa1a-4e9c-af16-846d43fc5936} diff --git a/Data/samples/TypeHandler/TypeHandler_vs110.vcxproj b/Data/samples/TypeHandler/TypeHandler_vs110.vcxproj index fa6bca222..24d02bf3d 100644 --- a/Data/samples/TypeHandler/TypeHandler_vs110.vcxproj +++ b/Data/samples/TypeHandler/TypeHandler_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\TypeHandler\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TypeHandler\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TypeHandler\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TypeHandler\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TypeHandler\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TypeHandler\$(Configuration)\ false diff --git a/Data/samples/TypeHandler/TypeHandler_vs110.vcxproj.filters b/Data/samples/TypeHandler/TypeHandler_vs110.vcxproj.filters index 038dba85f..bb3037fb7 100644 --- a/Data/samples/TypeHandler/TypeHandler_vs110.vcxproj.filters +++ b/Data/samples/TypeHandler/TypeHandler_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {3c1e8008-0991-430b-86aa-958450d2f755} + {f1df8599-e5b7-4a7a-a32d-4744cdc7d39f} - {def07eaf-b16f-4202-87b2-eeb76d16305f} + {b269ac5b-9ad5-40fc-b0fc-4d41763f7a86} diff --git a/Data/samples/TypeHandler/TypeHandler_vs120.vcxproj b/Data/samples/TypeHandler/TypeHandler_vs120.vcxproj index 23c54c9f0..29bf7f04b 100644 --- a/Data/samples/TypeHandler/TypeHandler_vs120.vcxproj +++ b/Data/samples/TypeHandler/TypeHandler_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\TypeHandler\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TypeHandler\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TypeHandler\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TypeHandler\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TypeHandler\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TypeHandler\$(Configuration)\ false diff --git a/Data/samples/TypeHandler/TypeHandler_vs120.vcxproj.filters b/Data/samples/TypeHandler/TypeHandler_vs120.vcxproj.filters index 6b0e407f8..b258122dc 100644 --- a/Data/samples/TypeHandler/TypeHandler_vs120.vcxproj.filters +++ b/Data/samples/TypeHandler/TypeHandler_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {d6a95f98-5201-4c07-9748-a3f0c14d39fe} + {559c98b6-6f2f-4441-856a-2a758a82b88b} - {1f4f2af1-2953-4989-a9c7-2b84c7e076f4} + {0b6adb6d-e6e5-4177-b477-a6cec64d9277} diff --git a/Data/samples/TypeHandler/TypeHandler_vs71.vcproj b/Data/samples/TypeHandler/TypeHandler_vs71.vcproj index 1f6a6a8f6..76fe4436f 100644 --- a/Data/samples/TypeHandler/TypeHandler_vs71.vcproj +++ b/Data/samples/TypeHandler/TypeHandler_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\TypeHandler\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TypeHandler\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TypeHandler\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TypeHandler\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TypeHandler\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TypeHandler\$(Configuration)\ false TypeHandlerd TypeHandlerd @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\TypeHandlerd.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\TypeHandlerd.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\TypeHandlerd.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Data/samples/TypeHandler/TypeHandler_x64_vs100.vcxproj.filters b/Data/samples/TypeHandler/TypeHandler_x64_vs100.vcxproj.filters index f90943d0a..ba97d053f 100644 --- a/Data/samples/TypeHandler/TypeHandler_x64_vs100.vcxproj.filters +++ b/Data/samples/TypeHandler/TypeHandler_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {7a18ebf6-b203-45af-bf7e-fbd33bd57a9d} + {7b624a24-167f-4ab8-91da-972ff8294062} - {8533c7ab-a595-452b-bd63-312b8a379df8} + {a334840f-0ebd-4a3b-b40a-2ed46be19ed5} diff --git a/Data/samples/TypeHandler/TypeHandler_x64_vs110.vcxproj b/Data/samples/TypeHandler/TypeHandler_x64_vs110.vcxproj index f96cdff9c..93b055064 100644 --- a/Data/samples/TypeHandler/TypeHandler_x64_vs110.vcxproj +++ b/Data/samples/TypeHandler/TypeHandler_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\TypeHandler\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TypeHandler\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TypeHandler\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TypeHandler\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TypeHandler\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TypeHandler\$(Configuration)\ false diff --git a/Data/samples/TypeHandler/TypeHandler_x64_vs110.vcxproj.filters b/Data/samples/TypeHandler/TypeHandler_x64_vs110.vcxproj.filters index e2ad5f618..2a64be692 100644 --- a/Data/samples/TypeHandler/TypeHandler_x64_vs110.vcxproj.filters +++ b/Data/samples/TypeHandler/TypeHandler_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {16e98d24-2918-4632-94a0-d258ad43b340} + {611394ff-66bb-451b-8093-03684f42fc36} - {3f842498-d7d4-4208-8a6d-85ffba5bf9d9} + {7c3bb80d-c8e3-4fb7-9118-470f2ad92b8d} diff --git a/Data/samples/TypeHandler/TypeHandler_x64_vs120.vcxproj b/Data/samples/TypeHandler/TypeHandler_x64_vs120.vcxproj index 98c8993da..f7d5f316d 100644 --- a/Data/samples/TypeHandler/TypeHandler_x64_vs120.vcxproj +++ b/Data/samples/TypeHandler/TypeHandler_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\TypeHandler\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TypeHandler\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TypeHandler\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TypeHandler\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TypeHandler\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TypeHandler\$(Configuration)\ false diff --git a/Data/samples/TypeHandler/TypeHandler_x64_vs120.vcxproj.filters b/Data/samples/TypeHandler/TypeHandler_x64_vs120.vcxproj.filters index aca2b28ba..0334bc7ca 100644 --- a/Data/samples/TypeHandler/TypeHandler_x64_vs120.vcxproj.filters +++ b/Data/samples/TypeHandler/TypeHandler_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {36288c8d-84e4-4eb6-80bd-15f1481607f3} + {1a5f8113-6cf2-4842-960d-04f03443bbd4} - {55607034-b7ee-4879-910a-ffe4b6b09c42} + {68e02d0e-c45c-4a79-920d-d8444fb8b0ff} diff --git a/Data/samples/TypeHandler/TypeHandler_x64_vs90.vcproj b/Data/samples/TypeHandler/TypeHandler_x64_vs90.vcproj index 16a1547a4..ffd040f6f 100644 --- a/Data/samples/TypeHandler/TypeHandler_x64_vs90.vcproj +++ b/Data/samples/TypeHandler/TypeHandler_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> public: static std::size_t size() { - return 3; + return 4; } static void bind(std::size_t pos, const Person& person, AbstractBinder::Ptr pBinder, AbstractBinder::Direction dir) diff --git a/Data/samples/WebNotifier/WebNotifier_CE_vs90.vcproj b/Data/samples/WebNotifier/WebNotifier_CE_vs90.vcproj index 1a687cfaa..2151fea84 100644 --- a/Data/samples/WebNotifier/WebNotifier_CE_vs90.vcproj +++ b/Data/samples/WebNotifier/WebNotifier_CE_vs90.vcproj @@ -3,7 +3,7 @@ Name="WebNotifier" Version="9.00" ProjectType="Visual C++" - ProjectGUID="{0F0DF069-83D1-378D-A949-8DF9A883B627}" + ProjectGUID="{BACF8377-AD61-3B07-9BD5-6AEFCB0EC754}" RootNamespace="WebNotifier" Keyword="Win32Proj"> @@ -33,7 +33,7 @@ Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="0" - AdditionalIncludeDirectories="..\..\..\Foundation\include;..\..\..\Net\include;..\..\..\Data\include;..\..\..\Data\SQLite\include" + AdditionalIncludeDirectories="..\..\..\Foundation\include;..\..\..\Data\include;..\..\..\Data\SQLite\include;..\..\..\Net\include" PreprocessorDefinitions="_DEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);_CONSOLE;_CRT_SECURE_NO_WARNINGS;" StringPooling="true" MinimalRebuild="false" @@ -46,7 +46,8 @@ CompileAs="0" DisableSpecificWarnings="4800;" CompileForArchitecture="2" - InterworkCalls="false"/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\WebNotifier\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\WebNotifier\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\WebNotifier\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\WebNotifier\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\WebNotifier\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\WebNotifier\$(Platform)\$(Configuration)\ false diff --git a/Data/samples/WebNotifier/WebNotifier_WEC2013_vs110.vcxproj.filters b/Data/samples/WebNotifier/WebNotifier_WEC2013_vs110.vcxproj.filters index f9857ced2..4fbd30ea5 100644 --- a/Data/samples/WebNotifier/WebNotifier_WEC2013_vs110.vcxproj.filters +++ b/Data/samples/WebNotifier/WebNotifier_WEC2013_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {5ec2012a-4a65-4b1a-9e35-4269734fe0d5} + {dc2ed95f-dd58-46b1-a688-93022691c25c} - {5d636e7f-6a38-44fe-9330-6e692a2c77ac} + {642193c5-cba4-478f-870e-7a0eae75afbd} diff --git a/Data/samples/WebNotifier/WebNotifier_WEC2013_vs120.vcxproj b/Data/samples/WebNotifier/WebNotifier_WEC2013_vs120.vcxproj index 189ee1e74..ae19be884 100644 --- a/Data/samples/WebNotifier/WebNotifier_WEC2013_vs120.vcxproj +++ b/Data/samples/WebNotifier/WebNotifier_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\WebNotifier\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\WebNotifier\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\WebNotifier\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\WebNotifier\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\WebNotifier\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\WebNotifier\$(Platform)\$(Configuration)\ false diff --git a/Data/samples/WebNotifier/WebNotifier_WEC2013_vs120.vcxproj.filters b/Data/samples/WebNotifier/WebNotifier_WEC2013_vs120.vcxproj.filters index 27444df1f..fb9c76d84 100644 --- a/Data/samples/WebNotifier/WebNotifier_WEC2013_vs120.vcxproj.filters +++ b/Data/samples/WebNotifier/WebNotifier_WEC2013_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {456cca99-9c20-4198-8a1d-a8c4232d7cca} + {24d5e276-d9a3-4e9b-8cca-78f36f44671e} - {e54bfc51-bc3d-444a-b214-e51af49c34d6} + {e1462054-b1ee-493f-871a-c125a8ac65e0} diff --git a/Data/samples/WebNotifier/WebNotifier_vs100.vcxproj b/Data/samples/WebNotifier/WebNotifier_vs100.vcxproj index 46b71fdc6..11f412fe3 100644 --- a/Data/samples/WebNotifier/WebNotifier_vs100.vcxproj +++ b/Data/samples/WebNotifier/WebNotifier_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\WebNotifier\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\WebNotifier\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\WebNotifier\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\WebNotifier\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\WebNotifier\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\WebNotifier\$(Configuration)\ false WebNotifierd WebNotifierd @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\WebNotifierd.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\WebNotifierd.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\WebNotifierd.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Data/samples/WebNotifier/WebNotifier_vs100.vcxproj.filters b/Data/samples/WebNotifier/WebNotifier_vs100.vcxproj.filters index 29ffa0fcd..fae4febdc 100644 --- a/Data/samples/WebNotifier/WebNotifier_vs100.vcxproj.filters +++ b/Data/samples/WebNotifier/WebNotifier_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {61b5ed97-f358-43a2-9454-a6381379fb9e} + {49a548ed-ff15-4cb7-9728-b04e6823020e} - {ac991df6-2480-47d1-8c20-4e61f9396b0a} + {808fd35c-08a8-405a-b505-76571df05309} diff --git a/Data/samples/WebNotifier/WebNotifier_vs110.vcxproj b/Data/samples/WebNotifier/WebNotifier_vs110.vcxproj index 3a6a5192d..a3fc7b528 100644 --- a/Data/samples/WebNotifier/WebNotifier_vs110.vcxproj +++ b/Data/samples/WebNotifier/WebNotifier_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\WebNotifier\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\WebNotifier\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\WebNotifier\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\WebNotifier\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\WebNotifier\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\WebNotifier\$(Configuration)\ false diff --git a/Data/samples/WebNotifier/WebNotifier_vs110.vcxproj.filters b/Data/samples/WebNotifier/WebNotifier_vs110.vcxproj.filters index de664219d..81fbb0ecb 100644 --- a/Data/samples/WebNotifier/WebNotifier_vs110.vcxproj.filters +++ b/Data/samples/WebNotifier/WebNotifier_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {cb27fe33-fe16-48c9-ac85-ddbe1492fddf} + {7ca260cd-1e5e-4a38-8787-7eb62632b962} - {0795c60b-21d5-4726-921b-0ab827844cf1} + {9cbc8ab2-3d0a-49f1-940e-d038575b2286} diff --git a/Data/samples/WebNotifier/WebNotifier_vs120.vcxproj b/Data/samples/WebNotifier/WebNotifier_vs120.vcxproj index 2aa0b98ce..f7f363375 100644 --- a/Data/samples/WebNotifier/WebNotifier_vs120.vcxproj +++ b/Data/samples/WebNotifier/WebNotifier_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\WebNotifier\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\WebNotifier\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\WebNotifier\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\WebNotifier\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\WebNotifier\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\WebNotifier\$(Configuration)\ false diff --git a/Data/samples/WebNotifier/WebNotifier_vs120.vcxproj.filters b/Data/samples/WebNotifier/WebNotifier_vs120.vcxproj.filters index ae6b1e586..6904dc928 100644 --- a/Data/samples/WebNotifier/WebNotifier_vs120.vcxproj.filters +++ b/Data/samples/WebNotifier/WebNotifier_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {5f7f29da-80f6-4b48-92d2-dd14483228db} + {60966c32-0ad2-49b8-be68-1ed2c81cffe5} - {5f87c27c-48eb-4c65-9f9b-8ebc32f89dbf} + {bcc6ca91-f26c-49f2-8741-2fd61647993f} diff --git a/Data/samples/WebNotifier/WebNotifier_vs71.vcproj b/Data/samples/WebNotifier/WebNotifier_vs71.vcproj index 5ca82ccaa..19b881009 100644 --- a/Data/samples/WebNotifier/WebNotifier_vs71.vcproj +++ b/Data/samples/WebNotifier/WebNotifier_vs71.vcproj @@ -3,7 +3,7 @@ Name="WebNotifier" Version="7.10" ProjectType="Visual C++" - ProjectGUID="{0F0DF069-83D1-378D-A949-8DF9A883B627}" + ProjectGUID="{BACF8377-AD61-3B07-9BD5-6AEFCB0EC754}" RootNamespace="WebNotifier" Keyword="Win32Proj"> @@ -20,7 +20,7 @@ + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> @@ -31,7 +31,7 @@ + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> @@ -31,7 +31,7 @@ + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\WebNotifier\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\WebNotifier\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\WebNotifier\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\WebNotifier\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\WebNotifier\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\WebNotifier\$(Configuration)\ false WebNotifierd WebNotifierd @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\WebNotifierd.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\WebNotifierd.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\WebNotifierd.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Data/samples/WebNotifier/WebNotifier_x64_vs100.vcxproj.filters b/Data/samples/WebNotifier/WebNotifier_x64_vs100.vcxproj.filters index 1d4ae26c6..570fea92c 100644 --- a/Data/samples/WebNotifier/WebNotifier_x64_vs100.vcxproj.filters +++ b/Data/samples/WebNotifier/WebNotifier_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {ccb27745-29cf-420b-8568-61279b216b5e} + {4a8ee890-a877-4b2b-91d7-3c4a00b41530} - {e09aece7-856c-4ec2-83e3-c2f9bcc71c7b} + {9973d1a4-739f-4e5a-b73e-7785368ac52a} diff --git a/Data/samples/WebNotifier/WebNotifier_x64_vs110.vcxproj b/Data/samples/WebNotifier/WebNotifier_x64_vs110.vcxproj index a965f8fd1..09c8a493f 100644 --- a/Data/samples/WebNotifier/WebNotifier_x64_vs110.vcxproj +++ b/Data/samples/WebNotifier/WebNotifier_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\WebNotifier\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\WebNotifier\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\WebNotifier\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\WebNotifier\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\WebNotifier\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\WebNotifier\$(Configuration)\ false diff --git a/Data/samples/WebNotifier/WebNotifier_x64_vs110.vcxproj.filters b/Data/samples/WebNotifier/WebNotifier_x64_vs110.vcxproj.filters index 00d786e58..f60d6825a 100644 --- a/Data/samples/WebNotifier/WebNotifier_x64_vs110.vcxproj.filters +++ b/Data/samples/WebNotifier/WebNotifier_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {a41c19a6-0238-407f-84aa-108ad067f325} + {e3b2e03d-c281-4e6e-a526-177d39920618} - {1eea21b6-ff39-48ad-bfdd-198815f3ef1f} + {c88a262b-3862-4a53-8874-41663cd5edca} diff --git a/Data/samples/WebNotifier/WebNotifier_x64_vs120.vcxproj b/Data/samples/WebNotifier/WebNotifier_x64_vs120.vcxproj index 195cea6a1..5230e43c6 100644 --- a/Data/samples/WebNotifier/WebNotifier_x64_vs120.vcxproj +++ b/Data/samples/WebNotifier/WebNotifier_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\WebNotifier\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\WebNotifier\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\WebNotifier\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\WebNotifier\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\WebNotifier\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\WebNotifier\$(Configuration)\ false diff --git a/Data/samples/WebNotifier/WebNotifier_x64_vs120.vcxproj.filters b/Data/samples/WebNotifier/WebNotifier_x64_vs120.vcxproj.filters index fb6b8a1d7..d5da21a0a 100644 --- a/Data/samples/WebNotifier/WebNotifier_x64_vs120.vcxproj.filters +++ b/Data/samples/WebNotifier/WebNotifier_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {3f583f5d-d3d0-402e-a363-623266b48f2d} + {a32cdaa3-c0b7-4f4b-9cc8-29dd46605b24} - {733fcf42-eb4b-4e92-8268-4ab14f7cf452} + {5d63c96c-dd22-4883-b812-57d4bb4dc9dc} diff --git a/Data/samples/WebNotifier/WebNotifier_x64_vs90.vcproj b/Data/samples/WebNotifier/WebNotifier_x64_vs90.vcproj index 592d9f3ba..7fde0a820 100644 --- a/Data/samples/WebNotifier/WebNotifier_x64_vs90.vcproj +++ b/Data/samples/WebNotifier/WebNotifier_x64_vs90.vcproj @@ -3,7 +3,7 @@ Name="WebNotifier" Version="9.00" ProjectType="Visual C++" - ProjectGUID="{0F0DF069-83D1-378D-A949-8DF9A883B627}" + ProjectGUID="{BACF8377-AD61-3B07-9BD5-6AEFCB0EC754}" RootNamespace="WebNotifier" Keyword="Win32Proj"> @@ -31,7 +31,7 @@ + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> release(); + try + { + delete _pBegin; + delete _pEnd; + if(_pFilter) _pFilter->release(); - RowMap::iterator it = _rowMap.begin(); - RowMap::iterator end = _rowMap.end(); - for (; it != end; ++it) delete it->second; + RowMap::iterator it = _rowMap.begin(); + RowMap::iterator end = _rowMap.end(); + for (; it != end; ++it) delete it->second; + } + catch (...) + { + poco_unexpected(); + } } diff --git a/Data/src/Row.cpp b/Data/src/Row.cpp index 032d0e68c..7006a171c 100644 --- a/Data/src/Row.cpp +++ b/Data/src/Row.cpp @@ -86,7 +86,8 @@ Poco::Dynamic::Var& Row::get(std::size_t col) try { return _values.at(col); - }catch (std::out_of_range& re) + } + catch (std::out_of_range& re) { throw RangeException(re.what()); } diff --git a/Data/src/RowFilter.cpp b/Data/src/RowFilter.cpp index 8cbb16357..b5e3ff4fb 100644 --- a/Data/src/RowFilter.cpp +++ b/Data/src/RowFilter.cpp @@ -60,9 +60,16 @@ void RowFilter::init() RowFilter::~RowFilter() { - release(); - if (_pRecordSet) _pRecordSet->filter(0); - if (_pParent.get()) _pParent->removeFilter(this); + try + { + release(); + if (_pRecordSet) _pRecordSet->filter(0); + if (_pParent.get()) _pParent->removeFilter(this); + } + catch (...) + { + poco_unexpected(); + } } diff --git a/Data/src/SQLChannel.cpp b/Data/src/SQLChannel.cpp index 32b520a73..7c2afaf08 100644 --- a/Data/src/SQLChannel.cpp +++ b/Data/src/SQLChannel.cpp @@ -69,7 +69,14 @@ SQLChannel::SQLChannel(const std::string& connector, SQLChannel::~SQLChannel() { - close(); + try + { + close(); + } + catch (...) + { + poco_unexpected(); + } } diff --git a/Data/src/SessionPool.cpp b/Data/src/SessionPool.cpp index 7f2b54421..74f1aa598 100644 --- a/Data/src/SessionPool.cpp +++ b/Data/src/SessionPool.cpp @@ -41,7 +41,14 @@ SessionPool::SessionPool(const std::string& connector, const std::string& connec SessionPool::~SessionPool() { - shutdown(); + try + { + shutdown(); + } + catch (...) + { + poco_unexpected(); + } } diff --git a/Data/src/SimpleRowFormatter.cpp b/Data/src/SimpleRowFormatter.cpp index b510be137..7696fdcdf 100644 --- a/Data/src/SimpleRowFormatter.cpp +++ b/Data/src/SimpleRowFormatter.cpp @@ -23,15 +23,17 @@ namespace Poco { namespace Data { -SimpleRowFormatter::SimpleRowFormatter(std::streamsize columnWidth): - _colWidth(columnWidth), _rowCount(0) +SimpleRowFormatter::SimpleRowFormatter(std::streamsize columnWidth, std::streamsize spacing): + _colWidth(columnWidth), _spacing(spacing), _rowCount(0) { } SimpleRowFormatter::SimpleRowFormatter(const SimpleRowFormatter& other): RowFormatter(other.prefix(), other.postfix()), - _colWidth(other._colWidth) + _colWidth(other._colWidth), + _spacing(other._spacing), + _rowCount(0) { } @@ -56,6 +58,7 @@ void SimpleRowFormatter::swap(SimpleRowFormatter& other) setPrefix(other.prefix()); setPostfix(other.postfix()); swap(_colWidth, other._colWidth); + swap(_spacing, other._spacing); } @@ -64,12 +67,13 @@ std::string& SimpleRowFormatter::formatNames(const NameVecPtr pNames, std::strin _rowCount = 0; std::ostringstream str; - std::string line(std::string::size_type(pNames->size() * _colWidth), '-'); - + std::string line(std::string::size_type(pNames->size()*_colWidth + (pNames->size() - 1)*_spacing), '-'); + std::string space(_spacing, ' '); NameVec::const_iterator it = pNames->begin(); NameVec::const_iterator end = pNames->end(); for (; it != end; ++it) { + if (it != pNames->begin()) str << space; str << std::left << std::setw(_colWidth) << *it; } str << std::endl << line << std::endl; @@ -81,11 +85,12 @@ std::string& SimpleRowFormatter::formatNames(const NameVecPtr pNames, std::strin std::string& SimpleRowFormatter::formatValues(const ValueVec& vals, std::string& formattedValues) { std::ostringstream str; - + std::string space(_spacing, ' '); ValueVec::const_iterator it = vals.begin(); ValueVec::const_iterator end = vals.end(); for (; it != end; ++it) { + if (it != vals.begin()) str << space; if (it->isNumeric()) { str << std::right diff --git a/Data/src/Transaction.cpp b/Data/src/Transaction.cpp index 8ac6f1424..b00c377c7 100644 --- a/Data/src/Transaction.cpp +++ b/Data/src/Transaction.cpp @@ -40,21 +40,28 @@ Transaction::Transaction(Poco::Data::Session& rSession, bool start): Transaction::~Transaction() { - if (_rSession.isTransaction()) + try { - try + if (_rSession.isTransaction()) { - if (_pLogger) - _pLogger->debug("Rolling back transaction."); + try + { + if (_pLogger) + _pLogger->debug("Rolling back transaction."); - _rSession.rollback(); - } - catch (...) - { - if (_pLogger) - _pLogger->error("Error while rolling back database transaction."); + _rSession.rollback(); + } + catch (...) + { + if (_pLogger) + _pLogger->error("Error while rolling back database transaction."); + } } } + catch (...) + { + poco_unexpected(); + } } diff --git a/Data/testsuite/TestSuite_CE_vs90.vcproj b/Data/testsuite/TestSuite_CE_vs90.vcproj index c55096dfc..432d9dd86 100644 --- a/Data/testsuite/TestSuite_CE_vs90.vcproj +++ b/Data/testsuite/TestSuite_CE_vs90.vcproj @@ -46,7 +46,8 @@ CompileAs="0" DisableSpecificWarnings="4800;" CompileForArchitecture="2" - InterworkCalls="false"/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false diff --git a/Data/testsuite/TestSuite_WEC2013_vs110.vcxproj.filters b/Data/testsuite/TestSuite_WEC2013_vs110.vcxproj.filters index 715e6556f..752d42244 100644 --- a/Data/testsuite/TestSuite_WEC2013_vs110.vcxproj.filters +++ b/Data/testsuite/TestSuite_WEC2013_vs110.vcxproj.filters @@ -2,46 +2,46 @@ - {5b0099da-249e-4211-b45d-df49eb446bfa} + {8510d1bb-d450-4965-824f-ec9bc0a19cd6} - {d6dc14da-b3f4-4cb7-89c3-682d72233325} + {b73e5d01-dc8e-408c-94cc-2fa0dc2f9192} - {15ef7064-eb19-4737-abe1-8bd630d0a93f} + {84425431-e45b-460f-b05d-bfa3db77f8ec} - {35e6d8e7-382f-47bc-8e5d-08bc9cb9832b} + {ccaf5a4c-e62f-47af-8782-826954b9a0f7} - {754bcd57-bf11-4df2-913c-a471b3519f87} + {7fb588db-6820-48c6-b22b-09da9464d986} - {bc0c8940-6638-4de4-b478-a0a15fc09bb0} + {cdd666ab-4652-41c9-87d3-31db5025dde1} - {a103532d-9b22-4609-9e74-4359f60b71a4} + {596387c4-22e5-435b-8f91-ffafdd044a18} - {3209bcff-6e69-481a-bb01-435ca880a731} + {7221e000-1429-4282-9d35-7c00ee56a012} - {26a30626-8a1e-4cf9-a602-9fb737017ae2} + {4bc9139c-ceb1-4146-a1ba-9593693498b0} - {13561c1b-2ef1-422a-864e-a6887843a1b9} + {2b2e637a-5151-4ec8-827b-2ed19ca7d5c5} - {41a7a3d4-c3ce-49ba-8187-b48ad97e2b77} + {07e82405-64e2-4a2b-b21c-92bad8be3924} - {6bdeda54-b31a-4e36-bae6-c8cb6d9b84d5} + {c10bf32e-4906-41d3-aea1-97a705f6db60} - {bafc879e-fc20-46c9-bad5-6a9bc75f826f} + {c8a6f079-219f-4232-b16b-53957fc1c788} - {00d4642b-c0f9-469b-ab9a-43f7c94a0ca7} + {b8e5ef35-6b05-4f7c-8e6f-6ff0dff42ef3} diff --git a/Data/testsuite/TestSuite_WEC2013_vs120.vcxproj b/Data/testsuite/TestSuite_WEC2013_vs120.vcxproj index d3ffe9e1b..f6f3f51c4 100644 --- a/Data/testsuite/TestSuite_WEC2013_vs120.vcxproj +++ b/Data/testsuite/TestSuite_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false diff --git a/Data/testsuite/TestSuite_WEC2013_vs120.vcxproj.filters b/Data/testsuite/TestSuite_WEC2013_vs120.vcxproj.filters index e25ac3937..3fd07bf34 100644 --- a/Data/testsuite/TestSuite_WEC2013_vs120.vcxproj.filters +++ b/Data/testsuite/TestSuite_WEC2013_vs120.vcxproj.filters @@ -2,46 +2,46 @@ - {2b1f706a-8601-4d84-962e-14b775046d2f} + {d1a8c437-fe63-4fea-9a2c-bc72ace98d0e} - {d4b1684e-6da5-42de-8396-001c3c535d02} + {5fe10080-751e-4104-8f78-1d1c91be4d0a} - {783d4156-61cc-4274-bbac-d876c27ca093} + {c63bc08d-19a1-487e-b02d-f76b154f5d48} - {462481c2-0dd2-4842-acb6-80b586a9443a} + {99b53b28-f215-4ed7-8e05-22fd0af6e51e} - {790d0bdd-b9f0-45dc-9c54-a86ee33721ae} + {b1986c0e-3278-4b1a-8c8e-12aa7bb60654} - {66caba49-8f54-4de6-a8f2-90e83319f81a} + {cdbb2127-e915-472e-b88f-59aaa43f3a00} - {5952bac3-2626-445a-afa4-0f7ab95215fd} + {f308489f-1ab2-45ed-8f77-bc27f5217cc0} - {47b8e29b-a683-4558-832c-4974d049c647} + {72f7bd75-e3f3-44c9-be6b-d3ac6673b78c} - {9dcce477-29fd-4eec-99b3-e0ea886df1ef} + {3c05a323-aef4-4e8d-96a2-232a323113a6} - {c22cca3d-b4c7-415c-8ee4-0900761c597a} + {4e2b3b3f-fc26-4085-a901-6d4365581145} - {057c1f87-62dc-4f36-91f0-57eb3aaccc25} + {a31cd495-9fcb-4444-be91-39ec98f26004} - {0d2bf886-6e9b-40b3-9736-434c6cb9f828} + {99f9569f-d673-49e3-8e4c-d9f2bf90b81b} - {28e3c19f-2dad-4b95-8ffd-6b7365010139} + {8876341a-7279-4b8d-adc2-ebec33eb65f5} - {94a9d698-e479-493c-8216-e8b38f03725f} + {ab08a578-aa03-46cb-9feb-f98f38aa317a} diff --git a/Data/testsuite/TestSuite_vs100.vcxproj b/Data/testsuite/TestSuite_vs100.vcxproj index bbd755612..a3574c6f6 100644 --- a/Data/testsuite/TestSuite_vs100.vcxproj +++ b/Data/testsuite/TestSuite_vs100.vcxproj @@ -87,22 +87,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false TestSuited TestSuited @@ -129,6 +129,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitd.lib;WinTestRunnerd.lib;%(AdditionalDependencies) @@ -139,6 +140,7 @@ bin\TestSuited.pdb Windows MachineX86 + %(AdditionalOptions) @@ -161,6 +163,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnit.lib;WinTestRunner.lib;%(AdditionalDependencies) @@ -171,6 +174,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -191,6 +195,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmtd.lib;WinTestRunnermtd.lib;iphlpapi.lib;winmm.lib;nafxcwd.lib;libcmtd.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -202,6 +207,7 @@ bin\static_mt\TestSuited.pdb Windows MachineX86 + %(AdditionalOptions) @@ -224,6 +230,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmt.lib;WinTestRunnermt.lib;iphlpapi.lib;winmm.lib;nafxcw.lib;libcmt.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -235,6 +242,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -255,6 +263,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmdd.lib;WinTestRunnermdd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -265,6 +274,7 @@ bin\static_md\TestSuited.pdb Windows MachineX86 + %(AdditionalOptions) @@ -287,6 +297,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmd.lib;WinTestRunnermd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -297,6 +308,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Data/testsuite/TestSuite_vs100.vcxproj.filters b/Data/testsuite/TestSuite_vs100.vcxproj.filters index 64289169f..e6b5aed05 100644 --- a/Data/testsuite/TestSuite_vs100.vcxproj.filters +++ b/Data/testsuite/TestSuite_vs100.vcxproj.filters @@ -2,46 +2,46 @@ - {cb6b6aff-3308-485c-9021-e2f74956d707} + {2f19a634-45ab-420a-b0ee-65eb0fb25f19} - {0241db6a-90a6-40e4-9ef6-11fc51737b0c} + {75917a54-3878-4a97-9788-41328c29e1c2} - {3ff38773-3060-47ea-b701-1a14a29de050} + {e0f37ffe-db0d-44c0-aa83-57dce0a3513d} - {28989eda-9714-4f59-98cd-45d50282a128} + {709259b3-3853-4e09-afac-1562432acd0f} - {2b24d3ce-31f0-47cc-b033-efaf54d418f5} + {0be42549-095f-459f-a114-3adadf8fdcdd} - {15413cf5-b43b-4c56-811d-0de55e4e9f8a} + {3e73e308-b7e5-47c4-ba42-a678548a9697} - {8d704e15-a9be-41af-8866-d7788f0cc548} + {78847037-f80b-4fdd-bace-3fd162827ebe} - {fef661e8-099e-4209-aa92-3bcb53c670f6} + {a6a1c706-91f5-42ac-afc4-c9fc82af1565} - {9f17b4b6-d504-4d5d-9b72-d0f4a22ffd92} + {da14f490-cd20-4a94-8f3c-20c7e28f305f} - {499abde1-a1d9-4257-9b96-a29ed19b541d} + {86e158e4-b1a8-41ce-a035-2ba0bb471b57} - {e46b9df3-4a03-4f16-9d77-f07b1b2f5b04} + {b0b07580-5fa9-471e-87a1-34e2f0a4abf1} - {6c4b76a1-2d20-42b3-9014-ddabd31ab1cb} + {2669a2c6-9b7c-480f-9aeb-b20cc7215f77} - {14e85bca-f3b3-4dcf-b9c9-0568dd36531e} + {4aa64452-ec3d-4b95-aa5a-df63477a251e} - {38de723c-9bde-41c1-ae5b-a179a9517e79} + {3c3f54cf-ab6f-4341-9571-eb14924d998d} diff --git a/Data/testsuite/TestSuite_vs110.vcxproj b/Data/testsuite/TestSuite_vs110.vcxproj index 1edfd7390..f840e2fcb 100644 --- a/Data/testsuite/TestSuite_vs110.vcxproj +++ b/Data/testsuite/TestSuite_vs110.vcxproj @@ -101,32 +101,32 @@ bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false diff --git a/Data/testsuite/TestSuite_vs110.vcxproj.filters b/Data/testsuite/TestSuite_vs110.vcxproj.filters index 4212868d8..c384ce8af 100644 --- a/Data/testsuite/TestSuite_vs110.vcxproj.filters +++ b/Data/testsuite/TestSuite_vs110.vcxproj.filters @@ -2,46 +2,46 @@ - {ce00e8ad-130b-4ad4-b7bd-24b37ce6ddfe} + {87089829-64eb-44dd-a493-829679c30bc5} - {7823b4e1-9b18-460f-8fc0-1539fea00834} + {5f1e4a18-5ccd-4a4d-a5f0-8b4d1e986503} - {770de046-d93e-4836-9efd-514086ca8da4} + {d22c2bb9-9f65-472c-a45e-17b2e07c0e0b} - {8ad61db3-54fb-4947-baa7-88979b5632bc} + {e4cf8862-d739-4768-b512-64942c74ae66} - {6c9a2228-83ac-484a-a514-64a61dab3b13} + {3a13ca2b-bd31-43c8-94b9-14ff298b9fc5} - {d7e13cc5-77c3-4d6b-9771-5697be690d80} + {4ec0a487-16c0-459d-acdb-ddab18148f71} - {8b69dd56-9b13-450a-8bbc-c77f07d14aef} + {c8a2818c-3bb3-4294-964f-aa2e936fcea9} - {25d3e574-6350-4b77-845d-82b6631a6b8d} + {596dfa18-f510-4c06-8f01-7477c7d596fd} - {a626ce74-0def-487b-a91f-03c0066eb042} + {80e8ef36-5363-4ef3-bf2b-d65c334498ac} - {afdeff72-e67c-4e14-b6a7-07fdd36b8381} + {5f48f93a-8379-4ea9-a087-9d61c823e664} - {bf86ea0f-4249-4b33-943d-58cf569a6885} + {cdbbdac0-7377-4d0d-b3bd-6306d9474a04} - {9481671c-b416-406e-88d5-4630296d36e1} + {eac93957-3f6e-4531-a960-bbb624220b1e} - {61d574e0-03ba-4202-9037-5bc0edc873b9} + {a9089254-2e93-4eac-828c-58997d5a7b91} - {e363de9c-5f4f-4ae6-aae3-f2195ad132b8} + {04c490fc-4a28-4d60-9b0f-87a94b00cdd3} diff --git a/Data/testsuite/TestSuite_vs120.vcxproj b/Data/testsuite/TestSuite_vs120.vcxproj index 2c8a1bfd9..8526cfb64 100644 --- a/Data/testsuite/TestSuite_vs120.vcxproj +++ b/Data/testsuite/TestSuite_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false diff --git a/Data/testsuite/TestSuite_vs120.vcxproj.filters b/Data/testsuite/TestSuite_vs120.vcxproj.filters index 4ea347711..2bd7e1487 100644 --- a/Data/testsuite/TestSuite_vs120.vcxproj.filters +++ b/Data/testsuite/TestSuite_vs120.vcxproj.filters @@ -2,46 +2,46 @@ - {898c549a-5d16-4292-8ef1-07f59dcfe9ca} + {cfb12127-b8e1-44c1-abe6-bde3d7376452} - {4e3dde3c-4302-4a43-a11b-03e7dd42592c} + {186b3683-0885-4b88-b815-4f0928164c5e} - {5415c993-4c17-4c17-8677-f4b931ea1bcb} + {1dfa10fb-90de-46cc-9618-834e56955d31} - {eecdfc49-6dc9-4675-a709-017df9b0c599} + {95257ebc-2cfe-4f34-9006-ecc10bfb6310} - {7fd121d7-0dc2-4832-8ed0-8671b265fdce} + {098d505f-7276-4f44-9581-23c51afb7829} - {31f557ca-6eeb-4f7e-9476-ca7d528fc9b8} + {f9bc0f70-486c-4861-b976-f6a55e333b61} - {f8e742a1-d333-431b-93e9-edd8ee74f329} + {eb6a6f90-b9c0-4265-900b-19650ff291c0} - {23f153fe-38d3-47a8-9ef5-bfa9bda63bab} + {33de003a-1a77-4f80-a887-8ec16f2be40a} - {a745b3a5-94f8-41b7-8e14-2325ec624a6c} + {4865110b-617b-4757-8cf7-fc8c58d3205b} - {f2fdd9a8-16a4-46f6-877c-f7650ca7d5fa} + {4c87675e-8359-4e74-8f66-ff24038cadc0} - {ab3d62a1-17da-42a6-ac71-fe86f20cce9f} + {eb0970a6-e18b-46c5-8f59-af70972e48d9} - {2beba171-6e76-466d-91db-36cc232150cb} + {48774d12-2f87-4d13-a1fd-e3056efaa164} - {6d7fdf2b-c025-4cd5-9ae1-6bc08c7ebe27} + {6a43ca1f-32f4-499e-81c4-7d6e78fe4f98} - {65ebc52d-05d4-4ec6-828e-087fea2a8257} + {b0847f95-ef4d-4c71-92ab-e3694ee415de} diff --git a/Data/testsuite/TestSuite_x64_vs100.vcxproj b/Data/testsuite/TestSuite_x64_vs100.vcxproj index 9ce0ede7c..f4f31096f 100644 --- a/Data/testsuite/TestSuite_x64_vs100.vcxproj +++ b/Data/testsuite/TestSuite_x64_vs100.vcxproj @@ -87,22 +87,22 @@ <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false TestSuited TestSuited @@ -129,6 +129,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitd.lib;WinTestRunnerd.lib;%(AdditionalDependencies) @@ -139,6 +140,7 @@ bin64\TestSuited.pdb Windows MachineX64 + %(AdditionalOptions) @@ -161,6 +163,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnit.lib;WinTestRunner.lib;%(AdditionalDependencies) @@ -171,6 +174,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -191,6 +195,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmtd.lib;WinTestRunnermtd.lib;iphlpapi.lib;winmm.lib;nafxcwd.lib;libcmtd.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -202,6 +207,7 @@ bin64\static_mt\TestSuited.pdb Windows MachineX64 + %(AdditionalOptions) @@ -224,6 +230,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmt.lib;WinTestRunnermt.lib;iphlpapi.lib;winmm.lib;nafxcw.lib;libcmt.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -235,6 +242,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -255,6 +263,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmdd.lib;WinTestRunnermdd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -265,6 +274,7 @@ bin64\static_md\TestSuited.pdb Windows MachineX64 + %(AdditionalOptions) @@ -287,6 +297,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmd.lib;WinTestRunnermd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -297,6 +308,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Data/testsuite/TestSuite_x64_vs100.vcxproj.filters b/Data/testsuite/TestSuite_x64_vs100.vcxproj.filters index c2ff6fde0..4294e0a85 100644 --- a/Data/testsuite/TestSuite_x64_vs100.vcxproj.filters +++ b/Data/testsuite/TestSuite_x64_vs100.vcxproj.filters @@ -2,46 +2,46 @@ - {c32e458b-6c44-434d-bb94-b7570173f4cc} + {eee17019-a3f9-457e-afde-d4043f06c746} - {0779411e-650a-4b3f-932e-ebe0a18c864a} + {9acc2cea-d5c9-410d-8c6a-a264742f9978} - {6c6c8bd5-3641-487b-8cf2-6e3adddef71c} + {c6a372b5-a309-4da1-a8f2-436c6dac75f2} - {a9af3d63-2c61-49d7-928f-23e65a15b541} + {d087b6f9-c599-4080-9fa3-8301679a8b42} - {5755f338-027e-4e23-b53c-faa4f51ddc07} + {3c2d4657-6914-4edc-980f-e853dcc5c9f9} - {4c4a4575-5ee2-4e92-8a80-b65e4931b1b2} + {ba75a919-f1bd-44d8-9558-fd5959e7c114} - {12c3141d-d85a-4117-9539-fd093bb0aa23} + {2decd2a8-463c-4a29-bb3f-8da0eb2357d0} - {8f89650e-44b9-4be9-8225-106e59057fe3} + {c6006289-0339-42a1-8bed-b16032af768e} - {e8f2b7ab-5105-4c63-a05d-192cecc1e586} + {1f2a874b-0be4-44e4-9f70-e78f25203841} - {f05f8843-fd3e-4740-b37e-10b96f9370bd} + {0563b342-78e9-45e6-9f93-dd982315faad} - {c070f9c5-9665-4ec2-93ac-1c63e8dc142b} + {2efd9e68-91b2-4738-ac2b-0366b2caf67b} - {ca284bb8-b2a5-4ba6-b8c5-97f1899951b9} + {1857f93d-e0fe-4139-b7d0-711bc866177a} - {a3e06b26-e46c-419a-afa5-099ed1fa71c0} + {de86c261-f898-44ca-ae0a-6a684a10f019} - {9cf1f8a4-2d90-4c0b-a684-804de7824878} + {eaf3965a-d13e-4490-b136-179f0fc43b48} diff --git a/Data/testsuite/TestSuite_x64_vs110.vcxproj b/Data/testsuite/TestSuite_x64_vs110.vcxproj index 6d76814dd..78abaf3a5 100644 --- a/Data/testsuite/TestSuite_x64_vs110.vcxproj +++ b/Data/testsuite/TestSuite_x64_vs110.vcxproj @@ -101,32 +101,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false diff --git a/Data/testsuite/TestSuite_x64_vs110.vcxproj.filters b/Data/testsuite/TestSuite_x64_vs110.vcxproj.filters index 580a5492f..2bff45f06 100644 --- a/Data/testsuite/TestSuite_x64_vs110.vcxproj.filters +++ b/Data/testsuite/TestSuite_x64_vs110.vcxproj.filters @@ -2,46 +2,46 @@ - {376b6b75-1952-480c-ad14-a4732bb75bc2} + {44faa6b6-4316-4221-8da5-09780038b6ad} - {740b0f3d-e8ec-4833-b247-7e5110d7dead} + {04a54309-4a78-4e84-b12a-038a479548ea} - {f2a26f41-88ac-4c4b-8c45-4d20a92599ac} + {3ef7e735-272e-4fbc-ab02-31b53f32fa07} - {faef7e9e-54b5-49a9-a7e8-fb75c6ad423a} + {b0325bfb-bb19-457e-9928-afe7a907d312} - {544399c0-4147-41d9-b68c-cd66ef28df22} + {edd9572e-8929-432b-876a-432d8b019c58} - {9f8deaf6-ae17-4396-b4bc-12ff6f40edac} + {6e792075-b317-4a9d-90f2-34cb97ace409} - {4698de55-15f1-43ff-b097-e51f2322e996} + {e6fc5464-9131-45b8-bab8-3d6eeab8b420} - {69596961-3908-4a92-afe0-a4d95ff66774} + {3d79d649-cfdd-4332-aa8c-ff02213650ce} - {b90d9238-eef4-4ddc-929a-bb6bd93e9897} + {b5bab63a-e5eb-443d-a4e9-eb3728fb5697} - {e66ba7d7-32c5-4b49-9d27-1ba7892cbf97} + {5894c349-b990-476e-ae45-2ad004ddf748} - {9ce36b17-e7e4-4727-9a65-ac2c2767a3ef} + {cae2eba9-f1ac-4437-a38f-4b396aabe625} - {89ab338e-110a-4036-82ac-088fcf17eac9} + {e90ce797-fb3f-405b-aaa7-520c931fef26} - {365d8c05-c699-4746-a330-379878d3e0ab} + {2254be85-d254-4440-a522-e97df5806ca3} - {473a79ee-7cd0-4207-ae38-6eb644538cb1} + {f6ddc3e4-d84f-4b29-956e-7b475e776061} diff --git a/Data/testsuite/TestSuite_x64_vs120.vcxproj b/Data/testsuite/TestSuite_x64_vs120.vcxproj index 99ee23528..42909bce8 100644 --- a/Data/testsuite/TestSuite_x64_vs120.vcxproj +++ b/Data/testsuite/TestSuite_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false diff --git a/Data/testsuite/TestSuite_x64_vs120.vcxproj.filters b/Data/testsuite/TestSuite_x64_vs120.vcxproj.filters index d51c5a42a..24c06696e 100644 --- a/Data/testsuite/TestSuite_x64_vs120.vcxproj.filters +++ b/Data/testsuite/TestSuite_x64_vs120.vcxproj.filters @@ -2,46 +2,46 @@ - {55c220c3-a9a9-4f8f-901a-0e526360393f} + {33d76fa0-a7d2-458e-a4d2-702e96efea04} - {2a611c0b-7041-4724-b8b7-f86a1a7ee27e} + {5e8e3ad4-aea6-4405-ba33-5f62b3a46df8} - {235bf3aa-28d4-4a4d-9ba7-bd59de3c9634} + {d3088e5f-da29-43d5-80be-e770a52ecd07} - {690d1280-cc98-4958-87f4-f307ff5c60cd} + {329ef7bb-6a37-4c7e-bbe2-8cdecb93d604} - {9f249d48-6dcb-4f99-b611-510731b5cd0f} + {214224a2-e3d6-4682-a3d8-acb506c5aabe} - {2b069f01-7be9-407b-a55a-1c735ded1bff} + {a3eab132-adf5-4eea-a657-08b04b9dae20} - {81e110a1-d847-497a-9559-62f8f5130d1a} + {c68520a7-c3f1-459f-b130-097b9398cf8e} - {06ce3f09-130b-4c0d-a4a0-40ba6ffbb1cf} + {32026eba-e19e-4930-a2d4-81d2144114d6} - {68e48156-b876-415c-89b1-82480444095f} + {0bb8fece-908a-4511-9fb2-536cb0faa971} - {bf549e9f-015c-418e-bb85-8e89daa17015} + {0da2b03e-0b1b-4cb9-84c3-a2fc651cb270} - {bc27ff98-eff3-4841-95cb-90efc70af027} + {f29c5fe6-62c4-4da2-9cdc-e83ce6bbba32} - {2e186c5c-65f6-4f0f-882c-b709c27408e9} + {ce3cfe66-ce90-4e5b-847d-29010ff102f3} - {a80a74fa-e121-4653-9d47-929586dbe37e} + {caf2a064-b72d-4114-b71b-6cb835e8f203} - {ef360b93-99d8-42f9-80ec-21e0a22f5151} + {9cf3abbf-9cac-435e-9332-978fa565efb2} diff --git a/Data/testsuite/TestSuite_x64_vs90.vcproj b/Data/testsuite/TestSuite_x64_vs90.vcproj index 03c668506..30b42bb17 100644 --- a/Data/testsuite/TestSuite_x64_vs90.vcproj +++ b/Data/testsuite/TestSuite_x64_vs90.vcproj @@ -47,7 +47,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> @@ -113,8 +113,8 @@ @@ -209,8 +209,8 @@ @@ -292,8 +292,8 @@ @@ -377,8 +377,8 @@ @@ -460,8 +460,8 @@ @@ -2306,7 +2306,35 @@ > + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 ..\bin\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Foundation\$(Platform)\$(Configuration)\ true ..\bin\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Foundation\$(Platform)\$(Configuration)\ false ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Foundation\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Foundation\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Foundation\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Foundation\$(Platform)\$(Configuration)\ PocoFoundationd PocoFoundationmdd PocoFoundationmtd @@ -583,8 +583,16 @@ true + + + + + + + + @@ -593,7 +601,6 @@ - diff --git a/Foundation/Foundation_WEC2013_vs110.vcxproj.filters b/Foundation/Foundation_WEC2013_vs110.vcxproj.filters index 24b2ded72..0fb28536c 100644 --- a/Foundation/Foundation_WEC2013_vs110.vcxproj.filters +++ b/Foundation/Foundation_WEC2013_vs110.vcxproj.filters @@ -495,6 +495,18 @@ RegularExpression\PCRE Source Files + + RegularExpression\PCRE Source Files + + + RegularExpression\PCRE Source Files + + + RegularExpression\PCRE Source Files + + + RegularExpression\PCRE Source Files + RegularExpression\PCRE Source Files @@ -519,7 +531,16 @@ RegularExpression\PCRE Source Files - + + RegularExpression\PCRE Source Files + + + RegularExpression\PCRE Source Files + + + RegularExpression\PCRE Source Files + + RegularExpression\PCRE Source Files diff --git a/Foundation/Foundation_WEC2013_vs120.vcxproj b/Foundation/Foundation_WEC2013_vs120.vcxproj index e454d758b..747ed750c 100644 --- a/Foundation/Foundation_WEC2013_vs120.vcxproj +++ b/Foundation/Foundation_WEC2013_vs120.vcxproj @@ -91,19 +91,19 @@ <_ProjectFileVersion>10.0.30319.1 ..\bin\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Foundation\$(Platform)\$(Configuration)\ true ..\bin\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Foundation\$(Platform)\$(Configuration)\ false ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Foundation\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Foundation\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Foundation\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Foundation\$(Platform)\$(Configuration)\ PocoFoundationd PocoFoundationmdd PocoFoundationmtd @@ -583,8 +583,16 @@ true + + + + + + + + @@ -593,7 +601,6 @@ - diff --git a/Foundation/Foundation_WEC2013_vs120.vcxproj.filters b/Foundation/Foundation_WEC2013_vs120.vcxproj.filters index 24b2ded72..0fb28536c 100644 --- a/Foundation/Foundation_WEC2013_vs120.vcxproj.filters +++ b/Foundation/Foundation_WEC2013_vs120.vcxproj.filters @@ -495,6 +495,18 @@ RegularExpression\PCRE Source Files + + RegularExpression\PCRE Source Files + + + RegularExpression\PCRE Source Files + + + RegularExpression\PCRE Source Files + + + RegularExpression\PCRE Source Files + RegularExpression\PCRE Source Files @@ -519,7 +531,16 @@ RegularExpression\PCRE Source Files - + + RegularExpression\PCRE Source Files + + + RegularExpression\PCRE Source Files + + + RegularExpression\PCRE Source Files + + RegularExpression\PCRE Source Files diff --git a/Foundation/Foundation_vs100.vcxproj b/Foundation/Foundation_vs100.vcxproj index 667391987..ad505d17e 100644 --- a/Foundation/Foundation_vs100.vcxproj +++ b/Foundation/Foundation_vs100.vcxproj @@ -84,19 +84,19 @@ <_ProjectFileVersion>10.0.30319.1 ..\bin\ - obj\$(Configuration)\ + obj\Foundation\$(Configuration)\ true ..\bin\ - obj\$(Configuration)\ + obj\Foundation\$(Configuration)\ false ..\lib\ - obj\$(Configuration)\ + obj\Foundation\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Foundation\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Foundation\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Foundation\$(Configuration)\ PocoFoundationd PocoFoundationmdd PocoFoundationmtd @@ -581,8 +581,16 @@ true + + + + + + + + @@ -591,7 +599,6 @@ - diff --git a/Foundation/Foundation_vs100.vcxproj.filters b/Foundation/Foundation_vs100.vcxproj.filters index 32fbea107..17453be34 100644 --- a/Foundation/Foundation_vs100.vcxproj.filters +++ b/Foundation/Foundation_vs100.vcxproj.filters @@ -483,6 +483,18 @@ RegularExpression\PCRE Source Files + + RegularExpression\PCRE Source Files + + + RegularExpression\PCRE Source Files + + + RegularExpression\PCRE Source Files + + + RegularExpression\PCRE Source Files + RegularExpression\PCRE Source Files @@ -507,7 +519,16 @@ RegularExpression\PCRE Source Files - + + RegularExpression\PCRE Source Files + + + RegularExpression\PCRE Source Files + + + RegularExpression\PCRE Source Files + + RegularExpression\PCRE Source Files diff --git a/Foundation/Foundation_vs110.vcxproj b/Foundation/Foundation_vs110.vcxproj index 08ac5f72d..0252e4e29 100644 --- a/Foundation/Foundation_vs110.vcxproj +++ b/Foundation/Foundation_vs110.vcxproj @@ -90,19 +90,19 @@ <_ProjectFileVersion>10.0.30319.1 ..\bin\ - obj\$(Configuration)\ + obj\Foundation\$(Configuration)\ true ..\bin\ - obj\$(Configuration)\ + obj\Foundation\$(Configuration)\ false ..\lib\ - obj\$(Configuration)\ + obj\Foundation\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Foundation\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Foundation\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Foundation\$(Configuration)\ PocoFoundationd PocoFoundationmdd PocoFoundationmtd @@ -587,8 +587,16 @@ true + + + + + + + + @@ -597,7 +605,6 @@ - diff --git a/Foundation/Foundation_vs110.vcxproj.filters b/Foundation/Foundation_vs110.vcxproj.filters index a70ef6585..4d5790000 100644 --- a/Foundation/Foundation_vs110.vcxproj.filters +++ b/Foundation/Foundation_vs110.vcxproj.filters @@ -495,6 +495,18 @@ RegularExpression\PCRE Source Files + + RegularExpression\PCRE Source Files + + + RegularExpression\PCRE Source Files + + + RegularExpression\PCRE Source Files + + + RegularExpression\PCRE Source Files + RegularExpression\PCRE Source Files @@ -519,7 +531,16 @@ RegularExpression\PCRE Source Files - + + RegularExpression\PCRE Source Files + + + RegularExpression\PCRE Source Files + + + RegularExpression\PCRE Source Files + + RegularExpression\PCRE Source Files diff --git a/Foundation/Foundation_vs120.vcxproj b/Foundation/Foundation_vs120.vcxproj index deed6b99f..093ec6031 100644 --- a/Foundation/Foundation_vs120.vcxproj +++ b/Foundation/Foundation_vs120.vcxproj @@ -90,19 +90,19 @@ <_ProjectFileVersion>10.0.30319.1 ..\bin\ - obj\$(Configuration)\ + obj\Foundation\$(Configuration)\ true ..\bin\ - obj\$(Configuration)\ + obj\Foundation\$(Configuration)\ false ..\lib\ - obj\$(Configuration)\ + obj\Foundation\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Foundation\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Foundation\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Foundation\$(Configuration)\ PocoFoundationd PocoFoundationmdd PocoFoundationmtd @@ -587,8 +587,16 @@ true + + + + + + + + @@ -597,7 +605,6 @@ - diff --git a/Foundation/Foundation_vs120.vcxproj.filters b/Foundation/Foundation_vs120.vcxproj.filters index 571c5fd91..d097597e9 100644 --- a/Foundation/Foundation_vs120.vcxproj.filters +++ b/Foundation/Foundation_vs120.vcxproj.filters @@ -495,6 +495,18 @@ RegularExpression\PCRE Source Files + + RegularExpression\PCRE Source Files + + + RegularExpression\PCRE Source Files + + + RegularExpression\PCRE Source Files + + + RegularExpression\PCRE Source Files + RegularExpression\PCRE Source Files @@ -519,7 +531,16 @@ RegularExpression\PCRE Source Files - + + RegularExpression\PCRE Source Files + + + RegularExpression\PCRE Source Files + + + RegularExpression\PCRE Source Files + + RegularExpression\PCRE Source Files diff --git a/Foundation/Foundation_vs71.vcproj b/Foundation/Foundation_vs71.vcproj index 9ef2e8327..3990decb5 100644 --- a/Foundation/Foundation_vs71.vcproj +++ b/Foundation/Foundation_vs71.vcproj @@ -13,8 +13,8 @@ + RelativePath=".\src\pcre_byte_order.c"> + + + + + + + + + + + + + + diff --git a/Foundation/Foundation_vs80.vcproj b/Foundation/Foundation_vs80.vcproj index de1b2c4fe..ceba388f6 100644 --- a/Foundation/Foundation_vs80.vcproj +++ b/Foundation/Foundation_vs80.vcproj @@ -17,8 +17,8 @@ @@ -104,8 +104,8 @@ @@ -197,8 +197,8 @@ @@ -272,8 +272,8 @@ @@ -344,8 +344,8 @@ @@ -416,8 +416,8 @@ @@ -2844,60 +2844,67 @@ Name="PCRE Source Files" > + RelativePath=".\src\pcre_chartables.c"> + RelativePath=".\src\pcre_compile.c"> + RelativePath=".\src\pcre_exec.c"> + RelativePath=".\src\pcre_fullinfo.c"> + RelativePath=".\src\pcre_globals.c"> + RelativePath=".\src\pcre_maketables.c"> + RelativePath=".\src\pcre_newline.c"> + RelativePath=".\src\pcre_ord2utf8.c"> + RelativePath=".\src\pcre_study.c"> + RelativePath=".\src\pcre_tables.c"> + RelativePath=".\src\pcre_byte_order.c"> + RelativePath=".\src\pcre_config.c"> + RelativePath=".\src\pcre_dfa_exec.c"> + RelativePath=".\src\pcre_get.c"> + + + + + + + + + + + + + + diff --git a/Foundation/Foundation_vs90.vcproj b/Foundation/Foundation_vs90.vcproj index 24c2b6280..8e606a6c8 100644 --- a/Foundation/Foundation_vs90.vcproj +++ b/Foundation/Foundation_vs90.vcproj @@ -18,8 +18,8 @@ @@ -102,8 +102,8 @@ @@ -192,8 +192,8 @@ @@ -267,8 +267,8 @@ @@ -339,8 +339,8 @@ + RelativePath=".\src\pcre_chartables.c"> + RelativePath=".\src\pcre_compile.c"> + RelativePath=".\src\pcre_exec.c"> + RelativePath=".\src\pcre_fullinfo.c"> + RelativePath=".\src\pcre_globals.c"> + RelativePath=".\src\pcre_maketables.c"> + RelativePath=".\src\pcre_newline.c"> + RelativePath=".\src\pcre_ord2utf8.c"> + RelativePath=".\src\pcre_study.c"> + RelativePath=".\src\pcre_tables.c"> + RelativePath=".\src\pcre_byte_order.c"> + RelativePath=".\src\pcre_config.c"> + RelativePath=".\src\pcre_dfa_exec.c"> + RelativePath=".\src\pcre_get.c"> + + + + + + + + + + + + + + diff --git a/Foundation/Foundation_x64_vs100.vcxproj b/Foundation/Foundation_x64_vs100.vcxproj index 1f81bc616..7a7777181 100644 --- a/Foundation/Foundation_x64_vs100.vcxproj +++ b/Foundation/Foundation_x64_vs100.vcxproj @@ -587,8 +587,16 @@ true + + + + + + + + @@ -597,7 +605,6 @@ - diff --git a/Foundation/Foundation_x64_vs100.vcxproj.filters b/Foundation/Foundation_x64_vs100.vcxproj.filters index 756543a21..b00691dc3 100644 --- a/Foundation/Foundation_x64_vs100.vcxproj.filters +++ b/Foundation/Foundation_x64_vs100.vcxproj.filters @@ -495,6 +495,18 @@ RegularExpression\PCRE Source Files + + RegularExpression\PCRE Source Files + + + RegularExpression\PCRE Source Files + + + RegularExpression\PCRE Source Files + + + RegularExpression\PCRE Source Files + RegularExpression\PCRE Source Files @@ -519,7 +531,16 @@ RegularExpression\PCRE Source Files - + + RegularExpression\PCRE Source Files + + + RegularExpression\PCRE Source Files + + + RegularExpression\PCRE Source Files + + RegularExpression\PCRE Source Files diff --git a/Foundation/Foundation_x64_vs110.vcxproj b/Foundation/Foundation_x64_vs110.vcxproj index eefb23725..2a4b3a9fc 100644 --- a/Foundation/Foundation_x64_vs110.vcxproj +++ b/Foundation/Foundation_x64_vs110.vcxproj @@ -90,19 +90,19 @@ <_ProjectFileVersion>10.0.30319.1 ..\bin64\ - obj64\$(Configuration)\ + obj64\Foundation\$(Configuration)\ true ..\bin64\ - obj64\$(Configuration)\ + obj64\Foundation\$(Configuration)\ false ..\lib64\ - obj64\$(Configuration)\ + obj64\Foundation\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Foundation\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Foundation\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Foundation\$(Configuration)\ PocoFoundation64d PocoFoundationmdd PocoFoundationmtd @@ -593,8 +593,16 @@ true + + + + + + + + @@ -603,7 +611,6 @@ - diff --git a/Foundation/Foundation_x64_vs110.vcxproj.filters b/Foundation/Foundation_x64_vs110.vcxproj.filters index 756543a21..b00691dc3 100644 --- a/Foundation/Foundation_x64_vs110.vcxproj.filters +++ b/Foundation/Foundation_x64_vs110.vcxproj.filters @@ -495,6 +495,18 @@ RegularExpression\PCRE Source Files + + RegularExpression\PCRE Source Files + + + RegularExpression\PCRE Source Files + + + RegularExpression\PCRE Source Files + + + RegularExpression\PCRE Source Files + RegularExpression\PCRE Source Files @@ -519,7 +531,16 @@ RegularExpression\PCRE Source Files - + + RegularExpression\PCRE Source Files + + + RegularExpression\PCRE Source Files + + + RegularExpression\PCRE Source Files + + RegularExpression\PCRE Source Files diff --git a/Foundation/Foundation_x64_vs120.vcxproj b/Foundation/Foundation_x64_vs120.vcxproj index d783e449f..4431dccec 100644 --- a/Foundation/Foundation_x64_vs120.vcxproj +++ b/Foundation/Foundation_x64_vs120.vcxproj @@ -90,19 +90,19 @@ <_ProjectFileVersion>10.0.30319.1 ..\bin64\ - obj64\$(Configuration)\ + obj64\Foundation\$(Configuration)\ true ..\bin64\ - obj64\$(Configuration)\ + obj64\Foundation\$(Configuration)\ false ..\lib64\ - obj64\$(Configuration)\ + obj64\Foundation\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Foundation\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Foundation\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Foundation\$(Configuration)\ PocoFoundation64d PocoFoundationmdd PocoFoundationmtd @@ -593,8 +593,16 @@ true + + + + + + + + @@ -603,7 +611,6 @@ - diff --git a/Foundation/Foundation_x64_vs120.vcxproj.filters b/Foundation/Foundation_x64_vs120.vcxproj.filters index d7b65030c..ac61a22ca 100644 --- a/Foundation/Foundation_x64_vs120.vcxproj.filters +++ b/Foundation/Foundation_x64_vs120.vcxproj.filters @@ -495,6 +495,18 @@ RegularExpression\PCRE Source Files + + RegularExpression\PCRE Source Files + + + RegularExpression\PCRE Source Files + + + RegularExpression\PCRE Source Files + + + RegularExpression\PCRE Source Files + RegularExpression\PCRE Source Files @@ -519,7 +531,16 @@ RegularExpression\PCRE Source Files - + + RegularExpression\PCRE Source Files + + + RegularExpression\PCRE Source Files + + + RegularExpression\PCRE Source Files + + RegularExpression\PCRE Source Files diff --git a/Foundation/Foundation_x64_vs90.vcproj b/Foundation/Foundation_x64_vs90.vcproj index 4fab86836..7e60a04c5 100644 --- a/Foundation/Foundation_x64_vs90.vcproj +++ b/Foundation/Foundation_x64_vs90.vcproj @@ -18,8 +18,8 @@ @@ -102,8 +102,8 @@ @@ -192,8 +192,8 @@ @@ -267,8 +267,8 @@ @@ -338,8 +338,8 @@ + + + + + + + + + + + + + + heap, 1 => local). { public: - struct Size { static const unsigned int value = SizeV; @@ -86,7 +85,7 @@ public: PlaceholderT* content() const { - if(isLocal()) + if (isLocal()) return reinterpret_cast(holder); else return pHolder; @@ -192,9 +191,9 @@ public: /// Destructor. If Any is locally held, calls ValueHolder destructor; /// otherwise, deletes the placeholder from the heap. { - if(!empty()) + if (!empty()) { - if(_valueHolder.isLocal()) + if (_valueHolder.isLocal()) destruct(); else delete content(); @@ -341,7 +340,7 @@ private: void construct(const Any& other) { - if(!other.empty()) + if (!other.empty()) other.content()->clone(&_valueHolder); else _valueHolder.erase(); diff --git a/Foundation/include/Poco/BinaryWriter.h b/Foundation/include/Poco/BinaryWriter.h index 619f97794..a881eb7c6 100644 --- a/Foundation/include/Poco/BinaryWriter.h +++ b/Foundation/include/Poco/BinaryWriter.h @@ -167,7 +167,7 @@ private: template -class BasicMemoryBinaryWriter : public BinaryWriter +class BasicMemoryBinaryWriter: public BinaryWriter /// A convenient wrapper for using Buffer and MemoryStream with BinarWriter. { public: @@ -187,7 +187,14 @@ public: ~BasicMemoryBinaryWriter() { - flush(); + try + { + flush(); + } + catch (...) + { + poco_unexpected(); + } } Buffer& data() diff --git a/Foundation/include/Poco/Buffer.h b/Foundation/include/Poco/Buffer.h index 0b7622383..1ee485333 100644 --- a/Foundation/include/Poco/Buffer.h +++ b/Foundation/include/Poco/Buffer.h @@ -41,13 +41,17 @@ public: Buffer(std::size_t capacity): _capacity(capacity), _used(capacity), - _ptr(new T[capacity]), + _ptr(0), _ownMem(true) /// Creates and allocates the Buffer. { + if (capacity > 0) + { + _ptr = new T[capacity]; + } } - explicit Buffer(T* pMem, std::size_t length): + Buffer(T* pMem, std::size_t length): _capacity(length), _used(length), _ptr(pMem), @@ -61,32 +65,38 @@ public: { } - explicit Buffer(const T* pMem, std::size_t length): + Buffer(const T* pMem, std::size_t length): _capacity(length), _used(length), - _ptr(new T[length]), + _ptr(0), _ownMem(true) /// Creates and allocates the Buffer; copies the contents of /// the supplied memory into the buffer. Length argument specifies /// the length of the supplied memory pointed to by pMem in the /// number of elements of type T. { - if (_used) + if (_capacity > 0) + { + _ptr = new T[_capacity]; std::memcpy(_ptr, pMem, _used * sizeof(T)); + } } Buffer(const Buffer& other): /// Copy constructor. _capacity(other._used), _used(other._used), - _ptr(new T[other._used]), + _ptr(0), _ownMem(true) { if (_used) + { + _ptr = new T[_used]; std::memcpy(_ptr, other._ptr, _used * sizeof(T)); + } } - Buffer& operator =(const Buffer& other) + Buffer& operator = (const Buffer& other) /// Assignment operator. { if (this != &other) @@ -115,15 +125,15 @@ public: /// resized. If resize is attempted on those, IllegalAccessException /// is thrown. { - if (!_ownMem) - throw Poco::InvalidAccessException("Cannot resize buffer which does not own its storage."); + if (!_ownMem) throw Poco::InvalidAccessException("Cannot resize buffer which does not own its storage."); if (newCapacity > _capacity) { T* ptr = new T[newCapacity]; if (preserveContent) + { std::memcpy(ptr, _ptr, _used * sizeof(T)); - + } delete [] _ptr; _ptr = ptr; _capacity = newCapacity; @@ -144,18 +154,20 @@ public: /// resized. If resize is attempted on those, IllegalAccessException /// is thrown. { - if (!_ownMem) - throw Poco::InvalidAccessException("Cannot resize buffer which does not own its storage."); + if (!_ownMem) throw Poco::InvalidAccessException("Cannot resize buffer which does not own its storage."); if (newCapacity != _capacity) { - T* ptr = new T[newCapacity]; - if (preserveContent) + T* ptr = 0; + if (newCapacity > 0) { - std::size_t newSz = _used < newCapacity ? _used : newCapacity; - std::memcpy(ptr, _ptr, newSz * sizeof(T)); + ptr = new T[newCapacity]; + if (preserveContent) + { + std::size_t newSz = _used < newCapacity ? _used : newCapacity; + std::memcpy(ptr, _ptr, newSz * sizeof(T)); + } } - delete [] _ptr; _ptr = ptr; _capacity = newCapacity; @@ -217,7 +229,7 @@ public: swap(_used, other._used); } - bool operator ==(const Buffer& other) const + bool operator == (const Buffer& other) const /// Compare operator. { if (this != &other) @@ -235,14 +247,14 @@ public: return true; } - bool operator !=(const Buffer& other) const + bool operator != (const Buffer& other) const /// Compare operator. { return !(*this == other); } void clear() - /// Sets the contents of the bufer to zero. + /// Sets the contents of the buffer to zero. { std::memset(_ptr, 0, _used * sizeof(T)); } diff --git a/Foundation/include/Poco/BufferAllocator.h b/Foundation/include/Poco/BufferAllocator.h index fb61b8797..46f1ff5ac 100644 --- a/Foundation/include/Poco/BufferAllocator.h +++ b/Foundation/include/Poco/BufferAllocator.h @@ -41,7 +41,7 @@ public: return new char_type[static_cast(size)]; } - static void deallocate(char_type* ptr, std::streamsize /*size*/) + static void deallocate(char_type* ptr, std::streamsize /*size*/) throw() { delete [] ptr; } diff --git a/Foundation/include/Poco/Bugcheck.h b/Foundation/include/Poco/Bugcheck.h index ecde82f2c..f48ffb27c 100644 --- a/Foundation/include/Poco/Bugcheck.h +++ b/Foundation/include/Poco/Bugcheck.h @@ -33,8 +33,8 @@ namespace Poco { class Foundation_API Bugcheck /// This class provides some static methods that are /// used by the - /// poco_assert_dbg(), poco_assert(), poco_check_ptr() - /// and poco_bugcheck() macros. + /// poco_assert_dbg(), poco_assert(), poco_check_ptr(), + /// poco_bugcheck() and poco_unexpected() macros. /// You should not invoke these methods /// directly. Use the macros instead, as they /// automatically provide useful context information. @@ -56,6 +56,12 @@ public: /// An internal error was encountered. Break into the debugger, if /// possible, then throw an BugcheckException. + static void unexpected(const char* file, int line); + /// An exception was caught in a destructor. Break into debugger, + /// if possible and report exception. Must only be called from + /// within a catch () block as it rethrows the exception to + /// determine its class. + static void debugger(const char* file, int line); /// An internal error was encountered. Break into the debugger, if /// possible. @@ -97,6 +103,10 @@ protected: #define poco_bugcheck_msg(msg) \ Poco::Bugcheck::bugcheck(msg, __FILE__, __LINE__) + + +#define poco_unexpected() \ + Poco::Bugcheck::unexpected(__FILE__, __LINE__); #define poco_debugger() \ diff --git a/Foundation/include/Poco/Clock.h b/Foundation/include/Poco/Clock.h index ad9be705f..2924ebd0f 100644 --- a/Foundation/include/Poco/Clock.h +++ b/Foundation/include/Poco/Clock.h @@ -86,6 +86,13 @@ public: /// Returns the clock value expressed in microseconds /// since the system-specific epoch time (usually system /// startup). + + ClockVal raw() const; + /// Returns the clock value expressed in microseconds + /// since the system-specific epoch time (usually system + /// startup). + /// + /// Same as microseconds(). ClockDiff elapsed() const; /// Returns the time elapsed since the time denoted by @@ -215,6 +222,12 @@ inline void swap(Clock& s1, Clock& s2) } +inline Clock::ClockVal Clock::raw() const +{ + return _clock; +} + + } // namespace Poco diff --git a/Foundation/include/Poco/Dynamic/Var.h b/Foundation/include/Poco/Dynamic/Var.h index d00001776..e5e8c0245 100644 --- a/Foundation/include/Poco/Dynamic/Var.h +++ b/Foundation/include/Poco/Dynamic/Var.h @@ -495,6 +495,10 @@ public: /// Returns true if stored value is numeric. /// Returns false for numeric strings (e.g. "123" is string, not number) + bool isBoolean() const; + /// Returns true if stored value is boolean. + /// Returns false for boolean strings (e.g. "true" is string, not number) + bool isString() const; /// Returns true if stored value is std::string. @@ -588,7 +592,7 @@ private: void destruct() { - if(!isEmpty()) delete content(); + if (!isEmpty()) delete content(); } VarHolder* _pHolder; @@ -632,7 +636,7 @@ private: void construct(const Var& other) { - if(!other.isEmpty()) + if (!other.isEmpty()) other.content()->clone(&_placeholder); else _placeholder.erase(); @@ -640,9 +644,9 @@ private: void destruct() { - if(!isEmpty()) + if (!isEmpty()) { - if(_placeholder.isLocal()) + if (_placeholder.isLocal()) content()->~VarHolder(); else delete content(); @@ -825,6 +829,13 @@ inline bool Var::isNumeric() const } +inline bool Var::isBoolean() const +{ + VarHolder* pHolder = content(); + return pHolder ? pHolder->isBoolean() : false; +} + + inline bool Var::isString() const { VarHolder* pHolder = content(); diff --git a/Foundation/include/Poco/Dynamic/VarHolder.h b/Foundation/include/Poco/Dynamic/VarHolder.h index 313e736b3..a42fbf61a 100644 --- a/Foundation/include/Poco/Dynamic/VarHolder.h +++ b/Foundation/include/Poco/Dynamic/VarHolder.h @@ -246,6 +246,10 @@ public: /// Returns false. Must be properly overriden in a type /// specialization in order to suport the diagnostic. + virtual bool isBoolean() const; + /// Returns false. Must be properly overriden in a type + /// specialization in order to suport the diagnostic. + virtual bool isString() const; /// Returns false. Must be properly overriden in a type /// specialization in order to suport the diagnostic. @@ -594,6 +598,12 @@ inline bool VarHolder::isNumeric() const } +inline bool VarHolder::isBoolean() const +{ + return false; +} + + inline bool VarHolder::isString() const { return false; @@ -782,6 +792,11 @@ public: return std::numeric_limits::is_specialized; } + bool isBoolean() const + { + return false; + } + bool isString() const { return false; @@ -921,6 +936,7 @@ public: return std::numeric_limits::is_specialized; } + bool isString() const { return false; @@ -1054,6 +1070,11 @@ public: return std::numeric_limits::is_specialized; } + bool isBoolean() const + { + return false; + } + bool isString() const { return false; @@ -1202,6 +1223,11 @@ public: return std::numeric_limits::is_specialized; } + bool isBoolean() const + { + return false; + } + bool isString() const { return false; @@ -1335,6 +1361,11 @@ public: return std::numeric_limits::is_specialized; } + bool isBoolean() const + { + return false; + } + bool isString() const { return false; @@ -1468,6 +1499,11 @@ public: return std::numeric_limits::is_specialized; } + bool isBoolean() const + { + return false; + } + bool isString() const { return false; @@ -1601,6 +1637,11 @@ public: return std::numeric_limits::is_specialized; } + bool isBoolean() const + { + return false; + } + bool isString() const { return false; @@ -1755,6 +1796,11 @@ public: return std::numeric_limits::is_specialized; } + bool isBoolean() const + { + return false; + } + bool isString() const { return false; @@ -1886,6 +1932,11 @@ public: return std::numeric_limits::is_specialized; } + bool isBoolean() const + { + return true; + } + bool isString() const { return false; @@ -2020,6 +2071,11 @@ public: return std::numeric_limits::is_specialized; } + bool isBoolean() const + { + return false; + } + bool isString() const { return false; @@ -2160,6 +2216,11 @@ public: return std::numeric_limits::is_specialized; } + bool isBoolean() const + { + return false; + } + bool isString() const { return false; @@ -2291,6 +2352,11 @@ public: return std::numeric_limits::is_specialized; } + bool isBoolean() const + { + return false; + } + bool isString() const { return false; @@ -2793,6 +2859,11 @@ public: return std::numeric_limits::is_specialized; } + bool isBoolean() const + { + return false; + } + bool isString() const { return false; @@ -2926,6 +2997,11 @@ public: return std::numeric_limits::is_specialized; } + bool isBoolean() const + { + return false; + } + bool isString() const { return false; @@ -3245,6 +3321,11 @@ public: return false; } + bool isBoolean() const + { + return false; + } + bool isString() const { return false; @@ -3341,6 +3422,11 @@ public: return false; } + bool isBoolean() const + { + return false; + } + bool isString() const { return false; @@ -3437,6 +3523,11 @@ public: return false; } + bool isBoolean() const + { + return false; + } + bool isString() const { return false; diff --git a/Foundation/include/Poco/FIFOBuffer.h b/Foundation/include/Poco/FIFOBuffer.h index 6c7e04224..58fd92ae9 100644 --- a/Foundation/include/Poco/FIFOBuffer.h +++ b/Foundation/include/Poco/FIFOBuffer.h @@ -38,6 +38,11 @@ class BasicFIFOBuffer /// empty/non-empty/full (i.e. writable/readable) transition /// notifications. Buffer can be flagged with end-of-file and /// error flags, which renders it un-readable/writable. + /// + /// Critical portions of code are protected by a recursive mutex. + /// However, to achieve thread-safety in cases where multiple + /// member function calls are involved and have to be atomic, + /// the mutex must be locked externally. /// /// Buffer size, as well as amount of unread data and /// available space introspections are supported as well. @@ -83,7 +88,7 @@ public: { } - explicit BasicFIFOBuffer(T* pBuffer, std::size_t size, bool notify = false): + BasicFIFOBuffer(T* pBuffer, std::size_t size, bool notify = false): _buffer(pBuffer, size), _begin(0), _used(0), @@ -94,7 +99,7 @@ public: { } - explicit BasicFIFOBuffer(const T* pBuffer, std::size_t size, bool notify = false): + BasicFIFOBuffer(const T* pBuffer, std::size_t size, bool notify = false): _buffer(pBuffer, size), _begin(0), _used(size), @@ -232,7 +237,7 @@ public: if (_buffer.size() - (_begin + _used) < length) { - std::memmove(_buffer.begin(), _buffer.begin() + _begin, _used); + std::memmove(_buffer.begin(), _buffer.begin() + _begin, _used * sizeof(T)); _begin = 0; } @@ -258,14 +263,10 @@ public: /// /// Returns the length of data written. { - std::size_t len = length; + if (length == 0 || length > buffer.size()) + length = buffer.size(); - if (len == 0) - len = buffer.size(); - else if (len > buffer.size()) - len = buffer.size(); - - return write(buffer.begin(), len); + return write(buffer.begin(), length); } std::size_t size() const @@ -301,7 +302,10 @@ public: _used = 0; } else + { + _begin += length; _used -= length; + } if (_notify) notify(usedBefore); } @@ -321,7 +325,7 @@ public: if (!isWritable()) throw Poco::InvalidAccessException("Buffer not writable."); - std::memcpy(&_buffer[_used], ptr, length); + std::memcpy(&_buffer[_used], ptr, length * sizeof(T)); std::size_t usedBefore = _used; _used += length; if (_notify) notify(usedBefore); @@ -494,6 +498,12 @@ public: return _notify; } + Mutex& mutex() + /// Returns reference to mutex. + { + return _mutex; + } + private: void notify(std::size_t usedBefore) { diff --git a/Foundation/include/Poco/FIFOBufferStream.h b/Foundation/include/Poco/FIFOBufferStream.h index b98ddc016..2e8a1116a 100644 --- a/Foundation/include/Poco/FIFOBufferStream.h +++ b/Foundation/include/Poco/FIFOBufferStream.h @@ -42,10 +42,10 @@ public: explicit FIFOBufferStreamBuf(FIFOBuffer& fifoBuffer); /// Creates a FIFOBufferStreamBuf and assigns the given buffer to it. - explicit FIFOBufferStreamBuf(char* pBuffer, std::size_t length); + FIFOBufferStreamBuf(char* pBuffer, std::size_t length); /// Creates a FIFOBufferStreamBuf and assigns the given buffer to it. - explicit FIFOBufferStreamBuf(const char* pBuffer, std::size_t length); + FIFOBufferStreamBuf(const char* pBuffer, std::size_t length); /// Creates a FIFOBufferStreamBuf and assigns the given buffer to it. explicit FIFOBufferStreamBuf(std::size_t length); @@ -83,10 +83,10 @@ public: explicit FIFOIOS(FIFOBuffer& buffer); /// Creates a FIFOIOS and assigns the given buffer to it. - explicit FIFOIOS(char* pBuffer, std::size_t length); + FIFOIOS(char* pBuffer, std::size_t length); /// Creates a FIFOIOS and assigns the given buffer to it. - explicit FIFOIOS(const char* pBuffer, std::size_t length); + FIFOIOS(const char* pBuffer, std::size_t length); /// Creates a FIFOIOS and assigns the given buffer to it. explicit FIFOIOS(std::size_t length); @@ -118,10 +118,10 @@ public: explicit FIFOBufferStream(FIFOBuffer& buffer); /// Creates the FIFOBufferStream with supplied buffer as initial value. - explicit FIFOBufferStream(char* pBuffer, std::size_t length); + FIFOBufferStream(char* pBuffer, std::size_t length); /// Creates a FIFOBufferStream and assigns the given buffer to it. - explicit FIFOBufferStream(const char* pBuffer, std::size_t length); + FIFOBufferStream(const char* pBuffer, std::size_t length); /// Creates a FIFOBufferStream and assigns the given buffer to it. explicit FIFOBufferStream(std::size_t length); diff --git a/Foundation/include/Poco/HashTable.h b/Foundation/include/Poco/HashTable.h index f21cd0f78..350780b26 100644 --- a/Foundation/include/Poco/HashTable.h +++ b/Foundation/include/Poco/HashTable.h @@ -327,7 +327,7 @@ public: UInt32 numZeroEntries = 0; UInt32 maxEntriesPerHash = 0; std::vector detailedEntriesPerHash; - #ifdef DEBUG + #ifdef _DEBUG UInt32 totalSize = 0; #endif for (UInt32 i = 0; i < _maxCapacity; ++i) @@ -340,7 +340,7 @@ public: maxEntriesPerHash = size; if (details) detailedEntriesPerHash.push_back(size); - #ifdef DEBUG + #ifdef _DEBUG totalSize += size; #endif } @@ -351,7 +351,7 @@ public: detailedEntriesPerHash.push_back(0); } } - #ifdef DEBUG + #ifdef _DEBUG poco_assert_dbg(totalSize == numberOfEntries); #endif return HashStatistic(_maxCapacity, numberOfEntries, numZeroEntries, maxEntriesPerHash, detailedEntriesPerHash); diff --git a/Foundation/include/Poco/NestedDiagnosticContext.h b/Foundation/include/Poco/NestedDiagnosticContext.h index b62403c39..307ac512f 100644 --- a/Foundation/include/Poco/NestedDiagnosticContext.h +++ b/Foundation/include/Poco/NestedDiagnosticContext.h @@ -151,7 +151,14 @@ inline NDCScope::NDCScope(const std::string& info, int line, const char* filenam inline NDCScope::~NDCScope() { - NestedDiagnosticContext::current().pop(); + try + { + NestedDiagnosticContext::current().pop(); + } + catch (...) + { + poco_unexpected(); + } } diff --git a/Foundation/include/Poco/NumericString.h b/Foundation/include/Poco/NumericString.h index 0c6721e42..4abd8f9c2 100644 --- a/Foundation/include/Poco/NumericString.h +++ b/Foundation/include/Poco/NumericString.h @@ -87,7 +87,7 @@ bool strToInt(const char* pStr, I& result, short base, char thSep = ',') if (!pStr) return false; while (isspace(*pStr)) ++pStr; if (*pStr == '\0') return false; - char sign = 1; + short sign = 1; if ((base == 10) && (*pStr == '-')) { // Unsigned types can't be negative so abort parsing diff --git a/Foundation/include/Poco/ObjectPool.h b/Foundation/include/Poco/ObjectPool.h index 005412b11..a797b0c5f 100644 --- a/Foundation/include/Poco/ObjectPool.h +++ b/Foundation/include/Poco/ObjectPool.h @@ -194,9 +194,16 @@ public: ~ObjectPool() /// Destroys the ObjectPool. { - for (typename std::vector

    ::iterator it = _pool.begin(); it != _pool.end(); ++it) + try { - _factory.destroyObject(*it); + for (typename std::vector

    ::iterator it = _pool.begin(); it != _pool.end(); ++it) + { + _factory.destroyObject(*it); + } + } + catch (...) + { + poco_unexpected(); } } diff --git a/Foundation/include/Poco/PatternFormatter.h b/Foundation/include/Poco/PatternFormatter.h index 4fbe803e6..50c87643f 100644 --- a/Foundation/include/Poco/PatternFormatter.h +++ b/Foundation/include/Poco/PatternFormatter.h @@ -71,6 +71,7 @@ class Foundation_API PatternFormatter: public Formatter /// * %F - message date/time fractional seconds/microseconds (000000 - 999999) /// * %z - time zone differential in ISO 8601 format (Z or +NN.NN) /// * %Z - time zone differential in RFC format (GMT or +NNNN) + /// * %L - convert time to local time (must be specified before any date/time specifier; does not itself output anything) /// * %E - epoch time (UTC, seconds since midnight, January 1, 1970) /// * %v[width] - the message source (%s) but text length is padded/cropped to 'width' /// * %[name] - the value of the message parameter with the given name diff --git a/Foundation/include/Poco/Platform.h b/Foundation/include/Poco/Platform.h index f23303ee6..4890d7a5a 100644 --- a/Foundation/include/Poco/Platform.h +++ b/Foundation/include/Poco/Platform.h @@ -151,7 +151,17 @@ #define POCO_ARCH_LITTLE_ENDIAN 1 #elif defined(__mips__) || defined(__mips) || defined(__MIPS__) || defined(_M_MRX000) #define POCO_ARCH POCO_ARCH_MIPS - #define POCO_ARCH_BIG_ENDIAN 1 + #if defined(POCO_OS_FAMILY_WINDOWS) + // Is this OK? Supports windows only little endian?? + #define POCO_ARCH_LITTLE_ENDIAN 1 + #elif defined(__MIPSEB__) || defined(_MIPSEB) || defined(__MIPSEB) + #define POCO_ARCH_BIG_ENDIAN 1 + #elif defined(__MIPSEL__) || defined(_MIPSEL) || defined(__MIPSEL) + #define POCO_ARCH_LITTLE_ENDIAN 1 + #else + #error "MIPS but neither MIPSEL nor MIPSEB?" + #endif + #elif defined(__hppa) || defined(__hppa__) #define POCO_ARCH POCO_ARCH_HPPA #define POCO_ARCH_BIG_ENDIAN 1 diff --git a/Foundation/include/Poco/RWLock.h b/Foundation/include/Poco/RWLock.h index 9739ded5f..12d60c3d0 100644 --- a/Foundation/include/Poco/RWLock.h +++ b/Foundation/include/Poco/RWLock.h @@ -168,7 +168,14 @@ inline ScopedRWLock::ScopedRWLock(RWLock& rwl, bool write): _rwl(rwl) inline ScopedRWLock::~ScopedRWLock() { - _rwl.unlock(); + try + { + _rwl.unlock(); + } + catch (...) + { + poco_unexpected(); + } } diff --git a/Foundation/include/Poco/RefCountedObject.h b/Foundation/include/Poco/RefCountedObject.h index 3e8557166..236f4442a 100644 --- a/Foundation/include/Poco/RefCountedObject.h +++ b/Foundation/include/Poco/RefCountedObject.h @@ -42,7 +42,7 @@ public: void duplicate() const; /// Increments the object's reference count. - void release() const; + void release() const throw(); /// Decrements the object's reference count /// and deletes the object if the count /// reaches zero. @@ -77,9 +77,16 @@ inline void RefCountedObject::duplicate() const } -inline void RefCountedObject::release() const +inline void RefCountedObject::release() const throw() { - if (--_counter == 0) delete this; + try + { + if (--_counter == 0) delete this; + } + catch (...) + { + poco_unexpected(); + } } diff --git a/Foundation/include/Poco/RegularExpression.h b/Foundation/include/Poco/RegularExpression.h index 57a27e07a..e1bc063b9 100644 --- a/Foundation/include/Poco/RegularExpression.h +++ b/Foundation/include/Poco/RegularExpression.h @@ -33,8 +33,8 @@ // extern "C" { - struct real_pcre; - typedef struct real_pcre pcre; + struct real_pcre8_or_16; /* declaration; the definition is private */ + typedef struct real_pcre8_or_16 pcre; struct pcre_extra; } diff --git a/Foundation/include/Poco/ScopedLock.h b/Foundation/include/Poco/ScopedLock.h index 06a3fabba..e2c6ba7b4 100644 --- a/Foundation/include/Poco/ScopedLock.h +++ b/Foundation/include/Poco/ScopedLock.h @@ -47,7 +47,14 @@ public: ~ScopedLock() { - _mutex.unlock(); + try + { + _mutex.unlock(); + } + catch (...) + { + poco_unexpected(); + } } private: @@ -82,7 +89,14 @@ public: ~ScopedLockWithUnlock() { - unlock(); + try + { + unlock(); + } + catch (...) + { + poco_unexpected(); + } } void unlock() diff --git a/Foundation/include/Poco/ScopedUnlock.h b/Foundation/include/Poco/ScopedUnlock.h index ef20d88ee..b301d0050 100644 --- a/Foundation/include/Poco/ScopedUnlock.h +++ b/Foundation/include/Poco/ScopedUnlock.h @@ -41,7 +41,14 @@ public: } inline ~ScopedUnlock() { - _mutex.lock(); + try + { + _mutex.lock(); + } + catch (...) + { + poco_unexpected(); + } } private: diff --git a/Foundation/include/Poco/SharedPtr.h b/Foundation/include/Poco/SharedPtr.h index 9e05cf282..1e101cd74 100644 --- a/Foundation/include/Poco/SharedPtr.h +++ b/Foundation/include/Poco/SharedPtr.h @@ -143,7 +143,14 @@ public: ~SharedPtr() { - release(); + try + { + release(); + } + catch (...) + { + poco_unexpected(); + } } SharedPtr& assign(C* ptr) diff --git a/Foundation/include/Poco/SimpleHashTable.h b/Foundation/include/Poco/SimpleHashTable.h index b54f6186d..f04cb5ac8 100644 --- a/Foundation/include/Poco/SimpleHashTable.h +++ b/Foundation/include/Poco/SimpleHashTable.h @@ -369,7 +369,7 @@ public: UInt32 size = 1; if (details) detailedEntriesPerHash.push_back(size); - #ifdef DEBUG + #ifdef _DEBUG totalSize += size; #endif } @@ -380,8 +380,9 @@ public: detailedEntriesPerHash.push_back(0); } } + #ifdef _DEBUG poco_assert_dbg(totalSize == numberOfEntries); - + #endif return HashStatistic(_capacity, numberOfEntries, numZeroEntries, maxEntriesPerHash, detailedEntriesPerHash); } diff --git a/Foundation/include/Poco/Timestamp.h b/Foundation/include/Poco/Timestamp.h index f8fa0683d..2ce171048 100644 --- a/Foundation/include/Poco/Timestamp.h +++ b/Foundation/include/Poco/Timestamp.h @@ -106,6 +106,11 @@ public: bool isElapsed(TimeDiff interval) const; /// Returns true iff the given interval has passed /// since the time denoted by the timestamp. + + TimeVal raw() const; + /// Returns the raw time value. + /// + /// Same as epochMicroseconds(). static Timestamp fromEpochTime(std::time_t t); /// Creates a timestamp from a std::time_t. @@ -244,6 +249,12 @@ inline void swap(Timestamp& s1, Timestamp& s2) } +inline Timestamp::TimeVal Timestamp::raw() const +{ + return _ts; +} + + } // namespace Poco diff --git a/Foundation/include/Poco/Types.h b/Foundation/include/Poco/Types.h index 1b076d51c..23321d93f 100644 --- a/Foundation/include/Poco/Types.h +++ b/Foundation/include/Poco/Types.h @@ -57,16 +57,24 @@ namespace Poco { typedef unsigned short UInt16; typedef signed int Int32; typedef unsigned int UInt32; - typedef signed long IntPtr; - typedef unsigned long UIntPtr; - #if defined(__LP64__) + #if defined(_WIN64) #define POCO_PTR_IS_64_BIT 1 - #define POCO_LONG_IS_64_BIT 1 - typedef signed long Int64; - typedef unsigned long UInt64; - #else + typedef signed long long IntPtr; + typedef unsigned long long UIntPtr; typedef signed long long Int64; typedef unsigned long long UInt64; + #else + typedef signed long IntPtr; + typedef unsigned long UIntPtr; + #if defined(__LP64__) + #define POCO_PTR_IS_64_BIT 1 + #define POCO_LONG_IS_64_BIT 1 + typedef signed long Int64; + typedef unsigned long UInt64; + #else + typedef signed long long Int64; + typedef unsigned long long UInt64; + #endif #endif #define POCO_HAVE_INT64 1 #elif defined(__DECCXX) diff --git a/Foundation/include/Poco/URI.h b/Foundation/include/Poco/URI.h index 717f23ac3..b1613d38e 100644 --- a/Foundation/include/Poco/URI.h +++ b/Foundation/include/Poco/URI.h @@ -27,6 +27,9 @@ namespace Poco { +class Path; + + class Foundation_API URI /// A Uniform Resource Identifier, as specified in RFC 3986. /// @@ -72,6 +75,12 @@ public: /// Creates an URI from a base URI and a relative URI, according to /// the algorithm in section 5.2 of RFC 3986. + explicit URI(const Path& path); + /// Creates a URI from a path. + /// + /// The path will be made absolute, and a file:// URI + /// will be built from it. + ~URI(); /// Destroys the URI. diff --git a/Foundation/include/Poco/UnWindows.h b/Foundation/include/Poco/UnWindows.h index 722265bf6..862bfb060 100644 --- a/Foundation/include/Poco/UnWindows.h +++ b/Foundation/include/Poco/UnWindows.h @@ -58,6 +58,7 @@ // definitions.) For more information, see SdkDdkVer.h. +#if !defined(_WIN32_WCE) #if defined(_WIN32_WINNT) #if (_WIN32_WINNT < 0x0501) #error Unsupported Windows version. @@ -77,6 +78,7 @@ #define _WIN32_WINNT 0x0501 #define NTDDI_VERSION 0x05010100 #endif +#endif // To prevent Platform_WIN32.h to modify version defines, diff --git a/Foundation/include/Poco/Version.h b/Foundation/include/Poco/Version.h index 36292fd48..927be89b0 100644 --- a/Foundation/include/Poco/Version.h +++ b/Foundation/include/Poco/Version.h @@ -34,7 +34,7 @@ // Ax are alpha releases // Bx are beta releases // -#define POCO_VERSION 0x01050300 +#define POCO_VERSION 0x01050400 #endif // Foundation_Version_INCLUDED diff --git a/Foundation/samples/ActiveMethod/ActiveMethod_CE_vs90.vcproj b/Foundation/samples/ActiveMethod/ActiveMethod_CE_vs90.vcproj index 97ad0dd50..640235d99 100644 --- a/Foundation/samples/ActiveMethod/ActiveMethod_CE_vs90.vcproj +++ b/Foundation/samples/ActiveMethod/ActiveMethod_CE_vs90.vcproj @@ -46,7 +46,8 @@ CompileAs="0" DisableSpecificWarnings="4800;" CompileForArchitecture="2" - InterworkCalls="false"/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\ActiveMethod\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\ActiveMethod\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\ActiveMethod\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\ActiveMethod\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\ActiveMethod\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\ActiveMethod\$(Platform)\$(Configuration)\ false diff --git a/Foundation/samples/ActiveMethod/ActiveMethod_WEC2013_vs110.vcxproj.filters b/Foundation/samples/ActiveMethod/ActiveMethod_WEC2013_vs110.vcxproj.filters index db6095c1c..db00e3850 100644 --- a/Foundation/samples/ActiveMethod/ActiveMethod_WEC2013_vs110.vcxproj.filters +++ b/Foundation/samples/ActiveMethod/ActiveMethod_WEC2013_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {13d16c65-d39e-43c8-8162-b46c073f7919} + {5abd1f08-eb55-4047-ae3b-818c9ff883d7} - {71a3eefd-e533-40be-8e24-1761267dabef} + {143b2515-81ce-476d-b9d1-d37fe97f1983} diff --git a/Foundation/samples/ActiveMethod/ActiveMethod_WEC2013_vs120.vcxproj b/Foundation/samples/ActiveMethod/ActiveMethod_WEC2013_vs120.vcxproj index 7b55d0994..3d9a7b850 100644 --- a/Foundation/samples/ActiveMethod/ActiveMethod_WEC2013_vs120.vcxproj +++ b/Foundation/samples/ActiveMethod/ActiveMethod_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\ActiveMethod\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\ActiveMethod\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\ActiveMethod\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\ActiveMethod\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\ActiveMethod\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\ActiveMethod\$(Platform)\$(Configuration)\ false diff --git a/Foundation/samples/ActiveMethod/ActiveMethod_WEC2013_vs120.vcxproj.filters b/Foundation/samples/ActiveMethod/ActiveMethod_WEC2013_vs120.vcxproj.filters index bb28aaa24..4de89eaf3 100644 --- a/Foundation/samples/ActiveMethod/ActiveMethod_WEC2013_vs120.vcxproj.filters +++ b/Foundation/samples/ActiveMethod/ActiveMethod_WEC2013_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {f28ac283-7824-48c5-8a59-e5320390f078} + {e67d190d-04cc-4db2-92b2-3cb0195a2c12} - {7c4cb720-a4ee-40e5-916f-a1e85b9e596d} + {56113fd2-3946-4c30-ad08-fd94f9551754} diff --git a/Foundation/samples/ActiveMethod/ActiveMethod_vs100.vcxproj b/Foundation/samples/ActiveMethod/ActiveMethod_vs100.vcxproj index f616c6864..bb2da2426 100644 --- a/Foundation/samples/ActiveMethod/ActiveMethod_vs100.vcxproj +++ b/Foundation/samples/ActiveMethod/ActiveMethod_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\ActiveMethod\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\ActiveMethod\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\ActiveMethod\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\ActiveMethod\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\ActiveMethod\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\ActiveMethod\$(Configuration)\ false ActiveMethodd ActiveMethodd @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\ActiveMethodd.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\ActiveMethodd.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\ActiveMethodd.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Foundation/samples/ActiveMethod/ActiveMethod_vs100.vcxproj.filters b/Foundation/samples/ActiveMethod/ActiveMethod_vs100.vcxproj.filters index a20428257..de4d48f37 100644 --- a/Foundation/samples/ActiveMethod/ActiveMethod_vs100.vcxproj.filters +++ b/Foundation/samples/ActiveMethod/ActiveMethod_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {a688b593-d354-48f1-b9ad-684c5d19deba} + {9ad2e81c-68ce-4ac6-ac8b-4622aea7d0fd} - {7fee33a4-6973-4a5a-8c62-7e49c62bd333} + {d2c21053-5ae5-45a7-9347-079b4f030faf} diff --git a/Foundation/samples/ActiveMethod/ActiveMethod_vs110.vcxproj b/Foundation/samples/ActiveMethod/ActiveMethod_vs110.vcxproj index 97785d408..8d4b04097 100644 --- a/Foundation/samples/ActiveMethod/ActiveMethod_vs110.vcxproj +++ b/Foundation/samples/ActiveMethod/ActiveMethod_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\ActiveMethod\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\ActiveMethod\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\ActiveMethod\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\ActiveMethod\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\ActiveMethod\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\ActiveMethod\$(Configuration)\ false diff --git a/Foundation/samples/ActiveMethod/ActiveMethod_vs110.vcxproj.filters b/Foundation/samples/ActiveMethod/ActiveMethod_vs110.vcxproj.filters index d0db94e0f..5e2b05b82 100644 --- a/Foundation/samples/ActiveMethod/ActiveMethod_vs110.vcxproj.filters +++ b/Foundation/samples/ActiveMethod/ActiveMethod_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {f01138e4-c233-4a37-89b5-501b9368a94c} + {a226ba60-fb2f-4f4a-9e68-62caa50b47c4} - {b376cbd9-06e9-4311-84c1-867eacaf60e8} + {1a6d1f73-bd75-4c2a-8e09-b532b6939748} diff --git a/Foundation/samples/ActiveMethod/ActiveMethod_vs120.vcxproj b/Foundation/samples/ActiveMethod/ActiveMethod_vs120.vcxproj index d2ed045d5..66d9a5e43 100644 --- a/Foundation/samples/ActiveMethod/ActiveMethod_vs120.vcxproj +++ b/Foundation/samples/ActiveMethod/ActiveMethod_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\ActiveMethod\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\ActiveMethod\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\ActiveMethod\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\ActiveMethod\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\ActiveMethod\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\ActiveMethod\$(Configuration)\ false diff --git a/Foundation/samples/ActiveMethod/ActiveMethod_vs120.vcxproj.filters b/Foundation/samples/ActiveMethod/ActiveMethod_vs120.vcxproj.filters index 8900942d7..9de0b61be 100644 --- a/Foundation/samples/ActiveMethod/ActiveMethod_vs120.vcxproj.filters +++ b/Foundation/samples/ActiveMethod/ActiveMethod_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {a9cdd299-3c19-4e89-aaba-88a279dd9e02} + {19692cda-9727-4cbe-b41c-9fcb125c962d} - {c2f7e2a3-1fcb-4e3b-b4be-6ec377e91e29} + {007776df-3cff-4994-afc9-3ae27f4b7b98} diff --git a/Foundation/samples/ActiveMethod/ActiveMethod_vs71.vcproj b/Foundation/samples/ActiveMethod/ActiveMethod_vs71.vcproj index b678d30b1..db56aa732 100644 --- a/Foundation/samples/ActiveMethod/ActiveMethod_vs71.vcproj +++ b/Foundation/samples/ActiveMethod/ActiveMethod_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\ActiveMethod\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\ActiveMethod\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\ActiveMethod\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\ActiveMethod\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\ActiveMethod\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\ActiveMethod\$(Configuration)\ false ActiveMethodd ActiveMethodd @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\ActiveMethodd.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\ActiveMethodd.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\ActiveMethodd.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Foundation/samples/ActiveMethod/ActiveMethod_x64_vs100.vcxproj.filters b/Foundation/samples/ActiveMethod/ActiveMethod_x64_vs100.vcxproj.filters index b528bd06c..4337fdd2e 100644 --- a/Foundation/samples/ActiveMethod/ActiveMethod_x64_vs100.vcxproj.filters +++ b/Foundation/samples/ActiveMethod/ActiveMethod_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {c0aa1760-aae4-4bf1-8052-1ba3509f77e2} + {f0cdadcb-6871-4d25-949e-44b60d146d0f} - {14d05df6-f753-407f-a65d-de1417422c87} + {93f7a689-8409-4048-a91d-7ce6a6a84a43} diff --git a/Foundation/samples/ActiveMethod/ActiveMethod_x64_vs110.vcxproj b/Foundation/samples/ActiveMethod/ActiveMethod_x64_vs110.vcxproj index 898c5b760..836d9b630 100644 --- a/Foundation/samples/ActiveMethod/ActiveMethod_x64_vs110.vcxproj +++ b/Foundation/samples/ActiveMethod/ActiveMethod_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\ActiveMethod\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\ActiveMethod\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\ActiveMethod\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\ActiveMethod\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\ActiveMethod\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\ActiveMethod\$(Configuration)\ false diff --git a/Foundation/samples/ActiveMethod/ActiveMethod_x64_vs110.vcxproj.filters b/Foundation/samples/ActiveMethod/ActiveMethod_x64_vs110.vcxproj.filters index 276d31411..20d7fb1ce 100644 --- a/Foundation/samples/ActiveMethod/ActiveMethod_x64_vs110.vcxproj.filters +++ b/Foundation/samples/ActiveMethod/ActiveMethod_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {2c70bfc5-54d5-4a9b-99f3-8eae8228e90d} + {eff8ed27-cd83-492d-9a09-bff596a296e5} - {4b801c8d-7fa0-46ac-9957-1bc6983ad845} + {dd3226b5-d15e-4080-8e3d-6300944762ac} diff --git a/Foundation/samples/ActiveMethod/ActiveMethod_x64_vs120.vcxproj b/Foundation/samples/ActiveMethod/ActiveMethod_x64_vs120.vcxproj index 73ad7bc66..bac445b62 100644 --- a/Foundation/samples/ActiveMethod/ActiveMethod_x64_vs120.vcxproj +++ b/Foundation/samples/ActiveMethod/ActiveMethod_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\ActiveMethod\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\ActiveMethod\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\ActiveMethod\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\ActiveMethod\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\ActiveMethod\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\ActiveMethod\$(Configuration)\ false diff --git a/Foundation/samples/ActiveMethod/ActiveMethod_x64_vs120.vcxproj.filters b/Foundation/samples/ActiveMethod/ActiveMethod_x64_vs120.vcxproj.filters index 4ac43bf56..4da71c1aa 100644 --- a/Foundation/samples/ActiveMethod/ActiveMethod_x64_vs120.vcxproj.filters +++ b/Foundation/samples/ActiveMethod/ActiveMethod_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {ea3090d9-67bc-442a-8442-6e3c5280151f} + {05978089-1ec9-4947-82d0-97a99a2e6b3e} - {238cfe4f-e6f0-4439-b3f3-d69ae45af95b} + {557ae827-49a1-4ce1-b06d-bb7dc655f32e} diff --git a/Foundation/samples/ActiveMethod/ActiveMethod_x64_vs90.vcproj b/Foundation/samples/ActiveMethod/ActiveMethod_x64_vs90.vcproj index 90fb0ea4e..79e8fbd2d 100644 --- a/Foundation/samples/ActiveMethod/ActiveMethod_x64_vs90.vcproj +++ b/Foundation/samples/ActiveMethod/ActiveMethod_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\Activity\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\Activity\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\Activity\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\Activity\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\Activity\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\Activity\$(Platform)\$(Configuration)\ false diff --git a/Foundation/samples/Activity/Activity_WEC2013_vs110.vcxproj.filters b/Foundation/samples/Activity/Activity_WEC2013_vs110.vcxproj.filters index b1c5f6c32..2507c98ce 100644 --- a/Foundation/samples/Activity/Activity_WEC2013_vs110.vcxproj.filters +++ b/Foundation/samples/Activity/Activity_WEC2013_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {22ab70b0-f286-4e28-abe2-33c85bc5a39a} + {9a55ab7a-db2e-4359-824e-893f6b20f0f9} - {4e92ceaf-9dd7-4bad-a977-0f0e01b5289a} + {09170abd-657d-49c5-b9d2-9a9771d5d239} diff --git a/Foundation/samples/Activity/Activity_WEC2013_vs120.vcxproj b/Foundation/samples/Activity/Activity_WEC2013_vs120.vcxproj index 9153ce760..e82fba7a4 100644 --- a/Foundation/samples/Activity/Activity_WEC2013_vs120.vcxproj +++ b/Foundation/samples/Activity/Activity_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\Activity\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\Activity\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\Activity\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\Activity\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\Activity\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\Activity\$(Platform)\$(Configuration)\ false diff --git a/Foundation/samples/Activity/Activity_WEC2013_vs120.vcxproj.filters b/Foundation/samples/Activity/Activity_WEC2013_vs120.vcxproj.filters index e2b38e215..0be378d6c 100644 --- a/Foundation/samples/Activity/Activity_WEC2013_vs120.vcxproj.filters +++ b/Foundation/samples/Activity/Activity_WEC2013_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {57cc01a8-1844-4ec1-a99e-39135aa113eb} + {f7240b8f-2cb0-4eae-b84a-0b54d3bdf294} - {af7ba438-580f-4729-b839-da31db1930f6} + {5bd4fb1b-8644-45c7-9565-e18d168c3d58} diff --git a/Foundation/samples/Activity/Activity_vs100.vcxproj b/Foundation/samples/Activity/Activity_vs100.vcxproj index d40919ff3..012bf7ae9 100644 --- a/Foundation/samples/Activity/Activity_vs100.vcxproj +++ b/Foundation/samples/Activity/Activity_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\Activity\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\Activity\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\Activity\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\Activity\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\Activity\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\Activity\$(Configuration)\ false Activityd Activityd @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\Activityd.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\Activityd.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\Activityd.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Foundation/samples/Activity/Activity_vs100.vcxproj.filters b/Foundation/samples/Activity/Activity_vs100.vcxproj.filters index e4ab1c431..b1b099fe8 100644 --- a/Foundation/samples/Activity/Activity_vs100.vcxproj.filters +++ b/Foundation/samples/Activity/Activity_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {d1c48623-f8a9-4a44-9954-0449813f148a} + {8ad811df-5edb-4f40-9b08-a2a6316dd205} - {c1081b5a-b3b2-497c-aafa-ded760dac489} + {bf8861bc-8a19-4738-83ed-709fbf46590c} diff --git a/Foundation/samples/Activity/Activity_vs110.vcxproj b/Foundation/samples/Activity/Activity_vs110.vcxproj index 77f8bc779..ddc2ab93f 100644 --- a/Foundation/samples/Activity/Activity_vs110.vcxproj +++ b/Foundation/samples/Activity/Activity_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\Activity\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\Activity\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\Activity\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\Activity\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\Activity\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\Activity\$(Configuration)\ false diff --git a/Foundation/samples/Activity/Activity_vs110.vcxproj.filters b/Foundation/samples/Activity/Activity_vs110.vcxproj.filters index df1e3e517..83ec06d39 100644 --- a/Foundation/samples/Activity/Activity_vs110.vcxproj.filters +++ b/Foundation/samples/Activity/Activity_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {b8fe0c67-77b2-45f8-97b3-26fc8475aad1} + {789cd231-bec0-433b-86bd-2e292c156318} - {17c3c82e-45fb-40de-a716-bc97c4a5b298} + {b07368c7-6e3b-4288-90a2-583b94557f50} diff --git a/Foundation/samples/Activity/Activity_vs120.vcxproj b/Foundation/samples/Activity/Activity_vs120.vcxproj index 9e1debafe..7fd0223f0 100644 --- a/Foundation/samples/Activity/Activity_vs120.vcxproj +++ b/Foundation/samples/Activity/Activity_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\Activity\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\Activity\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\Activity\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\Activity\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\Activity\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\Activity\$(Configuration)\ false diff --git a/Foundation/samples/Activity/Activity_vs120.vcxproj.filters b/Foundation/samples/Activity/Activity_vs120.vcxproj.filters index 36ed862c5..d72205d85 100644 --- a/Foundation/samples/Activity/Activity_vs120.vcxproj.filters +++ b/Foundation/samples/Activity/Activity_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {81e00666-a2ae-46fd-8ac3-95ce061c2c1a} + {849134f7-0d71-4f54-a327-b73bb41cd9a3} - {b59f7462-8b13-47a6-af75-c701a91d8dea} + {78cedb8c-552e-4fd9-9f35-d9813075b4aa} diff --git a/Foundation/samples/Activity/Activity_vs71.vcproj b/Foundation/samples/Activity/Activity_vs71.vcproj index 71ea20b2c..21b75a1f5 100644 --- a/Foundation/samples/Activity/Activity_vs71.vcproj +++ b/Foundation/samples/Activity/Activity_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\Activity\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\Activity\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Activity\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Activity\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\Activity\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\Activity\$(Configuration)\ false Activityd Activityd @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\Activityd.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\Activityd.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\Activityd.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Foundation/samples/Activity/Activity_x64_vs100.vcxproj.filters b/Foundation/samples/Activity/Activity_x64_vs100.vcxproj.filters index 2ff58dbfa..af80c4fdf 100644 --- a/Foundation/samples/Activity/Activity_x64_vs100.vcxproj.filters +++ b/Foundation/samples/Activity/Activity_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {0739d7f2-a124-4957-aad1-8cfa3f6db07f} + {873aa72c-5105-49a8-b686-6bd97fa80a67} - {0357855a-a385-4e47-8a98-6ba41617ffd7} + {b84178fd-276a-419a-b57b-589ff503f10e} diff --git a/Foundation/samples/Activity/Activity_x64_vs110.vcxproj b/Foundation/samples/Activity/Activity_x64_vs110.vcxproj index 005c2cb28..aa4fbbb13 100644 --- a/Foundation/samples/Activity/Activity_x64_vs110.vcxproj +++ b/Foundation/samples/Activity/Activity_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\Activity\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\Activity\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Activity\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Activity\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\Activity\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\Activity\$(Configuration)\ false diff --git a/Foundation/samples/Activity/Activity_x64_vs110.vcxproj.filters b/Foundation/samples/Activity/Activity_x64_vs110.vcxproj.filters index 03c70aa25..e6ba3880b 100644 --- a/Foundation/samples/Activity/Activity_x64_vs110.vcxproj.filters +++ b/Foundation/samples/Activity/Activity_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {963428e6-e1d2-47d7-9448-ecb8b48e8463} + {8b298963-9d0c-466b-a2b6-f905d2f0ac5a} - {8ba5df23-ccb2-46b3-af6e-91777b56d49b} + {39de03e4-49ef-422a-bbf9-d214987839dc} diff --git a/Foundation/samples/Activity/Activity_x64_vs120.vcxproj b/Foundation/samples/Activity/Activity_x64_vs120.vcxproj index e83081ff3..227177663 100644 --- a/Foundation/samples/Activity/Activity_x64_vs120.vcxproj +++ b/Foundation/samples/Activity/Activity_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\Activity\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\Activity\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Activity\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Activity\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\Activity\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\Activity\$(Configuration)\ false diff --git a/Foundation/samples/Activity/Activity_x64_vs120.vcxproj.filters b/Foundation/samples/Activity/Activity_x64_vs120.vcxproj.filters index 1072773e1..52cda6b1a 100644 --- a/Foundation/samples/Activity/Activity_x64_vs120.vcxproj.filters +++ b/Foundation/samples/Activity/Activity_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {85fe2a30-4b8a-418f-82f3-0888e7f420b9} + {7aa9abeb-2072-4096-b6e6-7b61b32aa3b0} - {8b8aeea0-3879-4cbf-88e6-98c3ff450b61} + {66f7637e-ce5b-4663-a7aa-e3c5b7cd2b99} diff --git a/Foundation/samples/Activity/Activity_x64_vs90.vcproj b/Foundation/samples/Activity/Activity_x64_vs90.vcproj index 7a6a97802..047589f11 100644 --- a/Foundation/samples/Activity/Activity_x64_vs90.vcproj +++ b/Foundation/samples/Activity/Activity_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\BinaryReaderWriter\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\BinaryReaderWriter\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\BinaryReaderWriter\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\BinaryReaderWriter\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\BinaryReaderWriter\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\BinaryReaderWriter\$(Platform)\$(Configuration)\ false diff --git a/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_WEC2013_vs110.vcxproj.filters b/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_WEC2013_vs110.vcxproj.filters index cba2ed8b5..69695ae89 100644 --- a/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_WEC2013_vs110.vcxproj.filters +++ b/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_WEC2013_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {535a788f-7244-42e9-b693-f70c6361ac16} + {3546e6bf-2ec5-451a-995e-412112a14e9e} - {04e36f2c-7ff1-4596-9470-2f1d7e163057} + {ddaa0022-fcf1-4bd7-9b04-4ab230e41d63} diff --git a/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_WEC2013_vs120.vcxproj b/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_WEC2013_vs120.vcxproj index 193cee483..1af6af5fa 100644 --- a/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_WEC2013_vs120.vcxproj +++ b/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\BinaryReaderWriter\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\BinaryReaderWriter\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\BinaryReaderWriter\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\BinaryReaderWriter\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\BinaryReaderWriter\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\BinaryReaderWriter\$(Platform)\$(Configuration)\ false diff --git a/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_WEC2013_vs120.vcxproj.filters b/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_WEC2013_vs120.vcxproj.filters index 42cc2c758..f5745b7ea 100644 --- a/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_WEC2013_vs120.vcxproj.filters +++ b/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_WEC2013_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {bd813b31-b430-4b60-8218-e078735c92cf} + {8d205784-5e2d-42e8-a49a-61b36d39cf8e} - {4ec15d03-e09e-42fe-87e7-6816538a25e8} + {0528f766-c956-43d9-844f-465629666515} diff --git a/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_vs100.vcxproj b/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_vs100.vcxproj index 719782e74..6a0ad0875 100644 --- a/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_vs100.vcxproj +++ b/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\BinaryReaderWriter\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\BinaryReaderWriter\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\BinaryReaderWriter\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\BinaryReaderWriter\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\BinaryReaderWriter\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\BinaryReaderWriter\$(Configuration)\ false BinaryReaderWriterd BinaryReaderWriterd @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\BinaryReaderWriterd.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\BinaryReaderWriterd.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\BinaryReaderWriterd.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_vs100.vcxproj.filters b/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_vs100.vcxproj.filters index da59b63af..d22fb790c 100644 --- a/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_vs100.vcxproj.filters +++ b/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {718be3a4-de1e-4ad7-81e2-433a1843c127} + {b403e608-13cd-4428-bd47-55c5e7a415a4} - {07bbf795-8d17-46c1-80e5-6f1bb25c3b95} + {9ae6bc53-75f5-4793-bec2-b48c864454c6} diff --git a/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_vs110.vcxproj b/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_vs110.vcxproj index fa659539b..b0a760393 100644 --- a/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_vs110.vcxproj +++ b/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\BinaryReaderWriter\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\BinaryReaderWriter\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\BinaryReaderWriter\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\BinaryReaderWriter\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\BinaryReaderWriter\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\BinaryReaderWriter\$(Configuration)\ false diff --git a/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_vs110.vcxproj.filters b/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_vs110.vcxproj.filters index 88191ebb9..6276ffff8 100644 --- a/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_vs110.vcxproj.filters +++ b/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {faa7611b-90a3-4a8d-93e0-096fcb989df5} + {42a231a2-e348-494f-b1c6-36e96302fae0} - {57cdaf73-2a12-4ec7-9a9e-8661f8c1ed95} + {53efd097-720b-4b8a-8979-e4c1b7ec0a01} diff --git a/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_vs120.vcxproj b/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_vs120.vcxproj index 959095859..e8b660e1c 100644 --- a/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_vs120.vcxproj +++ b/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\BinaryReaderWriter\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\BinaryReaderWriter\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\BinaryReaderWriter\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\BinaryReaderWriter\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\BinaryReaderWriter\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\BinaryReaderWriter\$(Configuration)\ false diff --git a/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_vs120.vcxproj.filters b/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_vs120.vcxproj.filters index be6a53030..5f56d63ef 100644 --- a/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_vs120.vcxproj.filters +++ b/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {8922d65c-aaad-403b-88f8-7dd7e2fb5c1f} + {784e4231-82d0-4a01-a057-ba929d928362} - {211f8cf7-6c21-4f58-b13c-30e2de3b242d} + {6f8a24f9-0a87-4719-bf24-543224e100e5} diff --git a/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_vs71.vcproj b/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_vs71.vcproj index 5b32174c8..6ebec9e9a 100644 --- a/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_vs71.vcproj +++ b/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\BinaryReaderWriter\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\BinaryReaderWriter\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\BinaryReaderWriter\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\BinaryReaderWriter\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\BinaryReaderWriter\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\BinaryReaderWriter\$(Configuration)\ false BinaryReaderWriterd BinaryReaderWriterd @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\BinaryReaderWriterd.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\BinaryReaderWriterd.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\BinaryReaderWriterd.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_x64_vs100.vcxproj.filters b/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_x64_vs100.vcxproj.filters index 7e04fdd0f..935e4c43f 100644 --- a/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_x64_vs100.vcxproj.filters +++ b/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {f1f441b1-ebb4-42ac-aec9-9cda51ed691c} + {0aacabd1-4731-46d4-9cab-bf68ad41532a} - {67304a7b-972b-4f44-8247-429e2c4b0d03} + {0e0fc754-a81d-48a6-9c60-10faa5ffd464} diff --git a/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_x64_vs110.vcxproj b/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_x64_vs110.vcxproj index bbf04180f..deccb3134 100644 --- a/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_x64_vs110.vcxproj +++ b/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\BinaryReaderWriter\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\BinaryReaderWriter\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\BinaryReaderWriter\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\BinaryReaderWriter\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\BinaryReaderWriter\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\BinaryReaderWriter\$(Configuration)\ false diff --git a/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_x64_vs110.vcxproj.filters b/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_x64_vs110.vcxproj.filters index 95b38baa8..980af364d 100644 --- a/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_x64_vs110.vcxproj.filters +++ b/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {76bedee8-97d9-48e4-8df7-f1e6945dcef2} + {0eca8b0e-7157-4afe-a6f3-b9b2b400bb7f} - {9a6ec673-731c-4c75-bbfe-ba1966f9bf47} + {37c6e713-60b1-4beb-a9d2-ecd357e22782} diff --git a/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_x64_vs120.vcxproj b/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_x64_vs120.vcxproj index bef50e969..9d6c601c7 100644 --- a/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_x64_vs120.vcxproj +++ b/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\BinaryReaderWriter\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\BinaryReaderWriter\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\BinaryReaderWriter\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\BinaryReaderWriter\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\BinaryReaderWriter\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\BinaryReaderWriter\$(Configuration)\ false diff --git a/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_x64_vs120.vcxproj.filters b/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_x64_vs120.vcxproj.filters index 6a53a3e87..d6a0597f6 100644 --- a/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_x64_vs120.vcxproj.filters +++ b/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {141471e0-2032-461b-850f-e80124deca7c} + {c1fbf4fc-9b40-4a25-965b-7aacf0b4e0d7} - {47310493-64ee-47d5-ab64-db54145556a2} + {f9f021bd-bdf8-44d7-80d3-0b7ba4f4a490} diff --git a/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_x64_vs90.vcproj b/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_x64_vs90.vcproj index 566a5738a..6cc7d7318 100644 --- a/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_x64_vs90.vcproj +++ b/Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\DateTime\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\DateTime\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\DateTime\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\DateTime\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\DateTime\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\DateTime\$(Platform)\$(Configuration)\ false diff --git a/Foundation/samples/DateTime/DateTime_WEC2013_vs110.vcxproj.filters b/Foundation/samples/DateTime/DateTime_WEC2013_vs110.vcxproj.filters index ac0a7f428..68faee715 100644 --- a/Foundation/samples/DateTime/DateTime_WEC2013_vs110.vcxproj.filters +++ b/Foundation/samples/DateTime/DateTime_WEC2013_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {3a4c31f7-62c5-4882-910b-5b5ef80f0eac} + {0a574b72-153f-41ca-a37a-d2b55a06ae36} - {faf85b5c-29f8-4699-9a3b-b598e4ebb6a2} + {f2190fc9-658a-4150-9365-ec274a5677c0} diff --git a/Foundation/samples/DateTime/DateTime_WEC2013_vs120.vcxproj b/Foundation/samples/DateTime/DateTime_WEC2013_vs120.vcxproj index 7b86b956a..5cf6328e4 100644 --- a/Foundation/samples/DateTime/DateTime_WEC2013_vs120.vcxproj +++ b/Foundation/samples/DateTime/DateTime_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\DateTime\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\DateTime\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\DateTime\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\DateTime\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\DateTime\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\DateTime\$(Platform)\$(Configuration)\ false diff --git a/Foundation/samples/DateTime/DateTime_WEC2013_vs120.vcxproj.filters b/Foundation/samples/DateTime/DateTime_WEC2013_vs120.vcxproj.filters index af5b8f0a5..c94b13dd7 100644 --- a/Foundation/samples/DateTime/DateTime_WEC2013_vs120.vcxproj.filters +++ b/Foundation/samples/DateTime/DateTime_WEC2013_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {9f9173b6-02a7-4c8a-aec1-902887325787} + {66d9aace-a4ac-432f-913f-326f349ac8a8} - {7b5d1641-c3c7-4d77-b6dd-00a4a72d3e60} + {3a9aca3f-894a-4faa-b754-3f25a5ae0ea0} diff --git a/Foundation/samples/DateTime/DateTime_vs100.vcxproj b/Foundation/samples/DateTime/DateTime_vs100.vcxproj index d95fc8dae..91f37dc51 100644 --- a/Foundation/samples/DateTime/DateTime_vs100.vcxproj +++ b/Foundation/samples/DateTime/DateTime_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\DateTime\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\DateTime\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\DateTime\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\DateTime\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\DateTime\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\DateTime\$(Configuration)\ false DateTimed DateTimed @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\DateTimed.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\DateTimed.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\DateTimed.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Foundation/samples/DateTime/DateTime_vs100.vcxproj.filters b/Foundation/samples/DateTime/DateTime_vs100.vcxproj.filters index 063abc017..1002b2734 100644 --- a/Foundation/samples/DateTime/DateTime_vs100.vcxproj.filters +++ b/Foundation/samples/DateTime/DateTime_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {4cdec6e2-656c-4acd-bab4-f7bdd0d6162e} + {ddd19ab6-b85b-4f04-b3b3-51648c5bd70d} - {4e68893c-4d6f-4e9a-a684-60ce861bd5fc} + {bc55f0aa-cd39-4e7b-9de9-fb3d6d861289} diff --git a/Foundation/samples/DateTime/DateTime_vs110.vcxproj b/Foundation/samples/DateTime/DateTime_vs110.vcxproj index 3725c504a..15032336f 100644 --- a/Foundation/samples/DateTime/DateTime_vs110.vcxproj +++ b/Foundation/samples/DateTime/DateTime_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\DateTime\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\DateTime\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\DateTime\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\DateTime\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\DateTime\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\DateTime\$(Configuration)\ false diff --git a/Foundation/samples/DateTime/DateTime_vs110.vcxproj.filters b/Foundation/samples/DateTime/DateTime_vs110.vcxproj.filters index dd15623df..87f5a1c68 100644 --- a/Foundation/samples/DateTime/DateTime_vs110.vcxproj.filters +++ b/Foundation/samples/DateTime/DateTime_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {a7d6ff5f-8289-4ee6-8c96-177648b522ec} + {62da6df9-9ec5-4a93-9af3-59feac60a36a} - {f587178e-8dbf-4e05-977d-ab825dd60c04} + {1044272f-0a02-4668-b350-317720f50924} diff --git a/Foundation/samples/DateTime/DateTime_vs120.vcxproj b/Foundation/samples/DateTime/DateTime_vs120.vcxproj index 5aa8e9b7c..1a2eb35d1 100644 --- a/Foundation/samples/DateTime/DateTime_vs120.vcxproj +++ b/Foundation/samples/DateTime/DateTime_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\DateTime\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\DateTime\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\DateTime\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\DateTime\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\DateTime\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\DateTime\$(Configuration)\ false diff --git a/Foundation/samples/DateTime/DateTime_vs120.vcxproj.filters b/Foundation/samples/DateTime/DateTime_vs120.vcxproj.filters index 99958d46c..5f673fdb3 100644 --- a/Foundation/samples/DateTime/DateTime_vs120.vcxproj.filters +++ b/Foundation/samples/DateTime/DateTime_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {b10ca2fe-4a14-43b3-a791-6823b0345831} + {99c2f2a4-e2b8-40ec-bbff-24e021ed948b} - {7bbc5f2b-f915-4b90-a46c-4b6beadd987a} + {a347eab2-40a3-4fa3-b25b-43c195d59746} diff --git a/Foundation/samples/DateTime/DateTime_vs71.vcproj b/Foundation/samples/DateTime/DateTime_vs71.vcproj index b2cef8ee6..f840cb24d 100644 --- a/Foundation/samples/DateTime/DateTime_vs71.vcproj +++ b/Foundation/samples/DateTime/DateTime_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\DateTime\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\DateTime\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\DateTime\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\DateTime\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\DateTime\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\DateTime\$(Configuration)\ false DateTimed DateTimed @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\DateTimed.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\DateTimed.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\DateTimed.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Foundation/samples/DateTime/DateTime_x64_vs100.vcxproj.filters b/Foundation/samples/DateTime/DateTime_x64_vs100.vcxproj.filters index e82ae738c..ec2f0dec0 100644 --- a/Foundation/samples/DateTime/DateTime_x64_vs100.vcxproj.filters +++ b/Foundation/samples/DateTime/DateTime_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {c96d64f4-db34-4551-9fc3-c510ef93ed6b} + {6599c69d-a825-4a8f-8e77-110422adc96b} - {ce6fc096-06c5-4356-8907-3257f07c16c7} + {eec8180d-16cd-45ff-9f59-0e509277d284} diff --git a/Foundation/samples/DateTime/DateTime_x64_vs110.vcxproj b/Foundation/samples/DateTime/DateTime_x64_vs110.vcxproj index 8229d5db9..10711e251 100644 --- a/Foundation/samples/DateTime/DateTime_x64_vs110.vcxproj +++ b/Foundation/samples/DateTime/DateTime_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\DateTime\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\DateTime\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\DateTime\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\DateTime\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\DateTime\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\DateTime\$(Configuration)\ false diff --git a/Foundation/samples/DateTime/DateTime_x64_vs110.vcxproj.filters b/Foundation/samples/DateTime/DateTime_x64_vs110.vcxproj.filters index 473a77e94..574593261 100644 --- a/Foundation/samples/DateTime/DateTime_x64_vs110.vcxproj.filters +++ b/Foundation/samples/DateTime/DateTime_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {8cb7fefa-727f-4129-949b-7a0171a57281} + {6dd77f74-f759-45f1-99bb-844c1701a903} - {a69a81e3-e04f-41e1-9c6e-cbf91c257ec9} + {6b5ee189-7c93-4c6d-bfd1-3f3d072f27d1} diff --git a/Foundation/samples/DateTime/DateTime_x64_vs120.vcxproj b/Foundation/samples/DateTime/DateTime_x64_vs120.vcxproj index dcd7bab6e..536bdccf7 100644 --- a/Foundation/samples/DateTime/DateTime_x64_vs120.vcxproj +++ b/Foundation/samples/DateTime/DateTime_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\DateTime\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\DateTime\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\DateTime\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\DateTime\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\DateTime\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\DateTime\$(Configuration)\ false diff --git a/Foundation/samples/DateTime/DateTime_x64_vs120.vcxproj.filters b/Foundation/samples/DateTime/DateTime_x64_vs120.vcxproj.filters index 3636302eb..5febf3465 100644 --- a/Foundation/samples/DateTime/DateTime_x64_vs120.vcxproj.filters +++ b/Foundation/samples/DateTime/DateTime_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {f0aeca11-2127-4611-8a0e-5f615e79d3b4} + {0a26b173-4653-4c60-93de-439172a40e72} - {cd1fba3b-4ba1-4127-a29c-73b8c482aa54} + {cef6078e-043e-48e3-a95e-9ccde29d1734} diff --git a/Foundation/samples/DateTime/DateTime_x64_vs90.vcproj b/Foundation/samples/DateTime/DateTime_x64_vs90.vcproj index 3f2a20668..978112c0b 100644 --- a/Foundation/samples/DateTime/DateTime_x64_vs90.vcproj +++ b/Foundation/samples/DateTime/DateTime_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\LineEndingConverter\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\LineEndingConverter\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\LineEndingConverter\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\LineEndingConverter\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\LineEndingConverter\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\LineEndingConverter\$(Configuration)\ false LineEndingConverterd LineEndingConverterd @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\LineEndingConverterd.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\LineEndingConverterd.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\LineEndingConverterd.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Foundation/samples/LineEndingConverter/LineEndingConverter_vs100.vcxproj.filters b/Foundation/samples/LineEndingConverter/LineEndingConverter_vs100.vcxproj.filters index 9cd537c3f..19b521a7b 100644 --- a/Foundation/samples/LineEndingConverter/LineEndingConverter_vs100.vcxproj.filters +++ b/Foundation/samples/LineEndingConverter/LineEndingConverter_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {b14800b9-e3f7-4172-a6f5-bf98c349ed5d} + {e7052533-7c16-4975-bafc-7089bc9355f8} - {da013ec4-4ecb-4598-ad7d-51d47c36ed60} + {010f549f-2a27-4081-9101-2b35ce46483e} diff --git a/Foundation/samples/LineEndingConverter/LineEndingConverter_vs110.vcxproj b/Foundation/samples/LineEndingConverter/LineEndingConverter_vs110.vcxproj index 34a43fbfe..b64c9afc5 100644 --- a/Foundation/samples/LineEndingConverter/LineEndingConverter_vs110.vcxproj +++ b/Foundation/samples/LineEndingConverter/LineEndingConverter_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\LineEndingConverter\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\LineEndingConverter\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\LineEndingConverter\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\LineEndingConverter\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\LineEndingConverter\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\LineEndingConverter\$(Configuration)\ false diff --git a/Foundation/samples/LineEndingConverter/LineEndingConverter_vs110.vcxproj.filters b/Foundation/samples/LineEndingConverter/LineEndingConverter_vs110.vcxproj.filters index 316bbf7be..43396832f 100644 --- a/Foundation/samples/LineEndingConverter/LineEndingConverter_vs110.vcxproj.filters +++ b/Foundation/samples/LineEndingConverter/LineEndingConverter_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {f3c9bd7d-7efe-45f0-8750-7b781b50b155} + {eb767e5f-93ae-4a1c-bda7-2a9481596094} - {3774b195-6de8-49ed-ad08-830795ef290b} + {b8ba45fa-a227-4007-a484-1bba686a602f} diff --git a/Foundation/samples/LineEndingConverter/LineEndingConverter_vs120.vcxproj b/Foundation/samples/LineEndingConverter/LineEndingConverter_vs120.vcxproj index 061d9d12a..8a888f07f 100644 --- a/Foundation/samples/LineEndingConverter/LineEndingConverter_vs120.vcxproj +++ b/Foundation/samples/LineEndingConverter/LineEndingConverter_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\LineEndingConverter\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\LineEndingConverter\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\LineEndingConverter\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\LineEndingConverter\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\LineEndingConverter\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\LineEndingConverter\$(Configuration)\ false diff --git a/Foundation/samples/LineEndingConverter/LineEndingConverter_vs120.vcxproj.filters b/Foundation/samples/LineEndingConverter/LineEndingConverter_vs120.vcxproj.filters index d474584ce..dac6b8bbe 100644 --- a/Foundation/samples/LineEndingConverter/LineEndingConverter_vs120.vcxproj.filters +++ b/Foundation/samples/LineEndingConverter/LineEndingConverter_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {7804f6d8-bebd-4518-a977-cc2f11a27ab9} + {026d2116-9b40-4fbb-8121-ec9f57e4ff35} - {d7e9828c-35b6-453b-bbff-087535299e5f} + {6ca7b38f-a158-41ae-9b5c-ddb831db66bc} diff --git a/Foundation/samples/LineEndingConverter/LineEndingConverter_vs71.vcproj b/Foundation/samples/LineEndingConverter/LineEndingConverter_vs71.vcproj index 77f1a2127..8aa7c8fbf 100644 --- a/Foundation/samples/LineEndingConverter/LineEndingConverter_vs71.vcproj +++ b/Foundation/samples/LineEndingConverter/LineEndingConverter_vs71.vcproj @@ -3,7 +3,7 @@ Name="LineEndingConverter" Version="7.10" ProjectType="Visual C++" - ProjectGUID="{A5639B95-211B-36F1-994E-F05361C18EBF}" + ProjectGUID="{354BBE76-D088-3931-940C-797F514D2E40}" RootNamespace="LineEndingConverter" Keyword="Win32Proj"> @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="4" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="4" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\LineEndingConverter\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\LineEndingConverter\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\LineEndingConverter\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\LineEndingConverter\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\LineEndingConverter\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\LineEndingConverter\$(Configuration)\ false LineEndingConverterd LineEndingConverterd @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\LineEndingConverterd.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\LineEndingConverterd.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\LineEndingConverterd.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Foundation/samples/LineEndingConverter/LineEndingConverter_x64_vs100.vcxproj.filters b/Foundation/samples/LineEndingConverter/LineEndingConverter_x64_vs100.vcxproj.filters index 5d1630313..1eaa7d832 100644 --- a/Foundation/samples/LineEndingConverter/LineEndingConverter_x64_vs100.vcxproj.filters +++ b/Foundation/samples/LineEndingConverter/LineEndingConverter_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {65b0d201-febc-48c8-9b1b-7277cbfee2f2} + {dd491c9b-d600-45fd-96ca-1dc352eeb0a6} - {19daed3d-cf2c-492c-b25e-99488fb43de4} + {bbec086c-5feb-4519-8f6d-f146c4727978} diff --git a/Foundation/samples/LineEndingConverter/LineEndingConverter_x64_vs110.vcxproj b/Foundation/samples/LineEndingConverter/LineEndingConverter_x64_vs110.vcxproj index 25c6d3269..0d94e607d 100644 --- a/Foundation/samples/LineEndingConverter/LineEndingConverter_x64_vs110.vcxproj +++ b/Foundation/samples/LineEndingConverter/LineEndingConverter_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\LineEndingConverter\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\LineEndingConverter\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\LineEndingConverter\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\LineEndingConverter\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\LineEndingConverter\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\LineEndingConverter\$(Configuration)\ false diff --git a/Foundation/samples/LineEndingConverter/LineEndingConverter_x64_vs110.vcxproj.filters b/Foundation/samples/LineEndingConverter/LineEndingConverter_x64_vs110.vcxproj.filters index dedfb5add..4ac29bb17 100644 --- a/Foundation/samples/LineEndingConverter/LineEndingConverter_x64_vs110.vcxproj.filters +++ b/Foundation/samples/LineEndingConverter/LineEndingConverter_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {830f3b67-be12-4a30-8cfa-e7a7984502d8} + {0a68efaf-487a-47e5-92b5-3beac081e6bc} - {f48a3939-1196-4379-a28c-527a4ed5f1a8} + {d7518485-54a4-4574-902b-971150a25244} diff --git a/Foundation/samples/LineEndingConverter/LineEndingConverter_x64_vs120.vcxproj b/Foundation/samples/LineEndingConverter/LineEndingConverter_x64_vs120.vcxproj index 2951cd50e..7f5fd6ac8 100644 --- a/Foundation/samples/LineEndingConverter/LineEndingConverter_x64_vs120.vcxproj +++ b/Foundation/samples/LineEndingConverter/LineEndingConverter_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\LineEndingConverter\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\LineEndingConverter\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\LineEndingConverter\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\LineEndingConverter\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\LineEndingConverter\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\LineEndingConverter\$(Configuration)\ false diff --git a/Foundation/samples/LineEndingConverter/LineEndingConverter_x64_vs120.vcxproj.filters b/Foundation/samples/LineEndingConverter/LineEndingConverter_x64_vs120.vcxproj.filters index ad4f15fda..cef844027 100644 --- a/Foundation/samples/LineEndingConverter/LineEndingConverter_x64_vs120.vcxproj.filters +++ b/Foundation/samples/LineEndingConverter/LineEndingConverter_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {19c55a78-e14c-4726-83db-00fe33cdf523} + {247b58b2-ee19-43f6-97d6-3f060de17a47} - {66b18c8d-fc05-42a8-910f-825b2b5ca079} + {64fd10ef-5deb-46cd-8a7c-3a60b5339054} diff --git a/Foundation/samples/LineEndingConverter/LineEndingConverter_x64_vs90.vcproj b/Foundation/samples/LineEndingConverter/LineEndingConverter_x64_vs90.vcproj index 751fe648f..151628380 100644 --- a/Foundation/samples/LineEndingConverter/LineEndingConverter_x64_vs90.vcproj +++ b/Foundation/samples/LineEndingConverter/LineEndingConverter_x64_vs90.vcproj @@ -3,7 +3,7 @@ Name="LineEndingConverter" Version="9.00" ProjectType="Visual C++" - ProjectGUID="{A5639B95-211B-36F1-994E-F05361C18EBF}" + ProjectGUID="{354BBE76-D088-3931-940C-797F514D2E40}" RootNamespace="LineEndingConverter" Keyword="Win32Proj"> @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\LogRotation\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\LogRotation\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\LogRotation\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\LogRotation\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\LogRotation\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\LogRotation\$(Platform)\$(Configuration)\ false diff --git a/Foundation/samples/LogRotation/LogRotation_WEC2013_vs110.vcxproj.filters b/Foundation/samples/LogRotation/LogRotation_WEC2013_vs110.vcxproj.filters index 58fa7bd03..ecbd23313 100644 --- a/Foundation/samples/LogRotation/LogRotation_WEC2013_vs110.vcxproj.filters +++ b/Foundation/samples/LogRotation/LogRotation_WEC2013_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {4191009c-85ca-444e-a7e4-a4628927b42f} + {46db5289-8eb9-48f5-80bb-d6d5c36d8b23} - {9e010c39-fe9d-46e3-8043-f125051e8168} + {c05b93fd-2b24-42f8-a429-9104ffe4c69e} diff --git a/Foundation/samples/LogRotation/LogRotation_WEC2013_vs120.vcxproj b/Foundation/samples/LogRotation/LogRotation_WEC2013_vs120.vcxproj index 1507cf7d2..df52b4fa1 100644 --- a/Foundation/samples/LogRotation/LogRotation_WEC2013_vs120.vcxproj +++ b/Foundation/samples/LogRotation/LogRotation_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\LogRotation\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\LogRotation\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\LogRotation\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\LogRotation\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\LogRotation\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\LogRotation\$(Platform)\$(Configuration)\ false diff --git a/Foundation/samples/LogRotation/LogRotation_WEC2013_vs120.vcxproj.filters b/Foundation/samples/LogRotation/LogRotation_WEC2013_vs120.vcxproj.filters index d59351bd9..239b5e5ab 100644 --- a/Foundation/samples/LogRotation/LogRotation_WEC2013_vs120.vcxproj.filters +++ b/Foundation/samples/LogRotation/LogRotation_WEC2013_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {642064d1-d48d-43a6-8c47-33e9c4b29a3e} + {e291092c-8286-42e9-8111-bba3c00af7db} - {d5dbbb7c-2676-43ba-97cb-c2705d71e5cf} + {a9f09edc-fb61-42ec-9668-b78c6e38493e} diff --git a/Foundation/samples/LogRotation/LogRotation_vs100.vcxproj b/Foundation/samples/LogRotation/LogRotation_vs100.vcxproj index cd2aad23f..73de653c1 100644 --- a/Foundation/samples/LogRotation/LogRotation_vs100.vcxproj +++ b/Foundation/samples/LogRotation/LogRotation_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\LogRotation\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\LogRotation\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\LogRotation\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\LogRotation\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\LogRotation\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\LogRotation\$(Configuration)\ false LogRotationd LogRotationd @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\LogRotationd.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\LogRotationd.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\LogRotationd.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Foundation/samples/LogRotation/LogRotation_vs100.vcxproj.filters b/Foundation/samples/LogRotation/LogRotation_vs100.vcxproj.filters index 21f6aaef2..7df99e56d 100644 --- a/Foundation/samples/LogRotation/LogRotation_vs100.vcxproj.filters +++ b/Foundation/samples/LogRotation/LogRotation_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {4df10ff8-f281-4887-8c99-9d78d593161a} + {def93e55-57f8-4cf2-bb10-adaa47d2bd52} - {a040d90a-ca03-4dac-88a7-c0bfe94fab39} + {af97b267-d905-45b5-94d0-7224c3b57b32} diff --git a/Foundation/samples/LogRotation/LogRotation_vs110.vcxproj b/Foundation/samples/LogRotation/LogRotation_vs110.vcxproj index 59d370b3a..2fae80b83 100644 --- a/Foundation/samples/LogRotation/LogRotation_vs110.vcxproj +++ b/Foundation/samples/LogRotation/LogRotation_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\LogRotation\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\LogRotation\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\LogRotation\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\LogRotation\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\LogRotation\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\LogRotation\$(Configuration)\ false diff --git a/Foundation/samples/LogRotation/LogRotation_vs110.vcxproj.filters b/Foundation/samples/LogRotation/LogRotation_vs110.vcxproj.filters index fa24edbc1..1f6a61494 100644 --- a/Foundation/samples/LogRotation/LogRotation_vs110.vcxproj.filters +++ b/Foundation/samples/LogRotation/LogRotation_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {98d6dacf-7427-4696-b678-f7b17701a254} + {3397caa4-4fb2-4db6-a5ed-9728d0b7f09b} - {8cfc9d07-aa0b-4880-9464-4996d7d2f0b5} + {1dcd4592-7b0e-498c-8c70-1013472f65e5} diff --git a/Foundation/samples/LogRotation/LogRotation_vs120.vcxproj b/Foundation/samples/LogRotation/LogRotation_vs120.vcxproj index d69445075..55b52733a 100644 --- a/Foundation/samples/LogRotation/LogRotation_vs120.vcxproj +++ b/Foundation/samples/LogRotation/LogRotation_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\LogRotation\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\LogRotation\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\LogRotation\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\LogRotation\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\LogRotation\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\LogRotation\$(Configuration)\ false diff --git a/Foundation/samples/LogRotation/LogRotation_vs120.vcxproj.filters b/Foundation/samples/LogRotation/LogRotation_vs120.vcxproj.filters index 5b7fcfc5a..aa444621c 100644 --- a/Foundation/samples/LogRotation/LogRotation_vs120.vcxproj.filters +++ b/Foundation/samples/LogRotation/LogRotation_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {4389845f-d62b-4934-87dc-6687ad84c149} + {364eefee-fe00-4ea0-a7d3-4a65639a8767} - {98d51c85-1ca1-4771-a9b5-052086cf82f2} + {fa610114-60bb-4d2a-9ab5-1c7c6f1fd326} diff --git a/Foundation/samples/LogRotation/LogRotation_vs71.vcproj b/Foundation/samples/LogRotation/LogRotation_vs71.vcproj index 5e0db52d9..79d122cde 100644 --- a/Foundation/samples/LogRotation/LogRotation_vs71.vcproj +++ b/Foundation/samples/LogRotation/LogRotation_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\LogRotation\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\LogRotation\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\LogRotation\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\LogRotation\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\LogRotation\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\LogRotation\$(Configuration)\ false LogRotationd LogRotationd @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\LogRotationd.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\LogRotationd.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\LogRotationd.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Foundation/samples/LogRotation/LogRotation_x64_vs100.vcxproj.filters b/Foundation/samples/LogRotation/LogRotation_x64_vs100.vcxproj.filters index 882257f80..c4a03b4e4 100644 --- a/Foundation/samples/LogRotation/LogRotation_x64_vs100.vcxproj.filters +++ b/Foundation/samples/LogRotation/LogRotation_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {1640356e-3918-4b23-b17d-d8e79274cebc} + {539684aa-922e-4da4-88f8-d2be92e0d75b} - {480aebe7-3be1-4f3b-8504-17015ad0fd13} + {1d63fc64-0370-474f-8f80-2b9e5b22dbd5} diff --git a/Foundation/samples/LogRotation/LogRotation_x64_vs110.vcxproj b/Foundation/samples/LogRotation/LogRotation_x64_vs110.vcxproj index 750fd02a5..c815cc0bf 100644 --- a/Foundation/samples/LogRotation/LogRotation_x64_vs110.vcxproj +++ b/Foundation/samples/LogRotation/LogRotation_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\LogRotation\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\LogRotation\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\LogRotation\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\LogRotation\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\LogRotation\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\LogRotation\$(Configuration)\ false diff --git a/Foundation/samples/LogRotation/LogRotation_x64_vs110.vcxproj.filters b/Foundation/samples/LogRotation/LogRotation_x64_vs110.vcxproj.filters index 8d7723e31..0a98ca091 100644 --- a/Foundation/samples/LogRotation/LogRotation_x64_vs110.vcxproj.filters +++ b/Foundation/samples/LogRotation/LogRotation_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {1f98e023-9eb7-433c-92ea-6f089b95dc0b} + {f9bfe5f8-b3ce-44b1-a8e9-d250d7aefc2b} - {2c847719-33eb-4740-a600-6d4ada336b0f} + {9411e777-a443-4a56-b3e6-0f2eeb5c2c1f} diff --git a/Foundation/samples/LogRotation/LogRotation_x64_vs120.vcxproj b/Foundation/samples/LogRotation/LogRotation_x64_vs120.vcxproj index e5c360ec6..2af532d41 100644 --- a/Foundation/samples/LogRotation/LogRotation_x64_vs120.vcxproj +++ b/Foundation/samples/LogRotation/LogRotation_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\LogRotation\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\LogRotation\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\LogRotation\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\LogRotation\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\LogRotation\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\LogRotation\$(Configuration)\ false diff --git a/Foundation/samples/LogRotation/LogRotation_x64_vs120.vcxproj.filters b/Foundation/samples/LogRotation/LogRotation_x64_vs120.vcxproj.filters index 76a244eb3..a6eb34f6f 100644 --- a/Foundation/samples/LogRotation/LogRotation_x64_vs120.vcxproj.filters +++ b/Foundation/samples/LogRotation/LogRotation_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {0995c7d6-e5b5-43e5-a6c7-2c783e8f50cf} + {5f87af88-f4ca-48d8-a254-462908afe18b} - {4a088de7-3bea-451e-9678-bbce5fe5c3a1} + {5d4c417a-0187-4eeb-8cbd-c20ef811c259} diff --git a/Foundation/samples/LogRotation/LogRotation_x64_vs90.vcproj b/Foundation/samples/LogRotation/LogRotation_x64_vs90.vcproj index a08641a64..128da2fc8 100644 --- a/Foundation/samples/LogRotation/LogRotation_x64_vs90.vcproj +++ b/Foundation/samples/LogRotation/LogRotation_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\Logger\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\Logger\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\Logger\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\Logger\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\Logger\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\Logger\$(Platform)\$(Configuration)\ false diff --git a/Foundation/samples/Logger/Logger_WEC2013_vs110.vcxproj.filters b/Foundation/samples/Logger/Logger_WEC2013_vs110.vcxproj.filters index 297313a05..1b94721af 100644 --- a/Foundation/samples/Logger/Logger_WEC2013_vs110.vcxproj.filters +++ b/Foundation/samples/Logger/Logger_WEC2013_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {cffdafd9-99f9-4f1d-99ac-e448128bedbb} + {1b2c9709-c9f6-4105-9244-0b3f8226ca10} - {f25dca44-745c-454c-8f84-5a113ce3bfbc} + {f8704f0f-622b-47d4-acc8-4b608ddd6058} diff --git a/Foundation/samples/Logger/Logger_WEC2013_vs120.vcxproj b/Foundation/samples/Logger/Logger_WEC2013_vs120.vcxproj index 1230c78bd..5242044ca 100644 --- a/Foundation/samples/Logger/Logger_WEC2013_vs120.vcxproj +++ b/Foundation/samples/Logger/Logger_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\Logger\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\Logger\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\Logger\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\Logger\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\Logger\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\Logger\$(Platform)\$(Configuration)\ false diff --git a/Foundation/samples/Logger/Logger_WEC2013_vs120.vcxproj.filters b/Foundation/samples/Logger/Logger_WEC2013_vs120.vcxproj.filters index 6d104cedc..f3c4a0952 100644 --- a/Foundation/samples/Logger/Logger_WEC2013_vs120.vcxproj.filters +++ b/Foundation/samples/Logger/Logger_WEC2013_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {799e0aae-c20f-4e9b-bc9c-38249a6f5a3e} + {8baa05f7-dca0-453c-8af8-8262a4840dd8} - {f0d28a21-b6b8-4f66-b1b2-f42eae4096f4} + {0d0117a5-dd8c-43c4-bf3d-616014e85d89} diff --git a/Foundation/samples/Logger/Logger_vs100.vcxproj b/Foundation/samples/Logger/Logger_vs100.vcxproj index bbfe15be3..0733f4111 100644 --- a/Foundation/samples/Logger/Logger_vs100.vcxproj +++ b/Foundation/samples/Logger/Logger_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\Logger\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\Logger\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\Logger\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\Logger\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\Logger\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\Logger\$(Configuration)\ false Loggerd Loggerd @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\Loggerd.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\Loggerd.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\Loggerd.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Foundation/samples/Logger/Logger_vs100.vcxproj.filters b/Foundation/samples/Logger/Logger_vs100.vcxproj.filters index b37210481..ac36eadd5 100644 --- a/Foundation/samples/Logger/Logger_vs100.vcxproj.filters +++ b/Foundation/samples/Logger/Logger_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {bd257fd0-72f1-478a-aac5-b1fc101a2cb2} + {7ed58370-f856-4027-9273-8c7e6fef6859} - {c6618494-cfec-474e-b3cc-b71a565ebbff} + {4fc06b97-49cd-4019-a983-8bef37505d3b} diff --git a/Foundation/samples/Logger/Logger_vs110.vcxproj b/Foundation/samples/Logger/Logger_vs110.vcxproj index 506b799d2..7f45d1ef3 100644 --- a/Foundation/samples/Logger/Logger_vs110.vcxproj +++ b/Foundation/samples/Logger/Logger_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\Logger\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\Logger\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\Logger\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\Logger\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\Logger\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\Logger\$(Configuration)\ false diff --git a/Foundation/samples/Logger/Logger_vs110.vcxproj.filters b/Foundation/samples/Logger/Logger_vs110.vcxproj.filters index 2f1220ffa..87ea3f777 100644 --- a/Foundation/samples/Logger/Logger_vs110.vcxproj.filters +++ b/Foundation/samples/Logger/Logger_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {492ec904-8967-44af-8f6d-762d640cb438} + {5b0c4616-8f43-4878-afa1-36654811fd38} - {8f76fbe5-0b54-4c63-9634-1e64dfebabeb} + {52a4e7d0-e430-44c1-9a22-4541878f0516} diff --git a/Foundation/samples/Logger/Logger_vs120.vcxproj b/Foundation/samples/Logger/Logger_vs120.vcxproj index 15a1b409c..8a6e4a78a 100644 --- a/Foundation/samples/Logger/Logger_vs120.vcxproj +++ b/Foundation/samples/Logger/Logger_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\Logger\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\Logger\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\Logger\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\Logger\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\Logger\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\Logger\$(Configuration)\ false diff --git a/Foundation/samples/Logger/Logger_vs120.vcxproj.filters b/Foundation/samples/Logger/Logger_vs120.vcxproj.filters index bf75c5a3d..08e5bde65 100644 --- a/Foundation/samples/Logger/Logger_vs120.vcxproj.filters +++ b/Foundation/samples/Logger/Logger_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {2df63519-3e9f-4a3d-b705-e31d13776260} + {8839ec59-f7a0-44ec-aef7-1ec70b349729} - {7f238cdb-bf1a-4dce-b848-f5beaa6423de} + {b9b2fc1b-229d-4637-a719-6d4043651f6b} diff --git a/Foundation/samples/Logger/Logger_vs71.vcproj b/Foundation/samples/Logger/Logger_vs71.vcproj index 3b0ff8e11..ad482ca7e 100644 --- a/Foundation/samples/Logger/Logger_vs71.vcproj +++ b/Foundation/samples/Logger/Logger_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\Logger\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\Logger\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Logger\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Logger\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\Logger\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\Logger\$(Configuration)\ false Loggerd Loggerd @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\Loggerd.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\Loggerd.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\Loggerd.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Foundation/samples/Logger/Logger_x64_vs100.vcxproj.filters b/Foundation/samples/Logger/Logger_x64_vs100.vcxproj.filters index ddf4fca1b..fd702fe14 100644 --- a/Foundation/samples/Logger/Logger_x64_vs100.vcxproj.filters +++ b/Foundation/samples/Logger/Logger_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {044f3b18-1886-4842-b798-100a58308543} + {83646725-da86-4aa0-9445-977ff684d0e5} - {b661d702-5564-4c7c-aeeb-c5ccbdd7f240} + {c52c1b37-779e-44a8-85af-acb7b01755ae} diff --git a/Foundation/samples/Logger/Logger_x64_vs110.vcxproj b/Foundation/samples/Logger/Logger_x64_vs110.vcxproj index 2a1e02dc0..f4dc02b4d 100644 --- a/Foundation/samples/Logger/Logger_x64_vs110.vcxproj +++ b/Foundation/samples/Logger/Logger_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\Logger\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\Logger\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Logger\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Logger\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\Logger\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\Logger\$(Configuration)\ false diff --git a/Foundation/samples/Logger/Logger_x64_vs110.vcxproj.filters b/Foundation/samples/Logger/Logger_x64_vs110.vcxproj.filters index 581ca6521..ff9658a65 100644 --- a/Foundation/samples/Logger/Logger_x64_vs110.vcxproj.filters +++ b/Foundation/samples/Logger/Logger_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {2cdf1f09-20da-4f3f-b0c9-d5f8757a9e86} + {c6049f5d-6228-496b-ae95-23f2e75694bb} - {db9feb49-fab5-4e9b-9342-a9f3e1789e13} + {b4b864e3-459d-4417-b94b-0262574cb488} diff --git a/Foundation/samples/Logger/Logger_x64_vs120.vcxproj b/Foundation/samples/Logger/Logger_x64_vs120.vcxproj index ca473fbff..8c53fff2b 100644 --- a/Foundation/samples/Logger/Logger_x64_vs120.vcxproj +++ b/Foundation/samples/Logger/Logger_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\Logger\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\Logger\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Logger\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Logger\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\Logger\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\Logger\$(Configuration)\ false diff --git a/Foundation/samples/Logger/Logger_x64_vs120.vcxproj.filters b/Foundation/samples/Logger/Logger_x64_vs120.vcxproj.filters index 3dcc3ee9b..4d3411df6 100644 --- a/Foundation/samples/Logger/Logger_x64_vs120.vcxproj.filters +++ b/Foundation/samples/Logger/Logger_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {4397a5ab-572f-4b0d-9dc3-2b1da8fece3b} + {2c81cc7e-d076-400a-862c-3bf167bfa697} - {74716ce9-a3f7-4a98-8e50-284dce87ce54} + {42b6afcb-73b6-4d95-be08-82b34a62fabf} diff --git a/Foundation/samples/Logger/Logger_x64_vs90.vcproj b/Foundation/samples/Logger/Logger_x64_vs90.vcproj index 875ab112f..ce5c383c5 100644 --- a/Foundation/samples/Logger/Logger_x64_vs90.vcproj +++ b/Foundation/samples/Logger/Logger_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\NotificationQueue\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\NotificationQueue\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\NotificationQueue\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\NotificationQueue\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\NotificationQueue\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\NotificationQueue\$(Platform)\$(Configuration)\ false diff --git a/Foundation/samples/NotificationQueue/NotificationQueue_WEC2013_vs110.vcxproj.filters b/Foundation/samples/NotificationQueue/NotificationQueue_WEC2013_vs110.vcxproj.filters index 48636eeb1..713b73240 100644 --- a/Foundation/samples/NotificationQueue/NotificationQueue_WEC2013_vs110.vcxproj.filters +++ b/Foundation/samples/NotificationQueue/NotificationQueue_WEC2013_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {80b4e6d9-5360-4028-8512-97f688ba2c7b} + {70c28a42-ea42-4e4b-914d-9f800fd796e9} - {2be31c41-88f4-432c-98ec-8cea4c5561fd} + {54fd38a6-1223-4c38-a66a-f5262ff1ca3a} diff --git a/Foundation/samples/NotificationQueue/NotificationQueue_WEC2013_vs120.vcxproj b/Foundation/samples/NotificationQueue/NotificationQueue_WEC2013_vs120.vcxproj index 6e7a14e44..0d70fc6be 100644 --- a/Foundation/samples/NotificationQueue/NotificationQueue_WEC2013_vs120.vcxproj +++ b/Foundation/samples/NotificationQueue/NotificationQueue_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\NotificationQueue\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\NotificationQueue\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\NotificationQueue\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\NotificationQueue\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\NotificationQueue\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\NotificationQueue\$(Platform)\$(Configuration)\ false diff --git a/Foundation/samples/NotificationQueue/NotificationQueue_WEC2013_vs120.vcxproj.filters b/Foundation/samples/NotificationQueue/NotificationQueue_WEC2013_vs120.vcxproj.filters index 1bded7e2e..cbed6929e 100644 --- a/Foundation/samples/NotificationQueue/NotificationQueue_WEC2013_vs120.vcxproj.filters +++ b/Foundation/samples/NotificationQueue/NotificationQueue_WEC2013_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {037fc5fb-84fc-4d9a-8624-2f0580aad9cb} + {1c516fe3-bcf2-481a-abde-152841cd726a} - {99a4a011-ce81-48b7-8f19-51bc2b33f6b3} + {ae4712bd-dff4-4aa7-9a24-477e72b22c67} diff --git a/Foundation/samples/NotificationQueue/NotificationQueue_vs100.vcxproj b/Foundation/samples/NotificationQueue/NotificationQueue_vs100.vcxproj index 2e5cebd58..05ebf3143 100644 --- a/Foundation/samples/NotificationQueue/NotificationQueue_vs100.vcxproj +++ b/Foundation/samples/NotificationQueue/NotificationQueue_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\NotificationQueue\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\NotificationQueue\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\NotificationQueue\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\NotificationQueue\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\NotificationQueue\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\NotificationQueue\$(Configuration)\ false NotificationQueued NotificationQueued @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\NotificationQueued.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\NotificationQueued.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\NotificationQueued.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Foundation/samples/NotificationQueue/NotificationQueue_vs100.vcxproj.filters b/Foundation/samples/NotificationQueue/NotificationQueue_vs100.vcxproj.filters index f43cb3311..b73e2edb9 100644 --- a/Foundation/samples/NotificationQueue/NotificationQueue_vs100.vcxproj.filters +++ b/Foundation/samples/NotificationQueue/NotificationQueue_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {25d2f7d2-ea3f-4a46-9e45-82cec28fdc3a} + {d40f8d8c-8a91-46d1-ae29-ae212ede402c} - {95a9e8d7-89a5-4da0-a80d-5becf239ec6c} + {51ac3c8d-3c93-4a5a-9383-8ae5e62ed348} diff --git a/Foundation/samples/NotificationQueue/NotificationQueue_vs110.vcxproj b/Foundation/samples/NotificationQueue/NotificationQueue_vs110.vcxproj index 584070e82..4a29ce37e 100644 --- a/Foundation/samples/NotificationQueue/NotificationQueue_vs110.vcxproj +++ b/Foundation/samples/NotificationQueue/NotificationQueue_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\NotificationQueue\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\NotificationQueue\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\NotificationQueue\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\NotificationQueue\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\NotificationQueue\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\NotificationQueue\$(Configuration)\ false diff --git a/Foundation/samples/NotificationQueue/NotificationQueue_vs110.vcxproj.filters b/Foundation/samples/NotificationQueue/NotificationQueue_vs110.vcxproj.filters index 037e5c404..923f71f9e 100644 --- a/Foundation/samples/NotificationQueue/NotificationQueue_vs110.vcxproj.filters +++ b/Foundation/samples/NotificationQueue/NotificationQueue_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {fa7838c7-d068-4dcc-8fd8-74af50f57bc7} + {9cc22f6d-85f6-4a66-9a68-8a3ccbd121d1} - {2d34177f-3235-4cf7-9c0c-6a0e9359f7ab} + {30f6a345-8f1e-4f1c-a1fa-fc0722f64eb2} diff --git a/Foundation/samples/NotificationQueue/NotificationQueue_vs120.vcxproj b/Foundation/samples/NotificationQueue/NotificationQueue_vs120.vcxproj index c653c2610..8a05c003d 100644 --- a/Foundation/samples/NotificationQueue/NotificationQueue_vs120.vcxproj +++ b/Foundation/samples/NotificationQueue/NotificationQueue_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\NotificationQueue\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\NotificationQueue\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\NotificationQueue\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\NotificationQueue\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\NotificationQueue\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\NotificationQueue\$(Configuration)\ false diff --git a/Foundation/samples/NotificationQueue/NotificationQueue_vs120.vcxproj.filters b/Foundation/samples/NotificationQueue/NotificationQueue_vs120.vcxproj.filters index 4e9bb6999..6e5555382 100644 --- a/Foundation/samples/NotificationQueue/NotificationQueue_vs120.vcxproj.filters +++ b/Foundation/samples/NotificationQueue/NotificationQueue_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {21c90c02-faef-4345-8a9d-37a219b3fea0} + {631e7dd1-c5a9-48e4-8821-8baeac4934c6} - {0f837308-4497-4a60-80e4-21351bed8c73} + {73ee3afd-ed02-4781-951a-a7a70cd0c54b} diff --git a/Foundation/samples/NotificationQueue/NotificationQueue_vs71.vcproj b/Foundation/samples/NotificationQueue/NotificationQueue_vs71.vcproj index 33ae0d196..bd644b113 100644 --- a/Foundation/samples/NotificationQueue/NotificationQueue_vs71.vcproj +++ b/Foundation/samples/NotificationQueue/NotificationQueue_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\NotificationQueue\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\NotificationQueue\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\NotificationQueue\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\NotificationQueue\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\NotificationQueue\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\NotificationQueue\$(Configuration)\ false NotificationQueued NotificationQueued @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\NotificationQueued.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\NotificationQueued.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\NotificationQueued.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Foundation/samples/NotificationQueue/NotificationQueue_x64_vs100.vcxproj.filters b/Foundation/samples/NotificationQueue/NotificationQueue_x64_vs100.vcxproj.filters index 871c87e01..430c13645 100644 --- a/Foundation/samples/NotificationQueue/NotificationQueue_x64_vs100.vcxproj.filters +++ b/Foundation/samples/NotificationQueue/NotificationQueue_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {c56e33e2-8161-4d11-9bc2-693da7866669} + {d8ea0d2f-aa86-476a-8400-03f506d6ed21} - {b3b9b4b7-7ee5-41fa-a5fd-1ce9c080d9f7} + {c33ea2a3-3a9d-4dae-9911-75c119b3c73a} diff --git a/Foundation/samples/NotificationQueue/NotificationQueue_x64_vs110.vcxproj b/Foundation/samples/NotificationQueue/NotificationQueue_x64_vs110.vcxproj index b64cbb12b..8ed346ca3 100644 --- a/Foundation/samples/NotificationQueue/NotificationQueue_x64_vs110.vcxproj +++ b/Foundation/samples/NotificationQueue/NotificationQueue_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\NotificationQueue\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\NotificationQueue\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\NotificationQueue\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\NotificationQueue\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\NotificationQueue\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\NotificationQueue\$(Configuration)\ false diff --git a/Foundation/samples/NotificationQueue/NotificationQueue_x64_vs110.vcxproj.filters b/Foundation/samples/NotificationQueue/NotificationQueue_x64_vs110.vcxproj.filters index 4de125b91..e2fcf5adc 100644 --- a/Foundation/samples/NotificationQueue/NotificationQueue_x64_vs110.vcxproj.filters +++ b/Foundation/samples/NotificationQueue/NotificationQueue_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {7050435b-1779-4e4a-a58f-74b580273856} + {0c656894-f7c6-4b36-9364-c043c4254118} - {a2864e84-a321-4dbd-a08a-4310448ec7f8} + {5c1b0539-21b6-47df-b7bf-2598c75c4773} diff --git a/Foundation/samples/NotificationQueue/NotificationQueue_x64_vs120.vcxproj b/Foundation/samples/NotificationQueue/NotificationQueue_x64_vs120.vcxproj index 542627c48..20af45b6f 100644 --- a/Foundation/samples/NotificationQueue/NotificationQueue_x64_vs120.vcxproj +++ b/Foundation/samples/NotificationQueue/NotificationQueue_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\NotificationQueue\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\NotificationQueue\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\NotificationQueue\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\NotificationQueue\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\NotificationQueue\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\NotificationQueue\$(Configuration)\ false diff --git a/Foundation/samples/NotificationQueue/NotificationQueue_x64_vs120.vcxproj.filters b/Foundation/samples/NotificationQueue/NotificationQueue_x64_vs120.vcxproj.filters index 1c933a8a3..d30556229 100644 --- a/Foundation/samples/NotificationQueue/NotificationQueue_x64_vs120.vcxproj.filters +++ b/Foundation/samples/NotificationQueue/NotificationQueue_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {8c81b6d2-87d3-4916-987a-b6ecedcdf978} + {21cd8478-5e14-4a2a-bfdf-fa45a7138b1a} - {e60d6b33-1740-40e1-bc11-fe0e5fbf4165} + {3cf683e9-c23c-440d-83a7-dba9239aa768} diff --git a/Foundation/samples/NotificationQueue/NotificationQueue_x64_vs90.vcproj b/Foundation/samples/NotificationQueue/NotificationQueue_x64_vs90.vcproj index 98ce36506..b8122a741 100644 --- a/Foundation/samples/NotificationQueue/NotificationQueue_x64_vs90.vcproj +++ b/Foundation/samples/NotificationQueue/NotificationQueue_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\StringTokenizer\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\StringTokenizer\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\StringTokenizer\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\StringTokenizer\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\StringTokenizer\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\StringTokenizer\$(Platform)\$(Configuration)\ false diff --git a/Foundation/samples/StringTokenizer/StringTokenizer_WEC2013_vs110.vcxproj.filters b/Foundation/samples/StringTokenizer/StringTokenizer_WEC2013_vs110.vcxproj.filters index 8c08ee0a3..245d8e336 100644 --- a/Foundation/samples/StringTokenizer/StringTokenizer_WEC2013_vs110.vcxproj.filters +++ b/Foundation/samples/StringTokenizer/StringTokenizer_WEC2013_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {0b92dea0-76b8-42a9-86cc-8eec6ac79ba2} + {0d2bddea-d984-46da-94eb-a42a66f5d3e3} - {f1cab198-145a-4802-8c05-4ddf2a35d779} + {9b3cd830-c9e8-463d-b7c1-706f03df5b84} diff --git a/Foundation/samples/StringTokenizer/StringTokenizer_WEC2013_vs120.vcxproj b/Foundation/samples/StringTokenizer/StringTokenizer_WEC2013_vs120.vcxproj index 74eb73edb..533c3a780 100644 --- a/Foundation/samples/StringTokenizer/StringTokenizer_WEC2013_vs120.vcxproj +++ b/Foundation/samples/StringTokenizer/StringTokenizer_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\StringTokenizer\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\StringTokenizer\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\StringTokenizer\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\StringTokenizer\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\StringTokenizer\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\StringTokenizer\$(Platform)\$(Configuration)\ false diff --git a/Foundation/samples/StringTokenizer/StringTokenizer_WEC2013_vs120.vcxproj.filters b/Foundation/samples/StringTokenizer/StringTokenizer_WEC2013_vs120.vcxproj.filters index 1a8497344..fb0423ff0 100644 --- a/Foundation/samples/StringTokenizer/StringTokenizer_WEC2013_vs120.vcxproj.filters +++ b/Foundation/samples/StringTokenizer/StringTokenizer_WEC2013_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {35b9f3b5-4553-484f-9a57-e265a24533e2} + {dd38df96-9ce6-4854-b3ca-501c5874a821} - {15c4e062-846f-4977-86b1-1a388881af96} + {515d54ca-b4d5-485a-9c6d-9b80893ab418} diff --git a/Foundation/samples/StringTokenizer/StringTokenizer_vs100.vcxproj b/Foundation/samples/StringTokenizer/StringTokenizer_vs100.vcxproj index 651e8d319..86ae29160 100644 --- a/Foundation/samples/StringTokenizer/StringTokenizer_vs100.vcxproj +++ b/Foundation/samples/StringTokenizer/StringTokenizer_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\StringTokenizer\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\StringTokenizer\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\StringTokenizer\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\StringTokenizer\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\StringTokenizer\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\StringTokenizer\$(Configuration)\ false StringTokenizerd StringTokenizerd @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\StringTokenizerd.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\StringTokenizerd.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\StringTokenizerd.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Foundation/samples/StringTokenizer/StringTokenizer_vs100.vcxproj.filters b/Foundation/samples/StringTokenizer/StringTokenizer_vs100.vcxproj.filters index 26beb1cdb..56a0c443f 100644 --- a/Foundation/samples/StringTokenizer/StringTokenizer_vs100.vcxproj.filters +++ b/Foundation/samples/StringTokenizer/StringTokenizer_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {fd3fe834-d1e6-4ceb-905c-bece33140028} + {c0abbff1-c7eb-4de1-8fd0-9ed280d413ed} - {a61ad2b2-f39b-4398-9855-f960a6a6cb9f} + {86443c2e-8e93-490c-9394-81ded67e7bed} diff --git a/Foundation/samples/StringTokenizer/StringTokenizer_vs110.vcxproj b/Foundation/samples/StringTokenizer/StringTokenizer_vs110.vcxproj index 1b1cb19e1..b853fd48a 100644 --- a/Foundation/samples/StringTokenizer/StringTokenizer_vs110.vcxproj +++ b/Foundation/samples/StringTokenizer/StringTokenizer_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\StringTokenizer\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\StringTokenizer\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\StringTokenizer\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\StringTokenizer\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\StringTokenizer\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\StringTokenizer\$(Configuration)\ false diff --git a/Foundation/samples/StringTokenizer/StringTokenizer_vs110.vcxproj.filters b/Foundation/samples/StringTokenizer/StringTokenizer_vs110.vcxproj.filters index e40962a40..bbd4757ec 100644 --- a/Foundation/samples/StringTokenizer/StringTokenizer_vs110.vcxproj.filters +++ b/Foundation/samples/StringTokenizer/StringTokenizer_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {a57a38da-65aa-48ae-9324-d02d6b389ae0} + {e8c5206e-4207-42ef-aeaa-62493e157e71} - {4d8f78ee-7c9e-4aa6-b780-31c0a36ca574} + {4b872273-5a31-44ee-a098-0732dc189f7d} diff --git a/Foundation/samples/StringTokenizer/StringTokenizer_vs120.vcxproj b/Foundation/samples/StringTokenizer/StringTokenizer_vs120.vcxproj index 4cbf2b236..7b1e4bbfd 100644 --- a/Foundation/samples/StringTokenizer/StringTokenizer_vs120.vcxproj +++ b/Foundation/samples/StringTokenizer/StringTokenizer_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\StringTokenizer\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\StringTokenizer\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\StringTokenizer\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\StringTokenizer\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\StringTokenizer\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\StringTokenizer\$(Configuration)\ false diff --git a/Foundation/samples/StringTokenizer/StringTokenizer_vs120.vcxproj.filters b/Foundation/samples/StringTokenizer/StringTokenizer_vs120.vcxproj.filters index 2ea024815..82141a56a 100644 --- a/Foundation/samples/StringTokenizer/StringTokenizer_vs120.vcxproj.filters +++ b/Foundation/samples/StringTokenizer/StringTokenizer_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {cda93266-7b45-49d4-b8a6-6f7cba47b403} + {c9b465fc-62fd-4634-b9a1-3e3d7bcb98b7} - {94f8f918-cc80-406f-923e-cfaabffe596c} + {8aca67a7-bbb8-4ee6-a32f-40c61e7cd2ae} diff --git a/Foundation/samples/StringTokenizer/StringTokenizer_vs71.vcproj b/Foundation/samples/StringTokenizer/StringTokenizer_vs71.vcproj index 0a50a0ee4..dc8cc28ca 100644 --- a/Foundation/samples/StringTokenizer/StringTokenizer_vs71.vcproj +++ b/Foundation/samples/StringTokenizer/StringTokenizer_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\StringTokenizer\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\StringTokenizer\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\StringTokenizer\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\StringTokenizer\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\StringTokenizer\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\StringTokenizer\$(Configuration)\ false StringTokenizerd StringTokenizerd @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\StringTokenizerd.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\StringTokenizerd.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\StringTokenizerd.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Foundation/samples/StringTokenizer/StringTokenizer_x64_vs100.vcxproj.filters b/Foundation/samples/StringTokenizer/StringTokenizer_x64_vs100.vcxproj.filters index 01d03e67a..730280d24 100644 --- a/Foundation/samples/StringTokenizer/StringTokenizer_x64_vs100.vcxproj.filters +++ b/Foundation/samples/StringTokenizer/StringTokenizer_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {cd5c9255-6b45-4c63-9851-85794be40829} + {203dfa27-b2f5-41e9-9de6-5f7443e66ab9} - {78f07176-03e9-439e-8b4f-85b3e61d09a0} + {42a68b66-00dc-4ab0-9707-5bb7bd1f9e1c} diff --git a/Foundation/samples/StringTokenizer/StringTokenizer_x64_vs110.vcxproj b/Foundation/samples/StringTokenizer/StringTokenizer_x64_vs110.vcxproj index 2bfd6ce0e..8e11c8736 100644 --- a/Foundation/samples/StringTokenizer/StringTokenizer_x64_vs110.vcxproj +++ b/Foundation/samples/StringTokenizer/StringTokenizer_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\StringTokenizer\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\StringTokenizer\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\StringTokenizer\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\StringTokenizer\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\StringTokenizer\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\StringTokenizer\$(Configuration)\ false diff --git a/Foundation/samples/StringTokenizer/StringTokenizer_x64_vs110.vcxproj.filters b/Foundation/samples/StringTokenizer/StringTokenizer_x64_vs110.vcxproj.filters index ce8c5ca4b..fbef7f2a3 100644 --- a/Foundation/samples/StringTokenizer/StringTokenizer_x64_vs110.vcxproj.filters +++ b/Foundation/samples/StringTokenizer/StringTokenizer_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {eb971473-c82c-430f-a0a1-2883ac987e5c} + {6dbaa8c7-ce41-4af0-9189-9edd8eb20c60} - {2da5bbc7-458e-4328-905c-c3060d5c481f} + {eba89cb7-02cb-4b02-a041-d7f55046fa71} diff --git a/Foundation/samples/StringTokenizer/StringTokenizer_x64_vs120.vcxproj b/Foundation/samples/StringTokenizer/StringTokenizer_x64_vs120.vcxproj index 1161f7240..cbcba3a64 100644 --- a/Foundation/samples/StringTokenizer/StringTokenizer_x64_vs120.vcxproj +++ b/Foundation/samples/StringTokenizer/StringTokenizer_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\StringTokenizer\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\StringTokenizer\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\StringTokenizer\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\StringTokenizer\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\StringTokenizer\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\StringTokenizer\$(Configuration)\ false diff --git a/Foundation/samples/StringTokenizer/StringTokenizer_x64_vs120.vcxproj.filters b/Foundation/samples/StringTokenizer/StringTokenizer_x64_vs120.vcxproj.filters index 1ea2acdbb..8ec6423ff 100644 --- a/Foundation/samples/StringTokenizer/StringTokenizer_x64_vs120.vcxproj.filters +++ b/Foundation/samples/StringTokenizer/StringTokenizer_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {d69886ff-751f-44ef-a96c-30573bfc90c2} + {ae5fabd3-5dc5-4db6-8177-a3a8840f903d} - {359851aa-1e28-4c17-9ebf-b8e1ac6fbce7} + {93ab0c81-a25d-4d59-ada6-a40d75bbbc3a} diff --git a/Foundation/samples/StringTokenizer/StringTokenizer_x64_vs90.vcproj b/Foundation/samples/StringTokenizer/StringTokenizer_x64_vs90.vcproj index 3a5d80525..50671fa7d 100644 --- a/Foundation/samples/StringTokenizer/StringTokenizer_x64_vs90.vcproj +++ b/Foundation/samples/StringTokenizer/StringTokenizer_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\Timer\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\Timer\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\Timer\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\Timer\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\Timer\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\Timer\$(Platform)\$(Configuration)\ false diff --git a/Foundation/samples/Timer/Timer_WEC2013_vs110.vcxproj.filters b/Foundation/samples/Timer/Timer_WEC2013_vs110.vcxproj.filters index bdf2431a1..8d7059693 100644 --- a/Foundation/samples/Timer/Timer_WEC2013_vs110.vcxproj.filters +++ b/Foundation/samples/Timer/Timer_WEC2013_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {543866f1-8d34-4d0e-ace6-0a6206862855} + {cb791b71-0ef0-4c28-bd5c-18cc731b331e} - {9c5e1278-1b54-4333-b2ef-3eee40647d4c} + {67379315-1e4e-417e-8fc8-61ea25f448a8} diff --git a/Foundation/samples/Timer/Timer_WEC2013_vs120.vcxproj b/Foundation/samples/Timer/Timer_WEC2013_vs120.vcxproj index e3151b104..51a3e3009 100644 --- a/Foundation/samples/Timer/Timer_WEC2013_vs120.vcxproj +++ b/Foundation/samples/Timer/Timer_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\Timer\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\Timer\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\Timer\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\Timer\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\Timer\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\Timer\$(Platform)\$(Configuration)\ false diff --git a/Foundation/samples/Timer/Timer_WEC2013_vs120.vcxproj.filters b/Foundation/samples/Timer/Timer_WEC2013_vs120.vcxproj.filters index db2d472ad..9b8edd87f 100644 --- a/Foundation/samples/Timer/Timer_WEC2013_vs120.vcxproj.filters +++ b/Foundation/samples/Timer/Timer_WEC2013_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {1ee59129-3580-49d7-85d7-5dc8c9fe4a60} + {0d5ec567-4417-4abd-b863-0f2c7a3869af} - {bad4ea3b-c67b-46d5-a17c-c8e424a4a493} + {28a95244-4c25-46fb-b38d-12e99133cd80} diff --git a/Foundation/samples/Timer/Timer_vs100.vcxproj b/Foundation/samples/Timer/Timer_vs100.vcxproj index 0dd007a1d..889cfb30c 100644 --- a/Foundation/samples/Timer/Timer_vs100.vcxproj +++ b/Foundation/samples/Timer/Timer_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\Timer\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\Timer\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\Timer\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\Timer\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\Timer\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\Timer\$(Configuration)\ false Timerd Timerd @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\Timerd.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\Timerd.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\Timerd.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Foundation/samples/Timer/Timer_vs100.vcxproj.filters b/Foundation/samples/Timer/Timer_vs100.vcxproj.filters index 98f33b689..167f9f211 100644 --- a/Foundation/samples/Timer/Timer_vs100.vcxproj.filters +++ b/Foundation/samples/Timer/Timer_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {4b56ae06-e6bb-4004-9825-243222730901} + {64608b0e-404d-4c7f-a436-4bb9efe5cd71} - {1a2c4c0d-7298-4d9e-bcca-2f3599dd71d1} + {6ad10b9d-0e2b-4821-a48a-dfaea4e2740c} diff --git a/Foundation/samples/Timer/Timer_vs110.vcxproj b/Foundation/samples/Timer/Timer_vs110.vcxproj index 9e47f1ae7..5d73b466a 100644 --- a/Foundation/samples/Timer/Timer_vs110.vcxproj +++ b/Foundation/samples/Timer/Timer_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\Timer\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\Timer\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\Timer\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\Timer\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\Timer\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\Timer\$(Configuration)\ false diff --git a/Foundation/samples/Timer/Timer_vs110.vcxproj.filters b/Foundation/samples/Timer/Timer_vs110.vcxproj.filters index c63eb8f78..fe297b189 100644 --- a/Foundation/samples/Timer/Timer_vs110.vcxproj.filters +++ b/Foundation/samples/Timer/Timer_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {d7f71718-ab4e-4984-85df-b27bf495a364} + {f867a16f-cd60-456b-879b-be8c9e5d335a} - {569e2613-7df4-4e02-8dc3-fc5dd5bbe70c} + {d241a671-6f31-49e8-9788-c8d2c36dafb2} diff --git a/Foundation/samples/Timer/Timer_vs120.vcxproj b/Foundation/samples/Timer/Timer_vs120.vcxproj index fb7612fee..055e22e15 100644 --- a/Foundation/samples/Timer/Timer_vs120.vcxproj +++ b/Foundation/samples/Timer/Timer_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\Timer\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\Timer\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\Timer\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\Timer\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\Timer\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\Timer\$(Configuration)\ false diff --git a/Foundation/samples/Timer/Timer_vs120.vcxproj.filters b/Foundation/samples/Timer/Timer_vs120.vcxproj.filters index af1f7756f..bab483b4a 100644 --- a/Foundation/samples/Timer/Timer_vs120.vcxproj.filters +++ b/Foundation/samples/Timer/Timer_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {9856d213-2e27-4c4c-ae6b-c3424763f128} + {6067e2c8-51ba-488c-a657-476c968e6dc3} - {836d6f69-77b4-40e4-bfcd-12247b2ac4c8} + {4fb8c3c4-cf4e-42a1-887c-cdc18a2099c3} diff --git a/Foundation/samples/Timer/Timer_vs71.vcproj b/Foundation/samples/Timer/Timer_vs71.vcproj index 2a2812f1c..9b7733433 100644 --- a/Foundation/samples/Timer/Timer_vs71.vcproj +++ b/Foundation/samples/Timer/Timer_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\Timer\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\Timer\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Timer\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Timer\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\Timer\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\Timer\$(Configuration)\ false Timerd Timerd @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\Timerd.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\Timerd.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\Timerd.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Foundation/samples/Timer/Timer_x64_vs100.vcxproj.filters b/Foundation/samples/Timer/Timer_x64_vs100.vcxproj.filters index 90f00e445..9f594527e 100644 --- a/Foundation/samples/Timer/Timer_x64_vs100.vcxproj.filters +++ b/Foundation/samples/Timer/Timer_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {8841b266-37b7-44ad-bc87-c9ffa23cad7e} + {40d30a82-a5bc-44e9-8c6e-3816e068dbb3} - {2e3dee57-616a-4025-8755-b67ca299b143} + {c6a03e52-0fd8-4fe4-a8f6-73682f996734} diff --git a/Foundation/samples/Timer/Timer_x64_vs110.vcxproj b/Foundation/samples/Timer/Timer_x64_vs110.vcxproj index 416f3808d..7cb3ccadf 100644 --- a/Foundation/samples/Timer/Timer_x64_vs110.vcxproj +++ b/Foundation/samples/Timer/Timer_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\Timer\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\Timer\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Timer\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Timer\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\Timer\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\Timer\$(Configuration)\ false diff --git a/Foundation/samples/Timer/Timer_x64_vs110.vcxproj.filters b/Foundation/samples/Timer/Timer_x64_vs110.vcxproj.filters index 2c63977af..39bdf9937 100644 --- a/Foundation/samples/Timer/Timer_x64_vs110.vcxproj.filters +++ b/Foundation/samples/Timer/Timer_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {567bca99-8e09-47df-95bd-9e5906ded043} + {4c3a31f0-9354-422e-ab87-b7cde05d7b45} - {3db998b9-a900-49eb-84e1-2c45ec089316} + {1383ec08-841b-4f27-be2f-411ef523ce0b} diff --git a/Foundation/samples/Timer/Timer_x64_vs120.vcxproj b/Foundation/samples/Timer/Timer_x64_vs120.vcxproj index 98759eff6..a065e96d9 100644 --- a/Foundation/samples/Timer/Timer_x64_vs120.vcxproj +++ b/Foundation/samples/Timer/Timer_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\Timer\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\Timer\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Timer\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Timer\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\Timer\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\Timer\$(Configuration)\ false diff --git a/Foundation/samples/Timer/Timer_x64_vs120.vcxproj.filters b/Foundation/samples/Timer/Timer_x64_vs120.vcxproj.filters index 5af932333..cf8d898b9 100644 --- a/Foundation/samples/Timer/Timer_x64_vs120.vcxproj.filters +++ b/Foundation/samples/Timer/Timer_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {75520a3d-c345-4f46-a686-de35a0fb09b0} + {e647c6a4-3a5b-4505-8e46-b21226ef9109} - {989abffb-2112-4f48-bc1e-89c4a4b450cb} + {d9274e37-95ea-4cad-bc66-be78fb208c4d} diff --git a/Foundation/samples/Timer/Timer_x64_vs90.vcproj b/Foundation/samples/Timer/Timer_x64_vs90.vcproj index fda190b4b..d4c1bb802 100644 --- a/Foundation/samples/Timer/Timer_x64_vs90.vcproj +++ b/Foundation/samples/Timer/Timer_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\URI\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\URI\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\URI\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\URI\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\URI\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\URI\$(Platform)\$(Configuration)\ false diff --git a/Foundation/samples/URI/URI_WEC2013_vs110.vcxproj.filters b/Foundation/samples/URI/URI_WEC2013_vs110.vcxproj.filters index 604257ba4..5d2b34821 100644 --- a/Foundation/samples/URI/URI_WEC2013_vs110.vcxproj.filters +++ b/Foundation/samples/URI/URI_WEC2013_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {e24a4339-f062-487d-95bb-a96a2db05ff2} + {3e181a78-6d97-4495-822d-d48f93a5a9ae} - {821ad237-1691-4f33-baa0-d1b1f73bee8a} + {3f939e08-203d-4b76-9894-a280cd69cada} diff --git a/Foundation/samples/URI/URI_WEC2013_vs120.vcxproj b/Foundation/samples/URI/URI_WEC2013_vs120.vcxproj index 4e13edd76..5701b78af 100644 --- a/Foundation/samples/URI/URI_WEC2013_vs120.vcxproj +++ b/Foundation/samples/URI/URI_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\URI\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\URI\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\URI\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\URI\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\URI\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\URI\$(Platform)\$(Configuration)\ false diff --git a/Foundation/samples/URI/URI_WEC2013_vs120.vcxproj.filters b/Foundation/samples/URI/URI_WEC2013_vs120.vcxproj.filters index d75594cad..2231cde33 100644 --- a/Foundation/samples/URI/URI_WEC2013_vs120.vcxproj.filters +++ b/Foundation/samples/URI/URI_WEC2013_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {290780a5-1f61-4d95-81f4-77c71563ca9b} + {33c3b6a7-86b6-42d7-ab40-05767e71036b} - {9e733a84-5093-400e-a14c-549ef4e98e92} + {5d01eda9-a39e-40a3-af48-3cf4605f0083} diff --git a/Foundation/samples/URI/URI_vs100.vcxproj b/Foundation/samples/URI/URI_vs100.vcxproj index 7923779d7..ca908552b 100644 --- a/Foundation/samples/URI/URI_vs100.vcxproj +++ b/Foundation/samples/URI/URI_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\URI\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\URI\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\URI\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\URI\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\URI\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\URI\$(Configuration)\ false URId URId @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\URId.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\URId.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\URId.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Foundation/samples/URI/URI_vs100.vcxproj.filters b/Foundation/samples/URI/URI_vs100.vcxproj.filters index c73fea724..4265c8992 100644 --- a/Foundation/samples/URI/URI_vs100.vcxproj.filters +++ b/Foundation/samples/URI/URI_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {6fc9179b-7e7a-4499-9d3e-82de76436c5d} + {6d2fe5fa-e37a-45b4-ae00-4b3e519d329a} - {a741ff9a-2567-4fb7-b2da-bdcd8836054b} + {d735dfc0-bc98-4ebc-aecd-541023dccdf9} diff --git a/Foundation/samples/URI/URI_vs110.vcxproj b/Foundation/samples/URI/URI_vs110.vcxproj index 2ac2f687b..eeb4abb78 100644 --- a/Foundation/samples/URI/URI_vs110.vcxproj +++ b/Foundation/samples/URI/URI_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\URI\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\URI\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\URI\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\URI\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\URI\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\URI\$(Configuration)\ false diff --git a/Foundation/samples/URI/URI_vs110.vcxproj.filters b/Foundation/samples/URI/URI_vs110.vcxproj.filters index 29853b089..c5e4696e4 100644 --- a/Foundation/samples/URI/URI_vs110.vcxproj.filters +++ b/Foundation/samples/URI/URI_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {f591dce8-f105-49dc-93f4-79f7f10d64e0} + {77c658d9-a08d-4c81-92bc-878d4b41171f} - {7c7180ff-2b2a-410a-805e-8de6e2bfdb93} + {23c1cb19-cf7e-445a-aee1-2bc9cefe3df7} diff --git a/Foundation/samples/URI/URI_vs120.vcxproj b/Foundation/samples/URI/URI_vs120.vcxproj index 4947135aa..3e1d60952 100644 --- a/Foundation/samples/URI/URI_vs120.vcxproj +++ b/Foundation/samples/URI/URI_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\URI\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\URI\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\URI\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\URI\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\URI\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\URI\$(Configuration)\ false diff --git a/Foundation/samples/URI/URI_vs120.vcxproj.filters b/Foundation/samples/URI/URI_vs120.vcxproj.filters index 317de8aa6..f55f774ae 100644 --- a/Foundation/samples/URI/URI_vs120.vcxproj.filters +++ b/Foundation/samples/URI/URI_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {912c6135-eae8-4ca6-8e95-024ead286d60} + {8e3afcf8-978e-4183-b32c-e575fd3a2664} - {93b5345c-edef-4901-8e37-46da9e05da80} + {0674d36a-8d64-4806-81f1-4a7bac28ff5e} diff --git a/Foundation/samples/URI/URI_vs71.vcproj b/Foundation/samples/URI/URI_vs71.vcproj index dabbf8b81..72cad192f 100644 --- a/Foundation/samples/URI/URI_vs71.vcproj +++ b/Foundation/samples/URI/URI_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\URI\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\URI\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\URI\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\URI\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\URI\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\URI\$(Configuration)\ false URId URId @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\URId.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\URId.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\URId.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Foundation/samples/URI/URI_x64_vs100.vcxproj.filters b/Foundation/samples/URI/URI_x64_vs100.vcxproj.filters index f4aff31e8..3d9f93ddc 100644 --- a/Foundation/samples/URI/URI_x64_vs100.vcxproj.filters +++ b/Foundation/samples/URI/URI_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {f400640f-a3ee-425f-add2-5773d036918a} + {e3561c2f-e93a-4e79-b3ba-2773d8ebc572} - {eeec594b-d18f-42b5-afb7-8f69f616ea55} + {1d2fe54f-c93d-4b8e-86c5-e0d6ed694be9} diff --git a/Foundation/samples/URI/URI_x64_vs110.vcxproj b/Foundation/samples/URI/URI_x64_vs110.vcxproj index 0c497faf0..23ce29942 100644 --- a/Foundation/samples/URI/URI_x64_vs110.vcxproj +++ b/Foundation/samples/URI/URI_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\URI\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\URI\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\URI\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\URI\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\URI\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\URI\$(Configuration)\ false diff --git a/Foundation/samples/URI/URI_x64_vs110.vcxproj.filters b/Foundation/samples/URI/URI_x64_vs110.vcxproj.filters index 93c3e7fbb..5e1ee6bc4 100644 --- a/Foundation/samples/URI/URI_x64_vs110.vcxproj.filters +++ b/Foundation/samples/URI/URI_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {83f922fc-5e22-44bf-8487-75192a592c3f} + {8cd0f720-c998-460f-8e32-0e6c0427897d} - {d0f4e1bb-b040-4efd-ada9-d36a471edff7} + {a8243cdd-4f12-4e8c-9730-908df68954e2} diff --git a/Foundation/samples/URI/URI_x64_vs120.vcxproj b/Foundation/samples/URI/URI_x64_vs120.vcxproj index fb1c4952f..064f9a133 100644 --- a/Foundation/samples/URI/URI_x64_vs120.vcxproj +++ b/Foundation/samples/URI/URI_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\URI\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\URI\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\URI\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\URI\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\URI\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\URI\$(Configuration)\ false diff --git a/Foundation/samples/URI/URI_x64_vs120.vcxproj.filters b/Foundation/samples/URI/URI_x64_vs120.vcxproj.filters index 870427df5..1539380ef 100644 --- a/Foundation/samples/URI/URI_x64_vs120.vcxproj.filters +++ b/Foundation/samples/URI/URI_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {6e14164b-6940-4637-97ef-3c472fb1e909} + {9f519c87-e0e8-4fd8-a9de-4ddfde1797ab} - {41b057aa-4b59-48b3-9814-219375975094} + {7ab68970-b173-4449-9a36-adbfa9c5c2fc} diff --git a/Foundation/samples/URI/URI_x64_vs90.vcproj b/Foundation/samples/URI/URI_x64_vs90.vcproj index 4bd093042..5d676dcd2 100644 --- a/Foundation/samples/URI/URI_x64_vs90.vcproj +++ b/Foundation/samples/URI/URI_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\base64decode\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\base64decode\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\base64decode\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\base64decode\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\base64decode\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\base64decode\$(Platform)\$(Configuration)\ false diff --git a/Foundation/samples/base64decode/base64decode_WEC2013_vs110.vcxproj.filters b/Foundation/samples/base64decode/base64decode_WEC2013_vs110.vcxproj.filters index 90625048d..274a6ec8e 100644 --- a/Foundation/samples/base64decode/base64decode_WEC2013_vs110.vcxproj.filters +++ b/Foundation/samples/base64decode/base64decode_WEC2013_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {61e339b9-8c15-4ccd-8bb1-fb4961bc684f} + {2f1f7f38-4a61-4e1a-83cc-84f4b3905f2b} - {ffc09786-4a74-488b-b294-38e057886420} + {968b5bee-e200-4697-8642-eeb828f3619d} diff --git a/Foundation/samples/base64decode/base64decode_WEC2013_vs120.vcxproj b/Foundation/samples/base64decode/base64decode_WEC2013_vs120.vcxproj index d2d9ef6fa..77e01fbf8 100644 --- a/Foundation/samples/base64decode/base64decode_WEC2013_vs120.vcxproj +++ b/Foundation/samples/base64decode/base64decode_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\base64decode\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\base64decode\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\base64decode\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\base64decode\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\base64decode\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\base64decode\$(Platform)\$(Configuration)\ false diff --git a/Foundation/samples/base64decode/base64decode_WEC2013_vs120.vcxproj.filters b/Foundation/samples/base64decode/base64decode_WEC2013_vs120.vcxproj.filters index 442de2e2a..43e687c0c 100644 --- a/Foundation/samples/base64decode/base64decode_WEC2013_vs120.vcxproj.filters +++ b/Foundation/samples/base64decode/base64decode_WEC2013_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {449f7a8f-8724-4fd2-bf18-bacad73d2d48} + {fdc11534-4637-4843-a837-7445ab0f6e00} - {4d90d8f4-96eb-4cc6-b166-1e7a9300fcbb} + {1910a18d-0000-4c77-a1f6-d24ba08fe253} diff --git a/Foundation/samples/base64decode/base64decode_vs100.vcxproj b/Foundation/samples/base64decode/base64decode_vs100.vcxproj index 49e665982..c76e3cdb3 100644 --- a/Foundation/samples/base64decode/base64decode_vs100.vcxproj +++ b/Foundation/samples/base64decode/base64decode_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\base64decode\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\base64decode\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\base64decode\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\base64decode\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\base64decode\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\base64decode\$(Configuration)\ false base64decoded base64decoded @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\base64decoded.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\base64decoded.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\base64decoded.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Foundation/samples/base64decode/base64decode_vs100.vcxproj.filters b/Foundation/samples/base64decode/base64decode_vs100.vcxproj.filters index a72e47008..856efcd97 100644 --- a/Foundation/samples/base64decode/base64decode_vs100.vcxproj.filters +++ b/Foundation/samples/base64decode/base64decode_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {0267088b-c834-4db8-8547-d2bb6605b978} + {637d0a7f-fa3c-482c-afa3-58d187added8} - {e7536d04-1d67-47d7-9361-d14aea851a5c} + {47acae3a-3aed-44ba-ae5e-6e3e8fb215f1} diff --git a/Foundation/samples/base64decode/base64decode_vs110.vcxproj b/Foundation/samples/base64decode/base64decode_vs110.vcxproj index 6597c60b9..b2c25ba9e 100644 --- a/Foundation/samples/base64decode/base64decode_vs110.vcxproj +++ b/Foundation/samples/base64decode/base64decode_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\base64decode\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\base64decode\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\base64decode\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\base64decode\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\base64decode\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\base64decode\$(Configuration)\ false diff --git a/Foundation/samples/base64decode/base64decode_vs110.vcxproj.filters b/Foundation/samples/base64decode/base64decode_vs110.vcxproj.filters index 5f021aae4..f89fb2b66 100644 --- a/Foundation/samples/base64decode/base64decode_vs110.vcxproj.filters +++ b/Foundation/samples/base64decode/base64decode_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {f03b1a94-171c-48aa-b5b8-a6ad01d4eea9} + {83a97141-9a4b-41f4-b815-a0170d1a58f3} - {4c14b4bb-b5c8-49c8-885b-63cabdff0448} + {878a920a-2a26-49d4-9200-6a1e5c686c03} diff --git a/Foundation/samples/base64decode/base64decode_vs120.vcxproj b/Foundation/samples/base64decode/base64decode_vs120.vcxproj index 5f13a35bd..9be66dc29 100644 --- a/Foundation/samples/base64decode/base64decode_vs120.vcxproj +++ b/Foundation/samples/base64decode/base64decode_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\base64decode\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\base64decode\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\base64decode\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\base64decode\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\base64decode\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\base64decode\$(Configuration)\ false diff --git a/Foundation/samples/base64decode/base64decode_vs120.vcxproj.filters b/Foundation/samples/base64decode/base64decode_vs120.vcxproj.filters index 6eaa73843..1eb7a8541 100644 --- a/Foundation/samples/base64decode/base64decode_vs120.vcxproj.filters +++ b/Foundation/samples/base64decode/base64decode_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {2000757b-1fd5-47ee-ac16-adb9b0c25f51} + {9de02a09-ea6b-4472-a37b-1ada0f5b605b} - {21bb1edb-34d3-4c7a-9c61-83da55f87ae6} + {e82d7d91-9c17-4419-bed4-f6db79aba4e2} diff --git a/Foundation/samples/base64decode/base64decode_vs71.vcproj b/Foundation/samples/base64decode/base64decode_vs71.vcproj index 30cb576ad..e38a07205 100644 --- a/Foundation/samples/base64decode/base64decode_vs71.vcproj +++ b/Foundation/samples/base64decode/base64decode_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\base64decode\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\base64decode\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\base64decode\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\base64decode\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\base64decode\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\base64decode\$(Configuration)\ false base64decoded base64decoded @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\base64decoded.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\base64decoded.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\base64decoded.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Foundation/samples/base64decode/base64decode_x64_vs100.vcxproj.filters b/Foundation/samples/base64decode/base64decode_x64_vs100.vcxproj.filters index b88418cef..71f678b09 100644 --- a/Foundation/samples/base64decode/base64decode_x64_vs100.vcxproj.filters +++ b/Foundation/samples/base64decode/base64decode_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {0f62ddfc-394a-48e4-8440-3ec6cd66766e} + {380ac235-231b-42b6-8b42-3605224ffa4f} - {716a7fa5-01cb-474b-ab57-44b30fa2515d} + {12e68d64-9a7d-4e3d-a7b5-48ef1f470771} diff --git a/Foundation/samples/base64decode/base64decode_x64_vs110.vcxproj b/Foundation/samples/base64decode/base64decode_x64_vs110.vcxproj index 2f32cda85..390c12c3e 100644 --- a/Foundation/samples/base64decode/base64decode_x64_vs110.vcxproj +++ b/Foundation/samples/base64decode/base64decode_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\base64decode\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\base64decode\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\base64decode\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\base64decode\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\base64decode\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\base64decode\$(Configuration)\ false diff --git a/Foundation/samples/base64decode/base64decode_x64_vs110.vcxproj.filters b/Foundation/samples/base64decode/base64decode_x64_vs110.vcxproj.filters index 1ce7b4da3..c02235554 100644 --- a/Foundation/samples/base64decode/base64decode_x64_vs110.vcxproj.filters +++ b/Foundation/samples/base64decode/base64decode_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {d444b586-76a1-4f71-9f98-4a419486d6fc} + {623b5eb9-5a95-4c65-8664-544399c8d661} - {1182da18-3fc8-437f-b4d2-77993038a144} + {1030fa1a-d3cc-4853-838b-caccc6ec5017} diff --git a/Foundation/samples/base64decode/base64decode_x64_vs120.vcxproj b/Foundation/samples/base64decode/base64decode_x64_vs120.vcxproj index ea2e11020..a37706ba9 100644 --- a/Foundation/samples/base64decode/base64decode_x64_vs120.vcxproj +++ b/Foundation/samples/base64decode/base64decode_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\base64decode\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\base64decode\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\base64decode\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\base64decode\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\base64decode\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\base64decode\$(Configuration)\ false diff --git a/Foundation/samples/base64decode/base64decode_x64_vs120.vcxproj.filters b/Foundation/samples/base64decode/base64decode_x64_vs120.vcxproj.filters index 82f1c48da..8e55bd5f3 100644 --- a/Foundation/samples/base64decode/base64decode_x64_vs120.vcxproj.filters +++ b/Foundation/samples/base64decode/base64decode_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {7b96cd1e-1929-4395-926b-42a5e3a66293} + {74e7b013-c653-481e-88b4-183948f8d0d2} - {8c63cc87-cab8-49a1-a91b-57d355b49f65} + {bd15fb48-e1fa-461c-b4a5-65adaee715b0} diff --git a/Foundation/samples/base64decode/base64decode_x64_vs90.vcproj b/Foundation/samples/base64decode/base64decode_x64_vs90.vcproj index 75cbfd9c1..84b67f698 100644 --- a/Foundation/samples/base64decode/base64decode_x64_vs90.vcproj +++ b/Foundation/samples/base64decode/base64decode_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\base64encode\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\base64encode\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\base64encode\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\base64encode\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\base64encode\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\base64encode\$(Platform)\$(Configuration)\ false diff --git a/Foundation/samples/base64encode/base64encode_WEC2013_vs110.vcxproj.filters b/Foundation/samples/base64encode/base64encode_WEC2013_vs110.vcxproj.filters index 3b46b76c5..5b6976314 100644 --- a/Foundation/samples/base64encode/base64encode_WEC2013_vs110.vcxproj.filters +++ b/Foundation/samples/base64encode/base64encode_WEC2013_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {f69aabe4-640e-4aa8-9c50-3f68cfe7f870} + {1d665f95-9adc-4a81-96a5-90dadc81b08b} - {b15aa8b9-84db-4b15-a29c-e191ead9325b} + {9af80dd0-7748-4951-ac3c-b4be5451f5cc} diff --git a/Foundation/samples/base64encode/base64encode_WEC2013_vs120.vcxproj b/Foundation/samples/base64encode/base64encode_WEC2013_vs120.vcxproj index d0eceace2..dd680ca3b 100644 --- a/Foundation/samples/base64encode/base64encode_WEC2013_vs120.vcxproj +++ b/Foundation/samples/base64encode/base64encode_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\base64encode\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\base64encode\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\base64encode\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\base64encode\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\base64encode\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\base64encode\$(Platform)\$(Configuration)\ false diff --git a/Foundation/samples/base64encode/base64encode_WEC2013_vs120.vcxproj.filters b/Foundation/samples/base64encode/base64encode_WEC2013_vs120.vcxproj.filters index cec98b0c3..1ae976d9d 100644 --- a/Foundation/samples/base64encode/base64encode_WEC2013_vs120.vcxproj.filters +++ b/Foundation/samples/base64encode/base64encode_WEC2013_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {73963b67-77cf-4b11-ae96-c27a75be9ec9} + {26eb2c45-fe56-4ab3-a791-e6b928c9a602} - {f3c617fc-2947-4f66-a3d8-54f5cc02ac40} + {e7bdf655-92ac-42e4-bc47-f7a207586ab3} diff --git a/Foundation/samples/base64encode/base64encode_vs100.vcxproj b/Foundation/samples/base64encode/base64encode_vs100.vcxproj index 6b50f9667..c9144b13f 100644 --- a/Foundation/samples/base64encode/base64encode_vs100.vcxproj +++ b/Foundation/samples/base64encode/base64encode_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\base64encode\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\base64encode\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\base64encode\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\base64encode\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\base64encode\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\base64encode\$(Configuration)\ false base64encoded base64encoded @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\base64encoded.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\base64encoded.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\base64encoded.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Foundation/samples/base64encode/base64encode_vs100.vcxproj.filters b/Foundation/samples/base64encode/base64encode_vs100.vcxproj.filters index a8adf857b..808ca6127 100644 --- a/Foundation/samples/base64encode/base64encode_vs100.vcxproj.filters +++ b/Foundation/samples/base64encode/base64encode_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {9812c4b1-3992-4da8-884c-5dc6a34b448e} + {d8a0e1a8-c8cf-4ece-a1eb-579ddcf49b62} - {3bc539ed-a635-4c62-a555-155aaa8b64dc} + {a5d2c4b6-bfab-4067-898d-050f49dcca3d} diff --git a/Foundation/samples/base64encode/base64encode_vs110.vcxproj b/Foundation/samples/base64encode/base64encode_vs110.vcxproj index 91286a909..4a8b0ceaa 100644 --- a/Foundation/samples/base64encode/base64encode_vs110.vcxproj +++ b/Foundation/samples/base64encode/base64encode_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\base64encode\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\base64encode\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\base64encode\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\base64encode\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\base64encode\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\base64encode\$(Configuration)\ false diff --git a/Foundation/samples/base64encode/base64encode_vs110.vcxproj.filters b/Foundation/samples/base64encode/base64encode_vs110.vcxproj.filters index f4fa636ef..bd11f8775 100644 --- a/Foundation/samples/base64encode/base64encode_vs110.vcxproj.filters +++ b/Foundation/samples/base64encode/base64encode_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {cf92b503-6ae0-4fad-b23d-8376633645e6} + {d37ea11a-5fdf-4e81-9969-4a9c7b65452c} - {dd56508c-1587-4b27-b1c1-d36438febd5d} + {27673f39-67ee-4112-b35b-77ba407d6d01} diff --git a/Foundation/samples/base64encode/base64encode_vs120.vcxproj b/Foundation/samples/base64encode/base64encode_vs120.vcxproj index cb71714b8..2d4cc6a4c 100644 --- a/Foundation/samples/base64encode/base64encode_vs120.vcxproj +++ b/Foundation/samples/base64encode/base64encode_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\base64encode\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\base64encode\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\base64encode\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\base64encode\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\base64encode\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\base64encode\$(Configuration)\ false diff --git a/Foundation/samples/base64encode/base64encode_vs120.vcxproj.filters b/Foundation/samples/base64encode/base64encode_vs120.vcxproj.filters index 7f0f3062c..2d2e56fc4 100644 --- a/Foundation/samples/base64encode/base64encode_vs120.vcxproj.filters +++ b/Foundation/samples/base64encode/base64encode_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {504739ba-b90a-49b1-8e46-d2e4bdfadf1c} + {759ea1d3-7037-42bb-95e6-94577ce7b069} - {15ebb724-1589-427c-af0c-bb191b47e701} + {40211950-52bb-4236-b4b0-5c7a3ce2a56b} diff --git a/Foundation/samples/base64encode/base64encode_vs71.vcproj b/Foundation/samples/base64encode/base64encode_vs71.vcproj index 052389a9f..0a9a2ac35 100644 --- a/Foundation/samples/base64encode/base64encode_vs71.vcproj +++ b/Foundation/samples/base64encode/base64encode_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\base64encode\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\base64encode\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\base64encode\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\base64encode\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\base64encode\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\base64encode\$(Configuration)\ false base64encoded base64encoded @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\base64encoded.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\base64encoded.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\base64encoded.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Foundation/samples/base64encode/base64encode_x64_vs100.vcxproj.filters b/Foundation/samples/base64encode/base64encode_x64_vs100.vcxproj.filters index 2a770aa1b..6afa4bfd9 100644 --- a/Foundation/samples/base64encode/base64encode_x64_vs100.vcxproj.filters +++ b/Foundation/samples/base64encode/base64encode_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {61b5212b-d743-4cbc-95ae-1573b4a75137} + {c79db64e-5780-4eb0-8b45-51a2136e20e1} - {43efe653-85ec-478f-9510-3cc3d44032fa} + {92d91e9c-8f45-4619-bbe8-a3e55206e561} diff --git a/Foundation/samples/base64encode/base64encode_x64_vs110.vcxproj b/Foundation/samples/base64encode/base64encode_x64_vs110.vcxproj index 2c5ecece5..f16d8b5ee 100644 --- a/Foundation/samples/base64encode/base64encode_x64_vs110.vcxproj +++ b/Foundation/samples/base64encode/base64encode_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\base64encode\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\base64encode\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\base64encode\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\base64encode\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\base64encode\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\base64encode\$(Configuration)\ false diff --git a/Foundation/samples/base64encode/base64encode_x64_vs110.vcxproj.filters b/Foundation/samples/base64encode/base64encode_x64_vs110.vcxproj.filters index 4a030bcdc..e5b6bf647 100644 --- a/Foundation/samples/base64encode/base64encode_x64_vs110.vcxproj.filters +++ b/Foundation/samples/base64encode/base64encode_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {f6f52fac-84d9-425b-89b9-21b0fa12725d} + {ad374006-bbe9-4aca-a309-c8dde7a55dc9} - {2f7c40e6-a384-4b55-afff-ead80ffad3c9} + {f658330d-af98-4260-90dc-aa36da5f498d} diff --git a/Foundation/samples/base64encode/base64encode_x64_vs120.vcxproj b/Foundation/samples/base64encode/base64encode_x64_vs120.vcxproj index f056921b5..e0ab403b4 100644 --- a/Foundation/samples/base64encode/base64encode_x64_vs120.vcxproj +++ b/Foundation/samples/base64encode/base64encode_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\base64encode\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\base64encode\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\base64encode\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\base64encode\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\base64encode\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\base64encode\$(Configuration)\ false diff --git a/Foundation/samples/base64encode/base64encode_x64_vs120.vcxproj.filters b/Foundation/samples/base64encode/base64encode_x64_vs120.vcxproj.filters index 7b706cb88..5372466f8 100644 --- a/Foundation/samples/base64encode/base64encode_x64_vs120.vcxproj.filters +++ b/Foundation/samples/base64encode/base64encode_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {807f3c94-7f4f-4930-80ae-9415cdbe24ec} + {29286b05-f2ad-4c9c-9465-47e2254b250d} - {33f606b4-c170-4a3d-afc4-e32b9ae2a560} + {42eaf92b-ae70-45b0-9a5d-7edcc072cd7a} diff --git a/Foundation/samples/base64encode/base64encode_x64_vs90.vcproj b/Foundation/samples/base64encode/base64encode_x64_vs90.vcproj index e05114bc5..d500f1d14 100644 --- a/Foundation/samples/base64encode/base64encode_x64_vs90.vcproj +++ b/Foundation/samples/base64encode/base64encode_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\deflate\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\deflate\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\deflate\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\deflate\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\deflate\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\deflate\$(Platform)\$(Configuration)\ false diff --git a/Foundation/samples/deflate/deflate_WEC2013_vs110.vcxproj.filters b/Foundation/samples/deflate/deflate_WEC2013_vs110.vcxproj.filters index d1ade33e7..a5e6f3b0e 100644 --- a/Foundation/samples/deflate/deflate_WEC2013_vs110.vcxproj.filters +++ b/Foundation/samples/deflate/deflate_WEC2013_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {554b98fb-d73f-4dfd-8599-8ebde264fbfd} + {27b41c04-4d96-44d2-a20e-7c034cb9acd4} - {eb819a23-47b0-4ed5-bb39-96b96d2cdb23} + {089add76-3a7c-486d-8b4f-5fa53d266a2b} diff --git a/Foundation/samples/deflate/deflate_WEC2013_vs120.vcxproj b/Foundation/samples/deflate/deflate_WEC2013_vs120.vcxproj index c8bd37a46..83d819f7f 100644 --- a/Foundation/samples/deflate/deflate_WEC2013_vs120.vcxproj +++ b/Foundation/samples/deflate/deflate_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\deflate\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\deflate\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\deflate\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\deflate\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\deflate\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\deflate\$(Platform)\$(Configuration)\ false diff --git a/Foundation/samples/deflate/deflate_WEC2013_vs120.vcxproj.filters b/Foundation/samples/deflate/deflate_WEC2013_vs120.vcxproj.filters index cd92d17c4..1173c0342 100644 --- a/Foundation/samples/deflate/deflate_WEC2013_vs120.vcxproj.filters +++ b/Foundation/samples/deflate/deflate_WEC2013_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {4a3aae2e-6b68-4fc0-a973-ee6db41d30cf} + {53c53e18-6fee-4ff5-99b7-0d5cd35292fa} - {161e2457-fd32-4a1a-a5b3-2d828a0f2bcb} + {cbee1892-358b-4954-bb4a-d43c4be94cc8} diff --git a/Foundation/samples/deflate/deflate_vs100.vcxproj b/Foundation/samples/deflate/deflate_vs100.vcxproj index c8228846f..c7e71023a 100644 --- a/Foundation/samples/deflate/deflate_vs100.vcxproj +++ b/Foundation/samples/deflate/deflate_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\deflate\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\deflate\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\deflate\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\deflate\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\deflate\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\deflate\$(Configuration)\ false deflated deflated @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\deflated.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\deflated.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\deflated.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Foundation/samples/deflate/deflate_vs100.vcxproj.filters b/Foundation/samples/deflate/deflate_vs100.vcxproj.filters index 51ea6a2a7..fc8a0d71b 100644 --- a/Foundation/samples/deflate/deflate_vs100.vcxproj.filters +++ b/Foundation/samples/deflate/deflate_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {96f855d8-1094-45e8-814b-1486bc064267} + {f6f5f626-05ca-4ab8-bbd9-06cc4f336d0e} - {bd66e93e-a7b5-4b10-9628-f1ba10f5fd60} + {4319ac9e-37c0-4a57-b7ee-038a7b12a8b8} diff --git a/Foundation/samples/deflate/deflate_vs110.vcxproj b/Foundation/samples/deflate/deflate_vs110.vcxproj index a3047d8b5..dd837a624 100644 --- a/Foundation/samples/deflate/deflate_vs110.vcxproj +++ b/Foundation/samples/deflate/deflate_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\deflate\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\deflate\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\deflate\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\deflate\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\deflate\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\deflate\$(Configuration)\ false diff --git a/Foundation/samples/deflate/deflate_vs110.vcxproj.filters b/Foundation/samples/deflate/deflate_vs110.vcxproj.filters index ab34c845f..f4c6abce1 100644 --- a/Foundation/samples/deflate/deflate_vs110.vcxproj.filters +++ b/Foundation/samples/deflate/deflate_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {c8bfcf9c-986a-4780-a8d0-62301c866388} + {933d1221-5b05-40a4-8e87-0f693d3b3879} - {19695a43-74c7-4bf1-9424-29efb676bc15} + {07509271-dcef-4bc5-80ba-70c775b53fcd} diff --git a/Foundation/samples/deflate/deflate_vs120.vcxproj b/Foundation/samples/deflate/deflate_vs120.vcxproj index d432c868a..8e3eee6fa 100644 --- a/Foundation/samples/deflate/deflate_vs120.vcxproj +++ b/Foundation/samples/deflate/deflate_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\deflate\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\deflate\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\deflate\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\deflate\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\deflate\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\deflate\$(Configuration)\ false diff --git a/Foundation/samples/deflate/deflate_vs120.vcxproj.filters b/Foundation/samples/deflate/deflate_vs120.vcxproj.filters index c6fc5d3b6..a6eee1226 100644 --- a/Foundation/samples/deflate/deflate_vs120.vcxproj.filters +++ b/Foundation/samples/deflate/deflate_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {324179c4-8bd8-4f91-98a9-2533efe4829c} + {fb148a6f-a085-4935-ae5e-0c59c2125cfb} - {d506a068-d90d-44a2-9f94-0bdfb2c296d3} + {7e4ee9a9-8217-435c-87a5-0d5849324a27} diff --git a/Foundation/samples/deflate/deflate_vs71.vcproj b/Foundation/samples/deflate/deflate_vs71.vcproj index cd88bd258..8b50d9dd9 100644 --- a/Foundation/samples/deflate/deflate_vs71.vcproj +++ b/Foundation/samples/deflate/deflate_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\deflate\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\deflate\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\deflate\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\deflate\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\deflate\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\deflate\$(Configuration)\ false deflated deflated @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\deflated.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\deflated.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\deflated.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Foundation/samples/deflate/deflate_x64_vs100.vcxproj.filters b/Foundation/samples/deflate/deflate_x64_vs100.vcxproj.filters index 33f93f241..49f2897e8 100644 --- a/Foundation/samples/deflate/deflate_x64_vs100.vcxproj.filters +++ b/Foundation/samples/deflate/deflate_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {1431d8f4-e921-4d62-8b7d-6bad3f07027e} + {45a7e371-6f8d-4837-b5e8-aea182019be7} - {25c6ba58-058e-474e-a1ad-6a4ac8836856} + {63b25eca-53b0-4d02-9fd4-e5e0cd4deee4} diff --git a/Foundation/samples/deflate/deflate_x64_vs110.vcxproj b/Foundation/samples/deflate/deflate_x64_vs110.vcxproj index d241a2445..3eea929bf 100644 --- a/Foundation/samples/deflate/deflate_x64_vs110.vcxproj +++ b/Foundation/samples/deflate/deflate_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\deflate\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\deflate\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\deflate\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\deflate\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\deflate\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\deflate\$(Configuration)\ false diff --git a/Foundation/samples/deflate/deflate_x64_vs110.vcxproj.filters b/Foundation/samples/deflate/deflate_x64_vs110.vcxproj.filters index c5c15cdba..cf0557017 100644 --- a/Foundation/samples/deflate/deflate_x64_vs110.vcxproj.filters +++ b/Foundation/samples/deflate/deflate_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {c1a7d356-ca05-4a9b-8a7b-b530d87a03c5} + {3210b04e-8a1b-4dae-b94b-94eb59ec1063} - {bfc18490-e64c-4cb7-ae80-71217a9c3777} + {bc45aa5e-366f-41e8-a8a9-d77f47708305} diff --git a/Foundation/samples/deflate/deflate_x64_vs120.vcxproj b/Foundation/samples/deflate/deflate_x64_vs120.vcxproj index dafe886bd..2d723c1fe 100644 --- a/Foundation/samples/deflate/deflate_x64_vs120.vcxproj +++ b/Foundation/samples/deflate/deflate_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\deflate\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\deflate\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\deflate\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\deflate\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\deflate\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\deflate\$(Configuration)\ false diff --git a/Foundation/samples/deflate/deflate_x64_vs120.vcxproj.filters b/Foundation/samples/deflate/deflate_x64_vs120.vcxproj.filters index 9fc5bbec6..1a4856b16 100644 --- a/Foundation/samples/deflate/deflate_x64_vs120.vcxproj.filters +++ b/Foundation/samples/deflate/deflate_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {e0711692-eecf-415e-ba0f-d718846582ff} + {ae42fee9-ecee-4268-b8e8-7ce2c27665ef} - {63cd8182-07b6-4946-93c4-ab708ab4b14d} + {6b978e55-0d2d-46d6-bb5c-5b88c2128975} diff --git a/Foundation/samples/deflate/deflate_x64_vs90.vcproj b/Foundation/samples/deflate/deflate_x64_vs90.vcproj index 621c62e93..0427f5a8b 100644 --- a/Foundation/samples/deflate/deflate_x64_vs90.vcproj +++ b/Foundation/samples/deflate/deflate_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\dir\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\dir\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\dir\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\dir\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\dir\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\dir\$(Platform)\$(Configuration)\ false diff --git a/Foundation/samples/dir/dir_WEC2013_vs110.vcxproj.filters b/Foundation/samples/dir/dir_WEC2013_vs110.vcxproj.filters index 8980fb8ce..e8a06c3d2 100644 --- a/Foundation/samples/dir/dir_WEC2013_vs110.vcxproj.filters +++ b/Foundation/samples/dir/dir_WEC2013_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {4855ae32-6f94-4b72-b0ad-7839216a9ecf} + {e6c697a2-c49f-4b92-89e7-b665944b68d8} - {5666c40a-d8fc-478c-90bd-c5b41823ab8d} + {54c75846-3c1f-45ef-a131-3e32a74aa104} diff --git a/Foundation/samples/dir/dir_WEC2013_vs120.vcxproj b/Foundation/samples/dir/dir_WEC2013_vs120.vcxproj index 6694f8164..fe5809f7f 100644 --- a/Foundation/samples/dir/dir_WEC2013_vs120.vcxproj +++ b/Foundation/samples/dir/dir_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\dir\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\dir\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\dir\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\dir\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\dir\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\dir\$(Platform)\$(Configuration)\ false diff --git a/Foundation/samples/dir/dir_WEC2013_vs120.vcxproj.filters b/Foundation/samples/dir/dir_WEC2013_vs120.vcxproj.filters index cf6568936..5c6650915 100644 --- a/Foundation/samples/dir/dir_WEC2013_vs120.vcxproj.filters +++ b/Foundation/samples/dir/dir_WEC2013_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {4929f888-bc2b-41a1-b13e-65e1990cf9dc} + {6dff9172-d4fb-4a62-8395-180812aec5e5} - {21f952b9-7fa0-4f30-ac5c-029f39a5e0d9} + {4bc3be17-67f0-4c05-b15b-3aae3f2401b1} diff --git a/Foundation/samples/dir/dir_vs100.vcxproj b/Foundation/samples/dir/dir_vs100.vcxproj index a1b9e33e6..80e2dd3ec 100644 --- a/Foundation/samples/dir/dir_vs100.vcxproj +++ b/Foundation/samples/dir/dir_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\dir\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\dir\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\dir\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\dir\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\dir\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\dir\$(Configuration)\ false dird dird @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\dird.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\dird.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\dird.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Foundation/samples/dir/dir_vs100.vcxproj.filters b/Foundation/samples/dir/dir_vs100.vcxproj.filters index 28c077b80..7d4730800 100644 --- a/Foundation/samples/dir/dir_vs100.vcxproj.filters +++ b/Foundation/samples/dir/dir_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {81cb1148-ed53-4d21-9e4e-40a1b8abb5d4} + {7debe766-8bc1-4e74-968d-b17ae9c46963} - {19b11bc7-0a39-4c4b-b3e6-d074f1cbc12f} + {1b9e5a01-efb7-4ac6-b054-cdd298a31192} diff --git a/Foundation/samples/dir/dir_vs110.vcxproj b/Foundation/samples/dir/dir_vs110.vcxproj index ecc62db0c..7d87a3f6c 100644 --- a/Foundation/samples/dir/dir_vs110.vcxproj +++ b/Foundation/samples/dir/dir_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\dir\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\dir\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\dir\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\dir\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\dir\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\dir\$(Configuration)\ false diff --git a/Foundation/samples/dir/dir_vs110.vcxproj.filters b/Foundation/samples/dir/dir_vs110.vcxproj.filters index f6a21ceb3..7fa1f1dc1 100644 --- a/Foundation/samples/dir/dir_vs110.vcxproj.filters +++ b/Foundation/samples/dir/dir_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {245d6d2e-9a2c-4974-adc7-8a726a2a77e4} + {119ca942-1dbd-414f-a9af-2de719cf5ee6} - {c52d6313-e006-4513-a5bb-ec75cc2808e5} + {59d128c9-ca98-448e-94dd-da31b86d23db} diff --git a/Foundation/samples/dir/dir_vs120.vcxproj b/Foundation/samples/dir/dir_vs120.vcxproj index 3f255f00c..9846a24b0 100644 --- a/Foundation/samples/dir/dir_vs120.vcxproj +++ b/Foundation/samples/dir/dir_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\dir\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\dir\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\dir\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\dir\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\dir\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\dir\$(Configuration)\ false diff --git a/Foundation/samples/dir/dir_vs120.vcxproj.filters b/Foundation/samples/dir/dir_vs120.vcxproj.filters index 98f953c92..c2c140788 100644 --- a/Foundation/samples/dir/dir_vs120.vcxproj.filters +++ b/Foundation/samples/dir/dir_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {bc5d51d2-3b90-4d44-8c47-fa2893863f6c} + {c9dfabaf-c788-4644-a6b8-63b268944559} - {be0a5051-7e22-46cf-bc11-0f9ed8af92af} + {44b69921-d5c9-47b4-aabc-c16790a9e3d6} diff --git a/Foundation/samples/dir/dir_vs71.vcproj b/Foundation/samples/dir/dir_vs71.vcproj index 78c26481e..077f11ae3 100644 --- a/Foundation/samples/dir/dir_vs71.vcproj +++ b/Foundation/samples/dir/dir_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\dir\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\dir\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\dir\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\dir\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\dir\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\dir\$(Configuration)\ false dird dird @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\dird.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\dird.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\dird.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Foundation/samples/dir/dir_x64_vs100.vcxproj.filters b/Foundation/samples/dir/dir_x64_vs100.vcxproj.filters index bf3df0db0..34f8d3449 100644 --- a/Foundation/samples/dir/dir_x64_vs100.vcxproj.filters +++ b/Foundation/samples/dir/dir_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {304c186c-7add-4688-a83d-cc8e4f8ce2be} + {aa9075b9-3f15-4abb-a7c2-1e207285f5d0} - {ab99160d-3bab-4a91-aa77-b64fd6b26624} + {fc395f50-dbc4-4e0c-8311-3ddfd778e08e} diff --git a/Foundation/samples/dir/dir_x64_vs110.vcxproj b/Foundation/samples/dir/dir_x64_vs110.vcxproj index f36aac8ca..4dbff7f23 100644 --- a/Foundation/samples/dir/dir_x64_vs110.vcxproj +++ b/Foundation/samples/dir/dir_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\dir\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\dir\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\dir\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\dir\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\dir\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\dir\$(Configuration)\ false diff --git a/Foundation/samples/dir/dir_x64_vs110.vcxproj.filters b/Foundation/samples/dir/dir_x64_vs110.vcxproj.filters index a08ae2d65..4d09a9439 100644 --- a/Foundation/samples/dir/dir_x64_vs110.vcxproj.filters +++ b/Foundation/samples/dir/dir_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {9cf35aeb-1b3f-4f44-b984-29a5232e8f83} + {0bff91b3-b719-4f54-a2f9-7ead5ddb0c04} - {6d63ad8c-b8a5-46f4-92b4-3c1cf1952317} + {c7c424bc-ca2a-4407-bf68-4f6ddcbc5250} diff --git a/Foundation/samples/dir/dir_x64_vs120.vcxproj b/Foundation/samples/dir/dir_x64_vs120.vcxproj index 08cf00d07..ed8f87b7e 100644 --- a/Foundation/samples/dir/dir_x64_vs120.vcxproj +++ b/Foundation/samples/dir/dir_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\dir\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\dir\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\dir\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\dir\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\dir\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\dir\$(Configuration)\ false diff --git a/Foundation/samples/dir/dir_x64_vs120.vcxproj.filters b/Foundation/samples/dir/dir_x64_vs120.vcxproj.filters index e38cb9fa8..603d57f4b 100644 --- a/Foundation/samples/dir/dir_x64_vs120.vcxproj.filters +++ b/Foundation/samples/dir/dir_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {856b9487-d6cb-40eb-a866-9e2cdf495adf} + {4f083c2d-a079-41ff-aa99-80d6620cc840} - {81a5ed10-7f07-4858-90d6-c612069cebf5} + {85595932-77be-4809-bbea-3de9a34bf62e} diff --git a/Foundation/samples/dir/dir_x64_vs90.vcproj b/Foundation/samples/dir/dir_x64_vs90.vcproj index e4ac243fe..684c557fe 100644 --- a/Foundation/samples/dir/dir_x64_vs90.vcproj +++ b/Foundation/samples/dir/dir_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\grep\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\grep\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\grep\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\grep\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\grep\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\grep\$(Platform)\$(Configuration)\ false diff --git a/Foundation/samples/grep/grep_WEC2013_vs110.vcxproj.filters b/Foundation/samples/grep/grep_WEC2013_vs110.vcxproj.filters index 1a36fa640..5e264e3fb 100644 --- a/Foundation/samples/grep/grep_WEC2013_vs110.vcxproj.filters +++ b/Foundation/samples/grep/grep_WEC2013_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {2e864d33-2574-40c2-b74c-d07a237fa6a7} + {09da21e0-744e-4c56-85e0-38fed56cca86} - {4f0936ee-d81d-4503-8b98-a7d6dc6db14e} + {8e2beb75-cca2-420b-b002-83047780e8ed} diff --git a/Foundation/samples/grep/grep_WEC2013_vs120.vcxproj b/Foundation/samples/grep/grep_WEC2013_vs120.vcxproj index 49a9a6f3f..547a32289 100644 --- a/Foundation/samples/grep/grep_WEC2013_vs120.vcxproj +++ b/Foundation/samples/grep/grep_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\grep\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\grep\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\grep\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\grep\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\grep\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\grep\$(Platform)\$(Configuration)\ false diff --git a/Foundation/samples/grep/grep_WEC2013_vs120.vcxproj.filters b/Foundation/samples/grep/grep_WEC2013_vs120.vcxproj.filters index d1e418c34..b9bad36b7 100644 --- a/Foundation/samples/grep/grep_WEC2013_vs120.vcxproj.filters +++ b/Foundation/samples/grep/grep_WEC2013_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {8847d018-871c-4489-95c1-acf7ebd56a56} + {8031d4f1-93c0-4652-9006-a76a7f7c442e} - {38b9dd67-8ce5-414c-bbbd-dcb8bde4ac3a} + {46779098-2cc0-491c-ab03-cfb8aa70d0e3} diff --git a/Foundation/samples/grep/grep_vs100.vcxproj b/Foundation/samples/grep/grep_vs100.vcxproj index d1661ad92..ad1b83d8e 100644 --- a/Foundation/samples/grep/grep_vs100.vcxproj +++ b/Foundation/samples/grep/grep_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\grep\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\grep\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\grep\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\grep\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\grep\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\grep\$(Configuration)\ false grepd grepd @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\grepd.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\grepd.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\grepd.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Foundation/samples/grep/grep_vs100.vcxproj.filters b/Foundation/samples/grep/grep_vs100.vcxproj.filters index 57b8dfe3c..949c766f8 100644 --- a/Foundation/samples/grep/grep_vs100.vcxproj.filters +++ b/Foundation/samples/grep/grep_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {e18e3843-3a52-45b9-8403-a24b4d17db84} + {eae4e80b-7d46-4b7c-87ff-9a8bd02bcd01} - {b922f7c7-46c4-48af-85a4-a29a58da93d5} + {d2fcf791-2fe3-4eca-974b-9f1d310a00b5} diff --git a/Foundation/samples/grep/grep_vs110.vcxproj b/Foundation/samples/grep/grep_vs110.vcxproj index f224eec6e..1c70b8f67 100644 --- a/Foundation/samples/grep/grep_vs110.vcxproj +++ b/Foundation/samples/grep/grep_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\grep\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\grep\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\grep\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\grep\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\grep\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\grep\$(Configuration)\ false diff --git a/Foundation/samples/grep/grep_vs110.vcxproj.filters b/Foundation/samples/grep/grep_vs110.vcxproj.filters index fea7feeea..f20c8bb69 100644 --- a/Foundation/samples/grep/grep_vs110.vcxproj.filters +++ b/Foundation/samples/grep/grep_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {ecccf1d6-2079-429f-ad48-f28132f43ed5} + {914457d1-7214-43b7-a070-e4d0dc33f0b7} - {1940183a-5195-447b-9513-4d6048c60907} + {c29d35f8-133a-4994-a179-d6efd862828d} diff --git a/Foundation/samples/grep/grep_vs120.vcxproj b/Foundation/samples/grep/grep_vs120.vcxproj index a3d8d5e63..3b63661ef 100644 --- a/Foundation/samples/grep/grep_vs120.vcxproj +++ b/Foundation/samples/grep/grep_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\grep\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\grep\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\grep\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\grep\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\grep\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\grep\$(Configuration)\ false diff --git a/Foundation/samples/grep/grep_vs120.vcxproj.filters b/Foundation/samples/grep/grep_vs120.vcxproj.filters index 629c6f1f4..fd576af4b 100644 --- a/Foundation/samples/grep/grep_vs120.vcxproj.filters +++ b/Foundation/samples/grep/grep_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {0b5dca10-ab24-4617-bc0c-a297ba5fed95} + {6518e9ae-fe4c-487b-bd2d-a46a247b51ab} - {19f224d1-e99a-4a75-bb16-73432ccdea87} + {076e1f99-eedf-4310-b0f7-80dbede0d209} diff --git a/Foundation/samples/grep/grep_vs71.vcproj b/Foundation/samples/grep/grep_vs71.vcproj index 580a1ab6a..d6e0e984b 100644 --- a/Foundation/samples/grep/grep_vs71.vcproj +++ b/Foundation/samples/grep/grep_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\grep\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\grep\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\grep\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\grep\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\grep\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\grep\$(Configuration)\ false grepd grepd @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\grepd.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\grepd.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\grepd.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Foundation/samples/grep/grep_x64_vs100.vcxproj.filters b/Foundation/samples/grep/grep_x64_vs100.vcxproj.filters index a772eabdf..57a4da432 100644 --- a/Foundation/samples/grep/grep_x64_vs100.vcxproj.filters +++ b/Foundation/samples/grep/grep_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {54e7f75a-95fb-4bd9-85e4-2f3f392b2e72} + {755ac192-22e5-4bf7-a2af-afc9b31d9bc6} - {1fdf5e52-52d5-4dc2-a08c-5f35f072240d} + {1eae6df9-1a2f-46e8-ab1a-bc64828d5702} diff --git a/Foundation/samples/grep/grep_x64_vs110.vcxproj b/Foundation/samples/grep/grep_x64_vs110.vcxproj index 7481cdd63..039b06206 100644 --- a/Foundation/samples/grep/grep_x64_vs110.vcxproj +++ b/Foundation/samples/grep/grep_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\grep\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\grep\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\grep\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\grep\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\grep\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\grep\$(Configuration)\ false diff --git a/Foundation/samples/grep/grep_x64_vs110.vcxproj.filters b/Foundation/samples/grep/grep_x64_vs110.vcxproj.filters index 8f07f2271..9bc637735 100644 --- a/Foundation/samples/grep/grep_x64_vs110.vcxproj.filters +++ b/Foundation/samples/grep/grep_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {46eb718e-30cf-4bb5-b5d0-8c251b8ca35b} + {b8db2e4f-44a8-415c-85e9-8c3a9f93c19a} - {f9825e7b-6f1a-414a-96a0-f5ed08bf544d} + {e1d4244f-da22-441d-b281-3247d326d825} diff --git a/Foundation/samples/grep/grep_x64_vs120.vcxproj b/Foundation/samples/grep/grep_x64_vs120.vcxproj index ad895314c..d693d5df0 100644 --- a/Foundation/samples/grep/grep_x64_vs120.vcxproj +++ b/Foundation/samples/grep/grep_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\grep\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\grep\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\grep\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\grep\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\grep\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\grep\$(Configuration)\ false diff --git a/Foundation/samples/grep/grep_x64_vs120.vcxproj.filters b/Foundation/samples/grep/grep_x64_vs120.vcxproj.filters index ff487dcf8..ce0a59173 100644 --- a/Foundation/samples/grep/grep_x64_vs120.vcxproj.filters +++ b/Foundation/samples/grep/grep_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {19811f2a-7956-40d1-9f68-25b02eeca331} + {f78de6bd-2626-4530-bff2-8d320cbfe666} - {3f9de570-76cd-4e68-8770-bc333f997fe6} + {7a8c9715-5c9a-4c4b-a945-f1eb06c50725} diff --git a/Foundation/samples/grep/grep_x64_vs90.vcproj b/Foundation/samples/grep/grep_x64_vs90.vcproj index c98922bc3..e7d2440a8 100644 --- a/Foundation/samples/grep/grep_x64_vs90.vcproj +++ b/Foundation/samples/grep/grep_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\hmacmd5\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\hmacmd5\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\hmacmd5\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\hmacmd5\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\hmacmd5\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\hmacmd5\$(Platform)\$(Configuration)\ false diff --git a/Foundation/samples/hmacmd5/hmacmd5_WEC2013_vs110.vcxproj.filters b/Foundation/samples/hmacmd5/hmacmd5_WEC2013_vs110.vcxproj.filters index 6f1dfd1b7..9975401db 100644 --- a/Foundation/samples/hmacmd5/hmacmd5_WEC2013_vs110.vcxproj.filters +++ b/Foundation/samples/hmacmd5/hmacmd5_WEC2013_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {67b9c55f-b99d-4ed9-bbcf-575667c5d887} + {0ff50194-8fa4-48d1-83e9-7f859961174c} - {9f0e2cd7-e64c-4aad-bddc-fdeebc9fc870} + {c1cfe58b-d158-407b-8de5-6892cf07bdbe} diff --git a/Foundation/samples/hmacmd5/hmacmd5_WEC2013_vs120.vcxproj b/Foundation/samples/hmacmd5/hmacmd5_WEC2013_vs120.vcxproj index c4de2679c..6047fb7ec 100644 --- a/Foundation/samples/hmacmd5/hmacmd5_WEC2013_vs120.vcxproj +++ b/Foundation/samples/hmacmd5/hmacmd5_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\hmacmd5\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\hmacmd5\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\hmacmd5\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\hmacmd5\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\hmacmd5\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\hmacmd5\$(Platform)\$(Configuration)\ false diff --git a/Foundation/samples/hmacmd5/hmacmd5_WEC2013_vs120.vcxproj.filters b/Foundation/samples/hmacmd5/hmacmd5_WEC2013_vs120.vcxproj.filters index 8dfe962f4..1bc776c36 100644 --- a/Foundation/samples/hmacmd5/hmacmd5_WEC2013_vs120.vcxproj.filters +++ b/Foundation/samples/hmacmd5/hmacmd5_WEC2013_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {788d6fb4-5869-403e-8370-9124cc6167d1} + {bd31bea8-f5e0-4ed7-9c32-13fec86c8523} - {6b233c63-9db5-45ca-98ff-dcca3272f9aa} + {a6b62e1d-f350-4ce5-80cc-909912acbe2b} diff --git a/Foundation/samples/hmacmd5/hmacmd5_vs100.vcxproj b/Foundation/samples/hmacmd5/hmacmd5_vs100.vcxproj index fc43df5b2..dc299941a 100644 --- a/Foundation/samples/hmacmd5/hmacmd5_vs100.vcxproj +++ b/Foundation/samples/hmacmd5/hmacmd5_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\hmacmd5\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\hmacmd5\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\hmacmd5\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\hmacmd5\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\hmacmd5\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\hmacmd5\$(Configuration)\ false hmacmd5d hmacmd5d @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\hmacmd5d.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\hmacmd5d.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\hmacmd5d.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Foundation/samples/hmacmd5/hmacmd5_vs100.vcxproj.filters b/Foundation/samples/hmacmd5/hmacmd5_vs100.vcxproj.filters index e8a08b833..a5c3c992f 100644 --- a/Foundation/samples/hmacmd5/hmacmd5_vs100.vcxproj.filters +++ b/Foundation/samples/hmacmd5/hmacmd5_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {bad01389-fe96-42f9-a78f-ffa73669ccc1} + {476314ab-10c4-45f8-8054-39c4d2714207} - {90c1e1d4-5599-44db-bfab-38a7e4f2aa6f} + {9f51c317-2510-4a33-892f-0a2f307007ad} diff --git a/Foundation/samples/hmacmd5/hmacmd5_vs110.vcxproj b/Foundation/samples/hmacmd5/hmacmd5_vs110.vcxproj index adf6a4bc8..e6451b9cd 100644 --- a/Foundation/samples/hmacmd5/hmacmd5_vs110.vcxproj +++ b/Foundation/samples/hmacmd5/hmacmd5_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\hmacmd5\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\hmacmd5\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\hmacmd5\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\hmacmd5\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\hmacmd5\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\hmacmd5\$(Configuration)\ false diff --git a/Foundation/samples/hmacmd5/hmacmd5_vs110.vcxproj.filters b/Foundation/samples/hmacmd5/hmacmd5_vs110.vcxproj.filters index e8fa84bb1..6abfecef5 100644 --- a/Foundation/samples/hmacmd5/hmacmd5_vs110.vcxproj.filters +++ b/Foundation/samples/hmacmd5/hmacmd5_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {5bdae405-56d2-4803-89b6-f21c075bf1fe} + {086de842-4964-4726-b1de-d7b7a1d07e2c} - {6569f9a4-036d-4809-8196-0606e05bf42c} + {ed5c2dc7-cf3a-4900-acf1-ef75dded71f6} diff --git a/Foundation/samples/hmacmd5/hmacmd5_vs120.vcxproj b/Foundation/samples/hmacmd5/hmacmd5_vs120.vcxproj index 846e75776..ac690fb1f 100644 --- a/Foundation/samples/hmacmd5/hmacmd5_vs120.vcxproj +++ b/Foundation/samples/hmacmd5/hmacmd5_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\hmacmd5\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\hmacmd5\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\hmacmd5\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\hmacmd5\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\hmacmd5\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\hmacmd5\$(Configuration)\ false diff --git a/Foundation/samples/hmacmd5/hmacmd5_vs120.vcxproj.filters b/Foundation/samples/hmacmd5/hmacmd5_vs120.vcxproj.filters index 79ca92912..da9f4780d 100644 --- a/Foundation/samples/hmacmd5/hmacmd5_vs120.vcxproj.filters +++ b/Foundation/samples/hmacmd5/hmacmd5_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {27d85bc1-ca02-4e9a-bf15-53c90f5e18f6} + {a2d2fb63-3672-4bf4-ae1c-0524cb5b2443} - {feba0b3b-8267-466c-87ee-189c6b0fd006} + {94ec7737-7a52-49f8-9c4b-9c9ffe0433a6} diff --git a/Foundation/samples/hmacmd5/hmacmd5_vs71.vcproj b/Foundation/samples/hmacmd5/hmacmd5_vs71.vcproj index ff9cdc628..e8881f4d4 100644 --- a/Foundation/samples/hmacmd5/hmacmd5_vs71.vcproj +++ b/Foundation/samples/hmacmd5/hmacmd5_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\hmacmd5\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\hmacmd5\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\hmacmd5\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\hmacmd5\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\hmacmd5\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\hmacmd5\$(Configuration)\ false hmacmd5d hmacmd5d @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\hmacmd5d.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\hmacmd5d.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\hmacmd5d.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Foundation/samples/hmacmd5/hmacmd5_x64_vs100.vcxproj.filters b/Foundation/samples/hmacmd5/hmacmd5_x64_vs100.vcxproj.filters index 6de851a71..c24fccf64 100644 --- a/Foundation/samples/hmacmd5/hmacmd5_x64_vs100.vcxproj.filters +++ b/Foundation/samples/hmacmd5/hmacmd5_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {f833c468-de4b-4c56-ae86-3a7f6191a06f} + {b7027f77-963b-460b-b53e-021c962bf0cc} - {0f884f3c-58b6-4702-99fb-6760f95691b8} + {26b49e86-0177-4dec-96b6-ccc4c0d71143} diff --git a/Foundation/samples/hmacmd5/hmacmd5_x64_vs110.vcxproj b/Foundation/samples/hmacmd5/hmacmd5_x64_vs110.vcxproj index 30ba3b077..0085c2ec0 100644 --- a/Foundation/samples/hmacmd5/hmacmd5_x64_vs110.vcxproj +++ b/Foundation/samples/hmacmd5/hmacmd5_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\hmacmd5\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\hmacmd5\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\hmacmd5\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\hmacmd5\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\hmacmd5\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\hmacmd5\$(Configuration)\ false diff --git a/Foundation/samples/hmacmd5/hmacmd5_x64_vs110.vcxproj.filters b/Foundation/samples/hmacmd5/hmacmd5_x64_vs110.vcxproj.filters index 7f4df3751..bfe98e096 100644 --- a/Foundation/samples/hmacmd5/hmacmd5_x64_vs110.vcxproj.filters +++ b/Foundation/samples/hmacmd5/hmacmd5_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {089d0d41-66ee-4907-b330-e268b7660116} + {ff82677f-582f-443d-94b5-e2fe410f5a99} - {e85a8cbd-5298-40cf-9130-1cae1b70cc2f} + {ae9c8ff0-5830-4b02-a7ca-17d67743296d} diff --git a/Foundation/samples/hmacmd5/hmacmd5_x64_vs120.vcxproj b/Foundation/samples/hmacmd5/hmacmd5_x64_vs120.vcxproj index c88197976..56a788dc5 100644 --- a/Foundation/samples/hmacmd5/hmacmd5_x64_vs120.vcxproj +++ b/Foundation/samples/hmacmd5/hmacmd5_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\hmacmd5\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\hmacmd5\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\hmacmd5\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\hmacmd5\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\hmacmd5\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\hmacmd5\$(Configuration)\ false diff --git a/Foundation/samples/hmacmd5/hmacmd5_x64_vs120.vcxproj.filters b/Foundation/samples/hmacmd5/hmacmd5_x64_vs120.vcxproj.filters index fff370361..d5da5a091 100644 --- a/Foundation/samples/hmacmd5/hmacmd5_x64_vs120.vcxproj.filters +++ b/Foundation/samples/hmacmd5/hmacmd5_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {3380a090-8b57-4a31-8dae-024c18e421cd} + {8290d8ec-3785-4271-8524-60767ca21b0e} - {cf7dc5ea-b2e8-4201-a5e1-1e1986599515} + {dcc1e34b-2e22-4452-be8a-31bff1cdc82a} diff --git a/Foundation/samples/hmacmd5/hmacmd5_x64_vs90.vcproj b/Foundation/samples/hmacmd5/hmacmd5_x64_vs90.vcproj index ee17b8c26..33c81c23d 100644 --- a/Foundation/samples/hmacmd5/hmacmd5_x64_vs90.vcproj +++ b/Foundation/samples/hmacmd5/hmacmd5_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\inflate\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\inflate\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\inflate\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\inflate\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\inflate\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\inflate\$(Platform)\$(Configuration)\ false diff --git a/Foundation/samples/inflate/inflate_WEC2013_vs110.vcxproj.filters b/Foundation/samples/inflate/inflate_WEC2013_vs110.vcxproj.filters index c7399aa36..d83a320cd 100644 --- a/Foundation/samples/inflate/inflate_WEC2013_vs110.vcxproj.filters +++ b/Foundation/samples/inflate/inflate_WEC2013_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {849b49d1-d125-4f36-b5a9-3d9c77cfb6b8} + {f19908b5-ba76-4b2a-a9cb-e96ab4d061f7} - {e8eaf924-4f0f-4c2c-b9d4-f8a272da424b} + {939a1565-849d-4742-8e62-b894bf643b37} diff --git a/Foundation/samples/inflate/inflate_WEC2013_vs120.vcxproj b/Foundation/samples/inflate/inflate_WEC2013_vs120.vcxproj index c5a3df07d..2ef551b14 100644 --- a/Foundation/samples/inflate/inflate_WEC2013_vs120.vcxproj +++ b/Foundation/samples/inflate/inflate_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\inflate\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\inflate\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\inflate\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\inflate\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\inflate\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\inflate\$(Platform)\$(Configuration)\ false diff --git a/Foundation/samples/inflate/inflate_WEC2013_vs120.vcxproj.filters b/Foundation/samples/inflate/inflate_WEC2013_vs120.vcxproj.filters index 83bd16ef6..5c8c1a59c 100644 --- a/Foundation/samples/inflate/inflate_WEC2013_vs120.vcxproj.filters +++ b/Foundation/samples/inflate/inflate_WEC2013_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {334029c1-369f-4c71-aa2b-9933c40c106e} + {e1d1c226-acf0-45cf-9a34-a3d9de3558ba} - {725dfabb-34bc-42b2-b378-16726d494eab} + {efe30efa-2e54-4f9f-a550-b83d6f795693} diff --git a/Foundation/samples/inflate/inflate_vs100.vcxproj b/Foundation/samples/inflate/inflate_vs100.vcxproj index 5d7a9f7db..18fd85a45 100644 --- a/Foundation/samples/inflate/inflate_vs100.vcxproj +++ b/Foundation/samples/inflate/inflate_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\inflate\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\inflate\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\inflate\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\inflate\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\inflate\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\inflate\$(Configuration)\ false inflated inflated @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\inflated.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\inflated.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\inflated.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Foundation/samples/inflate/inflate_vs100.vcxproj.filters b/Foundation/samples/inflate/inflate_vs100.vcxproj.filters index 2157574d1..1a0c4ad6d 100644 --- a/Foundation/samples/inflate/inflate_vs100.vcxproj.filters +++ b/Foundation/samples/inflate/inflate_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {f73adb36-75bd-473d-a14f-05bda2d77937} + {897c638f-1804-490d-8ee0-dcc438bc641d} - {9657606d-b3dd-42fd-9208-a052b1f686bc} + {da8eb634-a75c-414f-a0e5-3668472e4be3} diff --git a/Foundation/samples/inflate/inflate_vs110.vcxproj b/Foundation/samples/inflate/inflate_vs110.vcxproj index d99737205..e3f8bbfc1 100644 --- a/Foundation/samples/inflate/inflate_vs110.vcxproj +++ b/Foundation/samples/inflate/inflate_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\inflate\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\inflate\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\inflate\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\inflate\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\inflate\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\inflate\$(Configuration)\ false diff --git a/Foundation/samples/inflate/inflate_vs110.vcxproj.filters b/Foundation/samples/inflate/inflate_vs110.vcxproj.filters index 3f316f40f..725a74df2 100644 --- a/Foundation/samples/inflate/inflate_vs110.vcxproj.filters +++ b/Foundation/samples/inflate/inflate_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {b4ad9262-8f6f-43c0-9d13-23e922ab9edd} + {a49ddafd-195b-426b-8e9e-783557dd61b9} - {ba87ce75-db8e-4da3-913d-918bdc79f458} + {4707c18f-2ba4-446b-a816-4eed2c140bd6} diff --git a/Foundation/samples/inflate/inflate_vs120.vcxproj b/Foundation/samples/inflate/inflate_vs120.vcxproj index 2fc30089e..e87aeae4b 100644 --- a/Foundation/samples/inflate/inflate_vs120.vcxproj +++ b/Foundation/samples/inflate/inflate_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\inflate\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\inflate\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\inflate\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\inflate\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\inflate\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\inflate\$(Configuration)\ false diff --git a/Foundation/samples/inflate/inflate_vs120.vcxproj.filters b/Foundation/samples/inflate/inflate_vs120.vcxproj.filters index afff31d00..71df1dbe3 100644 --- a/Foundation/samples/inflate/inflate_vs120.vcxproj.filters +++ b/Foundation/samples/inflate/inflate_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {c80c2b20-374f-4f74-8d4c-a267965a5ed9} + {e8232a2f-c44d-49c0-8d4e-0a88795a41a8} - {fe63ed12-58bd-4a00-82c8-f770c6f0e1a9} + {316dd106-90c7-41a7-b13f-ff034f333a2e} diff --git a/Foundation/samples/inflate/inflate_vs71.vcproj b/Foundation/samples/inflate/inflate_vs71.vcproj index 6e3c343cc..97918d9cc 100644 --- a/Foundation/samples/inflate/inflate_vs71.vcproj +++ b/Foundation/samples/inflate/inflate_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\inflate\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\inflate\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\inflate\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\inflate\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\inflate\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\inflate\$(Configuration)\ false inflated inflated @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\inflated.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\inflated.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\inflated.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Foundation/samples/inflate/inflate_x64_vs100.vcxproj.filters b/Foundation/samples/inflate/inflate_x64_vs100.vcxproj.filters index b4f143265..64d8aa555 100644 --- a/Foundation/samples/inflate/inflate_x64_vs100.vcxproj.filters +++ b/Foundation/samples/inflate/inflate_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {860f1ba9-edd3-463e-b6a0-398924a29689} + {accaf7f3-d80c-4a83-a246-5019f57839bb} - {6a2563fe-4d07-4d8a-a023-8af8b88e6b61} + {d1a83f5f-0a09-4277-9341-3d07dbe78a84} diff --git a/Foundation/samples/inflate/inflate_x64_vs110.vcxproj b/Foundation/samples/inflate/inflate_x64_vs110.vcxproj index 68f4d5e56..16f0f2e16 100644 --- a/Foundation/samples/inflate/inflate_x64_vs110.vcxproj +++ b/Foundation/samples/inflate/inflate_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\inflate\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\inflate\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\inflate\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\inflate\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\inflate\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\inflate\$(Configuration)\ false diff --git a/Foundation/samples/inflate/inflate_x64_vs110.vcxproj.filters b/Foundation/samples/inflate/inflate_x64_vs110.vcxproj.filters index 000df5c42..a8ff23666 100644 --- a/Foundation/samples/inflate/inflate_x64_vs110.vcxproj.filters +++ b/Foundation/samples/inflate/inflate_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {48766881-886c-4e47-9652-935b6cba3924} + {7abf2acb-ee0d-43f3-b2e8-02fde40dbbe3} - {b20d8230-cb65-48d1-8838-659a2b4747a0} + {924df67c-fcdd-40f3-9175-04d428fa4704} diff --git a/Foundation/samples/inflate/inflate_x64_vs120.vcxproj b/Foundation/samples/inflate/inflate_x64_vs120.vcxproj index f325ef7c0..6aea5685f 100644 --- a/Foundation/samples/inflate/inflate_x64_vs120.vcxproj +++ b/Foundation/samples/inflate/inflate_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\inflate\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\inflate\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\inflate\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\inflate\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\inflate\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\inflate\$(Configuration)\ false diff --git a/Foundation/samples/inflate/inflate_x64_vs120.vcxproj.filters b/Foundation/samples/inflate/inflate_x64_vs120.vcxproj.filters index 45d24586b..bff83b837 100644 --- a/Foundation/samples/inflate/inflate_x64_vs120.vcxproj.filters +++ b/Foundation/samples/inflate/inflate_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {52ecac82-4239-484e-a9be-18e68e2a8574} + {a190eb70-bf29-42df-a343-a52cf7d48fec} - {b145bd88-cec8-41dd-9927-5a9d88e75273} + {15543bfc-d477-4321-bf02-e7b84ae77d4e} diff --git a/Foundation/samples/inflate/inflate_x64_vs90.vcproj b/Foundation/samples/inflate/inflate_x64_vs90.vcproj index 1bd1c4593..fc5d63db2 100644 --- a/Foundation/samples/inflate/inflate_x64_vs90.vcproj +++ b/Foundation/samples/inflate/inflate_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\md5\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\md5\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\md5\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\md5\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\md5\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\md5\$(Platform)\$(Configuration)\ false diff --git a/Foundation/samples/md5/md5_WEC2013_vs110.vcxproj.filters b/Foundation/samples/md5/md5_WEC2013_vs110.vcxproj.filters index 68f527d92..f169c72bf 100644 --- a/Foundation/samples/md5/md5_WEC2013_vs110.vcxproj.filters +++ b/Foundation/samples/md5/md5_WEC2013_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {0e0aaac6-2501-4db0-8a90-df32259cbfb2} + {aae56463-9690-4a33-83e2-c5fd3408de7e} - {2fdd3fd6-12aa-4ddb-855d-dec7d953655b} + {36d95cec-d0f3-49d6-b9b1-de65c44efb02} diff --git a/Foundation/samples/md5/md5_WEC2013_vs120.vcxproj b/Foundation/samples/md5/md5_WEC2013_vs120.vcxproj index 85a61f8c3..cf3a011fe 100644 --- a/Foundation/samples/md5/md5_WEC2013_vs120.vcxproj +++ b/Foundation/samples/md5/md5_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\md5\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\md5\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\md5\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\md5\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\md5\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\md5\$(Platform)\$(Configuration)\ false diff --git a/Foundation/samples/md5/md5_WEC2013_vs120.vcxproj.filters b/Foundation/samples/md5/md5_WEC2013_vs120.vcxproj.filters index 292189a7f..849697b27 100644 --- a/Foundation/samples/md5/md5_WEC2013_vs120.vcxproj.filters +++ b/Foundation/samples/md5/md5_WEC2013_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {46ab8627-5b14-4a52-bf44-0ee7b43dcbbd} + {7af5e906-7a79-4539-a416-6ba77039935a} - {23833c53-6715-42b0-bb71-6ca91e97173e} + {eae85402-ec27-45ab-a1a9-2bfdf7ceb4fa} diff --git a/Foundation/samples/md5/md5_vs100.vcxproj b/Foundation/samples/md5/md5_vs100.vcxproj index 7f6a853ca..aa47f04be 100644 --- a/Foundation/samples/md5/md5_vs100.vcxproj +++ b/Foundation/samples/md5/md5_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\md5\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\md5\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\md5\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\md5\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\md5\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\md5\$(Configuration)\ false md5d md5d @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\md5d.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\md5d.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\md5d.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Foundation/samples/md5/md5_vs100.vcxproj.filters b/Foundation/samples/md5/md5_vs100.vcxproj.filters index 54879e2e6..19a79a41a 100644 --- a/Foundation/samples/md5/md5_vs100.vcxproj.filters +++ b/Foundation/samples/md5/md5_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {325746d9-7084-431b-b0fb-2742eed51623} + {49406614-c1c8-4d16-ab71-db2d7e155175} - {ff4815ae-3cc4-4af7-9a72-62f34ba06b5d} + {ba97d51e-55f3-4cff-bb93-92f63c3c3d40} diff --git a/Foundation/samples/md5/md5_vs110.vcxproj b/Foundation/samples/md5/md5_vs110.vcxproj index abf21462f..4763af309 100644 --- a/Foundation/samples/md5/md5_vs110.vcxproj +++ b/Foundation/samples/md5/md5_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\md5\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\md5\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\md5\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\md5\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\md5\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\md5\$(Configuration)\ false diff --git a/Foundation/samples/md5/md5_vs110.vcxproj.filters b/Foundation/samples/md5/md5_vs110.vcxproj.filters index 1c8b43db0..2798683f8 100644 --- a/Foundation/samples/md5/md5_vs110.vcxproj.filters +++ b/Foundation/samples/md5/md5_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {4b6d2fb7-7000-4c55-9e0e-4b9f4d60ed41} + {ed6403b2-b4f4-4e69-853f-11b47b2c681b} - {0cb337bc-6161-45c8-8eb7-e7e2429ca326} + {810f76a6-34a1-4ac5-836c-725b40138204} diff --git a/Foundation/samples/md5/md5_vs120.vcxproj b/Foundation/samples/md5/md5_vs120.vcxproj index 8c3f36302..212b213b0 100644 --- a/Foundation/samples/md5/md5_vs120.vcxproj +++ b/Foundation/samples/md5/md5_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\md5\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\md5\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\md5\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\md5\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\md5\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\md5\$(Configuration)\ false diff --git a/Foundation/samples/md5/md5_vs120.vcxproj.filters b/Foundation/samples/md5/md5_vs120.vcxproj.filters index f7d885051..f9f8f443b 100644 --- a/Foundation/samples/md5/md5_vs120.vcxproj.filters +++ b/Foundation/samples/md5/md5_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {59fc6b4d-f983-4e7a-bcc2-ad887b95da49} + {5fe2fad9-6f3c-46db-b46a-5914d7b0e9ba} - {724f8fa6-fffd-4922-95d1-0f09b031e7ec} + {09d5e9d1-d522-4218-871f-8de96d04d79a} diff --git a/Foundation/samples/md5/md5_vs71.vcproj b/Foundation/samples/md5/md5_vs71.vcproj index c544d810b..b4843c3c4 100644 --- a/Foundation/samples/md5/md5_vs71.vcproj +++ b/Foundation/samples/md5/md5_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\md5\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\md5\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\md5\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\md5\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\md5\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\md5\$(Configuration)\ false md5d md5d @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\md5d.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\md5d.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\md5d.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Foundation/samples/md5/md5_x64_vs100.vcxproj.filters b/Foundation/samples/md5/md5_x64_vs100.vcxproj.filters index 0126fbc36..c5771c4a6 100644 --- a/Foundation/samples/md5/md5_x64_vs100.vcxproj.filters +++ b/Foundation/samples/md5/md5_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {3898abf8-2bdc-495b-920b-65aa5ec9b2ea} + {e5dcd6b0-76a5-4777-83bc-522e46f1c6eb} - {41cee968-66fc-4884-9a5f-a3da2392d6be} + {e2e10a16-bb04-4a3f-9988-b50b3b697495} diff --git a/Foundation/samples/md5/md5_x64_vs110.vcxproj b/Foundation/samples/md5/md5_x64_vs110.vcxproj index b7b101f11..c8cac7f48 100644 --- a/Foundation/samples/md5/md5_x64_vs110.vcxproj +++ b/Foundation/samples/md5/md5_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\md5\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\md5\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\md5\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\md5\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\md5\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\md5\$(Configuration)\ false diff --git a/Foundation/samples/md5/md5_x64_vs110.vcxproj.filters b/Foundation/samples/md5/md5_x64_vs110.vcxproj.filters index 51d9a9570..4d0b7a185 100644 --- a/Foundation/samples/md5/md5_x64_vs110.vcxproj.filters +++ b/Foundation/samples/md5/md5_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {26a2e844-0350-4312-b6a7-6b8d734ad33d} + {4ab2e587-a13f-485a-b023-793dde202734} - {79e8e1b2-bacb-462f-80bc-4137131769a3} + {315cb670-d3ba-4fd9-8e70-503a75d98572} diff --git a/Foundation/samples/md5/md5_x64_vs120.vcxproj b/Foundation/samples/md5/md5_x64_vs120.vcxproj index d3a5927b9..178515f27 100644 --- a/Foundation/samples/md5/md5_x64_vs120.vcxproj +++ b/Foundation/samples/md5/md5_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\md5\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\md5\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\md5\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\md5\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\md5\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\md5\$(Configuration)\ false diff --git a/Foundation/samples/md5/md5_x64_vs120.vcxproj.filters b/Foundation/samples/md5/md5_x64_vs120.vcxproj.filters index cd3455e85..84d609118 100644 --- a/Foundation/samples/md5/md5_x64_vs120.vcxproj.filters +++ b/Foundation/samples/md5/md5_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {f29c3798-419e-41d3-bbbf-2f5c5d6284d9} + {fb25e484-faef-48c7-8086-17c0a04c4a44} - {9d3ad37a-1f4c-48dd-b4d7-7493f0ed0c35} + {61c63e16-10f0-4167-b1f1-79cbd81146f8} diff --git a/Foundation/samples/md5/md5_x64_vs90.vcproj b/Foundation/samples/md5/md5_x64_vs90.vcproj index 88d0b5499..eade5fab2 100644 --- a/Foundation/samples/md5/md5_x64_vs90.vcproj +++ b/Foundation/samples/md5/md5_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\uuidgen\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\uuidgen\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\uuidgen\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\uuidgen\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\uuidgen\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\uuidgen\$(Platform)\$(Configuration)\ false diff --git a/Foundation/samples/uuidgen/uuidgen_WEC2013_vs110.vcxproj.filters b/Foundation/samples/uuidgen/uuidgen_WEC2013_vs110.vcxproj.filters index 16ef1b3d5..c3b5c5eea 100644 --- a/Foundation/samples/uuidgen/uuidgen_WEC2013_vs110.vcxproj.filters +++ b/Foundation/samples/uuidgen/uuidgen_WEC2013_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {5e5ded8b-4846-4a38-9ad0-19a335d3d3e4} + {c36cae29-a07d-4e54-9f41-24b64a740cf6} - {60e91ad1-0032-4df8-950a-72242ddd83c9} + {644519bb-7f96-4703-9c42-53bda81d1d84} diff --git a/Foundation/samples/uuidgen/uuidgen_WEC2013_vs120.vcxproj b/Foundation/samples/uuidgen/uuidgen_WEC2013_vs120.vcxproj index f1e66512f..f2c814583 100644 --- a/Foundation/samples/uuidgen/uuidgen_WEC2013_vs120.vcxproj +++ b/Foundation/samples/uuidgen/uuidgen_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\uuidgen\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\uuidgen\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\uuidgen\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\uuidgen\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\uuidgen\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\uuidgen\$(Platform)\$(Configuration)\ false diff --git a/Foundation/samples/uuidgen/uuidgen_WEC2013_vs120.vcxproj.filters b/Foundation/samples/uuidgen/uuidgen_WEC2013_vs120.vcxproj.filters index 803c1edb5..4790155eb 100644 --- a/Foundation/samples/uuidgen/uuidgen_WEC2013_vs120.vcxproj.filters +++ b/Foundation/samples/uuidgen/uuidgen_WEC2013_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {9cd3fb1f-6054-405e-88b5-2eb29783060d} + {ba0266cc-8dcf-46cc-94e6-ce475cf22add} - {e0e0e0a0-53b7-4774-aee8-6577aac8ed51} + {71935b5a-b606-4291-9df9-debce89688e7} diff --git a/Foundation/samples/uuidgen/uuidgen_vs100.vcxproj b/Foundation/samples/uuidgen/uuidgen_vs100.vcxproj index c66e03127..63693cf05 100644 --- a/Foundation/samples/uuidgen/uuidgen_vs100.vcxproj +++ b/Foundation/samples/uuidgen/uuidgen_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\uuidgen\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\uuidgen\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\uuidgen\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\uuidgen\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\uuidgen\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\uuidgen\$(Configuration)\ false uuidgend uuidgend @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\uuidgend.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\uuidgend.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\uuidgend.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Foundation/samples/uuidgen/uuidgen_vs100.vcxproj.filters b/Foundation/samples/uuidgen/uuidgen_vs100.vcxproj.filters index 5a219e6e2..262908802 100644 --- a/Foundation/samples/uuidgen/uuidgen_vs100.vcxproj.filters +++ b/Foundation/samples/uuidgen/uuidgen_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {c71ee659-a8f8-40be-b19a-c47ed00cc093} + {1ca91642-3027-4989-886f-5f59841d2d6e} - {4cf132a6-6af5-4451-aa8d-31c943de9d9e} + {250539e8-3344-4d99-acc9-c824a7b07e23} diff --git a/Foundation/samples/uuidgen/uuidgen_vs110.vcxproj b/Foundation/samples/uuidgen/uuidgen_vs110.vcxproj index 84808a4d3..23f3cf30b 100644 --- a/Foundation/samples/uuidgen/uuidgen_vs110.vcxproj +++ b/Foundation/samples/uuidgen/uuidgen_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\uuidgen\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\uuidgen\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\uuidgen\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\uuidgen\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\uuidgen\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\uuidgen\$(Configuration)\ false diff --git a/Foundation/samples/uuidgen/uuidgen_vs110.vcxproj.filters b/Foundation/samples/uuidgen/uuidgen_vs110.vcxproj.filters index 2e878c5b3..4a4f3f40f 100644 --- a/Foundation/samples/uuidgen/uuidgen_vs110.vcxproj.filters +++ b/Foundation/samples/uuidgen/uuidgen_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {a5bd6fe6-59fb-4ce3-a80c-92b24993c119} + {e6f789fa-fa02-4959-8fd7-e1566050fba8} - {ebc6c98a-5a6e-46b0-8455-b0c028e4612b} + {d55224bd-78c1-479d-8a3a-c8fb73332856} diff --git a/Foundation/samples/uuidgen/uuidgen_vs120.vcxproj b/Foundation/samples/uuidgen/uuidgen_vs120.vcxproj index 0e944af04..17dc81e0a 100644 --- a/Foundation/samples/uuidgen/uuidgen_vs120.vcxproj +++ b/Foundation/samples/uuidgen/uuidgen_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\uuidgen\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\uuidgen\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\uuidgen\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\uuidgen\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\uuidgen\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\uuidgen\$(Configuration)\ false diff --git a/Foundation/samples/uuidgen/uuidgen_vs120.vcxproj.filters b/Foundation/samples/uuidgen/uuidgen_vs120.vcxproj.filters index 27fe9596b..419d5c2ab 100644 --- a/Foundation/samples/uuidgen/uuidgen_vs120.vcxproj.filters +++ b/Foundation/samples/uuidgen/uuidgen_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {f8c613f5-b0dd-4266-836a-8da6ca8a7bd6} + {412645b6-30d7-4d0f-bd83-b85edf49a250} - {923ec58b-8ffa-480d-8a28-be7ef4dcdf2f} + {17f4b78b-89b2-4e1f-b917-23daec1e861f} diff --git a/Foundation/samples/uuidgen/uuidgen_vs71.vcproj b/Foundation/samples/uuidgen/uuidgen_vs71.vcproj index b9907c7d8..08a6b8748 100644 --- a/Foundation/samples/uuidgen/uuidgen_vs71.vcproj +++ b/Foundation/samples/uuidgen/uuidgen_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\uuidgen\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\uuidgen\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\uuidgen\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\uuidgen\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\uuidgen\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\uuidgen\$(Configuration)\ false uuidgend uuidgend @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\uuidgend.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\uuidgend.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\uuidgend.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Foundation/samples/uuidgen/uuidgen_x64_vs100.vcxproj.filters b/Foundation/samples/uuidgen/uuidgen_x64_vs100.vcxproj.filters index cadde3765..5b4afdfd8 100644 --- a/Foundation/samples/uuidgen/uuidgen_x64_vs100.vcxproj.filters +++ b/Foundation/samples/uuidgen/uuidgen_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {f5abf226-2a10-4f2c-a966-1a4906c1e73b} + {6baf271d-0a58-4568-b08e-85b1948003ff} - {cafecbae-69de-4cfc-85cc-336fdff403d2} + {462f8bcf-97a3-4c18-bb97-b7462edcda24} diff --git a/Foundation/samples/uuidgen/uuidgen_x64_vs110.vcxproj b/Foundation/samples/uuidgen/uuidgen_x64_vs110.vcxproj index 61f2e1411..7f7fe8828 100644 --- a/Foundation/samples/uuidgen/uuidgen_x64_vs110.vcxproj +++ b/Foundation/samples/uuidgen/uuidgen_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\uuidgen\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\uuidgen\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\uuidgen\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\uuidgen\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\uuidgen\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\uuidgen\$(Configuration)\ false diff --git a/Foundation/samples/uuidgen/uuidgen_x64_vs110.vcxproj.filters b/Foundation/samples/uuidgen/uuidgen_x64_vs110.vcxproj.filters index 013886d03..f8ab0dd01 100644 --- a/Foundation/samples/uuidgen/uuidgen_x64_vs110.vcxproj.filters +++ b/Foundation/samples/uuidgen/uuidgen_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {c9016e8c-52ef-4321-9d3e-3c2b1de61691} + {d6b3d285-0559-45c4-8f9f-04de7453dd9f} - {f4596ea0-94b8-45d8-99ef-fda1b9f468d7} + {d9be1554-d04c-4226-b365-6251527f38c7} diff --git a/Foundation/samples/uuidgen/uuidgen_x64_vs120.vcxproj b/Foundation/samples/uuidgen/uuidgen_x64_vs120.vcxproj index cbf7c0095..6871e353e 100644 --- a/Foundation/samples/uuidgen/uuidgen_x64_vs120.vcxproj +++ b/Foundation/samples/uuidgen/uuidgen_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\uuidgen\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\uuidgen\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\uuidgen\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\uuidgen\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\uuidgen\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\uuidgen\$(Configuration)\ false diff --git a/Foundation/samples/uuidgen/uuidgen_x64_vs120.vcxproj.filters b/Foundation/samples/uuidgen/uuidgen_x64_vs120.vcxproj.filters index 4bab7229b..78a84f2f4 100644 --- a/Foundation/samples/uuidgen/uuidgen_x64_vs120.vcxproj.filters +++ b/Foundation/samples/uuidgen/uuidgen_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {dd7bdf0a-0483-4dea-b17d-8e695a0bae2d} + {93a8cd5b-72b8-4b77-80c1-f9d3d668e3a5} - {21e92328-d9e2-4724-945b-b602c6187741} + {2ec7e6fa-bb2f-423e-8ebe-66a7f3946924} diff --git a/Foundation/samples/uuidgen/uuidgen_x64_vs90.vcproj b/Foundation/samples/uuidgen/uuidgen_x64_vs90.vcproj index 270664e48..7aab536df 100644 --- a/Foundation/samples/uuidgen/uuidgen_x64_vs90.vcproj +++ b/Foundation/samples/uuidgen/uuidgen_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> release(); + try + { + close(); + if (_pChannel) _pChannel->release(); + } + catch (...) + { + poco_unexpected(); + } } diff --git a/Foundation/src/Bugcheck.cpp b/Foundation/src/Bugcheck.cpp index b5128067a..ea2cfe9f5 100644 --- a/Foundation/src/Bugcheck.cpp +++ b/Foundation/src/Bugcheck.cpp @@ -57,6 +57,37 @@ void Bugcheck::bugcheck(const char* msg, const char* file, int line) } +void Bugcheck::unexpected(const char* file, int line) +{ +#ifdef _DEBUG + try + { + std::string msg("Unexpected exception in noexcept function or destructor: "); + try + { + throw; + } + catch (Poco::Exception& exc) + { + msg += exc.displayText(); + } + catch (std::exception& exc) + { + msg += exc.what(); + } + catch (...) + { + msg += "unknown exception"; + } + Debugger::enter(msg, file, line); + } + catch (...) + { + } +#endif +} + + void Bugcheck::debugger(const char* file, int line) { Debugger::enter(file, line); @@ -78,6 +109,4 @@ std::string Bugcheck::what(const char* msg, const char* file, int line) } - - } // namespace Poco diff --git a/Foundation/src/DirectoryWatcher.cpp b/Foundation/src/DirectoryWatcher.cpp index 4b518a37d..52af9d551 100644 --- a/Foundation/src/DirectoryWatcher.cpp +++ b/Foundation/src/DirectoryWatcher.cpp @@ -541,8 +541,15 @@ DirectoryWatcher::DirectoryWatcher(const Poco::File& directory, int eventMask, i DirectoryWatcher::~DirectoryWatcher() { - stop(); - delete _pStrategy; + try + { + stop(); + delete _pStrategy; + } + catch (...) + { + poco_unexpected(); + } } diff --git a/Foundation/src/EventLogChannel.cpp b/Foundation/src/EventLogChannel.cpp index 972886f2b..54927c0a7 100644 --- a/Foundation/src/EventLogChannel.cpp +++ b/Foundation/src/EventLogChannel.cpp @@ -81,7 +81,14 @@ EventLogChannel::EventLogChannel(const std::string& name, const std::string& hos EventLogChannel::~EventLogChannel() { - close(); + try + { + close(); + } + catch (...) + { + poco_unexpected(); + } } diff --git a/Foundation/src/FileChannel.cpp b/Foundation/src/FileChannel.cpp index 5d04c69d3..ad73d9a17 100644 --- a/Foundation/src/FileChannel.cpp +++ b/Foundation/src/FileChannel.cpp @@ -71,10 +71,17 @@ FileChannel::FileChannel(const std::string& path): FileChannel::~FileChannel() { - close(); - delete _pRotateStrategy; - delete _pArchiveStrategy; - delete _pPurgeStrategy; + try + { + close(); + delete _pRotateStrategy; + delete _pArchiveStrategy; + delete _pPurgeStrategy; + } + catch (...) + { + poco_unexpected(); + } } diff --git a/Foundation/src/Logger.cpp b/Foundation/src/Logger.cpp index 4381ad16c..bc5d8e45e 100644 --- a/Foundation/src/Logger.cpp +++ b/Foundation/src/Logger.cpp @@ -444,7 +444,14 @@ public: } ~AutoLoggerShutdown() { - Logger::shutdown(); + try + { + Logger::shutdown(); + } + catch (...) + { + poco_unexpected(); + } } }; diff --git a/Foundation/src/NotificationQueue.cpp b/Foundation/src/NotificationQueue.cpp index 0d55aac95..c9c9df269 100644 --- a/Foundation/src/NotificationQueue.cpp +++ b/Foundation/src/NotificationQueue.cpp @@ -30,7 +30,14 @@ NotificationQueue::NotificationQueue() NotificationQueue::~NotificationQueue() { - clear(); + try + { + clear(); + } + catch (...) + { + poco_unexpected(); + } } diff --git a/Foundation/src/NumericString.cpp b/Foundation/src/NumericString.cpp index 2b087efed..b2975ce24 100644 --- a/Foundation/src/NumericString.cpp +++ b/Foundation/src/NumericString.cpp @@ -86,20 +86,16 @@ void insertThousandSep(std::string& str, char thSep, char decSep = '.') /// Used only internally. { poco_assert (decSep != thSep); + if (str.size() == 0) return; std::string::size_type exPos = str.find('e'); + if (exPos == std::string::npos) exPos = str.find('E'); std::string::size_type decPos = str.find(decSep); // there's no rinsert, using forward iterator to go backwards std::string::iterator it = str.end(); std::string::iterator begin = str.begin(); - if (exPos != std::string::npos) - { - while (it != begin) - { - --it; - if ((*it == 'e') || (*it == 'E')) break; - } - } + if (exPos != std::string::npos) it -= str.size() - exPos; + if (decPos != std::string::npos) { while (it != begin) @@ -109,14 +105,19 @@ void insertThousandSep(std::string& str, char thSep, char decSep = '.') } } int thCount = 0; - for (; it != begin; --it) + if (it == str.end()) --it; + for (; it != begin;) { - if (!std::isdigit(*it)) continue; - if (++thCount == 3) - { - it = str.insert(it, thSep); - thCount = 0; - } + std::string::iterator pos = it; + std::string::value_type chr = *it; + std::string::value_type prevChr = *--it; + + if (!std::isdigit(chr)) continue; + + if (++thCount == 3 && std::isdigit(prevChr)) + it = str.insert(pos, thSep); + + if (thCount == 3) thCount = 0; } } diff --git a/Foundation/src/PatternFormatter.cpp b/Foundation/src/PatternFormatter.cpp index b31ccfd2c..29ad388dd 100644 --- a/Foundation/src/PatternFormatter.cpp +++ b/Foundation/src/PatternFormatter.cpp @@ -35,14 +35,14 @@ const std::string PatternFormatter::PROP_TIMES = "times"; PatternFormatter::PatternFormatter(): _localTime(false), - _localTimeOffset(0) + _localTimeOffset(Timestamp::resolution()*(Timezone::utcOffset() + Timezone::dst())) { } PatternFormatter::PatternFormatter(const std::string& format): _localTime(false), - _localTimeOffset(0), + _localTimeOffset(Timestamp::resolution()*(Timezone::utcOffset() + Timezone::dst())), _pattern(format) { ParsePattern(); @@ -57,7 +57,8 @@ PatternFormatter::~PatternFormatter() void PatternFormatter::format(const Message& msg, std::string& text) { Timestamp timestamp = msg.getTime(); - if (_localTime) + bool localTime = _localTime; + if (localTime) { timestamp += _localTimeOffset; } @@ -99,8 +100,8 @@ void PatternFormatter::format(const Message& msg, std::string& text) case 'i': NumberFormatter::append0(text, dateTime.millisecond(), 3); break; case 'c': NumberFormatter::append(text, dateTime.millisecond()/100); break; case 'F': NumberFormatter::append0(text, dateTime.millisecond()*1000 + dateTime.microsecond(), 6); break; - case 'z': text.append(DateTimeFormatter::tzdISO(_localTime ? Timezone::tzd() : DateTimeFormatter::UTC)); break; - case 'Z': text.append(DateTimeFormatter::tzdRFC(_localTime ? Timezone::tzd() : DateTimeFormatter::UTC)); break; + case 'z': text.append(DateTimeFormatter::tzdISO(localTime ? Timezone::tzd() : DateTimeFormatter::UTC)); break; + case 'Z': text.append(DateTimeFormatter::tzdRFC(localTime ? Timezone::tzd() : DateTimeFormatter::UTC)); break; case 'E': NumberFormatter::append(text, msg.getTime().epochTime()); break; case 'v': if (ip->length > msg.getSource().length()) //append spaces @@ -119,6 +120,14 @@ void PatternFormatter::format(const Message& msg, std::string& text) { } break; + case 'L': + if (!localTime) + { + localTime = true; + timestamp += _localTimeOffset; + dateTime = timestamp; + } + break; } } } @@ -128,7 +137,7 @@ void PatternFormatter::ParsePattern() _patternActions.clear(); std::string::const_iterator it = _pattern.begin(); std::string::const_iterator end = _pattern.end(); - PatternAction end_act; + PatternAction endAct; while (it != end) { if (*it == '%') @@ -136,12 +145,12 @@ void PatternFormatter::ParsePattern() if (++it != end) { PatternAction act; - act.prepend = end_act.prepend; - end_act.prepend.clear(); + act.prepend = endAct.prepend; + endAct.prepend.clear(); - if(*it == '[') + if (*it == '[') { - act.key='x'; + act.key = 'x'; ++it; std::string prop; while (it != end && *it != ']') prop += *it++; @@ -150,10 +159,10 @@ void PatternFormatter::ParsePattern() } else { - act.key=*it; - if ((it+1) != end && *(it+1) == '[') + act.key = *it; + if ((it + 1) != end && *(it + 1) == '[') { - it+=2; + it += 2; std::string number; while (it != end && *it != ']') number += *it++; if (it == end) --it; @@ -161,7 +170,7 @@ void PatternFormatter::ParsePattern() { act.length = NumberParser::parse(number); } - catch(...) + catch (...) { } } @@ -172,11 +181,13 @@ void PatternFormatter::ParsePattern() } else { - end_act.prepend += *it++; + endAct.prepend += *it++; } } - if( end_act.prepend.size()) - _patternActions.push_back(end_act); + if (endAct.prepend.size()) + { + _patternActions.push_back(endAct); + } } @@ -190,10 +201,11 @@ void PatternFormatter::setProperty(const std::string& name, const std::string& v else if (name == PROP_TIMES) { _localTime = (value == "local"); - _localTimeOffset = Timestamp::resolution()*( Timezone::utcOffset() + Timezone::dst() ); } else + { Formatter::setProperty(name, value); + } } diff --git a/Foundation/src/PriorityNotificationQueue.cpp b/Foundation/src/PriorityNotificationQueue.cpp index c29ded29b..f3574d5fc 100644 --- a/Foundation/src/PriorityNotificationQueue.cpp +++ b/Foundation/src/PriorityNotificationQueue.cpp @@ -30,7 +30,14 @@ PriorityNotificationQueue::PriorityNotificationQueue() PriorityNotificationQueue::~PriorityNotificationQueue() { - clear(); + try + { + clear(); + } + catch (...) + { + poco_unexpected(); + } } diff --git a/Foundation/src/SimpleFileChannel.cpp b/Foundation/src/SimpleFileChannel.cpp index ab39a7683..23b560cc2 100644 --- a/Foundation/src/SimpleFileChannel.cpp +++ b/Foundation/src/SimpleFileChannel.cpp @@ -52,7 +52,14 @@ SimpleFileChannel::SimpleFileChannel(const std::string& path): SimpleFileChannel::~SimpleFileChannel() { - close(); + try + { + close(); + } + catch (...) + { + poco_unexpected(); + } } diff --git a/Foundation/src/SortedDirectoryIterator.cpp b/Foundation/src/SortedDirectoryIterator.cpp index 3d4e7bf12..69fe8fdf3 100644 --- a/Foundation/src/SortedDirectoryIterator.cpp +++ b/Foundation/src/SortedDirectoryIterator.cpp @@ -62,6 +62,7 @@ SortedDirectoryIterator::~SortedDirectoryIterator() { } + SortedDirectoryIterator& SortedDirectoryIterator::operator ++() { if (!_is_finished) diff --git a/Foundation/src/SplitterChannel.cpp b/Foundation/src/SplitterChannel.cpp index 2b264c566..05d296fd3 100644 --- a/Foundation/src/SplitterChannel.cpp +++ b/Foundation/src/SplitterChannel.cpp @@ -29,7 +29,14 @@ SplitterChannel::SplitterChannel() SplitterChannel::~SplitterChannel() { - close(); + try + { + close(); + } + catch (...) + { + poco_unexpected(); + } } diff --git a/Foundation/src/TemporaryFile.cpp b/Foundation/src/TemporaryFile.cpp index cdc937061..b3fa8b6c6 100644 --- a/Foundation/src/TemporaryFile.cpp +++ b/Foundation/src/TemporaryFile.cpp @@ -37,18 +37,25 @@ public: ~TempFileCollector() { - for (std::set::iterator it = _files.begin(); it != _files.end(); ++it) + try { - try - { - File f(*it); - if (f.exists()) - f.remove(true); - } - catch (Exception&) + for (std::set::iterator it = _files.begin(); it != _files.end(); ++it) { + try + { + File f(*it); + if (f.exists()) + f.remove(true); + } + catch (Exception&) + { + } } } + catch (...) + { + poco_unexpected(); + } } void registerFile(const std::string& path) @@ -81,17 +88,24 @@ TemporaryFile::TemporaryFile(const std::string& tempDir): TemporaryFile::~TemporaryFile() { - if (!_keep) + try { - try - { - if (exists()) - remove(true); - } - catch (Exception&) + if (!_keep) { + try + { + if (exists()) + remove(true); + } + catch (Exception&) + { + } } } + catch (...) + { + poco_unexpected(); + } } diff --git a/Foundation/src/ThreadPool.cpp b/Foundation/src/ThreadPool.cpp index 708542e54..67e0f1a0b 100644 --- a/Foundation/src/ThreadPool.cpp +++ b/Foundation/src/ThreadPool.cpp @@ -280,7 +280,14 @@ ThreadPool::ThreadPool(const std::string& name, ThreadPool::~ThreadPool() { - stopAll(); + try + { + stopAll(); + } + catch (...) + { + poco_unexpected(); + } } diff --git a/Foundation/src/TimedNotificationQueue.cpp b/Foundation/src/TimedNotificationQueue.cpp index 5b0f9296b..c43adcd1b 100644 --- a/Foundation/src/TimedNotificationQueue.cpp +++ b/Foundation/src/TimedNotificationQueue.cpp @@ -29,7 +29,14 @@ TimedNotificationQueue::TimedNotificationQueue() TimedNotificationQueue::~TimedNotificationQueue() { - clear(); + try + { + clear(); + } + catch (...) + { + poco_unexpected(); + } } diff --git a/Foundation/src/Timer.cpp b/Foundation/src/Timer.cpp index 28dd6485a..3b7ff51cd 100644 --- a/Foundation/src/Timer.cpp +++ b/Foundation/src/Timer.cpp @@ -35,7 +35,14 @@ Timer::Timer(long startInterval, long periodicInterval): Timer::~Timer() { - stop(); + try + { + stop(); + } + catch (...) + { + poco_unexpected(); + } } diff --git a/Foundation/src/URI.cpp b/Foundation/src/URI.cpp index 399e965b9..8e61564f9 100644 --- a/Foundation/src/URI.cpp +++ b/Foundation/src/URI.cpp @@ -19,13 +19,14 @@ #include "Poco/Exception.h" #include "Poco/String.h" #include "Poco/NumberParser.h" +#include "Poco/Path.h" namespace Poco { const std::string URI::RESERVED_PATH = "?#"; -const std::string URI::RESERVED_QUERY = "#"; +const std::string URI::RESERVED_QUERY = "#/"; const std::string URI::RESERVED_FRAGMENT = ""; const std::string URI::ILLEGAL = "%<>{}|\\\"^`"; @@ -125,6 +126,16 @@ URI::URI(const URI& baseURI, const std::string& relativeURI): } +URI::URI(const Path& path): + _scheme("file"), + _port(0) +{ + Path absolutePath(path); + absolutePath.makeAbsolute(); + _path = absolutePath.toString(Path::PATH_UNIX); +} + + URI::~URI() { } diff --git a/Foundation/src/Var.cpp b/Foundation/src/Var.cpp index 9e170a6ea..135ff2648 100644 --- a/Foundation/src/Var.cpp +++ b/Foundation/src/Var.cpp @@ -85,7 +85,7 @@ const Var Var::operator + (const Var& other) const { if (isInteger()) { - if(isSigned()) + if (isSigned()) return add(other); else return add(other); @@ -103,7 +103,7 @@ Var& Var::operator += (const Var& other) { if (isInteger()) { - if(isSigned()) + if (isSigned()) return *this = add(other); else return *this = add(other); @@ -121,7 +121,7 @@ const Var Var::operator - (const Var& other) const { if (isInteger()) { - if(isSigned()) + if (isSigned()) return subtract(other); else return subtract(other); @@ -137,7 +137,7 @@ Var& Var::operator -= (const Var& other) { if (isInteger()) { - if(isSigned()) + if (isSigned()) return *this = subtract(other); else return *this = subtract(other); @@ -153,7 +153,7 @@ const Var Var::operator * (const Var& other) const { if (isInteger()) { - if(isSigned()) + if (isSigned()) return multiply(other); else return multiply(other); @@ -169,7 +169,7 @@ Var& Var::operator *= (const Var& other) { if (isInteger()) { - if(isSigned()) + if (isSigned()) return *this = multiply(other); else return *this = multiply(other); @@ -185,7 +185,7 @@ const Var Var::operator / (const Var& other) const { if (isInteger()) { - if(isSigned()) + if (isSigned()) return divide(other); else return divide(other); @@ -201,7 +201,7 @@ Var& Var::operator /= (const Var& other) { if (isInteger()) { - if(isSigned()) + if (isSigned()) return *this = divide(other); else return *this = divide(other); diff --git a/Foundation/src/deflate.c b/Foundation/src/deflate.c index 696957705..abb57bbf1 100644 --- a/Foundation/src/deflate.c +++ b/Foundation/src/deflate.c @@ -92,7 +92,7 @@ local int read_buf OF((z_streamp strm, Bytef *buf, unsigned size)); local uInt longest_match OF((deflate_state *s, IPos cur_match)); #endif -#ifdef DEBUG +#ifdef ZLIB_DEBUG local void check_match OF((deflate_state *s, IPos start, IPos match, int length)); #endif @@ -1349,7 +1349,7 @@ local uInt longest_match(s, cur_match) #endif /* FASTEST */ -#ifdef DEBUG +#ifdef ZLIB_DEBUG /* =========================================================================== * Check that the match at match_start is indeed a match. */ diff --git a/Foundation/src/deflate.h b/Foundation/src/deflate.h index ce0299edd..844079019 100644 --- a/Foundation/src/deflate.h +++ b/Foundation/src/deflate.h @@ -249,7 +249,7 @@ typedef struct internal_state { uInt matches; /* number of string matches in current block */ uInt insert; /* bytes at end of window left to insert */ -#ifdef DEBUG +#ifdef ZLIB_DEBUG ulg compressed_len; /* total bit length of compressed file mod 2^32 */ ulg bits_sent; /* bit length of compressed data sent mod 2^32 */ #endif @@ -309,7 +309,7 @@ void ZLIB_INTERNAL _tr_stored_block OF((deflate_state *s, charf *buf, * used. */ -#ifndef DEBUG +#ifndef ZLIB_DEBUG /* Inline versions of _tr_tally for speed: */ #if defined(GEN_TREES_H) || !defined(STDC) diff --git a/Foundation/src/pcre.h b/Foundation/src/pcre.h index 29a734510..c9f7dd98a 100644 --- a/Foundation/src/pcre.h +++ b/Foundation/src/pcre.h @@ -5,7 +5,7 @@ /* This is the public header file for the PCRE library, to be #included by applications that call the PCRE functions. - Copyright (c) 1997-2008 University of Cambridge + Copyright (c) 1997-2014 University of Cambridge ----------------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without @@ -41,10 +41,10 @@ POSSIBILITY OF SUCH DAMAGE. /* The current PCRE version information. */ -#define PCRE_MAJOR 7 -#define PCRE_MINOR 8 +#define PCRE_MAJOR 8 +#define PCRE_MINOR 35 #define PCRE_PRERELEASE -#define PCRE_DATE 2008-09-05 +#define PCRE_DATE 2014-04-04 /* When an application links to a PCRE DLL in Windows, the symbols that are imported have to be identified as such. When building PCRE, the appropriate @@ -95,63 +95,162 @@ it is needed here for malloc. */ extern "C" { #endif -/* Options */ +/* Public options. Some are compile-time only, some are run-time only, and some +are both. Most of the compile-time options are saved with the compiled regex so +that they can be inspected during studying (and therefore JIT compiling). Note +that pcre_study() has its own set of options. Originally, all the options +defined here used distinct bits. However, almost all the bits in a 32-bit word +are now used, so in order to conserve them, option bits that were previously +only recognized at matching time (i.e. by pcre_exec() or pcre_dfa_exec()) may +also be used for compile-time options that affect only compiling and are not +relevant for studying or JIT compiling. -#define PCRE_CASELESS 0x00000001 -#define PCRE_MULTILINE 0x00000002 -#define PCRE_DOTALL 0x00000004 -#define PCRE_EXTENDED 0x00000008 -#define PCRE_ANCHORED 0x00000010 -#define PCRE_DOLLAR_ENDONLY 0x00000020 -#define PCRE_EXTRA 0x00000040 -#define PCRE_NOTBOL 0x00000080 -#define PCRE_NOTEOL 0x00000100 -#define PCRE_UNGREEDY 0x00000200 -#define PCRE_NOTEMPTY 0x00000400 -#define PCRE_UTF8 0x00000800 -#define PCRE_NO_AUTO_CAPTURE 0x00001000 -#define PCRE_NO_UTF8_CHECK 0x00002000 -#define PCRE_AUTO_CALLOUT 0x00004000 -#define PCRE_PARTIAL 0x00008000 -#define PCRE_DFA_SHORTEST 0x00010000 -#define PCRE_DFA_RESTART 0x00020000 -#define PCRE_FIRSTLINE 0x00040000 -#define PCRE_DUPNAMES 0x00080000 -#define PCRE_NEWLINE_CR 0x00100000 -#define PCRE_NEWLINE_LF 0x00200000 -#define PCRE_NEWLINE_CRLF 0x00300000 -#define PCRE_NEWLINE_ANY 0x00400000 -#define PCRE_NEWLINE_ANYCRLF 0x00500000 -#define PCRE_BSR_ANYCRLF 0x00800000 -#define PCRE_BSR_UNICODE 0x01000000 -#define PCRE_JAVASCRIPT_COMPAT 0x02000000 +Some options for pcre_compile() change its behaviour but do not affect the +behaviour of the execution functions. Other options are passed through to the +execution functions and affect their behaviour, with or without affecting the +behaviour of pcre_compile(). + +Options that can be passed to pcre_compile() are tagged Cx below, with these +variants: + +C1 Affects compile only +C2 Does not affect compile; affects exec, dfa_exec +C3 Affects compile, exec, dfa_exec +C4 Affects compile, exec, dfa_exec, study +C5 Affects compile, exec, study + +Options that can be set for pcre_exec() and/or pcre_dfa_exec() are flagged with +E and D, respectively. They take precedence over C3, C4, and C5 settings passed +from pcre_compile(). Those that are compatible with JIT execution are flagged +with J. */ + +#define PCRE_CASELESS 0x00000001 /* C1 */ +#define PCRE_MULTILINE 0x00000002 /* C1 */ +#define PCRE_DOTALL 0x00000004 /* C1 */ +#define PCRE_EXTENDED 0x00000008 /* C1 */ +#define PCRE_ANCHORED 0x00000010 /* C4 E D */ +#define PCRE_DOLLAR_ENDONLY 0x00000020 /* C2 */ +#define PCRE_EXTRA 0x00000040 /* C1 */ +#define PCRE_NOTBOL 0x00000080 /* E D J */ +#define PCRE_NOTEOL 0x00000100 /* E D J */ +#define PCRE_UNGREEDY 0x00000200 /* C1 */ +#define PCRE_NOTEMPTY 0x00000400 /* E D J */ +#define PCRE_UTF8 0x00000800 /* C4 ) */ +#define PCRE_UTF16 0x00000800 /* C4 ) Synonyms */ +#define PCRE_UTF32 0x00000800 /* C4 ) */ +#define PCRE_NO_AUTO_CAPTURE 0x00001000 /* C1 */ +#define PCRE_NO_UTF8_CHECK 0x00002000 /* C1 E D J ) */ +#define PCRE_NO_UTF16_CHECK 0x00002000 /* C1 E D J ) Synonyms */ +#define PCRE_NO_UTF32_CHECK 0x00002000 /* C1 E D J ) */ +#define PCRE_AUTO_CALLOUT 0x00004000 /* C1 */ +#define PCRE_PARTIAL_SOFT 0x00008000 /* E D J ) Synonyms */ +#define PCRE_PARTIAL 0x00008000 /* E D J ) */ + +/* This pair use the same bit. */ +#define PCRE_NEVER_UTF 0x00010000 /* C1 ) Overlaid */ +#define PCRE_DFA_SHORTEST 0x00010000 /* D ) Overlaid */ + +/* This pair use the same bit. */ +#define PCRE_NO_AUTO_POSSESS 0x00020000 /* C1 ) Overlaid */ +#define PCRE_DFA_RESTART 0x00020000 /* D ) Overlaid */ + +#define PCRE_FIRSTLINE 0x00040000 /* C3 */ +#define PCRE_DUPNAMES 0x00080000 /* C1 */ +#define PCRE_NEWLINE_CR 0x00100000 /* C3 E D */ +#define PCRE_NEWLINE_LF 0x00200000 /* C3 E D */ +#define PCRE_NEWLINE_CRLF 0x00300000 /* C3 E D */ +#define PCRE_NEWLINE_ANY 0x00400000 /* C3 E D */ +#define PCRE_NEWLINE_ANYCRLF 0x00500000 /* C3 E D */ +#define PCRE_BSR_ANYCRLF 0x00800000 /* C3 E D */ +#define PCRE_BSR_UNICODE 0x01000000 /* C3 E D */ +#define PCRE_JAVASCRIPT_COMPAT 0x02000000 /* C5 */ +#define PCRE_NO_START_OPTIMIZE 0x04000000 /* C2 E D ) Synonyms */ +#define PCRE_NO_START_OPTIMISE 0x04000000 /* C2 E D ) */ +#define PCRE_PARTIAL_HARD 0x08000000 /* E D J */ +#define PCRE_NOTEMPTY_ATSTART 0x10000000 /* E D J */ +#define PCRE_UCP 0x20000000 /* C3 */ /* Exec-time and get/set-time error codes */ -#define PCRE_ERROR_NOMATCH (-1) -#define PCRE_ERROR_NULL (-2) -#define PCRE_ERROR_BADOPTION (-3) -#define PCRE_ERROR_BADMAGIC (-4) -#define PCRE_ERROR_UNKNOWN_OPCODE (-5) -#define PCRE_ERROR_UNKNOWN_NODE (-5) /* For backward compatibility */ -#define PCRE_ERROR_NOMEMORY (-6) -#define PCRE_ERROR_NOSUBSTRING (-7) -#define PCRE_ERROR_MATCHLIMIT (-8) -#define PCRE_ERROR_CALLOUT (-9) /* Never used by PCRE itself */ -#define PCRE_ERROR_BADUTF8 (-10) -#define PCRE_ERROR_BADUTF8_OFFSET (-11) -#define PCRE_ERROR_PARTIAL (-12) -#define PCRE_ERROR_BADPARTIAL (-13) -#define PCRE_ERROR_INTERNAL (-14) -#define PCRE_ERROR_BADCOUNT (-15) -#define PCRE_ERROR_DFA_UITEM (-16) -#define PCRE_ERROR_DFA_UCOND (-17) -#define PCRE_ERROR_DFA_UMLIMIT (-18) -#define PCRE_ERROR_DFA_WSSIZE (-19) -#define PCRE_ERROR_DFA_RECURSE (-20) -#define PCRE_ERROR_RECURSIONLIMIT (-21) -#define PCRE_ERROR_NULLWSLIMIT (-22) /* No longer actually used */ -#define PCRE_ERROR_BADNEWLINE (-23) +#define PCRE_ERROR_NOMATCH (-1) +#define PCRE_ERROR_NULL (-2) +#define PCRE_ERROR_BADOPTION (-3) +#define PCRE_ERROR_BADMAGIC (-4) +#define PCRE_ERROR_UNKNOWN_OPCODE (-5) +#define PCRE_ERROR_UNKNOWN_NODE (-5) /* For backward compatibility */ +#define PCRE_ERROR_NOMEMORY (-6) +#define PCRE_ERROR_NOSUBSTRING (-7) +#define PCRE_ERROR_MATCHLIMIT (-8) +#define PCRE_ERROR_CALLOUT (-9) /* Never used by PCRE itself */ +#define PCRE_ERROR_BADUTF8 (-10) /* Same for 8/16/32 */ +#define PCRE_ERROR_BADUTF16 (-10) /* Same for 8/16/32 */ +#define PCRE_ERROR_BADUTF32 (-10) /* Same for 8/16/32 */ +#define PCRE_ERROR_BADUTF8_OFFSET (-11) /* Same for 8/16 */ +#define PCRE_ERROR_BADUTF16_OFFSET (-11) /* Same for 8/16 */ +#define PCRE_ERROR_PARTIAL (-12) +#define PCRE_ERROR_BADPARTIAL (-13) +#define PCRE_ERROR_INTERNAL (-14) +#define PCRE_ERROR_BADCOUNT (-15) +#define PCRE_ERROR_DFA_UITEM (-16) +#define PCRE_ERROR_DFA_UCOND (-17) +#define PCRE_ERROR_DFA_UMLIMIT (-18) +#define PCRE_ERROR_DFA_WSSIZE (-19) +#define PCRE_ERROR_DFA_RECURSE (-20) +#define PCRE_ERROR_RECURSIONLIMIT (-21) +#define PCRE_ERROR_NULLWSLIMIT (-22) /* No longer actually used */ +#define PCRE_ERROR_BADNEWLINE (-23) +#define PCRE_ERROR_BADOFFSET (-24) +#define PCRE_ERROR_SHORTUTF8 (-25) +#define PCRE_ERROR_SHORTUTF16 (-25) /* Same for 8/16 */ +#define PCRE_ERROR_RECURSELOOP (-26) +#define PCRE_ERROR_JIT_STACKLIMIT (-27) +#define PCRE_ERROR_BADMODE (-28) +#define PCRE_ERROR_BADENDIANNESS (-29) +#define PCRE_ERROR_DFA_BADRESTART (-30) +#define PCRE_ERROR_JIT_BADOPTION (-31) +#define PCRE_ERROR_BADLENGTH (-32) +#define PCRE_ERROR_UNSET (-33) + +/* Specific error codes for UTF-8 validity checks */ + +#define PCRE_UTF8_ERR0 0 +#define PCRE_UTF8_ERR1 1 +#define PCRE_UTF8_ERR2 2 +#define PCRE_UTF8_ERR3 3 +#define PCRE_UTF8_ERR4 4 +#define PCRE_UTF8_ERR5 5 +#define PCRE_UTF8_ERR6 6 +#define PCRE_UTF8_ERR7 7 +#define PCRE_UTF8_ERR8 8 +#define PCRE_UTF8_ERR9 9 +#define PCRE_UTF8_ERR10 10 +#define PCRE_UTF8_ERR11 11 +#define PCRE_UTF8_ERR12 12 +#define PCRE_UTF8_ERR13 13 +#define PCRE_UTF8_ERR14 14 +#define PCRE_UTF8_ERR15 15 +#define PCRE_UTF8_ERR16 16 +#define PCRE_UTF8_ERR17 17 +#define PCRE_UTF8_ERR18 18 +#define PCRE_UTF8_ERR19 19 +#define PCRE_UTF8_ERR20 20 +#define PCRE_UTF8_ERR21 21 +#define PCRE_UTF8_ERR22 22 /* Unused (was non-character) */ + +/* Specific error codes for UTF-16 validity checks */ + +#define PCRE_UTF16_ERR0 0 +#define PCRE_UTF16_ERR1 1 +#define PCRE_UTF16_ERR2 2 +#define PCRE_UTF16_ERR3 3 +#define PCRE_UTF16_ERR4 4 /* Unused (was non-character) */ + +/* Specific error codes for UTF-32 validity checks */ + +#define PCRE_UTF32_ERR0 0 +#define PCRE_UTF32_ERR1 1 +#define PCRE_UTF32_ERR2 2 /* Unused (was non-character) */ +#define PCRE_UTF32_ERR3 3 /* Request types for pcre_fullinfo() */ @@ -171,6 +270,17 @@ extern "C" { #define PCRE_INFO_OKPARTIAL 12 #define PCRE_INFO_JCHANGED 13 #define PCRE_INFO_HASCRORLF 14 +#define PCRE_INFO_MINLENGTH 15 +#define PCRE_INFO_JIT 16 +#define PCRE_INFO_JITSIZE 17 +#define PCRE_INFO_MAXLOOKBEHIND 18 +#define PCRE_INFO_FIRSTCHARACTER 19 +#define PCRE_INFO_FIRSTCHARACTERFLAGS 20 +#define PCRE_INFO_REQUIREDCHAR 21 +#define PCRE_INFO_REQUIREDCHARFLAGS 22 +#define PCRE_INFO_MATCHLIMIT 23 +#define PCRE_INFO_RECURSIONLIMIT 24 +#define PCRE_INFO_MATCH_EMPTY 25 /* Request types for pcre_config(). Do not re-arrange, in order to remain compatible. */ @@ -184,8 +294,21 @@ compatible. */ #define PCRE_CONFIG_UNICODE_PROPERTIES 6 #define PCRE_CONFIG_MATCH_LIMIT_RECURSION 7 #define PCRE_CONFIG_BSR 8 +#define PCRE_CONFIG_JIT 9 +#define PCRE_CONFIG_UTF16 10 +#define PCRE_CONFIG_JITTARGET 11 +#define PCRE_CONFIG_UTF32 12 +#define PCRE_CONFIG_PARENS_LIMIT 13 -/* Bit flags for the pcre_extra structure. Do not re-arrange or redefine +/* Request types for pcre_study(). Do not re-arrange, in order to remain +compatible. */ + +#define PCRE_STUDY_JIT_COMPILE 0x0001 +#define PCRE_STUDY_JIT_PARTIAL_SOFT_COMPILE 0x0002 +#define PCRE_STUDY_JIT_PARTIAL_HARD_COMPILE 0x0004 +#define PCRE_STUDY_EXTRA_NEEDED 0x0008 + +/* Bit flags for the pcre[16|32]_extra structure. Do not re-arrange or redefine these bits, just add new ones on the end, in order to remain compatible. */ #define PCRE_EXTRA_STUDY_DATA 0x0001 @@ -193,11 +316,50 @@ these bits, just add new ones on the end, in order to remain compatible. */ #define PCRE_EXTRA_CALLOUT_DATA 0x0004 #define PCRE_EXTRA_TABLES 0x0008 #define PCRE_EXTRA_MATCH_LIMIT_RECURSION 0x0010 +#define PCRE_EXTRA_MARK 0x0020 +#define PCRE_EXTRA_EXECUTABLE_JIT 0x0040 /* Types */ -struct real_pcre; /* declaration; the definition is private */ -typedef struct real_pcre pcre; +struct real_pcre8_or_16; /* declaration; the definition is private */ +typedef struct real_pcre8_or_16 pcre; + +struct real_pcre8_or_16; /* declaration; the definition is private */ +typedef struct real_pcre8_or_16 pcre16; + +struct real_pcre32; /* declaration; the definition is private */ +typedef struct real_pcre32 pcre32; + +struct real_pcre_jit_stack; /* declaration; the definition is private */ +typedef struct real_pcre_jit_stack pcre_jit_stack; + +struct real_pcre16_jit_stack; /* declaration; the definition is private */ +typedef struct real_pcre16_jit_stack pcre16_jit_stack; + +struct real_pcre32_jit_stack; /* declaration; the definition is private */ +typedef struct real_pcre32_jit_stack pcre32_jit_stack; + +/* If PCRE is compiled with 16 bit character support, PCRE_UCHAR16 must contain +a 16 bit wide signed data type. Otherwise it can be a dummy data type since +pcre16 functions are not implemented. There is a check for this in pcre_internal.h. */ +#ifndef PCRE_UCHAR16 +#define PCRE_UCHAR16 unsigned short +#endif + +#ifndef PCRE_SPTR16 +#define PCRE_SPTR16 const PCRE_UCHAR16 * +#endif + +/* If PCRE is compiled with 32 bit character support, PCRE_UCHAR32 must contain +a 32 bit wide signed data type. Otherwise it can be a dummy data type since +pcre32 functions are not implemented. There is a check for this in pcre_internal.h. */ +#ifndef PCRE_UCHAR32 +#define PCRE_UCHAR32 unsigned int +#endif + +#ifndef PCRE_SPTR32 +#define PCRE_SPTR32 const PCRE_UCHAR32 * +#endif /* When PCRE is compiled as a C++ library, the subject pointer type can be replaced with a custom type. For conventional use, the public interface is a @@ -218,8 +380,36 @@ typedef struct pcre_extra { void *callout_data; /* Data passed back in callouts */ const unsigned char *tables; /* Pointer to character tables */ unsigned long int match_limit_recursion; /* Max recursive calls to match() */ + unsigned char **mark; /* For passing back a mark pointer */ + void *executable_jit; /* Contains a pointer to a compiled jit code */ } pcre_extra; +/* Same structure as above, but with 16 bit char pointers. */ + +typedef struct pcre16_extra { + unsigned long int flags; /* Bits for which fields are set */ + void *study_data; /* Opaque data from pcre_study() */ + unsigned long int match_limit; /* Maximum number of calls to match() */ + void *callout_data; /* Data passed back in callouts */ + const unsigned char *tables; /* Pointer to character tables */ + unsigned long int match_limit_recursion; /* Max recursive calls to match() */ + PCRE_UCHAR16 **mark; /* For passing back a mark pointer */ + void *executable_jit; /* Contains a pointer to a compiled jit code */ +} pcre16_extra; + +/* Same structure as above, but with 32 bit char pointers. */ + +typedef struct pcre32_extra { + unsigned long int flags; /* Bits for which fields are set */ + void *study_data; /* Opaque data from pcre_study() */ + unsigned long int match_limit; /* Maximum number of calls to match() */ + void *callout_data; /* Data passed back in callouts */ + const unsigned char *tables; /* Pointer to character tables */ + unsigned long int match_limit_recursion; /* Max recursive calls to match() */ + PCRE_UCHAR32 **mark; /* For passing back a mark pointer */ + void *executable_jit; /* Contains a pointer to a compiled jit code */ +} pcre32_extra; + /* The structure for passing out data via the pcre_callout_function. We use a structure so that new fields can be added on the end in future versions, without changing the API of the function, thereby allowing old clients to work @@ -240,9 +430,55 @@ typedef struct pcre_callout_block { /* ------------------- Added for Version 1 -------------------------- */ int pattern_position; /* Offset to next item in the pattern */ int next_item_length; /* Length of next item in the pattern */ + /* ------------------- Added for Version 2 -------------------------- */ + const unsigned char *mark; /* Pointer to current mark or NULL */ /* ------------------------------------------------------------------ */ } pcre_callout_block; +/* Same structure as above, but with 16 bit char pointers. */ + +typedef struct pcre16_callout_block { + int version; /* Identifies version of block */ + /* ------------------------ Version 0 ------------------------------- */ + int callout_number; /* Number compiled into pattern */ + int *offset_vector; /* The offset vector */ + PCRE_SPTR16 subject; /* The subject being matched */ + int subject_length; /* The length of the subject */ + int start_match; /* Offset to start of this match attempt */ + int current_position; /* Where we currently are in the subject */ + int capture_top; /* Max current capture */ + int capture_last; /* Most recently closed capture */ + void *callout_data; /* Data passed in with the call */ + /* ------------------- Added for Version 1 -------------------------- */ + int pattern_position; /* Offset to next item in the pattern */ + int next_item_length; /* Length of next item in the pattern */ + /* ------------------- Added for Version 2 -------------------------- */ + const PCRE_UCHAR16 *mark; /* Pointer to current mark or NULL */ + /* ------------------------------------------------------------------ */ +} pcre16_callout_block; + +/* Same structure as above, but with 32 bit char pointers. */ + +typedef struct pcre32_callout_block { + int version; /* Identifies version of block */ + /* ------------------------ Version 0 ------------------------------- */ + int callout_number; /* Number compiled into pattern */ + int *offset_vector; /* The offset vector */ + PCRE_SPTR32 subject; /* The subject being matched */ + int subject_length; /* The length of the subject */ + int start_match; /* Offset to start of this match attempt */ + int current_position; /* Where we currently are in the subject */ + int capture_top; /* Max current capture */ + int capture_last; /* Most recently closed capture */ + void *callout_data; /* Data passed in with the call */ + /* ------------------- Added for Version 1 -------------------------- */ + int pattern_position; /* Offset to next item in the pattern */ + int next_item_length; /* Length of next item in the pattern */ + /* ------------------- Added for Version 2 -------------------------- */ + const PCRE_UCHAR32 *mark; /* Pointer to current mark or NULL */ + /* ------------------------------------------------------------------ */ +} pcre32_callout_block; + /* Indirection for store get and free functions. These can be set to alternative malloc/free functions if required. Special ones are used in the non-recursive case for "frames". There is also an optional callout function @@ -255,47 +491,184 @@ PCRE_EXP_DECL void (*pcre_free)(void *); PCRE_EXP_DECL void *(*pcre_stack_malloc)(size_t); PCRE_EXP_DECL void (*pcre_stack_free)(void *); PCRE_EXP_DECL int (*pcre_callout)(pcre_callout_block *); +PCRE_EXP_DECL int (*pcre_stack_guard)(void); + +PCRE_EXP_DECL void *(*pcre16_malloc)(size_t); +PCRE_EXP_DECL void (*pcre16_free)(void *); +PCRE_EXP_DECL void *(*pcre16_stack_malloc)(size_t); +PCRE_EXP_DECL void (*pcre16_stack_free)(void *); +PCRE_EXP_DECL int (*pcre16_callout)(pcre16_callout_block *); +PCRE_EXP_DECL int (*pcre16_stack_guard)(void); + +PCRE_EXP_DECL void *(*pcre32_malloc)(size_t); +PCRE_EXP_DECL void (*pcre32_free)(void *); +PCRE_EXP_DECL void *(*pcre32_stack_malloc)(size_t); +PCRE_EXP_DECL void (*pcre32_stack_free)(void *); +PCRE_EXP_DECL int (*pcre32_callout)(pcre32_callout_block *); +PCRE_EXP_DECL int (*pcre32_stack_guard)(void); #else /* VPCOMPAT */ PCRE_EXP_DECL void *pcre_malloc(size_t); PCRE_EXP_DECL void pcre_free(void *); PCRE_EXP_DECL void *pcre_stack_malloc(size_t); PCRE_EXP_DECL void pcre_stack_free(void *); PCRE_EXP_DECL int pcre_callout(pcre_callout_block *); +PCRE_EXP_DECL int pcre_stack_guard(void); + +PCRE_EXP_DECL void *pcre16_malloc(size_t); +PCRE_EXP_DECL void pcre16_free(void *); +PCRE_EXP_DECL void *pcre16_stack_malloc(size_t); +PCRE_EXP_DECL void pcre16_stack_free(void *); +PCRE_EXP_DECL int pcre16_callout(pcre16_callout_block *); +PCRE_EXP_DECL int pcre16_stack_guard(void); + +PCRE_EXP_DECL void *pcre32_malloc(size_t); +PCRE_EXP_DECL void pcre32_free(void *); +PCRE_EXP_DECL void *pcre32_stack_malloc(size_t); +PCRE_EXP_DECL void pcre32_stack_free(void *); +PCRE_EXP_DECL int pcre32_callout(pcre32_callout_block *); +PCRE_EXP_DECL int pcre32_stack_guard(void); #endif /* VPCOMPAT */ +/* User defined callback which provides a stack just before the match starts. */ + +typedef pcre_jit_stack *(*pcre_jit_callback)(void *); +typedef pcre16_jit_stack *(*pcre16_jit_callback)(void *); +typedef pcre32_jit_stack *(*pcre32_jit_callback)(void *); + /* Exported PCRE functions */ PCRE_EXP_DECL pcre *pcre_compile(const char *, int, const char **, int *, const unsigned char *); +PCRE_EXP_DECL pcre16 *pcre16_compile(PCRE_SPTR16, int, const char **, int *, + const unsigned char *); +PCRE_EXP_DECL pcre32 *pcre32_compile(PCRE_SPTR32, int, const char **, int *, + const unsigned char *); PCRE_EXP_DECL pcre *pcre_compile2(const char *, int, int *, const char **, int *, const unsigned char *); +PCRE_EXP_DECL pcre16 *pcre16_compile2(PCRE_SPTR16, int, int *, const char **, + int *, const unsigned char *); +PCRE_EXP_DECL pcre32 *pcre32_compile2(PCRE_SPTR32, int, int *, const char **, + int *, const unsigned char *); PCRE_EXP_DECL int pcre_config(int, void *); +PCRE_EXP_DECL int pcre16_config(int, void *); +PCRE_EXP_DECL int pcre32_config(int, void *); PCRE_EXP_DECL int pcre_copy_named_substring(const pcre *, const char *, int *, int, const char *, char *, int); -PCRE_EXP_DECL int pcre_copy_substring(const char *, int *, int, int, char *, - int); +PCRE_EXP_DECL int pcre16_copy_named_substring(const pcre16 *, PCRE_SPTR16, + int *, int, PCRE_SPTR16, PCRE_UCHAR16 *, int); +PCRE_EXP_DECL int pcre32_copy_named_substring(const pcre32 *, PCRE_SPTR32, + int *, int, PCRE_SPTR32, PCRE_UCHAR32 *, int); +PCRE_EXP_DECL int pcre_copy_substring(const char *, int *, int, int, + char *, int); +PCRE_EXP_DECL int pcre16_copy_substring(PCRE_SPTR16, int *, int, int, + PCRE_UCHAR16 *, int); +PCRE_EXP_DECL int pcre32_copy_substring(PCRE_SPTR32, int *, int, int, + PCRE_UCHAR32 *, int); PCRE_EXP_DECL int pcre_dfa_exec(const pcre *, const pcre_extra *, const char *, int, int, int, int *, int , int *, int); +PCRE_EXP_DECL int pcre16_dfa_exec(const pcre16 *, const pcre16_extra *, + PCRE_SPTR16, int, int, int, int *, int , int *, int); +PCRE_EXP_DECL int pcre32_dfa_exec(const pcre32 *, const pcre32_extra *, + PCRE_SPTR32, int, int, int, int *, int , int *, int); PCRE_EXP_DECL int pcre_exec(const pcre *, const pcre_extra *, PCRE_SPTR, int, int, int, int *, int); +PCRE_EXP_DECL int pcre16_exec(const pcre16 *, const pcre16_extra *, + PCRE_SPTR16, int, int, int, int *, int); +PCRE_EXP_DECL int pcre32_exec(const pcre32 *, const pcre32_extra *, + PCRE_SPTR32, int, int, int, int *, int); +PCRE_EXP_DECL int pcre_jit_exec(const pcre *, const pcre_extra *, + PCRE_SPTR, int, int, int, int *, int, + pcre_jit_stack *); +PCRE_EXP_DECL int pcre16_jit_exec(const pcre16 *, const pcre16_extra *, + PCRE_SPTR16, int, int, int, int *, int, + pcre16_jit_stack *); +PCRE_EXP_DECL int pcre32_jit_exec(const pcre32 *, const pcre32_extra *, + PCRE_SPTR32, int, int, int, int *, int, + pcre32_jit_stack *); PCRE_EXP_DECL void pcre_free_substring(const char *); +PCRE_EXP_DECL void pcre16_free_substring(PCRE_SPTR16); +PCRE_EXP_DECL void pcre32_free_substring(PCRE_SPTR32); PCRE_EXP_DECL void pcre_free_substring_list(const char **); +PCRE_EXP_DECL void pcre16_free_substring_list(PCRE_SPTR16 *); +PCRE_EXP_DECL void pcre32_free_substring_list(PCRE_SPTR32 *); PCRE_EXP_DECL int pcre_fullinfo(const pcre *, const pcre_extra *, int, void *); +PCRE_EXP_DECL int pcre16_fullinfo(const pcre16 *, const pcre16_extra *, int, + void *); +PCRE_EXP_DECL int pcre32_fullinfo(const pcre32 *, const pcre32_extra *, int, + void *); PCRE_EXP_DECL int pcre_get_named_substring(const pcre *, const char *, int *, int, const char *, const char **); +PCRE_EXP_DECL int pcre16_get_named_substring(const pcre16 *, PCRE_SPTR16, + int *, int, PCRE_SPTR16, PCRE_SPTR16 *); +PCRE_EXP_DECL int pcre32_get_named_substring(const pcre32 *, PCRE_SPTR32, + int *, int, PCRE_SPTR32, PCRE_SPTR32 *); PCRE_EXP_DECL int pcre_get_stringnumber(const pcre *, const char *); +PCRE_EXP_DECL int pcre16_get_stringnumber(const pcre16 *, PCRE_SPTR16); +PCRE_EXP_DECL int pcre32_get_stringnumber(const pcre32 *, PCRE_SPTR32); PCRE_EXP_DECL int pcre_get_stringtable_entries(const pcre *, const char *, char **, char **); +PCRE_EXP_DECL int pcre16_get_stringtable_entries(const pcre16 *, PCRE_SPTR16, + PCRE_UCHAR16 **, PCRE_UCHAR16 **); +PCRE_EXP_DECL int pcre32_get_stringtable_entries(const pcre32 *, PCRE_SPTR32, + PCRE_UCHAR32 **, PCRE_UCHAR32 **); PCRE_EXP_DECL int pcre_get_substring(const char *, int *, int, int, const char **); +PCRE_EXP_DECL int pcre16_get_substring(PCRE_SPTR16, int *, int, int, + PCRE_SPTR16 *); +PCRE_EXP_DECL int pcre32_get_substring(PCRE_SPTR32, int *, int, int, + PCRE_SPTR32 *); PCRE_EXP_DECL int pcre_get_substring_list(const char *, int *, int, const char ***); -PCRE_EXP_DECL int pcre_info(const pcre *, int *, int *); +PCRE_EXP_DECL int pcre16_get_substring_list(PCRE_SPTR16, int *, int, + PCRE_SPTR16 **); +PCRE_EXP_DECL int pcre32_get_substring_list(PCRE_SPTR32, int *, int, + PCRE_SPTR32 **); PCRE_EXP_DECL const unsigned char *pcre_maketables(void); +PCRE_EXP_DECL const unsigned char *pcre16_maketables(void); +PCRE_EXP_DECL const unsigned char *pcre32_maketables(void); PCRE_EXP_DECL int pcre_refcount(pcre *, int); +PCRE_EXP_DECL int pcre16_refcount(pcre16 *, int); +PCRE_EXP_DECL int pcre32_refcount(pcre32 *, int); PCRE_EXP_DECL pcre_extra *pcre_study(const pcre *, int, const char **); +PCRE_EXP_DECL pcre16_extra *pcre16_study(const pcre16 *, int, const char **); +PCRE_EXP_DECL pcre32_extra *pcre32_study(const pcre32 *, int, const char **); +PCRE_EXP_DECL void pcre_free_study(pcre_extra *); +PCRE_EXP_DECL void pcre16_free_study(pcre16_extra *); +PCRE_EXP_DECL void pcre32_free_study(pcre32_extra *); PCRE_EXP_DECL const char *pcre_version(void); +PCRE_EXP_DECL const char *pcre16_version(void); +PCRE_EXP_DECL const char *pcre32_version(void); + +/* Utility functions for byte order swaps. */ +PCRE_EXP_DECL int pcre_pattern_to_host_byte_order(pcre *, pcre_extra *, + const unsigned char *); +PCRE_EXP_DECL int pcre16_pattern_to_host_byte_order(pcre16 *, pcre16_extra *, + const unsigned char *); +PCRE_EXP_DECL int pcre32_pattern_to_host_byte_order(pcre32 *, pcre32_extra *, + const unsigned char *); +PCRE_EXP_DECL int pcre16_utf16_to_host_byte_order(PCRE_UCHAR16 *, + PCRE_SPTR16, int, int *, int); +PCRE_EXP_DECL int pcre32_utf32_to_host_byte_order(PCRE_UCHAR32 *, + PCRE_SPTR32, int, int *, int); + +/* JIT compiler related functions. */ + +PCRE_EXP_DECL pcre_jit_stack *pcre_jit_stack_alloc(int, int); +PCRE_EXP_DECL pcre16_jit_stack *pcre16_jit_stack_alloc(int, int); +PCRE_EXP_DECL pcre32_jit_stack *pcre32_jit_stack_alloc(int, int); +PCRE_EXP_DECL void pcre_jit_stack_free(pcre_jit_stack *); +PCRE_EXP_DECL void pcre16_jit_stack_free(pcre16_jit_stack *); +PCRE_EXP_DECL void pcre32_jit_stack_free(pcre32_jit_stack *); +PCRE_EXP_DECL void pcre_assign_jit_stack(pcre_extra *, + pcre_jit_callback, void *); +PCRE_EXP_DECL void pcre16_assign_jit_stack(pcre16_extra *, + pcre16_jit_callback, void *); +PCRE_EXP_DECL void pcre32_assign_jit_stack(pcre32_extra *, + pcre32_jit_callback, void *); +PCRE_EXP_DECL void pcre_jit_free_unused_memory(void); +PCRE_EXP_DECL void pcre16_jit_free_unused_memory(void); +PCRE_EXP_DECL void pcre32_jit_free_unused_memory(void); #ifdef __cplusplus } /* extern "C" */ diff --git a/Foundation/src/pcre_byte_order.c b/Foundation/src/pcre_byte_order.c new file mode 100644 index 000000000..f5ba9c76f --- /dev/null +++ b/Foundation/src/pcre_byte_order.c @@ -0,0 +1,315 @@ +/************************************************* +* Perl-Compatible Regular Expressions * +*************************************************/ + +/* PCRE is a library of functions to support regular expressions whose syntax +and semantics are as close as possible to those of the Perl 5 language. + + Written by Philip Hazel + Copyright (c) 1997-2014 University of Cambridge + +----------------------------------------------------------------------------- +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + * Neither the name of the University of Cambridge nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +----------------------------------------------------------------------------- +*/ + + +/* This module contains an internal function that tests a compiled pattern to +see if it was compiled with the opposite endianness. If so, it uses an +auxiliary local function to flip the appropriate bytes. */ + +#include "pcre_config.h" +#include "pcre_internal.h" + + +/************************************************* +* Swap byte functions * +*************************************************/ + +/* The following functions swap the bytes of a pcre_uint16 +and pcre_uint32 value. + +Arguments: + value any number + +Returns: the byte swapped value +*/ + +static pcre_uint32 +swap_uint32(pcre_uint32 value) +{ +return ((value & 0x000000ff) << 24) | + ((value & 0x0000ff00) << 8) | + ((value & 0x00ff0000) >> 8) | + (value >> 24); +} + +static pcre_uint16 +swap_uint16(pcre_uint16 value) +{ +return (value >> 8) | (value << 8); +} + + +/************************************************* +* Test for a byte-flipped compiled regex * +*************************************************/ + +/* This function swaps the bytes of a compiled pattern usually +loaded form the disk. It also sets the tables pointer, which +is likely an invalid pointer after reload. + +Arguments: + argument_re points to the compiled expression + extra_data points to extra data or is NULL + tables points to the character tables or NULL + +Returns: 0 if the swap is successful, negative on error +*/ + +#if defined COMPILE_PCRE8 +PCRE_EXP_DECL int pcre_pattern_to_host_byte_order(pcre *argument_re, + pcre_extra *extra_data, const unsigned char *tables) +#elif defined COMPILE_PCRE16 +PCRE_EXP_DECL int pcre16_pattern_to_host_byte_order(pcre16 *argument_re, + pcre16_extra *extra_data, const unsigned char *tables) +#elif defined COMPILE_PCRE32 +PCRE_EXP_DECL int pcre32_pattern_to_host_byte_order(pcre32 *argument_re, + pcre32_extra *extra_data, const unsigned char *tables) +#endif +{ +REAL_PCRE *re = (REAL_PCRE *)argument_re; +pcre_study_data *study; +#ifndef COMPILE_PCRE8 +pcre_uchar *ptr; +int length; +#if defined SUPPORT_UTF && defined COMPILE_PCRE16 +BOOL utf; +BOOL utf16_char; +#endif /* SUPPORT_UTF && COMPILE_PCRE16 */ +#endif /* !COMPILE_PCRE8 */ + +if (re == NULL) return PCRE_ERROR_NULL; +if (re->magic_number == MAGIC_NUMBER) + { + if ((re->flags & PCRE_MODE) == 0) return PCRE_ERROR_BADMODE; + re->tables = tables; + return 0; + } + +if (re->magic_number != REVERSED_MAGIC_NUMBER) return PCRE_ERROR_BADMAGIC; +if ((swap_uint32(re->flags) & PCRE_MODE) == 0) return PCRE_ERROR_BADMODE; + +re->magic_number = MAGIC_NUMBER; +re->size = swap_uint32(re->size); +re->options = swap_uint32(re->options); +re->flags = swap_uint32(re->flags); +re->limit_match = swap_uint32(re->limit_match); +re->limit_recursion = swap_uint32(re->limit_recursion); + +#if defined COMPILE_PCRE8 || defined COMPILE_PCRE16 +re->first_char = swap_uint16(re->first_char); +re->req_char = swap_uint16(re->req_char); +#elif defined COMPILE_PCRE32 +re->first_char = swap_uint32(re->first_char); +re->req_char = swap_uint32(re->req_char); +#endif + +re->max_lookbehind = swap_uint16(re->max_lookbehind); +re->top_bracket = swap_uint16(re->top_bracket); +re->top_backref = swap_uint16(re->top_backref); +re->name_table_offset = swap_uint16(re->name_table_offset); +re->name_entry_size = swap_uint16(re->name_entry_size); +re->name_count = swap_uint16(re->name_count); +re->ref_count = swap_uint16(re->ref_count); +re->tables = tables; + +if (extra_data != NULL && (extra_data->flags & PCRE_EXTRA_STUDY_DATA) != 0) + { + study = (pcre_study_data *)extra_data->study_data; + study->size = swap_uint32(study->size); + study->flags = swap_uint32(study->flags); + study->minlength = swap_uint32(study->minlength); + } + +#ifndef COMPILE_PCRE8 +ptr = (pcre_uchar *)re + re->name_table_offset; +length = re->name_count * re->name_entry_size; +#if defined SUPPORT_UTF && defined COMPILE_PCRE16 +utf = (re->options & PCRE_UTF16) != 0; +utf16_char = FALSE; +#endif /* SUPPORT_UTF && COMPILE_PCRE16 */ + +while(TRUE) + { + /* Swap previous characters. */ + while (length-- > 0) + { +#if defined COMPILE_PCRE16 + *ptr = swap_uint16(*ptr); +#elif defined COMPILE_PCRE32 + *ptr = swap_uint32(*ptr); +#endif + ptr++; + } +#if defined SUPPORT_UTF && defined COMPILE_PCRE16 + if (utf16_char) + { + if (HAS_EXTRALEN(ptr[-1])) + { + /* We know that there is only one extra character in UTF-16. */ + *ptr = swap_uint16(*ptr); + ptr++; + } + } + utf16_char = FALSE; +#endif /* SUPPORT_UTF */ + + /* Get next opcode. */ + length = 0; +#if defined COMPILE_PCRE16 + *ptr = swap_uint16(*ptr); +#elif defined COMPILE_PCRE32 + *ptr = swap_uint32(*ptr); +#endif + switch (*ptr) + { + case OP_END: + return 0; + +#if defined SUPPORT_UTF && defined COMPILE_PCRE16 + case OP_CHAR: + case OP_CHARI: + case OP_NOT: + case OP_NOTI: + case OP_STAR: + case OP_MINSTAR: + case OP_PLUS: + case OP_MINPLUS: + case OP_QUERY: + case OP_MINQUERY: + case OP_UPTO: + case OP_MINUPTO: + case OP_EXACT: + case OP_POSSTAR: + case OP_POSPLUS: + case OP_POSQUERY: + case OP_POSUPTO: + case OP_STARI: + case OP_MINSTARI: + case OP_PLUSI: + case OP_MINPLUSI: + case OP_QUERYI: + case OP_MINQUERYI: + case OP_UPTOI: + case OP_MINUPTOI: + case OP_EXACTI: + case OP_POSSTARI: + case OP_POSPLUSI: + case OP_POSQUERYI: + case OP_POSUPTOI: + case OP_NOTSTAR: + case OP_NOTMINSTAR: + case OP_NOTPLUS: + case OP_NOTMINPLUS: + case OP_NOTQUERY: + case OP_NOTMINQUERY: + case OP_NOTUPTO: + case OP_NOTMINUPTO: + case OP_NOTEXACT: + case OP_NOTPOSSTAR: + case OP_NOTPOSPLUS: + case OP_NOTPOSQUERY: + case OP_NOTPOSUPTO: + case OP_NOTSTARI: + case OP_NOTMINSTARI: + case OP_NOTPLUSI: + case OP_NOTMINPLUSI: + case OP_NOTQUERYI: + case OP_NOTMINQUERYI: + case OP_NOTUPTOI: + case OP_NOTMINUPTOI: + case OP_NOTEXACTI: + case OP_NOTPOSSTARI: + case OP_NOTPOSPLUSI: + case OP_NOTPOSQUERYI: + case OP_NOTPOSUPTOI: + if (utf) utf16_char = TRUE; +#endif + /* Fall through. */ + + default: + length = PRIV(OP_lengths)[*ptr] - 1; + break; + + case OP_CLASS: + case OP_NCLASS: + /* Skip the character bit map. */ + ptr += 32/sizeof(pcre_uchar); + length = 0; + break; + + case OP_XCLASS: + /* Reverse the size of the XCLASS instance. */ + ptr++; +#if defined COMPILE_PCRE16 + *ptr = swap_uint16(*ptr); +#elif defined COMPILE_PCRE32 + *ptr = swap_uint32(*ptr); +#endif +#ifndef COMPILE_PCRE32 + if (LINK_SIZE > 1) + { + /* LINK_SIZE can be 1 or 2 in 16 bit mode. */ + ptr++; + *ptr = swap_uint16(*ptr); + } +#endif + ptr++; + length = (GET(ptr, -LINK_SIZE)) - (1 + LINK_SIZE + 1); +#if defined COMPILE_PCRE16 + *ptr = swap_uint16(*ptr); +#elif defined COMPILE_PCRE32 + *ptr = swap_uint32(*ptr); +#endif + if ((*ptr & XCL_MAP) != 0) + { + /* Skip the character bit map. */ + ptr += 32/sizeof(pcre_uchar); + length -= 32/sizeof(pcre_uchar); + } + break; + } + ptr++; + } +/* Control should never reach here in 16/32 bit mode. */ +#else /* In 8-bit mode, the pattern does not need to be processed. */ +return 0; +#endif /* !COMPILE_PCRE8 */ +} + +/* End of pcre_byte_order.c */ diff --git a/Foundation/src/pcre_chartables.c b/Foundation/src/pcre_chartables.c index 1ed9d8d87..b11eb25e4 100644 --- a/Foundation/src/pcre_chartables.c +++ b/Foundation/src/pcre_chartables.c @@ -14,7 +14,7 @@ example ISO-8859-1. When dftables is run, it creates these tables in the current locale. If PCRE is configured with --enable-rebuild-chartables, this happens automatically. -The following #includes are present because without the gcc 4.x may remove the +The following #includes are present because without them gcc 4.x may remove the array definition from the final binary if PCRE is built into a static library and dead code stripping is activated. This leads to link errors. Pulling in the header ensures that the array gets flagged as "someone outside this compilation @@ -23,7 +23,7 @@ unit might reference this" and so it will always be supplied to the linker. */ #include "pcre_config.h" #include "pcre_internal.h" -const unsigned char _pcre_default_tables[] = { +const pcre_uint8 PRIV(default_tables)[] = { /* This table is a lower casing table. */ @@ -160,7 +160,7 @@ graph, print, punct, and cntrl. Other classes are built from combinations. */ */ 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 0- 7 */ - 0x00,0x01,0x01,0x00,0x01,0x01,0x00,0x00, /* 8- 15 */ + 0x00,0x01,0x01,0x01,0x01,0x01,0x00,0x00, /* 8- 15 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 16- 23 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 24- 31 */ 0x01,0x00,0x00,0x00,0x80,0x00,0x00,0x00, /* - ' */ diff --git a/Foundation/src/pcre_compile.c b/Foundation/src/pcre_compile.c index 1c5d1c130..35ea7252a 100644 --- a/Foundation/src/pcre_compile.c +++ b/Foundation/src/pcre_compile.c @@ -6,7 +6,7 @@ and semantics are as close as possible to those of the Perl 5 language. Written by Philip Hazel - Copyright (c) 1997-2008 University of Cambridge + Copyright (c) 1997-2014 University of Cambridge ----------------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without @@ -37,11 +37,15 @@ POSSIBILITY OF SUCH DAMAGE. ----------------------------------------------------------------------------- */ +#pragma warning( disable : 4018) // '<' : signed/unsigned mismatch +#pragma warning( disable : 4127) // conditional expression is constant +#pragma warning( disable : 4244) // conversion from 'int' to 'unsigned short', possible loss of data +#pragma warning( disable : 4701) // local variable 'othercase' may be used without having been initialized +#pragma warning( disable : 4702) // unreachable code /* This module contains the external function pcre_compile(), along with supporting internal functions that are not used by other modules. */ - #include "pcre_config.h" #define NLBLOCK cd /* Block containing newline information */ @@ -51,17 +55,22 @@ supporting internal functions that are not used by other modules. */ #include "pcre_internal.h" -/* When DEBUG is defined, we need the pcre_printint() function, which is also -used by pcretest. DEBUG is not defined when building a production library. */ +/* When PCRE_DEBUG is defined, we need the pcre(16|32)_printint() function, which +is also used by pcretest. PCRE_DEBUG is not defined when building a production +library. We do not need to select pcre16_printint.c specially, because the +COMPILE_PCREx macro will already be appropriately set. */ -#if defined(DEBUG) -#include "pcre_printint.src" +#ifdef PCRE_DEBUG +/* pcre_printint.c should not include any headers */ +#define PCRE_INCLUDED +#include "pcre_printint.c" +#undef PCRE_INCLUDED #endif /* Macro for setting individual bits in class bitmaps. */ -#define SETBIT(a,b) a[b/8] |= (1 << (b%8)) +#define SETBIT(a,b) a[(b)/8] |= (1 << ((b)&7)) /* Maximum length value to check against when making sure that the integer that holds the compiled pattern length does not overflow. We make it a bit less than @@ -70,6 +79,18 @@ to check them every time. */ #define OFLOW_MAX (INT_MAX - 20) +/* Definitions to allow mutual recursion */ + +static int + add_list_to_class(pcre_uint8 *, pcre_uchar **, int, compile_data *, + const pcre_uint32 *, unsigned int); + +static BOOL + compile_regex(int, pcre_uchar **, const pcre_uchar **, int *, BOOL, BOOL, int, int, + pcre_uint32 *, pcre_int32 *, pcre_uint32 *, pcre_int32 *, branch_chain *, + compile_data *, int *); + + /************************************************* * Code parameters and static tables * @@ -85,31 +106,96 @@ so this number is very generous. The same workspace is used during the second, actual compile phase for remembering forward references to groups so that they can be filled in at the end. Each entry in this list occupies LINK_SIZE bytes, so even when LINK_SIZE -is 4 there is plenty of room. */ +is 4 there is plenty of room for most patterns. However, the memory can get +filled up by repetitions of forward references, for example patterns like +/(?1){0,1999}(b)/, and one user did hit the limit. The code has been changed so +that the workspace is expanded using malloc() in this situation. The value +below is therefore a minimum, and we put a maximum on it for safety. The +minimum is now also defined in terms of LINK_SIZE so that the use of malloc() +kicks in at the same number of forward references in all cases. */ -#define COMPILE_WORK_SIZE (4096) +#define COMPILE_WORK_SIZE (2048*LINK_SIZE) +#define COMPILE_WORK_SIZE_MAX (100*COMPILE_WORK_SIZE) +/* This value determines the size of the initial vector that is used for +remembering named groups during the pre-compile. It is allocated on the stack, +but if it is too small, it is expanded using malloc(), in a similar way to the +workspace. The value is the number of slots in the list. */ + +#define NAMED_GROUP_LIST_SIZE 20 + +/* The overrun tests check for a slightly smaller size so that they detect the +overrun before it actually does run off the end of the data block. */ + +#define WORK_SIZE_SAFETY_MARGIN (100) + +/* Private flags added to firstchar and reqchar. */ + +#define REQ_CASELESS (1 << 0) /* Indicates caselessness */ +#define REQ_VARY (1 << 1) /* Reqchar followed non-literal item */ +/* Negative values for the firstchar and reqchar flags */ +#define REQ_UNSET (-2) +#define REQ_NONE (-1) + +/* Repeated character flags. */ + +#define UTF_LENGTH 0x10000000l /* The char contains its length. */ /* Table for handling escaped characters in the range '0'-'z'. Positive returns are simple data values; negative values are for special things like \d and so on. Zero means further processing is needed (for things like \x), or the escape is invalid. */ -#ifndef EBCDIC /* This is the "normal" table for ASCII systems */ +#ifndef EBCDIC + +/* This is the "normal" table for ASCII systems or for EBCDIC systems running +in UTF-8 mode. */ + static const short int escapes[] = { - 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 7 */ - 0, 0, ':', ';', '<', '=', '>', '?', /* 8 - ? */ - '@', -ESC_A, -ESC_B, -ESC_C, -ESC_D, -ESC_E, 0, -ESC_G, /* @ - G */ --ESC_H, 0, 0, -ESC_K, 0, 0, 0, 0, /* H - O */ --ESC_P, -ESC_Q, -ESC_R, -ESC_S, 0, 0, -ESC_V, -ESC_W, /* P - W */ --ESC_X, 0, -ESC_Z, '[', '\\', ']', '^', '_', /* X - _ */ - '`', 7, -ESC_b, 0, -ESC_d, ESC_e, ESC_f, 0, /* ` - g */ --ESC_h, 0, 0, -ESC_k, 0, 0, ESC_n, 0, /* h - o */ --ESC_p, 0, ESC_r, -ESC_s, ESC_tee, 0, -ESC_v, -ESC_w, /* p - w */ - 0, 0, -ESC_z /* x - z */ + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + CHAR_COLON, CHAR_SEMICOLON, + CHAR_LESS_THAN_SIGN, CHAR_EQUALS_SIGN, + CHAR_GREATER_THAN_SIGN, CHAR_QUESTION_MARK, + CHAR_COMMERCIAL_AT, -ESC_A, + -ESC_B, -ESC_C, + -ESC_D, -ESC_E, + 0, -ESC_G, + -ESC_H, 0, + 0, -ESC_K, + 0, 0, + -ESC_N, 0, + -ESC_P, -ESC_Q, + -ESC_R, -ESC_S, + 0, 0, + -ESC_V, -ESC_W, + -ESC_X, 0, + -ESC_Z, CHAR_LEFT_SQUARE_BRACKET, + CHAR_BACKSLASH, CHAR_RIGHT_SQUARE_BRACKET, + CHAR_CIRCUMFLEX_ACCENT, CHAR_UNDERSCORE, + CHAR_GRAVE_ACCENT, 7, + -ESC_b, 0, + -ESC_d, ESC_e, + ESC_f, 0, + -ESC_h, 0, + 0, -ESC_k, + 0, 0, + ESC_n, 0, + -ESC_p, 0, + ESC_r, -ESC_s, + ESC_tee, 0, + -ESC_v, -ESC_w, + 0, 0, + -ESC_z }; -#else /* This is the "abnormal" table for EBCDIC systems */ +#else + +/* This is the "abnormal" table for EBCDIC systems without UTF-8 support. */ + static const short int escapes[] = { /* 48 */ 0, 0, 0, '.', '<', '(', '+', '|', /* 50 */ '&', 0, 0, 0, 0, 0, 0, 0, @@ -128,7 +214,7 @@ static const short int escapes[] = { /* B8 */ 0, 0, 0, 0, 0, ']', '=', '-', /* C0 */ '{',-ESC_A, -ESC_B, -ESC_C, -ESC_D,-ESC_E, 0, -ESC_G, /* C8 */-ESC_H, 0, 0, 0, 0, 0, 0, 0, -/* D0 */ '}', 0, -ESC_K, 0, 0, 0, 0, -ESC_P, +/* D0 */ '}', 0, -ESC_K, 0, 0,-ESC_N, 0, -ESC_P, /* D8 */-ESC_Q,-ESC_R, 0, 0, 0, 0, 0, 0, /* E0 */ '\\', 0, -ESC_S, 0, 0,-ESC_V, -ESC_W, -ESC_X, /* E8 */ 0,-ESC_Z, 0, 0, 0, 0, 0, 0, @@ -140,49 +226,76 @@ static const short int escapes[] = { /* Table of special "verbs" like (*PRUNE). This is a short table, so it is searched linearly. Put all the names into a single string, in order to reduce -the number of relocations when a shared library is dynamically linked. */ +the number of relocations when a shared library is dynamically linked. The +string is built from string macros so that it works in UTF-8 mode on EBCDIC +platforms. */ typedef struct verbitem { - int len; - int op; + int len; /* Length of verb name */ + int op; /* Op when no arg, or -1 if arg mandatory */ + int op_arg; /* Op when arg present, or -1 if not allowed */ } verbitem; static const char verbnames[] = - "ACCEPT\0" - "COMMIT\0" - "F\0" - "FAIL\0" - "PRUNE\0" - "SKIP\0" - "THEN"; + "\0" /* Empty name is a shorthand for MARK */ + STRING_MARK0 + STRING_ACCEPT0 + STRING_COMMIT0 + STRING_F0 + STRING_FAIL0 + STRING_PRUNE0 + STRING_SKIP0 + STRING_THEN; static const verbitem verbs[] = { - { 6, OP_ACCEPT }, - { 6, OP_COMMIT }, - { 1, OP_FAIL }, - { 4, OP_FAIL }, - { 5, OP_PRUNE }, - { 4, OP_SKIP }, - { 4, OP_THEN } + { 0, -1, OP_MARK }, + { 4, -1, OP_MARK }, + { 6, OP_ACCEPT, -1 }, + { 6, OP_COMMIT, -1 }, + { 1, OP_FAIL, -1 }, + { 4, OP_FAIL, -1 }, + { 5, OP_PRUNE, OP_PRUNE_ARG }, + { 4, OP_SKIP, OP_SKIP_ARG }, + { 4, OP_THEN, OP_THEN_ARG } }; static const int verbcount = sizeof(verbs)/sizeof(verbitem); +/* Substitutes for [[:<:]] and [[:>:]], which mean start and end of word in +another regex library. */ + +static const pcre_uchar sub_start_of_word[] = { + CHAR_BACKSLASH, CHAR_b, CHAR_LEFT_PARENTHESIS, CHAR_QUESTION_MARK, + CHAR_EQUALS_SIGN, CHAR_BACKSLASH, CHAR_w, CHAR_RIGHT_PARENTHESIS, '\0' }; + +static const pcre_uchar sub_end_of_word[] = { + CHAR_BACKSLASH, CHAR_b, CHAR_LEFT_PARENTHESIS, CHAR_QUESTION_MARK, + CHAR_LESS_THAN_SIGN, CHAR_EQUALS_SIGN, CHAR_BACKSLASH, CHAR_w, + CHAR_RIGHT_PARENTHESIS, '\0' }; + + /* Tables of names of POSIX character classes and their lengths. The names are now all in a single string, to reduce the number of relocations when a shared library is dynamically loaded. The list of lengths is terminated by a zero length entry. The first three must be alpha, lower, upper, as this is assumed -for handling case independence. */ +for handling case independence. The indices for graph, print, and punct are +needed, so identify them. */ static const char posix_names[] = - "alpha\0" "lower\0" "upper\0" "alnum\0" "ascii\0" "blank\0" - "cntrl\0" "digit\0" "graph\0" "print\0" "punct\0" "space\0" - "word\0" "xdigit"; + STRING_alpha0 STRING_lower0 STRING_upper0 STRING_alnum0 + STRING_ascii0 STRING_blank0 STRING_cntrl0 STRING_digit0 + STRING_graph0 STRING_print0 STRING_punct0 STRING_space0 + STRING_word0 STRING_xdigit; -static const uschar posix_name_lengths[] = { +static const pcre_uint8 posix_name_lengths[] = { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 6, 0 }; +#define PC_GRAPH 8 +#define PC_PRINT 9 +#define PC_PUNCT 10 + + /* Table of class bit maps for each POSIX class. Each class is formed from a base map, with an optional addition or removal of another map. Then, for some classes, there is some additional tweaking: for [:blank:] the vertical space @@ -210,6 +323,112 @@ static const int posix_class_maps[] = { cbit_xdigit,-1, 0 /* xdigit */ }; +/* Table of substitutes for \d etc when PCRE_UCP is set. They are replaced by +Unicode property escapes. */ + +#ifdef SUPPORT_UCP +static const pcre_uchar string_PNd[] = { + CHAR_BACKSLASH, CHAR_P, CHAR_LEFT_CURLY_BRACKET, + CHAR_N, CHAR_d, CHAR_RIGHT_CURLY_BRACKET, '\0' }; +static const pcre_uchar string_pNd[] = { + CHAR_BACKSLASH, CHAR_p, CHAR_LEFT_CURLY_BRACKET, + CHAR_N, CHAR_d, CHAR_RIGHT_CURLY_BRACKET, '\0' }; +static const pcre_uchar string_PXsp[] = { + CHAR_BACKSLASH, CHAR_P, CHAR_LEFT_CURLY_BRACKET, + CHAR_X, CHAR_s, CHAR_p, CHAR_RIGHT_CURLY_BRACKET, '\0' }; +static const pcre_uchar string_pXsp[] = { + CHAR_BACKSLASH, CHAR_p, CHAR_LEFT_CURLY_BRACKET, + CHAR_X, CHAR_s, CHAR_p, CHAR_RIGHT_CURLY_BRACKET, '\0' }; +static const pcre_uchar string_PXwd[] = { + CHAR_BACKSLASH, CHAR_P, CHAR_LEFT_CURLY_BRACKET, + CHAR_X, CHAR_w, CHAR_d, CHAR_RIGHT_CURLY_BRACKET, '\0' }; +static const pcre_uchar string_pXwd[] = { + CHAR_BACKSLASH, CHAR_p, CHAR_LEFT_CURLY_BRACKET, + CHAR_X, CHAR_w, CHAR_d, CHAR_RIGHT_CURLY_BRACKET, '\0' }; + +static const pcre_uchar *substitutes[] = { + string_PNd, /* \D */ + string_pNd, /* \d */ + string_PXsp, /* \S */ /* Xsp is Perl space, but from 8.34, Perl */ + string_pXsp, /* \s */ /* space and POSIX space are the same. */ + string_PXwd, /* \W */ + string_pXwd /* \w */ +}; + +/* The POSIX class substitutes must be in the order of the POSIX class names, +defined above, and there are both positive and negative cases. NULL means no +general substitute of a Unicode property escape (\p or \P). However, for some +POSIX classes (e.g. graph, print, punct) a special property code is compiled +directly. */ + +static const pcre_uchar string_pL[] = { + CHAR_BACKSLASH, CHAR_p, CHAR_LEFT_CURLY_BRACKET, + CHAR_L, CHAR_RIGHT_CURLY_BRACKET, '\0' }; +static const pcre_uchar string_pLl[] = { + CHAR_BACKSLASH, CHAR_p, CHAR_LEFT_CURLY_BRACKET, + CHAR_L, CHAR_l, CHAR_RIGHT_CURLY_BRACKET, '\0' }; +static const pcre_uchar string_pLu[] = { + CHAR_BACKSLASH, CHAR_p, CHAR_LEFT_CURLY_BRACKET, + CHAR_L, CHAR_u, CHAR_RIGHT_CURLY_BRACKET, '\0' }; +static const pcre_uchar string_pXan[] = { + CHAR_BACKSLASH, CHAR_p, CHAR_LEFT_CURLY_BRACKET, + CHAR_X, CHAR_a, CHAR_n, CHAR_RIGHT_CURLY_BRACKET, '\0' }; +static const pcre_uchar string_h[] = { + CHAR_BACKSLASH, CHAR_h, '\0' }; +static const pcre_uchar string_pXps[] = { + CHAR_BACKSLASH, CHAR_p, CHAR_LEFT_CURLY_BRACKET, + CHAR_X, CHAR_p, CHAR_s, CHAR_RIGHT_CURLY_BRACKET, '\0' }; +static const pcre_uchar string_PL[] = { + CHAR_BACKSLASH, CHAR_P, CHAR_LEFT_CURLY_BRACKET, + CHAR_L, CHAR_RIGHT_CURLY_BRACKET, '\0' }; +static const pcre_uchar string_PLl[] = { + CHAR_BACKSLASH, CHAR_P, CHAR_LEFT_CURLY_BRACKET, + CHAR_L, CHAR_l, CHAR_RIGHT_CURLY_BRACKET, '\0' }; +static const pcre_uchar string_PLu[] = { + CHAR_BACKSLASH, CHAR_P, CHAR_LEFT_CURLY_BRACKET, + CHAR_L, CHAR_u, CHAR_RIGHT_CURLY_BRACKET, '\0' }; +static const pcre_uchar string_PXan[] = { + CHAR_BACKSLASH, CHAR_P, CHAR_LEFT_CURLY_BRACKET, + CHAR_X, CHAR_a, CHAR_n, CHAR_RIGHT_CURLY_BRACKET, '\0' }; +static const pcre_uchar string_H[] = { + CHAR_BACKSLASH, CHAR_H, '\0' }; +static const pcre_uchar string_PXps[] = { + CHAR_BACKSLASH, CHAR_P, CHAR_LEFT_CURLY_BRACKET, + CHAR_X, CHAR_p, CHAR_s, CHAR_RIGHT_CURLY_BRACKET, '\0' }; + +static const pcre_uchar *posix_substitutes[] = { + string_pL, /* alpha */ + string_pLl, /* lower */ + string_pLu, /* upper */ + string_pXan, /* alnum */ + NULL, /* ascii */ + string_h, /* blank */ + NULL, /* cntrl */ + string_pNd, /* digit */ + NULL, /* graph */ + NULL, /* print */ + NULL, /* punct */ + string_pXps, /* space */ /* Xps is POSIX space, but from 8.34 */ + string_pXwd, /* word */ /* Perl and POSIX space are the same */ + NULL, /* xdigit */ + /* Negated cases */ + string_PL, /* ^alpha */ + string_PLl, /* ^lower */ + string_PLu, /* ^upper */ + string_PXan, /* ^alnum */ + NULL, /* ^ascii */ + string_H, /* ^blank */ + NULL, /* ^cntrl */ + string_PNd, /* ^digit */ + NULL, /* ^graph */ + NULL, /* ^print */ + NULL, /* ^punct */ + string_PXps, /* ^space */ /* Xps is POSIX space, but from 8.34 */ + string_PXwd, /* ^word */ /* Perl and POSIX space are the same */ + NULL /* ^xdigit */ +}; +#define POSIX_SUBSIZE (sizeof(posix_substitutes) / sizeof(pcre_uchar *)) +#endif #define STRING(a) # a #define XSTRING(s) STRING(s) @@ -222,7 +441,11 @@ the number of relocations needed when a shared library is loaded dynamically, it is now one long string. We cannot use a table of offsets, because the lengths of inserts such as XSTRING(MAX_NAME_SIZE) are not known. Instead, we simply count through to the one we want - this isn't a performance issue -because these strings are used only when there is a compilation error. */ +because these strings are used only when there is a compilation error. + +Each substring ends with \0 to insert a null character. This includes the final +substring, so that the whole string ends with \0\0, which can be detected when +counting through. */ static const char error_texts[] = "no error\0" @@ -263,13 +486,13 @@ static const char error_texts[] = /* 30 */ "unknown POSIX class name\0" "POSIX collating elements are not supported\0" - "this version of PCRE is not compiled with PCRE_UTF8 support\0" + "this version of PCRE is compiled without UTF support\0" "spare error\0" /** DEAD **/ - "character value in \\x{...} sequence is too large\0" + "character value in \\x{} or \\o{} is too large\0" /* 35 */ "invalid condition (?(0)\0" "\\C not allowed in lookbehind assertion\0" - "PCRE does not support \\L, \\l, \\N, \\U, or \\u\0" + "PCRE does not support \\L, \\l, \\N{name}, \\U, or \\u\0" "number after (?C is > 255\0" "closing ) for (?C expected\0" /* 40 */ @@ -286,23 +509,49 @@ static const char error_texts[] = "too many named subpatterns (maximum " XSTRING(MAX_NAME_COUNT) ")\0" /* 50 */ "repeated subpattern is too long\0" /** DEAD **/ - "octal value is greater than \\377 (not in UTF-8 mode)\0" + "octal value is greater than \\377 in 8-bit non-UTF-8 mode\0" "internal error: overran compiling workspace\0" "internal error: previously-checked referenced subpattern not found\0" "DEFINE group contains more than one branch\0" /* 55 */ - "repeating a DEFINE group is not allowed\0" + "repeating a DEFINE group is not allowed\0" /** DEAD **/ "inconsistent NEWLINE options\0" "\\g is not followed by a braced, angle-bracketed, or quoted name/number or by a plain number\0" "a numbered reference must not be zero\0" - "(*VERB) with an argument is not supported\0" + "an argument is not allowed for (*ACCEPT), (*FAIL), or (*COMMIT)\0" /* 60 */ - "(*VERB) not recognized\0" + "(*VERB) not recognized or malformed\0" "number is too big\0" "subpattern name expected\0" "digit expected after (?+\0" - "] is an invalid data character in JavaScript compatibility mode"; - + "] is an invalid data character in JavaScript compatibility mode\0" + /* 65 */ + "different names for subpatterns of the same number are not allowed\0" + "(*MARK) must have an argument\0" + "this version of PCRE is not compiled with Unicode property support\0" + "\\c must be followed by an ASCII character\0" + "\\k is not followed by a braced, angle-bracketed, or quoted name\0" + /* 70 */ + "internal error: unknown opcode in find_fixedlength()\0" + "\\N is not supported in a class\0" + "too many forward references\0" + "disallowed Unicode code point (>= 0xd800 && <= 0xdfff)\0" + "invalid UTF-16 string\0" + /* 75 */ + "name is too long in (*MARK), (*PRUNE), (*SKIP), or (*THEN)\0" + "character value in \\u.... sequence is too large\0" + "invalid UTF-32 string\0" + "setting UTF is disabled by the application\0" + "non-hex character in \\x{} (closing brace missing?)\0" + /* 80 */ + "non-octal character in \\o{} (closing brace missing?)\0" + "missing opening brace after \\o\0" + "parentheses are too deeply nested\0" + "invalid range in character class\0" + "group name must start with a non-digit\0" + /* 85 */ + "parentheses are too deeply nested (stack check)\0" + ; /* Table to identify digits and hex digits. This is used when compiling patterns. Note that the tables in chartables are dependent on the locale, and @@ -320,8 +569,18 @@ For convenience, we use the same bit definitions as in chartables: Then we can use ctype_digit and ctype_xdigit in the code. */ -#ifndef EBCDIC /* This is the "normal" case, for ASCII systems */ -static const unsigned char digitab[] = +/* Using a simple comparison for decimal numbers rather than a memory read +is much faster, and the resulting code is simpler (the compiler turns it +into a subtraction and unsigned comparison). */ + +#define IS_DIGIT(x) ((x) >= CHAR_0 && (x) <= CHAR_9) + +#ifndef EBCDIC + +/* This is the "normal" case, for ASCII systems, and EBCDIC systems running in +UTF-8 mode. */ + +static const pcre_uint8 digitab[] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 0- 7 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 8- 15 */ @@ -356,8 +615,11 @@ static const unsigned char digitab[] = 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 240-247 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};/* 248-255 */ -#else /* This is the "abnormal" case, for EBCDIC systems */ -static const unsigned char digitab[] = +#else + +/* This is the "abnormal" case, for EBCDIC systems not running in UTF-8 mode. */ + +static const pcre_uint8 digitab[] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 0- 7 0 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 8- 15 */ @@ -392,7 +654,7 @@ static const unsigned char digitab[] = 0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c, /* 0 - 7 F0 */ 0x0c,0x0c,0x00,0x00,0x00,0x00,0x00,0x00};/* 8 -255 */ -static const unsigned char ebcdic_chartab[] = { /* chartable partial dup */ +static const pcre_uint8 ebcdic_chartab[] = { /* chartable partial dup */ 0x80,0x00,0x00,0x00,0x00,0x01,0x00,0x00, /* 0- 7 */ 0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00, /* 8- 15 */ 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00, /* 16- 23 */ @@ -428,11 +690,181 @@ static const unsigned char ebcdic_chartab[] = { /* chartable partial dup */ #endif -/* Definition to allow mutual recursion */ +/* This table is used to check whether auto-possessification is possible +between adjacent character-type opcodes. The left-hand (repeated) opcode is +used to select the row, and the right-hand opcode is use to select the column. +A value of 1 means that auto-possessification is OK. For example, the second +value in the first row means that \D+\d can be turned into \D++\d. -static BOOL - compile_regex(int, int, uschar **, const uschar **, int *, BOOL, BOOL, int, - int *, int *, branch_chain *, compile_data *, int *); +The Unicode property types (\P and \p) have to be present to fill out the table +because of what their opcode values are, but the table values should always be +zero because property types are handled separately in the code. The last four +columns apply to items that cannot be repeated, so there is no need to have +rows for them. Note that OP_DIGIT etc. are generated only when PCRE_UCP is +*not* set. When it is set, \d etc. are converted into OP_(NOT_)PROP codes. */ + +#define APTROWS (LAST_AUTOTAB_LEFT_OP - FIRST_AUTOTAB_OP + 1) +#define APTCOLS (LAST_AUTOTAB_RIGHT_OP - FIRST_AUTOTAB_OP + 1) + +static const pcre_uint8 autoposstab[APTROWS][APTCOLS] = { +/* \D \d \S \s \W \w . .+ \C \P \p \R \H \h \V \v \X \Z \z $ $M */ + { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 }, /* \D */ + { 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1 }, /* \d */ + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1 }, /* \S */ + { 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 }, /* \s */ + { 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 }, /* \W */ + { 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1 }, /* \w */ + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0 }, /* . */ + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 }, /* .+ */ + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 }, /* \C */ + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, /* \P */ + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, /* \p */ + { 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 }, /* \R */ + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 }, /* \H */ + { 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0 }, /* \h */ + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0 }, /* \V */ + { 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0 }, /* \v */ + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 } /* \X */ +}; + + +/* This table is used to check whether auto-possessification is possible +between adjacent Unicode property opcodes (OP_PROP and OP_NOTPROP). The +left-hand (repeated) opcode is used to select the row, and the right-hand +opcode is used to select the column. The values are as follows: + + 0 Always return FALSE (never auto-possessify) + 1 Character groups are distinct (possessify if both are OP_PROP) + 2 Check character categories in the same group (general or particular) + 3 TRUE if the two opcodes are not the same (PROP vs NOTPROP) + + 4 Check left general category vs right particular category + 5 Check right general category vs left particular category + + 6 Left alphanum vs right general category + 7 Left space vs right general category + 8 Left word vs right general category + + 9 Right alphanum vs left general category + 10 Right space vs left general category + 11 Right word vs left general category + + 12 Left alphanum vs right particular category + 13 Left space vs right particular category + 14 Left word vs right particular category + + 15 Right alphanum vs left particular category + 16 Right space vs left particular category + 17 Right word vs left particular category +*/ + +static const pcre_uint8 propposstab[PT_TABSIZE][PT_TABSIZE] = { +/* ANY LAMP GC PC SC ALNUM SPACE PXSPACE WORD CLIST UCNC */ + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, /* PT_ANY */ + { 0, 3, 0, 0, 0, 3, 1, 1, 0, 0, 0 }, /* PT_LAMP */ + { 0, 0, 2, 4, 0, 9, 10, 10, 11, 0, 0 }, /* PT_GC */ + { 0, 0, 5, 2, 0, 15, 16, 16, 17, 0, 0 }, /* PT_PC */ + { 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0 }, /* PT_SC */ + { 0, 3, 6, 12, 0, 3, 1, 1, 0, 0, 0 }, /* PT_ALNUM */ + { 0, 1, 7, 13, 0, 1, 3, 3, 1, 0, 0 }, /* PT_SPACE */ + { 0, 1, 7, 13, 0, 1, 3, 3, 1, 0, 0 }, /* PT_PXSPACE */ + { 0, 0, 8, 14, 0, 0, 1, 1, 3, 0, 0 }, /* PT_WORD */ + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, /* PT_CLIST */ + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3 } /* PT_UCNC */ +}; + +/* This table is used to check whether auto-possessification is possible +between adjacent Unicode property opcodes (OP_PROP and OP_NOTPROP) when one +specifies a general category and the other specifies a particular category. The +row is selected by the general category and the column by the particular +category. The value is 1 if the particular category is not part of the general +category. */ + +static const pcre_uint8 catposstab[7][30] = { +/* Cc Cf Cn Co Cs Ll Lm Lo Lt Lu Mc Me Mn Nd Nl No Pc Pd Pe Pf Pi Po Ps Sc Sk Sm So Zl Zp Zs */ + { 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, /* C */ + { 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, /* L */ + { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, /* M */ + { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, /* N */ + { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1 }, /* P */ + { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1 }, /* S */ + { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0 } /* Z */ +}; + +/* This table is used when checking ALNUM, (PX)SPACE, SPACE, and WORD against +a general or particular category. The properties in each row are those +that apply to the character set in question. Duplication means that a little +unnecessary work is done when checking, but this keeps things much simpler +because they can all use the same code. For more details see the comment where +this table is used. + +Note: SPACE and PXSPACE used to be different because Perl excluded VT from +"space", but from Perl 5.18 it's included, so both categories are treated the +same here. */ + +static const pcre_uint8 posspropstab[3][4] = { + { ucp_L, ucp_N, ucp_N, ucp_Nl }, /* ALNUM, 3rd and 4th values redundant */ + { ucp_Z, ucp_Z, ucp_C, ucp_Cc }, /* SPACE and PXSPACE, 2nd value redundant */ + { ucp_L, ucp_N, ucp_P, ucp_Po } /* WORD */ +}; + +/* This table is used when converting repeating opcodes into possessified +versions as a result of an explicit possessive quantifier such as ++. A zero +value means there is no possessified version - in those cases the item in +question must be wrapped in ONCE brackets. The table is truncated at OP_CALLOUT +because all relevant opcodes are less than that. */ + +static const pcre_uint8 opcode_possessify[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 15 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 16 - 31 */ + + 0, /* NOTI */ + OP_POSSTAR, 0, /* STAR, MINSTAR */ + OP_POSPLUS, 0, /* PLUS, MINPLUS */ + OP_POSQUERY, 0, /* QUERY, MINQUERY */ + OP_POSUPTO, 0, /* UPTO, MINUPTO */ + 0, /* EXACT */ + 0, 0, 0, 0, /* POS{STAR,PLUS,QUERY,UPTO} */ + + OP_POSSTARI, 0, /* STARI, MINSTARI */ + OP_POSPLUSI, 0, /* PLUSI, MINPLUSI */ + OP_POSQUERYI, 0, /* QUERYI, MINQUERYI */ + OP_POSUPTOI, 0, /* UPTOI, MINUPTOI */ + 0, /* EXACTI */ + 0, 0, 0, 0, /* POS{STARI,PLUSI,QUERYI,UPTOI} */ + + OP_NOTPOSSTAR, 0, /* NOTSTAR, NOTMINSTAR */ + OP_NOTPOSPLUS, 0, /* NOTPLUS, NOTMINPLUS */ + OP_NOTPOSQUERY, 0, /* NOTQUERY, NOTMINQUERY */ + OP_NOTPOSUPTO, 0, /* NOTUPTO, NOTMINUPTO */ + 0, /* NOTEXACT */ + 0, 0, 0, 0, /* NOTPOS{STAR,PLUS,QUERY,UPTO} */ + + OP_NOTPOSSTARI, 0, /* NOTSTARI, NOTMINSTARI */ + OP_NOTPOSPLUSI, 0, /* NOTPLUSI, NOTMINPLUSI */ + OP_NOTPOSQUERYI, 0, /* NOTQUERYI, NOTMINQUERYI */ + OP_NOTPOSUPTOI, 0, /* NOTUPTOI, NOTMINUPTOI */ + 0, /* NOTEXACTI */ + 0, 0, 0, 0, /* NOTPOS{STARI,PLUSI,QUERYI,UPTOI} */ + + OP_TYPEPOSSTAR, 0, /* TYPESTAR, TYPEMINSTAR */ + OP_TYPEPOSPLUS, 0, /* TYPEPLUS, TYPEMINPLUS */ + OP_TYPEPOSQUERY, 0, /* TYPEQUERY, TYPEMINQUERY */ + OP_TYPEPOSUPTO, 0, /* TYPEUPTO, TYPEMINUPTO */ + 0, /* TYPEEXACT */ + 0, 0, 0, 0, /* TYPEPOS{STAR,PLUS,QUERY,UPTO} */ + + OP_CRPOSSTAR, 0, /* CRSTAR, CRMINSTAR */ + OP_CRPOSPLUS, 0, /* CRPLUS, CRMINPLUS */ + OP_CRPOSQUERY, 0, /* CRQUERY, CRMINQUERY */ + OP_CRPOSRANGE, 0, /* CRRANGE, CRMINRANGE */ + 0, 0, 0, 0, /* CRPOS{STAR,PLUS,QUERY,RANGE} */ + + 0, 0, 0, /* CLASS, NCLASS, XCLASS */ + 0, 0, /* REF, REFI */ + 0, 0, /* DNREF, DNREFI */ + 0, 0 /* RECURSE, CALLOUT */ +}; @@ -453,84 +885,212 @@ static const char * find_error_text(int n) { const char *s = error_texts; -for (; n > 0; n--) while (*s++ != 0) {}; +for (; n > 0; n--) + { + while (*s++ != CHAR_NULL) {}; + if (*s == CHAR_NULL) return "Error text not found (please report)"; + } return s; } + +/************************************************* +* Expand the workspace * +*************************************************/ + +/* This function is called during the second compiling phase, if the number of +forward references fills the existing workspace, which is originally a block on +the stack. A larger block is obtained from malloc() unless the ultimate limit +has been reached or the increase will be rather small. + +Argument: pointer to the compile data block +Returns: 0 if all went well, else an error number +*/ + +static int +expand_workspace(compile_data *cd) +{ +pcre_uchar *newspace; +int newsize = cd->workspace_size * 2; + +if (newsize > COMPILE_WORK_SIZE_MAX) newsize = COMPILE_WORK_SIZE_MAX; +if (cd->workspace_size >= COMPILE_WORK_SIZE_MAX || + newsize - cd->workspace_size < WORK_SIZE_SAFETY_MARGIN) + return ERR72; + +newspace = (PUBL(malloc))(IN_UCHARS(newsize)); +if (newspace == NULL) return ERR21; +memcpy(newspace, cd->start_workspace, cd->workspace_size * sizeof(pcre_uchar)); +cd->hwm = (pcre_uchar *)newspace + (cd->hwm - cd->start_workspace); +if (cd->workspace_size > COMPILE_WORK_SIZE) + (PUBL(free))((void *)cd->start_workspace); +cd->start_workspace = newspace; +cd->workspace_size = newsize; +return 0; +} + + + +/************************************************* +* Check for counted repeat * +*************************************************/ + +/* This function is called when a '{' is encountered in a place where it might +start a quantifier. It looks ahead to see if it really is a quantifier or not. +It is only a quantifier if it is one of the forms {ddd} {ddd,} or {ddd,ddd} +where the ddds are digits. + +Arguments: + p pointer to the first char after '{' + +Returns: TRUE or FALSE +*/ + +static BOOL +is_counted_repeat(const pcre_uchar *p) +{ +if (!IS_DIGIT(*p)) return FALSE; +p++; +while (IS_DIGIT(*p)) p++; +if (*p == CHAR_RIGHT_CURLY_BRACKET) return TRUE; + +if (*p++ != CHAR_COMMA) return FALSE; +if (*p == CHAR_RIGHT_CURLY_BRACKET) return TRUE; + +if (!IS_DIGIT(*p)) return FALSE; +p++; +while (IS_DIGIT(*p)) p++; + +return (*p == CHAR_RIGHT_CURLY_BRACKET); +} + + + /************************************************* * Handle escapes * *************************************************/ /* This function is called when a \ has been encountered. It either returns a -positive value for a simple escape such as \n, or a negative value which -encodes one of the more complicated things such as \d. A backreference to group -n is returned as -(ESC_REF + n); ESC_REF is the highest ESC_xxx macro. When -UTF-8 is enabled, a positive value greater than 255 may be returned. On entry, -ptr is pointing at the \. On exit, it is on the final character of the escape -sequence. +positive value for a simple escape such as \n, or 0 for a data character which +will be placed in chptr. A backreference to group n is returned as negative n. +When UTF-8 is enabled, a positive value greater than 255 may be returned in +chptr. On entry, ptr is pointing at the \. On exit, it is on the final +character of the escape sequence. Arguments: ptrptr points to the pattern position pointer + chptr points to a returned data character errorcodeptr points to the errorcode variable bracount number of previous extracting brackets options the options bits isclass TRUE if inside a character class -Returns: zero or positive => a data character - negative => a special escape sequence +Returns: zero => a data character + positive => a special escape sequence + negative => a back reference on error, errorcodeptr is set */ static int -check_escape(const uschar **ptrptr, int *errorcodeptr, int bracount, - int options, BOOL isclass) +check_escape(const pcre_uchar **ptrptr, pcre_uint32 *chptr, int *errorcodeptr, + int bracount, int options, BOOL isclass) { -BOOL utf8 = (options & PCRE_UTF8) != 0; -const uschar *ptr = *ptrptr + 1; -int c, i; +/* PCRE_UTF16 has the same value as PCRE_UTF8. */ +BOOL utf = (options & PCRE_UTF8) != 0; +const pcre_uchar *ptr = *ptrptr + 1; +pcre_uint32 c; +int escape = 0; +int i; GETCHARINCTEST(c, ptr); /* Get character value, increment pointer */ ptr--; /* Set pointer back to the last byte */ /* If backslash is at the end of the pattern, it's an error. */ -if (c == 0) *errorcodeptr = ERR1; +if (c == CHAR_NULL) *errorcodeptr = ERR1; /* Non-alphanumerics are literals. For digits or letters, do an initial lookup in a table. A non-zero result is something that can be returned immediately. Otherwise further processing may be required. */ -#ifndef EBCDIC /* ASCII coding */ -else if (c < '0' || c > 'z') {} /* Not alphanumeric */ -else if ((i = escapes[c - '0']) != 0) c = i; +#ifndef EBCDIC /* ASCII/UTF-8 coding */ +/* Not alphanumeric */ +else if (c < CHAR_0 || c > CHAR_z) {} +else if ((i = escapes[c - CHAR_0]) != 0) + { if (i > 0) c = (pcre_uint32)i; else escape = -i; } #else /* EBCDIC coding */ -else if (c < 'a' || (ebcdic_chartab[c] & 0x0E) == 0) {} /* Not alphanumeric */ -else if ((i = escapes[c - 0x48]) != 0) c = i; +/* Not alphanumeric */ +else if (c < CHAR_a || (!MAX_255(c) || (ebcdic_chartab[c] & 0x0E) == 0)) {} +else if ((i = escapes[c - 0x48]) != 0) { if (i > 0) c = (pcre_uint32)i; else escape = -i; } #endif /* Escapes that need further processing, or are illegal. */ else { - const uschar *oldptr; - BOOL braced, negated; + const pcre_uchar *oldptr; + BOOL braced, negated, overflow; + int s; switch (c) { /* A number of Perl escapes are not handled by PCRE. We give an explicit error. */ - case 'l': - case 'L': - case 'N': - case 'u': - case 'U': + case CHAR_l: + case CHAR_L: *errorcodeptr = ERR37; break; - /* \g must be followed by one of a number of specific things: + case CHAR_u: + if ((options & PCRE_JAVASCRIPT_COMPAT) != 0) + { + /* In JavaScript, \u must be followed by four hexadecimal numbers. + Otherwise it is a lowercase u letter. */ + if (MAX_255(ptr[1]) && (digitab[ptr[1]] & ctype_xdigit) != 0 + && MAX_255(ptr[2]) && (digitab[ptr[2]] & ctype_xdigit) != 0 + && MAX_255(ptr[3]) && (digitab[ptr[3]] & ctype_xdigit) != 0 + && MAX_255(ptr[4]) && (digitab[ptr[4]] & ctype_xdigit) != 0) + { + c = 0; + for (i = 0; i < 4; ++i) + { + register pcre_uint32 cc = *(++ptr); +#ifndef EBCDIC /* ASCII/UTF-8 coding */ + if (cc >= CHAR_a) cc -= 32; /* Convert to upper case */ + c = (c << 4) + cc - ((cc < CHAR_A)? CHAR_0 : (CHAR_A - 10)); +#else /* EBCDIC coding */ + if (cc >= CHAR_a && cc <= CHAR_z) cc += 64; /* Convert to upper case */ + c = (c << 4) + cc - ((cc >= CHAR_0)? CHAR_0 : (CHAR_A - 10)); +#endif + } + +#if defined COMPILE_PCRE8 + if (c > (utf ? 0x10ffffU : 0xffU)) +#elif defined COMPILE_PCRE16 + if (c > (utf ? 0x10ffffU : 0xffffU)) +#elif defined COMPILE_PCRE32 + if (utf && c > 0x10ffffU) +#endif + { + *errorcodeptr = ERR76; + } + else if (utf && c >= 0xd800 && c <= 0xdfff) *errorcodeptr = ERR73; + } + } + else + *errorcodeptr = ERR37; + break; + + case CHAR_U: + /* In JavaScript, \U is an uppercase U letter. */ + if ((options & PCRE_JAVASCRIPT_COMPAT) == 0) *errorcodeptr = ERR37; + break; + + /* In a character class, \g is just a literal "g". Outside a character + class, \g must be followed by one of a number of specific things: (1) A number, either plain or braced. If positive, it is an absolute backreference. If negative, it is a relative backreference. This is a Perl @@ -544,25 +1104,26 @@ else (3) For Oniguruma compatibility we also support \g followed by a name or a number either in angle brackets or in single quotes. However, these are (possibly recursive) subroutine calls, _not_ backreferences. Just return - the -ESC_g code (cf \k). */ + the ESC_g code (cf \k). */ - case 'g': - if (ptr[1] == '<' || ptr[1] == '\'') + case CHAR_g: + if (isclass) break; + if (ptr[1] == CHAR_LESS_THAN_SIGN || ptr[1] == CHAR_APOSTROPHE) { - c = -ESC_g; + escape = ESC_g; break; } /* Handle the Perl-compatible cases */ - if (ptr[1] == '{') + if (ptr[1] == CHAR_LEFT_CURLY_BRACKET) { - const uschar *p; - for (p = ptr+2; *p != 0 && *p != '}'; p++) - if (*p != '-' && (digitab[*p] & ctype_digit) == 0) break; - if (*p != 0 && *p != '}') + const pcre_uchar *p; + for (p = ptr+2; *p != CHAR_NULL && *p != CHAR_RIGHT_CURLY_BRACKET; p++) + if (*p != CHAR_MINUS && !IS_DIGIT(*p)) break; + if (*p != CHAR_NULL && *p != CHAR_RIGHT_CURLY_BRACKET) { - c = -ESC_k; + escape = ESC_k; break; } braced = TRUE; @@ -570,30 +1131,40 @@ else } else braced = FALSE; - if (ptr[1] == '-') + if (ptr[1] == CHAR_MINUS) { negated = TRUE; ptr++; } else negated = FALSE; - c = 0; - while ((digitab[ptr[1]] & ctype_digit) != 0) - c = c * 10 + *(++ptr) - '0'; - - if (c < 0) /* Integer overflow */ + /* The integer range is limited by the machine's int representation. */ + s = 0; + overflow = FALSE; + while (IS_DIGIT(ptr[1])) { + if (s > INT_MAX / 10 - 1) /* Integer overflow */ + { + overflow = TRUE; + break; + } + s = s * 10 + (int)(*(++ptr) - CHAR_0); + } + if (overflow) /* Integer overflow */ + { + while (IS_DIGIT(ptr[1])) + ptr++; *errorcodeptr = ERR61; break; } - if (braced && *(++ptr) != '}') + if (braced && *(++ptr) != CHAR_RIGHT_CURLY_BRACKET) { *errorcodeptr = ERR57; break; } - if (c == 0) + if (s == 0) { *errorcodeptr = ERR58; break; @@ -601,146 +1172,254 @@ else if (negated) { - if (c > bracount) + if (s > bracount) { *errorcodeptr = ERR15; break; } - c = bracount - (c - 1); + s = bracount - (s - 1); } - c = -(ESC_REF + c); + escape = -s; break; /* The handling of escape sequences consisting of a string of digits - starting with one that is not zero is not straightforward. By experiment, - the way Perl works seems to be as follows: + starting with one that is not zero is not straightforward. Perl has changed + over the years. Nowadays \g{} for backreferences and \o{} for octal are + recommended to avoid the ambiguities in the old syntax. Outside a character class, the digits are read as a decimal number. If the - number is less than 10, or if there are that many previous extracting - left brackets, then it is a back reference. Otherwise, up to three octal - digits are read to form an escaped byte. Thus \123 is likely to be octal - 123 (cf \0123, which is octal 012 followed by the literal 3). If the octal - value is greater than 377, the least significant 8 bits are taken. Inside a - character class, \ followed by a digit is always an octal number. */ + number is less than 8 (used to be 10), or if there are that many previous + extracting left brackets, then it is a back reference. Otherwise, up to + three octal digits are read to form an escaped byte. Thus \123 is likely to + be octal 123 (cf \0123, which is octal 012 followed by the literal 3). If + the octal value is greater than 377, the least significant 8 bits are + taken. \8 and \9 are treated as the literal characters 8 and 9. - case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': + Inside a character class, \ followed by a digit is always either a literal + 8 or 9 or an octal number. */ + + case CHAR_1: case CHAR_2: case CHAR_3: case CHAR_4: case CHAR_5: + case CHAR_6: case CHAR_7: case CHAR_8: case CHAR_9: if (!isclass) { oldptr = ptr; - c -= '0'; - while ((digitab[ptr[1]] & ctype_digit) != 0) - c = c * 10 + *(++ptr) - '0'; - if (c < 0) /* Integer overflow */ + /* The integer range is limited by the machine's int representation. */ + s = (int)(c -CHAR_0); + overflow = FALSE; + while (IS_DIGIT(ptr[1])) { + if (s > INT_MAX / 10 - 1) /* Integer overflow */ + { + overflow = TRUE; + break; + } + s = s * 10 + (int)(*(++ptr) - CHAR_0); + } + if (overflow) /* Integer overflow */ + { + while (IS_DIGIT(ptr[1])) + ptr++; *errorcodeptr = ERR61; break; } - if (c < 10 || c <= bracount) + if (s < 8 || s <= bracount) /* Check for back reference */ { - c = -(ESC_REF + c); + escape = -s; break; } ptr = oldptr; /* Put the pointer back and fall through */ } - /* Handle an octal number following \. If the first digit is 8 or 9, Perl - generates a binary zero byte and treats the digit as a following literal. - Thus we have to pull back the pointer by one. */ + /* Handle a digit following \ when the number is not a back reference. If + the first digit is 8 or 9, Perl used to generate a binary zero byte and + then treat the digit as a following literal. At least by Perl 5.18 this + changed so as not to insert the binary zero. */ - if ((c = *ptr) >= '8') - { - ptr--; - c = 0; - break; - } + if ((c = *ptr) >= CHAR_8) break; + + /* Fall through with a digit less than 8 */ /* \0 always starts an octal number, but we may drop through to here with a larger first octal digit. The original code used just to take the least significant 8 bits of octal numbers (I think this is what early Perls used - to do). Nowadays we allow for larger numbers in UTF-8 mode, but no more - than 3 octal digits. */ + to do). Nowadays we allow for larger numbers in UTF-8 mode and 16-bit mode, + but no more than 3 octal digits. */ - case '0': - c -= '0'; - while(i++ < 2 && ptr[1] >= '0' && ptr[1] <= '7') - c = c * 8 + *(++ptr) - '0'; - if (!utf8 && c > 255) *errorcodeptr = ERR51; + case CHAR_0: + c -= CHAR_0; + while(i++ < 2 && ptr[1] >= CHAR_0 && ptr[1] <= CHAR_7) + c = c * 8 + *(++ptr) - CHAR_0; +#ifdef COMPILE_PCRE8 + if (!utf && c > 0xff) *errorcodeptr = ERR51; +#endif break; - /* \x is complicated. \x{ddd} is a character number which can be greater - than 0xff in utf8 mode, but only if the ddd are hex digits. If not, { is - treated as a data character. */ + /* \o is a relatively new Perl feature, supporting a more general way of + specifying character codes in octal. The only supported form is \o{ddd}. */ - case 'x': - if (ptr[1] == '{') + case CHAR_o: + if (ptr[1] != CHAR_LEFT_CURLY_BRACKET) *errorcodeptr = ERR81; else { - const uschar *pt = ptr + 2; - int count = 0; - + ptr += 2; c = 0; - while ((digitab[*pt] & ctype_xdigit) != 0) + overflow = FALSE; + while (*ptr >= CHAR_0 && *ptr <= CHAR_7) { - register int cc = *pt++; - if (c == 0 && cc == '0') continue; /* Leading zeroes */ - count++; - -#ifndef EBCDIC /* ASCII coding */ - if (cc >= 'a') cc -= 32; /* Convert to upper case */ - c = (c << 4) + cc - ((cc < 'A')? '0' : ('A' - 10)); -#else /* EBCDIC coding */ - if (cc >= 'a' && cc <= 'z') cc += 64; /* Convert to upper case */ - c = (c << 4) + cc - ((cc >= '0')? '0' : ('A' - 10)); + register pcre_uint32 cc = *ptr++; + if (c == 0 && cc == CHAR_0) continue; /* Leading zeroes */ +#ifdef COMPILE_PCRE32 + if (c >= 0x20000000l) { overflow = TRUE; break; } +#endif + c = (c << 3) + cc - CHAR_0 ; +#if defined COMPILE_PCRE8 + if (c > (utf ? 0x10ffffU : 0xffU)) { overflow = TRUE; break; } +#elif defined COMPILE_PCRE16 + if (c > (utf ? 0x10ffffU : 0xffffU)) { overflow = TRUE; break; } +#elif defined COMPILE_PCRE32 + if (utf && c > 0x10ffffU) { overflow = TRUE; break; } #endif } - - if (*pt == '}') + if (overflow) { - if (c < 0 || count > (utf8? 8 : 2)) *errorcodeptr = ERR34; - ptr = pt; - break; + while (*ptr >= CHAR_0 && *ptr <= CHAR_7) ptr++; + *errorcodeptr = ERR34; } - - /* If the sequence of hex digits does not end with '}', then we don't - recognize this construct; fall through to the normal \x handling. */ + else if (*ptr == CHAR_RIGHT_CURLY_BRACKET) + { + if (utf && c >= 0xd800 && c <= 0xdfff) *errorcodeptr = ERR73; + } + else *errorcodeptr = ERR80; } + break; - /* Read just a single-byte hex-defined char */ + /* \x is complicated. In JavaScript, \x must be followed by two hexadecimal + numbers. Otherwise it is a lowercase x letter. */ - c = 0; - while (i++ < 2 && (digitab[ptr[1]] & ctype_xdigit) != 0) + case CHAR_x: + if ((options & PCRE_JAVASCRIPT_COMPAT) != 0) { - int cc; /* Some compilers don't like ++ */ - cc = *(++ptr); /* in initializers */ -#ifndef EBCDIC /* ASCII coding */ - if (cc >= 'a') cc -= 32; /* Convert to upper case */ - c = c * 16 + cc - ((cc < 'A')? '0' : ('A' - 10)); + if (MAX_255(ptr[1]) && (digitab[ptr[1]] & ctype_xdigit) != 0 + && MAX_255(ptr[2]) && (digitab[ptr[2]] & ctype_xdigit) != 0) + { + c = 0; + for (i = 0; i < 2; ++i) + { + register pcre_uint32 cc = *(++ptr); +#ifndef EBCDIC /* ASCII/UTF-8 coding */ + if (cc >= CHAR_a) cc -= 32; /* Convert to upper case */ + c = (c << 4) + cc - ((cc < CHAR_A)? CHAR_0 : (CHAR_A - 10)); #else /* EBCDIC coding */ - if (cc <= 'z') cc += 64; /* Convert to upper case */ - c = c * 16 + cc - ((cc >= '0')? '0' : ('A' - 10)); + if (cc >= CHAR_a && cc <= CHAR_z) cc += 64; /* Convert to upper case */ + c = (c << 4) + cc - ((cc >= CHAR_0)? CHAR_0 : (CHAR_A - 10)); #endif - } + } + } + } /* End JavaScript handling */ + + /* Handle \x in Perl's style. \x{ddd} is a character number which can be + greater than 0xff in utf or non-8bit mode, but only if the ddd are hex + digits. If not, { used to be treated as a data character. However, Perl + seems to read hex digits up to the first non-such, and ignore the rest, so + that, for example \x{zz} matches a binary zero. This seems crazy, so PCRE + now gives an error. */ + + else + { + if (ptr[1] == CHAR_LEFT_CURLY_BRACKET) + { + ptr += 2; + c = 0; + overflow = FALSE; + while (MAX_255(*ptr) && (digitab[*ptr] & ctype_xdigit) != 0) + { + register pcre_uint32 cc = *ptr++; + if (c == 0 && cc == CHAR_0) continue; /* Leading zeroes */ + +#ifdef COMPILE_PCRE32 + if (c >= 0x10000000l) { overflow = TRUE; break; } +#endif + +#ifndef EBCDIC /* ASCII/UTF-8 coding */ + if (cc >= CHAR_a) cc -= 32; /* Convert to upper case */ + c = (c << 4) + cc - ((cc < CHAR_A)? CHAR_0 : (CHAR_A - 10)); +#else /* EBCDIC coding */ + if (cc >= CHAR_a && cc <= CHAR_z) cc += 64; /* Convert to upper case */ + c = (c << 4) + cc - ((cc >= CHAR_0)? CHAR_0 : (CHAR_A - 10)); +#endif + +#if defined COMPILE_PCRE8 + if (c > (utf ? 0x10ffffU : 0xffU)) { overflow = TRUE; break; } +#elif defined COMPILE_PCRE16 + if (c > (utf ? 0x10ffffU : 0xffffU)) { overflow = TRUE; break; } +#elif defined COMPILE_PCRE32 + if (utf && c > 0x10ffffU) { overflow = TRUE; break; } +#endif + } + + if (overflow) + { + while (MAX_255(*ptr) && (digitab[*ptr] & ctype_xdigit) != 0) ptr++; + *errorcodeptr = ERR34; + } + + else if (*ptr == CHAR_RIGHT_CURLY_BRACKET) + { + if (utf && c >= 0xd800 && c <= 0xdfff) *errorcodeptr = ERR73; + } + + /* If the sequence of hex digits does not end with '}', give an error. + We used just to recognize this construct and fall through to the normal + \x handling, but nowadays Perl gives an error, which seems much more + sensible, so we do too. */ + + else *errorcodeptr = ERR79; + } /* End of \x{} processing */ + + /* Read a single-byte hex-defined char (up to two hex digits after \x) */ + + else + { + c = 0; + while (i++ < 2 && MAX_255(ptr[1]) && (digitab[ptr[1]] & ctype_xdigit) != 0) + { + pcre_uint32 cc; /* Some compilers don't like */ + cc = *(++ptr); /* ++ in initializers */ +#ifndef EBCDIC /* ASCII/UTF-8 coding */ + if (cc >= CHAR_a) cc -= 32; /* Convert to upper case */ + c = c * 16 + cc - ((cc < CHAR_A)? CHAR_0 : (CHAR_A - 10)); +#else /* EBCDIC coding */ + if (cc <= CHAR_z) cc += 64; /* Convert to upper case */ + c = c * 16 + cc - ((cc >= CHAR_0)? CHAR_0 : (CHAR_A - 10)); +#endif + } + } /* End of \xdd handling */ + } /* End of Perl-style \x handling */ break; /* For \c, a following letter is upper-cased; then the 0x40 bit is flipped. - This coding is ASCII-specific, but then the whole concept of \cx is + An error is given if the byte following \c is not an ASCII character. This + coding is ASCII-specific, but then the whole concept of \cx is ASCII-specific. (However, an EBCDIC equivalent has now been added.) */ - case 'c': + case CHAR_c: c = *(++ptr); - if (c == 0) + if (c == CHAR_NULL) { *errorcodeptr = ERR2; break; } - -#ifndef EBCDIC /* ASCII coding */ - if (c >= 'a' && c <= 'z') c -= 32; +#ifndef EBCDIC /* ASCII/UTF-8 coding */ + if (c > 127) /* Excludes all non-ASCII in either mode */ + { + *errorcodeptr = ERR68; + break; + } + if (c >= CHAR_a && c <= CHAR_z) c -= 32; c ^= 0x40; -#else /* EBCDIC coding */ - if (c >= 'a' && c <= 'z') c += 64; +#else /* EBCDIC coding */ + if (c >= CHAR_a && c <= CHAR_z) c += 64; c ^= 0xC0; #endif break; @@ -762,8 +1441,24 @@ else } } +/* Perl supports \N{name} for character names, as well as plain \N for "not +newline". PCRE does not support \N{name}. However, it does support +quantification such as \N{2,3}. */ + +if (escape == ESC_N && ptr[1] == CHAR_LEFT_CURLY_BRACKET && + !is_counted_repeat(ptr+2)) + *errorcodeptr = ERR37; + +/* If PCRE_UCP is set, we change the values for \d etc. */ + +if ((options & PCRE_UCP) != 0 && escape >= ESC_D && escape <= ESC_w) + escape += (ESC_DU - ESC_D); + +/* Set the pointer to the final character before returning. */ + *ptrptr = ptr; -return c; +*chptr = c; +return escape; } @@ -781,42 +1476,45 @@ escape sequence. Argument: ptrptr points to the pattern position pointer negptr points to a boolean that is set TRUE for negation else FALSE - dptr points to an int that is set to the detailed property value + ptypeptr points to an unsigned int that is set to the type value + pdataptr points to an unsigned int that is set to the detailed property value errorcodeptr points to the error code variable -Returns: type value from ucp_type_table, or -1 for an invalid type +Returns: TRUE if the type value was found, or FALSE for an invalid type */ -static int -get_ucp(const uschar **ptrptr, BOOL *negptr, int *dptr, int *errorcodeptr) +static BOOL +get_ucp(const pcre_uchar **ptrptr, BOOL *negptr, unsigned int *ptypeptr, + unsigned int *pdataptr, int *errorcodeptr) { -int c, i, bot, top; -const uschar *ptr = *ptrptr; -char name[32]; +pcre_uchar c; +int i, bot, top; +const pcre_uchar *ptr = *ptrptr; +pcre_uchar name[32]; c = *(++ptr); -if (c == 0) goto ERROR_RETURN; +if (c == CHAR_NULL) goto ERROR_RETURN; *negptr = FALSE; /* \P or \p can be followed by a name in {}, optionally preceded by ^ for negation. */ -if (c == '{') +if (c == CHAR_LEFT_CURLY_BRACKET) { - if (ptr[1] == '^') + if (ptr[1] == CHAR_CIRCUMFLEX_ACCENT) { *negptr = TRUE; ptr++; } - for (i = 0; i < (int)sizeof(name) - 1; i++) + for (i = 0; i < (int)(sizeof(name) / sizeof(pcre_uchar)) - 1; i++) { c = *(++ptr); - if (c == 0) goto ERROR_RETURN; - if (c == '}') break; + if (c == CHAR_NULL) goto ERROR_RETURN; + if (c == CHAR_RIGHT_CURLY_BRACKET) break; name[i] = c; } - if (c !='}') goto ERROR_RETURN; + if (c != CHAR_RIGHT_CURLY_BRACKET) goto ERROR_RETURN; name[i] = 0; } @@ -833,67 +1531,35 @@ else /* Search for a recognized property name using binary chop */ bot = 0; -top = _pcre_utt_size; +top = PRIV(utt_size); while (bot < top) { + int r; i = (bot + top) >> 1; - c = strcmp(name, _pcre_utt_names + _pcre_utt[i].name_offset); - if (c == 0) + r = STRCMP_UC_C8(name, PRIV(utt_names) + PRIV(utt)[i].name_offset); + if (r == 0) { - *dptr = _pcre_utt[i].value; - return _pcre_utt[i].type; + *ptypeptr = PRIV(utt)[i].type; + *pdataptr = PRIV(utt)[i].value; + return TRUE; } - if (c > 0) bot = i + 1; else top = i; + if (r > 0) bot = i + 1; else top = i; } *errorcodeptr = ERR47; *ptrptr = ptr; -return -1; +return FALSE; ERROR_RETURN: *errorcodeptr = ERR46; *ptrptr = ptr; -return -1; +return FALSE; } #endif - -/************************************************* -* Check for counted repeat * -*************************************************/ - -/* This function is called when a '{' is encountered in a place where it might -start a quantifier. It looks ahead to see if it really is a quantifier or not. -It is only a quantifier if it is one of the forms {ddd} {ddd,} or {ddd,ddd} -where the ddds are digits. - -Arguments: - p pointer to the first char after '{' - -Returns: TRUE or FALSE -*/ - -static BOOL -is_counted_repeat(const uschar *p) -{ -if ((digitab[*p++] & ctype_digit) == 0) return FALSE; -while ((digitab[*p] & ctype_digit) != 0) p++; -if (*p == '}') return TRUE; - -if (*p++ != ',') return FALSE; -if (*p == '}') return TRUE; - -if ((digitab[*p++] & ctype_digit) == 0) return FALSE; -while ((digitab[*p] & ctype_digit) != 0) p++; - -return (*p == '}'); -} - - - /************************************************* * Read repeat counts * *************************************************/ @@ -913,8 +1579,8 @@ Returns: pointer to '}' on success; current ptr on error, with errorcodeptr set non-zero */ -static const uschar * -read_repeat_counts(const uschar *p, int *minp, int *maxp, int *errorcodeptr) +static const pcre_uchar * +read_repeat_counts(const pcre_uchar *p, int *minp, int *maxp, int *errorcodeptr) { int min = 0; int max = -1; @@ -922,7 +1588,7 @@ int max = -1; /* Read the minimum value and do a paranoid check: a negative value indicates an integer overflow. */ -while ((digitab[*p] & ctype_digit) != 0) min = min * 10 + *p++ - '0'; +while (IS_DIGIT(*p)) min = min * 10 + (int)(*p++ - CHAR_0); if (min < 0 || min > 65535) { *errorcodeptr = ERR5; @@ -932,12 +1598,12 @@ if (min < 0 || min > 65535) /* Read the maximum value if there is one, and again do a paranoid on its size. Also, max must not be less than min. */ -if (*p == '}') max = min; else +if (*p == CHAR_RIGHT_CURLY_BRACKET) max = min; else { - if (*(++p) != '}') + if (*(++p) != CHAR_RIGHT_CURLY_BRACKET) { max = 0; - while((digitab[*p] & ctype_digit) != 0) max = max * 10 + *p++ - '0'; + while(IS_DIGIT(*p)) max = max * 10 + (int)(*p++ - CHAR_0); if (max < 0 || max > 65535) { *errorcodeptr = ERR5; @@ -961,183 +1627,36 @@ return p; -/************************************************* -* Find forward referenced subpattern * -*************************************************/ - -/* This function scans along a pattern's text looking for capturing -subpatterns, and counting them. If it finds a named pattern that matches the -name it is given, it returns its number. Alternatively, if the name is NULL, it -returns when it reaches a given numbered subpattern. This is used for forward -references to subpatterns. We know that if (?P< is encountered, the name will -be terminated by '>' because that is checked in the first pass. - -Arguments: - ptr current position in the pattern - cd compile background data - name name to seek, or NULL if seeking a numbered subpattern - lorn name length, or subpattern number if name is NULL - xmode TRUE if we are in /x mode - -Returns: the number of the named subpattern, or -1 if not found -*/ - -static int -find_parens(const uschar *ptr, compile_data *cd, const uschar *name, int lorn, - BOOL xmode) -{ -const uschar *thisname; -int count = cd->bracount; - -for (; *ptr != 0; ptr++) - { - int term; - - /* Skip over backslashed characters and also entire \Q...\E */ - - if (*ptr == '\\') - { - if (*(++ptr) == 0) return -1; - if (*ptr == 'Q') for (;;) - { - while (*(++ptr) != 0 && *ptr != '\\') {}; - if (*ptr == 0) return -1; - if (*(++ptr) == 'E') break; - } - continue; - } - - /* Skip over character classes; this logic must be similar to the way they - are handled for real. If the first character is '^', skip it. Also, if the - first few characters (either before or after ^) are \Q\E or \E we skip them - too. This makes for compatibility with Perl. */ - - if (*ptr == '[') - { - BOOL negate_class = FALSE; - for (;;) - { - int c = *(++ptr); - if (c == '\\') - { - if (ptr[1] == 'E') ptr++; - else if (strncmp((const char *)ptr+1, "Q\\E", 3) == 0) ptr += 3; - else break; - } - else if (!negate_class && c == '^') - negate_class = TRUE; - else break; - } - - /* If the next character is ']', it is a data character that must be - skipped, except in JavaScript compatibility mode. */ - - if (ptr[1] == ']' && (cd->external_options & PCRE_JAVASCRIPT_COMPAT) == 0) - ptr++; - - while (*(++ptr) != ']') - { - if (*ptr == 0) return -1; - if (*ptr == '\\') - { - if (*(++ptr) == 0) return -1; - if (*ptr == 'Q') for (;;) - { - while (*(++ptr) != 0 && *ptr != '\\') {}; - if (*ptr == 0) return -1; - if (*(++ptr) == 'E') break; - } - continue; - } - } - continue; - } - - /* Skip comments in /x mode */ - - if (xmode && *ptr == '#') - { - while (*(++ptr) != 0 && *ptr != '\n') {}; - if (*ptr == 0) return -1; - continue; - } - - /* An opening parens must now be a real metacharacter */ - - if (*ptr != '(') continue; - if (ptr[1] != '?' && ptr[1] != '*') - { - count++; - if (name == NULL && count == lorn) return count; - continue; - } - - ptr += 2; - if (*ptr == 'P') ptr++; /* Allow optional P */ - - /* We have to disambiguate (? */ - - if ((*ptr != '<' || ptr[1] == '!' || ptr[1] == '=') && - *ptr != '\'') - continue; - - count++; - - if (name == NULL && count == lorn) return count; - term = *ptr++; - if (term == '<') term = '>'; - thisname = ptr; - while (*ptr != term) ptr++; - if (name != NULL && lorn == ptr - thisname && - strncmp((const char *)name, (const char *)thisname, lorn) == 0) - return count; - } - -return -1; -} - - - /************************************************* * Find first significant op code * *************************************************/ /* This is called by several functions that scan a compiled expression looking for a fixed first character, or an anchoring op code etc. It skips over things -that do not influence this. For some calls, a change of option is important. -For some calls, it makes sense to skip negative forward and all backward -assertions, and also the \b assertion; for others it does not. +that do not influence this. For some calls, it makes sense to skip negative +forward and all backward assertions, and also the \b assertion; for others it +does not. Arguments: code pointer to the start of the group - options pointer to external options - optbit the option bit whose changing is significant, or - zero if none are skipassert TRUE if certain assertions are to be skipped Returns: pointer to the first significant opcode */ -static const uschar* -first_significant_code(const uschar *code, int *options, int optbit, - BOOL skipassert) +static const pcre_uchar* +first_significant_code(const pcre_uchar *code, BOOL skipassert) { for (;;) { switch ((int)*code) { - case OP_OPT: - if (optbit > 0 && ((int)code[1] & optbit) != (*options & optbit)) - *options = (int)code[1]; - code += 2; - break; - case OP_ASSERT_NOT: case OP_ASSERTBACK: case OP_ASSERTBACK_NOT: if (!skipassert) return code; do code += GET(code, 1); while (*code == OP_ALT); - code += _pcre_OP_lengths[*code]; + code += PRIV(OP_lengths)[*code]; break; case OP_WORD_BOUNDARY: @@ -1147,9 +1666,11 @@ for (;;) case OP_CALLOUT: case OP_CREF: + case OP_DNCREF: case OP_RREF: + case OP_DNRREF: case OP_DEF: - code += _pcre_OP_lengths[*code]; + code += PRIV(OP_lengths)[*code]; break; default: @@ -1161,30 +1682,41 @@ for (;;) - /************************************************* -* Find the fixed length of a pattern * +* Find the fixed length of a branch * *************************************************/ -/* Scan a pattern and compute the fixed length of subject that will match it, +/* Scan a branch and compute the fixed length of subject that will match it, if the length is fixed. This is needed for dealing with backward assertions. -In UTF8 mode, the result is in characters rather than bytes. +In UTF8 mode, the result is in characters rather than bytes. The branch is +temporarily terminated with OP_END when this function is called. + +This function is called when a backward assertion is encountered, so that if it +fails, the error message can point to the correct place in the pattern. +However, we cannot do this when the assertion contains subroutine calls, +because they can be forward references. We solve this by remembering this case +and doing the check at the end; a flag specifies which mode we are running in. Arguments: code points to the start of the pattern (the bracket) - options the compiling options + utf TRUE in UTF-8 / UTF-16 / UTF-32 mode + atend TRUE if called when the pattern is complete + cd the "compile data" structure -Returns: the fixed length, or -1 if there is no fixed length, - or -2 if \C was encountered +Returns: the fixed length, + or -1 if there is no fixed length, + or -2 if \C was encountered (in UTF-8 mode only) + or -3 if an OP_RECURSE item was encountered and atend is FALSE + or -4 if an unknown opcode was encountered (internal error) */ static int -find_fixedlength(uschar *code, int options) +find_fixedlength(pcre_uchar *code, BOOL utf, BOOL atend, compile_data *cd) { int length = -1; register int branchlength = 0; -register uschar *cc = code + 1 + LINK_SIZE; +register pcre_uchar *cc = code + 1 + LINK_SIZE; /* Scan along the opcodes for this branch. If we get to the end of the branch, check the length against that of the other branches. */ @@ -1192,29 +1724,39 @@ branch, check the length against that of the other branches. */ for (;;) { int d; - register int op = *cc; + pcre_uchar *ce, *cs; + register pcre_uchar op = *cc; + switch (op) { + /* We only need to continue for OP_CBRA (normal capturing bracket) and + OP_BRA (normal non-capturing bracket) because the other variants of these + opcodes are all concerned with unlimited repeated groups, which of course + are not of fixed length. */ + case OP_CBRA: case OP_BRA: case OP_ONCE: + case OP_ONCE_NC: case OP_COND: - d = find_fixedlength(cc + ((op == OP_CBRA)? 2:0), options); + d = find_fixedlength(cc + ((op == OP_CBRA)? IMM2_SIZE : 0), utf, atend, cd); if (d < 0) return d; branchlength += d; do cc += GET(cc, 1); while (*cc == OP_ALT); cc += 1 + LINK_SIZE; break; - /* Reached end of a branch; if it's a ket it is the end of a nested - call. If it's ALT it is an alternation in a nested call. If it is - END it's the end of the outer call. All can be handled by the same code. */ + /* Reached end of a branch; if it's a ket it is the end of a nested call. + If it's ALT it is an alternation in a nested call. An ACCEPT is effectively + an ALT. If it is END it's the end of the outer call. All can be handled by + the same code. Note that we must not include the OP_KETRxxx opcodes here, + because they all imply an unlimited repeat. */ case OP_ALT: case OP_KET: - case OP_KETRMAX: - case OP_KETRMIN: case OP_END: + case OP_ACCEPT: + case OP_ASSERT_ACCEPT: if (length < 0) length = branchlength; else if (length != branchlength) return -1; if (*cc != OP_ALT) return length; @@ -1222,6 +1764,21 @@ for (;;) branchlength = 0; break; + /* A true recursion implies not fixed length, but a subroutine call may + be OK. If the subroutine is a forward reference, we can't deal with + it until the end of the pattern, so return -3. */ + + case OP_RECURSE: + if (!atend) return -3; + cs = ce = (pcre_uchar *)cd->start_code + GET(cc, 1); /* Start subpattern */ + do ce += GET(ce, 1); while (*ce == OP_ALT); /* End subpattern */ + if (cc > cs && cc < ce) return -1; /* Recursion */ + d = find_fixedlength(cs + IMM2_SIZE, utf, atend, cd); + if (d < 0) return d; + branchlength += d; + cc += 1 + LINK_SIZE; + break; + /* Skip over assertive subpatterns */ case OP_ASSERT: @@ -1229,39 +1786,55 @@ for (;;) case OP_ASSERTBACK: case OP_ASSERTBACK_NOT: do cc += GET(cc, 1); while (*cc == OP_ALT); - /* Fall through */ + cc += PRIV(OP_lengths)[*cc]; + break; /* Skip over things that don't match chars */ - case OP_REVERSE: - case OP_CREF: - case OP_RREF: - case OP_DEF: - case OP_OPT: + case OP_MARK: + case OP_PRUNE_ARG: + case OP_SKIP_ARG: + case OP_THEN_ARG: + cc += cc[1] + PRIV(OP_lengths)[*cc]; + break; + case OP_CALLOUT: - case OP_SOD: - case OP_SOM: + case OP_CIRC: + case OP_CIRCM: + case OP_CLOSE: + case OP_COMMIT: + case OP_CREF: + case OP_DEF: + case OP_DNCREF: + case OP_DNRREF: + case OP_DOLL: + case OP_DOLLM: case OP_EOD: case OP_EODN: - case OP_CIRC: - case OP_DOLL: + case OP_FAIL: case OP_NOT_WORD_BOUNDARY: + case OP_PRUNE: + case OP_REVERSE: + case OP_RREF: + case OP_SET_SOM: + case OP_SKIP: + case OP_SOD: + case OP_SOM: + case OP_THEN: case OP_WORD_BOUNDARY: - cc += _pcre_OP_lengths[*cc]; + cc += PRIV(OP_lengths)[*cc]; break; /* Handle literal characters */ case OP_CHAR: - case OP_CHARNC: + case OP_CHARI: case OP_NOT: + case OP_NOTI: branchlength++; cc += 2; -#ifdef SUPPORT_UTF8 - if ((options & PCRE_UTF8) != 0) - { - while ((*cc & 0xc0) == 0x80) cc++; - } +#ifdef SUPPORT_UTF + if (utf && HAS_EXTRALEN(cc[-1])) cc += GET_EXTRALEN(cc[-1]); #endif break; @@ -1269,20 +1842,21 @@ for (;;) need to skip over a multibyte character in UTF8 mode. */ case OP_EXACT: - branchlength += GET2(cc,1); - cc += 4; -#ifdef SUPPORT_UTF8 - if ((options & PCRE_UTF8) != 0) - { - while((*cc & 0x80) == 0x80) cc++; - } + case OP_EXACTI: + case OP_NOTEXACT: + case OP_NOTEXACTI: + branchlength += (int)GET2(cc,1); + cc += 2 + IMM2_SIZE; +#ifdef SUPPORT_UTF + if (utf && HAS_EXTRALEN(cc[-1])) cc += GET_EXTRALEN(cc[-1]); #endif break; case OP_TYPEEXACT: branchlength += GET2(cc,1); - if (cc[3] == OP_PROP || cc[3] == OP_NOTPROP) cc += 2; - cc += 4; + if (cc[1 + IMM2_SIZE] == OP_PROP || cc[1 + IMM2_SIZE] == OP_NOTPROP) + cc += 2; + cc += 1 + IMM2_SIZE + 1; break; /* Handle single-char matchers */ @@ -1292,6 +1866,10 @@ for (;;) cc += 2; /* Fall through */ + case OP_HSPACE: + case OP_VSPACE: + case OP_NOT_HSPACE: + case OP_NOT_VSPACE: case OP_NOT_DIGIT: case OP_DIGIT: case OP_NOT_WHITESPACE: @@ -1304,36 +1882,47 @@ for (;;) cc++; break; - /* The single-byte matcher isn't allowed */ + /* The single-byte matcher isn't allowed. This only happens in UTF-8 mode; + otherwise \C is coded as OP_ALLANY. */ case OP_ANYBYTE: return -2; /* Check a class for variable quantification */ -#ifdef SUPPORT_UTF8 - case OP_XCLASS: - cc += GET(cc, 1) - 33; - /* Fall through */ -#endif - case OP_CLASS: case OP_NCLASS: - cc += 33; +#if defined SUPPORT_UTF || defined COMPILE_PCRE16 || defined COMPILE_PCRE32 + case OP_XCLASS: + /* The original code caused an unsigned overflow in 64 bit systems, + so now we use a conditional statement. */ + if (op == OP_XCLASS) + cc += GET(cc, 1); + else + cc += PRIV(OP_lengths)[OP_CLASS]; +#else + cc += PRIV(OP_lengths)[OP_CLASS]; +#endif switch (*cc) { case OP_CRSTAR: case OP_CRMINSTAR: + case OP_CRPLUS: + case OP_CRMINPLUS: case OP_CRQUERY: case OP_CRMINQUERY: + case OP_CRPOSSTAR: + case OP_CRPOSPLUS: + case OP_CRPOSQUERY: return -1; case OP_CRRANGE: case OP_CRMINRANGE: - if (GET2(cc,1) != GET2(cc,3)) return -1; - branchlength += GET2(cc,1); - cc += 5; + case OP_CRPOSRANGE: + if (GET2(cc,1) != GET2(cc,1+IMM2_SIZE)) return -1; + branchlength += (int)GET2(cc,1); + cc += 1 + 2 * IMM2_SIZE; break; default: @@ -1343,8 +1932,93 @@ for (;;) /* Anything else is variable length */ - default: + case OP_ANYNL: + case OP_BRAMINZERO: + case OP_BRAPOS: + case OP_BRAPOSZERO: + case OP_BRAZERO: + case OP_CBRAPOS: + case OP_EXTUNI: + case OP_KETRMAX: + case OP_KETRMIN: + case OP_KETRPOS: + case OP_MINPLUS: + case OP_MINPLUSI: + case OP_MINQUERY: + case OP_MINQUERYI: + case OP_MINSTAR: + case OP_MINSTARI: + case OP_MINUPTO: + case OP_MINUPTOI: + case OP_NOTMINPLUS: + case OP_NOTMINPLUSI: + case OP_NOTMINQUERY: + case OP_NOTMINQUERYI: + case OP_NOTMINSTAR: + case OP_NOTMINSTARI: + case OP_NOTMINUPTO: + case OP_NOTMINUPTOI: + case OP_NOTPLUS: + case OP_NOTPLUSI: + case OP_NOTPOSPLUS: + case OP_NOTPOSPLUSI: + case OP_NOTPOSQUERY: + case OP_NOTPOSQUERYI: + case OP_NOTPOSSTAR: + case OP_NOTPOSSTARI: + case OP_NOTPOSUPTO: + case OP_NOTPOSUPTOI: + case OP_NOTQUERY: + case OP_NOTQUERYI: + case OP_NOTSTAR: + case OP_NOTSTARI: + case OP_NOTUPTO: + case OP_NOTUPTOI: + case OP_PLUS: + case OP_PLUSI: + case OP_POSPLUS: + case OP_POSPLUSI: + case OP_POSQUERY: + case OP_POSQUERYI: + case OP_POSSTAR: + case OP_POSSTARI: + case OP_POSUPTO: + case OP_POSUPTOI: + case OP_QUERY: + case OP_QUERYI: + case OP_REF: + case OP_REFI: + case OP_DNREF: + case OP_DNREFI: + case OP_SBRA: + case OP_SBRAPOS: + case OP_SCBRA: + case OP_SCBRAPOS: + case OP_SCOND: + case OP_SKIPZERO: + case OP_STAR: + case OP_STARI: + case OP_TYPEMINPLUS: + case OP_TYPEMINQUERY: + case OP_TYPEMINSTAR: + case OP_TYPEMINUPTO: + case OP_TYPEPLUS: + case OP_TYPEPOSPLUS: + case OP_TYPEPOSQUERY: + case OP_TYPEPOSSTAR: + case OP_TYPEPOSUPTO: + case OP_TYPEQUERY: + case OP_TYPESTAR: + case OP_TYPEUPTO: + case OP_UPTO: + case OP_UPTOI: return -1; + + /* Catch unrecognized opcodes so that when new ones are added they + are not forgotten, as has happened in the past. */ + + default: + return -4; } } /* Control never gets here */ @@ -1352,28 +2026,31 @@ for (;;) - /************************************************* -* Scan compiled regex for numbered bracket * +* Scan compiled regex for specific bracket * *************************************************/ /* This little function scans through a compiled pattern until it finds a -capturing bracket with the given number. +capturing bracket with the given number, or, if the number is negative, an +instance of OP_REVERSE for a lookbehind. The function is global in the C sense +so that it can be called from pcre_study() when finding the minimum matching +length. Arguments: code points to start of expression - utf8 TRUE in UTF-8 mode - number the required bracket number + utf TRUE in UTF-8 / UTF-16 / UTF-32 mode + number the required bracket number or negative to find a lookbehind Returns: pointer to the opcode for the bracket, or NULL if not found */ -static const uschar * -find_bracket(const uschar *code, BOOL utf8, int number) +const pcre_uchar * +PRIV(find_bracket)(const pcre_uchar *code, BOOL utf, int number) { for (;;) { - register int c = *code; + register pcre_uchar c = *code; + if (c == OP_END) return NULL; /* XCLASS is used for classes that cannot be represented just by a bit @@ -1382,18 +2059,28 @@ for (;;) if (c == OP_XCLASS) code += GET(code, 1); + /* Handle recursion */ + + else if (c == OP_REVERSE) + { + if (number < 0) return (pcre_uchar *)code; + code += PRIV(OP_lengths)[c]; + } + /* Handle capturing bracket */ - else if (c == OP_CBRA) + else if (c == OP_CBRA || c == OP_SCBRA || + c == OP_CBRAPOS || c == OP_SCBRAPOS) { - int n = GET2(code, 1+LINK_SIZE); - if (n == number) return (uschar *)code; - code += _pcre_OP_lengths[c]; + int n = (int)GET2(code, 1+LINK_SIZE); + if (n == number) return (pcre_uchar *)code; + code += PRIV(OP_lengths)[c]; } /* Otherwise, we can get the item's length from the table, except that for repeated character types, we have to test for \p and \P, which have an extra - two bytes of parameters. */ + two bytes of parameters, and for MARK/PRUNE/SKIP/THEN with an argument, we + must add in its length. */ else { @@ -1415,41 +2102,62 @@ for (;;) case OP_TYPEMINUPTO: case OP_TYPEEXACT: case OP_TYPEPOSUPTO: - if (code[3] == OP_PROP || code[3] == OP_NOTPROP) code += 2; + if (code[1 + IMM2_SIZE] == OP_PROP || code[1 + IMM2_SIZE] == OP_NOTPROP) + code += 2; + break; + + case OP_MARK: + case OP_PRUNE_ARG: + case OP_SKIP_ARG: + case OP_THEN_ARG: + code += code[1]; break; } /* Add in the fixed length from the table */ - code += _pcre_OP_lengths[c]; + code += PRIV(OP_lengths)[c]; /* In UTF-8 mode, opcodes that are followed by a character may be followed by a multi-byte character. The length in the table is a minimum, so we have to arrange to skip the extra bytes. */ -#ifdef SUPPORT_UTF8 - if (utf8) switch(c) +#if defined SUPPORT_UTF && !defined COMPILE_PCRE32 + if (utf) switch(c) { case OP_CHAR: - case OP_CHARNC: + case OP_CHARI: case OP_EXACT: + case OP_EXACTI: case OP_UPTO: + case OP_UPTOI: case OP_MINUPTO: + case OP_MINUPTOI: case OP_POSUPTO: + case OP_POSUPTOI: case OP_STAR: + case OP_STARI: case OP_MINSTAR: + case OP_MINSTARI: case OP_POSSTAR: + case OP_POSSTARI: case OP_PLUS: + case OP_PLUSI: case OP_MINPLUS: + case OP_MINPLUSI: case OP_POSPLUS: + case OP_POSPLUSI: case OP_QUERY: + case OP_QUERYI: case OP_MINQUERY: + case OP_MINQUERYI: case OP_POSQUERY: - if (code[-1] >= 0xc0) code += _pcre_utf8_table4[code[-1] & 0x3f]; + case OP_POSQUERYI: + if (HAS_EXTRALEN(code[-1])) code += GET_EXTRALEN(code[-1]); break; } #else - (void)(utf8); /* Keep compiler happy by referencing function argument */ + (void)(utf); /* Keep compiler happy by referencing function argument */ #endif } } @@ -1466,17 +2174,17 @@ instance of OP_RECURSE. Arguments: code points to start of expression - utf8 TRUE in UTF-8 mode + utf TRUE in UTF-8 / UTF-16 / UTF-32 mode Returns: pointer to the opcode for OP_RECURSE, or NULL if not found */ -static const uschar * -find_recurse(const uschar *code, BOOL utf8) +static const pcre_uchar * +find_recurse(const pcre_uchar *code, BOOL utf) { for (;;) { - register int c = *code; + register pcre_uchar c = *code; if (c == OP_END) return NULL; if (c == OP_RECURSE) return code; @@ -1488,7 +2196,8 @@ for (;;) /* Otherwise, we can get the item's length from the table, except that for repeated character types, we have to test for \p and \P, which have an extra - two bytes of parameters. */ + two bytes of parameters, and for MARK/PRUNE/SKIP/THEN with an argument, we + must add in its length. */ else { @@ -1510,41 +2219,90 @@ for (;;) case OP_TYPEUPTO: case OP_TYPEMINUPTO: case OP_TYPEEXACT: - if (code[3] == OP_PROP || code[3] == OP_NOTPROP) code += 2; + if (code[1 + IMM2_SIZE] == OP_PROP || code[1 + IMM2_SIZE] == OP_NOTPROP) + code += 2; + break; + + case OP_MARK: + case OP_PRUNE_ARG: + case OP_SKIP_ARG: + case OP_THEN_ARG: + code += code[1]; break; } /* Add in the fixed length from the table */ - code += _pcre_OP_lengths[c]; + code += PRIV(OP_lengths)[c]; /* In UTF-8 mode, opcodes that are followed by a character may be followed by a multi-byte character. The length in the table is a minimum, so we have to arrange to skip the extra bytes. */ -#ifdef SUPPORT_UTF8 - if (utf8) switch(c) +#if defined SUPPORT_UTF && !defined COMPILE_PCRE32 + if (utf) switch(c) { case OP_CHAR: - case OP_CHARNC: + case OP_CHARI: + case OP_NOT: + case OP_NOTI: case OP_EXACT: + case OP_EXACTI: + case OP_NOTEXACT: + case OP_NOTEXACTI: case OP_UPTO: + case OP_UPTOI: + case OP_NOTUPTO: + case OP_NOTUPTOI: case OP_MINUPTO: + case OP_MINUPTOI: + case OP_NOTMINUPTO: + case OP_NOTMINUPTOI: case OP_POSUPTO: + case OP_POSUPTOI: + case OP_NOTPOSUPTO: + case OP_NOTPOSUPTOI: case OP_STAR: + case OP_STARI: + case OP_NOTSTAR: + case OP_NOTSTARI: case OP_MINSTAR: + case OP_MINSTARI: + case OP_NOTMINSTAR: + case OP_NOTMINSTARI: case OP_POSSTAR: + case OP_POSSTARI: + case OP_NOTPOSSTAR: + case OP_NOTPOSSTARI: case OP_PLUS: + case OP_PLUSI: + case OP_NOTPLUS: + case OP_NOTPLUSI: case OP_MINPLUS: + case OP_MINPLUSI: + case OP_NOTMINPLUS: + case OP_NOTMINPLUSI: case OP_POSPLUS: + case OP_POSPLUSI: + case OP_NOTPOSPLUS: + case OP_NOTPOSPLUSI: case OP_QUERY: + case OP_QUERYI: + case OP_NOTQUERY: + case OP_NOTQUERYI: case OP_MINQUERY: + case OP_MINQUERYI: + case OP_NOTMINQUERY: + case OP_NOTMINQUERYI: case OP_POSQUERY: - if (code[-1] >= 0xc0) code += _pcre_utf8_table4[code[-1] & 0x3f]; + case OP_POSQUERYI: + case OP_NOTPOSQUERY: + case OP_NOTPOSQUERYI: + if (HAS_EXTRALEN(code[-1])) code += GET_EXTRALEN(code[-1]); break; } #else - (void)(utf8); /* Keep compiler happy by referencing function argument */ + (void)(utf); /* Keep compiler happy by referencing function argument */ #endif } } @@ -1567,20 +2325,30 @@ bracket whose current branch will already have been scanned. Arguments: code points to start of search endcode points to where to stop - utf8 TRUE if in UTF8 mode + utf TRUE if in UTF-8 / UTF-16 / UTF-32 mode + cd contains pointers to tables etc. + recurses chain of recurse_check to catch mutual recursion Returns: TRUE if what is matched could be empty */ +typedef struct recurse_check { + struct recurse_check *prev; + const pcre_uchar *group; +} recurse_check; + static BOOL -could_be_empty_branch(const uschar *code, const uschar *endcode, BOOL utf8) +could_be_empty_branch(const pcre_uchar *code, const pcre_uchar *endcode, + BOOL utf, compile_data *cd, recurse_check *recurses) { -register int c; -for (code = first_significant_code(code + _pcre_OP_lengths[*code], NULL, 0, TRUE); +register pcre_uchar c; +recurse_check this_recurse; + +for (code = first_significant_code(code + PRIV(OP_lengths)[*code], TRUE); code < endcode; - code = first_significant_code(code + _pcre_OP_lengths[c], NULL, 0, TRUE)) + code = first_significant_code(code + PRIV(OP_lengths)[c], TRUE)) { - const uschar *ccode; + const pcre_uchar *ccode; c = *code; @@ -1594,11 +2362,88 @@ for (code = first_significant_code(code + _pcre_OP_lengths[*code], NULL, 0, TRUE continue; } + /* For a recursion/subroutine call, if its end has been reached, which + implies a backward reference subroutine call, we can scan it. If it's a + forward reference subroutine call, we can't. To detect forward reference + we have to scan up the list that is kept in the workspace. This function is + called only when doing the real compile, not during the pre-compile that + measures the size of the compiled pattern. */ + + if (c == OP_RECURSE) + { + const pcre_uchar *scode = cd->start_code + GET(code, 1); + BOOL empty_branch; + + /* Test for forward reference or uncompleted reference. This is disabled + when called to scan a completed pattern by setting cd->start_workspace to + NULL. */ + + if (cd->start_workspace != NULL) + { + const pcre_uchar *tcode; + for (tcode = cd->start_workspace; tcode < cd->hwm; tcode += LINK_SIZE) + if ((int)GET(tcode, 0) == (int)(code + 1 - cd->start_code)) return TRUE; + if (GET(scode, 1) == 0) return TRUE; /* Unclosed */ + } + + /* If we are scanning a completed pattern, there are no forward references + and all groups are complete. We need to detect whether this is a recursive + call, as otherwise there will be an infinite loop. If it is a recursion, + just skip over it. Simple recursions are easily detected. For mutual + recursions we keep a chain on the stack. */ + + else + { + recurse_check *r = recurses; + const pcre_uchar *endgroup = scode; + + do endgroup += GET(endgroup, 1); while (*endgroup == OP_ALT); + if (code >= scode && code <= endgroup) continue; /* Simple recursion */ + + for (r = recurses; r != NULL; r = r->prev) + if (r->group == scode) break; + if (r != NULL) continue; /* Mutual recursion */ + } + + /* Completed reference; scan the referenced group, remembering it on the + stack chain to detect mutual recursions. */ + + empty_branch = FALSE; + this_recurse.prev = recurses; + this_recurse.group = scode; + + do + { + if (could_be_empty_branch(scode, endcode, utf, cd, &this_recurse)) + { + empty_branch = TRUE; + break; + } + scode += GET(scode, 1); + } + while (*scode == OP_ALT); + + if (!empty_branch) return FALSE; /* All branches are non-empty */ + continue; + } + /* Groups with zero repeats can of course be empty; skip them. */ - if (c == OP_BRAZERO || c == OP_BRAMINZERO || c == OP_SKIPZERO) + if (c == OP_BRAZERO || c == OP_BRAMINZERO || c == OP_SKIPZERO || + c == OP_BRAPOSZERO) + { + code += PRIV(OP_lengths)[c]; + do code += GET(code, 1); while (*code == OP_ALT); + c = *code; + continue; + } + + /* A nested group that is already marked as "could be empty" can just be + skipped. */ + + if (c == OP_SBRA || c == OP_SBRAPOS || + c == OP_SCBRA || c == OP_SCBRAPOS) { - code += _pcre_OP_lengths[c]; do code += GET(code, 1); while (*code == OP_ALT); c = *code; continue; @@ -1606,22 +2451,33 @@ for (code = first_significant_code(code + _pcre_OP_lengths[*code], NULL, 0, TRUE /* For other groups, scan the branches. */ - if (c == OP_BRA || c == OP_CBRA || c == OP_ONCE || c == OP_COND) + if (c == OP_BRA || c == OP_BRAPOS || + c == OP_CBRA || c == OP_CBRAPOS || + c == OP_ONCE || c == OP_ONCE_NC || + c == OP_COND) { BOOL empty_branch; if (GET(code, 1) == 0) return TRUE; /* Hit unclosed bracket */ - /* Scan a closed bracket */ + /* If a conditional group has only one branch, there is a second, implied, + empty branch, so just skip over the conditional, because it could be empty. + Otherwise, scan the individual branches of the group. */ - empty_branch = FALSE; - do - { - if (!empty_branch && could_be_empty_branch(code, endcode, utf8)) - empty_branch = TRUE; + if (c == OP_COND && code[GET(code, 1)] != OP_ALT) code += GET(code, 1); + else + { + empty_branch = FALSE; + do + { + if (!empty_branch && could_be_empty_branch(code, endcode, utf, cd, NULL)) + empty_branch = TRUE; + code += GET(code, 1); + } + while (*code == OP_ALT); + if (!empty_branch) return FALSE; /* All branches are non-empty */ } - while (*code == OP_ALT); - if (!empty_branch) return FALSE; /* All branches are non-empty */ + c = *code; continue; } @@ -1632,11 +2488,11 @@ for (code = first_significant_code(code + _pcre_OP_lengths[*code], NULL, 0, TRUE { /* Check for quantifiers after a class. XCLASS is used for classes that cannot be represented just by a bit map. This includes negated single - high-valued characters. The length in _pcre_OP_lengths[] is zero; the + high-valued characters. The length in PRIV(OP_lengths)[] is zero; the actual length is stored in the compiled code, so we must update "code" here. */ -#ifdef SUPPORT_UTF8 +#if defined SUPPORT_UTF || !defined COMPILE_PCRE8 case OP_XCLASS: ccode = code += GET(code, 1); goto CHECK_CLASS_REPEAT; @@ -1644,9 +2500,9 @@ for (code = first_significant_code(code + _pcre_OP_lengths[*code], NULL, 0, TRUE case OP_CLASS: case OP_NCLASS: - ccode = code + 33; + ccode = code + PRIV(OP_lengths)[OP_CLASS]; -#ifdef SUPPORT_UTF8 +#if defined SUPPORT_UTF || !defined COMPILE_PCRE8 CHECK_CLASS_REPEAT: #endif @@ -1656,15 +2512,19 @@ for (code = first_significant_code(code + _pcre_OP_lengths[*code], NULL, 0, TRUE case OP_CRMINSTAR: case OP_CRQUERY: case OP_CRMINQUERY: + case OP_CRPOSSTAR: + case OP_CRPOSQUERY: break; default: /* Non-repeat => class must match */ case OP_CRPLUS: /* These repeats aren't empty */ case OP_CRMINPLUS: + case OP_CRPOSPLUS: return FALSE; case OP_CRRANGE: case OP_CRMINRANGE: + case OP_CRPOSRANGE: if (GET2(ccode, 1) > 0) return FALSE; /* Minimum > 0 */ break; } @@ -1672,33 +2532,57 @@ for (code = first_significant_code(code + _pcre_OP_lengths[*code], NULL, 0, TRUE /* Opcodes that must match a character */ + case OP_ANY: + case OP_ALLANY: + case OP_ANYBYTE: + case OP_PROP: case OP_NOTPROP: + case OP_ANYNL: + + case OP_NOT_HSPACE: + case OP_HSPACE: + case OP_NOT_VSPACE: + case OP_VSPACE: case OP_EXTUNI: + case OP_NOT_DIGIT: case OP_DIGIT: case OP_NOT_WHITESPACE: case OP_WHITESPACE: case OP_NOT_WORDCHAR: case OP_WORDCHAR: - case OP_ANY: - case OP_ALLANY: - case OP_ANYBYTE: + case OP_CHAR: - case OP_CHARNC: + case OP_CHARI: case OP_NOT: + case OP_NOTI: + case OP_PLUS: + case OP_PLUSI: case OP_MINPLUS: - case OP_POSPLUS: - case OP_EXACT: + case OP_MINPLUSI: + case OP_NOTPLUS: + case OP_NOTPLUSI: case OP_NOTMINPLUS: + case OP_NOTMINPLUSI: + + case OP_POSPLUS: + case OP_POSPLUSI: case OP_NOTPOSPLUS: + case OP_NOTPOSPLUSI: + + case OP_EXACT: + case OP_EXACTI: case OP_NOTEXACT: + case OP_NOTEXACTI: + case OP_TYPEPLUS: case OP_TYPEMINPLUS: case OP_TYPEPOSPLUS: case OP_TYPEEXACT: + return FALSE; /* These are going to continue, as they may be empty, but we have to @@ -1718,7 +2602,8 @@ for (code = first_significant_code(code + _pcre_OP_lengths[*code], NULL, 0, TRUE case OP_TYPEUPTO: case OP_TYPEMINUPTO: case OP_TYPEPOSUPTO: - if (code[3] == OP_PROP || code[3] == OP_NOTPROP) code += 2; + if (code[1 + IMM2_SIZE] == OP_PROP || code[1 + IMM2_SIZE] == OP_NOTPROP) + code += 2; break; /* End of branch */ @@ -1726,25 +2611,81 @@ for (code = first_significant_code(code + _pcre_OP_lengths[*code], NULL, 0, TRUE case OP_KET: case OP_KETRMAX: case OP_KETRMIN: + case OP_KETRPOS: case OP_ALT: return TRUE; /* In UTF-8 mode, STAR, MINSTAR, POSSTAR, QUERY, MINQUERY, POSQUERY, UPTO, - MINUPTO, and POSUPTO may be followed by a multibyte character */ + MINUPTO, and POSUPTO and their caseless and negative versions may be + followed by a multibyte character. */ -#ifdef SUPPORT_UTF8 +#if defined SUPPORT_UTF && !defined COMPILE_PCRE32 case OP_STAR: + case OP_STARI: + case OP_NOTSTAR: + case OP_NOTSTARI: + case OP_MINSTAR: + case OP_MINSTARI: + case OP_NOTMINSTAR: + case OP_NOTMINSTARI: + case OP_POSSTAR: + case OP_POSSTARI: + case OP_NOTPOSSTAR: + case OP_NOTPOSSTARI: + case OP_QUERY: + case OP_QUERYI: + case OP_NOTQUERY: + case OP_NOTQUERYI: + case OP_MINQUERY: + case OP_MINQUERYI: + case OP_NOTMINQUERY: + case OP_NOTMINQUERYI: + case OP_POSQUERY: + case OP_POSQUERYI: + case OP_NOTPOSQUERY: + case OP_NOTPOSQUERYI: + + if (utf && HAS_EXTRALEN(code[1])) code += GET_EXTRALEN(code[1]); + break; + case OP_UPTO: + case OP_UPTOI: + case OP_NOTUPTO: + case OP_NOTUPTOI: + case OP_MINUPTO: + case OP_MINUPTOI: + case OP_NOTMINUPTO: + case OP_NOTMINUPTOI: + case OP_POSUPTO: - if (utf8) while ((code[2] & 0xc0) == 0x80) code++; + case OP_POSUPTOI: + case OP_NOTPOSUPTO: + case OP_NOTPOSUPTOI: + + if (utf && HAS_EXTRALEN(code[1 + IMM2_SIZE])) code += GET_EXTRALEN(code[1 + IMM2_SIZE]); break; #endif + + /* MARK, and PRUNE/SKIP/THEN with an argument must skip over the argument + string. */ + + case OP_MARK: + case OP_PRUNE_ARG: + case OP_SKIP_ARG: + case OP_THEN_ARG: + code += code[1]; + break; + + /* None of the remaining opcodes are required to match a character. */ + + default: + break; } } @@ -1761,23 +2702,27 @@ return TRUE; the current branch of the current pattern to see if it could match the empty string. If it could, we must look outwards for branches at other levels, stopping when we pass beyond the bracket which is the subject of the recursion. +This function is called only during the real compile, not during the +pre-compile. Arguments: code points to start of the recursion endcode points to where to stop (current RECURSE item) bcptr points to the chain of current (unclosed) branch starts - utf8 TRUE if in UTF-8 mode + utf TRUE if in UTF-8 / UTF-16 / UTF-32 mode + cd pointers to tables etc Returns: TRUE if what is matched could be empty */ static BOOL -could_be_empty(const uschar *code, const uschar *endcode, branch_chain *bcptr, - BOOL utf8) +could_be_empty(const pcre_uchar *code, const pcre_uchar *endcode, + branch_chain *bcptr, BOOL utf, compile_data *cd) { -while (bcptr != NULL && bcptr->current >= code) +while (bcptr != NULL && bcptr->current_branch >= code) { - if (!could_be_empty_branch(bcptr->current, endcode, utf8)) return FALSE; + if (!could_be_empty_branch(bcptr->current_branch, endcode, utf, cd, NULL)) + return FALSE; bcptr = bcptr->outer; } return TRUE; @@ -1785,6 +2730,1089 @@ return TRUE; +/************************************************* +* Base opcode of repeated opcodes * +*************************************************/ + +/* Returns the base opcode for repeated single character type opcodes. If the +opcode is not a repeated character type, it returns with the original value. + +Arguments: c opcode +Returns: base opcode for the type +*/ + +static pcre_uchar +get_repeat_base(pcre_uchar c) +{ +return (c > OP_TYPEPOSUPTO)? c : + (c >= OP_TYPESTAR)? OP_TYPESTAR : + (c >= OP_NOTSTARI)? OP_NOTSTARI : + (c >= OP_NOTSTAR)? OP_NOTSTAR : + (c >= OP_STARI)? OP_STARI : + OP_STAR; +} + + + +#ifdef SUPPORT_UCP +/************************************************* +* Check a character and a property * +*************************************************/ + +/* This function is called by check_auto_possessive() when a property item +is adjacent to a fixed character. + +Arguments: + c the character + ptype the property type + pdata the data for the type + negated TRUE if it's a negated property (\P or \p{^) + +Returns: TRUE if auto-possessifying is OK +*/ + +static BOOL +check_char_prop(pcre_uint32 c, unsigned int ptype, unsigned int pdata, + BOOL negated) +{ +const pcre_uint32 *p; +const ucd_record *prop = GET_UCD(c); + +switch(ptype) + { + case PT_LAMP: + return (prop->chartype == ucp_Lu || + prop->chartype == ucp_Ll || + prop->chartype == ucp_Lt) == negated; + + case PT_GC: + return (pdata == PRIV(ucp_gentype)[prop->chartype]) == negated; + + case PT_PC: + return (pdata == prop->chartype) == negated; + + case PT_SC: + return (pdata == prop->script) == negated; + + /* These are specials */ + + case PT_ALNUM: + return (PRIV(ucp_gentype)[prop->chartype] == ucp_L || + PRIV(ucp_gentype)[prop->chartype] == ucp_N) == negated; + + /* Perl space used to exclude VT, but from Perl 5.18 it is included, which + means that Perl space and POSIX space are now identical. PCRE was changed + at release 8.34. */ + + case PT_SPACE: /* Perl space */ + case PT_PXSPACE: /* POSIX space */ + switch(c) + { + HSPACE_CASES: + VSPACE_CASES: + return negated; + + default: + return (PRIV(ucp_gentype)[prop->chartype] == ucp_Z) == negated; + } + break; /* Control never reaches here */ + + case PT_WORD: + return (PRIV(ucp_gentype)[prop->chartype] == ucp_L || + PRIV(ucp_gentype)[prop->chartype] == ucp_N || + c == CHAR_UNDERSCORE) == negated; + + case PT_CLIST: + p = PRIV(ucd_caseless_sets) + prop->caseset; + for (;;) + { + if (c < *p) return !negated; + if (c == *p++) return negated; + } + break; /* Control never reaches here */ + } + +return FALSE; +} +#endif /* SUPPORT_UCP */ + + + +/************************************************* +* Fill the character property list * +*************************************************/ + +/* Checks whether the code points to an opcode that can take part in auto- +possessification, and if so, fills a list with its properties. + +Arguments: + code points to start of expression + utf TRUE if in UTF-8 / UTF-16 / UTF-32 mode + fcc points to case-flipping table + list points to output list + list[0] will be filled with the opcode + list[1] will be non-zero if this opcode + can match an empty character string + list[2..7] depends on the opcode + +Returns: points to the start of the next opcode if *code is accepted + NULL if *code is not accepted +*/ + +static const pcre_uchar * +get_chr_property_list(const pcre_uchar *code, BOOL utf, + const pcre_uint8 *fcc, pcre_uint32 *list) +{ +pcre_uchar c = *code; +pcre_uchar base; +const pcre_uchar *end; +pcre_uint32 chr; + +#ifdef SUPPORT_UCP +pcre_uint32 *clist_dest; +const pcre_uint32 *clist_src; +#else +utf = utf; /* Suppress "unused parameter" compiler warning */ +#endif + +list[0] = c; +list[1] = FALSE; +code++; + +if (c >= OP_STAR && c <= OP_TYPEPOSUPTO) + { + base = get_repeat_base(c); + c -= (base - OP_STAR); + + if (c == OP_UPTO || c == OP_MINUPTO || c == OP_EXACT || c == OP_POSUPTO) + code += IMM2_SIZE; + + list[1] = (c != OP_PLUS && c != OP_MINPLUS && c != OP_EXACT && c != OP_POSPLUS); + + switch(base) + { + case OP_STAR: + list[0] = OP_CHAR; + break; + + case OP_STARI: + list[0] = OP_CHARI; + break; + + case OP_NOTSTAR: + list[0] = OP_NOT; + break; + + case OP_NOTSTARI: + list[0] = OP_NOTI; + break; + + case OP_TYPESTAR: + list[0] = *code; + code++; + break; + } + c = list[0]; + } + +switch(c) + { + case OP_NOT_DIGIT: + case OP_DIGIT: + case OP_NOT_WHITESPACE: + case OP_WHITESPACE: + case OP_NOT_WORDCHAR: + case OP_WORDCHAR: + case OP_ANY: + case OP_ALLANY: + case OP_ANYNL: + case OP_NOT_HSPACE: + case OP_HSPACE: + case OP_NOT_VSPACE: + case OP_VSPACE: + case OP_EXTUNI: + case OP_EODN: + case OP_EOD: + case OP_DOLL: + case OP_DOLLM: + return code; + + case OP_CHAR: + case OP_NOT: + GETCHARINCTEST(chr, code); + list[2] = chr; + list[3] = NOTACHAR; + return code; + + case OP_CHARI: + case OP_NOTI: + list[0] = (c == OP_CHARI) ? OP_CHAR : OP_NOT; + GETCHARINCTEST(chr, code); + list[2] = chr; + +#ifdef SUPPORT_UCP + if (chr < 128 || (chr < 256 && !utf)) + list[3] = fcc[chr]; + else + list[3] = UCD_OTHERCASE(chr); +#elif defined SUPPORT_UTF || !defined COMPILE_PCRE8 + list[3] = (chr < 256) ? fcc[chr] : chr; +#else + list[3] = fcc[chr]; +#endif + + /* The othercase might be the same value. */ + + if (chr == list[3]) + list[3] = NOTACHAR; + else + list[4] = NOTACHAR; + return code; + +#ifdef SUPPORT_UCP + case OP_PROP: + case OP_NOTPROP: + if (code[0] != PT_CLIST) + { + list[2] = code[0]; + list[3] = code[1]; + return code + 2; + } + + /* Convert only if we have enough space. */ + + clist_src = PRIV(ucd_caseless_sets) + code[1]; + clist_dest = list + 2; + code += 2; + + do { + if (clist_dest >= list + 8) + { + /* Early return if there is not enough space. This should never + happen, since all clists are shorter than 5 character now. */ + list[2] = code[0]; + list[3] = code[1]; + return code; + } + *clist_dest++ = *clist_src; + } + while(*clist_src++ != NOTACHAR); + + /* All characters are stored. The terminating NOTACHAR + is copied form the clist itself. */ + + list[0] = (c == OP_PROP) ? OP_CHAR : OP_NOT; + return code; +#endif + + case OP_NCLASS: + case OP_CLASS: +#if defined SUPPORT_UTF || !defined COMPILE_PCRE8 + case OP_XCLASS: + if (c == OP_XCLASS) + end = code + GET(code, 0) - 1; + else +#endif + end = code + 32 / sizeof(pcre_uchar); + + switch(*end) + { + case OP_CRSTAR: + case OP_CRMINSTAR: + case OP_CRQUERY: + case OP_CRMINQUERY: + case OP_CRPOSSTAR: + case OP_CRPOSQUERY: + list[1] = TRUE; + end++; + break; + + case OP_CRPLUS: + case OP_CRMINPLUS: + case OP_CRPOSPLUS: + end++; + break; + + case OP_CRRANGE: + case OP_CRMINRANGE: + case OP_CRPOSRANGE: + list[1] = (GET2(end, 1) == 0); + end += 1 + 2 * IMM2_SIZE; + break; + } + list[2] = end - code; + return end; + } +return NULL; /* Opcode not accepted */ +} + + + +/************************************************* +* Scan further character sets for match * +*************************************************/ + +/* Checks whether the base and the current opcode have a common character, in +which case the base cannot be possessified. + +Arguments: + code points to the byte code + utf TRUE in UTF-8 / UTF-16 / UTF-32 mode + cd static compile data + base_list the data list of the base opcode + +Returns: TRUE if the auto-possessification is possible +*/ + +static BOOL +compare_opcodes(const pcre_uchar *code, BOOL utf, const compile_data *cd, + const pcre_uint32 *base_list, const pcre_uchar *base_end) +{ +pcre_uchar c; +pcre_uint32 list[8]; +const pcre_uint32 *chr_ptr; +const pcre_uint32 *ochr_ptr; +const pcre_uint32 *list_ptr; +const pcre_uchar *next_code; +#if defined SUPPORT_UTF || !defined COMPILE_PCRE8 +const pcre_uchar *xclass_flags; +#endif +const pcre_uint8 *class_bitset; +const pcre_uint8 *set1, *set2, *set_end; +pcre_uint32 chr; +BOOL accepted, invert_bits; + +/* Note: the base_list[1] contains whether the current opcode has greedy +(represented by a non-zero value) quantifier. This is a different from +other character type lists, which stores here that the character iterator +matches to an empty string (also represented by a non-zero value). */ + +for(;;) + { + /* All operations move the code pointer forward. + Therefore infinite recursions are not possible. */ + + c = *code; + + /* Skip over callouts */ + + if (c == OP_CALLOUT) + { + code += PRIV(OP_lengths)[c]; + continue; + } + + if (c == OP_ALT) + { + do code += GET(code, 1); while (*code == OP_ALT); + c = *code; + } + + switch(c) + { + case OP_END: + case OP_KETRPOS: + /* TRUE only in greedy case. The non-greedy case could be replaced by + an OP_EXACT, but it is probably not worth it. (And note that OP_EXACT + uses more memory, which we cannot get at this stage.) */ + + return base_list[1] != 0; + + case OP_KET: + /* If the bracket is capturing, and referenced by an OP_RECURSE, or + it is an atomic sub-pattern (assert, once, etc.) the non-greedy case + cannot be converted to a possessive form. */ + + if (base_list[1] == 0) return FALSE; + + switch(*(code - GET(code, 1))) + { + case OP_ASSERT: + case OP_ASSERT_NOT: + case OP_ASSERTBACK: + case OP_ASSERTBACK_NOT: + case OP_ONCE: + case OP_ONCE_NC: + /* Atomic sub-patterns and assertions can always auto-possessify their + last iterator. */ + return TRUE; + } + + code += PRIV(OP_lengths)[c]; + continue; + + case OP_ONCE: + case OP_ONCE_NC: + case OP_BRA: + case OP_CBRA: + next_code = code + GET(code, 1); + code += PRIV(OP_lengths)[c]; + + while (*next_code == OP_ALT) + { + if (!compare_opcodes(code, utf, cd, base_list, base_end)) return FALSE; + code = next_code + 1 + LINK_SIZE; + next_code += GET(next_code, 1); + } + continue; + + case OP_BRAZERO: + case OP_BRAMINZERO: + + next_code = code + 1; + if (*next_code != OP_BRA && *next_code != OP_CBRA + && *next_code != OP_ONCE && *next_code != OP_ONCE_NC) return FALSE; + + do next_code += GET(next_code, 1); while (*next_code == OP_ALT); + + /* The bracket content will be checked by the + OP_BRA/OP_CBRA case above. */ + next_code += 1 + LINK_SIZE; + if (!compare_opcodes(next_code, utf, cd, base_list, base_end)) + return FALSE; + + code += PRIV(OP_lengths)[c]; + continue; + } + + /* Check for a supported opcode, and load its properties. */ + + code = get_chr_property_list(code, utf, cd->fcc, list); + if (code == NULL) return FALSE; /* Unsupported */ + + /* If either opcode is a small character list, set pointers for comparing + characters from that list with another list, or with a property. */ + + if (base_list[0] == OP_CHAR) + { + chr_ptr = base_list + 2; + list_ptr = list; + } + else if (list[0] == OP_CHAR) + { + chr_ptr = list + 2; + list_ptr = base_list; + } + + /* Character bitsets can also be compared to certain opcodes. */ + + else if (base_list[0] == OP_CLASS || list[0] == OP_CLASS +#ifdef COMPILE_PCRE8 + /* In 8 bit, non-UTF mode, OP_CLASS and OP_NCLASS are the same. */ + || (!utf && (base_list[0] == OP_NCLASS || list[0] == OP_NCLASS)) +#endif + ) + { +#ifdef COMPILE_PCRE8 + if (base_list[0] == OP_CLASS || (!utf && base_list[0] == OP_NCLASS)) +#else + if (base_list[0] == OP_CLASS) +#endif + { + set1 = (pcre_uint8 *)(base_end - base_list[2]); + list_ptr = list; + } + else + { + set1 = (pcre_uint8 *)(code - list[2]); + list_ptr = base_list; + } + + invert_bits = FALSE; + switch(list_ptr[0]) + { + case OP_CLASS: + case OP_NCLASS: + set2 = (pcre_uint8 *) + ((list_ptr == list ? code : base_end) - list_ptr[2]); + break; + +#if defined SUPPORT_UTF || !defined COMPILE_PCRE8 + case OP_XCLASS: + xclass_flags = (list_ptr == list ? code : base_end) - list_ptr[2] + LINK_SIZE; + if ((*xclass_flags & XCL_HASPROP) != 0) return FALSE; + if ((*xclass_flags & XCL_MAP) == 0) + { + /* No bits are set for characters < 256. */ + if (list[1] == 0) return TRUE; + /* Might be an empty repeat. */ + continue; + } + set2 = (pcre_uint8 *)(xclass_flags + 1); + break; +#endif + + case OP_NOT_DIGIT: + invert_bits = TRUE; + /* Fall through */ + case OP_DIGIT: + set2 = (pcre_uint8 *)(cd->cbits + cbit_digit); + break; + + case OP_NOT_WHITESPACE: + invert_bits = TRUE; + /* Fall through */ + case OP_WHITESPACE: + set2 = (pcre_uint8 *)(cd->cbits + cbit_space); + break; + + case OP_NOT_WORDCHAR: + invert_bits = TRUE; + /* Fall through */ + case OP_WORDCHAR: + set2 = (pcre_uint8 *)(cd->cbits + cbit_word); + break; + + default: + return FALSE; + } + + /* Because the sets are unaligned, we need + to perform byte comparison here. */ + set_end = set1 + 32; + if (invert_bits) + { + do + { + if ((*set1++ & ~(*set2++)) != 0) return FALSE; + } + while (set1 < set_end); + } + else + { + do + { + if ((*set1++ & *set2++) != 0) return FALSE; + } + while (set1 < set_end); + } + + if (list[1] == 0) return TRUE; + /* Might be an empty repeat. */ + continue; + } + + /* Some property combinations also acceptable. Unicode property opcodes are + processed specially; the rest can be handled with a lookup table. */ + + else + { + pcre_uint32 leftop, rightop; + + leftop = base_list[0]; + rightop = list[0]; + +#ifdef SUPPORT_UCP + accepted = FALSE; /* Always set in non-unicode case. */ + if (leftop == OP_PROP || leftop == OP_NOTPROP) + { + if (rightop == OP_EOD) + accepted = TRUE; + else if (rightop == OP_PROP || rightop == OP_NOTPROP) + { + int n; + const pcre_uint8 *p; + BOOL same = leftop == rightop; + BOOL lisprop = leftop == OP_PROP; + BOOL risprop = rightop == OP_PROP; + BOOL bothprop = lisprop && risprop; + + /* There's a table that specifies how each combination is to be + processed: + 0 Always return FALSE (never auto-possessify) + 1 Character groups are distinct (possessify if both are OP_PROP) + 2 Check character categories in the same group (general or particular) + 3 Return TRUE if the two opcodes are not the same + ... see comments below + */ + + n = propposstab[base_list[2]][list[2]]; + switch(n) + { + case 0: break; + case 1: accepted = bothprop; break; + case 2: accepted = (base_list[3] == list[3]) != same; break; + case 3: accepted = !same; break; + + case 4: /* Left general category, right particular category */ + accepted = risprop && catposstab[base_list[3]][list[3]] == same; + break; + + case 5: /* Right general category, left particular category */ + accepted = lisprop && catposstab[list[3]][base_list[3]] == same; + break; + + /* This code is logically tricky. Think hard before fiddling with it. + The posspropstab table has four entries per row. Each row relates to + one of PCRE's special properties such as ALNUM or SPACE or WORD. + Only WORD actually needs all four entries, but using repeats for the + others means they can all use the same code below. + + The first two entries in each row are Unicode general categories, and + apply always, because all the characters they include are part of the + PCRE character set. The third and fourth entries are a general and a + particular category, respectively, that include one or more relevant + characters. One or the other is used, depending on whether the check + is for a general or a particular category. However, in both cases the + category contains more characters than the specials that are defined + for the property being tested against. Therefore, it cannot be used + in a NOTPROP case. + + Example: the row for WORD contains ucp_L, ucp_N, ucp_P, ucp_Po. + Underscore is covered by ucp_P or ucp_Po. */ + + case 6: /* Left alphanum vs right general category */ + case 7: /* Left space vs right general category */ + case 8: /* Left word vs right general category */ + p = posspropstab[n-6]; + accepted = risprop && lisprop == + (list[3] != p[0] && + list[3] != p[1] && + (list[3] != p[2] || !lisprop)); + break; + + case 9: /* Right alphanum vs left general category */ + case 10: /* Right space vs left general category */ + case 11: /* Right word vs left general category */ + p = posspropstab[n-9]; + accepted = lisprop && risprop == + (base_list[3] != p[0] && + base_list[3] != p[1] && + (base_list[3] != p[2] || !risprop)); + break; + + case 12: /* Left alphanum vs right particular category */ + case 13: /* Left space vs right particular category */ + case 14: /* Left word vs right particular category */ + p = posspropstab[n-12]; + accepted = risprop && lisprop == + (catposstab[p[0]][list[3]] && + catposstab[p[1]][list[3]] && + (list[3] != p[3] || !lisprop)); + break; + + case 15: /* Right alphanum vs left particular category */ + case 16: /* Right space vs left particular category */ + case 17: /* Right word vs left particular category */ + p = posspropstab[n-15]; + accepted = lisprop && risprop == + (catposstab[p[0]][base_list[3]] && + catposstab[p[1]][base_list[3]] && + (base_list[3] != p[3] || !risprop)); + break; + } + } + } + + else +#endif /* SUPPORT_UCP */ + + accepted = leftop >= FIRST_AUTOTAB_OP && leftop <= LAST_AUTOTAB_LEFT_OP && + rightop >= FIRST_AUTOTAB_OP && rightop <= LAST_AUTOTAB_RIGHT_OP && + autoposstab[leftop - FIRST_AUTOTAB_OP][rightop - FIRST_AUTOTAB_OP]; + + if (!accepted) + return FALSE; + + if (list[1] == 0) return TRUE; + /* Might be an empty repeat. */ + continue; + } + + /* Control reaches here only if one of the items is a small character list. + All characters are checked against the other side. */ + + do + { + chr = *chr_ptr; + + switch(list_ptr[0]) + { + case OP_CHAR: + ochr_ptr = list_ptr + 2; + do + { + if (chr == *ochr_ptr) return FALSE; + ochr_ptr++; + } + while(*ochr_ptr != NOTACHAR); + break; + + case OP_NOT: + ochr_ptr = list_ptr + 2; + do + { + if (chr == *ochr_ptr) + break; + ochr_ptr++; + } + while(*ochr_ptr != NOTACHAR); + if (*ochr_ptr == NOTACHAR) return FALSE; /* Not found */ + break; + + /* Note that OP_DIGIT etc. are generated only when PCRE_UCP is *not* + set. When it is set, \d etc. are converted into OP_(NOT_)PROP codes. */ + + case OP_DIGIT: + if (chr < 256 && (cd->ctypes[chr] & ctype_digit) != 0) return FALSE; + break; + + case OP_NOT_DIGIT: + if (chr > 255 || (cd->ctypes[chr] & ctype_digit) == 0) return FALSE; + break; + + case OP_WHITESPACE: + if (chr < 256 && (cd->ctypes[chr] & ctype_space) != 0) return FALSE; + break; + + case OP_NOT_WHITESPACE: + if (chr > 255 || (cd->ctypes[chr] & ctype_space) == 0) return FALSE; + break; + + case OP_WORDCHAR: + if (chr < 255 && (cd->ctypes[chr] & ctype_word) != 0) return FALSE; + break; + + case OP_NOT_WORDCHAR: + if (chr > 255 || (cd->ctypes[chr] & ctype_word) == 0) return FALSE; + break; + + case OP_HSPACE: + switch(chr) + { + HSPACE_CASES: return FALSE; + default: break; + } + break; + + case OP_NOT_HSPACE: + switch(chr) + { + HSPACE_CASES: break; + default: return FALSE; + } + break; + + case OP_ANYNL: + case OP_VSPACE: + switch(chr) + { + VSPACE_CASES: return FALSE; + default: break; + } + break; + + case OP_NOT_VSPACE: + switch(chr) + { + VSPACE_CASES: break; + default: return FALSE; + } + break; + + case OP_DOLL: + case OP_EODN: + switch (chr) + { + case CHAR_CR: + case CHAR_LF: + case CHAR_VT: + case CHAR_FF: + case CHAR_NEL: +#ifndef EBCDIC + case 0x2028: + case 0x2029: +#endif /* Not EBCDIC */ + return FALSE; + } + break; + + case OP_EOD: /* Can always possessify before \z */ + break; + +#ifdef SUPPORT_UCP + case OP_PROP: + case OP_NOTPROP: + if (!check_char_prop(chr, list_ptr[2], list_ptr[3], + list_ptr[0] == OP_NOTPROP)) + return FALSE; + break; +#endif + + case OP_NCLASS: + if (chr > 255) return FALSE; + /* Fall through */ + + case OP_CLASS: + if (chr > 255) break; + class_bitset = (pcre_uint8 *) + ((list_ptr == list ? code : base_end) - list_ptr[2]); + if ((class_bitset[chr >> 3] & (1 << (chr & 7))) != 0) return FALSE; + break; + +#if defined SUPPORT_UTF || !defined COMPILE_PCRE8 + case OP_XCLASS: + if (PRIV(xclass)(chr, (list_ptr == list ? code : base_end) - + list_ptr[2] + LINK_SIZE, utf)) return FALSE; + break; +#endif + + default: + return FALSE; + } + + chr_ptr++; + } + while(*chr_ptr != NOTACHAR); + + /* At least one character must be matched from this opcode. */ + + if (list[1] == 0) return TRUE; + } + +/* Control never reaches here. There used to be a fail-save return FALSE; here, +but some compilers complain about an unreachable statement. */ + +} + + + +/************************************************* +* Scan compiled regex for auto-possession * +*************************************************/ + +/* Replaces single character iterations with their possessive alternatives +if appropriate. This function modifies the compiled opcode! + +Arguments: + code points to start of the byte code + utf TRUE in UTF-8 / UTF-16 / UTF-32 mode + cd static compile data + +Returns: nothing +*/ + +static void +auto_possessify(pcre_uchar *code, BOOL utf, const compile_data *cd) +{ +register pcre_uchar c; +const pcre_uchar *end; +pcre_uchar *repeat_opcode; +pcre_uint32 list[8]; + +for (;;) + { + c = *code; + + if (c >= OP_STAR && c <= OP_TYPEPOSUPTO) + { + c -= get_repeat_base(c) - OP_STAR; + end = (c <= OP_MINUPTO) ? + get_chr_property_list(code, utf, cd->fcc, list) : NULL; + list[1] = c == OP_STAR || c == OP_PLUS || c == OP_QUERY || c == OP_UPTO; + + if (end != NULL && compare_opcodes(end, utf, cd, list, end)) + { + switch(c) + { + case OP_STAR: + *code += OP_POSSTAR - OP_STAR; + break; + + case OP_MINSTAR: + *code += OP_POSSTAR - OP_MINSTAR; + break; + + case OP_PLUS: + *code += OP_POSPLUS - OP_PLUS; + break; + + case OP_MINPLUS: + *code += OP_POSPLUS - OP_MINPLUS; + break; + + case OP_QUERY: + *code += OP_POSQUERY - OP_QUERY; + break; + + case OP_MINQUERY: + *code += OP_POSQUERY - OP_MINQUERY; + break; + + case OP_UPTO: + *code += OP_POSUPTO - OP_UPTO; + break; + + case OP_MINUPTO: + *code += OP_POSUPTO - OP_MINUPTO; + break; + } + } + c = *code; + } + else if (c == OP_CLASS || c == OP_NCLASS || c == OP_XCLASS) + { +#if defined SUPPORT_UTF || !defined COMPILE_PCRE8 + if (c == OP_XCLASS) + repeat_opcode = code + GET(code, 1); + else +#endif + repeat_opcode = code + 1 + (32 / sizeof(pcre_uchar)); + + c = *repeat_opcode; + if (c >= OP_CRSTAR && c <= OP_CRMINRANGE) + { + /* end must not be NULL. */ + end = get_chr_property_list(code, utf, cd->fcc, list); + + list[1] = (c & 1) == 0; + + if (compare_opcodes(end, utf, cd, list, end)) + { + switch (c) + { + case OP_CRSTAR: + case OP_CRMINSTAR: + *repeat_opcode = OP_CRPOSSTAR; + break; + + case OP_CRPLUS: + case OP_CRMINPLUS: + *repeat_opcode = OP_CRPOSPLUS; + break; + + case OP_CRQUERY: + case OP_CRMINQUERY: + *repeat_opcode = OP_CRPOSQUERY; + break; + + case OP_CRRANGE: + case OP_CRMINRANGE: + *repeat_opcode = OP_CRPOSRANGE; + break; + } + } + } + c = *code; + } + + switch(c) + { + case OP_END: + return; + + case OP_TYPESTAR: + case OP_TYPEMINSTAR: + case OP_TYPEPLUS: + case OP_TYPEMINPLUS: + case OP_TYPEQUERY: + case OP_TYPEMINQUERY: + case OP_TYPEPOSSTAR: + case OP_TYPEPOSPLUS: + case OP_TYPEPOSQUERY: + if (code[1] == OP_PROP || code[1] == OP_NOTPROP) code += 2; + break; + + case OP_TYPEUPTO: + case OP_TYPEMINUPTO: + case OP_TYPEEXACT: + case OP_TYPEPOSUPTO: + if (code[1 + IMM2_SIZE] == OP_PROP || code[1 + IMM2_SIZE] == OP_NOTPROP) + code += 2; + break; + +#if defined SUPPORT_UTF || !defined COMPILE_PCRE8 + case OP_XCLASS: + code += GET(code, 1); + break; +#endif + + case OP_MARK: + case OP_PRUNE_ARG: + case OP_SKIP_ARG: + case OP_THEN_ARG: + code += code[1]; + break; + } + + /* Add in the fixed length from the table */ + + code += PRIV(OP_lengths)[c]; + + /* In UTF-8 mode, opcodes that are followed by a character may be followed by + a multi-byte character. The length in the table is a minimum, so we have to + arrange to skip the extra bytes. */ + +#if defined SUPPORT_UTF && !defined COMPILE_PCRE32 + if (utf) switch(c) + { + case OP_CHAR: + case OP_CHARI: + case OP_NOT: + case OP_NOTI: + case OP_STAR: + case OP_MINSTAR: + case OP_PLUS: + case OP_MINPLUS: + case OP_QUERY: + case OP_MINQUERY: + case OP_UPTO: + case OP_MINUPTO: + case OP_EXACT: + case OP_POSSTAR: + case OP_POSPLUS: + case OP_POSQUERY: + case OP_POSUPTO: + case OP_STARI: + case OP_MINSTARI: + case OP_PLUSI: + case OP_MINPLUSI: + case OP_QUERYI: + case OP_MINQUERYI: + case OP_UPTOI: + case OP_MINUPTOI: + case OP_EXACTI: + case OP_POSSTARI: + case OP_POSPLUSI: + case OP_POSQUERYI: + case OP_POSUPTOI: + case OP_NOTSTAR: + case OP_NOTMINSTAR: + case OP_NOTPLUS: + case OP_NOTMINPLUS: + case OP_NOTQUERY: + case OP_NOTMINQUERY: + case OP_NOTUPTO: + case OP_NOTMINUPTO: + case OP_NOTEXACT: + case OP_NOTPOSSTAR: + case OP_NOTPOSPLUS: + case OP_NOTPOSQUERY: + case OP_NOTPOSUPTO: + case OP_NOTSTARI: + case OP_NOTMINSTARI: + case OP_NOTPLUSI: + case OP_NOTMINPLUSI: + case OP_NOTQUERYI: + case OP_NOTMINQUERYI: + case OP_NOTUPTOI: + case OP_NOTMINUPTOI: + case OP_NOTEXACTI: + case OP_NOTPOSSTARI: + case OP_NOTPOSPLUSI: + case OP_NOTPOSQUERYI: + case OP_NOTPOSUPTOI: + if (HAS_EXTRALEN(code[-1])) code += GET_EXTRALEN(code[-1]); + break; + } +#else + (void)(utf); /* Keep compiler happy by referencing function argument */ +#endif + } +} + + + /************************************************* * Check for POSIX class syntax * *************************************************/ @@ -1806,9 +3834,20 @@ class, but [abc[:x\]pqr:]] is (so that an error can be generated). The code below handles the special case of \], but does not try to do any other escape processing. This makes it different from Perl for cases such as [:l\ower:] where Perl recognizes it as the POSIX class "lower" but PCRE does not recognize -"l\ower". This is a lesser evil that not diagnosing bad classes when Perl does, +"l\ower". This is a lesser evil than not diagnosing bad classes when Perl does, I think. +A user pointed out that PCRE was rejecting [:a[:digit:]] whereas Perl was not. +It seems that the appearance of a nested POSIX class supersedes an apparent +external class. For example, [:a[:digit:]b:] matches "a", "b", ":", or +a digit. + +In Perl, unescaped square brackets may also appear as part of class names. For +example, [:a[:abc]b:] gives unknown POSIX class "[:abc]b:]". However, for +[:a[:abc]b][b:] it gives unknown POSIX class "[:abc]b][b:]", which does not +seem right at all. PCRE does not allow closing square brackets in POSIX class +names. + Arguments: ptr pointer to the initial [ endptr where to return the end pointer @@ -1817,20 +3856,27 @@ Returns: TRUE or FALSE */ static BOOL -check_posix_syntax(const uschar *ptr, const uschar **endptr) +check_posix_syntax(const pcre_uchar *ptr, const pcre_uchar **endptr) { -int terminator; /* Don't combine these lines; the Solaris cc */ +pcre_uchar terminator; /* Don't combine these lines; the Solaris cc */ terminator = *(++ptr); /* compiler warns about "non-constant" initializer. */ -for (++ptr; *ptr != 0; ptr++) +for (++ptr; *ptr != CHAR_NULL; ptr++) { - if (*ptr == '\\' && ptr[1] == ']') ptr++; else + if (*ptr == CHAR_BACKSLASH && ptr[1] == CHAR_RIGHT_SQUARE_BRACKET) + ptr++; + else if (*ptr == CHAR_RIGHT_SQUARE_BRACKET) return FALSE; + else { - if (*ptr == ']') return FALSE; - if (*ptr == terminator && ptr[1] == ']') + if (*ptr == terminator && ptr[1] == CHAR_RIGHT_SQUARE_BRACKET) { *endptr = ptr; return TRUE; } + if (*ptr == CHAR_LEFT_SQUARE_BRACKET && + (ptr[1] == CHAR_COLON || ptr[1] == CHAR_DOT || + ptr[1] == CHAR_EQUALS_SIGN) && + check_posix_syntax(ptr, endptr)) + return FALSE; } } return FALSE; @@ -1854,14 +3900,14 @@ Returns: a value representing the name, or -1 if unknown */ static int -check_posix_name(const uschar *ptr, int len) +check_posix_name(const pcre_uchar *ptr, int len) { const char *pn = posix_names; register int yield = 0; while (posix_name_lengths[yield] != 0) { if (len == posix_name_lengths[yield] && - strncmp((const char *)ptr, pn, len) == 0) return yield; + STRNCMP_UC_C8(ptr, pn, (unsigned int)len) == 0) return yield; pn += posix_name_lengths[yield] + 1; yield++; } @@ -1893,7 +3939,7 @@ value in the reference (which is a group number). Arguments: group points to the start of the group adjust the amount by which the group is to be moved - utf8 TRUE in UTF-8 mode + utf TRUE in UTF-8 / UTF-16 / UTF-32 mode cd contains pointers to tables etc. save_hwm the hwm forward reference pointer at the start of the group @@ -1901,22 +3947,22 @@ Returns: nothing */ static void -adjust_recurse(uschar *group, int adjust, BOOL utf8, compile_data *cd, - uschar *save_hwm) +adjust_recurse(pcre_uchar *group, int adjust, BOOL utf, compile_data *cd, + pcre_uchar *save_hwm) { -uschar *ptr = group; +pcre_uchar *ptr = group; -while ((ptr = (uschar *)find_recurse(ptr, utf8)) != NULL) +while ((ptr = (pcre_uchar *)find_recurse(ptr, utf)) != NULL) { int offset; - uschar *hc; + pcre_uchar *hc; /* See if this recursion is on the forward reference list. If so, adjust the reference. */ for (hc = save_hwm; hc < cd->hwm; hc += LINK_SIZE) { - offset = GET(hc, 0); + offset = (int)GET(hc, 0); if (cd->start_code + offset == ptr + 1) { PUT(hc, 0, offset + adjust); @@ -1929,7 +3975,7 @@ while ((ptr = (uschar *)find_recurse(ptr, utf8)) != NULL) if (hc >= cd->hwm) { - offset = GET(ptr, 1); + offset = (int)GET(ptr, 1); if (cd->start_code + offset >= group) PUT(ptr, 1, offset + adjust); } @@ -1954,14 +4000,14 @@ Arguments: Returns: new code pointer */ -static uschar * -auto_callout(uschar *code, const uschar *ptr, compile_data *cd) +static pcre_uchar * +auto_callout(pcre_uchar *code, const pcre_uchar *ptr, compile_data *cd) { *code++ = OP_CALLOUT; *code++ = 255; -PUT(code, 0, ptr - cd->start_pattern); /* Pattern offset */ -PUT(code, LINK_SIZE, 0); /* Default length */ -return code + 2*LINK_SIZE; +PUT(code, 0, (int)(ptr - cd->start_pattern)); /* Pattern offset */ +PUT(code, LINK_SIZE, 0); /* Default length */ +return code + 2 * LINK_SIZE; } @@ -1983,9 +4029,9 @@ Returns: nothing */ static void -complete_callout(uschar *previous_callout, const uschar *ptr, compile_data *cd) +complete_callout(pcre_uchar *previous_callout, const pcre_uchar *ptr, compile_data *cd) { -int length = ptr - cd->start_pattern - GET(previous_callout, 2); +int length = (int)(ptr - cd->start_pattern - GET(previous_callout, 2)); PUT(previous_callout, 2 + LINK_SIZE, length); } @@ -1997,9 +4043,10 @@ PUT(previous_callout, 2 + LINK_SIZE, length); *************************************************/ /* This function is passed the start and end of a class range, in UTF-8 mode -with UCP support. It searches up the characters, looking for internal ranges of +with UCP support. It searches up the characters, looking for ranges of characters in the "other" case. Each call returns the next one, updating the -start address. +start address. A character with multiple other cases is returned on its own +with a special return value. Arguments: cptr points to starting character value; updated @@ -2007,367 +4054,291 @@ Arguments: ocptr where to put start of othercase range odptr where to put end of othercase range -Yield: TRUE when range returned; FALSE when no more +Yield: -1 when no more + 0 when a range is returned + >0 the CASESET offset for char with multiple other cases + in this case, ocptr contains the original */ -static BOOL -get_othercase_range(unsigned int *cptr, unsigned int d, unsigned int *ocptr, - unsigned int *odptr) +static int +get_othercase_range(pcre_uint32 *cptr, pcre_uint32 d, pcre_uint32 *ocptr, + pcre_uint32 *odptr) { -unsigned int c, othercase, next; +pcre_uint32 c, othercase, next; +unsigned int co; + +/* Find the first character that has an other case. If it has multiple other +cases, return its case offset value. */ for (c = *cptr; c <= d; c++) - { if ((othercase = UCD_OTHERCASE(c)) != c) break; } + { + if ((co = UCD_CASESET(c)) != 0) + { + *ocptr = c++; /* Character that has the set */ + *cptr = c; /* Rest of input range */ + return (int)co; + } + if ((othercase = UCD_OTHERCASE(c)) != c) break; + } -if (c > d) return FALSE; +if (c > d) return -1; /* Reached end of range */ + +/* Found a character that has a single other case. Search for the end of the +range, which is either the end of the input range, or a character that has zero +or more than one other cases. */ *ocptr = othercase; next = othercase + 1; for (++c; c <= d; c++) { - if (UCD_OTHERCASE(c) != next) break; + if ((co = UCD_CASESET(c)) != 0 || UCD_OTHERCASE(c) != next) break; next++; } -*odptr = next - 1; -*cptr = c; - -return TRUE; +*odptr = next - 1; /* End of othercase range */ +*cptr = c; /* Rest of input range */ +return 0; } #endif /* SUPPORT_UCP */ /************************************************* -* Check if auto-possessifying is possible * +* Add a character or range to a class * *************************************************/ -/* This function is called for unlimited repeats of certain items, to see -whether the next thing could possibly match the repeated item. If not, it makes -sense to automatically possessify the repeated item. +/* This function packages up the logic of adding a character or range of +characters to a class. The character values in the arguments will be within the +valid values for the current mode (8-bit, 16-bit, UTF, etc). This function is +mutually recursive with the function immediately below. Arguments: - op_code the repeated op code - this data for this item, depends on the opcode - utf8 TRUE in UTF-8 mode - utf8_char used for utf8 character bytes, NULL if not relevant - ptr next character in pattern - options options bits + classbits the bit map for characters < 256 + uchardptr points to the pointer for extra data + options the options word cd contains pointers to tables etc. + start start of range character + end end of range character -Returns: TRUE if possessifying is wanted +Returns: the number of < 256 characters added + the pointer to extra data is updated */ -static BOOL -check_auto_possessive(int op_code, int item, BOOL utf8, uschar *utf8_char, - const uschar *ptr, int options, compile_data *cd) +static int +add_to_class(pcre_uint8 *classbits, pcre_uchar **uchardptr, int options, + compile_data *cd, pcre_uint32 start, pcre_uint32 end) { -int next; +pcre_uint32 c; +pcre_uint32 classbits_end = (end <= 0xff ? end : 0xff); +int n8 = 0; -/* Skip whitespace and comments in extended mode */ +/* If caseless matching is required, scan the range and process alternate +cases. In Unicode, there are 8-bit characters that have alternate cases that +are greater than 255 and vice-versa. Sometimes we can just extend the original +range. */ -if ((options & PCRE_EXTENDED) != 0) +if ((options & PCRE_CASELESS) != 0) { - for (;;) - { - while ((cd->ctypes[*ptr] & ctype_space) != 0) ptr++; - if (*ptr == '#') - { - while (*(++ptr) != 0) - if (IS_NEWLINE(ptr)) { ptr += cd->nllen; break; } - } - else break; - } - } - -/* If the next item is one that we can handle, get its value. A non-negative -value is a character, a negative value is an escape value. */ - -if (*ptr == '\\') - { - int temperrorcode = 0; - next = check_escape(&ptr, &temperrorcode, cd->bracount, options, FALSE); - if (temperrorcode != 0) return FALSE; - ptr++; /* Point after the escape sequence */ - } - -else if ((cd->ctypes[*ptr] & ctype_meta) == 0) - { -#ifdef SUPPORT_UTF8 - if (utf8) { GETCHARINC(next, ptr); } else -#endif - next = *ptr++; - } - -else return FALSE; - -/* Skip whitespace and comments in extended mode */ - -if ((options & PCRE_EXTENDED) != 0) - { - for (;;) - { - while ((cd->ctypes[*ptr] & ctype_space) != 0) ptr++; - if (*ptr == '#') - { - while (*(++ptr) != 0) - if (IS_NEWLINE(ptr)) { ptr += cd->nllen; break; } - } - else break; - } - } - -/* If the next thing is itself optional, we have to give up. */ - -if (*ptr == '*' || *ptr == '?' || strncmp((char *)ptr, "{0,", 3) == 0) - return FALSE; - -/* Now compare the next item with the previous opcode. If the previous is a -positive single character match, "item" either contains the character or, if -"item" is greater than 127 in utf8 mode, the character's bytes are in -utf8_char. */ - - -/* Handle cases when the next item is a character. */ - -if (next >= 0) switch(op_code) - { - case OP_CHAR: -#ifdef SUPPORT_UTF8 - if (utf8 && item > 127) { GETCHAR(item, utf8_char); } -#else - (void)(utf8_char); /* Keep compiler happy by referencing function argument */ -#endif - return item != next; - - /* For CHARNC (caseless character) we must check the other case. If we have - Unicode property support, we can use it to test the other case of - high-valued characters. */ - - case OP_CHARNC: -#ifdef SUPPORT_UTF8 - if (utf8 && item > 127) { GETCHAR(item, utf8_char); } -#endif - if (item == next) return FALSE; -#ifdef SUPPORT_UTF8 - if (utf8) - { - unsigned int othercase; - if (next < 128) othercase = cd->fcc[next]; else #ifdef SUPPORT_UCP - othercase = UCD_OTHERCASE((unsigned int)next); -#else - othercase = NOTACHAR; -#endif - return (unsigned int)item != othercase; + if ((options & PCRE_UTF8) != 0) + { + int rc; + pcre_uint32 oc, od; + + options &= ~PCRE_CASELESS; /* Remove for recursive calls */ + c = start; + + while ((rc = get_othercase_range(&c, end, &oc, &od)) >= 0) + { + /* Handle a single character that has more than one other case. */ + + if (rc > 0) n8 += add_list_to_class(classbits, uchardptr, options, cd, + PRIV(ucd_caseless_sets) + rc, oc); + + /* Do nothing if the other case range is within the original range. */ + + else if (oc >= start && od <= end) continue; + + /* Extend the original range if there is overlap, noting that if oc < c, we + can't have od > end because a subrange is always shorter than the basic + range. Otherwise, use a recursive call to add the additional range. */ + + else if (oc < start && od >= start - 1) start = oc; /* Extend downwards */ + else if (od > end && oc <= end + 1) end = od; /* Extend upwards */ + else n8 += add_to_class(classbits, uchardptr, options, cd, oc, od); + } } else -#endif /* SUPPORT_UTF8 */ - return (item != cd->fcc[next]); /* Non-UTF-8 mode */ +#endif /* SUPPORT_UCP */ - /* For OP_NOT, "item" must be a single-byte character. */ + /* Not UTF-mode, or no UCP */ - case OP_NOT: - if (item == next) return TRUE; - if ((options & PCRE_CASELESS) == 0) return FALSE; -#ifdef SUPPORT_UTF8 - if (utf8) + for (c = start; c <= classbits_end; c++) { - unsigned int othercase; - if (next < 128) othercase = cd->fcc[next]; else -#ifdef SUPPORT_UCP - othercase = UCD_OTHERCASE(next); -#else - othercase = NOTACHAR; + SETBIT(classbits, cd->fcc[c]); + n8++; + } + } + +/* Now handle the original range. Adjust the final value according to the bit +length - this means that the same lists of (e.g.) horizontal spaces can be used +in all cases. */ + +#if defined COMPILE_PCRE8 +#ifdef SUPPORT_UTF + if ((options & PCRE_UTF8) == 0) #endif - return (unsigned int)item == othercase; + if (end > 0xff) end = 0xff; + +#elif defined COMPILE_PCRE16 +#ifdef SUPPORT_UTF + if ((options & PCRE_UTF16) == 0) +#endif + if (end > 0xffff) end = 0xffff; + +#endif /* COMPILE_PCRE[8|16] */ + +/* Use the bitmap for characters < 256. Otherwise use extra data.*/ + +for (c = start; c <= classbits_end; c++) + { + /* Regardless of start, c will always be <= 255. */ + SETBIT(classbits, c); + n8++; + } + +#if defined SUPPORT_UTF || !defined COMPILE_PCRE8 +if (start <= 0xff) start = 0xff + 1; + +if (end >= start) + { + pcre_uchar *uchardata = *uchardptr; +#ifdef SUPPORT_UTF + if ((options & PCRE_UTF8) != 0) /* All UTFs use the same flag bit */ + { + if (start < end) + { + *uchardata++ = XCL_RANGE; + uchardata += PRIV(ord2utf)(start, uchardata); + uchardata += PRIV(ord2utf)(end, uchardata); + } + else if (start == end) + { + *uchardata++ = XCL_SINGLE; + uchardata += PRIV(ord2utf)(start, uchardata); + } } else -#endif /* SUPPORT_UTF8 */ - return (item == cd->fcc[next]); /* Non-UTF-8 mode */ +#endif /* SUPPORT_UTF */ - case OP_DIGIT: - return next > 127 || (cd->ctypes[next] & ctype_digit) == 0; + /* Without UTF support, character values are constrained by the bit length, + and can only be > 256 for 16-bit and 32-bit libraries. */ - case OP_NOT_DIGIT: - return next <= 127 && (cd->ctypes[next] & ctype_digit) != 0; - - case OP_WHITESPACE: - return next > 127 || (cd->ctypes[next] & ctype_space) == 0; - - case OP_NOT_WHITESPACE: - return next <= 127 && (cd->ctypes[next] & ctype_space) != 0; - - case OP_WORDCHAR: - return next > 127 || (cd->ctypes[next] & ctype_word) == 0; - - case OP_NOT_WORDCHAR: - return next <= 127 && (cd->ctypes[next] & ctype_word) != 0; - - case OP_HSPACE: - case OP_NOT_HSPACE: - switch(next) +#ifdef COMPILE_PCRE8 + {} +#else + if (start < end) { - case 0x09: - case 0x20: - case 0xa0: - case 0x1680: - case 0x180e: - case 0x2000: - case 0x2001: - case 0x2002: - case 0x2003: - case 0x2004: - case 0x2005: - case 0x2006: - case 0x2007: - case 0x2008: - case 0x2009: - case 0x200A: - case 0x202f: - case 0x205f: - case 0x3000: - return op_code != OP_HSPACE; - default: - return op_code == OP_HSPACE; + *uchardata++ = XCL_RANGE; + *uchardata++ = start; + *uchardata++ = end; } - - case OP_VSPACE: - case OP_NOT_VSPACE: - switch(next) + else if (start == end) { - case 0x0a: - case 0x0b: - case 0x0c: - case 0x0d: - case 0x85: - case 0x2028: - case 0x2029: - return op_code != OP_VSPACE; - default: - return op_code == OP_VSPACE; + *uchardata++ = XCL_SINGLE; + *uchardata++ = start; } - - default: - return FALSE; - } - - -/* Handle the case when the next item is \d, \s, etc. */ - -switch(op_code) - { - case OP_CHAR: - case OP_CHARNC: -#ifdef SUPPORT_UTF8 - if (utf8 && item > 127) { GETCHAR(item, utf8_char); } #endif - switch(-next) - { - case ESC_d: - return item > 127 || (cd->ctypes[item] & ctype_digit) == 0; - case ESC_D: - return item <= 127 && (cd->ctypes[item] & ctype_digit) != 0; - - case ESC_s: - return item > 127 || (cd->ctypes[item] & ctype_space) == 0; - - case ESC_S: - return item <= 127 && (cd->ctypes[item] & ctype_space) != 0; - - case ESC_w: - return item > 127 || (cd->ctypes[item] & ctype_word) == 0; - - case ESC_W: - return item <= 127 && (cd->ctypes[item] & ctype_word) != 0; - - case ESC_h: - case ESC_H: - switch(item) - { - case 0x09: - case 0x20: - case 0xa0: - case 0x1680: - case 0x180e: - case 0x2000: - case 0x2001: - case 0x2002: - case 0x2003: - case 0x2004: - case 0x2005: - case 0x2006: - case 0x2007: - case 0x2008: - case 0x2009: - case 0x200A: - case 0x202f: - case 0x205f: - case 0x3000: - return -next != ESC_h; - default: - return -next == ESC_h; - } - - case ESC_v: - case ESC_V: - switch(item) - { - case 0x0a: - case 0x0b: - case 0x0c: - case 0x0d: - case 0x85: - case 0x2028: - case 0x2029: - return -next != ESC_v; - default: - return -next == ESC_v; - } - - default: - return FALSE; - } - - case OP_DIGIT: - return next == -ESC_D || next == -ESC_s || next == -ESC_W || - next == -ESC_h || next == -ESC_v; - - case OP_NOT_DIGIT: - return next == -ESC_d; - - case OP_WHITESPACE: - return next == -ESC_S || next == -ESC_d || next == -ESC_w; - - case OP_NOT_WHITESPACE: - return next == -ESC_s || next == -ESC_h || next == -ESC_v; - - case OP_HSPACE: - return next == -ESC_S || next == -ESC_H || next == -ESC_d || next == -ESC_w; - - case OP_NOT_HSPACE: - return next == -ESC_h; - - /* Can't have \S in here because VT matches \S (Perl anomaly) */ - case OP_VSPACE: - return next == -ESC_V || next == -ESC_d || next == -ESC_w; - - case OP_NOT_VSPACE: - return next == -ESC_v; - - case OP_WORDCHAR: - return next == -ESC_W || next == -ESC_s || next == -ESC_h || next == -ESC_v; - - case OP_NOT_WORDCHAR: - return next == -ESC_w || next == -ESC_d; - - default: - return FALSE; + *uchardptr = uchardata; /* Updata extra data pointer */ } +#endif /* SUPPORT_UTF || !COMPILE_PCRE8 */ -/* Control does not reach here */ +return n8; /* Number of 8-bit characters */ +} + + + + +/************************************************* +* Add a list of characters to a class * +*************************************************/ + +/* This function is used for adding a list of case-equivalent characters to a +class, and also for adding a list of horizontal or vertical whitespace. If the +list is in order (which it should be), ranges of characters are detected and +handled appropriately. This function is mutually recursive with the function +above. + +Arguments: + classbits the bit map for characters < 256 + uchardptr points to the pointer for extra data + options the options word + cd contains pointers to tables etc. + p points to row of 32-bit values, terminated by NOTACHAR + except character to omit; this is used when adding lists of + case-equivalent characters to avoid including the one we + already know about + +Returns: the number of < 256 characters added + the pointer to extra data is updated +*/ + +static int +add_list_to_class(pcre_uint8 *classbits, pcre_uchar **uchardptr, int options, + compile_data *cd, const pcre_uint32 *p, unsigned int except) +{ +int n8 = 0; +while (p[0] < NOTACHAR) + { + int n = 0; + if (p[0] != except) + { + while(p[n+1] == p[0] + n + 1) n++; + n8 += add_to_class(classbits, uchardptr, options, cd, p[0], p[n]); + } + p += n + 1; + } +return n8; +} + + + +/************************************************* +* Add characters not in a list to a class * +*************************************************/ + +/* This function is used for adding the complement of a list of horizontal or +vertical whitespace to a class. The list must be in order. + +Arguments: + classbits the bit map for characters < 256 + uchardptr points to the pointer for extra data + options the options word + cd contains pointers to tables etc. + p points to row of 32-bit values, terminated by NOTACHAR + +Returns: the number of < 256 characters added + the pointer to extra data is updated +*/ + +static int +add_not_list_to_class(pcre_uint8 *classbits, pcre_uchar **uchardptr, + int options, compile_data *cd, const pcre_uint32 *p) +{ +BOOL utf = (options & PCRE_UTF8) != 0; +int n8 = 0; +if (p[0] > 0) + n8 += add_to_class(classbits, uchardptr, options, cd, 0, p[0] - 1); +while (p[0] < NOTACHAR) + { + while (p[1] == p[0] + 1) p++; + n8 += add_to_class(classbits, uchardptr, options, cd, p[0] + 1, + (p[1] == NOTACHAR) ? (utf ? 0x10ffffu : 0xffffffffu) : p[1] - 1); + p++; + } +return n8; } @@ -2383,62 +4354,86 @@ to find out the amount of memory needed, as well as during the real compile phase. The value of lengthptr distinguishes the two phases. Arguments: - optionsptr pointer to the option bits - codeptr points to the pointer to the current code point - ptrptr points to the current pattern pointer - errorcodeptr points to error code variable - firstbyteptr set to initial literal character, or < 0 (REQ_UNSET, REQ_NONE) - reqbyteptr set to the last literal character required, else < 0 - bcptr points to current branch chain - cd contains pointers to tables etc. - lengthptr NULL during the real compile phase - points to length accumulator during pre-compile phase + optionsptr pointer to the option bits + codeptr points to the pointer to the current code point + ptrptr points to the current pattern pointer + errorcodeptr points to error code variable + firstcharptr place to put the first required character + firstcharflagsptr place to put the first character flags, or a negative number + reqcharptr place to put the last required character + reqcharflagsptr place to put the last required character flags, or a negative number + bcptr points to current branch chain + cond_depth conditional nesting depth + cd contains pointers to tables etc. + lengthptr NULL during the real compile phase + points to length accumulator during pre-compile phase -Returns: TRUE on success - FALSE, with *errorcodeptr set non-zero on error +Returns: TRUE on success + FALSE, with *errorcodeptr set non-zero on error */ static BOOL -compile_branch(int *optionsptr, uschar **codeptr, const uschar **ptrptr, - int *errorcodeptr, int *firstbyteptr, int *reqbyteptr, branch_chain *bcptr, +compile_branch(int *optionsptr, pcre_uchar **codeptr, + const pcre_uchar **ptrptr, int *errorcodeptr, + pcre_uint32 *firstcharptr, pcre_int32 *firstcharflagsptr, + pcre_uint32 *reqcharptr, pcre_int32 *reqcharflagsptr, + branch_chain *bcptr, int cond_depth, compile_data *cd, int *lengthptr) { int repeat_type, op_type; int repeat_min = 0, repeat_max = 0; /* To please picky compilers */ int bravalue = 0; int greedy_default, greedy_non_default; -int firstbyte, reqbyte; -int zeroreqbyte, zerofirstbyte; -int req_caseopt, reqvary, tempreqvary; -int options = *optionsptr; +pcre_uint32 firstchar, reqchar; +pcre_int32 firstcharflags, reqcharflags; +pcre_uint32 zeroreqchar, zerofirstchar; +pcre_int32 zeroreqcharflags, zerofirstcharflags; +pcre_int32 req_caseopt, reqvary, tempreqvary; +int options = *optionsptr; /* May change dynamically */ int after_manual_callout = 0; int length_prevgroup = 0; -register int c; -register uschar *code = *codeptr; -uschar *last_code = code; -uschar *orig_code = code; -uschar *tempcode; +register pcre_uint32 c; +int escape; +register pcre_uchar *code = *codeptr; +pcre_uchar *last_code = code; +pcre_uchar *orig_code = code; +pcre_uchar *tempcode; BOOL inescq = FALSE; -BOOL groupsetfirstbyte = FALSE; -const uschar *ptr = *ptrptr; -const uschar *tempptr; -uschar *previous = NULL; -uschar *previous_callout = NULL; -uschar *save_hwm = NULL; -uschar classbits[32]; +BOOL groupsetfirstchar = FALSE; +const pcre_uchar *ptr = *ptrptr; +const pcre_uchar *tempptr; +const pcre_uchar *nestptr = NULL; +pcre_uchar *previous = NULL; +pcre_uchar *previous_callout = NULL; +pcre_uchar *save_hwm = NULL; +pcre_uint8 classbits[32]; -#ifdef SUPPORT_UTF8 -BOOL class_utf8; -BOOL utf8 = (options & PCRE_UTF8) != 0; -uschar *class_utf8data; -uschar *class_utf8data_base; -uschar utf8_char[6]; +/* We can fish out the UTF-8 setting once and for all into a BOOL, but we +must not do this for other options (e.g. PCRE_EXTENDED) because they may change +dynamically as we process the pattern. */ + +#ifdef SUPPORT_UTF +/* PCRE_UTF[16|32] have the same value as PCRE_UTF8. */ +BOOL utf = (options & PCRE_UTF8) != 0; +#ifndef COMPILE_PCRE32 +pcre_uchar utf_chars[6]; +#endif #else -BOOL utf8 = FALSE; -uschar *utf8_char = NULL; +BOOL utf = FALSE; #endif -#ifdef DEBUG +/* Helper variables for OP_XCLASS opcode (for characters > 255). We define +class_uchardata always so that it can be passed to add_to_class() always, +though it will not be used in non-UTF 8-bit cases. This avoids having to supply +alternative calls for the different cases. */ + +pcre_uchar *class_uchardata; +#if defined SUPPORT_UTF || !defined COMPILE_PCRE8 +BOOL xclass; +pcre_uchar *class_uchardata_base; +#endif + +#ifdef PCRE_DEBUG if (lengthptr != NULL) DPRINTF((">> start branch\n")); #endif @@ -2449,22 +4444,24 @@ greedy_non_default = greedy_default ^ 1; /* Initialize no first byte, no required byte. REQ_UNSET means "no char matching encountered yet". It gets changed to REQ_NONE if we hit something that -matches a non-fixed char first char; reqbyte just remains unset if we never +matches a non-fixed char first char; reqchar just remains unset if we never find one. When we hit a repeat whose minimum is zero, we may have to adjust these values to take the zero repeat into account. This is implemented by setting them to -zerofirstbyte and zeroreqbyte when such a repeat is encountered. The individual +zerofirstbyte and zeroreqchar when such a repeat is encountered. The individual item types that can be repeated set these backoff variables appropriately. */ -firstbyte = reqbyte = zerofirstbyte = zeroreqbyte = REQ_UNSET; +firstchar = reqchar = zerofirstchar = zeroreqchar = 0; +firstcharflags = reqcharflags = zerofirstcharflags = zeroreqcharflags = REQ_UNSET; -/* The variable req_caseopt contains either the REQ_CASELESS value or zero, -according to the current setting of the caseless flag. REQ_CASELESS is a bit -value > 255. It is added into the firstbyte or reqbyte variables to record the -case status of the value. This is used only for ASCII characters. */ +/* The variable req_caseopt contains either the REQ_CASELESS value +or zero, according to the current setting of the caseless flag. The +REQ_CASELESS leaves the lower 28 bit empty. It is added into the +firstchar or reqchar variables to record the case status of the +value. This is used only for ASCII characters. */ -req_caseopt = ((options & PCRE_CASELESS) != 0)? REQ_CASELESS : 0; +req_caseopt = ((options & PCRE_CASELESS) != 0)? REQ_CASELESS:0; /* Switch on next character until the end of the branch */ @@ -2476,31 +4473,47 @@ for (;; ptr++) BOOL is_quantifier; BOOL is_recurse; BOOL reset_bracount; - int class_charcount; - int class_lastchar; + int class_has_8bitchar; + int class_one_char; +#if defined SUPPORT_UTF || !defined COMPILE_PCRE8 + BOOL xclass_has_prop; +#endif int newoptions; int recno; int refsign; int skipbytes; - int subreqbyte; - int subfirstbyte; + pcre_uint32 subreqchar, subfirstchar; + pcre_int32 subreqcharflags, subfirstcharflags; int terminator; - int mclength; - uschar mcbuffer[8]; + unsigned int mclength; + unsigned int tempbracount; + pcre_uint32 ec; + pcre_uchar mcbuffer[8]; - /* Get next byte in the pattern */ + /* Get next character in the pattern */ c = *ptr; + /* If we are at the end of a nested substitution, revert to the outer level + string. Nesting only happens one level deep. */ + + if (c == CHAR_NULL && nestptr != NULL) + { + ptr = nestptr; + nestptr = NULL; + c = *ptr; + } + /* If we are in the pre-compile phase, accumulate the length used for the previous cycle of this loop. */ if (lengthptr != NULL) { -#ifdef DEBUG +#ifdef PCRE_DEBUG if (code > cd->hwm) cd->hwm = code; /* High water info */ #endif - if (code > cd->start_workspace + COMPILE_WORK_SIZE) /* Check for overrun */ + if (code > cd->start_workspace + cd->workspace_size - + WORK_SIZE_SAFETY_MARGIN) /* Check for overrun */ { *errorcodeptr = ERR52; goto FAILED; @@ -2522,8 +4535,9 @@ for (;; ptr++) goto FAILED; } - *lengthptr += code - last_code; - DPRINTF(("length=%d added %d c=%c\n", *lengthptr, code - last_code, c)); + *lengthptr += (int)(code - last_code); + DPRINTF(("length=%d added %d c=%c (0x%x)\n", *lengthptr, + (int)(code - last_code), c, c)); /* If "previous" is set and it is not at the start of the work space, move it back to there, in order to avoid filling up the work space. Otherwise, @@ -2533,7 +4547,7 @@ for (;; ptr++) { if (previous > orig_code) { - memmove(orig_code, previous, code - previous); + memmove(orig_code, previous, IN_UCHARS(code - previous)); code -= previous - orig_code; previous = orig_code; } @@ -2549,7 +4563,8 @@ for (;; ptr++) /* In the real compile phase, just check the workspace used by the forward reference list. */ - else if (cd->hwm > cd->start_workspace + COMPILE_WORK_SIZE) + else if (cd->hwm > cd->start_workspace + cd->workspace_size - + WORK_SIZE_SAFETY_MARGIN) { *errorcodeptr = ERR52; goto FAILED; @@ -2557,9 +4572,9 @@ for (;; ptr++) /* If in \Q...\E, check for the end; if not, we have a literal */ - if (inescq && c != 0) + if (inescq && c != CHAR_NULL) { - if (c == '\\' && ptr[1] == 'E') + if (c == CHAR_BACKSLASH && ptr[1] == CHAR_E) { inescq = FALSE; ptr++; @@ -2580,15 +4595,45 @@ for (;; ptr++) } goto NORMAL_CHAR; } + /* Control does not reach here. */ } - /* Fill in length of a previous callout, except when the next thing is - a quantifier. */ + /* In extended mode, skip white space and comments. We need a loop in order + to check for more white space and more comments after a comment. */ - is_quantifier = c == '*' || c == '+' || c == '?' || - (c == '{' && is_counted_repeat(ptr+1)); + if ((options & PCRE_EXTENDED) != 0) + { + for (;;) + { + while (MAX_255(c) && (cd->ctypes[c] & ctype_space) != 0) c = *(++ptr); + if (c != CHAR_NUMBER_SIGN) break; + ptr++; + while (*ptr != CHAR_NULL) + { + if (IS_NEWLINE(ptr)) /* For non-fixed-length newline cases, */ + { /* IS_NEWLINE sets cd->nllen. */ + ptr += cd->nllen; + break; + } + ptr++; +#ifdef SUPPORT_UTF + if (utf) FORWARDCHAR(ptr); +#endif + } + c = *ptr; /* Either NULL or the char after a newline */ + } + } - if (!is_quantifier && previous_callout != NULL && + /* See if the next thing is a quantifier. */ + + is_quantifier = + c == CHAR_ASTERISK || c == CHAR_PLUS || c == CHAR_QUESTION_MARK || + (c == CHAR_LEFT_CURLY_BRACKET && is_counted_repeat(ptr+1)); + + /* Fill in length of a previous callout, except when the next thing is a + quantifier or when processing a property substitution string in UCP mode. */ + + if (!is_quantifier && previous_callout != NULL && nestptr == NULL && after_manual_callout-- <= 0) { if (lengthptr == NULL) /* Don't attempt in pre-compile phase */ @@ -2596,40 +4641,27 @@ for (;; ptr++) previous_callout = NULL; } - /* In extended mode, skip white space and comments */ + /* Create auto callout, except for quantifiers, or while processing property + strings that are substituted for \w etc in UCP mode. */ - if ((options & PCRE_EXTENDED) != 0) - { - if ((cd->ctypes[c] & ctype_space) != 0) continue; - if (c == '#') - { - while (*(++ptr) != 0) - { - if (IS_NEWLINE(ptr)) { ptr += cd->nllen - 1; break; } - } - if (*ptr != 0) continue; - - /* Else fall through to handle end of string */ - c = 0; - } - } - - /* No auto callout for quantifiers. */ - - if ((options & PCRE_AUTO_CALLOUT) != 0 && !is_quantifier) + if ((options & PCRE_AUTO_CALLOUT) != 0 && !is_quantifier && nestptr == NULL) { previous_callout = code; code = auto_callout(code, ptr, cd); } + /* Process the next pattern item. */ + switch(c) { /* ===================================================================*/ - case 0: /* The branch terminates at string end */ - case '|': /* or | or ) */ - case ')': - *firstbyteptr = firstbyte; - *reqbyteptr = reqbyte; + case CHAR_NULL: /* The branch terminates at string end */ + case CHAR_VERTICAL_LINE: /* or | or ) */ + case CHAR_RIGHT_PARENTHESIS: + *firstcharptr = firstchar; + *firstcharflagsptr = firstcharflags; + *reqcharptr = reqchar; + *reqcharflagsptr = reqcharflags; *codeptr = code; *ptrptr = ptr; if (lengthptr != NULL) @@ -2639,7 +4671,7 @@ for (;; ptr++) *errorcodeptr = ERR20; goto FAILED; } - *lengthptr += code - last_code; /* To include callout length */ + *lengthptr += (int)(code - last_code); /* To include callout length */ DPRINTF((">> end branch\n")); } return TRUE; @@ -2649,27 +4681,30 @@ for (;; ptr++) /* Handle single-character metacharacters. In multiline mode, ^ disables the setting of any following char as a first character. */ - case '^': + case CHAR_CIRCUMFLEX_ACCENT: + previous = NULL; if ((options & PCRE_MULTILINE) != 0) { - if (firstbyte == REQ_UNSET) firstbyte = REQ_NONE; + if (firstcharflags == REQ_UNSET) firstcharflags = REQ_NONE; + *code++ = OP_CIRCM; } - previous = NULL; - *code++ = OP_CIRC; + else *code++ = OP_CIRC; break; - case '$': + case CHAR_DOLLAR_SIGN: previous = NULL; - *code++ = OP_DOLL; + *code++ = ((options & PCRE_MULTILINE) != 0)? OP_DOLLM : OP_DOLL; break; /* There can never be a first char if '.' is first, whatever happens about - repeats. The value of reqbyte doesn't change either. */ + repeats. The value of reqchar doesn't change either. */ - case '.': - if (firstbyte == REQ_UNSET) firstbyte = REQ_NONE; - zerofirstbyte = firstbyte; - zeroreqbyte = reqbyte; + case CHAR_DOT: + if (firstcharflags == REQ_UNSET) firstcharflags = REQ_NONE; + zerofirstchar = firstchar; + zerofirstcharflags = firstcharflags; + zeroreqchar = reqchar; + zeroreqcharflags = reqcharflags; previous = code; *code++ = ((options & PCRE_DOTALL) != 0)? OP_ALLANY: OP_ANY; break; @@ -2690,7 +4725,7 @@ for (;; ptr++) In JavaScript compatibility mode, an isolated ']' causes an error. In default (Perl) mode, it is treated as a data character. */ - case ']': + case CHAR_RIGHT_SQUARE_BRACKET: if ((cd->external_options & PCRE_JAVASCRIPT_COMPAT) != 0) { *errorcodeptr = ERR64; @@ -2698,16 +4733,39 @@ for (;; ptr++) } goto NORMAL_CHAR; - case '[': + /* In another (POSIX) regex library, the ugly syntax [[:<:]] and [[:>:]] is + used for "start of word" and "end of word". As these are otherwise illegal + sequences, we don't break anything by recognizing them. They are replaced + by \b(?=\w) and \b(?<=\w) respectively. Sequences like [a[:<:]] are + erroneous and are handled by the normal code below. */ + + case CHAR_LEFT_SQUARE_BRACKET: + if (STRNCMP_UC_C8(ptr+1, STRING_WEIRD_STARTWORD, 6) == 0) + { + nestptr = ptr + 7; + ptr = sub_start_of_word - 1; + continue; + } + + if (STRNCMP_UC_C8(ptr+1, STRING_WEIRD_ENDWORD, 6) == 0) + { + nestptr = ptr + 7; + ptr = sub_end_of_word - 1; + continue; + } + + /* Handle a real character class. */ + previous = code; /* PCRE supports POSIX class stuff inside a class. Perl gives an error if they are encountered at the top level, so we'll do that too. */ - if ((ptr[1] == ':' || ptr[1] == '.' || ptr[1] == '=') && + if ((ptr[1] == CHAR_COLON || ptr[1] == CHAR_DOT || + ptr[1] == CHAR_EQUALS_SIGN) && check_posix_syntax(ptr, &tempptr)) { - *errorcodeptr = (ptr[1] == ':')? ERR13 : ERR31; + *errorcodeptr = (ptr[1] == CHAR_COLON)? ERR13 : ERR31; goto FAILED; } @@ -2719,13 +4777,16 @@ for (;; ptr++) for (;;) { c = *(++ptr); - if (c == '\\') + if (c == CHAR_BACKSLASH) { - if (ptr[1] == 'E') ptr++; - else if (strncmp((const char *)ptr+1, "Q\\E", 3) == 0) ptr += 3; - else break; + if (ptr[1] == CHAR_E) + ptr++; + else if (STRNCMP_UC_C8(ptr + 1, STR_Q STR_BACKSLASH STR_E, 3) == 0) + ptr += 3; + else + break; } - else if (!negate_class && c == '^') + else if (!negate_class && c == CHAR_CIRCUMFLEX_ACCENT) negate_class = TRUE; else break; } @@ -2735,11 +4796,13 @@ for (;; ptr++) that. In JS mode, [] must always fail, so generate OP_FAIL, whereas [^] must match any character, so generate OP_ALLANY. */ - if (c ==']' && (cd->external_options & PCRE_JAVASCRIPT_COMPAT) != 0) + if (c == CHAR_RIGHT_SQUARE_BRACKET && + (cd->external_options & PCRE_JAVASCRIPT_COMPAT) != 0) { *code++ = negate_class? OP_ALLANY : OP_FAIL; - if (firstbyte == REQ_UNSET) firstbyte = REQ_NONE; - zerofirstbyte = firstbyte; + if (firstcharflags == REQ_UNSET) firstcharflags = REQ_NONE; + zerofirstchar = firstchar; + zerofirstcharflags = firstcharflags; break; } @@ -2749,58 +4812,69 @@ for (;; ptr++) should_flip_negation = FALSE; - /* Keep a count of chars with values < 256 so that we can optimize the case - of just a single character (as long as it's < 256). However, For higher - valued UTF-8 characters, we don't yet do any optimization. */ + /* Extended class (xclass) will be used when characters > 255 + might match. */ - class_charcount = 0; - class_lastchar = -1; +#if defined SUPPORT_UTF || !defined COMPILE_PCRE8 + xclass = FALSE; + class_uchardata = code + LINK_SIZE + 2; /* For XCLASS items */ + class_uchardata_base = class_uchardata; /* Save the start */ +#endif + + /* For optimization purposes, we track some properties of the class: + class_has_8bitchar will be non-zero if the class contains at least one < + 256 character; class_one_char will be 1 if the class contains just one + character; xclass_has_prop will be TRUE if unicode property checks + are present in the class. */ + + class_has_8bitchar = 0; + class_one_char = 0; +#if defined SUPPORT_UTF || !defined COMPILE_PCRE8 + xclass_has_prop = FALSE; +#endif /* Initialize the 32-char bit map to all zeros. We build the map in a - temporary bit of memory, in case the class contains only 1 character (less - than 256), because in that case the compiled code doesn't use the bit map. - */ + temporary bit of memory, in case the class contains fewer than two + 8-bit characters because in that case the compiled code doesn't use the bit + map. */ - memset(classbits, 0, 32 * sizeof(uschar)); - -#ifdef SUPPORT_UTF8 - class_utf8 = FALSE; /* No chars >= 256 */ - class_utf8data = code + LINK_SIZE + 2; /* For UTF-8 items */ - class_utf8data_base = class_utf8data; /* For resetting in pass 1 */ -#endif + memset(classbits, 0, 32 * sizeof(pcre_uint8)); /* Process characters until ] is reached. By writing this as a "do" it means that an initial ] is taken as a data character. At the start of the loop, c contains the first byte of the character. */ - if (c != 0) do + if (c != CHAR_NULL) do { - const uschar *oldptr; + const pcre_uchar *oldptr; -#ifdef SUPPORT_UTF8 - if (utf8 && c > 127) +#ifdef SUPPORT_UTF + if (utf && HAS_EXTRALEN(c)) { /* Braces are required because the */ GETCHARLEN(c, ptr, ptr); /* macro generates multiple statements */ } +#endif - /* In the pre-compile phase, accumulate the length of any UTF-8 extra +#if defined SUPPORT_UTF || !defined COMPILE_PCRE8 + /* In the pre-compile phase, accumulate the length of any extra data and reset the pointer. This is so that very large classes that - contain a zillion UTF-8 characters no longer overwrite the work space - (which is on the stack). */ + contain a zillion > 255 characters no longer overwrite the work space + (which is on the stack). We have to remember that there was XCLASS data, + however. */ - if (lengthptr != NULL) + if (lengthptr != NULL && class_uchardata > class_uchardata_base) { - *lengthptr += class_utf8data - class_utf8data_base; - class_utf8data = class_utf8data_base; + xclass = TRUE; + *lengthptr += class_uchardata - class_uchardata_base; + class_uchardata = class_uchardata_base; } - #endif /* Inside \Q...\E everything is literal except \E */ if (inescq) { - if (c == '\\' && ptr[1] == 'E') /* If we are at \E */ + if (c == CHAR_BACKSLASH && ptr[1] == CHAR_E) /* If we are at \E */ { inescq = FALSE; /* Reset literal state */ ptr++; /* Skip the 'E' */ @@ -2815,30 +4889,30 @@ for (;; ptr++) [.ch.] and [=ch=] ("collating elements") and fault them, as Perl 5.6 and 5.8 do. */ - if (c == '[' && - (ptr[1] == ':' || ptr[1] == '.' || ptr[1] == '=') && - check_posix_syntax(ptr, &tempptr)) + if (c == CHAR_LEFT_SQUARE_BRACKET && + (ptr[1] == CHAR_COLON || ptr[1] == CHAR_DOT || + ptr[1] == CHAR_EQUALS_SIGN) && check_posix_syntax(ptr, &tempptr)) { BOOL local_negate = FALSE; int posix_class, taboffset, tabopt; - register const uschar *cbits = cd->cbits; - uschar pbits[32]; + register const pcre_uint8 *cbits = cd->cbits; + pcre_uint8 pbits[32]; - if (ptr[1] != ':') + if (ptr[1] != CHAR_COLON) { *errorcodeptr = ERR31; goto FAILED; } ptr += 2; - if (*ptr == '^') + if (*ptr == CHAR_CIRCUMFLEX_ACCENT) { local_negate = TRUE; should_flip_negation = TRUE; /* Note negative special */ ptr++; } - posix_class = check_posix_name(ptr, tempptr - ptr); + posix_class = check_posix_name(ptr, (int)(tempptr - ptr)); if (posix_class < 0) { *errorcodeptr = ERR30; @@ -2852,17 +4926,67 @@ for (;; ptr++) if ((options & PCRE_CASELESS) != 0 && posix_class <= 2) posix_class = 0; - /* We build the bit map for the POSIX class in a chunk of local store - because we may be adding and subtracting from it, and we don't want to - subtract bits that may be in the main map already. At the end we or the - result into the bit map that is being built. */ + /* When PCRE_UCP is set, some of the POSIX classes are converted to + different escape sequences that use Unicode properties \p or \P. Others + that are not available via \p or \P generate XCL_PROP/XCL_NOTPROP + directly. */ + +#ifdef SUPPORT_UCP + if ((options & PCRE_UCP) != 0) + { + unsigned int ptype = 0; + int pc = posix_class + ((local_negate)? POSIX_SUBSIZE/2 : 0); + + /* The posix_substitutes table specifies which POSIX classes can be + converted to \p or \P items. */ + + if (posix_substitutes[pc] != NULL) + { + nestptr = tempptr + 1; + ptr = posix_substitutes[pc] - 1; + continue; + } + + /* There are three other classes that generate special property calls + that are recognized only in an XCLASS. */ + + else switch(posix_class) + { + case PC_GRAPH: + ptype = PT_PXGRAPH; + /* Fall through */ + case PC_PRINT: + if (ptype == 0) ptype = PT_PXPRINT; + /* Fall through */ + case PC_PUNCT: + if (ptype == 0) ptype = PT_PXPUNCT; + *class_uchardata++ = local_negate? XCL_NOTPROP : XCL_PROP; + *class_uchardata++ = ptype; + *class_uchardata++ = 0; + xclass_has_prop = TRUE; + ptr = tempptr + 1; + continue; + + /* For all other POSIX classes, no special action is taken in UCP + mode. Fall through to the non_UCP case. */ + + default: + break; + } + } +#endif + /* In the non-UCP case, or when UCP makes no difference, we build the + bit map for the POSIX class in a chunk of local store because we may be + adding and subtracting from it, and we don't want to subtract bits that + may be in the main map already. At the end we or the result into the + bit map that is being built. */ posix_class *= 3; /* Copy in the first table (always present) */ memcpy(pbits, cbits + posix_class_maps[posix_class], - 32 * sizeof(uschar)); + 32 * sizeof(pcre_uint8)); /* If there is a second table, add or remove it as required. */ @@ -2877,7 +5001,7 @@ for (;; ptr++) for (c = 0; c < 32; c++) pbits[c] &= ~cbits[c + taboffset]; } - /* Not see if we need to remove any special characters. An option + /* Now see if we need to remove any special characters. An option value of 1 removes vertical space and 2 removes underscore. */ if (tabopt < 0) tabopt = -tabopt; @@ -2893,45 +5017,67 @@ for (;; ptr++) for (c = 0; c < 32; c++) classbits[c] |= pbits[c]; ptr = tempptr + 1; - class_charcount = 10; /* Set > 1; assumes more than 1 per class */ + /* Every class contains at least one < 256 character. */ + class_has_8bitchar = 1; + /* Every class contains at least two characters. */ + class_one_char = 2; continue; /* End of POSIX syntax handling */ } /* Backslash may introduce a single character, or it may introduce one of the specials, which just set a flag. The sequence \b is a special - case. Inside a class (and only there) it is treated as backspace. - Elsewhere it marks a word boundary. Other escapes have preset maps ready - to 'or' into the one we are building. We assume they have more than one - character in them, so set class_charcount bigger than one. */ + case. Inside a class (and only there) it is treated as backspace. We + assume that other escapes have more than one character in them, so + speculatively set both class_has_8bitchar and class_one_char bigger + than one. Unrecognized escapes fall through and are either treated + as literal characters (by default), or are faulted if + PCRE_EXTRA is set. */ - if (c == '\\') + if (c == CHAR_BACKSLASH) { - c = check_escape(&ptr, errorcodeptr, cd->bracount, options, TRUE); + escape = check_escape(&ptr, &ec, errorcodeptr, cd->bracount, options, + TRUE); if (*errorcodeptr != 0) goto FAILED; - - if (-c == ESC_b) c = '\b'; /* \b is backspace in a class */ - else if (-c == ESC_X) c = 'X'; /* \X is literal X in a class */ - else if (-c == ESC_R) c = 'R'; /* \R is literal R in a class */ - else if (-c == ESC_Q) /* Handle start of quoted string */ + if (escape == 0) c = ec; + else if (escape == ESC_b) c = CHAR_BS; /* \b is backspace in a class */ + else if (escape == ESC_N) /* \N is not supported in a class */ { - if (ptr[1] == '\\' && ptr[2] == 'E') + *errorcodeptr = ERR71; + goto FAILED; + } + else if (escape == ESC_Q) /* Handle start of quoted string */ + { + if (ptr[1] == CHAR_BACKSLASH && ptr[2] == CHAR_E) { ptr += 2; /* avoid empty string */ } else inescq = TRUE; continue; } - else if (-c == ESC_E) continue; /* Ignore orphan \E */ + else if (escape == ESC_E) continue; /* Ignore orphan \E */ - if (c < 0) + else { - register const uschar *cbits = cd->cbits; - class_charcount += 2; /* Greater than 1 is what matters */ + register const pcre_uint8 *cbits = cd->cbits; + /* Every class contains at least two < 256 characters. */ + class_has_8bitchar++; + /* Every class contains at least two characters. */ + class_one_char += 2; - /* Save time by not doing this in the pre-compile phase. */ - - if (lengthptr == NULL) switch (-c) + switch (escape) { +#ifdef SUPPORT_UCP + case ESC_du: /* These are the values given for \d etc */ + case ESC_DU: /* when PCRE_UCP is set. We replace the */ + case ESC_wu: /* escape sequence with an appropriate \p */ + case ESC_WU: /* or \P to test Unicode properties instead */ + case ESC_su: /* of the default ASCII testing. */ + case ESC_SU: + nestptr = ptr; + ptr = substitutes[escape - ESC_DU] - 1; /* Just before substitute */ + class_has_8bitchar--; /* Undo! */ + continue; +#endif case ESC_d: for (c = 0; c < 32; c++) classbits[c] |= cbits[c+cbit_digit]; continue; @@ -2950,235 +5096,135 @@ for (;; ptr++) for (c = 0; c < 32; c++) classbits[c] |= ~cbits[c+cbit_word]; continue; + /* Perl 5.004 onwards omitted VT from \s, but restored it at Perl + 5.18. Before PCRE 8.34, we had to preserve the VT bit if it was + previously set by something earlier in the character class. + Luckily, the value of CHAR_VT is 0x0b in both ASCII and EBCDIC, so + we could just adjust the appropriate bit. From PCRE 8.34 we no + longer treat \s and \S specially. */ + case ESC_s: for (c = 0; c < 32; c++) classbits[c] |= cbits[c+cbit_space]; - classbits[1] &= ~0x08; /* Perl 5.004 onwards omits VT from \s */ continue; case ESC_S: should_flip_negation = TRUE; for (c = 0; c < 32; c++) classbits[c] |= ~cbits[c+cbit_space]; - classbits[1] |= 0x08; /* Perl 5.004 onwards omits VT from \s */ continue; - default: /* Not recognized; fall through */ - break; /* Need "default" setting to stop compiler warning. */ - } + /* The rest apply in both UCP and non-UCP cases. */ - /* In the pre-compile phase, just do the recognition. */ - - else if (c == -ESC_d || c == -ESC_D || c == -ESC_w || - c == -ESC_W || c == -ESC_s || c == -ESC_S) continue; - - /* We need to deal with \H, \h, \V, and \v in both phases because - they use extra memory. */ - - if (-c == ESC_h) - { - SETBIT(classbits, 0x09); /* VT */ - SETBIT(classbits, 0x20); /* SPACE */ - SETBIT(classbits, 0xa0); /* NSBP */ -#ifdef SUPPORT_UTF8 - if (utf8) - { - class_utf8 = TRUE; - *class_utf8data++ = XCL_SINGLE; - class_utf8data += _pcre_ord2utf8(0x1680, class_utf8data); - *class_utf8data++ = XCL_SINGLE; - class_utf8data += _pcre_ord2utf8(0x180e, class_utf8data); - *class_utf8data++ = XCL_RANGE; - class_utf8data += _pcre_ord2utf8(0x2000, class_utf8data); - class_utf8data += _pcre_ord2utf8(0x200A, class_utf8data); - *class_utf8data++ = XCL_SINGLE; - class_utf8data += _pcre_ord2utf8(0x202f, class_utf8data); - *class_utf8data++ = XCL_SINGLE; - class_utf8data += _pcre_ord2utf8(0x205f, class_utf8data); - *class_utf8data++ = XCL_SINGLE; - class_utf8data += _pcre_ord2utf8(0x3000, class_utf8data); - } -#endif + case ESC_h: + (void)add_list_to_class(classbits, &class_uchardata, options, cd, + PRIV(hspace_list), NOTACHAR); continue; - } - if (-c == ESC_H) - { - for (c = 0; c < 32; c++) - { - int x = 0xff; - switch (c) - { - case 0x09/8: x ^= 1 << (0x09%8); break; - case 0x20/8: x ^= 1 << (0x20%8); break; - case 0xa0/8: x ^= 1 << (0xa0%8); break; - default: break; - } - classbits[c] |= x; - } - -#ifdef SUPPORT_UTF8 - if (utf8) - { - class_utf8 = TRUE; - *class_utf8data++ = XCL_RANGE; - class_utf8data += _pcre_ord2utf8(0x0100, class_utf8data); - class_utf8data += _pcre_ord2utf8(0x167f, class_utf8data); - *class_utf8data++ = XCL_RANGE; - class_utf8data += _pcre_ord2utf8(0x1681, class_utf8data); - class_utf8data += _pcre_ord2utf8(0x180d, class_utf8data); - *class_utf8data++ = XCL_RANGE; - class_utf8data += _pcre_ord2utf8(0x180f, class_utf8data); - class_utf8data += _pcre_ord2utf8(0x1fff, class_utf8data); - *class_utf8data++ = XCL_RANGE; - class_utf8data += _pcre_ord2utf8(0x200B, class_utf8data); - class_utf8data += _pcre_ord2utf8(0x202e, class_utf8data); - *class_utf8data++ = XCL_RANGE; - class_utf8data += _pcre_ord2utf8(0x2030, class_utf8data); - class_utf8data += _pcre_ord2utf8(0x205e, class_utf8data); - *class_utf8data++ = XCL_RANGE; - class_utf8data += _pcre_ord2utf8(0x2060, class_utf8data); - class_utf8data += _pcre_ord2utf8(0x2fff, class_utf8data); - *class_utf8data++ = XCL_RANGE; - class_utf8data += _pcre_ord2utf8(0x3001, class_utf8data); - class_utf8data += _pcre_ord2utf8(0x7fffffff, class_utf8data); - } -#endif + case ESC_H: + (void)add_not_list_to_class(classbits, &class_uchardata, options, + cd, PRIV(hspace_list)); continue; - } - if (-c == ESC_v) - { - SETBIT(classbits, 0x0a); /* LF */ - SETBIT(classbits, 0x0b); /* VT */ - SETBIT(classbits, 0x0c); /* FF */ - SETBIT(classbits, 0x0d); /* CR */ - SETBIT(classbits, 0x85); /* NEL */ -#ifdef SUPPORT_UTF8 - if (utf8) - { - class_utf8 = TRUE; - *class_utf8data++ = XCL_RANGE; - class_utf8data += _pcre_ord2utf8(0x2028, class_utf8data); - class_utf8data += _pcre_ord2utf8(0x2029, class_utf8data); - } -#endif + case ESC_v: + (void)add_list_to_class(classbits, &class_uchardata, options, cd, + PRIV(vspace_list), NOTACHAR); continue; - } - if (-c == ESC_V) - { - for (c = 0; c < 32; c++) - { - int x = 0xff; - switch (c) - { - case 0x0a/8: x ^= 1 << (0x0a%8); - x ^= 1 << (0x0b%8); - x ^= 1 << (0x0c%8); - x ^= 1 << (0x0d%8); - break; - case 0x85/8: x ^= 1 << (0x85%8); break; - default: break; - } - classbits[c] |= x; - } - -#ifdef SUPPORT_UTF8 - if (utf8) - { - class_utf8 = TRUE; - *class_utf8data++ = XCL_RANGE; - class_utf8data += _pcre_ord2utf8(0x0100, class_utf8data); - class_utf8data += _pcre_ord2utf8(0x2027, class_utf8data); - *class_utf8data++ = XCL_RANGE; - class_utf8data += _pcre_ord2utf8(0x2029, class_utf8data); - class_utf8data += _pcre_ord2utf8(0x7fffffff, class_utf8data); - } -#endif + case ESC_V: + (void)add_not_list_to_class(classbits, &class_uchardata, options, + cd, PRIV(vspace_list)); continue; - } - - /* We need to deal with \P and \p in both phases. */ #ifdef SUPPORT_UCP - if (-c == ESC_p || -c == ESC_P) - { - BOOL negated; - int pdata; - int ptype = get_ucp(&ptr, &negated, &pdata, errorcodeptr); - if (ptype < 0) goto FAILED; - class_utf8 = TRUE; - *class_utf8data++ = ((-c == ESC_p) != negated)? - XCL_PROP : XCL_NOTPROP; - *class_utf8data++ = ptype; - *class_utf8data++ = pdata; - class_charcount -= 2; /* Not a < 256 character */ - continue; - } + case ESC_p: + case ESC_P: + { + BOOL negated; + unsigned int ptype = 0, pdata = 0; + if (!get_ucp(&ptr, &negated, &ptype, &pdata, errorcodeptr)) + goto FAILED; + *class_uchardata++ = ((escape == ESC_p) != negated)? + XCL_PROP : XCL_NOTPROP; + *class_uchardata++ = ptype; + *class_uchardata++ = pdata; + xclass_has_prop = TRUE; + class_has_8bitchar--; /* Undo! */ + continue; + } #endif - /* Unrecognized escapes are faulted if PCRE is running in its - strict mode. By default, for compatibility with Perl, they are - treated as literals. */ + /* Unrecognized escapes are faulted if PCRE is running in its + strict mode. By default, for compatibility with Perl, they are + treated as literals. */ - if ((options & PCRE_EXTRA) != 0) - { - *errorcodeptr = ERR7; - goto FAILED; + default: + if ((options & PCRE_EXTRA) != 0) + { + *errorcodeptr = ERR7; + goto FAILED; + } + class_has_8bitchar--; /* Undo the speculative increase. */ + class_one_char -= 2; /* Undo the speculative increase. */ + c = *ptr; /* Get the final character and fall through */ + break; } - - class_charcount -= 2; /* Undo the default count from above */ - c = *ptr; /* Get the final character and fall through */ } - /* Fall through if we have a single character (c >= 0). This may be - greater than 256 in UTF-8 mode. */ + /* Fall through if the escape just defined a single character (c >= 0). + This may be greater than 256. */ + + escape = 0; } /* End of backslash handling */ - /* A single character may be followed by '-' to form a range. However, - Perl does not permit ']' to be the end of the range. A '-' character - at the end is treated as a literal. Perl ignores orphaned \E sequences - entirely. The code for handling \Q and \E is messy. */ + /* A character may be followed by '-' to form a range. However, Perl does + not permit ']' to be the end of the range. A '-' character at the end is + treated as a literal. Perl ignores orphaned \E sequences entirely. The + code for handling \Q and \E is messy. */ CHECK_RANGE: - while (ptr[1] == '\\' && ptr[2] == 'E') + while (ptr[1] == CHAR_BACKSLASH && ptr[2] == CHAR_E) { inescq = FALSE; ptr += 2; } - oldptr = ptr; - /* Remember \r or \n */ + /* Remember if \r or \n were explicitly used */ - if (c == '\r' || c == '\n') cd->external_flags |= PCRE_HASCRORLF; + if (c == CHAR_CR || c == CHAR_NL) cd->external_flags |= PCRE_HASCRORLF; /* Check for range */ - if (!inescq && ptr[1] == '-') + if (!inescq && ptr[1] == CHAR_MINUS) { - int d; + pcre_uint32 d; ptr += 2; - while (*ptr == '\\' && ptr[1] == 'E') ptr += 2; + while (*ptr == CHAR_BACKSLASH && ptr[1] == CHAR_E) ptr += 2; /* If we hit \Q (not followed by \E) at this point, go into escaped mode. */ - while (*ptr == '\\' && ptr[1] == 'Q') + while (*ptr == CHAR_BACKSLASH && ptr[1] == CHAR_Q) { ptr += 2; - if (*ptr == '\\' && ptr[1] == 'E') { ptr += 2; continue; } + if (*ptr == CHAR_BACKSLASH && ptr[1] == CHAR_E) + { ptr += 2; continue; } inescq = TRUE; break; } - if (*ptr == 0 || (!inescq && *ptr == ']')) + /* Minus (hyphen) at the end of a class is treated as a literal, so put + back the pointer and jump to handle the character that preceded it. */ + + if (*ptr == CHAR_NULL || (!inescq && *ptr == CHAR_RIGHT_SQUARE_BRACKET)) { ptr = oldptr; - goto LONE_SINGLE_CHARACTER; + goto CLASS_SINGLE_CHARACTER; } -#ifdef SUPPORT_UTF8 - if (utf8) + /* Otherwise, we have a potential range; pick up the next character */ + +#ifdef SUPPORT_UTF + if (utf) { /* Braces are required because the */ GETCHARLEN(d, ptr, ptr); /* macro generates multiple statements */ } @@ -3186,328 +5232,255 @@ for (;; ptr++) #endif d = *ptr; /* Not UTF-8 mode */ - /* The second part of a range can be a single-character escape, but - not any of the other escapes. Perl 5.6 treats a hyphen as a literal - in such circumstances. */ + /* The second part of a range can be a single-character escape + sequence, but not any of the other escapes. Perl treats a hyphen as a + literal in such circumstances. However, in Perl's warning mode, a + warning is given, so PCRE now faults it as it is almost certainly a + mistake on the user's part. */ - if (!inescq && d == '\\') + if (!inescq) { - d = check_escape(&ptr, errorcodeptr, cd->bracount, options, TRUE); - if (*errorcodeptr != 0) goto FAILED; - - /* \b is backspace; \X is literal X; \R is literal R; any other - special means the '-' was literal */ - - if (d < 0) + if (d == CHAR_BACKSLASH) { - if (d == -ESC_b) d = '\b'; - else if (d == -ESC_X) d = 'X'; - else if (d == -ESC_R) d = 'R'; else + int descape; + descape = check_escape(&ptr, &d, errorcodeptr, cd->bracount, options, TRUE); + if (*errorcodeptr != 0) goto FAILED; + + /* 0 means a character was put into d; \b is backspace; any other + special causes an error. */ + + if (descape != 0) { - ptr = oldptr; - goto LONE_SINGLE_CHARACTER; /* A few lines below */ + if (descape == ESC_b) d = CHAR_BS; else + { + *errorcodeptr = ERR83; + goto FAILED; + } } } + + /* A hyphen followed by a POSIX class is treated in the same way. */ + + else if (d == CHAR_LEFT_SQUARE_BRACKET && + (ptr[1] == CHAR_COLON || ptr[1] == CHAR_DOT || + ptr[1] == CHAR_EQUALS_SIGN) && + check_posix_syntax(ptr, &tempptr)) + { + *errorcodeptr = ERR83; + goto FAILED; + } } /* Check that the two values are in the correct order. Optimize - one-character ranges */ + one-character ranges. */ if (d < c) { *errorcodeptr = ERR8; goto FAILED; } + if (d == c) goto CLASS_SINGLE_CHARACTER; /* A few lines below */ - if (d == c) goto LONE_SINGLE_CHARACTER; /* A few lines below */ + /* We have found a character range, so single character optimizations + cannot be done anymore. Any value greater than 1 indicates that there + is more than one character. */ - /* Remember \r or \n */ + class_one_char = 2; - if (d == '\r' || d == '\n') cd->external_flags |= PCRE_HASCRORLF; + /* Remember an explicit \r or \n, and add the range to the class. */ - /* In UTF-8 mode, if the upper limit is > 255, or > 127 for caseless - matching, we have to use an XCLASS with extra data items. Caseless - matching for characters > 127 is available only if UCP support is - available. */ + if (d == CHAR_CR || d == CHAR_NL) cd->external_flags |= PCRE_HASCRORLF; -#ifdef SUPPORT_UTF8 - if (utf8 && (d > 255 || ((options & PCRE_CASELESS) != 0 && d > 127))) - { - class_utf8 = TRUE; - - /* With UCP support, we can find the other case equivalents of - the relevant characters. There may be several ranges. Optimize how - they fit with the basic range. */ - -#ifdef SUPPORT_UCP - if ((options & PCRE_CASELESS) != 0) - { - unsigned int occ, ocd; - unsigned int cc = c; - unsigned int origd = d; - while (get_othercase_range(&cc, origd, &occ, &ocd)) - { - if (occ >= (unsigned int)c && - ocd <= (unsigned int)d) - continue; /* Skip embedded ranges */ - - if (occ < (unsigned int)c && - ocd >= (unsigned int)c - 1) /* Extend the basic range */ - { /* if there is overlap, */ - c = occ; /* noting that if occ < c */ - continue; /* we can't have ocd > d */ - } /* because a subrange is */ - if (ocd > (unsigned int)d && - occ <= (unsigned int)d + 1) /* always shorter than */ - { /* the basic range. */ - d = ocd; - continue; - } - - if (occ == ocd) - { - *class_utf8data++ = XCL_SINGLE; - } - else - { - *class_utf8data++ = XCL_RANGE; - class_utf8data += _pcre_ord2utf8(occ, class_utf8data); - } - class_utf8data += _pcre_ord2utf8(ocd, class_utf8data); - } - } -#endif /* SUPPORT_UCP */ - - /* Now record the original range, possibly modified for UCP caseless - overlapping ranges. */ - - *class_utf8data++ = XCL_RANGE; - class_utf8data += _pcre_ord2utf8(c, class_utf8data); - class_utf8data += _pcre_ord2utf8(d, class_utf8data); - - /* With UCP support, we are done. Without UCP support, there is no - caseless matching for UTF-8 characters > 127; we can use the bit map - for the smaller ones. */ - -#ifdef SUPPORT_UCP - continue; /* With next character in the class */ -#else - if ((options & PCRE_CASELESS) == 0 || c > 127) continue; - - /* Adjust upper limit and fall through to set up the map */ - - d = 127; - -#endif /* SUPPORT_UCP */ - } -#endif /* SUPPORT_UTF8 */ - - /* We use the bit map for all cases when not in UTF-8 mode; else - ranges that lie entirely within 0-127 when there is UCP support; else - for partial ranges without UCP support. */ - - class_charcount += d - c + 1; - class_lastchar = d; - - /* We can save a bit of time by skipping this in the pre-compile. */ - - if (lengthptr == NULL) for (; c <= d; c++) - { - classbits[c/8] |= (1 << (c&7)); - if ((options & PCRE_CASELESS) != 0) - { - int uc = cd->fcc[c]; /* flip case */ - classbits[uc/8] |= (1 << (uc&7)); - } - } + class_has_8bitchar += + add_to_class(classbits, &class_uchardata, options, cd, c, d); continue; /* Go get the next char in the class */ } - /* Handle a lone single character - we can get here for a normal - non-escape char, or after \ that introduces a single character or for an - apparent range that isn't. */ + /* Handle a single character - we can get here for a normal non-escape + char, or after \ that introduces a single character or for an apparent + range that isn't. Only the value 1 matters for class_one_char, so don't + increase it if it is already 2 or more ... just in case there's a class + with a zillion characters in it. */ - LONE_SINGLE_CHARACTER: + CLASS_SINGLE_CHARACTER: + if (class_one_char < 2) class_one_char++; - /* Handle a character that cannot go in the bit map */ + /* If class_one_char is 1, we have the first single character in the + class, and there have been no prior ranges, or XCLASS items generated by + escapes. If this is the final character in the class, we can optimize by + turning the item into a 1-character OP_CHAR[I] if it's positive, or + OP_NOT[I] if it's negative. In the positive case, it can cause firstchar + to be set. Otherwise, there can be no first char if this item is first, + whatever repeat count may follow. In the case of reqchar, save the + previous value for reinstating. */ -#ifdef SUPPORT_UTF8 - if (utf8 && (c > 255 || ((options & PCRE_CASELESS) != 0 && c > 127))) + if (class_one_char == 1 && ptr[1] == CHAR_RIGHT_SQUARE_BRACKET) { - class_utf8 = TRUE; - *class_utf8data++ = XCL_SINGLE; - class_utf8data += _pcre_ord2utf8(c, class_utf8data); + ptr++; + zeroreqchar = reqchar; + zeroreqcharflags = reqcharflags; + + if (negate_class) + { +#ifdef SUPPORT_UCP + int d; +#endif + if (firstcharflags == REQ_UNSET) firstcharflags = REQ_NONE; + zerofirstchar = firstchar; + zerofirstcharflags = firstcharflags; + + /* For caseless UTF-8 mode when UCP support is available, check + whether this character has more than one other case. If so, generate + a special OP_NOTPROP item instead of OP_NOTI. */ #ifdef SUPPORT_UCP - if ((options & PCRE_CASELESS) != 0) - { - unsigned int othercase; - if ((othercase = UCD_OTHERCASE(c)) != c) + if (utf && (options & PCRE_CASELESS) != 0 && + (d = UCD_CASESET(c)) != 0) { - *class_utf8data++ = XCL_SINGLE; - class_utf8data += _pcre_ord2utf8(othercase, class_utf8data); + *code++ = OP_NOTPROP; + *code++ = PT_CLIST; + *code++ = d; } + else +#endif + /* Char has only one other case, or UCP not available */ + + { + *code++ = ((options & PCRE_CASELESS) != 0)? OP_NOTI: OP_NOT; +#if defined SUPPORT_UTF && !defined COMPILE_PCRE32 + if (utf && c > MAX_VALUE_FOR_SINGLE_CHAR) + code += PRIV(ord2utf)(c, code); + else +#endif + *code++ = c; + } + + /* We are finished with this character class */ + + goto END_CLASS; } -#endif /* SUPPORT_UCP */ - } - else -#endif /* SUPPORT_UTF8 */ + /* For a single, positive character, get the value into mcbuffer, and + then we can handle this with the normal one-character code. */ - /* Handle a single-byte character */ - { - classbits[c/8] |= (1 << (c&7)); - if ((options & PCRE_CASELESS) != 0) +#if defined SUPPORT_UTF && !defined COMPILE_PCRE32 + if (utf && c > MAX_VALUE_FOR_SINGLE_CHAR) + mclength = PRIV(ord2utf)(c, mcbuffer); + else +#endif { - c = cd->fcc[c]; /* flip case */ - classbits[c/8] |= (1 << (c&7)); + mcbuffer[0] = c; + mclength = 1; } - class_charcount++; - class_lastchar = c; - } + goto ONE_CHAR; + } /* End of 1-char optimization */ + + /* There is more than one character in the class, or an XCLASS item + has been generated. Add this character to the class. */ + + class_has_8bitchar += + add_to_class(classbits, &class_uchardata, options, cd, c, c); } - /* Loop until ']' reached. This "while" is the end of the "do" above. */ + /* Loop until ']' reached. This "while" is the end of the "do" far above. + If we are at the end of an internal nested string, revert to the outer + string. */ - while ((c = *(++ptr)) != 0 && (c != ']' || inescq)); + while (((c = *(++ptr)) != CHAR_NULL || + (nestptr != NULL && + (ptr = nestptr, nestptr = NULL, c = *(++ptr)) != CHAR_NULL)) && + (c != CHAR_RIGHT_SQUARE_BRACKET || inescq)); - if (c == 0) /* Missing terminating ']' */ + /* Check for missing terminating ']' */ + + if (c == CHAR_NULL) { *errorcodeptr = ERR6; goto FAILED; } + /* We will need an XCLASS if data has been placed in class_uchardata. In + the second phase this is a sufficient test. However, in the pre-compile + phase, class_uchardata gets emptied to prevent workspace overflow, so it + only if the very last character in the class needs XCLASS will it contain + anything at this point. For this reason, xclass gets set TRUE above when + uchar_classdata is emptied, and that's why this code is the way it is here + instead of just doing a test on class_uchardata below. */ -/* This code has been disabled because it would mean that \s counts as -an explicit \r or \n reference, and that's not really what is wanted. Now -we set the flag only if there is a literal "\r" or "\n" in the class. */ - -#if 0 - /* Remember whether \r or \n are in this class */ - - if (negate_class) - { - if ((classbits[1] & 0x24) != 0x24) cd->external_flags |= PCRE_HASCRORLF; - } - else - { - if ((classbits[1] & 0x24) != 0) cd->external_flags |= PCRE_HASCRORLF; - } +#if defined SUPPORT_UTF || !defined COMPILE_PCRE8 + if (class_uchardata > class_uchardata_base) xclass = TRUE; #endif + /* If this is the first thing in the branch, there can be no first char + setting, whatever the repeat count. Any reqchar setting must remain + unchanged after any kind of repeat. */ - /* If class_charcount is 1, we saw precisely one character whose value is - less than 256. As long as there were no characters >= 128 and there was no - use of \p or \P, in other words, no use of any XCLASS features, we can - optimize. - - In UTF-8 mode, we can optimize the negative case only if there were no - characters >= 128 because OP_NOT and the related opcodes like OP_NOTSTAR - operate on single-bytes only. This is an historical hangover. Maybe one day - we can tidy these opcodes to handle multi-byte characters. - - The optimization throws away the bit map. We turn the item into a - 1-character OP_CHAR[NC] if it's positive, or OP_NOT if it's negative. Note - that OP_NOT does not support multibyte characters. In the positive case, it - can cause firstbyte to be set. Otherwise, there can be no first char if - this item is first, whatever repeat count may follow. In the case of - reqbyte, save the previous value for reinstating. */ - -#ifdef SUPPORT_UTF8 - if (class_charcount == 1 && !class_utf8 && - (!utf8 || !negate_class || class_lastchar < 128)) -#else - if (class_charcount == 1) -#endif - { - zeroreqbyte = reqbyte; - - /* The OP_NOT opcode works on one-byte characters only. */ - - if (negate_class) - { - if (firstbyte == REQ_UNSET) firstbyte = REQ_NONE; - zerofirstbyte = firstbyte; - *code++ = OP_NOT; - *code++ = class_lastchar; - break; - } - - /* For a single, positive character, get the value into mcbuffer, and - then we can handle this with the normal one-character code. */ - -#ifdef SUPPORT_UTF8 - if (utf8 && class_lastchar > 127) - mclength = _pcre_ord2utf8(class_lastchar, mcbuffer); - else -#endif - { - mcbuffer[0] = class_lastchar; - mclength = 1; - } - goto ONE_CHAR; - } /* End of 1-char optimization */ - - /* The general case - not the one-char optimization. If this is the first - thing in the branch, there can be no first char setting, whatever the - repeat count. Any reqbyte setting must remain unchanged after any kind of - repeat. */ - - if (firstbyte == REQ_UNSET) firstbyte = REQ_NONE; - zerofirstbyte = firstbyte; - zeroreqbyte = reqbyte; + if (firstcharflags == REQ_UNSET) firstcharflags = REQ_NONE; + zerofirstchar = firstchar; + zerofirstcharflags = firstcharflags; + zeroreqchar = reqchar; + zeroreqcharflags = reqcharflags; /* If there are characters with values > 255, we have to compile an extended class, with its own opcode, unless there was a negated special - such as \S in the class, because in that case all characters > 255 are in - the class, so any that were explicitly given as well can be ignored. If - (when there are explicit characters > 255 that must be listed) there are no - characters < 256, we can omit the bitmap in the actual compiled code. */ + such as \S in the class, and PCRE_UCP is not set, because in that case all + characters > 255 are in the class, so any that were explicitly given as + well can be ignored. If (when there are explicit characters > 255 that must + be listed) there are no characters < 256, we can omit the bitmap in the + actual compiled code. */ -#ifdef SUPPORT_UTF8 - if (class_utf8 && !should_flip_negation) +#ifdef SUPPORT_UTF + if (xclass && (!should_flip_negation || (options & PCRE_UCP) != 0)) +#elif !defined COMPILE_PCRE8 + if (xclass && !should_flip_negation) +#endif +#if defined SUPPORT_UTF || !defined COMPILE_PCRE8 { - *class_utf8data++ = XCL_END; /* Marks the end of extra data */ + *class_uchardata++ = XCL_END; /* Marks the end of extra data */ *code++ = OP_XCLASS; code += LINK_SIZE; - *code = negate_class? XCL_NOT : 0; + *code = negate_class? XCL_NOT:0; + if (xclass_has_prop) *code |= XCL_HASPROP; /* If the map is required, move up the extra data to make room for it; otherwise just move the code pointer to the end of the extra data. */ - if (class_charcount > 0) + if (class_has_8bitchar > 0) { *code++ |= XCL_MAP; - memmove(code + 32, code, class_utf8data - code); + memmove(code + (32 / sizeof(pcre_uchar)), code, + IN_UCHARS(class_uchardata - code)); + if (negate_class && !xclass_has_prop) + for (c = 0; c < 32; c++) classbits[c] = ~classbits[c]; memcpy(code, classbits, 32); - code = class_utf8data + 32; + code = class_uchardata + (32 / sizeof(pcre_uchar)); } - else code = class_utf8data; + else code = class_uchardata; /* Now fill in the complete length of the item */ - PUT(previous, 1, code - previous); + PUT(previous, 1, (int)(code - previous)); break; /* End of class handling */ } #endif - /* If there are no characters > 255, set the opcode to OP_CLASS or - OP_NCLASS, depending on whether the whole class was negated and whether - there were negative specials such as \S in the class. Then copy the 32-byte - map into the code vector, negating it if necessary. */ + /* If there are no characters > 255, or they are all to be included or + excluded, set the opcode to OP_CLASS or OP_NCLASS, depending on whether the + whole class was negated and whether there were negative specials such as \S + (non-UCP) in the class. Then copy the 32-byte map into the code vector, + negating it if necessary. */ *code++ = (negate_class == should_flip_negation) ? OP_CLASS : OP_NCLASS; - if (negate_class) - { - if (lengthptr == NULL) /* Save time in the pre-compile phase */ - for (c = 0; c < 32; c++) code[c] = ~classbits[c]; - } - else + if (lengthptr == NULL) /* Save time in the pre-compile phase */ { + if (negate_class) + for (c = 0; c < 32; c++) classbits[c] = ~classbits[c]; memcpy(code, classbits, 32); } - code += 32; + code += 32 / sizeof(pcre_uchar); + + END_CLASS: break; @@ -3515,23 +5488,23 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ /* Various kinds of repeat; '{' is not necessarily a quantifier, but this has been tested above. */ - case '{': + case CHAR_LEFT_CURLY_BRACKET: if (!is_quantifier) goto NORMAL_CHAR; ptr = read_repeat_counts(ptr+1, &repeat_min, &repeat_max, errorcodeptr); if (*errorcodeptr != 0) goto FAILED; goto REPEAT; - case '*': + case CHAR_ASTERISK: repeat_min = 0; repeat_max = -1; goto REPEAT; - case '+': + case CHAR_PLUS: repeat_min = 1; repeat_max = -1; goto REPEAT; - case '?': + case CHAR_QUESTION_MARK: repeat_min = 0; repeat_max = 1; @@ -3544,8 +5517,10 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ if (repeat_min == 0) { - firstbyte = zerofirstbyte; /* Adjust for zero repeat */ - reqbyte = zeroreqbyte; /* Ditto */ + firstchar = zerofirstchar; /* Adjust for zero repeat */ + firstcharflags = zerofirstcharflags; + reqchar = zeroreqchar; /* Ditto */ + reqcharflags = zeroreqcharflags; } /* Remember whether this is a variable length repeat */ @@ -3555,100 +5530,136 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ op_type = 0; /* Default single-char op codes */ possessive_quantifier = FALSE; /* Default not possessive quantifier */ - /* Save start of previous item, in case we have to move it up to make space - for an inserted OP_ONCE for the additional '+' extension. */ + /* Save start of previous item, in case we have to move it up in order to + insert something before it. */ tempcode = previous; + /* Before checking for a possessive quantifier, we must skip over + whitespace and comments in extended mode because Perl allows white space at + this point. */ + + if ((options & PCRE_EXTENDED) != 0) + { + const pcre_uchar *p = ptr + 1; + for (;;) + { + while (MAX_255(*p) && (cd->ctypes[*p] & ctype_space) != 0) p++; + if (*p != CHAR_NUMBER_SIGN) break; + p++; + while (*p != CHAR_NULL) + { + if (IS_NEWLINE(p)) /* For non-fixed-length newline cases, */ + { /* IS_NEWLINE sets cd->nllen. */ + p += cd->nllen; + break; + } + p++; +#ifdef SUPPORT_UTF + if (utf) FORWARDCHAR(p); +#endif + } /* Loop for comment characters */ + } /* Loop for multiple comments */ + ptr = p - 1; /* Character before the next significant one. */ + } + /* If the next character is '+', we have a possessive quantifier. This implies greediness, whatever the setting of the PCRE_UNGREEDY option. If the next character is '?' this is a minimizing repeat, by default, but if PCRE_UNGREEDY is set, it works the other way round. We change the repeat type to the non-default. */ - if (ptr[1] == '+') + if (ptr[1] == CHAR_PLUS) { repeat_type = 0; /* Force greedy */ possessive_quantifier = TRUE; ptr++; } - else if (ptr[1] == '?') + else if (ptr[1] == CHAR_QUESTION_MARK) { repeat_type = greedy_non_default; ptr++; } else repeat_type = greedy_default; - /* If previous was a character match, abolish the item and generate a - repeat item instead. If a char item has a minumum of more than one, ensure - that it is set in reqbyte - it might not be if a sequence such as x{3} is - the first thing in a branch because the x will have gone into firstbyte - instead. */ + /* If previous was a recursion call, wrap it in atomic brackets so that + previous becomes the atomic group. All recursions were so wrapped in the + past, but it no longer happens for non-repeated recursions. In fact, the + repeated ones could be re-implemented independently so as not to need this, + but for the moment we rely on the code for repeating groups. */ - if (*previous == OP_CHAR || *previous == OP_CHARNC) + if (*previous == OP_RECURSE) { - /* Deal with UTF-8 characters that take up more than one byte. It's - easier to write this out separately than try to macrify it. Use c to - hold the length of the character in bytes, plus 0x80 to flag that it's a - length rather than a small character. */ + memmove(previous + 1 + LINK_SIZE, previous, IN_UCHARS(1 + LINK_SIZE)); + *previous = OP_ONCE; + PUT(previous, 1, 2 + 2*LINK_SIZE); + previous[2 + 2*LINK_SIZE] = OP_KET; + PUT(previous, 3 + 2*LINK_SIZE, 2 + 2*LINK_SIZE); + code += 2 + 2 * LINK_SIZE; + length_prevgroup = 3 + 3*LINK_SIZE; -#ifdef SUPPORT_UTF8 - if (utf8 && (code[-1] & 0x80) != 0) + /* When actually compiling, we need to check whether this was a forward + reference, and if so, adjust the offset. */ + + if (lengthptr == NULL && cd->hwm >= cd->start_workspace + LINK_SIZE) { - uschar *lastchar = code - 1; - while((*lastchar & 0xc0) == 0x80) lastchar--; - c = code - lastchar; /* Length of UTF-8 character */ - memcpy(utf8_char, lastchar, c); /* Save the char */ - c |= 0x80; /* Flag c as a length */ + int offset = GET(cd->hwm, -LINK_SIZE); + if (offset == previous + 1 - cd->start_code) + PUT(cd->hwm, -LINK_SIZE, offset + 1 + LINK_SIZE); + } + } + + /* Now handle repetition for the different types of item. */ + + /* If previous was a character or negated character match, abolish the item + and generate a repeat item instead. If a char item has a minimum of more + than one, ensure that it is set in reqchar - it might not be if a sequence + such as x{3} is the first thing in a branch because the x will have gone + into firstchar instead. */ + + if (*previous == OP_CHAR || *previous == OP_CHARI + || *previous == OP_NOT || *previous == OP_NOTI) + { + switch (*previous) + { + default: /* Make compiler happy. */ + case OP_CHAR: op_type = OP_STAR - OP_STAR; break; + case OP_CHARI: op_type = OP_STARI - OP_STAR; break; + case OP_NOT: op_type = OP_NOTSTAR - OP_STAR; break; + case OP_NOTI: op_type = OP_NOTSTARI - OP_STAR; break; + } + + /* Deal with UTF characters that take up more than one character. It's + easier to write this out separately than try to macrify it. Use c to + hold the length of the character in bytes, plus UTF_LENGTH to flag that + it's a length rather than a small character. */ + +#if defined SUPPORT_UTF && !defined COMPILE_PCRE32 + if (utf && NOT_FIRSTCHAR(code[-1])) + { + pcre_uchar *lastchar = code - 1; + BACKCHAR(lastchar); + c = (int)(code - lastchar); /* Length of UTF-8 character */ + memcpy(utf_chars, lastchar, IN_UCHARS(c)); /* Save the char */ + c |= UTF_LENGTH; /* Flag c as a length */ } else -#endif - - /* Handle the case of a single byte - either with no UTF8 support, or - with UTF-8 disabled, or for a UTF-8 character < 128. */ +#endif /* SUPPORT_UTF */ + /* Handle the case of a single charater - either with no UTF support, or + with UTF disabled, or for a single character UTF character. */ { c = code[-1]; - if (repeat_min > 1) reqbyte = c | req_caseopt | cd->req_varyopt; - } - - /* If the repetition is unlimited, it pays to see if the next thing on - the line is something that cannot possibly match this character. If so, - automatically possessifying this item gains some performance in the case - where the match fails. */ - - if (!possessive_quantifier && - repeat_max < 0 && - check_auto_possessive(*previous, c, utf8, utf8_char, ptr + 1, - options, cd)) - { - repeat_type = 0; /* Force greedy */ - possessive_quantifier = TRUE; + if (*previous <= OP_CHARI && repeat_min > 1) + { + reqchar = c; + reqcharflags = req_caseopt | cd->req_varyopt; + } } goto OUTPUT_SINGLE_REPEAT; /* Code shared with single character types */ } - /* If previous was a single negated character ([^a] or similar), we use - one of the special opcodes, replacing it. The code is shared with single- - character repeats by setting opt_type to add a suitable offset into - repeat_type. We can also test for auto-possessification. OP_NOT is - currently used only for single-byte chars. */ - - else if (*previous == OP_NOT) - { - op_type = OP_NOTSTAR - OP_STAR; /* Use "not" opcodes */ - c = previous[1]; - if (!possessive_quantifier && - repeat_max < 0 && - check_auto_possessive(OP_NOT, c, utf8, NULL, ptr + 1, options, cd)) - { - repeat_type = 0; /* Force greedy */ - possessive_quantifier = TRUE; - } - goto OUTPUT_SINGLE_REPEAT; - } - /* If previous was a character type match (\d or similar), abolish it and create a suitable repeat item. The code is shared with single-character repeats by setting op_type to add a suitable offset into repeat_type. Note @@ -3658,19 +5669,11 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ else if (*previous < OP_EODN) { - uschar *oldcode; + pcre_uchar *oldcode; int prop_type, prop_value; op_type = OP_TYPESTAR - OP_STAR; /* Use type opcodes */ c = *previous; - if (!possessive_quantifier && - repeat_max < 0 && - check_auto_possessive(c, 0, utf8, NULL, ptr + 1, options, cd)) - { - repeat_type = 0; /* Force greedy */ - possessive_quantifier = TRUE; - } - OUTPUT_SINGLE_REPEAT: if (*previous == OP_PROP || *previous == OP_NOTPROP) { @@ -3687,11 +5690,6 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ if (repeat_max == 0) goto END_REPEAT; - /* All real repeats make it impossible to handle partial matching (maybe - one day we will be able to remove this restriction). */ - - if (repeat_max != 1) cd->external_flags |= PCRE_NOPARTIAL; - /* Combine the op_type with the repeat_type */ repeat_type += op_type; @@ -3740,14 +5738,14 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ we have to insert the character for the previous code. For a repeated Unicode property match, there are two extra bytes that define the required property. In UTF-8 mode, long characters have their length in - c, with the 0x80 bit as a flag. */ + c, with the UTF_LENGTH bit as a flag. */ if (repeat_max < 0) { -#ifdef SUPPORT_UTF8 - if (utf8 && c >= 128) +#if defined SUPPORT_UTF && !defined COMPILE_PCRE32 + if (utf && (c & UTF_LENGTH) != 0) { - memcpy(code, utf8_char, c & 7); + memcpy(code, utf_chars, IN_UCHARS(c & 7)); code += c & 7; } else @@ -3769,10 +5767,10 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ else if (repeat_max != repeat_min) { -#ifdef SUPPORT_UTF8 - if (utf8 && c >= 128) +#if defined SUPPORT_UTF && !defined COMPILE_PCRE32 + if (utf && (c & UTF_LENGTH) != 0) { - memcpy(code, utf8_char, c & 7); + memcpy(code, utf_chars, IN_UCHARS(c & 7)); code += c & 7; } else @@ -3799,10 +5797,10 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ /* The character or character type itself comes last in all cases. */ -#ifdef SUPPORT_UTF8 - if (utf8 && c >= 128) +#if defined SUPPORT_UTF && !defined COMPILE_PCRE32 + if (utf && (c & UTF_LENGTH) != 0) { - memcpy(code, utf8_char, c & 7); + memcpy(code, utf_chars, IN_UCHARS(c & 7)); code += c & 7; } else @@ -3824,12 +5822,12 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ /* If previous was a character class or a back reference, we put the repeat stuff after it, but just skip the item if the repeat was {0,0}. */ - else if (*previous == OP_CLASS || - *previous == OP_NCLASS || -#ifdef SUPPORT_UTF8 + else if (*previous == OP_CLASS || *previous == OP_NCLASS || +#if defined SUPPORT_UTF || !defined COMPILE_PCRE8 *previous == OP_XCLASS || #endif - *previous == OP_REF) + *previous == OP_REF || *previous == OP_REFI || + *previous == OP_DNREF || *previous == OP_DNREFI) { if (repeat_max == 0) { @@ -3837,11 +5835,6 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ goto END_REPEAT; } - /* All real repeats make it impossible to handle partial matching (maybe - one day we will be able to remove this restriction). */ - - if (repeat_max != 1) cd->external_flags |= PCRE_NOPARTIAL; - if (repeat_min == 0 && repeat_max == -1) *code++ = OP_CRSTAR + repeat_type; else if (repeat_min == 1 && repeat_max == -1) @@ -3858,35 +5851,36 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ } /* If previous was a bracket group, we may have to replicate it in certain - cases. */ + cases. Note that at this point we can encounter only the "basic" bracket + opcodes such as BRA and CBRA, as this is the place where they get converted + into the more special varieties such as BRAPOS and SBRA. A test for >= + OP_ASSERT and <= OP_COND includes ASSERT, ASSERT_NOT, ASSERTBACK, + ASSERTBACK_NOT, ONCE, ONCE_NC, BRA, BRAPOS, CBRA, CBRAPOS, and COND. + Originally, PCRE did not allow repetition of assertions, but now it does, + for Perl compatibility. */ - else if (*previous == OP_BRA || *previous == OP_CBRA || - *previous == OP_ONCE || *previous == OP_COND) + else if (*previous >= OP_ASSERT && *previous <= OP_COND) { register int i; - int ketoffset = 0; - int len = code - previous; - uschar *bralink = NULL; + int len = (int)(code - previous); + pcre_uchar *bralink = NULL; + pcre_uchar *brazeroptr = NULL; - /* Repeating a DEFINE group is pointless */ + /* Repeating a DEFINE group is pointless, but Perl allows the syntax, so + we just ignore the repeat. */ if (*previous == OP_COND && previous[LINK_SIZE+1] == OP_DEF) - { - *errorcodeptr = ERR55; - goto FAILED; - } + goto END_REPEAT; - /* If the maximum repeat count is unlimited, find the end of the bracket - by scanning through from the start, and compute the offset back to it - from the current code pointer. There may be an OP_OPT setting following - the final KET, so we can't find the end just by going back from the code - pointer. */ + /* There is no sense in actually repeating assertions. The only potential + use of repetition is in cases when the assertion is optional. Therefore, + if the minimum is greater than zero, just ignore the repeat. If the + maximum is not zero or one, set it to 1. */ - if (repeat_max == -1) + if (*previous < OP_ONCE) /* Assertion */ { - register uschar *ket = previous; - do ket += GET(ket, 1); while (*ket != OP_KET); - ketoffset = code - ket; + if (repeat_min > 0) goto END_REPEAT; + if (repeat_max < 0 || repeat_max > 1) repeat_max = 1; } /* The case of a zero minimum is special because of the need to stick @@ -3907,10 +5901,11 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ ** goto END_REPEAT; ** } - However, that fails when a group is referenced as a subroutine from - elsewhere in the pattern, so now we stick in OP_SKIPZERO in front of it - so that it is skipped on execution. As we don't have a list of which - groups are referenced, we cannot do this selectively. + However, that fails when a group or a subgroup within it is referenced + as a subroutine from elsewhere in the pattern, so now we stick in + OP_SKIPZERO in front of it so that it is skipped on execution. As we + don't have a list of which groups are referenced, we cannot do this + selectively. If the maximum is 1 or unlimited, we just have to stick in the BRAZERO and do no more at this point. However, we do need to adjust any @@ -3922,14 +5917,15 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ if (repeat_max <= 1) /* Covers 0, 1, and unlimited */ { *code = OP_END; - adjust_recurse(previous, 1, utf8, cd, save_hwm); - memmove(previous+1, previous, len); + adjust_recurse(previous, 1, utf, cd, save_hwm); + memmove(previous + 1, previous, IN_UCHARS(len)); code++; if (repeat_max == 0) { *previous++ = OP_SKIPZERO; goto END_REPEAT; } + brazeroptr = previous; /* Save for possessive optimizing */ *previous++ = OP_BRAZERO + repeat_type; } @@ -3945,8 +5941,8 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ { int offset; *code = OP_END; - adjust_recurse(previous, 2 + LINK_SIZE, utf8, cd, save_hwm); - memmove(previous + 2 + LINK_SIZE, previous, len); + adjust_recurse(previous, 2 + LINK_SIZE, utf, cd, save_hwm); + memmove(previous + 2 + LINK_SIZE, previous, IN_UCHARS(len)); code += 2 + LINK_SIZE; *previous++ = OP_BRAZERO + repeat_type; *previous++ = OP_BRA; @@ -3954,7 +5950,7 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ /* We chain together the bracket offset fields that have to be filled in later when the ends of the brackets are reached. */ - offset = (bralink == NULL)? 0 : previous - bralink; + offset = (bralink == NULL)? 0 : (int)(previous - bralink); bralink = previous; PUTINC(previous, 0, offset); } @@ -3975,13 +5971,15 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ { /* In the pre-compile phase, we don't actually do the replication. We just adjust the length as if we had. Do some paranoid checks for - potential integer overflow. */ + potential integer overflow. The INT64_OR_DOUBLE type is a 64-bit + integer type when available, otherwise double. */ if (lengthptr != NULL) { int delta = (repeat_min - 1)*length_prevgroup; - if ((double)(repeat_min - 1)*(double)length_prevgroup > - (double)INT_MAX || + if ((INT64_OR_DOUBLE)(repeat_min - 1)* + (INT64_OR_DOUBLE)length_prevgroup > + (INT64_OR_DOUBLE)INT_MAX || OFLOW_MAX - *lengthptr < delta) { *errorcodeptr = ERR20; @@ -3990,16 +5988,36 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ *lengthptr += delta; } - /* This is compiling for real */ + /* This is compiling for real. If there is a set first byte for + the group, and we have not yet set a "required byte", set it. Make + sure there is enough workspace for copying forward references before + doing the copy. */ else { - if (groupsetfirstbyte && reqbyte < 0) reqbyte = firstbyte; + if (groupsetfirstchar && reqcharflags < 0) + { + reqchar = firstchar; + reqcharflags = firstcharflags; + } + for (i = 1; i < repeat_min; i++) { - uschar *hc; - uschar *this_hwm = cd->hwm; - memcpy(code, previous, len); + pcre_uchar *hc; + pcre_uchar *this_hwm = cd->hwm; + memcpy(code, previous, IN_UCHARS(len)); + + while (cd->hwm > cd->start_workspace + cd->workspace_size - + WORK_SIZE_SAFETY_MARGIN - (this_hwm - save_hwm)) + { + int save_offset = save_hwm - cd->start_workspace; + int this_offset = this_hwm - cd->start_workspace; + *errorcodeptr = expand_workspace(cd); + if (*errorcodeptr != 0) goto FAILED; + save_hwm = (pcre_uchar *)cd->start_workspace + save_offset; + this_hwm = (pcre_uchar *)cd->start_workspace + this_offset; + } + for (hc = save_hwm; hc < this_hwm; hc += LINK_SIZE) { PUT(cd->hwm, 0, GET(hc, 0) + len); @@ -4027,15 +6045,16 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ just adjust the length as if we had. For each repetition we must add 1 to the length for BRAZERO and for all but the last repetition we must add 2 + 2*LINKSIZE to allow for the nesting that occurs. Do some - paranoid checks to avoid integer overflow. */ + paranoid checks to avoid integer overflow. The INT64_OR_DOUBLE type is + a 64-bit integer type when available, otherwise double. */ if (lengthptr != NULL && repeat_max > 0) { int delta = repeat_max * (length_prevgroup + 1 + 2 + 2*LINK_SIZE) - 2 - 2*LINK_SIZE; /* Last one doesn't nest */ - if ((double)repeat_max * - (double)(length_prevgroup + 1 + 2 + 2*LINK_SIZE) - > (double)INT_MAX || + if ((INT64_OR_DOUBLE)repeat_max * + (INT64_OR_DOUBLE)(length_prevgroup + 1 + 2 + 2*LINK_SIZE) + > (INT64_OR_DOUBLE)INT_MAX || OFLOW_MAX - *lengthptr < delta) { *errorcodeptr = ERR20; @@ -4048,8 +6067,8 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ else for (i = repeat_max - 1; i >= 0; i--) { - uschar *hc; - uschar *this_hwm = cd->hwm; + pcre_uchar *hc; + pcre_uchar *this_hwm = cd->hwm; *code++ = OP_BRAZERO + repeat_type; @@ -4060,12 +6079,27 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ { int offset; *code++ = OP_BRA; - offset = (bralink == NULL)? 0 : code - bralink; + offset = (bralink == NULL)? 0 : (int)(code - bralink); bralink = code; PUTINC(code, 0, offset); } - memcpy(code, previous, len); + memcpy(code, previous, IN_UCHARS(len)); + + /* Ensure there is enough workspace for forward references before + copying them. */ + + while (cd->hwm > cd->start_workspace + cd->workspace_size - + WORK_SIZE_SAFETY_MARGIN - (this_hwm - save_hwm)) + { + int save_offset = save_hwm - cd->start_workspace; + int this_offset = this_hwm - cd->start_workspace; + *errorcodeptr = expand_workspace(cd); + if (*errorcodeptr != 0) goto FAILED; + save_hwm = (pcre_uchar *)cd->start_workspace + save_offset; + this_hwm = (pcre_uchar *)cd->start_workspace + this_offset; + } + for (hc = save_hwm; hc < this_hwm; hc += LINK_SIZE) { PUT(cd->hwm, 0, GET(hc, 0) + len + ((i != 0)? 2+LINK_SIZE : 1)); @@ -4081,8 +6115,8 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ while (bralink != NULL) { int oldlinkoffset; - int offset = code - bralink + 1; - uschar *bra = code - offset; + int offset = (int)(code - bralink + 1); + pcre_uchar *bra = code - offset; oldlinkoffset = GET(bra, 1); bralink = (oldlinkoffset == 0)? NULL : bralink - oldlinkoffset; *code++ = OP_KET; @@ -4091,35 +6125,110 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ } } - /* If the maximum is unlimited, set a repeater in the final copy. We - can't just offset backwards from the current code point, because we - don't know if there's been an options resetting after the ket. The - correct offset was computed above. + /* If the maximum is unlimited, set a repeater in the final copy. For + ONCE brackets, that's all we need to do. However, possessively repeated + ONCE brackets can be converted into non-capturing brackets, as the + behaviour of (?:xx)++ is the same as (?>xx)++ and this saves having to + deal with possessive ONCEs specially. - Then, when we are doing the actual compile phase, check to see whether - this group is a non-atomic one that could match an empty string. If so, + Otherwise, when we are doing the actual compile phase, check to see + whether this group is one that could match an empty string. If so, convert the initial operator to the S form (e.g. OP_BRA -> OP_SBRA) so - that runtime checking can be done. [This check is also applied to - atomic groups at runtime, but in a different way.] */ + that runtime checking can be done. [This check is also applied to ONCE + groups at runtime, but in a different way.] + + Then, if the quantifier was possessive and the bracket is not a + conditional, we convert the BRA code to the POS form, and the KET code to + KETRPOS. (It turns out to be convenient at runtime to detect this kind of + subpattern at both the start and at the end.) The use of special opcodes + makes it possible to reduce greatly the stack usage in pcre_exec(). If + the group is preceded by OP_BRAZERO, convert this to OP_BRAPOSZERO. + + Then, if the minimum number of matches is 1 or 0, cancel the possessive + flag so that the default action below, of wrapping everything inside + atomic brackets, does not happen. When the minimum is greater than 1, + there will be earlier copies of the group, and so we still have to wrap + the whole thing. */ else { - uschar *ketcode = code - ketoffset; - uschar *bracode = ketcode - GET(ketcode, 1); - *ketcode = OP_KETRMAX + repeat_type; - if (lengthptr == NULL && *bracode != OP_ONCE) + pcre_uchar *ketcode = code - 1 - LINK_SIZE; + pcre_uchar *bracode = ketcode - GET(ketcode, 1); + + /* Convert possessive ONCE brackets to non-capturing */ + + if ((*bracode == OP_ONCE || *bracode == OP_ONCE_NC) && + possessive_quantifier) *bracode = OP_BRA; + + /* For non-possessive ONCE brackets, all we need to do is to + set the KET. */ + + if (*bracode == OP_ONCE || *bracode == OP_ONCE_NC) + *ketcode = OP_KETRMAX + repeat_type; + + /* Handle non-ONCE brackets and possessive ONCEs (which have been + converted to non-capturing above). */ + + else { - uschar *scode = bracode; - do + /* In the compile phase, check for empty string matching. */ + + if (lengthptr == NULL) { - if (could_be_empty_branch(scode, ketcode, utf8)) + pcre_uchar *scode = bracode; + do { - *bracode += OP_SBRA - OP_BRA; - break; + if (could_be_empty_branch(scode, ketcode, utf, cd, NULL)) + { + *bracode += OP_SBRA - OP_BRA; + break; + } + scode += GET(scode, 1); } - scode += GET(scode, 1); + while (*scode == OP_ALT); } - while (*scode == OP_ALT); + + /* Handle possessive quantifiers. */ + + if (possessive_quantifier) + { + /* For COND brackets, we wrap the whole thing in a possessively + repeated non-capturing bracket, because we have not invented POS + versions of the COND opcodes. Because we are moving code along, we + must ensure that any pending recursive references are updated. */ + + if (*bracode == OP_COND || *bracode == OP_SCOND) + { + int nlen = (int)(code - bracode); + *code = OP_END; + adjust_recurse(bracode, 1 + LINK_SIZE, utf, cd, save_hwm); + memmove(bracode + 1 + LINK_SIZE, bracode, IN_UCHARS(nlen)); + code += 1 + LINK_SIZE; + nlen += 1 + LINK_SIZE; + *bracode = OP_BRAPOS; + *code++ = OP_KETRPOS; + PUTINC(code, 0, nlen); + PUT(bracode, 1, nlen); + } + + /* For non-COND brackets, we modify the BRA code and use KETRPOS. */ + + else + { + *bracode += 1; /* Switch to xxxPOS opcodes */ + *ketcode = OP_KETRPOS; + } + + /* If the minimum is zero, mark it as possessive, then unset the + possessive flag when the minimum is 0 or 1. */ + + if (brazeroptr != NULL) *brazeroptr = OP_BRAPOSZERO; + if (repeat_min < 2) possessive_quantifier = FALSE; + } + + /* Non-possessive quantifier */ + + else *ketcode = OP_KETRMAX + repeat_type; } } } @@ -4139,28 +6248,105 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ goto FAILED; } - /* If the character following a repeat is '+', or if certain optimization - tests above succeeded, possessive_quantifier is TRUE. For some of the - simpler opcodes, there is an special alternative opcode for this. For - anything else, we wrap the entire repeated item inside OP_ONCE brackets. - The '+' notation is just syntactic sugar, taken from Sun's Java package, - but the special opcodes can optimize it a bit. The repeated item starts at - tempcode, not at previous, which might be the first part of a string whose - (former) last char we repeated. + /* If the character following a repeat is '+', possessive_quantifier is + TRUE. For some opcodes, there are special alternative opcodes for this + case. For anything else, we wrap the entire repeated item inside OP_ONCE + brackets. Logically, the '+' notation is just syntactic sugar, taken from + Sun's Java package, but the special opcodes can optimize it. - Possessifying an 'exact' quantifier has no effect, so we can ignore it. But - an 'upto' may follow. We skip over an 'exact' item, and then test the - length of what remains before proceeding. */ + Some (but not all) possessively repeated subpatterns have already been + completely handled in the code just above. For them, possessive_quantifier + is always FALSE at this stage. Note that the repeated item starts at + tempcode, not at previous, which might be the first part of a string whose + (former) last char we repeated. */ if (possessive_quantifier) { int len; - if (*tempcode == OP_EXACT || *tempcode == OP_TYPEEXACT || - *tempcode == OP_NOTEXACT) - tempcode += _pcre_OP_lengths[*tempcode] + - ((*tempcode == OP_TYPEEXACT && - (tempcode[3] == OP_PROP || tempcode[3] == OP_NOTPROP))? 2:0); - len = code - tempcode; + + /* Possessifying an EXACT quantifier has no effect, so we can ignore it. + However, QUERY, STAR, or UPTO may follow (for quantifiers such as {5,6}, + {5,}, or {5,10}). We skip over an EXACT item; if the length of what + remains is greater than zero, there's a further opcode that can be + handled. If not, do nothing, leaving the EXACT alone. */ + + switch(*tempcode) + { + case OP_TYPEEXACT: + tempcode += PRIV(OP_lengths)[*tempcode] + + ((tempcode[1 + IMM2_SIZE] == OP_PROP + || tempcode[1 + IMM2_SIZE] == OP_NOTPROP)? 2 : 0); + break; + + /* CHAR opcodes are used for exacts whose count is 1. */ + + case OP_CHAR: + case OP_CHARI: + case OP_NOT: + case OP_NOTI: + case OP_EXACT: + case OP_EXACTI: + case OP_NOTEXACT: + case OP_NOTEXACTI: + tempcode += PRIV(OP_lengths)[*tempcode]; +#ifdef SUPPORT_UTF + if (utf && HAS_EXTRALEN(tempcode[-1])) + tempcode += GET_EXTRALEN(tempcode[-1]); +#endif + break; + + /* For the class opcodes, the repeat operator appears at the end; + adjust tempcode to point to it. */ + + case OP_CLASS: + case OP_NCLASS: + tempcode += 1 + 32/sizeof(pcre_uchar); + break; + +#if defined SUPPORT_UTF || !defined COMPILE_PCRE8 + case OP_XCLASS: + tempcode += GET(tempcode, 1); + break; +#endif + } + + /* If tempcode is equal to code (which points to the end of the repeated + item), it means we have skipped an EXACT item but there is no following + QUERY, STAR, or UPTO; the value of len will be 0, and we do nothing. In + all other cases, tempcode will be pointing to the repeat opcode, and will + be less than code, so the value of len will be greater than 0. */ + + len = (int)(code - tempcode); + if (len > 0) + { + unsigned int repcode = *tempcode; + + /* There is a table for possessifying opcodes, all of which are less + than OP_CALLOUT. A zero entry means there is no possessified version. + */ + + if (repcode < OP_CALLOUT && opcode_possessify[repcode] > 0) + *tempcode = opcode_possessify[repcode]; + + /* For opcode without a special possessified version, wrap the item in + ONCE brackets. Because we are moving code along, we must ensure that any + pending recursive references are updated. */ + + else + { + *code = OP_END; + adjust_recurse(tempcode, 1 + LINK_SIZE, utf, cd, save_hwm); + memmove(tempcode + 1 + LINK_SIZE, tempcode, IN_UCHARS(len)); + code += 1 + LINK_SIZE; + len += 1 + LINK_SIZE; + tempcode[0] = OP_ONCE; + *code++ = OP_KET; + PUTINC(code, 0, len); + PUT(tempcode, 1, len); + } + } + +#ifdef NEVER if (len > 0) switch (*tempcode) { case OP_STAR: *tempcode = OP_POSSTAR; break; @@ -4168,18 +6354,38 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ case OP_QUERY: *tempcode = OP_POSQUERY; break; case OP_UPTO: *tempcode = OP_POSUPTO; break; - case OP_TYPESTAR: *tempcode = OP_TYPEPOSSTAR; break; - case OP_TYPEPLUS: *tempcode = OP_TYPEPOSPLUS; break; - case OP_TYPEQUERY: *tempcode = OP_TYPEPOSQUERY; break; - case OP_TYPEUPTO: *tempcode = OP_TYPEPOSUPTO; break; + case OP_STARI: *tempcode = OP_POSSTARI; break; + case OP_PLUSI: *tempcode = OP_POSPLUSI; break; + case OP_QUERYI: *tempcode = OP_POSQUERYI; break; + case OP_UPTOI: *tempcode = OP_POSUPTOI; break; case OP_NOTSTAR: *tempcode = OP_NOTPOSSTAR; break; case OP_NOTPLUS: *tempcode = OP_NOTPOSPLUS; break; case OP_NOTQUERY: *tempcode = OP_NOTPOSQUERY; break; case OP_NOTUPTO: *tempcode = OP_NOTPOSUPTO; break; + case OP_NOTSTARI: *tempcode = OP_NOTPOSSTARI; break; + case OP_NOTPLUSI: *tempcode = OP_NOTPOSPLUSI; break; + case OP_NOTQUERYI: *tempcode = OP_NOTPOSQUERYI; break; + case OP_NOTUPTOI: *tempcode = OP_NOTPOSUPTOI; break; + + case OP_TYPESTAR: *tempcode = OP_TYPEPOSSTAR; break; + case OP_TYPEPLUS: *tempcode = OP_TYPEPOSPLUS; break; + case OP_TYPEQUERY: *tempcode = OP_TYPEPOSQUERY; break; + case OP_TYPEUPTO: *tempcode = OP_TYPEPOSUPTO; break; + + case OP_CRSTAR: *tempcode = OP_CRPOSSTAR; break; + case OP_CRPLUS: *tempcode = OP_CRPOSPLUS; break; + case OP_CRQUERY: *tempcode = OP_CRPOSQUERY; break; + case OP_CRRANGE: *tempcode = OP_CRPOSRANGE; break; + + /* Because we are moving code along, we must ensure that any + pending recursive references are updated. */ + default: - memmove(tempcode + 1+LINK_SIZE, tempcode, len); + *code = OP_END; + adjust_recurse(tempcode, 1 + LINK_SIZE, utf, cd, save_hwm); + memmove(tempcode + 1 + LINK_SIZE, tempcode, IN_UCHARS(len)); code += 1 + LINK_SIZE; len += 1 + LINK_SIZE; tempcode[0] = OP_ONCE; @@ -4188,10 +6394,11 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ PUT(tempcode, 1, len); break; } +#endif } /* In all case we no longer have a previous item. We also set the - "follows varying string" flag for subsequently encountered reqbytes if + "follows varying string" flag for subsequently encountered reqchars if it isn't already set and we have just passed a varying length item. */ END_REPEAT: @@ -4205,7 +6412,7 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ lookbehind or option setting or condition or all the other extended parenthesis forms. */ - case '(': + case CHAR_LEFT_PARENTHESIS: newoptions = options; skipbytes = 0; bravalue = OP_CBRA; @@ -4214,56 +6421,143 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ /* First deal with various "verbs" that can be introduced by '*'. */ - if (*(++ptr) == '*' && (cd->ctypes[ptr[1]] & ctype_letter) != 0) + ptr++; + if (ptr[0] == CHAR_ASTERISK && (ptr[1] == ':' + || (MAX_255(ptr[1]) && ((cd->ctypes[ptr[1]] & ctype_letter) != 0)))) { int i, namelen; + int arglen = 0; const char *vn = verbnames; - const uschar *name = ++ptr; + const pcre_uchar *name = ptr + 1; + const pcre_uchar *arg = NULL; previous = NULL; - while ((cd->ctypes[*++ptr] & ctype_letter) != 0) {}; - if (*ptr == ':') + ptr++; + while (MAX_255(*ptr) && (cd->ctypes[*ptr] & ctype_letter) != 0) ptr++; + namelen = (int)(ptr - name); + + /* It appears that Perl allows any characters whatsoever, other than + a closing parenthesis, to appear in arguments, so we no longer insist on + letters, digits, and underscores. */ + + if (*ptr == CHAR_COLON) { - *errorcodeptr = ERR59; /* Not supported */ - goto FAILED; + arg = ++ptr; + while (*ptr != CHAR_NULL && *ptr != CHAR_RIGHT_PARENTHESIS) ptr++; + arglen = (int)(ptr - arg); + if ((unsigned int)arglen > MAX_MARK) + { + *errorcodeptr = ERR75; + goto FAILED; + } } - if (*ptr != ')') + + if (*ptr != CHAR_RIGHT_PARENTHESIS) { *errorcodeptr = ERR60; goto FAILED; } - namelen = ptr - name; + + /* Scan the table of verb names */ + for (i = 0; i < verbcount; i++) { if (namelen == verbs[i].len && - strncmp((char *)name, vn, namelen) == 0) + STRNCMP_UC_C8(name, vn, namelen) == 0) { - *code = verbs[i].op; - if (*code++ == OP_ACCEPT) cd->had_accept = TRUE; - break; + int setverb; + + /* Check for open captures before ACCEPT and convert it to + ASSERT_ACCEPT if in an assertion. */ + + if (verbs[i].op == OP_ACCEPT) + { + open_capitem *oc; + if (arglen != 0) + { + *errorcodeptr = ERR59; + goto FAILED; + } + cd->had_accept = TRUE; + for (oc = cd->open_caps; oc != NULL; oc = oc->next) + { + *code++ = OP_CLOSE; + PUT2INC(code, 0, oc->number); + } + setverb = *code++ = + (cd->assert_depth > 0)? OP_ASSERT_ACCEPT : OP_ACCEPT; + + /* Do not set firstchar after *ACCEPT */ + if (firstcharflags == REQ_UNSET) firstcharflags = REQ_NONE; + } + + /* Handle other cases with/without an argument */ + + else if (arglen == 0) + { + if (verbs[i].op < 0) /* Argument is mandatory */ + { + *errorcodeptr = ERR66; + goto FAILED; + } + setverb = *code++ = verbs[i].op; + } + + else + { + if (verbs[i].op_arg < 0) /* Argument is forbidden */ + { + *errorcodeptr = ERR59; + goto FAILED; + } + setverb = *code++ = verbs[i].op_arg; + *code++ = arglen; + memcpy(code, arg, IN_UCHARS(arglen)); + code += arglen; + *code++ = 0; + } + + switch (setverb) + { + case OP_THEN: + case OP_THEN_ARG: + cd->external_flags |= PCRE_HASTHEN; + break; + + case OP_PRUNE: + case OP_PRUNE_ARG: + case OP_SKIP: + case OP_SKIP_ARG: + cd->had_pruneorskip = TRUE; + break; + } + + break; /* Found verb, exit loop */ } + vn += verbs[i].len + 1; } - if (i < verbcount) continue; - *errorcodeptr = ERR60; + + if (i < verbcount) continue; /* Successfully handled a verb */ + *errorcodeptr = ERR60; /* Verb not recognized */ goto FAILED; } /* Deal with the extended parentheses; all are introduced by '?', and the appearance of any of them means that this is not a capturing group. */ - else if (*ptr == '?') + else if (*ptr == CHAR_QUESTION_MARK) { int i, set, unset, namelen; int *optset; - const uschar *name; - uschar *slot; + const pcre_uchar *name; + pcre_uchar *slot; switch (*(++ptr)) { - case '#': /* Comment; skip to ket */ + case CHAR_NUMBER_SIGN: /* Comment; skip to ket */ ptr++; - while (*ptr != 0 && *ptr != ')') ptr++; - if (*ptr == 0) + while (*ptr != CHAR_NULL && *ptr != CHAR_RIGHT_PARENTHESIS) ptr++; + if (*ptr == CHAR_NULL) { *errorcodeptr = ERR18; goto FAILED; @@ -4272,51 +6566,70 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ /* ------------------------------------------------------------ */ - case '|': /* Reset capture count for each branch */ + case CHAR_VERTICAL_LINE: /* Reset capture count for each branch */ reset_bracount = TRUE; /* Fall through */ /* ------------------------------------------------------------ */ - case ':': /* Non-capturing bracket */ + case CHAR_COLON: /* Non-capturing bracket */ bravalue = OP_BRA; ptr++; break; /* ------------------------------------------------------------ */ - case '(': + case CHAR_LEFT_PARENTHESIS: bravalue = OP_COND; /* Conditional group */ + tempptr = ptr; /* A condition can be an assertion, a number (referring to a numbered - group), a name (referring to a named group), or 'R', referring to - recursion. R and R&name are also permitted for recursion tests. + group's having been set), a name (referring to a named group), or 'R', + referring to recursion. R and R&name are also permitted for + recursion tests. - There are several syntaxes for testing a named group: (?(name)) is used - by Python; Perl 5.10 onwards uses (?() or (?('name')). + There are ways of testing a named group: (?(name)) is used by Python; + Perl 5.10 onwards uses (?() or (?('name')). - There are two unfortunate ambiguities, caused by history. (a) 'R' can - be the recursive thing or the name 'R' (and similarly for 'R' followed - by digits), and (b) a number could be a name that consists of digits. - In both cases, we look for a name first; if not found, we try the other - cases. */ + There is one unfortunate ambiguity, caused by history. 'R' can be the + recursive thing or the name 'R' (and similarly for 'R' followed by + digits). We look for a name first; if not found, we try the other case. + + For compatibility with auto-callouts, we allow a callout to be + specified before a condition that is an assertion. First, check for the + syntax of a callout; if found, adjust the temporary pointer that is + used to check for an assertion condition. That's all that is needed! */ + + if (ptr[1] == CHAR_QUESTION_MARK && ptr[2] == CHAR_C) + { + for (i = 3;; i++) if (!IS_DIGIT(ptr[i])) break; + if (ptr[i] == CHAR_RIGHT_PARENTHESIS) + tempptr += i + 1; + } /* For conditions that are assertions, check the syntax, and then exit the switch. This will take control down to where bracketed groups, including assertions, are processed. */ - if (ptr[1] == '?' && (ptr[2] == '=' || ptr[2] == '!' || ptr[2] == '<')) + if (tempptr[1] == CHAR_QUESTION_MARK && + (tempptr[2] == CHAR_EQUALS_SIGN || + tempptr[2] == CHAR_EXCLAMATION_MARK || + tempptr[2] == CHAR_LESS_THAN_SIGN)) break; - /* Most other conditions use OP_CREF (a couple change to OP_RREF - below), and all need to skip 3 bytes at the start of the group. */ + /* Other conditions use OP_CREF/OP_DNCREF/OP_RREF/OP_DNRREF, and all + need to skip at least 1+IMM2_SIZE bytes at the start of the group. */ code[1+LINK_SIZE] = OP_CREF; - skipbytes = 3; - refsign = -1; + skipbytes = 1+IMM2_SIZE; + refsign = -1; /* => not a number */ + namelen = -1; /* => not a name; must set to avoid warning */ + name = NULL; /* Always set to avoid warning */ + recno = 0; /* Always set to avoid warning */ /* Check for a test for recursion in a named group. */ - if (ptr[1] == 'R' && ptr[2] == '&') + ptr++; + if (*ptr == CHAR_R && ptr[1] == CHAR_AMPERSAND) { terminator = -1; ptr += 2; @@ -4324,50 +6637,70 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ } /* Check for a test for a named group's having been set, using the Perl - syntax (?() or (?('name') */ + syntax (?() or (?('name'), and also allow for the original PCRE + syntax of (?(name) or for (?(+n), (?(-n), and just (?(n). */ - else if (ptr[1] == '<') + else if (*ptr == CHAR_LESS_THAN_SIGN) { - terminator = '>'; + terminator = CHAR_GREATER_THAN_SIGN; ptr++; } - else if (ptr[1] == '\'') + else if (*ptr == CHAR_APOSTROPHE) { - terminator = '\''; + terminator = CHAR_APOSTROPHE; ptr++; } else { - terminator = 0; - if (ptr[1] == '-' || ptr[1] == '+') refsign = *(++ptr); + terminator = CHAR_NULL; + if (*ptr == CHAR_MINUS || *ptr == CHAR_PLUS) refsign = *ptr++; + else if (IS_DIGIT(*ptr)) refsign = 0; } - /* We now expect to read a name; any thing else is an error */ + /* Handle a number */ - if ((cd->ctypes[ptr[1]] & ctype_word) == 0) + if (refsign >= 0) { - ptr += 1; /* To get the right offset */ - *errorcodeptr = ERR28; - goto FAILED; + while (IS_DIGIT(*ptr)) + { + recno = recno * 10 + (int)(*ptr - CHAR_0); + ptr++; + } } - /* Read the name, but also get it as a number if it's all digits */ + /* Otherwise we expect to read a name; anything else is an error. When + a name is one of a number of duplicates, a different opcode is used and + it needs more memory. Unfortunately we cannot tell whether a name is a + duplicate in the first pass, so we have to allow for more memory. */ - recno = 0; - name = ++ptr; - while ((cd->ctypes[*ptr] & ctype_word) != 0) + else { - if (recno >= 0) - recno = ((digitab[*ptr] & ctype_digit) != 0)? - recno * 10 + *ptr - '0' : -1; - ptr++; + if (IS_DIGIT(*ptr)) + { + *errorcodeptr = ERR84; + goto FAILED; + } + if (!MAX_255(*ptr) || (cd->ctypes[*ptr] & ctype_word) == 0) + { + *errorcodeptr = ERR28; /* Assertion expected */ + goto FAILED; + } + name = ptr++; + while (MAX_255(*ptr) && (cd->ctypes[*ptr] & ctype_word) != 0) + { + ptr++; + } + namelen = (int)(ptr - name); + if (lengthptr != NULL) *lengthptr += IMM2_SIZE; } - namelen = ptr - name; - if ((terminator > 0 && *ptr++ != terminator) || *ptr++ != ')') + /* Check the terminator */ + + if ((terminator > 0 && *ptr++ != (pcre_uchar)terminator) || + *ptr++ != CHAR_RIGHT_PARENTHESIS) { - ptr--; /* Error offset */ - *errorcodeptr = ERR26; + ptr--; /* Error offset */ + *errorcodeptr = ERR26; /* Malformed number or name */ goto FAILED; } @@ -4376,18 +6709,18 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ if (lengthptr != NULL) break; /* In the real compile we do the work of looking for the actual - reference. If the string started with "+" or "-" we require the rest to - be digits, in which case recno will be set. */ + reference. If refsign is not negative, it means we have a number in + recno. */ - if (refsign > 0) + if (refsign >= 0) { if (recno <= 0) { - *errorcodeptr = ERR58; + *errorcodeptr = ERR35; goto FAILED; } - recno = (refsign == '-')? - cd->bracount - recno + 1 : recno +cd->bracount; + if (refsign != 0) recno = (refsign == CHAR_MINUS)? + cd->bracount - recno + 1 : recno + cd->bracount; if (recno <= 0 || recno > cd->final_bracount) { *errorcodeptr = ERR15; @@ -4397,39 +6730,51 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ break; } - /* Otherwise (did not start with "+" or "-"), start by looking for the - name. */ + /* Otherwise look for the name. */ slot = cd->name_table; for (i = 0; i < cd->names_found; i++) { - if (strncmp((char *)name, (char *)slot+2, namelen) == 0) break; + if (STRNCMP_UC_UC(name, slot+IMM2_SIZE, namelen) == 0) break; slot += cd->name_entry_size; } - /* Found a previous named subpattern */ + /* Found the named subpattern. If the name is duplicated, add one to + the opcode to change CREF/RREF into DNCREF/DNRREF and insert + appropriate data values. Otherwise, just insert the unique subpattern + number. */ if (i < cd->names_found) { - recno = GET2(slot, 0); - PUT2(code, 2+LINK_SIZE, recno); + int offset = i++; + int count = 1; + recno = GET2(slot, 0); /* Number from first found */ + for (; i < cd->names_found; i++) + { + slot += cd->name_entry_size; + if (STRNCMP_UC_UC(name, slot+IMM2_SIZE, namelen) != 0) break; + count++; + } + if (count > 1) + { + PUT2(code, 2+LINK_SIZE, offset); + PUT2(code, 2+LINK_SIZE+IMM2_SIZE, count); + skipbytes += IMM2_SIZE; + code[1+LINK_SIZE]++; + } + else /* Not a duplicated name */ + { + PUT2(code, 2+LINK_SIZE, recno); + } } - /* Search the pattern for a forward reference */ + /* If terminator == CHAR_NULL it means that the name followed directly + after the opening parenthesis [e.g. (?(abc)...] and in this case there + are some further alternatives to try. For the cases where terminator != + CHAR_NULL [things like (?(... or (?('name')... or (?(R&name)... ] + we have now checked all the possibilities, so give an error. */ - else if ((i = find_parens(ptr, cd, name, namelen, - (options & PCRE_EXTENDED) != 0)) > 0) - { - PUT2(code, 2+LINK_SIZE, i); - } - - /* If terminator == 0 it means that the name followed directly after - the opening parenthesis [e.g. (?(abc)...] and in this case there are - some further alternatives to try. For the cases where terminator != 0 - [things like (?(... or (?('name')... or (?(R&name)... ] we have - now checked all the possibilities, so give an error. */ - - else if (terminator != 0) + else if (terminator != CHAR_NULL) { *errorcodeptr = ERR15; goto FAILED; @@ -4438,17 +6783,17 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ /* Check for (?(R) for recursion. Allow digits after R to specify a specific group number. */ - else if (*name == 'R') + else if (*name == CHAR_R) { recno = 0; for (i = 1; i < namelen; i++) { - if ((digitab[name[i]] & ctype_digit) == 0) + if (!IS_DIGIT(name[i])) { *errorcodeptr = ERR15; goto FAILED; } - recno = recno * 10 + name[i] - '0'; + recno = recno * 10 + name[i] - CHAR_0; } if (recno == 0) recno = RREF_ANY; code[1+LINK_SIZE] = OP_RREF; /* Change test type */ @@ -4458,66 +6803,70 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ /* Similarly, check for the (?(DEFINE) "condition", which is always false. */ - else if (namelen == 6 && strncmp((char *)name, "DEFINE", 6) == 0) + else if (namelen == 6 && STRNCMP_UC_C8(name, STRING_DEFINE, 6) == 0) { code[1+LINK_SIZE] = OP_DEF; skipbytes = 1; } - /* Check for the "name" actually being a subpattern number. We are - in the second pass here, so final_bracount is set. */ - - else if (recno > 0 && recno <= cd->final_bracount) - { - PUT2(code, 2+LINK_SIZE, recno); - } - - /* Either an unidentified subpattern, or a reference to (?(0) */ + /* Reference to an unidentified subpattern. */ else { - *errorcodeptr = (recno == 0)? ERR35: ERR15; + *errorcodeptr = ERR15; goto FAILED; } break; /* ------------------------------------------------------------ */ - case '=': /* Positive lookahead */ + case CHAR_EQUALS_SIGN: /* Positive lookahead */ bravalue = OP_ASSERT; + cd->assert_depth += 1; ptr++; break; + /* Optimize (?!) to (*FAIL) unless it is quantified - which is a weird + thing to do, but Perl allows all assertions to be quantified, and when + they contain capturing parentheses there may be a potential use for + this feature. Not that that applies to a quantified (?!) but we allow + it for uniformity. */ /* ------------------------------------------------------------ */ - case '!': /* Negative lookahead */ + case CHAR_EXCLAMATION_MARK: /* Negative lookahead */ ptr++; - if (*ptr == ')') /* Optimize (?!) */ + if (*ptr == CHAR_RIGHT_PARENTHESIS && ptr[1] != CHAR_ASTERISK && + ptr[1] != CHAR_PLUS && ptr[1] != CHAR_QUESTION_MARK && + (ptr[1] != CHAR_LEFT_CURLY_BRACKET || !is_counted_repeat(ptr+2))) { *code++ = OP_FAIL; previous = NULL; continue; } bravalue = OP_ASSERT_NOT; + cd->assert_depth += 1; break; /* ------------------------------------------------------------ */ - case '<': /* Lookbehind or named define */ + case CHAR_LESS_THAN_SIGN: /* Lookbehind or named define */ switch (ptr[1]) { - case '=': /* Positive lookbehind */ + case CHAR_EQUALS_SIGN: /* Positive lookbehind */ bravalue = OP_ASSERTBACK; + cd->assert_depth += 1; ptr += 2; break; - case '!': /* Negative lookbehind */ + case CHAR_EXCLAMATION_MARK: /* Negative lookbehind */ bravalue = OP_ASSERTBACK_NOT; + cd->assert_depth += 1; ptr += 2; break; default: /* Could be name define, else bad */ - if ((cd->ctypes[ptr[1]] & ctype_word) != 0) goto DEFINE_NAME; + if (MAX_255(ptr[1]) && (cd->ctypes[ptr[1]] & ctype_word) != 0) + goto DEFINE_NAME; ptr++; /* Correct offset for error */ *errorcodeptr = ERR24; goto FAILED; @@ -4526,22 +6875,23 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ /* ------------------------------------------------------------ */ - case '>': /* One-time brackets */ + case CHAR_GREATER_THAN_SIGN: /* One-time brackets */ bravalue = OP_ONCE; ptr++; break; /* ------------------------------------------------------------ */ - case 'C': /* Callout - may be followed by digits; */ - previous_callout = code; /* Save for later completion */ - after_manual_callout = 1; /* Skip one item before completing */ + case CHAR_C: /* Callout - may be followed by digits; */ + previous_callout = code; /* Save for later completion */ + after_manual_callout = 1; /* Skip one item before completing */ *code++ = OP_CALLOUT; { int n = 0; - while ((digitab[*(++ptr)] & ctype_digit) != 0) - n = n * 10 + *ptr - '0'; - if (*ptr != ')') + ptr++; + while(IS_DIGIT(*ptr)) + n = n * 10 + *ptr++ - CHAR_0; + if (*ptr != CHAR_RIGHT_PARENTHESIS) { *errorcodeptr = ERR39; goto FAILED; @@ -4552,8 +6902,8 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ goto FAILED; } *code++ = n; - PUT(code, 0, ptr - cd->start_pattern + 1); /* Pattern offset */ - PUT(code, LINK_SIZE, 0); /* Default length */ + PUT(code, 0, (int)(ptr - cd->start_pattern + 1)); /* Pattern offset */ + PUT(code, LINK_SIZE, 0); /* Default length */ code += 2 * LINK_SIZE; } previous = NULL; @@ -4561,14 +6911,15 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ /* ------------------------------------------------------------ */ - case 'P': /* Python-style named subpattern handling */ - if (*(++ptr) == '=' || *ptr == '>') /* Reference or recursion */ + case CHAR_P: /* Python-style named subpattern handling */ + if (*(++ptr) == CHAR_EQUALS_SIGN || + *ptr == CHAR_GREATER_THAN_SIGN) /* Reference or recursion */ { - is_recurse = *ptr == '>'; - terminator = ')'; + is_recurse = *ptr == CHAR_GREATER_THAN_SIGN; + terminator = CHAR_RIGHT_PARENTHESIS; goto NAMED_REF_OR_RECURSE; } - else if (*ptr != '<') /* Test for Python-style definition */ + else if (*ptr != CHAR_LESS_THAN_SIGN) /* Test for Python-style defn */ { *errorcodeptr = ERR41; goto FAILED; @@ -4578,84 +6929,117 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ /* ------------------------------------------------------------ */ DEFINE_NAME: /* Come here from (?< handling */ - case '\'': + case CHAR_APOSTROPHE: + terminator = (*ptr == CHAR_LESS_THAN_SIGN)? + CHAR_GREATER_THAN_SIGN : CHAR_APOSTROPHE; + name = ++ptr; + if (IS_DIGIT(*ptr)) { - terminator = (*ptr == '<')? '>' : '\''; - name = ++ptr; + *errorcodeptr = ERR84; /* Group name must start with non-digit */ + goto FAILED; + } + while (MAX_255(*ptr) && (cd->ctypes[*ptr] & ctype_word) != 0) ptr++; + namelen = (int)(ptr - name); - while ((cd->ctypes[*ptr] & ctype_word) != 0) ptr++; - namelen = ptr - name; + /* In the pre-compile phase, do a syntax check, remember the longest + name, and then remember the group in a vector, expanding it if + necessary. Duplicates for the same number are skipped; other duplicates + are checked for validity. In the actual compile, there is nothing to + do. */ - /* In the pre-compile phase, just do a syntax check. */ + if (lengthptr != NULL) + { + named_group *ng; + pcre_uint32 number = cd->bracount + 1; - if (lengthptr != NULL) + if (*ptr != (pcre_uchar)terminator) { - if (*ptr != terminator) + *errorcodeptr = ERR42; + goto FAILED; + } + + if (cd->names_found >= MAX_NAME_COUNT) + { + *errorcodeptr = ERR49; + goto FAILED; + } + + if (namelen + IMM2_SIZE + 1 > cd->name_entry_size) + { + cd->name_entry_size = namelen + IMM2_SIZE + 1; + if (namelen > MAX_NAME_SIZE) { - *errorcodeptr = ERR42; + *errorcodeptr = ERR48; goto FAILED; } - if (cd->names_found >= MAX_NAME_COUNT) - { - *errorcodeptr = ERR49; - goto FAILED; - } - if (namelen + 3 > cd->name_entry_size) - { - cd->name_entry_size = namelen + 3; - if (namelen > MAX_NAME_SIZE) - { - *errorcodeptr = ERR48; - goto FAILED; - } - } } - /* In the real compile, create the entry in the table */ + /* Scan the list to check for duplicates. For duplicate names, if the + number is the same, break the loop, which causes the name to be + discarded; otherwise, if DUPNAMES is not set, give an error. + If it is set, allow the name with a different number, but continue + scanning in case this is a duplicate with the same number. For + non-duplicate names, give an error if the number is duplicated. */ - else + ng = cd->named_groups; + for (i = 0; i < cd->names_found; i++, ng++) { - slot = cd->name_table; - for (i = 0; i < cd->names_found; i++) + if (namelen == ng->length && + STRNCMP_UC_UC(name, ng->name, namelen) == 0) { - int crc = memcmp(name, slot+2, namelen); - if (crc == 0) + if (ng->number == number) break; + if ((options & PCRE_DUPNAMES) == 0) { - if (slot[2+namelen] == 0) - { - if ((options & PCRE_DUPNAMES) == 0) - { - *errorcodeptr = ERR43; - goto FAILED; - } - } - else crc = -1; /* Current name is substring */ + *errorcodeptr = ERR43; + goto FAILED; } - if (crc < 0) + cd->dupnames = TRUE; /* Duplicate names exist */ + } + else if (ng->number == number) + { + *errorcodeptr = ERR65; + goto FAILED; + } + } + + if (i >= cd->names_found) /* Not a duplicate with same number */ + { + /* Increase the list size if necessary */ + + if (cd->names_found >= cd->named_group_list_size) + { + int newsize = cd->named_group_list_size * 2; + named_group *newspace = (PUBL(malloc)) + (newsize * sizeof(named_group)); + + if (newspace == NULL) { - memmove(slot + cd->name_entry_size, slot, - (cd->names_found - i) * cd->name_entry_size); - break; + *errorcodeptr = ERR21; + goto FAILED; } - slot += cd->name_entry_size; + + memcpy(newspace, cd->named_groups, + cd->named_group_list_size * sizeof(named_group)); + if (cd->named_group_list_size > NAMED_GROUP_LIST_SIZE) + (PUBL(free))((void *)cd->named_groups); + cd->named_groups = newspace; + cd->named_group_list_size = newsize; } - PUT2(slot, 0, cd->bracount + 1); - memcpy(slot + 2, name, namelen); - slot[2+namelen] = 0; + cd->named_groups[cd->names_found].name = name; + cd->named_groups[cd->names_found].length = namelen; + cd->named_groups[cd->names_found].number = number; + cd->names_found++; } } - /* In both cases, count the number of names we've encountered. */ - - ptr++; /* Move past > or ' */ - cd->names_found++; + ptr++; /* Move past > or ' in both passes. */ goto NUMBERED_GROUP; /* ------------------------------------------------------------ */ - case '&': /* Perl recursion/subroutine syntax */ - terminator = ')'; + case CHAR_AMPERSAND: /* Perl recursion/subroutine syntax */ + terminator = CHAR_RIGHT_PARENTHESIS; is_recurse = TRUE; /* Fall through */ @@ -4667,20 +7051,31 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ NAMED_REF_OR_RECURSE: name = ++ptr; - while ((cd->ctypes[*ptr] & ctype_word) != 0) ptr++; - namelen = ptr - name; + if (IS_DIGIT(*ptr)) + { + *errorcodeptr = ERR84; /* Group name must start with non-digit */ + goto FAILED; + } + while (MAX_255(*ptr) && (cd->ctypes[*ptr] & ctype_word) != 0) ptr++; + namelen = (int)(ptr - name); - /* In the pre-compile phase, do a syntax check and set a dummy - reference number. */ + /* In the pre-compile phase, do a syntax check. We used to just set + a dummy reference number, because it was not used in the first pass. + However, with the change of recursive back references to be atomic, + we have to look for the number so that this state can be identified, as + otherwise the incorrect length is computed. If it's not a backwards + reference, the dummy number will do. */ if (lengthptr != NULL) { + named_group *ng; + if (namelen == 0) { *errorcodeptr = ERR62; goto FAILED; } - if (*ptr != terminator) + if (*ptr != (pcre_uchar)terminator) { *errorcodeptr = ERR42; goto FAILED; @@ -4690,58 +7085,127 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ *errorcodeptr = ERR48; goto FAILED; } - recno = 0; + + /* The name table does not exist in the first pass; instead we must + scan the list of names encountered so far in order to get the + number. If the name is not found, set the value to 0 for a forward + reference. */ + + ng = cd->named_groups; + for (i = 0; i < cd->names_found; i++, ng++) + { + if (namelen == ng->length && + STRNCMP_UC_UC(name, ng->name, namelen) == 0) + break; + } + recno = (i < cd->names_found)? ng->number : 0; + + /* Count named back references. */ + + if (!is_recurse) cd->namedrefcount++; } - /* In the real compile, seek the name in the table. We check the name + /* In the real compile, search the name table. We check the name first, and then check that we have reached the end of the name in the - table. That way, if the name that is longer than any in the table, - the comparison will fail without reading beyond the table entry. */ + table. That way, if the name is longer than any in the table, the + comparison will fail without reading beyond the table entry. */ else { slot = cd->name_table; for (i = 0; i < cd->names_found; i++) { - if (strncmp((char *)name, (char *)slot+2, namelen) == 0 && - slot[2+namelen] == 0) + if (STRNCMP_UC_UC(name, slot+IMM2_SIZE, namelen) == 0 && + slot[IMM2_SIZE+namelen] == 0) break; slot += cd->name_entry_size; } - if (i < cd->names_found) /* Back reference */ + if (i < cd->names_found) { recno = GET2(slot, 0); } - else if ((recno = /* Forward back reference */ - find_parens(ptr, cd, name, namelen, - (options & PCRE_EXTENDED) != 0)) <= 0) + else { *errorcodeptr = ERR15; goto FAILED; } } - /* In both phases, we can now go to the code than handles numerical - recursion or backreferences. */ + /* In both phases, for recursions, we can now go to the code than + handles numerical recursion. */ if (is_recurse) goto HANDLE_RECURSION; - else goto HANDLE_REFERENCE; + + /* In the second pass we must see if the name is duplicated. If so, we + generate a different opcode. */ + + if (lengthptr == NULL && cd->dupnames) + { + int count = 1; + unsigned int index = i; + pcre_uchar *cslot = slot + cd->name_entry_size; + + for (i++; i < cd->names_found; i++) + { + if (STRCMP_UC_UC(slot + IMM2_SIZE, cslot + IMM2_SIZE) != 0) break; + count++; + cslot += cd->name_entry_size; + } + + if (count > 1) + { + if (firstcharflags == REQ_UNSET) firstcharflags = REQ_NONE; + previous = code; + *code++ = ((options & PCRE_CASELESS) != 0)? OP_DNREFI : OP_DNREF; + PUT2INC(code, 0, index); + PUT2INC(code, 0, count); + + /* Process each potentially referenced group. */ + + for (; slot < cslot; slot += cd->name_entry_size) + { + open_capitem *oc; + recno = GET2(slot, 0); + cd->backref_map |= (recno < 32)? (1 << recno) : 1; + if (recno > cd->top_backref) cd->top_backref = recno; + + /* Check to see if this back reference is recursive, that it, it + is inside the group that it references. A flag is set so that the + group can be made atomic. */ + + for (oc = cd->open_caps; oc != NULL; oc = oc->next) + { + if (oc->number == recno) + { + oc->flag = TRUE; + break; + } + } + } + + continue; /* End of back ref handling */ + } + } + + /* First pass, or a non-duplicated name. */ + + goto HANDLE_REFERENCE; /* ------------------------------------------------------------ */ - case 'R': /* Recursion */ + case CHAR_R: /* Recursion */ ptr++; /* Same as (?0) */ /* Fall through */ /* ------------------------------------------------------------ */ - case '-': case '+': - case '0': case '1': case '2': case '3': case '4': /* Recursion or */ - case '5': case '6': case '7': case '8': case '9': /* subroutine */ + case CHAR_MINUS: case CHAR_PLUS: /* Recursion or subroutine */ + case CHAR_0: case CHAR_1: case CHAR_2: case CHAR_3: case CHAR_4: + case CHAR_5: case CHAR_6: case CHAR_7: case CHAR_8: case CHAR_9: { - const uschar *called; - terminator = ')'; + const pcre_uchar *called; + terminator = CHAR_RIGHT_PARENTHESIS; /* Come here from the \g<...> and \g'...' code (Oniguruma compatibility). However, the syntax has been checked to ensure that @@ -4751,33 +7215,33 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ HANDLE_NUMERICAL_RECURSION: - if ((refsign = *ptr) == '+') + if ((refsign = *ptr) == CHAR_PLUS) { ptr++; - if ((digitab[*ptr] & ctype_digit) == 0) + if (!IS_DIGIT(*ptr)) { *errorcodeptr = ERR63; goto FAILED; } } - else if (refsign == '-') + else if (refsign == CHAR_MINUS) { - if ((digitab[ptr[1]] & ctype_digit) == 0) + if (!IS_DIGIT(ptr[1])) goto OTHER_CHAR_AFTER_QUERY; ptr++; } recno = 0; - while((digitab[*ptr] & ctype_digit) != 0) - recno = recno * 10 + *ptr++ - '0'; + while(IS_DIGIT(*ptr)) + recno = recno * 10 + *ptr++ - CHAR_0; - if (*ptr != terminator) + if (*ptr != (pcre_uchar)terminator) { *errorcodeptr = ERR29; goto FAILED; } - if (refsign == '-') + if (refsign == CHAR_MINUS) { if (recno == 0) { @@ -4791,7 +7255,7 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ goto FAILED; } } - else if (refsign == '+') + else if (refsign == CHAR_PLUS) { if (recno == 0) { @@ -4818,56 +7282,63 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ if (lengthptr == NULL) { *code = OP_END; - if (recno != 0) called = find_bracket(cd->start_code, utf8, recno); + if (recno != 0) + called = PRIV(find_bracket)(cd->start_code, utf, recno); /* Forward reference */ if (called == NULL) { - if (find_parens(ptr, cd, NULL, recno, - (options & PCRE_EXTENDED) != 0) < 0) + if (recno > cd->final_bracount) { *errorcodeptr = ERR15; goto FAILED; } + + /* Fudge the value of "called" so that when it is inserted as an + offset below, what it actually inserted is the reference number + of the group. Then remember the forward reference. */ + called = cd->start_code + recno; - PUTINC(cd->hwm, 0, code + 2 + LINK_SIZE - cd->start_code); + if (cd->hwm >= cd->start_workspace + cd->workspace_size - + WORK_SIZE_SAFETY_MARGIN) + { + *errorcodeptr = expand_workspace(cd); + if (*errorcodeptr != 0) goto FAILED; + } + PUTINC(cd->hwm, 0, (int)(code + 1 - cd->start_code)); } /* If not a forward reference, and the subpattern is still open, this is a recursive call. We check to see if this is a left - recursion that could loop for ever, and diagnose that case. */ + recursion that could loop for ever, and diagnose that case. We + must not, however, do this check if we are in a conditional + subpattern because the condition might be testing for recursion in + a pattern such as /(?(R)a+|(?R)b)/, which is perfectly valid. + Forever loops are also detected at runtime, so those that occur in + conditional subpatterns will be picked up then. */ - else if (GET(called, 1) == 0 && - could_be_empty(called, code, bcptr, utf8)) + else if (GET(called, 1) == 0 && cond_depth <= 0 && + could_be_empty(called, code, bcptr, utf, cd)) { *errorcodeptr = ERR40; goto FAILED; } } - /* Insert the recursion/subroutine item, automatically wrapped inside - "once" brackets. Set up a "previous group" length so that a - subsequent quantifier will work. */ - - *code = OP_ONCE; - PUT(code, 1, 2 + 2*LINK_SIZE); - code += 1 + LINK_SIZE; + /* Insert the recursion/subroutine item. It does not have a set first + character (relevant if it is repeated, because it will then be + wrapped with ONCE brackets). */ *code = OP_RECURSE; - PUT(code, 1, called - cd->start_code); + PUT(code, 1, (int)(called - cd->start_code)); code += 1 + LINK_SIZE; - - *code = OP_KET; - PUT(code, 1, 2 + 2*LINK_SIZE); - code += 1 + LINK_SIZE; - - length_prevgroup = 3 + 3*LINK_SIZE; + groupsetfirstchar = FALSE; } /* Can't determine a first byte now */ - if (firstbyte == REQ_UNSET) firstbyte = REQ_NONE; + if (firstcharflags == REQ_UNSET) firstcharflags = REQ_NONE; continue; @@ -4877,23 +7348,23 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ set = unset = 0; optset = &set; - while (*ptr != ')' && *ptr != ':') + while (*ptr != CHAR_RIGHT_PARENTHESIS && *ptr != CHAR_COLON) { switch (*ptr++) { - case '-': optset = &unset; break; + case CHAR_MINUS: optset = &unset; break; - case 'J': /* Record that it changed in the external options */ + case CHAR_J: /* Record that it changed in the external options */ *optset |= PCRE_DUPNAMES; cd->external_flags |= PCRE_JCHANGED; break; - case 'i': *optset |= PCRE_CASELESS; break; - case 'm': *optset |= PCRE_MULTILINE; break; - case 's': *optset |= PCRE_DOTALL; break; - case 'x': *optset |= PCRE_EXTENDED; break; - case 'U': *optset |= PCRE_UNGREEDY; break; - case 'X': *optset |= PCRE_EXTRA; break; + case CHAR_i: *optset |= PCRE_CASELESS; break; + case CHAR_m: *optset |= PCRE_MULTILINE; break; + case CHAR_s: *optset |= PCRE_DOTALL; break; + case CHAR_x: *optset |= PCRE_EXTENDED; break; + case CHAR_U: *optset |= PCRE_UNGREEDY; break; + case CHAR_X: *optset |= PCRE_EXTRA; break; default: *errorcodeptr = ERR12; ptr--; /* Correct the offset */ @@ -4923,33 +7394,25 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ is necessary to ensure we correctly detect the start of the pattern in both phases. - If we are not at the pattern start, compile code to change the ims - options if this setting actually changes any of them, and reset the - greedy defaults and the case value for firstbyte and reqbyte. */ + If we are not at the pattern start, reset the greedy defaults and the + case value for firstchar and reqchar. */ - if (*ptr == ')') + if (*ptr == CHAR_RIGHT_PARENTHESIS) { if (code == cd->start_code + 1 + LINK_SIZE && (lengthptr == NULL || *lengthptr == 2 + 2*LINK_SIZE)) { cd->external_options = newoptions; } - else + else { - if ((options & PCRE_IMS) != (newoptions & PCRE_IMS)) - { - *code++ = OP_OPT; - *code++ = newoptions & PCRE_IMS; - } greedy_default = ((newoptions & PCRE_UNGREEDY) != 0); greedy_non_default = greedy_default ^ 1; - req_caseopt = ((newoptions & PCRE_CASELESS) != 0)? REQ_CASELESS : 0; + req_caseopt = ((newoptions & PCRE_CASELESS) != 0)? REQ_CASELESS:0; } /* Change options at this level, and pass them back for use - in subsequent branches. When not at the start of the pattern, this - information is also necessary so that a resetting item can be - compiled at the end of a group (if we are in a group). */ + in subsequent branches. */ *optionsptr = options = newoptions; previous = NULL; /* This item can't be repeated */ @@ -4966,8 +7429,8 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ } /* End of switch for character following (? */ } /* End of (? handling */ - /* Opening parenthesis not followed by '?'. If PCRE_NO_AUTO_CAPTURE is set, - all unadorned brackets become non-capturing and behave like (?:...) + /* Opening parenthesis not followed by '*' or '?'. If PCRE_NO_AUTO_CAPTURE + is set, all unadorned brackets become non-capturing and behave like (?:...) brackets. */ else if ((options & PCRE_NO_AUTO_CAPTURE) != 0) @@ -4982,53 +7445,75 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ NUMBERED_GROUP: cd->bracount += 1; PUT2(code, 1+LINK_SIZE, cd->bracount); - skipbytes = 2; + skipbytes = IMM2_SIZE; } - /* Process nested bracketed regex. Assertions may not be repeated, but - other kinds can be. All their opcodes are >= OP_ONCE. We copy code into a - non-register variable in order to be able to pass its address because some - compilers complain otherwise. Pass in a new setting for the ims options if - they have changed. */ + /* Process nested bracketed regex. First check for parentheses nested too + deeply. */ - previous = (bravalue >= OP_ONCE)? code : NULL; + if ((cd->parens_depth += 1) > PARENS_NEST_LIMIT) + { + *errorcodeptr = ERR82; + goto FAILED; + } + + /* Assertions used not to be repeatable, but this was changed for Perl + compatibility, so all kinds can now be repeated. We copy code into a + non-register variable (tempcode) in order to be able to pass its address + because some compilers complain otherwise. */ + + previous = code; /* For handling repetition */ *code = bravalue; tempcode = code; - tempreqvary = cd->req_varyopt; /* Save value before bracket */ - length_prevgroup = 0; /* Initialize for pre-compile phase */ + tempreqvary = cd->req_varyopt; /* Save value before bracket */ + tempbracount = cd->bracount; /* Save value before bracket */ + length_prevgroup = 0; /* Initialize for pre-compile phase */ if (!compile_regex( - newoptions, /* The complete new option state */ - options & PCRE_IMS, /* The previous ims option state */ - &tempcode, /* Where to put code (updated) */ - &ptr, /* Input pointer (updated) */ - errorcodeptr, /* Where to put an error message */ + newoptions, /* The complete new option state */ + &tempcode, /* Where to put code (updated) */ + &ptr, /* Input pointer (updated) */ + errorcodeptr, /* Where to put an error message */ (bravalue == OP_ASSERTBACK || bravalue == OP_ASSERTBACK_NOT), /* TRUE if back assert */ - reset_bracount, /* True if (?| group */ - skipbytes, /* Skip over bracket number */ - &subfirstbyte, /* For possible first char */ - &subreqbyte, /* For possible last char */ - bcptr, /* Current branch chain */ - cd, /* Tables block */ - (lengthptr == NULL)? NULL : /* Actual compile phase */ - &length_prevgroup /* Pre-compile phase */ + reset_bracount, /* True if (?| group */ + skipbytes, /* Skip over bracket number */ + cond_depth + + ((bravalue == OP_COND)?1:0), /* Depth of condition subpatterns */ + &subfirstchar, /* For possible first char */ + &subfirstcharflags, + &subreqchar, /* For possible last char */ + &subreqcharflags, + bcptr, /* Current branch chain */ + cd, /* Tables block */ + (lengthptr == NULL)? NULL : /* Actual compile phase */ + &length_prevgroup /* Pre-compile phase */ )) goto FAILED; - /* At the end of compiling, code is still pointing to the start of the - group, while tempcode has been updated to point past the end of the group - and any option resetting that may follow it. The pattern pointer (ptr) - is on the bracket. */ + cd->parens_depth -= 1; - /* If this is a conditional bracket, check that there are no more than + /* If this was an atomic group and there are no capturing groups within it, + generate OP_ONCE_NC instead of OP_ONCE. */ + + if (bravalue == OP_ONCE && cd->bracount <= tempbracount) + *code = OP_ONCE_NC; + + if (bravalue >= OP_ASSERT && bravalue <= OP_ASSERTBACK_NOT) + cd->assert_depth -= 1; + + /* At the end of compiling, code is still pointing to the start of the + group, while tempcode has been updated to point past the end of the group. + The pattern pointer (ptr) is on the bracket. + + If this is a conditional bracket, check that there are no more than two branches in the group, or just one if it's a DEFINE group. We do this in the real compile phase, not in the pre-pass, where the whole group may not be available. */ if (bravalue == OP_COND && lengthptr == NULL) { - uschar *tc = code; + pcre_uchar *tc = code; int condcount = 0; do { @@ -5051,7 +7536,7 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ } /* A "normal" conditional group. If there is just one branch, we must not - make use of its firstbyte or reqbyte, because this is equivalent to an + make use of its firstchar or reqchar, because this is equivalent to an empty second branch. */ else @@ -5061,13 +7546,13 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ *errorcodeptr = ERR27; goto FAILED; } - if (condcount == 1) subfirstbyte = subreqbyte = REQ_NONE; + if (condcount == 1) subfirstcharflags = subreqcharflags = REQ_NONE; } } /* Error if hit end of pattern */ - if (*ptr != ')') + if (*ptr != CHAR_RIGHT_PARENTHESIS) { *errorcodeptr = ERR14; goto FAILED; @@ -5086,7 +7571,7 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ goto FAILED; } *lengthptr += length_prevgroup - 2 - 2*LINK_SIZE; - *code++ = OP_BRA; + code++; /* This already contains bravalue */ PUTINC(code, 0, 1 + LINK_SIZE); *code++ = OP_KET; PUTINC(code, 0, 1 + LINK_SIZE); @@ -5105,143 +7590,152 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ /* Handle updating of the required and first characters for other types of group. Update for normal brackets of all kinds, and conditions with two branches (see code above). If the bracket is followed by a quantifier with - zero repeat, we have to back off. Hence the definition of zeroreqbyte and - zerofirstbyte outside the main loop so that they can be accessed for the + zero repeat, we have to back off. Hence the definition of zeroreqchar and + zerofirstchar outside the main loop so that they can be accessed for the back off. */ - zeroreqbyte = reqbyte; - zerofirstbyte = firstbyte; - groupsetfirstbyte = FALSE; + zeroreqchar = reqchar; + zeroreqcharflags = reqcharflags; + zerofirstchar = firstchar; + zerofirstcharflags = firstcharflags; + groupsetfirstchar = FALSE; if (bravalue >= OP_ONCE) { - /* If we have not yet set a firstbyte in this branch, take it from the + /* If we have not yet set a firstchar in this branch, take it from the subpattern, remembering that it was set here so that a repeat of more - than one can replicate it as reqbyte if necessary. If the subpattern has - no firstbyte, set "none" for the whole branch. In both cases, a zero - repeat forces firstbyte to "none". */ + than one can replicate it as reqchar if necessary. If the subpattern has + no firstchar, set "none" for the whole branch. In both cases, a zero + repeat forces firstchar to "none". */ - if (firstbyte == REQ_UNSET) + if (firstcharflags == REQ_UNSET) { - if (subfirstbyte >= 0) + if (subfirstcharflags >= 0) { - firstbyte = subfirstbyte; - groupsetfirstbyte = TRUE; + firstchar = subfirstchar; + firstcharflags = subfirstcharflags; + groupsetfirstchar = TRUE; } - else firstbyte = REQ_NONE; - zerofirstbyte = REQ_NONE; + else firstcharflags = REQ_NONE; + zerofirstcharflags = REQ_NONE; } - /* If firstbyte was previously set, convert the subpattern's firstbyte - into reqbyte if there wasn't one, using the vary flag that was in + /* If firstchar was previously set, convert the subpattern's firstchar + into reqchar if there wasn't one, using the vary flag that was in existence beforehand. */ - else if (subfirstbyte >= 0 && subreqbyte < 0) - subreqbyte = subfirstbyte | tempreqvary; + else if (subfirstcharflags >= 0 && subreqcharflags < 0) + { + subreqchar = subfirstchar; + subreqcharflags = subfirstcharflags | tempreqvary; + } /* If the subpattern set a required byte (or set a first byte that isn't really the first byte - see above), set it. */ - if (subreqbyte >= 0) reqbyte = subreqbyte; + if (subreqcharflags >= 0) + { + reqchar = subreqchar; + reqcharflags = subreqcharflags; + } } - /* For a forward assertion, we take the reqbyte, if set. This can be + /* For a forward assertion, we take the reqchar, if set. This can be helpful if the pattern that follows the assertion doesn't set a different - char. For example, it's useful for /(?=abcde).+/. We can't set firstbyte + char. For example, it's useful for /(?=abcde).+/. We can't set firstchar for an assertion, however because it leads to incorrect effect for patterns - such as /(?=a)a.+/ when the "real" "a" would then become a reqbyte instead - of a firstbyte. This is overcome by a scan at the end if there's no - firstbyte, looking for an asserted first char. */ + such as /(?=a)a.+/ when the "real" "a" would then become a reqchar instead + of a firstchar. This is overcome by a scan at the end if there's no + firstchar, looking for an asserted first char. */ - else if (bravalue == OP_ASSERT && subreqbyte >= 0) reqbyte = subreqbyte; + else if (bravalue == OP_ASSERT && subreqcharflags >= 0) + { + reqchar = subreqchar; + reqcharflags = subreqcharflags; + } break; /* End of processing '(' */ /* ===================================================================*/ /* Handle metasequences introduced by \. For ones like \d, the ESC_ values - are arranged to be the negation of the corresponding OP_values. For the - back references, the values are ESC_REF plus the reference number. Only - back references and those types that consume a character may be repeated. - We can test for values between ESC_b and ESC_Z for the latter; this may - have to change if any new ones are ever created. */ + are arranged to be the negation of the corresponding OP_values in the + default case when PCRE_UCP is not set. For the back references, the values + are negative the reference number. Only back references and those types + that consume a character may be repeated. We can test for values between + ESC_b and ESC_Z for the latter; this may have to change if any new ones are + ever created. */ - case '\\': + case CHAR_BACKSLASH: tempptr = ptr; - c = check_escape(&ptr, errorcodeptr, cd->bracount, options, FALSE); + escape = check_escape(&ptr, &ec, errorcodeptr, cd->bracount, options, FALSE); if (*errorcodeptr != 0) goto FAILED; - if (c < 0) + if (escape == 0) /* The escape coded a single character */ + c = ec; + else { - if (-c == ESC_Q) /* Handle start of quoted string */ + if (escape == ESC_Q) /* Handle start of quoted string */ { - if (ptr[1] == '\\' && ptr[2] == 'E') ptr += 2; /* avoid empty string */ - else inescq = TRUE; + if (ptr[1] == CHAR_BACKSLASH && ptr[2] == CHAR_E) + ptr += 2; /* avoid empty string */ + else inescq = TRUE; continue; } - if (-c == ESC_E) continue; /* Perl ignores an orphan \E */ + if (escape == ESC_E) continue; /* Perl ignores an orphan \E */ /* For metasequences that actually match a character, we disable the setting of a first character if it hasn't already been set. */ - if (firstbyte == REQ_UNSET && -c > ESC_b && -c < ESC_Z) - firstbyte = REQ_NONE; + if (firstcharflags == REQ_UNSET && escape > ESC_b && escape < ESC_Z) + firstcharflags = REQ_NONE; /* Set values to reset to if this is followed by a zero repeat. */ - zerofirstbyte = firstbyte; - zeroreqbyte = reqbyte; + zerofirstchar = firstchar; + zerofirstcharflags = firstcharflags; + zeroreqchar = reqchar; + zeroreqcharflags = reqcharflags; /* \g or \g'name' is a subroutine call by name and \g or \g'n' is a subroutine call by number (Oniguruma syntax). In fact, the value - -ESC_g is returned only for these cases. So we don't need to check for < - or ' if the value is -ESC_g. For the Perl syntax \g{n} the value is - -ESC_REF+n, and for the Perl syntax \g{name} the result is -ESC_k (as + ESC_g is returned only for these cases. So we don't need to check for < + or ' if the value is ESC_g. For the Perl syntax \g{n} the value is + -n, and for the Perl syntax \g{name} the result is ESC_k (as that is a synonym for a named back reference). */ - if (-c == ESC_g) + if (escape == ESC_g) { - const uschar *p; + const pcre_uchar *p; + pcre_uint32 cf; + save_hwm = cd->hwm; /* Normally this is set when '(' is read */ - terminator = (*(++ptr) == '<')? '>' : '\''; + terminator = (*(++ptr) == CHAR_LESS_THAN_SIGN)? + CHAR_GREATER_THAN_SIGN : CHAR_APOSTROPHE; /* These two statements stop the compiler for warning about possibly unset variables caused by the jump to HANDLE_NUMERICAL_RECURSION. In - fact, because we actually check for a number below, the paths that + fact, because we do the check for a number below, the paths that would actually be in error are never taken. */ skipbytes = 0; reset_bracount = FALSE; - /* Test for a name */ + /* If it's not a signed or unsigned number, treat it as a name. */ - if (ptr[1] != '+' && ptr[1] != '-') + cf = ptr[1]; + if (cf != CHAR_PLUS && cf != CHAR_MINUS && !IS_DIGIT(cf)) { - BOOL isnumber = TRUE; - for (p = ptr + 1; *p != 0 && *p != terminator; p++) - { - if ((cd->ctypes[*p] & ctype_digit) == 0) isnumber = FALSE; - if ((cd->ctypes[*p] & ctype_word) == 0) break; - } - if (*p != terminator) - { - *errorcodeptr = ERR57; - break; - } - if (isnumber) - { - ptr++; - goto HANDLE_NUMERICAL_RECURSION; - } is_recurse = TRUE; goto NAMED_REF_OR_RECURSE; } - /* Test a signed number in angle brackets or quotes. */ + /* Signed or unsigned number (cf = ptr[1]) is known to be plus or minus + or a digit. */ p = ptr + 2; - while ((digitab[*p] & ctype_digit) != 0) p++; - if (*p != terminator) + while (IS_DIGIT(*p)) p++; + if (*p != (pcre_uchar)terminator) { *errorcodeptr = ERR57; break; @@ -5251,43 +7745,68 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ } /* \k or \k'name' is a back reference by name (Perl syntax). - We also support \k{name} (.NET syntax) */ + We also support \k{name} (.NET syntax). */ - if (-c == ESC_k && (ptr[1] == '<' || ptr[1] == '\'' || ptr[1] == '{')) + if (escape == ESC_k) { + if ((ptr[1] != CHAR_LESS_THAN_SIGN && + ptr[1] != CHAR_APOSTROPHE && ptr[1] != CHAR_LEFT_CURLY_BRACKET)) + { + *errorcodeptr = ERR69; + break; + } is_recurse = FALSE; - terminator = (*(++ptr) == '<')? '>' : (*ptr == '\'')? '\'' : '}'; + terminator = (*(++ptr) == CHAR_LESS_THAN_SIGN)? + CHAR_GREATER_THAN_SIGN : (*ptr == CHAR_APOSTROPHE)? + CHAR_APOSTROPHE : CHAR_RIGHT_CURLY_BRACKET; goto NAMED_REF_OR_RECURSE; } - /* Back references are handled specially; must disable firstbyte if + /* Back references are handled specially; must disable firstchar if not set to cope with cases like (?=(\w+))\1: which would otherwise set ':' later. */ - if (-c >= ESC_REF) + if (escape < 0) { - recno = -c - ESC_REF; + open_capitem *oc; + recno = -escape; - HANDLE_REFERENCE: /* Come here from named backref handling */ - if (firstbyte == REQ_UNSET) firstbyte = REQ_NONE; + /* Come here from named backref handling when the reference is to a + single group (i.e. not to a duplicated name. */ + + HANDLE_REFERENCE: + if (firstcharflags == REQ_UNSET) firstcharflags = REQ_NONE; previous = code; - *code++ = OP_REF; + *code++ = ((options & PCRE_CASELESS) != 0)? OP_REFI : OP_REF; PUT2INC(code, 0, recno); cd->backref_map |= (recno < 32)? (1 << recno) : 1; if (recno > cd->top_backref) cd->top_backref = recno; + + /* Check to see if this back reference is recursive, that it, it + is inside the group that it references. A flag is set so that the + group can be made atomic. */ + + for (oc = cd->open_caps; oc != NULL; oc = oc->next) + { + if (oc->number == recno) + { + oc->flag = TRUE; + break; + } + } } /* So are Unicode property matches, if supported. */ #ifdef SUPPORT_UCP - else if (-c == ESC_P || -c == ESC_p) + else if (escape == ESC_P || escape == ESC_p) { BOOL negated; - int pdata; - int ptype = get_ucp(&ptr, &negated, &pdata, errorcodeptr); - if (ptype < 0) goto FAILED; + unsigned int ptype = 0, pdata = 0; + if (!get_ucp(&ptr, &negated, &ptype, &pdata, errorcodeptr)) + goto FAILED; previous = code; - *code++ = ((-c == ESC_p) != negated)? OP_PROP : OP_NOTPROP; + *code++ = ((escape == ESC_p) != negated)? OP_PROP : OP_NOTPROP; *code++ = ptype; *code++ = pdata; } @@ -5296,7 +7815,7 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ /* If Unicode properties are not supported, \X, \P, and \p are not allowed. */ - else if (-c == ESC_X || -c == ESC_P || -c == ESC_p) + else if (escape == ESC_X || escape == ESC_P || escape == ESC_p) { *errorcodeptr = ERR45; goto FAILED; @@ -5304,12 +7823,31 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ #endif /* For the rest (including \X when Unicode properties are supported), we - can obtain the OP value by negating the escape value. */ + can obtain the OP value by negating the escape value in the default + situation when PCRE_UCP is not set. When it *is* set, we substitute + Unicode property tests. Note that \b and \B do a one-character + lookbehind, and \A also behaves as if it does. */ else { - previous = (-c > ESC_b && -c < ESC_Z)? code : NULL; - *code++ = -c; + if ((escape == ESC_b || escape == ESC_B || escape == ESC_A) && + cd->max_lookbehind == 0) + cd->max_lookbehind = 1; +#ifdef SUPPORT_UCP + if (escape >= ESC_DU && escape <= ESC_wu) + { + nestptr = ptr + 1; /* Where to resume */ + ptr = substitutes[escape - ESC_DU] - 1; /* Just before substitute */ + } + else +#endif + /* In non-UTF-8 mode, we turn \C into OP_ALLANY instead of OP_ANYBYTE + so that it works in DFA mode and in lookbehinds. */ + + { + previous = (escape > ESC_b && escape < ESC_Z)? code : NULL; + *code++ = (!utf && escape == ESC_C)? OP_ALLANY : escape; + } } continue; } @@ -5318,9 +7856,9 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ a value > 127. We set its representation in the length/buffer, and then handle it as a data character. */ -#ifdef SUPPORT_UTF8 - if (utf8 && c > 127) - mclength = _pcre_ord2utf8(c, mcbuffer); +#if defined SUPPORT_UTF && !defined COMPILE_PCRE32 + if (utf && c > MAX_VALUE_FOR_SINGLE_CHAR) + mclength = PRIV(ord2utf)(c, mcbuffer); else #endif @@ -5333,20 +7871,17 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ /* ===================================================================*/ /* Handle a literal character. It is guaranteed not to be whitespace or # - when the extended flag is set. If we are in UTF-8 mode, it may be a - multi-byte literal character. */ + when the extended flag is set. If we are in a UTF mode, it may be a + multi-unit literal character. */ default: NORMAL_CHAR: mclength = 1; mcbuffer[0] = c; -#ifdef SUPPORT_UTF8 - if (utf8 && c >= 0xc0) - { - while ((ptr[1] & 0xc0) == 0x80) - mcbuffer[mclength++] = *(++ptr); - } +#ifdef SUPPORT_UTF + if (utf && HAS_EXTRALEN(c)) + ACROSSCHAR(TRUE, ptr[1], mcbuffer[mclength++] = *(++ptr)); #endif /* At this point we have the character's bytes in mcbuffer, and the length @@ -5354,44 +7889,80 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ ONE_CHAR: previous = code; - *code++ = ((options & PCRE_CASELESS) != 0)? OP_CHARNC : OP_CHAR; + + /* For caseless UTF-8 mode when UCP support is available, check whether + this character has more than one other case. If so, generate a special + OP_PROP item instead of OP_CHARI. */ + +#ifdef SUPPORT_UCP + if (utf && (options & PCRE_CASELESS) != 0) + { + GETCHAR(c, mcbuffer); + if ((c = UCD_CASESET(c)) != 0) + { + *code++ = OP_PROP; + *code++ = PT_CLIST; + *code++ = c; + if (firstcharflags == REQ_UNSET) + firstcharflags = zerofirstcharflags = REQ_NONE; + break; + } + } +#endif + + /* Caseful matches, or not one of the multicase characters. */ + + *code++ = ((options & PCRE_CASELESS) != 0)? OP_CHARI : OP_CHAR; for (c = 0; c < mclength; c++) *code++ = mcbuffer[c]; /* Remember if \r or \n were seen */ - if (mcbuffer[0] == '\r' || mcbuffer[0] == '\n') + if (mcbuffer[0] == CHAR_CR || mcbuffer[0] == CHAR_NL) cd->external_flags |= PCRE_HASCRORLF; /* Set the first and required bytes appropriately. If no previous first byte, set it from this character, but revert to none on a zero repeat. - Otherwise, leave the firstbyte value alone, and don't change it on a zero + Otherwise, leave the firstchar value alone, and don't change it on a zero repeat. */ - if (firstbyte == REQ_UNSET) + if (firstcharflags == REQ_UNSET) { - zerofirstbyte = REQ_NONE; - zeroreqbyte = reqbyte; + zerofirstcharflags = REQ_NONE; + zeroreqchar = reqchar; + zeroreqcharflags = reqcharflags; - /* If the character is more than one byte long, we can set firstbyte + /* If the character is more than one byte long, we can set firstchar only if it is not to be matched caselessly. */ if (mclength == 1 || req_caseopt == 0) { - firstbyte = mcbuffer[0] | req_caseopt; - if (mclength != 1) reqbyte = code[-1] | cd->req_varyopt; + firstchar = mcbuffer[0] | req_caseopt; + firstchar = mcbuffer[0]; + firstcharflags = req_caseopt; + + if (mclength != 1) + { + reqchar = code[-1]; + reqcharflags = cd->req_varyopt; + } } - else firstbyte = reqbyte = REQ_NONE; + else firstcharflags = reqcharflags = REQ_NONE; } - /* firstbyte was previously set; we can set reqbyte only the length is + /* firstchar was previously set; we can set reqchar only if the length is 1 or the matching is caseful. */ else { - zerofirstbyte = firstbyte; - zeroreqbyte = reqbyte; + zerofirstchar = firstchar; + zerofirstcharflags = firstcharflags; + zeroreqchar = reqchar; + zeroreqcharflags = reqcharflags; if (mclength == 1 || req_caseopt == 0) - reqbyte = code[-1] | req_caseopt | cd->req_varyopt; + { + reqchar = code[-1]; + reqcharflags = req_caseopt | cd->req_varyopt; + } } break; /* End of literal character handling */ @@ -5410,7 +7981,6 @@ return FALSE; - /************************************************* * Compile sequence of alternatives * *************************************************/ @@ -5418,56 +7988,70 @@ return FALSE; /* On entry, ptr is pointing past the bracket character, but on return it points to the closing bracket, or vertical bar, or end of string. The code variable is pointing at the byte into which the BRA operator has been stored. -If the ims options are changed at the start (for a (?ims: group) or during any -branch, we need to insert an OP_OPT item at the start of every following branch -to ensure they get set correctly at run time, and also pass the new options -into every subsequent branch compile. - This function is used during the pre-compile phase when we are trying to find out the amount of memory needed, as well as during the real compile phase. The value of lengthptr distinguishes the two phases. Arguments: - options option bits, including any changes for this subpattern - oldims previous settings of ims option bits - codeptr -> the address of the current code pointer - ptrptr -> the address of the current pattern pointer - errorcodeptr -> pointer to error code variable - lookbehind TRUE if this is a lookbehind assertion - reset_bracount TRUE to reset the count for each branch - skipbytes skip this many bytes at start (for brackets and OP_COND) - firstbyteptr place to put the first required character, or a negative number - reqbyteptr place to put the last required character, or a negative number - bcptr pointer to the chain of currently open branches - cd points to the data block with tables pointers etc. - lengthptr NULL during the real compile phase - points to length accumulator during pre-compile phase + options option bits, including any changes for this subpattern + codeptr -> the address of the current code pointer + ptrptr -> the address of the current pattern pointer + errorcodeptr -> pointer to error code variable + lookbehind TRUE if this is a lookbehind assertion + reset_bracount TRUE to reset the count for each branch + skipbytes skip this many bytes at start (for brackets and OP_COND) + cond_depth depth of nesting for conditional subpatterns + firstcharptr place to put the first required character + firstcharflagsptr place to put the first character flags, or a negative number + reqcharptr place to put the last required character + reqcharflagsptr place to put the last required character flags, or a negative number + bcptr pointer to the chain of currently open branches + cd points to the data block with tables pointers etc. + lengthptr NULL during the real compile phase + points to length accumulator during pre-compile phase -Returns: TRUE on success +Returns: TRUE on success */ static BOOL -compile_regex(int options, int oldims, uschar **codeptr, const uschar **ptrptr, +compile_regex(int options, pcre_uchar **codeptr, const pcre_uchar **ptrptr, int *errorcodeptr, BOOL lookbehind, BOOL reset_bracount, int skipbytes, - int *firstbyteptr, int *reqbyteptr, branch_chain *bcptr, compile_data *cd, - int *lengthptr) + int cond_depth, + pcre_uint32 *firstcharptr, pcre_int32 *firstcharflagsptr, + pcre_uint32 *reqcharptr, pcre_int32 *reqcharflagsptr, + branch_chain *bcptr, compile_data *cd, int *lengthptr) { -const uschar *ptr = *ptrptr; -uschar *code = *codeptr; -uschar *last_branch = code; -uschar *start_bracket = code; -uschar *reverse_count = NULL; -int firstbyte, reqbyte; -int branchfirstbyte, branchreqbyte; +const pcre_uchar *ptr = *ptrptr; +pcre_uchar *code = *codeptr; +pcre_uchar *last_branch = code; +pcre_uchar *start_bracket = code; +pcre_uchar *reverse_count = NULL; +open_capitem capitem; +int capnumber = 0; +pcre_uint32 firstchar, reqchar; +pcre_int32 firstcharflags, reqcharflags; +pcre_uint32 branchfirstchar, branchreqchar; +pcre_int32 branchfirstcharflags, branchreqcharflags; int length; -int orig_bracount; -int max_bracount; +unsigned int orig_bracount; +unsigned int max_bracount; branch_chain bc; -bc.outer = bcptr; -bc.current = code; +/* If set, call the external function that checks for stack availability. */ -firstbyte = reqbyte = REQ_UNSET; +if (PUBL(stack_guard) != NULL && PUBL(stack_guard)()) + { + *errorcodeptr= ERR85; + return FALSE; + } + +/* Miscellaneous initialization */ + +bc.outer = bcptr; +bc.current_branch = code; + +firstchar = reqchar = 0; +firstcharflags = reqcharflags = REQ_UNSET; /* Accumulate the length for use in the pre-compile phase. Start with the length of the BRA and KET and any extra bytes that are required at the @@ -5483,6 +8067,21 @@ the code that abstracts option settings at the start of the pattern and makes them global. It tests the value of length for (2 + 2*LINK_SIZE) in the pre-compile phase to find out whether anything has yet been compiled or not. */ +/* If this is a capturing subpattern, add to the chain of open capturing items +so that we can detect them if (*ACCEPT) is encountered. This is also used to +detect groups that contain recursive back references to themselves. Note that +only OP_CBRA need be tested here; changing this opcode to one of its variants, +e.g. OP_SCBRAPOS, happens later, after the group has been compiled. */ + +if (*code == OP_CBRA) + { + capnumber = GET2(code, 1 + LINK_SIZE); + capitem.number = capnumber; + capitem.next = cd->open_caps; + capitem.flag = FALSE; + cd->open_caps = &capitem; + } + /* Offset is set zero to mark that this bracket is still open */ PUT(code, 1, 0); @@ -5498,15 +8097,6 @@ for (;;) if (reset_bracount) cd->bracount = orig_bracount; - /* Handle a change of ims options at the start of the branch */ - - if ((options & PCRE_IMS) != oldims) - { - *code++ = OP_OPT; - *code++ = options & PCRE_IMS; - length += 2; - } - /* Set up dummy OP_REVERSE if lookbehind assertion */ if (lookbehind) @@ -5520,8 +8110,9 @@ for (;;) /* Now compile the branch; in the pre-compile phase its length gets added into the length. */ - if (!compile_branch(&options, &code, &ptr, errorcodeptr, &branchfirstbyte, - &branchreqbyte, &bc, cd, (lengthptr == NULL)? NULL : &length)) + if (!compile_branch(&options, &code, &ptr, errorcodeptr, &branchfirstchar, + &branchfirstcharflags, &branchreqchar, &branchreqcharflags, &bc, + cond_depth, cd, (lengthptr == NULL)? NULL : &length)) { *ptrptr = ptr; return FALSE; @@ -5536,62 +8127,92 @@ for (;;) if (lengthptr == NULL) { - /* If this is the first branch, the firstbyte and reqbyte values for the + /* If this is the first branch, the firstchar and reqchar values for the branch become the values for the regex. */ if (*last_branch != OP_ALT) { - firstbyte = branchfirstbyte; - reqbyte = branchreqbyte; + firstchar = branchfirstchar; + firstcharflags = branchfirstcharflags; + reqchar = branchreqchar; + reqcharflags = branchreqcharflags; } - /* If this is not the first branch, the first char and reqbyte have to + /* If this is not the first branch, the first char and reqchar have to match the values from all the previous branches, except that if the - previous value for reqbyte didn't have REQ_VARY set, it can still match, + previous value for reqchar didn't have REQ_VARY set, it can still match, and we set REQ_VARY for the regex. */ else { - /* If we previously had a firstbyte, but it doesn't match the new branch, - we have to abandon the firstbyte for the regex, but if there was - previously no reqbyte, it takes on the value of the old firstbyte. */ + /* If we previously had a firstchar, but it doesn't match the new branch, + we have to abandon the firstchar for the regex, but if there was + previously no reqchar, it takes on the value of the old firstchar. */ - if (firstbyte >= 0 && firstbyte != branchfirstbyte) + if (firstcharflags >= 0 && + (firstcharflags != branchfirstcharflags || firstchar != branchfirstchar)) { - if (reqbyte < 0) reqbyte = firstbyte; - firstbyte = REQ_NONE; + if (reqcharflags < 0) + { + reqchar = firstchar; + reqcharflags = firstcharflags; + } + firstcharflags = REQ_NONE; } - /* If we (now or from before) have no firstbyte, a firstbyte from the - branch becomes a reqbyte if there isn't a branch reqbyte. */ + /* If we (now or from before) have no firstchar, a firstchar from the + branch becomes a reqchar if there isn't a branch reqchar. */ - if (firstbyte < 0 && branchfirstbyte >= 0 && branchreqbyte < 0) - branchreqbyte = branchfirstbyte; + if (firstcharflags < 0 && branchfirstcharflags >= 0 && branchreqcharflags < 0) + { + branchreqchar = branchfirstchar; + branchreqcharflags = branchfirstcharflags; + } - /* Now ensure that the reqbytes match */ + /* Now ensure that the reqchars match */ - if ((reqbyte & ~REQ_VARY) != (branchreqbyte & ~REQ_VARY)) - reqbyte = REQ_NONE; - else reqbyte |= branchreqbyte; /* To "or" REQ_VARY */ + if (((reqcharflags & ~REQ_VARY) != (branchreqcharflags & ~REQ_VARY)) || + reqchar != branchreqchar) + reqcharflags = REQ_NONE; + else + { + reqchar = branchreqchar; + reqcharflags |= branchreqcharflags; /* To "or" REQ_VARY */ + } } /* If lookbehind, check that this branch matches a fixed-length string, and put the length into the OP_REVERSE item. Temporarily mark the end of the - branch with OP_END. */ + branch with OP_END. If the branch contains OP_RECURSE, the result is -3 + because there may be forward references that we can't check here. Set a + flag to cause another lookbehind check at the end. Why not do it all at the + end? Because common, erroneous checks are picked up here and the offset of + the problem can be shown. */ if (lookbehind) { int fixed_length; *code = OP_END; - fixed_length = find_fixedlength(last_branch, options); + fixed_length = find_fixedlength(last_branch, (options & PCRE_UTF8) != 0, + FALSE, cd); DPRINTF(("fixed length = %d\n", fixed_length)); - if (fixed_length < 0) + if (fixed_length == -3) { - *errorcodeptr = (fixed_length == -2)? ERR36 : ERR25; + cd->check_lookbehind = TRUE; + } + else if (fixed_length < 0) + { + *errorcodeptr = (fixed_length == -2)? ERR36 : + (fixed_length == -4)? ERR70: ERR25; *ptrptr = ptr; return FALSE; } - PUT(reverse_count, 0, fixed_length); + else + { + if (fixed_length > cd->max_lookbehind) + cd->max_lookbehind = fixed_length; + PUT(reverse_count, 0, fixed_length); + } } } @@ -5600,15 +8221,13 @@ for (;;) of offsets, with the field in the BRA item now becoming an offset to the first alternative. If there are no alternatives, it points to the end of the group. The length in the terminating ket is always the length of the whole - bracketed item. If any of the ims options were changed inside the group, - compile a resetting op-code following, except at the very end of the pattern. - Return leaving the pointer at the terminating char. */ + bracketed item. Return leaving the pointer at the terminating char. */ - if (*ptr != '|') + if (*ptr != CHAR_VERTICAL_LINE) { if (lengthptr == NULL) { - int branch_length = code - last_branch; + int branch_length = (int)(code - last_branch); do { int prev_length = GET(last_branch, 1); @@ -5622,16 +8241,28 @@ for (;;) /* Fill in the ket */ *code = OP_KET; - PUT(code, 1, code - start_bracket); + PUT(code, 1, (int)(code - start_bracket)); code += 1 + LINK_SIZE; - /* Resetting option if needed */ + /* If it was a capturing subpattern, check to see if it contained any + recursive back references. If so, we must wrap it in atomic brackets. + In any event, remove the block from the chain. */ - if ((options & PCRE_IMS) != oldims && *ptr == ')') + if (capnumber > 0) { - *code++ = OP_OPT; - *code++ = oldims; - length += 2; + if (cd->open_caps->flag) + { + memmove(start_bracket + 1 + LINK_SIZE, start_bracket, + IN_UCHARS(code - start_bracket)); + *start_bracket = OP_ONCE; + code += 1 + LINK_SIZE; + PUT(start_bracket, 1, (int)(code - start_bracket)); + *code = OP_KET; + PUT(code, 1, (int)(code - start_bracket)); + code += 1 + LINK_SIZE; + length += 2 + 2*LINK_SIZE; + } + cd->open_caps = cd->open_caps->next; } /* Retain the highest bracket number, in case resetting was used. */ @@ -5642,8 +8273,10 @@ for (;;) *codeptr = code; *ptrptr = ptr; - *firstbyteptr = firstbyte; - *reqbyteptr = reqbyte; + *firstcharptr = firstchar; + *firstcharflagsptr = firstcharflags; + *reqcharptr = reqchar; + *reqcharflagsptr = reqcharflags; if (lengthptr != NULL) { if (OFLOW_MAX - *lengthptr < length) @@ -5673,8 +8306,8 @@ for (;;) else { *code = OP_ALT; - PUT(code, 1, code - last_branch); - bc.current = last_branch = code; + PUT(code, 1, (int)(code - last_branch)); + bc.current_branch = last_branch = code; code += 1 + LINK_SIZE; } @@ -5693,8 +8326,8 @@ for (;;) /* Try to find out if this is an anchored regular expression. Consider each alternative branch. If they all start with OP_SOD or OP_CIRC, or with a bracket all of whose alternatives start with OP_SOD or OP_CIRC (recurse ad lib), then -it's anchored. However, if this is a multiline pattern, then only OP_SOD -counts, since OP_CIRC can match in the middle. +it's anchored. However, if this is a multiline pattern, then only OP_SOD will +be found, because ^ generates OP_CIRCM in that mode. We can also consider a regex to be anchored if OP_SOM starts all its branches. This is the code for \G, which means "match at start of match position, taking @@ -5713,64 +8346,78 @@ and the highest back reference was greater than or equal to that level. However, by keeping a bitmap of the first 31 back references, we can catch some of the more common cases more precisely. +... A second exception is when the .* appears inside an atomic group, because +this prevents the number of characters it matches from being adjusted. + Arguments: code points to start of expression (the bracket) - options points to the options setting bracket_map a bitmap of which brackets we are inside while testing; this handles up to substring 31; after that we just have to take the less precise approach - backref_map the back reference bitmap + cd points to the compile data block + atomcount atomic group level Returns: TRUE or FALSE */ static BOOL -is_anchored(register const uschar *code, int *options, unsigned int bracket_map, - unsigned int backref_map) +is_anchored(register const pcre_uchar *code, unsigned int bracket_map, + compile_data *cd, int atomcount) { do { - const uschar *scode = first_significant_code(code + _pcre_OP_lengths[*code], - options, PCRE_MULTILINE, FALSE); + const pcre_uchar *scode = first_significant_code( + code + PRIV(OP_lengths)[*code], FALSE); register int op = *scode; /* Non-capturing brackets */ - if (op == OP_BRA) + if (op == OP_BRA || op == OP_BRAPOS || + op == OP_SBRA || op == OP_SBRAPOS) { - if (!is_anchored(scode, options, bracket_map, backref_map)) return FALSE; + if (!is_anchored(scode, bracket_map, cd, atomcount)) return FALSE; } /* Capturing brackets */ - else if (op == OP_CBRA) + else if (op == OP_CBRA || op == OP_CBRAPOS || + op == OP_SCBRA || op == OP_SCBRAPOS) { int n = GET2(scode, 1+LINK_SIZE); int new_map = bracket_map | ((n < 32)? (1 << n) : 1); - if (!is_anchored(scode, options, new_map, backref_map)) return FALSE; + if (!is_anchored(scode, new_map, cd, atomcount)) return FALSE; } - /* Other brackets */ + /* Positive forward assertions and conditions */ - else if (op == OP_ASSERT || op == OP_ONCE || op == OP_COND) + else if (op == OP_ASSERT || op == OP_COND) { - if (!is_anchored(scode, options, bracket_map, backref_map)) return FALSE; + if (!is_anchored(scode, bracket_map, cd, atomcount)) return FALSE; + } + + /* Atomic groups */ + + else if (op == OP_ONCE || op == OP_ONCE_NC) + { + if (!is_anchored(scode, bracket_map, cd, atomcount + 1)) + return FALSE; } /* .* is not anchored unless DOTALL is set (which generates OP_ALLANY) and - it isn't in brackets that are or may be referenced. */ + it isn't in brackets that are or may be referenced or inside an atomic + group. */ else if ((op == OP_TYPESTAR || op == OP_TYPEMINSTAR || op == OP_TYPEPOSSTAR)) { - if (scode[1] != OP_ALLANY || (bracket_map & backref_map) != 0) + if (scode[1] != OP_ALLANY || (bracket_map & cd->backref_map) != 0 || + atomcount > 0 || cd->had_pruneorskip) return FALSE; } /* Check for explicit anchoring */ - else if (op != OP_SOD && op != OP_SOM && - ((*options & PCRE_MULTILINE) != 0 || op != OP_CIRC)) - return FALSE; + else if (op != OP_SOD && op != OP_SOM && op != OP_CIRC) return FALSE; + code += GET(code, 1); } while (*code == OP_ALT); /* Loop for each alternative */ @@ -5788,59 +8435,109 @@ return TRUE; matching and for non-DOTALL patterns that start with .* (which must start at the beginning or after \n). As in the case of is_anchored() (see above), we have to take account of back references to capturing brackets that contain .* -because in that case we can't make the assumption. +because in that case we can't make the assumption. Also, the appearance of .* +inside atomic brackets or in a pattern that contains *PRUNE or *SKIP does not +count, because once again the assumption no longer holds. Arguments: code points to start of expression (the bracket) bracket_map a bitmap of which brackets we are inside while testing; this handles up to substring 31; after that we just have to take the less precise approach - backref_map the back reference bitmap + cd points to the compile data + atomcount atomic group level Returns: TRUE or FALSE */ static BOOL -is_startline(const uschar *code, unsigned int bracket_map, - unsigned int backref_map) +is_startline(const pcre_uchar *code, unsigned int bracket_map, + compile_data *cd, int atomcount) { do { - const uschar *scode = first_significant_code(code + _pcre_OP_lengths[*code], - NULL, 0, FALSE); + const pcre_uchar *scode = first_significant_code( + code + PRIV(OP_lengths)[*code], FALSE); register int op = *scode; + /* If we are at the start of a conditional assertion group, *both* the + conditional assertion *and* what follows the condition must satisfy the test + for start of line. Other kinds of condition fail. Note that there may be an + auto-callout at the start of a condition. */ + + if (op == OP_COND) + { + scode += 1 + LINK_SIZE; + if (*scode == OP_CALLOUT) scode += PRIV(OP_lengths)[OP_CALLOUT]; + switch (*scode) + { + case OP_CREF: + case OP_DNCREF: + case OP_RREF: + case OP_DNRREF: + case OP_DEF: + return FALSE; + + default: /* Assertion */ + if (!is_startline(scode, bracket_map, cd, atomcount)) return FALSE; + do scode += GET(scode, 1); while (*scode == OP_ALT); + scode += 1 + LINK_SIZE; + break; + } + scode = first_significant_code(scode, FALSE); + op = *scode; + } + /* Non-capturing brackets */ - if (op == OP_BRA) + if (op == OP_BRA || op == OP_BRAPOS || + op == OP_SBRA || op == OP_SBRAPOS) { - if (!is_startline(scode, bracket_map, backref_map)) return FALSE; + if (!is_startline(scode, bracket_map, cd, atomcount)) return FALSE; } /* Capturing brackets */ - else if (op == OP_CBRA) + else if (op == OP_CBRA || op == OP_CBRAPOS || + op == OP_SCBRA || op == OP_SCBRAPOS) { int n = GET2(scode, 1+LINK_SIZE); int new_map = bracket_map | ((n < 32)? (1 << n) : 1); - if (!is_startline(scode, new_map, backref_map)) return FALSE; + if (!is_startline(scode, new_map, cd, atomcount)) return FALSE; } - /* Other brackets */ + /* Positive forward assertions */ - else if (op == OP_ASSERT || op == OP_ONCE || op == OP_COND) - { if (!is_startline(scode, bracket_map, backref_map)) return FALSE; } + else if (op == OP_ASSERT) + { + if (!is_startline(scode, bracket_map, cd, atomcount)) return FALSE; + } - /* .* means "start at start or after \n" if it isn't in brackets that - may be referenced. */ + /* Atomic brackets */ + + else if (op == OP_ONCE || op == OP_ONCE_NC) + { + if (!is_startline(scode, bracket_map, cd, atomcount + 1)) return FALSE; + } + + /* .* means "start at start or after \n" if it isn't in atomic brackets or + brackets that may be referenced, as long as the pattern does not contain + *PRUNE or *SKIP, because these break the feature. Consider, for example, + /.*?a(*PRUNE)b/ with the subject "aab", which matches "ab", i.e. not at the + start of a line. */ else if (op == OP_TYPESTAR || op == OP_TYPEMINSTAR || op == OP_TYPEPOSSTAR) { - if (scode[1] != OP_ANY || (bracket_map & backref_map) != 0) return FALSE; + if (scode[1] != OP_ANY || (bracket_map & cd->backref_map) != 0 || + atomcount > 0 || cd->had_pruneorskip) + return FALSE; } - /* Check for explicit circumflex */ + /* Check for explicit circumflex; anything else gives a FALSE result. Note + in particular that this includes atomic brackets OP_ONCE and OP_ONCE_NC + because the number of characters matched by .* cannot be adjusted inside + them. */ - else if (op != OP_CIRC) return FALSE; + else if (op != OP_CIRC && op != OP_CIRCM) return FALSE; /* Move on to the next alternative */ @@ -5860,69 +8557,148 @@ return TRUE; discarded, because they can cause conflicts with actual literals that follow. However, if we end up without a first char setting for an unanchored pattern, it is worth scanning the regex to see if there is an initial asserted first -char. If all branches start with the same asserted char, or with a bracket all -of whose alternatives start with the same asserted char (recurse ad lib), then -we return that char, otherwise -1. +char. If all branches start with the same asserted char, or with a +non-conditional bracket all of whose alternatives start with the same asserted +char (recurse ad lib), then we return that char, with the flags set to zero or +REQ_CASELESS; otherwise return zero with REQ_NONE in the flags. Arguments: code points to start of expression (the bracket) - options pointer to the options (used to check casing changes) + flags points to the first char flags, or to REQ_NONE inassert TRUE if in an assertion -Returns: -1 or the fixed first char +Returns: the fixed first char, or 0 with REQ_NONE in flags */ -static int -find_firstassertedchar(const uschar *code, int *options, BOOL inassert) +static pcre_uint32 +find_firstassertedchar(const pcre_uchar *code, pcre_int32 *flags, + BOOL inassert) { -register int c = -1; +register pcre_uint32 c = 0; +int cflags = REQ_NONE; + +*flags = REQ_NONE; do { - int d; - const uschar *scode = - first_significant_code(code + 1+LINK_SIZE, options, PCRE_CASELESS, TRUE); - register int op = *scode; + pcre_uint32 d; + int dflags; + int xl = (*code == OP_CBRA || *code == OP_SCBRA || + *code == OP_CBRAPOS || *code == OP_SCBRAPOS)? IMM2_SIZE:0; + const pcre_uchar *scode = first_significant_code(code + 1+LINK_SIZE + xl, + TRUE); + register pcre_uchar op = *scode; switch(op) { default: - return -1; + return 0; case OP_BRA: + case OP_BRAPOS: case OP_CBRA: + case OP_SCBRA: + case OP_CBRAPOS: + case OP_SCBRAPOS: case OP_ASSERT: case OP_ONCE: - case OP_COND: - if ((d = find_firstassertedchar(scode, options, op == OP_ASSERT)) < 0) - return -1; - if (c < 0) c = d; else if (c != d) return -1; + case OP_ONCE_NC: + d = find_firstassertedchar(scode, &dflags, op == OP_ASSERT); + if (dflags < 0) + return 0; + if (cflags < 0) { c = d; cflags = dflags; } else if (c != d || cflags != dflags) return 0; break; - case OP_EXACT: /* Fall through */ - scode += 2; + case OP_EXACT: + scode += IMM2_SIZE; + /* Fall through */ case OP_CHAR: - case OP_CHARNC: case OP_PLUS: case OP_MINPLUS: case OP_POSPLUS: - if (!inassert) return -1; - if (c < 0) - { - c = scode[1]; - if ((*options & PCRE_CASELESS) != 0) c |= REQ_CASELESS; - } - else if (c != scode[1]) return -1; + if (!inassert) return 0; + if (cflags < 0) { c = scode[1]; cflags = 0; } + else if (c != scode[1]) return 0; + break; + + case OP_EXACTI: + scode += IMM2_SIZE; + /* Fall through */ + + case OP_CHARI: + case OP_PLUSI: + case OP_MINPLUSI: + case OP_POSPLUSI: + if (!inassert) return 0; + if (cflags < 0) { c = scode[1]; cflags = REQ_CASELESS; } + else if (c != scode[1]) return 0; break; } code += GET(code, 1); } while (*code == OP_ALT); + +*flags = cflags; return c; } +/************************************************* +* Add an entry to the name/number table * +*************************************************/ + +/* This function is called between compiling passes to add an entry to the +name/number table, maintaining alphabetical order. Checking for permitted +and forbidden duplicates has already been done. + +Arguments: + cd the compile data block + name the name to add + length the length of the name + groupno the group number + +Returns: nothing +*/ + +static void +add_name(compile_data *cd, const pcre_uchar *name, int length, + unsigned int groupno) +{ +int i; +pcre_uchar *slot = cd->name_table; + +for (i = 0; i < cd->names_found; i++) + { + int crc = memcmp(name, slot+IMM2_SIZE, IN_UCHARS(length)); + if (crc == 0 && slot[IMM2_SIZE+length] != 0) + crc = -1; /* Current name is a substring */ + + /* Make space in the table and break the loop for an earlier name. For a + duplicate or later name, carry on. We do this for duplicates so that in the + simple case (when ?(| is not used) they are in order of their numbers. In all + cases they are in the order in which they appear in the pattern. */ + + if (crc < 0) + { + memmove(slot + cd->name_entry_size, slot, + IN_UCHARS((cd->names_found - i) * cd->name_entry_size)); + break; + } + + /* Continue the loop for a later or duplicate name */ + + slot += cd->name_entry_size; + } + +PUT2(slot, 0, groupno); +memcpy(slot + IMM2_SIZE, name, IN_UCHARS(length)); +slot[IMM2_SIZE + length] = 0; +cd->names_found++; +} + + + /************************************************* * Compile a Regular Expression * *************************************************/ @@ -5945,30 +8721,59 @@ Returns: pointer to compiled data block, or NULL on error, with errorptr and erroroffset set */ +#if defined COMPILE_PCRE8 PCRE_EXP_DEFN pcre * PCRE_CALL_CONVENTION pcre_compile(const char *pattern, int options, const char **errorptr, int *erroroffset, const unsigned char *tables) +#elif defined COMPILE_PCRE16 +PCRE_EXP_DEFN pcre16 * PCRE_CALL_CONVENTION +pcre16_compile(PCRE_SPTR16 pattern, int options, const char **errorptr, + int *erroroffset, const unsigned char *tables) +#elif defined COMPILE_PCRE32 +PCRE_EXP_DEFN pcre32 * PCRE_CALL_CONVENTION +pcre32_compile(PCRE_SPTR32 pattern, int options, const char **errorptr, + int *erroroffset, const unsigned char *tables) +#endif { +#if defined COMPILE_PCRE8 return pcre_compile2(pattern, options, NULL, errorptr, erroroffset, tables); +#elif defined COMPILE_PCRE16 +return pcre16_compile2(pattern, options, NULL, errorptr, erroroffset, tables); +#elif defined COMPILE_PCRE32 +return pcre32_compile2(pattern, options, NULL, errorptr, erroroffset, tables); +#endif } +#if defined COMPILE_PCRE8 PCRE_EXP_DEFN pcre * PCRE_CALL_CONVENTION pcre_compile2(const char *pattern, int options, int *errorcodeptr, const char **errorptr, int *erroroffset, const unsigned char *tables) +#elif defined COMPILE_PCRE16 +PCRE_EXP_DEFN pcre16 * PCRE_CALL_CONVENTION +pcre16_compile2(PCRE_SPTR16 pattern, int options, int *errorcodeptr, + const char **errorptr, int *erroroffset, const unsigned char *tables) +#elif defined COMPILE_PCRE32 +PCRE_EXP_DEFN pcre32 * PCRE_CALL_CONVENTION +pcre32_compile2(PCRE_SPTR32 pattern, int options, int *errorcodeptr, + const char **errorptr, int *erroroffset, const unsigned char *tables) +#endif { -real_pcre *re; +REAL_PCRE *re; int length = 1; /* For final END opcode */ -int firstbyte, reqbyte, newline; +pcre_int32 firstcharflags, reqcharflags; +pcre_uint32 firstchar, reqchar; +pcre_uint32 limit_match = PCRE_UINT32_MAX; +pcre_uint32 limit_recursion = PCRE_UINT32_MAX; +int newline; int errorcode = 0; int skipatstart = 0; -#ifdef SUPPORT_UTF8 -BOOL utf8; -#endif +BOOL utf; +BOOL never_utf = FALSE; size_t size; -uschar *code; -const uschar *codestart; -const uschar *ptr; +pcre_uchar *code; +const pcre_uchar *codestart; +const pcre_uchar *ptr; compile_data compile_block; compile_data *cd = &compile_block; @@ -5976,13 +8781,19 @@ compile_data *cd = &compile_block; computing the amount of memory that is needed. Compiled items are thrown away as soon as possible, so that a fairly large buffer should be sufficient for this purpose. The same space is used in the second phase for remembering where -to fill in forward references to subpatterns. */ +to fill in forward references to subpatterns. That may overflow, in which case +new memory is obtained from malloc(). */ -uschar cworkspace[COMPILE_WORK_SIZE]; +pcre_uchar cworkspace[COMPILE_WORK_SIZE]; + +/* This vector is used for remembering name groups during the pre-compile. In a +similar way to cworkspace, it can be expanded using malloc() if necessary. */ + +named_group named_groups[NAMED_GROUP_LIST_SIZE]; /* Set this early so that early errors get offset 0. */ -ptr = (const uschar *)pattern; +ptr = (const pcre_uchar *)pattern; /* We can't pass back an error message if errorptr is NULL; I guess the best we can do is just return NULL, but we can set a code value if there is a code @@ -6007,60 +8818,115 @@ if (erroroffset == NULL) *erroroffset = 0; -/* Can't support UTF8 unless PCRE has been compiled to include the code. */ - -#ifdef SUPPORT_UTF8 -utf8 = (options & PCRE_UTF8) != 0; -if (utf8 && (options & PCRE_NO_UTF8_CHECK) == 0 && - (*erroroffset = _pcre_valid_utf8((uschar *)pattern, -1)) >= 0) - { - errorcode = ERR44; - goto PCRE_EARLY_ERROR_RETURN2; - } -#else -if ((options & PCRE_UTF8) != 0) - { - errorcode = ERR32; - goto PCRE_EARLY_ERROR_RETURN; - } -#endif - -if ((options & ~PUBLIC_OPTIONS) != 0) - { - errorcode = ERR17; - goto PCRE_EARLY_ERROR_RETURN; - } - /* Set up pointers to the individual character tables */ -if (tables == NULL) tables = _pcre_default_tables; +if (tables == NULL) tables = PRIV(default_tables); cd->lcc = tables + lcc_offset; cd->fcc = tables + fcc_offset; cd->cbits = tables + cbits_offset; cd->ctypes = tables + ctypes_offset; +/* Check that all undefined public option bits are zero */ + +if ((options & ~PUBLIC_COMPILE_OPTIONS) != 0) + { + errorcode = ERR17; + goto PCRE_EARLY_ERROR_RETURN; + } + +/* If PCRE_NEVER_UTF is set, remember it. */ + +if ((options & PCRE_NEVER_UTF) != 0) never_utf = TRUE; + /* Check for global one-time settings at the start of the pattern, and remember the offset for later. */ -while (ptr[skipatstart] == '(' && ptr[skipatstart+1] == '*') +cd->external_flags = 0; /* Initialize here for LIMIT_MATCH/RECURSION */ + +while (ptr[skipatstart] == CHAR_LEFT_PARENTHESIS && + ptr[skipatstart+1] == CHAR_ASTERISK) { int newnl = 0; int newbsr = 0; - if (strncmp((char *)(ptr+skipatstart+2), "CR)", 3) == 0) +/* For completeness and backward compatibility, (*UTFn) is supported in the +relevant libraries, but (*UTF) is generic and always supported. Note that +PCRE_UTF8 == PCRE_UTF16 == PCRE_UTF32. */ + +#ifdef COMPILE_PCRE8 + if (STRNCMP_UC_C8(ptr+skipatstart+2, STRING_UTF8_RIGHTPAR, 5) == 0) + { skipatstart += 7; options |= PCRE_UTF8; continue; } +#endif +#ifdef COMPILE_PCRE16 + if (STRNCMP_UC_C8(ptr+skipatstart+2, STRING_UTF16_RIGHTPAR, 6) == 0) + { skipatstart += 8; options |= PCRE_UTF16; continue; } +#endif +#ifdef COMPILE_PCRE32 + if (STRNCMP_UC_C8(ptr+skipatstart+2, STRING_UTF32_RIGHTPAR, 6) == 0) + { skipatstart += 8; options |= PCRE_UTF32; continue; } +#endif + + else if (STRNCMP_UC_C8(ptr+skipatstart+2, STRING_UTF_RIGHTPAR, 4) == 0) + { skipatstart += 6; options |= PCRE_UTF8; continue; } + else if (STRNCMP_UC_C8(ptr+skipatstart+2, STRING_UCP_RIGHTPAR, 4) == 0) + { skipatstart += 6; options |= PCRE_UCP; continue; } + else if (STRNCMP_UC_C8(ptr+skipatstart+2, STRING_NO_AUTO_POSSESS_RIGHTPAR, 16) == 0) + { skipatstart += 18; options |= PCRE_NO_AUTO_POSSESS; continue; } + else if (STRNCMP_UC_C8(ptr+skipatstart+2, STRING_NO_START_OPT_RIGHTPAR, 13) == 0) + { skipatstart += 15; options |= PCRE_NO_START_OPTIMIZE; continue; } + + else if (STRNCMP_UC_C8(ptr+skipatstart+2, STRING_LIMIT_MATCH_EQ, 12) == 0) + { + pcre_uint32 c = 0; + int p = skipatstart + 14; + while (isdigit(ptr[p])) + { + if (c > PCRE_UINT32_MAX / 10 - 1) break; /* Integer overflow */ + c = c*10 + ptr[p++] - CHAR_0; + } + if (ptr[p++] != CHAR_RIGHT_PARENTHESIS) break; + if (c < limit_match) + { + limit_match = c; + cd->external_flags |= PCRE_MLSET; + } + skipatstart = p; + continue; + } + + else if (STRNCMP_UC_C8(ptr+skipatstart+2, STRING_LIMIT_RECURSION_EQ, 16) == 0) + { + pcre_uint32 c = 0; + int p = skipatstart + 18; + while (isdigit(ptr[p])) + { + if (c > PCRE_UINT32_MAX / 10 - 1) break; /* Integer overflow check */ + c = c*10 + ptr[p++] - CHAR_0; + } + if (ptr[p++] != CHAR_RIGHT_PARENTHESIS) break; + if (c < limit_recursion) + { + limit_recursion = c; + cd->external_flags |= PCRE_RLSET; + } + skipatstart = p; + continue; + } + + if (STRNCMP_UC_C8(ptr+skipatstart+2, STRING_CR_RIGHTPAR, 3) == 0) { skipatstart += 5; newnl = PCRE_NEWLINE_CR; } - else if (strncmp((char *)(ptr+skipatstart+2), "LF)", 3) == 0) + else if (STRNCMP_UC_C8(ptr+skipatstart+2, STRING_LF_RIGHTPAR, 3) == 0) { skipatstart += 5; newnl = PCRE_NEWLINE_LF; } - else if (strncmp((char *)(ptr+skipatstart+2), "CRLF)", 5) == 0) + else if (STRNCMP_UC_C8(ptr+skipatstart+2, STRING_CRLF_RIGHTPAR, 5) == 0) { skipatstart += 7; newnl = PCRE_NEWLINE_CR + PCRE_NEWLINE_LF; } - else if (strncmp((char *)(ptr+skipatstart+2), "ANY)", 4) == 0) + else if (STRNCMP_UC_C8(ptr+skipatstart+2, STRING_ANY_RIGHTPAR, 4) == 0) { skipatstart += 6; newnl = PCRE_NEWLINE_ANY; } - else if (strncmp((char *)(ptr+skipatstart+2), "ANYCRLF)", 8) == 0) + else if (STRNCMP_UC_C8(ptr+skipatstart+2, STRING_ANYCRLF_RIGHTPAR, 8) == 0) { skipatstart += 10; newnl = PCRE_NEWLINE_ANYCRLF; } - else if (strncmp((char *)(ptr+skipatstart+2), "BSR_ANYCRLF)", 12) == 0) + else if (STRNCMP_UC_C8(ptr+skipatstart+2, STRING_BSR_ANYCRLF_RIGHTPAR, 12) == 0) { skipatstart += 14; newbsr = PCRE_BSR_ANYCRLF; } - else if (strncmp((char *)(ptr+skipatstart+2), "BSR_UNICODE)", 12) == 0) + else if (STRNCMP_UC_C8(ptr+skipatstart+2, STRING_BSR_UNICODE_RIGHTPAR, 12) == 0) { skipatstart += 14; newbsr = PCRE_BSR_UNICODE; } if (newnl != 0) @@ -6070,15 +8936,57 @@ while (ptr[skipatstart] == '(' && ptr[skipatstart+1] == '*') else break; } +/* PCRE_UTF(16|32) have the same value as PCRE_UTF8. */ +utf = (options & PCRE_UTF8) != 0; +if (utf && never_utf) + { + errorcode = ERR78; + goto PCRE_EARLY_ERROR_RETURN2; + } + +/* Can't support UTF unless PCRE has been compiled to include the code. The +return of an error code from PRIV(valid_utf)() is a new feature, introduced in +release 8.13. It is passed back from pcre_[dfa_]exec(), but at the moment is +not used here. */ + +#ifdef SUPPORT_UTF +if (utf && (options & PCRE_NO_UTF8_CHECK) == 0 && + (errorcode = PRIV(valid_utf)((PCRE_PUCHAR)pattern, -1, erroroffset)) != 0) + { +#if defined COMPILE_PCRE8 + errorcode = ERR44; +#elif defined COMPILE_PCRE16 + errorcode = ERR74; +#elif defined COMPILE_PCRE32 + errorcode = ERR77; +#endif + goto PCRE_EARLY_ERROR_RETURN2; + } +#else +if (utf) + { + errorcode = ERR32; + goto PCRE_EARLY_ERROR_RETURN; + } +#endif + +/* Can't support UCP unless PCRE has been compiled to include the code. */ + +#ifndef SUPPORT_UCP +if ((options & PCRE_UCP) != 0) + { + errorcode = ERR67; + goto PCRE_EARLY_ERROR_RETURN; + } +#endif + /* Check validity of \R options. */ -switch (options & (PCRE_BSR_ANYCRLF|PCRE_BSR_UNICODE)) +if ((options & (PCRE_BSR_ANYCRLF|PCRE_BSR_UNICODE)) == + (PCRE_BSR_ANYCRLF|PCRE_BSR_UNICODE)) { - case 0: - case PCRE_BSR_ANYCRLF: - case PCRE_BSR_UNICODE: - break; - default: errorcode = ERR56; goto PCRE_EARLY_ERROR_RETURN; + errorcode = ERR56; + goto PCRE_EARLY_ERROR_RETURN; } /* Handle different types of newline. The three bits give seven cases. The @@ -6088,10 +8996,10 @@ current code allows for fixed one- or two-byte sequences, plus "any" and switch (options & PCRE_NEWLINE_BITS) { case 0: newline = NEWLINE; break; /* Build-time default */ - case PCRE_NEWLINE_CR: newline = '\r'; break; - case PCRE_NEWLINE_LF: newline = '\n'; break; + case PCRE_NEWLINE_CR: newline = CHAR_CR; break; + case PCRE_NEWLINE_LF: newline = CHAR_NL; break; case PCRE_NEWLINE_CR+ - PCRE_NEWLINE_LF: newline = ('\r' << 8) | '\n'; break; + PCRE_NEWLINE_LF: newline = (CHAR_CR << 8) | CHAR_NL; break; case PCRE_NEWLINE_ANY: newline = -1; break; case PCRE_NEWLINE_ANYCRLF: newline = -2; break; default: errorcode = ERR56; goto PCRE_EARLY_ERROR_RETURN; @@ -6131,7 +9039,10 @@ cd->backref_map = 0; /* Reflect pattern for debugging output */ DPRINTF(("------------------------------------------------------------------\n")); -DPRINTF(("%s\n", pattern)); +#ifdef PCRE_DEBUG +print_puchar(stdout, (PCRE_PUCHAR)pattern); +#endif +DPRINTF(("\n")); /* Pretend to compile the pattern while actually just accumulating the length of memory required. This behaviour is triggered by passing a non-NULL final @@ -6144,14 +9055,22 @@ cd->bracount = cd->final_bracount = 0; cd->names_found = 0; cd->name_entry_size = 0; cd->name_table = NULL; -cd->start_workspace = cworkspace; +cd->dupnames = FALSE; +cd->namedrefcount = 0; cd->start_code = cworkspace; cd->hwm = cworkspace; -cd->start_pattern = (const uschar *)pattern; -cd->end_pattern = (const uschar *)(pattern + strlen(pattern)); +cd->start_workspace = cworkspace; +cd->workspace_size = COMPILE_WORK_SIZE; +cd->named_groups = named_groups; +cd->named_group_list_size = NAMED_GROUP_LIST_SIZE; +cd->start_pattern = (const pcre_uchar *)pattern; +cd->end_pattern = (const pcre_uchar *)(pattern + STRLEN_UC((const pcre_uchar *)pattern)); cd->req_varyopt = 0; +cd->parens_depth = 0; +cd->assert_depth = 0; +cd->max_lookbehind = 0; cd->external_options = options; -cd->external_flags = 0; +cd->open_caps = NULL; /* Now do the pre-compile. On error, errorcode will be set non-zero, so we don't need to look at the result of the function here. The initial options have @@ -6162,13 +9081,14 @@ outside can help speed up starting point checks. */ ptr += skipatstart; code = cworkspace; *code = OP_BRA; -(void)compile_regex(cd->external_options, cd->external_options & PCRE_IMS, - &code, &ptr, &errorcode, FALSE, FALSE, 0, &firstbyte, &reqbyte, NULL, cd, - &length); + +(void)compile_regex(cd->external_options, &code, &ptr, &errorcode, FALSE, + FALSE, 0, 0, &firstchar, &firstcharflags, &reqchar, &reqcharflags, NULL, + cd, &length); if (errorcode != 0) goto PCRE_EARLY_ERROR_RETURN; DPRINTF(("end pre-compile: length=%d workspace=%d\n", length, - cd->hwm - cworkspace)); + (int)(cd->hwm - cworkspace))); if (length > MAX_PATTERN_SIZE) { @@ -6176,14 +9096,23 @@ if (length > MAX_PATTERN_SIZE) goto PCRE_EARLY_ERROR_RETURN; } -/* Compute the size of data block needed and get it, either from malloc or -externally provided function. Integer overflow should no longer be possible -because nowadays we limit the maximum value of cd->names_found and -cd->name_entry_size. */ +/* If there are groups with duplicate names and there are also references by +name, we must allow for the possibility of named references to duplicated +groups. These require an extra data item each. */ -size = length + sizeof(real_pcre) + cd->names_found * (cd->name_entry_size + 3); -re = (real_pcre *)(pcre_malloc)(size); +if (cd->dupnames && cd->namedrefcount > 0) + length += cd->namedrefcount * IMM2_SIZE * sizeof(pcre_uchar); +/* Compute the size of the data block for storing the compiled pattern. Integer +overflow should no longer be possible because nowadays we limit the maximum +value of cd->names_found and cd->name_entry_size. */ + +size = sizeof(REAL_PCRE) + + (length + cd->names_found * cd->name_entry_size) * sizeof(pcre_uchar); + +/* Get the memory. */ + +re = (REAL_PCRE *)(PUBL(malloc))(size); if (re == NULL) { errorcode = ERR21; @@ -6197,18 +9126,24 @@ regex compiled on a system with 4-byte pointers is run on another with 8-byte pointers. */ re->magic_number = MAGIC_NUMBER; -re->size = size; +re->size = (int)size; re->options = cd->external_options; re->flags = cd->external_flags; -re->dummy1 = 0; -re->first_byte = 0; -re->req_byte = 0; -re->name_table_offset = sizeof(real_pcre); +re->limit_match = limit_match; +re->limit_recursion = limit_recursion; +re->first_char = 0; +re->req_char = 0; +re->name_table_offset = sizeof(REAL_PCRE) / sizeof(pcre_uchar); re->name_entry_size = cd->name_entry_size; re->name_count = cd->names_found; re->ref_count = 0; -re->tables = (tables == _pcre_default_tables)? NULL : tables; +re->tables = (tables == PRIV(default_tables))? NULL : tables; re->nullpad = NULL; +#ifdef COMPILE_PCRE32 +re->dummy = 0; +#else +re->dummy1 = re->dummy2 = re->dummy3 = 0; +#endif /* The starting points of the name/number translation table and of the code are passed around in the compile data block. The start/end pattern and initial @@ -6218,69 +9153,166 @@ field; this time it's used for remembering forward references to subpatterns. */ cd->final_bracount = cd->bracount; /* Save for checking forward references */ +cd->parens_depth = 0; +cd->assert_depth = 0; cd->bracount = 0; -cd->names_found = 0; -cd->name_table = (uschar *)re + re->name_table_offset; +cd->max_lookbehind = 0; +cd->name_table = (pcre_uchar *)re + re->name_table_offset; codestart = cd->name_table + re->name_entry_size * re->name_count; cd->start_code = codestart; -cd->hwm = cworkspace; +cd->hwm = (pcre_uchar *)(cd->start_workspace); cd->req_varyopt = 0; cd->had_accept = FALSE; +cd->had_pruneorskip = FALSE; +cd->check_lookbehind = FALSE; +cd->open_caps = NULL; + +/* If any named groups were found, create the name/number table from the list +created in the first pass. */ + +if (cd->names_found > 0) + { + int i = cd->names_found; + named_group *ng = cd->named_groups; + cd->names_found = 0; + for (; i > 0; i--, ng++) + add_name(cd, ng->name, ng->length, ng->number); + if (cd->named_group_list_size > NAMED_GROUP_LIST_SIZE) + (PUBL(free))((void *)cd->named_groups); + } /* Set up a starting, non-extracting bracket, then compile the expression. On error, errorcode will be set non-zero, so we don't need to look at the result of the function here. */ -ptr = (const uschar *)pattern + skipatstart; -code = (uschar *)codestart; +ptr = (const pcre_uchar *)pattern + skipatstart; +code = (pcre_uchar *)codestart; *code = OP_BRA; -(void)compile_regex(re->options, re->options & PCRE_IMS, &code, &ptr, - &errorcode, FALSE, FALSE, 0, &firstbyte, &reqbyte, NULL, cd, NULL); +(void)compile_regex(re->options, &code, &ptr, &errorcode, FALSE, FALSE, 0, 0, + &firstchar, &firstcharflags, &reqchar, &reqcharflags, NULL, cd, NULL); re->top_bracket = cd->bracount; re->top_backref = cd->top_backref; -re->flags = cd->external_flags; +re->max_lookbehind = cd->max_lookbehind; +re->flags = cd->external_flags | PCRE_MODE; -if (cd->had_accept) reqbyte = -1; /* Must disable after (*ACCEPT) */ +if (cd->had_accept) + { + reqchar = 0; /* Must disable after (*ACCEPT) */ + reqcharflags = REQ_NONE; + } /* If not reached end of pattern on success, there's an excess bracket. */ -if (errorcode == 0 && *ptr != 0) errorcode = ERR22; +if (errorcode == 0 && *ptr != CHAR_NULL) errorcode = ERR22; /* Fill in the terminating state and check for disastrous overflow, but if debugging, leave the test till after things are printed out. */ *code++ = OP_END; -#ifndef DEBUG +#ifndef PCRE_DEBUG if (code - codestart > length) errorcode = ERR23; #endif -/* Fill in any forward references that are required. */ +#ifdef SUPPORT_VALGRIND +/* If the estimated length exceeds the really used length, mark the extra +allocated memory as unaddressable, so that any out-of-bound reads can be +detected. */ +VALGRIND_MAKE_MEM_NOACCESS(code, (length - (code - codestart)) * sizeof(pcre_uchar)); +#endif -while (errorcode == 0 && cd->hwm > cworkspace) +/* Fill in any forward references that are required. There may be repeated +references; optimize for them, as searching a large regex takes time. */ + +if (cd->hwm > cd->start_workspace) { - int offset, recno; - const uschar *groupptr; - cd->hwm -= LINK_SIZE; - offset = GET(cd->hwm, 0); - recno = GET(codestart, offset); - groupptr = find_bracket(codestart, (re->options & PCRE_UTF8) != 0, recno); - if (groupptr == NULL) errorcode = ERR53; - else PUT(((uschar *)codestart), offset, groupptr - codestart); + int prev_recno = -1; + const pcre_uchar *groupptr = NULL; + while (errorcode == 0 && cd->hwm > cd->start_workspace) + { + int offset, recno; + cd->hwm -= LINK_SIZE; + offset = GET(cd->hwm, 0); + recno = GET(codestart, offset); + if (recno != prev_recno) + { + groupptr = PRIV(find_bracket)(codestart, utf, recno); + prev_recno = recno; + } + if (groupptr == NULL) errorcode = ERR53; + else PUT(((pcre_uchar *)codestart), offset, (int)(groupptr - codestart)); + } } +/* If the workspace had to be expanded, free the new memory. Set the pointer to +NULL to indicate that forward references have been filled in. */ + +if (cd->workspace_size > COMPILE_WORK_SIZE) + (PUBL(free))((void *)cd->start_workspace); +cd->start_workspace = NULL; + /* Give an error if there's back reference to a non-existent capturing subpattern. */ if (errorcode == 0 && re->top_backref > re->top_bracket) errorcode = ERR15; +/* Unless disabled, check whether single character iterators can be +auto-possessified. The function overwrites the appropriate opcode values. */ + +if ((options & PCRE_NO_AUTO_POSSESS) == 0) + auto_possessify((pcre_uchar *)codestart, utf, cd); + +/* If there were any lookbehind assertions that contained OP_RECURSE +(recursions or subroutine calls), a flag is set for them to be checked here, +because they may contain forward references. Actual recursions cannot be fixed +length, but subroutine calls can. It is done like this so that those without +OP_RECURSE that are not fixed length get a diagnosic with a useful offset. The +exceptional ones forgo this. We scan the pattern to check that they are fixed +length, and set their lengths. */ + +if (cd->check_lookbehind) + { + pcre_uchar *cc = (pcre_uchar *)codestart; + + /* Loop, searching for OP_REVERSE items, and process those that do not have + their length set. (Actually, it will also re-process any that have a length + of zero, but that is a pathological case, and it does no harm.) When we find + one, we temporarily terminate the branch it is in while we scan it. */ + + for (cc = (pcre_uchar *)PRIV(find_bracket)(codestart, utf, -1); + cc != NULL; + cc = (pcre_uchar *)PRIV(find_bracket)(cc, utf, -1)) + { + if (GET(cc, 1) == 0) + { + int fixed_length; + pcre_uchar *be = cc - 1 - LINK_SIZE + GET(cc, -LINK_SIZE); + int end_op = *be; + *be = OP_END; + fixed_length = find_fixedlength(cc, (re->options & PCRE_UTF8) != 0, TRUE, + cd); + *be = end_op; + DPRINTF(("fixed length = %d\n", fixed_length)); + if (fixed_length < 0) + { + errorcode = (fixed_length == -2)? ERR36 : + (fixed_length == -4)? ERR70 : ERR25; + break; + } + if (fixed_length > cd->max_lookbehind) cd->max_lookbehind = fixed_length; + PUT(cc, 1, fixed_length); + } + cc += 1 + LINK_SIZE; + } + } + /* Failed to compile, or error while post-processing */ if (errorcode != 0) { - (pcre_free)(re); + (PUBL(free))(re); PCRE_EARLY_ERROR_RETURN: - *erroroffset = ptr - (const uschar *)pattern; + *erroroffset = (int)(ptr - (const pcre_uchar *)pattern); PCRE_EARLY_ERROR_RETURN2: *errorptr = find_error_text(errorcode); if (errorcodeptr != NULL) *errorcodeptr = errorcode; @@ -6288,33 +9320,57 @@ if (errorcode != 0) } /* If the anchored option was not passed, set the flag if we can determine that -the pattern is anchored by virtue of ^ characters or \A or anything else (such -as starting with .* when DOTALL is set). +the pattern is anchored by virtue of ^ characters or \A or anything else, such +as starting with non-atomic .* when DOTALL is set and there are no occurrences +of *PRUNE or *SKIP. Otherwise, if we know what the first byte has to be, save it, because that speeds up unanchored matches no end. If not, see if we can set the PCRE_STARTLINE flag. This is helpful for multiline matches when all branches -start with ^. and also when all branches start with .* for non-DOTALL matches. -*/ +start with ^. and also when all branches start with non-atomic .* for +non-DOTALL matches when *PRUNE and SKIP are not present. */ if ((re->options & PCRE_ANCHORED) == 0) { - int temp_options = re->options; /* May get changed during these scans */ - if (is_anchored(codestart, &temp_options, 0, cd->backref_map)) - re->options |= PCRE_ANCHORED; + if (is_anchored(codestart, 0, cd, 0)) re->options |= PCRE_ANCHORED; else { - if (firstbyte < 0) - firstbyte = find_firstassertedchar(codestart, &temp_options, FALSE); - if (firstbyte >= 0) /* Remove caseless flag for non-caseable chars */ + if (firstcharflags < 0) + firstchar = find_firstassertedchar(codestart, &firstcharflags, FALSE); + if (firstcharflags >= 0) /* Remove caseless flag for non-caseable chars */ { - int ch = firstbyte & 255; - re->first_byte = ((firstbyte & REQ_CASELESS) != 0 && - cd->fcc[ch] == ch)? ch : firstbyte; +#if defined COMPILE_PCRE8 + re->first_char = firstchar & 0xff; +#elif defined COMPILE_PCRE16 + re->first_char = firstchar & 0xffff; +#elif defined COMPILE_PCRE32 + re->first_char = firstchar; +#endif + if ((firstcharflags & REQ_CASELESS) != 0) + { +#if defined SUPPORT_UCP && !(defined COMPILE_PCRE8) + /* We ignore non-ASCII first chars in 8 bit mode. */ + if (utf) + { + if (re->first_char < 128) + { + if (cd->fcc[re->first_char] != re->first_char) + re->flags |= PCRE_FCH_CASELESS; + } + else if (UCD_OTHERCASE(re->first_char) != re->first_char) + re->flags |= PCRE_FCH_CASELESS; + } + else +#endif + if (MAX_255(re->first_char) + && cd->fcc[re->first_char] != re->first_char) + re->flags |= PCRE_FCH_CASELESS; + } + re->flags |= PCRE_FIRSTSET; } - else if (is_startline(codestart, 0, cd->backref_map)) - re->flags |= PCRE_STARTLINE; + + else if (is_startline(codestart, 0, cd, 0)) re->flags |= PCRE_STARTLINE; } } @@ -6322,20 +9378,43 @@ if ((re->options & PCRE_ANCHORED) == 0) variable length item in the regex. Remove the caseless flag for non-caseable bytes. */ -if (reqbyte >= 0 && - ((re->options & PCRE_ANCHORED) == 0 || (reqbyte & REQ_VARY) != 0)) +if (reqcharflags >= 0 && + ((re->options & PCRE_ANCHORED) == 0 || (reqcharflags & REQ_VARY) != 0)) { - int ch = reqbyte & 255; - re->req_byte = ((reqbyte & REQ_CASELESS) != 0 && - cd->fcc[ch] == ch)? (reqbyte & ~REQ_CASELESS) : reqbyte; +#if defined COMPILE_PCRE8 + re->req_char = reqchar & 0xff; +#elif defined COMPILE_PCRE16 + re->req_char = reqchar & 0xffff; +#elif defined COMPILE_PCRE32 + re->req_char = reqchar; +#endif + if ((reqcharflags & REQ_CASELESS) != 0) + { +#if defined SUPPORT_UCP && !(defined COMPILE_PCRE8) + /* We ignore non-ASCII first chars in 8 bit mode. */ + if (utf) + { + if (re->req_char < 128) + { + if (cd->fcc[re->req_char] != re->req_char) + re->flags |= PCRE_RCH_CASELESS; + } + else if (UCD_OTHERCASE(re->req_char) != re->req_char) + re->flags |= PCRE_RCH_CASELESS; + } + else +#endif + if (MAX_255(re->req_char) && cd->fcc[re->req_char] != re->req_char) + re->flags |= PCRE_RCH_CASELESS; + } + re->flags |= PCRE_REQCHSET; } /* Print out the compiled data if debugging is enabled. This is never the case when building a production library. */ -#ifdef DEBUG - +#ifdef PCRE_DEBUG printf("Length = %d top_bracket = %d top_backref = %d\n", length, re->top_bracket, re->top_backref); @@ -6343,38 +9422,65 @@ printf("Options=%08x\n", re->options); if ((re->flags & PCRE_FIRSTSET) != 0) { - int ch = re->first_byte & 255; - const char *caseless = ((re->first_byte & REQ_CASELESS) == 0)? - "" : " (caseless)"; - if (isprint(ch)) printf("First char = %c%s\n", ch, caseless); + pcre_uchar ch = re->first_char; + const char *caseless = + ((re->flags & PCRE_FCH_CASELESS) == 0)? "" : " (caseless)"; + if (PRINTABLE(ch)) printf("First char = %c%s\n", ch, caseless); else printf("First char = \\x%02x%s\n", ch, caseless); } if ((re->flags & PCRE_REQCHSET) != 0) { - int ch = re->req_byte & 255; - const char *caseless = ((re->req_byte & REQ_CASELESS) == 0)? - "" : " (caseless)"; - if (isprint(ch)) printf("Req char = %c%s\n", ch, caseless); + pcre_uchar ch = re->req_char; + const char *caseless = + ((re->flags & PCRE_RCH_CASELESS) == 0)? "" : " (caseless)"; + if (PRINTABLE(ch)) printf("Req char = %c%s\n", ch, caseless); else printf("Req char = \\x%02x%s\n", ch, caseless); } -pcre_printint(re, stdout, TRUE); +#if defined COMPILE_PCRE8 +pcre_printint((pcre *)re, stdout, TRUE); +#elif defined COMPILE_PCRE16 +pcre16_printint((pcre *)re, stdout, TRUE); +#elif defined COMPILE_PCRE32 +pcre32_printint((pcre *)re, stdout, TRUE); +#endif /* This check is done here in the debugging case so that the code that was compiled can be seen. */ if (code - codestart > length) { - (pcre_free)(re); + (PUBL(free))(re); *errorptr = find_error_text(ERR23); - *erroroffset = ptr - (uschar *)pattern; + *erroroffset = ptr - (pcre_uchar *)pattern; if (errorcodeptr != NULL) *errorcodeptr = ERR23; return NULL; } -#endif /* DEBUG */ +#endif /* PCRE_DEBUG */ +/* Check for a pattern than can match an empty string, so that this information +can be provided to applications. */ + +do + { + if (could_be_empty_branch(codestart, code, utf, cd, NULL)) + { + re->flags |= PCRE_MATCH_EMPTY; + break; + } + codestart += GET(codestart, 1); + } +while (*codestart == OP_ALT); + +#if defined COMPILE_PCRE8 return (pcre *)re; +#elif defined COMPILE_PCRE16 +return (pcre16 *)re; +#elif defined COMPILE_PCRE32 +return (pcre32 *)re; +#endif } /* End of pcre_compile.c */ + diff --git a/Foundation/src/pcre_config.c b/Foundation/src/pcre_config.c new file mode 100644 index 000000000..35c12dfc2 --- /dev/null +++ b/Foundation/src/pcre_config.c @@ -0,0 +1,187 @@ +/************************************************* +* Perl-Compatible Regular Expressions * +*************************************************/ + +/* PCRE is a library of functions to support regular expressions whose syntax +and semantics are as close as possible to those of the Perl 5 language. + + Written by Philip Hazel + Copyright (c) 1997-2012 University of Cambridge + +----------------------------------------------------------------------------- +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + * Neither the name of the University of Cambridge nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +----------------------------------------------------------------------------- +*/ + + +/* This module contains the external function pcre_config(). */ + +#include "pcre_config.h" + +/* Keep the original link size. */ +static int real_link_size = LINK_SIZE; + +#include "pcre_internal.h" + + +/************************************************* +* Return info about what features are configured * +*************************************************/ + +/* This function has an extensible interface so that additional items can be +added compatibly. + +Arguments: + what what information is required + where where to put the information + +Returns: 0 if data returned, negative on error +*/ + +#if defined COMPILE_PCRE8 +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION +pcre_config(int what, void *where) +#elif defined COMPILE_PCRE16 +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION +pcre16_config(int what, void *where) +#elif defined COMPILE_PCRE32 +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION +pcre32_config(int what, void *where) +#endif +{ +switch (what) + { + case PCRE_CONFIG_UTF8: +#if defined COMPILE_PCRE16 || defined COMPILE_PCRE32 + *((int *)where) = 0; + return PCRE_ERROR_BADOPTION; +#else +#if defined SUPPORT_UTF + *((int *)where) = 1; +#else + *((int *)where) = 0; +#endif + break; +#endif + + case PCRE_CONFIG_UTF16: +#if defined COMPILE_PCRE8 || defined COMPILE_PCRE32 + *((int *)where) = 0; + return PCRE_ERROR_BADOPTION; +#else +#if defined SUPPORT_UTF + *((int *)where) = 1; +#else + *((int *)where) = 0; +#endif + break; +#endif + + case PCRE_CONFIG_UTF32: +#if defined COMPILE_PCRE8 || defined COMPILE_PCRE16 + *((int *)where) = 0; + return PCRE_ERROR_BADOPTION; +#else +#if defined SUPPORT_UTF + *((int *)where) = 1; +#else + *((int *)where) = 0; +#endif + break; +#endif + + case PCRE_CONFIG_UNICODE_PROPERTIES: +#ifdef SUPPORT_UCP + *((int *)where) = 1; +#else + *((int *)where) = 0; +#endif + break; + + case PCRE_CONFIG_JIT: +#ifdef SUPPORT_JIT + *((int *)where) = 1; +#else + *((int *)where) = 0; +#endif + break; + + case PCRE_CONFIG_JITTARGET: +#ifdef SUPPORT_JIT + *((const char **)where) = PRIV(jit_get_target)(); +#else + *((const char **)where) = NULL; +#endif + break; + + case PCRE_CONFIG_NEWLINE: + *((int *)where) = NEWLINE; + break; + + case PCRE_CONFIG_BSR: +#ifdef BSR_ANYCRLF + *((int *)where) = 1; +#else + *((int *)where) = 0; +#endif + break; + + case PCRE_CONFIG_LINK_SIZE: + *((int *)where) = real_link_size; + break; + + case PCRE_CONFIG_POSIX_MALLOC_THRESHOLD: + *((int *)where) = POSIX_MALLOC_THRESHOLD; + break; + + case PCRE_CONFIG_PARENS_LIMIT: + *((unsigned long int *)where) = PARENS_NEST_LIMIT; + break; + + case PCRE_CONFIG_MATCH_LIMIT: + *((unsigned long int *)where) = MATCH_LIMIT; + break; + + case PCRE_CONFIG_MATCH_LIMIT_RECURSION: + *((unsigned long int *)where) = MATCH_LIMIT_RECURSION; + break; + + case PCRE_CONFIG_STACKRECURSE: +#ifdef NO_RECURSE + *((int *)where) = 0; +#else + *((int *)where) = 1; +#endif + break; + + default: return PCRE_ERROR_BADOPTION; + } + +return 0; +} + +/* End of pcre_config.c */ diff --git a/Foundation/src/pcre_config.h b/Foundation/src/pcre_config.h index 792425bee..b8abd65a1 100644 --- a/Foundation/src/pcre_config.h +++ b/Foundation/src/pcre_config.h @@ -1,31 +1,59 @@ /* config.h. Generated from config.h.in by configure. */ /* config.h.in. Generated from configure.ac by autoheader. */ +/* PCRE is written in Standard C, but there are a few non-standard things it +can cope with, allowing it to run on SunOS4 and other "close to standard" +systems. -/* On Unix-like systems config.h.in is converted by "configure" into config.h. -Some other environments also support the use of "configure". PCRE is written in -Standard C, but there are a few non-standard things it can cope with, allowing -it to run on SunOS4 and other "close to standard" systems. +In environments that support the GNU autotools, config.h.in is converted into +config.h by the "configure" script. In environments that use CMake, +config-cmake.in is converted into config.h. If you are going to build PCRE "by +hand" without using "configure" or CMake, you should copy the distributed +config.h.generic to config.h, and edit the macro definitions to be the way you +need them. -If you are going to build PCRE "by hand" on a system without "configure" you -should copy the distributed config.h.generic to config.h, and then set up the -macros the way you need them. Alternatively, you can avoid editing by using -D -on the compiler command line to set the macro values. +Boolean macros such as HAVE_STDLIB_H and SUPPORT_PCRE8 should either be defined +(conventionally to 1) for TRUE, and not defined at all for FALSE. All such +macros are listed as a commented #undef in config.h.generic. Macros such as +MATCH_LIMIT, whose actual value is relevant, have defaults defined, but are +surrounded by #ifndef/#endif lines so that the value can be overridden by -D. -PCRE uses memmove() if HAVE_MEMMOVE is set to 1; otherwise it uses bcopy() if -HAVE_BCOPY is set to 1. If your system has neither bcopy() nor memmove(), set -them both to 0; an emulation function will be used. */ +PCRE uses memmove() if HAVE_MEMMOVE is defined; otherwise it uses bcopy() if +HAVE_BCOPY is defined. If your system has neither bcopy() nor memmove(), make +sure both macros are undefined; an emulation function will then be used. */ + +/* By default, the \R escape sequence matches any Unicode line ending + character or sequence of characters. If BSR_ANYCRLF is defined (to any + value), this is changed so that backslash-R matches only CR, LF, or CRLF. + The build-time default can be overridden by the user of PCRE at runtime. */ +/* #undef BSR_ANYCRLF */ /* If you are compiling for a system that uses EBCDIC instead of ASCII - character codes, define this macro as 1. On systems that can use - "configure", this can be done via --enable-ebcdic. */ + character codes, define this macro to any value. You must also edit the + NEWLINE macro below to set a suitable EBCDIC newline, commonly 21 (0x15). + On systems that can use "configure" or CMake to set EBCDIC, NEWLINE is + automatically adjusted. When EBCDIC is set, PCRE assumes that all input + strings are in EBCDIC. If you do not define this macro, PCRE will assume + input strings are ASCII or UTF-8/16/32 Unicode. It is not possible to build + a version of PCRE that supports both EBCDIC and UTF-8/16/32. */ /* #undef EBCDIC */ +/* In an EBCDIC environment, define this macro to any value to arrange for the + NL character to be 0x25 instead of the default 0x15. NL plays the role that + LF does in an ASCII/Unicode environment. The value must also be set in the + NEWLINE macro below. On systems that can use "configure" or CMake to set + EBCDIC_NL25, the adjustment of NEWLINE is automatic. */ +/* #undef EBCDIC_NL25 */ + /* Define to 1 if you have the `bcopy' function. */ +/* #undef HAVE_BCOPY */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BITS_TYPE_TRAITS_H */ +/* Define to 1 if you have the header file. */ +/* #undef HAVE_BZLIB_H */ + /* Define to 1 if you have the header file. */ #ifndef HAVE_DIRENT_H #define HAVE_DIRENT_H 0 @@ -36,12 +64,23 @@ them both to 0; an emulation function will be used. */ #define HAVE_DLFCN_H 0 #endif +/* Define to 1 if you have the header file. */ +#ifndef HAVE_EDITLINE_READLINE_H +#define HAVE_EDITLINE_READLINE_H 0 +#endif + +/* Define to 1 if you have the header file. */ +#ifndef HAVE_EDIT_READLINE_READLINE_H +#define HAVE_EDIT_READLINE_READLINE_H 0 +#endif + /* Define to 1 if you have the header file. */ #ifndef HAVE_INTTYPES_H #define HAVE_INTTYPES_H 0 #endif /* Define to 1 if you have the header file. */ +/* #undef HAVE_LIMITS_H */ #ifndef HAVE_LIMITS_H #define HAVE_LIMITS_H 1 #endif @@ -52,12 +91,35 @@ them both to 0; an emulation function will be used. */ #endif /* Define to 1 if you have the `memmove' function. */ +#ifndef HAVE_MEMMOVE +#define HAVE_MEMMOVE 0 +#endif /* Define to 1 if you have the header file. */ #ifndef HAVE_MEMORY_H #define HAVE_MEMORY_H 1 #endif +/* Define if you have POSIX threads libraries and header files. */ +#ifndef HAVE_PTHREAD +#define HAVE_PTHREAD 0 +#endif + +/* Have PTHREAD_PRIO_INHERIT. */ +#ifndef HAVE_PTHREAD_PRIO_INHERIT +#define HAVE_PTHREAD_PRIO_INHERIT 0 +#endif + +/* Define to 1 if you have the header file. */ +#ifndef HAVE_READLINE_HISTORY_H +#define HAVE_READLINE_HISTORY_H 0 +#endif + +/* Define to 1 if you have the header file. */ +#ifndef HAVE_READLINE_READLINE_H +#define HAVE_READLINE_READLINE_H 0 +#endif + /* Define to 1 if you have the header file. */ #ifndef HAVE_STDINT_H #define HAVE_STDINT_H 0 @@ -88,12 +150,17 @@ them both to 0; an emulation function will be used. */ #define HAVE_STRING_H 1 #endif -/* Define to 1 if you have the `strtoll' function. */ +/* Define to 1 if you have `strtoimax'. */ +#ifndef HAVE_STRTOIMAX +#define HAVE_STRTOIMAX 0 +#endif + +/* Define to 1 if you have `strtoll'. */ #ifndef HAVE_STRTOLL #define HAVE_STRTOLL 0 #endif -/* Define to 1 if you have the `strtoq' function. */ +/* Define to 1 if you have `strtoq'. */ #ifndef HAVE_STRTOQ #define HAVE_STRTOQ 0 #endif @@ -121,26 +188,40 @@ them both to 0; an emulation function will be used. */ #define HAVE_UNSIGNED_LONG_LONG 0 #endif -/* Define to 1 if you have the "Poco/UnWindows.h" header file. */ +/* Define to 1 if the compiler supports simple visibility declarations. */ +/* #undef HAVE_VISIBILITY */ + +/* Define to 1 if you have the header file. */ /* #undef HAVE_WINDOWS_H */ +/* Define to 1 if you have the header file. */ +/* #undef HAVE_ZLIB_H */ + +/* Define to 1 if you have `_strtoi64'. */ +/* #undef HAVE__STRTOI64 */ + /* The value of LINK_SIZE determines the number of bytes used to store links as offsets within the compiled regex. The default is 2, which allows for compiled patterns up to 64K long. This covers the vast majority of cases. However, PCRE can also be compiled to use 3 or 4 bytes instead. This allows - for longer patterns in extreme cases. On systems that support it, - "configure" can be used to override this default. */ + for longer patterns in extreme cases. */ #ifndef LINK_SIZE #define LINK_SIZE 2 #endif +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +/* This is ignored unless you are using libtool. */ +#ifndef LT_OBJDIR +#define LT_OBJDIR ".libs/" +#endif + /* The value of MATCH_LIMIT determines the default number of times the internal match() function can be called during a single execution of pcre_exec(). There is a runtime interface for setting a different limit. The limit exists in order to catch runaway regular expressions that take for ever to determine that they do not match. The default is set very large - so that it does not accidentally catch legitimate cases. On systems that - support it, "configure" can be used to override this default default. */ + so that it does not accidentally catch legitimate cases. */ #ifndef MATCH_LIMIT #define MATCH_LIMIT 10000000 #endif @@ -152,24 +233,16 @@ them both to 0; an emulation function will be used. */ used. The value of MATCH_LIMIT_RECURSION applies only to recursive calls of match(). To have any useful effect, it must be less than the value of MATCH_LIMIT. The default is to use the same value as MATCH_LIMIT. There is - a runtime method for setting a different limit. On systems that support it, - "configure" can be used to override the default. */ + a runtime method for setting a different limit. */ #ifndef MATCH_LIMIT_RECURSION #define MATCH_LIMIT_RECURSION MATCH_LIMIT #endif -/* This limit is parameterized just in case anybody ever wants to change it. - Care must be taken if it is increased, because it guards against integer - overflow caused by enormously large patterns. */ -#ifndef MAX_DUPLENGTH -#define MAX_DUPLENGTH 30000 -#endif - /* This limit is parameterized just in case anybody ever wants to change it. Care must be taken if it is increased, because it guards against integer overflow caused by enormously large patterns. */ #ifndef MAX_NAME_COUNT -#define MAX_NAME_COUNT 10000 +#define MAX_NAME_COUNT 30000 #endif /* This limit is parameterized just in case anybody ever wants to change it. @@ -179,22 +252,25 @@ them both to 0; an emulation function will be used. */ #define MAX_NAME_SIZE 32 #endif -/* The value of NEWLINE determines the newline character sequence. On - Unix-like systems, "configure" can be used to override the default, which - is 10. The possible values are 10 (LF), 13 (CR), 3338 (CRLF), -1 (ANY), or - -2 (ANYCRLF). */ +/* The value of NEWLINE determines the default newline character sequence. + PCRE client programs can override this by selecting other values at run + time. In ASCII environments, the value can be 10 (LF), 13 (CR), or 3338 + (CRLF); in EBCDIC environments the value can be 21 or 37 (LF), 13 (CR), or + 3349 or 3365 (CRLF) because there are two alternative codepoints (0x15 and + 0x25) that are used as the NL line terminator that is equivalent to ASCII + LF. In both ASCII and EBCDIC environments the value can also be -1 (ANY), + or -2 (ANYCRLF). */ #ifndef NEWLINE #define NEWLINE 10 #endif /* PCRE uses recursive function calls to handle backtracking while matching. This can sometimes be a problem on systems that have stacks of limited - size. Define NO_RECURSE to get a version that doesn't use recursion in the - match() function; instead it creates its own stack by steam using - pcre_recurse_malloc() to obtain memory from the heap. For more detail, see - the comments and other stuff just above the match() function. On systems - that support it, "configure" can be used to set this in the Makefile (use - --disable-stack-for-recursion). */ + size. Define NO_RECURSE to any value to get a version that doesn't use + recursion in the match() function; instead it creates its own stack by + steam using pcre_recurse_malloc() to obtain memory from the heap. For more + detail, see the comments and other stuff just above the match() function. + */ /* #undef NO_RECURSE */ /* Name of package */ @@ -207,27 +283,45 @@ them both to 0; an emulation function will be used. */ #define PACKAGE_NAME "PCRE" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "PCRE 7.1" +#define PACKAGE_STRING "PCRE 8.35" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "pcre" -/* Define to the version of this package. */ -#define PACKAGE_VERSION "7.1" +/* Define to the home page for this package. */ +#define PACKAGE_URL "" +/* Define to the version of this package. */ +#define PACKAGE_VERSION "8.35" + +/* The value of PARENS_NEST_LIMIT specifies the maximum depth of nested + parentheses (of any kind) in a pattern. This limits the amount of system + stack that is used while compiling a pattern. */ +#ifndef PARENS_NEST_LIMIT +#define PARENS_NEST_LIMIT 250 +#endif + +/* The value of PCREGREP_BUFSIZE determines the size of buffer used by + pcregrep to hold parts of the file it is searching. This is also the + minimum value. The actual amount of memory used by pcregrep is three times + this number, because it allows for the buffering of "before" and "after" + lines. */ +#ifndef PCREGREP_BUFSIZE +#define PCREGREP_BUFSIZE 20480 +#endif /* If you are compiling for a system other than a Unix-like system or Win32, and it needs some magic to be inserted before the definition of a function that is exported by the library, define this macro to - contain the relevant magic. If you do not define this macro, it - defaults to "extern" for a C compiler and "extern C" for a C++ - compiler on non-Win32 systems. This macro apears at the start of - every exported function that is part of the external API. It does - not appear on functions that are "external" in the C sense, but - which are internal to the library. */ + contain the relevant magic. If you do not define this macro, a suitable + __declspec value is used for Windows systems; in other environments + "extern" is used for a C compiler and "extern C" for a C++ compiler. + This macro apears at the start of every exported function that is part + of the external API. It does not appear on functions that are "external" + in the C sense, but which are internal to the library. */ /* #undef PCRE_EXP_DEFN */ -/* Define if linking statically (TODO: make nice with Libtool) */ +/* Define to any value if linking statically (TODO: make nice with Libtool) */ #ifndef PCRE_STATIC #define PCRE_STATIC 1 #endif @@ -238,38 +332,76 @@ them both to 0; an emulation function will be used. */ only two. If the number of expected substrings is small, the wrapper function uses space on the stack, because this is faster than using malloc() for each call. The threshold above which the stack is no longer - used is defined by POSIX_MALLOC_THRESHOLD. On systems that support it, - "configure" can be used to override this default. */ + used is defined by POSIX_MALLOC_THRESHOLD. */ #ifndef POSIX_MALLOC_THRESHOLD #define POSIX_MALLOC_THRESHOLD 10 #endif +/* Define to necessary symbol if this constant uses a non-standard name on + your system. */ +/* #undef PTHREAD_CREATE_JOINABLE */ + /* Define to 1 if you have the ANSI C header files. */ #ifndef STDC_HEADERS #define STDC_HEADERS 1 #endif -/* Define to enable support for Unicode properties */ +/* Define to any value to enable support for Just-In-Time compiling. */ +/* #undef SUPPORT_JIT */ + +/* Define to any value to allow pcregrep to be linked with libbz2, so that it + is able to handle .bz2 files. */ +/* #undef SUPPORT_LIBBZ2 */ + +/* Define to any value to allow pcretest to be linked with libedit. */ +/* #undef SUPPORT_LIBEDIT */ + +/* Define to any value to allow pcretest to be linked with libreadline. */ +/* #undef SUPPORT_LIBREADLINE */ + +/* Define to any value to allow pcregrep to be linked with libz, so that it is + able to handle .gz files. */ +/* #undef SUPPORT_LIBZ */ + +/* Define to any value to enable the 16 bit PCRE library. */ +/* #undef SUPPORT_PCRE16 */ + +/* Define to any value to enable the 32 bit PCRE library. */ +/* #undef SUPPORT_PCRE32 */ + +/* Define to any value to enable the 8 bit PCRE library. */ +#ifndef SUPPORT_PCRE8 +#define SUPPORT_PCRE8 +#endif + +/* Define to any value to enable JIT support in pcregrep. */ +/* #undef SUPPORT_PCREGREP_JIT */ + +/* Define to any value to enable support for Unicode properties. */ #ifndef SUPPORT_UCP #define SUPPORT_UCP #endif -/* Define to enable support for the UTF-8 Unicode encoding. */ +/* Define to any value to enable support for the UTF-8/16/32 Unicode encoding. + This will work even in an EBCDIC environment, but it is incompatible with + the EBCDIC macro. That is, PCRE can support *either* EBCDIC code *or* + ASCII/UTF-8/16/32, but not both at once. */ #ifndef SUPPORT_UTF8 #define SUPPORT_UTF8 #endif +/* Define to any value for valgrind support to find invalid memory reads. */ +/* #undef SUPPORT_VALGRIND */ + /* Version number of package */ -#ifndef VERSION -#define VERSION "7.1" -#endif +#define VERSION "8.35" /* Define to empty if `const' does not conform to ANSI C. */ /* #undef const */ +/* Define to the type of a signed integer type of width exactly 64 bits if + such a type exists and the standard includes do not define it. */ +/* #undef int64_t */ + /* Define to `unsigned int' if does not define. */ /* #undef size_t */ - -#if defined(_MSC_VER) - #pragma warning(disable:4018) // signed/unsigned comparison -#endif diff --git a/Foundation/src/pcre_dfa_exec.c b/Foundation/src/pcre_dfa_exec.c new file mode 100644 index 000000000..c58b8596d --- /dev/null +++ b/Foundation/src/pcre_dfa_exec.c @@ -0,0 +1,3672 @@ +/************************************************* +* Perl-Compatible Regular Expressions * +*************************************************/ + +/* PCRE is a library of functions to support regular expressions whose syntax +and semantics are as close as possible to those of the Perl 5 language (but see +below for why this module is different). + + Written by Philip Hazel + Copyright (c) 1997-2014 University of Cambridge + +----------------------------------------------------------------------------- +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + * Neither the name of the University of Cambridge nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +----------------------------------------------------------------------------- +*/ + +/* This module contains the external function pcre_dfa_exec(), which is an +alternative matching function that uses a sort of DFA algorithm (not a true +FSM). This is NOT Perl-compatible, but it has advantages in certain +applications. */ + + +/* NOTE ABOUT PERFORMANCE: A user of this function sent some code that improved +the performance of his patterns greatly. I could not use it as it stood, as it +was not thread safe, and made assumptions about pattern sizes. Also, it caused +test 7 to loop, and test 9 to crash with a segfault. + +The issue is the check for duplicate states, which is done by a simple linear +search up the state list. (Grep for "duplicate" below to find the code.) For +many patterns, there will never be many states active at one time, so a simple +linear search is fine. In patterns that have many active states, it might be a +bottleneck. The suggested code used an indexing scheme to remember which states +had previously been used for each character, and avoided the linear search when +it knew there was no chance of a duplicate. This was implemented when adding +states to the state lists. + +I wrote some thread-safe, not-limited code to try something similar at the time +of checking for duplicates (instead of when adding states), using index vectors +on the stack. It did give a 13% improvement with one specially constructed +pattern for certain subject strings, but on other strings and on many of the +simpler patterns in the test suite it did worse. The major problem, I think, +was the extra time to initialize the index. This had to be done for each call +of internal_dfa_exec(). (The supplied patch used a static vector, initialized +only once - I suspect this was the cause of the problems with the tests.) + +Overall, I concluded that the gains in some cases did not outweigh the losses +in others, so I abandoned this code. */ + +#pragma warning( disable : 4244) // conversion from 'int' to 'unsigned short', possible loss of data +#pragma warning( disable : 4146) // unary minus operator applied to unsigned type, result still unsigned + +#include "pcre_config.h" + +#define NLBLOCK md /* Block containing newline information */ +#define PSSTART start_subject /* Field containing processed string start */ +#define PSEND end_subject /* Field containing processed string end */ + +#include "pcre_internal.h" + + +/* For use to indent debugging output */ + +#define SP " " + + +/************************************************* +* Code parameters and static tables * +*************************************************/ + +/* These are offsets that are used to turn the OP_TYPESTAR and friends opcodes +into others, under special conditions. A gap of 20 between the blocks should be +enough. The resulting opcodes don't have to be less than 256 because they are +never stored, so we push them well clear of the normal opcodes. */ + +#define OP_PROP_EXTRA 300 +#define OP_EXTUNI_EXTRA 320 +#define OP_ANYNL_EXTRA 340 +#define OP_HSPACE_EXTRA 360 +#define OP_VSPACE_EXTRA 380 + + +/* This table identifies those opcodes that are followed immediately by a +character that is to be tested in some way. This makes it possible to +centralize the loading of these characters. In the case of Type * etc, the +"character" is the opcode for \D, \d, \S, \s, \W, or \w, which will always be a +small value. Non-zero values in the table are the offsets from the opcode where +the character is to be found. ***NOTE*** If the start of this table is +modified, the three tables that follow must also be modified. */ + +static const pcre_uint8 coptable[] = { + 0, /* End */ + 0, 0, 0, 0, 0, /* \A, \G, \K, \B, \b */ + 0, 0, 0, 0, 0, 0, /* \D, \d, \S, \s, \W, \w */ + 0, 0, 0, /* Any, AllAny, Anybyte */ + 0, 0, /* \P, \p */ + 0, 0, 0, 0, 0, /* \R, \H, \h, \V, \v */ + 0, /* \X */ + 0, 0, 0, 0, 0, 0, /* \Z, \z, $, $M, ^, ^M */ + 1, /* Char */ + 1, /* Chari */ + 1, /* not */ + 1, /* noti */ + /* Positive single-char repeats */ + 1, 1, 1, 1, 1, 1, /* *, *?, +, +?, ?, ?? */ + 1+IMM2_SIZE, 1+IMM2_SIZE, /* upto, minupto */ + 1+IMM2_SIZE, /* exact */ + 1, 1, 1, 1+IMM2_SIZE, /* *+, ++, ?+, upto+ */ + 1, 1, 1, 1, 1, 1, /* *I, *?I, +I, +?I, ?I, ??I */ + 1+IMM2_SIZE, 1+IMM2_SIZE, /* upto I, minupto I */ + 1+IMM2_SIZE, /* exact I */ + 1, 1, 1, 1+IMM2_SIZE, /* *+I, ++I, ?+I, upto+I */ + /* Negative single-char repeats - only for chars < 256 */ + 1, 1, 1, 1, 1, 1, /* NOT *, *?, +, +?, ?, ?? */ + 1+IMM2_SIZE, 1+IMM2_SIZE, /* NOT upto, minupto */ + 1+IMM2_SIZE, /* NOT exact */ + 1, 1, 1, 1+IMM2_SIZE, /* NOT *+, ++, ?+, upto+ */ + 1, 1, 1, 1, 1, 1, /* NOT *I, *?I, +I, +?I, ?I, ??I */ + 1+IMM2_SIZE, 1+IMM2_SIZE, /* NOT upto I, minupto I */ + 1+IMM2_SIZE, /* NOT exact I */ + 1, 1, 1, 1+IMM2_SIZE, /* NOT *+I, ++I, ?+I, upto+I */ + /* Positive type repeats */ + 1, 1, 1, 1, 1, 1, /* Type *, *?, +, +?, ?, ?? */ + 1+IMM2_SIZE, 1+IMM2_SIZE, /* Type upto, minupto */ + 1+IMM2_SIZE, /* Type exact */ + 1, 1, 1, 1+IMM2_SIZE, /* Type *+, ++, ?+, upto+ */ + /* Character class & ref repeats */ + 0, 0, 0, 0, 0, 0, /* *, *?, +, +?, ?, ?? */ + 0, 0, /* CRRANGE, CRMINRANGE */ + 0, 0, 0, 0, /* Possessive *+, ++, ?+, CRPOSRANGE */ + 0, /* CLASS */ + 0, /* NCLASS */ + 0, /* XCLASS - variable length */ + 0, /* REF */ + 0, /* REFI */ + 0, /* DNREF */ + 0, /* DNREFI */ + 0, /* RECURSE */ + 0, /* CALLOUT */ + 0, /* Alt */ + 0, /* Ket */ + 0, /* KetRmax */ + 0, /* KetRmin */ + 0, /* KetRpos */ + 0, /* Reverse */ + 0, /* Assert */ + 0, /* Assert not */ + 0, /* Assert behind */ + 0, /* Assert behind not */ + 0, 0, /* ONCE, ONCE_NC */ + 0, 0, 0, 0, 0, /* BRA, BRAPOS, CBRA, CBRAPOS, COND */ + 0, 0, 0, 0, 0, /* SBRA, SBRAPOS, SCBRA, SCBRAPOS, SCOND */ + 0, 0, /* CREF, DNCREF */ + 0, 0, /* RREF, DNRREF */ + 0, /* DEF */ + 0, 0, 0, /* BRAZERO, BRAMINZERO, BRAPOSZERO */ + 0, 0, 0, /* MARK, PRUNE, PRUNE_ARG */ + 0, 0, 0, 0, /* SKIP, SKIP_ARG, THEN, THEN_ARG */ + 0, 0, 0, 0, /* COMMIT, FAIL, ACCEPT, ASSERT_ACCEPT */ + 0, 0 /* CLOSE, SKIPZERO */ +}; + +/* This table identifies those opcodes that inspect a character. It is used to +remember the fact that a character could have been inspected when the end of +the subject is reached. ***NOTE*** If the start of this table is modified, the +two tables that follow must also be modified. */ + +static const pcre_uint8 poptable[] = { + 0, /* End */ + 0, 0, 0, 1, 1, /* \A, \G, \K, \B, \b */ + 1, 1, 1, 1, 1, 1, /* \D, \d, \S, \s, \W, \w */ + 1, 1, 1, /* Any, AllAny, Anybyte */ + 1, 1, /* \P, \p */ + 1, 1, 1, 1, 1, /* \R, \H, \h, \V, \v */ + 1, /* \X */ + 0, 0, 0, 0, 0, 0, /* \Z, \z, $, $M, ^, ^M */ + 1, /* Char */ + 1, /* Chari */ + 1, /* not */ + 1, /* noti */ + /* Positive single-char repeats */ + 1, 1, 1, 1, 1, 1, /* *, *?, +, +?, ?, ?? */ + 1, 1, 1, /* upto, minupto, exact */ + 1, 1, 1, 1, /* *+, ++, ?+, upto+ */ + 1, 1, 1, 1, 1, 1, /* *I, *?I, +I, +?I, ?I, ??I */ + 1, 1, 1, /* upto I, minupto I, exact I */ + 1, 1, 1, 1, /* *+I, ++I, ?+I, upto+I */ + /* Negative single-char repeats - only for chars < 256 */ + 1, 1, 1, 1, 1, 1, /* NOT *, *?, +, +?, ?, ?? */ + 1, 1, 1, /* NOT upto, minupto, exact */ + 1, 1, 1, 1, /* NOT *+, ++, ?+, upto+ */ + 1, 1, 1, 1, 1, 1, /* NOT *I, *?I, +I, +?I, ?I, ??I */ + 1, 1, 1, /* NOT upto I, minupto I, exact I */ + 1, 1, 1, 1, /* NOT *+I, ++I, ?+I, upto+I */ + /* Positive type repeats */ + 1, 1, 1, 1, 1, 1, /* Type *, *?, +, +?, ?, ?? */ + 1, 1, 1, /* Type upto, minupto, exact */ + 1, 1, 1, 1, /* Type *+, ++, ?+, upto+ */ + /* Character class & ref repeats */ + 1, 1, 1, 1, 1, 1, /* *, *?, +, +?, ?, ?? */ + 1, 1, /* CRRANGE, CRMINRANGE */ + 1, 1, 1, 1, /* Possessive *+, ++, ?+, CRPOSRANGE */ + 1, /* CLASS */ + 1, /* NCLASS */ + 1, /* XCLASS - variable length */ + 0, /* REF */ + 0, /* REFI */ + 0, /* DNREF */ + 0, /* DNREFI */ + 0, /* RECURSE */ + 0, /* CALLOUT */ + 0, /* Alt */ + 0, /* Ket */ + 0, /* KetRmax */ + 0, /* KetRmin */ + 0, /* KetRpos */ + 0, /* Reverse */ + 0, /* Assert */ + 0, /* Assert not */ + 0, /* Assert behind */ + 0, /* Assert behind not */ + 0, 0, /* ONCE, ONCE_NC */ + 0, 0, 0, 0, 0, /* BRA, BRAPOS, CBRA, CBRAPOS, COND */ + 0, 0, 0, 0, 0, /* SBRA, SBRAPOS, SCBRA, SCBRAPOS, SCOND */ + 0, 0, /* CREF, DNCREF */ + 0, 0, /* RREF, DNRREF */ + 0, /* DEF */ + 0, 0, 0, /* BRAZERO, BRAMINZERO, BRAPOSZERO */ + 0, 0, 0, /* MARK, PRUNE, PRUNE_ARG */ + 0, 0, 0, 0, /* SKIP, SKIP_ARG, THEN, THEN_ARG */ + 0, 0, 0, 0, /* COMMIT, FAIL, ACCEPT, ASSERT_ACCEPT */ + 0, 0 /* CLOSE, SKIPZERO */ +}; + +/* These 2 tables allow for compact code for testing for \D, \d, \S, \s, \W, +and \w */ + +static const pcre_uint8 toptable1[] = { + 0, 0, 0, 0, 0, 0, + ctype_digit, ctype_digit, + ctype_space, ctype_space, + ctype_word, ctype_word, + 0, 0 /* OP_ANY, OP_ALLANY */ +}; + +static const pcre_uint8 toptable2[] = { + 0, 0, 0, 0, 0, 0, + ctype_digit, 0, + ctype_space, 0, + ctype_word, 0, + 1, 1 /* OP_ANY, OP_ALLANY */ +}; + + +/* Structure for holding data about a particular state, which is in effect the +current data for an active path through the match tree. It must consist +entirely of ints because the working vector we are passed, and which we put +these structures in, is a vector of ints. */ + +typedef struct stateblock { + int offset; /* Offset to opcode */ + int count; /* Count for repeats */ + int data; /* Some use extra data */ +} stateblock; + +#define INTS_PER_STATEBLOCK (int)(sizeof(stateblock)/sizeof(int)) + + +#ifdef PCRE_DEBUG +/************************************************* +* Print character string * +*************************************************/ + +/* Character string printing function for debugging. + +Arguments: + p points to string + length number of bytes + f where to print + +Returns: nothing +*/ + +static void +pchars(const pcre_uchar *p, int length, FILE *f) +{ +pcre_uint32 c; +while (length-- > 0) + { + if (isprint(c = *(p++))) + fprintf(f, "%c", c); + else + fprintf(f, "\\x{%02x}", c); + } +} +#endif + + + +/************************************************* +* Execute a Regular Expression - DFA engine * +*************************************************/ + +/* This internal function applies a compiled pattern to a subject string, +starting at a given point, using a DFA engine. This function is called from the +external one, possibly multiple times if the pattern is not anchored. The +function calls itself recursively for some kinds of subpattern. + +Arguments: + md the match_data block with fixed information + this_start_code the opening bracket of this subexpression's code + current_subject where we currently are in the subject string + start_offset start offset in the subject string + offsets vector to contain the matching string offsets + offsetcount size of same + workspace vector of workspace + wscount size of same + rlevel function call recursion level + +Returns: > 0 => number of match offset pairs placed in offsets + = 0 => offsets overflowed; longest matches are present + -1 => failed to match + < -1 => some kind of unexpected problem + +The following macros are used for adding states to the two state vectors (one +for the current character, one for the following character). */ + +#define ADD_ACTIVE(x,y) \ + if (active_count++ < wscount) \ + { \ + next_active_state->offset = (x); \ + next_active_state->count = (y); \ + next_active_state++; \ + DPRINTF(("%.*sADD_ACTIVE(%d,%d)\n", rlevel*2-2, SP, (x), (y))); \ + } \ + else return PCRE_ERROR_DFA_WSSIZE + +#define ADD_ACTIVE_DATA(x,y,z) \ + if (active_count++ < wscount) \ + { \ + next_active_state->offset = (x); \ + next_active_state->count = (y); \ + next_active_state->data = (z); \ + next_active_state++; \ + DPRINTF(("%.*sADD_ACTIVE_DATA(%d,%d,%d)\n", rlevel*2-2, SP, (x), (y), (z))); \ + } \ + else return PCRE_ERROR_DFA_WSSIZE + +#define ADD_NEW(x,y) \ + if (new_count++ < wscount) \ + { \ + next_new_state->offset = (x); \ + next_new_state->count = (y); \ + next_new_state++; \ + DPRINTF(("%.*sADD_NEW(%d,%d)\n", rlevel*2-2, SP, (x), (y))); \ + } \ + else return PCRE_ERROR_DFA_WSSIZE + +#define ADD_NEW_DATA(x,y,z) \ + if (new_count++ < wscount) \ + { \ + next_new_state->offset = (x); \ + next_new_state->count = (y); \ + next_new_state->data = (z); \ + next_new_state++; \ + DPRINTF(("%.*sADD_NEW_DATA(%d,%d,%d) line %d\n", rlevel*2-2, SP, \ + (x), (y), (z), __LINE__)); \ + } \ + else return PCRE_ERROR_DFA_WSSIZE + +/* And now, here is the code */ + +static int +internal_dfa_exec( + dfa_match_data *md, + const pcre_uchar *this_start_code, + const pcre_uchar *current_subject, + int start_offset, + int *offsets, + int offsetcount, + int *workspace, + int wscount, + int rlevel) +{ +stateblock *active_states, *new_states, *temp_states; +stateblock *next_active_state, *next_new_state; + +const pcre_uint8 *ctypes, *lcc, *fcc; +const pcre_uchar *ptr; +const pcre_uchar *end_code, *first_op; + +dfa_recursion_info new_recursive; + +int active_count, new_count, match_count; + +/* Some fields in the md block are frequently referenced, so we load them into +independent variables in the hope that this will perform better. */ + +const pcre_uchar *start_subject = md->start_subject; +const pcre_uchar *end_subject = md->end_subject; +const pcre_uchar *start_code = md->start_code; + +#ifdef SUPPORT_UTF +BOOL utf = (md->poptions & PCRE_UTF8) != 0; +#else +BOOL utf = FALSE; +#endif + +BOOL reset_could_continue = FALSE; + +rlevel++; +offsetcount &= (-2); + +wscount -= 2; +wscount = (wscount - (wscount % (INTS_PER_STATEBLOCK * 2))) / + (2 * INTS_PER_STATEBLOCK); + +DPRINTF(("\n%.*s---------------------\n" + "%.*sCall to internal_dfa_exec f=%d\n", + rlevel*2-2, SP, rlevel*2-2, SP, rlevel)); + +ctypes = md->tables + ctypes_offset; +lcc = md->tables + lcc_offset; +fcc = md->tables + fcc_offset; + +match_count = PCRE_ERROR_NOMATCH; /* A negative number */ + +active_states = (stateblock *)(workspace + 2); +next_new_state = new_states = active_states + wscount; +new_count = 0; + +first_op = this_start_code + 1 + LINK_SIZE + + ((*this_start_code == OP_CBRA || *this_start_code == OP_SCBRA || + *this_start_code == OP_CBRAPOS || *this_start_code == OP_SCBRAPOS) + ? IMM2_SIZE:0); + +/* The first thing in any (sub) pattern is a bracket of some sort. Push all +the alternative states onto the list, and find out where the end is. This +makes is possible to use this function recursively, when we want to stop at a +matching internal ket rather than at the end. + +If the first opcode in the first alternative is OP_REVERSE, we are dealing with +a backward assertion. In that case, we have to find out the maximum amount to +move back, and set up each alternative appropriately. */ + +if (*first_op == OP_REVERSE) + { + int max_back = 0; + int gone_back; + + end_code = this_start_code; + do + { + int back = GET(end_code, 2+LINK_SIZE); + if (back > max_back) max_back = back; + end_code += GET(end_code, 1); + } + while (*end_code == OP_ALT); + + /* If we can't go back the amount required for the longest lookbehind + pattern, go back as far as we can; some alternatives may still be viable. */ + +#ifdef SUPPORT_UTF + /* In character mode we have to step back character by character */ + + if (utf) + { + for (gone_back = 0; gone_back < max_back; gone_back++) + { + if (current_subject <= start_subject) break; + current_subject--; + ACROSSCHAR(current_subject > start_subject, *current_subject, current_subject--); + } + } + else +#endif + + /* In byte-mode we can do this quickly. */ + + { + gone_back = (current_subject - max_back < start_subject)? + (int)(current_subject - start_subject) : max_back; + current_subject -= gone_back; + } + + /* Save the earliest consulted character */ + + if (current_subject < md->start_used_ptr) + md->start_used_ptr = current_subject; + + /* Now we can process the individual branches. */ + + end_code = this_start_code; + do + { + int back = GET(end_code, 2+LINK_SIZE); + if (back <= gone_back) + { + int bstate = (int)(end_code - start_code + 2 + 2*LINK_SIZE); + ADD_NEW_DATA(-bstate, 0, gone_back - back); + } + end_code += GET(end_code, 1); + } + while (*end_code == OP_ALT); + } + +/* This is the code for a "normal" subpattern (not a backward assertion). The +start of a whole pattern is always one of these. If we are at the top level, +we may be asked to restart matching from the same point that we reached for a +previous partial match. We still have to scan through the top-level branches to +find the end state. */ + +else + { + end_code = this_start_code; + + /* Restarting */ + + if (rlevel == 1 && (md->moptions & PCRE_DFA_RESTART) != 0) + { + do { end_code += GET(end_code, 1); } while (*end_code == OP_ALT); + new_count = workspace[1]; + if (!workspace[0]) + memcpy(new_states, active_states, new_count * sizeof(stateblock)); + } + + /* Not restarting */ + + else + { + int length = 1 + LINK_SIZE + + ((*this_start_code == OP_CBRA || *this_start_code == OP_SCBRA || + *this_start_code == OP_CBRAPOS || *this_start_code == OP_SCBRAPOS) + ? IMM2_SIZE:0); + do + { + ADD_NEW((int)(end_code - start_code + length), 0); + end_code += GET(end_code, 1); + length = 1 + LINK_SIZE; + } + while (*end_code == OP_ALT); + } + } + +workspace[0] = 0; /* Bit indicating which vector is current */ + +DPRINTF(("%.*sEnd state = %d\n", rlevel*2-2, SP, (int)(end_code - start_code))); + +/* Loop for scanning the subject */ + +ptr = current_subject; +for (;;) + { + int i, j; + int clen, dlen; + pcre_uint32 c, d; + int forced_fail = 0; + BOOL partial_newline = FALSE; + BOOL could_continue = reset_could_continue; + reset_could_continue = FALSE; + + /* Make the new state list into the active state list and empty the + new state list. */ + + temp_states = active_states; + active_states = new_states; + new_states = temp_states; + active_count = new_count; + new_count = 0; + + workspace[0] ^= 1; /* Remember for the restarting feature */ + workspace[1] = active_count; + +#ifdef PCRE_DEBUG + printf("%.*sNext character: rest of subject = \"", rlevel*2-2, SP); + pchars(ptr, STRLEN_UC(ptr), stdout); + printf("\"\n"); + + printf("%.*sActive states: ", rlevel*2-2, SP); + for (i = 0; i < active_count; i++) + printf("%d/%d ", active_states[i].offset, active_states[i].count); + printf("\n"); +#endif + + /* Set the pointers for adding new states */ + + next_active_state = active_states + active_count; + next_new_state = new_states; + + /* Load the current character from the subject outside the loop, as many + different states may want to look at it, and we assume that at least one + will. */ + + if (ptr < end_subject) + { + clen = 1; /* Number of data items in the character */ +#ifdef SUPPORT_UTF + GETCHARLENTEST(c, ptr, clen); +#else + c = *ptr; +#endif /* SUPPORT_UTF */ + } + else + { + clen = 0; /* This indicates the end of the subject */ + c = NOTACHAR; /* This value should never actually be used */ + } + + /* Scan up the active states and act on each one. The result of an action + may be to add more states to the currently active list (e.g. on hitting a + parenthesis) or it may be to put states on the new list, for considering + when we move the character pointer on. */ + + for (i = 0; i < active_count; i++) + { + stateblock *current_state = active_states + i; + BOOL caseless = FALSE; + const pcre_uchar *code; + int state_offset = current_state->offset; + int codevalue, rrc; + int count; + +#ifdef PCRE_DEBUG + printf ("%.*sProcessing state %d c=", rlevel*2-2, SP, state_offset); + if (clen == 0) printf("EOL\n"); + else if (c > 32 && c < 127) printf("'%c'\n", c); + else printf("0x%02x\n", c); +#endif + + /* A negative offset is a special case meaning "hold off going to this + (negated) state until the number of characters in the data field have + been skipped". If the could_continue flag was passed over from a previous + state, arrange for it to passed on. */ + + if (state_offset < 0) + { + if (current_state->data > 0) + { + DPRINTF(("%.*sSkipping this character\n", rlevel*2-2, SP)); + ADD_NEW_DATA(state_offset, current_state->count, + current_state->data - 1); + if (could_continue) reset_could_continue = TRUE; + continue; + } + else + { + current_state->offset = state_offset = -state_offset; + } + } + + /* Check for a duplicate state with the same count, and skip if found. + See the note at the head of this module about the possibility of improving + performance here. */ + + for (j = 0; j < i; j++) + { + if (active_states[j].offset == state_offset && + active_states[j].count == current_state->count) + { + DPRINTF(("%.*sDuplicate state: skipped\n", rlevel*2-2, SP)); + goto NEXT_ACTIVE_STATE; + } + } + + /* The state offset is the offset to the opcode */ + + code = start_code + state_offset; + codevalue = *code; + + /* If this opcode inspects a character, but we are at the end of the + subject, remember the fact for use when testing for a partial match. */ + + if (clen == 0 && poptable[codevalue] != 0) + could_continue = TRUE; + + /* If this opcode is followed by an inline character, load it. It is + tempting to test for the presence of a subject character here, but that + is wrong, because sometimes zero repetitions of the subject are + permitted. + + We also use this mechanism for opcodes such as OP_TYPEPLUS that take an + argument that is not a data character - but is always one byte long because + the values are small. We have to take special action to deal with \P, \p, + \H, \h, \V, \v and \X in this case. To keep the other cases fast, convert + these ones to new opcodes. */ + + if (coptable[codevalue] > 0) + { + dlen = 1; +#ifdef SUPPORT_UTF + if (utf) { GETCHARLEN(d, (code + coptable[codevalue]), dlen); } else +#endif /* SUPPORT_UTF */ + d = code[coptable[codevalue]]; + if (codevalue >= OP_TYPESTAR) + { + switch(d) + { + case OP_ANYBYTE: return PCRE_ERROR_DFA_UITEM; + case OP_NOTPROP: + case OP_PROP: codevalue += OP_PROP_EXTRA; break; + case OP_ANYNL: codevalue += OP_ANYNL_EXTRA; break; + case OP_EXTUNI: codevalue += OP_EXTUNI_EXTRA; break; + case OP_NOT_HSPACE: + case OP_HSPACE: codevalue += OP_HSPACE_EXTRA; break; + case OP_NOT_VSPACE: + case OP_VSPACE: codevalue += OP_VSPACE_EXTRA; break; + default: break; + } + } + } + else + { + dlen = 0; /* Not strictly necessary, but compilers moan */ + d = NOTACHAR; /* if these variables are not set. */ + } + + + /* Now process the individual opcodes */ + + switch (codevalue) + { +/* ========================================================================== */ + /* These cases are never obeyed. This is a fudge that causes a compile- + time error if the vectors coptable or poptable, which are indexed by + opcode, are not the correct length. It seems to be the only way to do + such a check at compile time, as the sizeof() operator does not work + in the C preprocessor. */ + + case OP_TABLE_LENGTH: + case OP_TABLE_LENGTH + + ((sizeof(coptable) == OP_TABLE_LENGTH) && + (sizeof(poptable) == OP_TABLE_LENGTH)): + break; + +/* ========================================================================== */ + /* Reached a closing bracket. If not at the end of the pattern, carry + on with the next opcode. For repeating opcodes, also add the repeat + state. Note that KETRPOS will always be encountered at the end of the + subpattern, because the possessive subpattern repeats are always handled + using recursive calls. Thus, it never adds any new states. + + At the end of the (sub)pattern, unless we have an empty string and + PCRE_NOTEMPTY is set, or PCRE_NOTEMPTY_ATSTART is set and we are at the + start of the subject, save the match data, shifting up all previous + matches so we always have the longest first. */ + + case OP_KET: + case OP_KETRMIN: + case OP_KETRMAX: + case OP_KETRPOS: + if (code != end_code) + { + ADD_ACTIVE(state_offset + 1 + LINK_SIZE, 0); + if (codevalue != OP_KET) + { + ADD_ACTIVE(state_offset - GET(code, 1), 0); + } + } + else + { + if (ptr > current_subject || + ((md->moptions & PCRE_NOTEMPTY) == 0 && + ((md->moptions & PCRE_NOTEMPTY_ATSTART) == 0 || + current_subject > start_subject + md->start_offset))) + { + if (match_count < 0) match_count = (offsetcount >= 2)? 1 : 0; + else if (match_count > 0 && ++match_count * 2 > offsetcount) + match_count = 0; + count = ((match_count == 0)? offsetcount : match_count * 2) - 2; + if (count > 0) memmove(offsets + 2, offsets, count * sizeof(int)); + if (offsetcount >= 2) + { + offsets[0] = (int)(current_subject - start_subject); + offsets[1] = (int)(ptr - start_subject); + DPRINTF(("%.*sSet matched string = \"%.*s\"\n", rlevel*2-2, SP, + offsets[1] - offsets[0], (char *)current_subject)); + } + if ((md->moptions & PCRE_DFA_SHORTEST) != 0) + { + DPRINTF(("%.*sEnd of internal_dfa_exec %d: returning %d\n" + "%.*s---------------------\n\n", rlevel*2-2, SP, rlevel, + match_count, rlevel*2-2, SP)); + return match_count; + } + } + } + break; + +/* ========================================================================== */ + /* These opcodes add to the current list of states without looking + at the current character. */ + + /*-----------------------------------------------------------------*/ + case OP_ALT: + do { code += GET(code, 1); } while (*code == OP_ALT); + ADD_ACTIVE((int)(code - start_code), 0); + break; + + /*-----------------------------------------------------------------*/ + case OP_BRA: + case OP_SBRA: + do + { + ADD_ACTIVE((int)(code - start_code + 1 + LINK_SIZE), 0); + code += GET(code, 1); + } + while (*code == OP_ALT); + break; + + /*-----------------------------------------------------------------*/ + case OP_CBRA: + case OP_SCBRA: + ADD_ACTIVE((int)(code - start_code + 1 + LINK_SIZE + IMM2_SIZE), 0); + code += GET(code, 1); + while (*code == OP_ALT) + { + ADD_ACTIVE((int)(code - start_code + 1 + LINK_SIZE), 0); + code += GET(code, 1); + } + break; + + /*-----------------------------------------------------------------*/ + case OP_BRAZERO: + case OP_BRAMINZERO: + ADD_ACTIVE(state_offset + 1, 0); + code += 1 + GET(code, 2); + while (*code == OP_ALT) code += GET(code, 1); + ADD_ACTIVE((int)(code - start_code + 1 + LINK_SIZE), 0); + break; + + /*-----------------------------------------------------------------*/ + case OP_SKIPZERO: + code += 1 + GET(code, 2); + while (*code == OP_ALT) code += GET(code, 1); + ADD_ACTIVE((int)(code - start_code + 1 + LINK_SIZE), 0); + break; + + /*-----------------------------------------------------------------*/ + case OP_CIRC: + if (ptr == start_subject && (md->moptions & PCRE_NOTBOL) == 0) + { ADD_ACTIVE(state_offset + 1, 0); } + break; + + /*-----------------------------------------------------------------*/ + case OP_CIRCM: + if ((ptr == start_subject && (md->moptions & PCRE_NOTBOL) == 0) || + (ptr != end_subject && WAS_NEWLINE(ptr))) + { ADD_ACTIVE(state_offset + 1, 0); } + break; + + /*-----------------------------------------------------------------*/ + case OP_EOD: + if (ptr >= end_subject) + { + if ((md->moptions & PCRE_PARTIAL_HARD) != 0) + could_continue = TRUE; + else { ADD_ACTIVE(state_offset + 1, 0); } + } + break; + + /*-----------------------------------------------------------------*/ + case OP_SOD: + if (ptr == start_subject) { ADD_ACTIVE(state_offset + 1, 0); } + break; + + /*-----------------------------------------------------------------*/ + case OP_SOM: + if (ptr == start_subject + start_offset) { ADD_ACTIVE(state_offset + 1, 0); } + break; + + +/* ========================================================================== */ + /* These opcodes inspect the next subject character, and sometimes + the previous one as well, but do not have an argument. The variable + clen contains the length of the current character and is zero if we are + at the end of the subject. */ + + /*-----------------------------------------------------------------*/ + case OP_ANY: + if (clen > 0 && !IS_NEWLINE(ptr)) + { + if (ptr + 1 >= md->end_subject && + (md->moptions & (PCRE_PARTIAL_HARD)) != 0 && + NLBLOCK->nltype == NLTYPE_FIXED && + NLBLOCK->nllen == 2 && + c == NLBLOCK->nl[0]) + { + could_continue = partial_newline = TRUE; + } + else + { + ADD_NEW(state_offset + 1, 0); + } + } + break; + + /*-----------------------------------------------------------------*/ + case OP_ALLANY: + if (clen > 0) + { ADD_NEW(state_offset + 1, 0); } + break; + + /*-----------------------------------------------------------------*/ + case OP_EODN: + if (clen == 0 && (md->moptions & PCRE_PARTIAL_HARD) != 0) + could_continue = TRUE; + else if (clen == 0 || (IS_NEWLINE(ptr) && ptr == end_subject - md->nllen)) + { ADD_ACTIVE(state_offset + 1, 0); } + break; + + /*-----------------------------------------------------------------*/ + case OP_DOLL: + if ((md->moptions & PCRE_NOTEOL) == 0) + { + if (clen == 0 && (md->moptions & PCRE_PARTIAL_HARD) != 0) + could_continue = TRUE; + else if (clen == 0 || + ((md->poptions & PCRE_DOLLAR_ENDONLY) == 0 && IS_NEWLINE(ptr) && + (ptr == end_subject - md->nllen) + )) + { ADD_ACTIVE(state_offset + 1, 0); } + else if (ptr + 1 >= md->end_subject && + (md->moptions & (PCRE_PARTIAL_HARD|PCRE_PARTIAL_SOFT)) != 0 && + NLBLOCK->nltype == NLTYPE_FIXED && + NLBLOCK->nllen == 2 && + c == NLBLOCK->nl[0]) + { + if ((md->moptions & PCRE_PARTIAL_HARD) != 0) + { + reset_could_continue = TRUE; + ADD_NEW_DATA(-(state_offset + 1), 0, 1); + } + else could_continue = partial_newline = TRUE; + } + } + break; + + /*-----------------------------------------------------------------*/ + case OP_DOLLM: + if ((md->moptions & PCRE_NOTEOL) == 0) + { + if (clen == 0 && (md->moptions & PCRE_PARTIAL_HARD) != 0) + could_continue = TRUE; + else if (clen == 0 || + ((md->poptions & PCRE_DOLLAR_ENDONLY) == 0 && IS_NEWLINE(ptr))) + { ADD_ACTIVE(state_offset + 1, 0); } + else if (ptr + 1 >= md->end_subject && + (md->moptions & (PCRE_PARTIAL_HARD|PCRE_PARTIAL_SOFT)) != 0 && + NLBLOCK->nltype == NLTYPE_FIXED && + NLBLOCK->nllen == 2 && + c == NLBLOCK->nl[0]) + { + if ((md->moptions & PCRE_PARTIAL_HARD) != 0) + { + reset_could_continue = TRUE; + ADD_NEW_DATA(-(state_offset + 1), 0, 1); + } + else could_continue = partial_newline = TRUE; + } + } + else if (IS_NEWLINE(ptr)) + { ADD_ACTIVE(state_offset + 1, 0); } + break; + + /*-----------------------------------------------------------------*/ + + case OP_DIGIT: + case OP_WHITESPACE: + case OP_WORDCHAR: + if (clen > 0 && c < 256 && + ((ctypes[c] & toptable1[codevalue]) ^ toptable2[codevalue]) != 0) + { ADD_NEW(state_offset + 1, 0); } + break; + + /*-----------------------------------------------------------------*/ + case OP_NOT_DIGIT: + case OP_NOT_WHITESPACE: + case OP_NOT_WORDCHAR: + if (clen > 0 && (c >= 256 || + ((ctypes[c] & toptable1[codevalue]) ^ toptable2[codevalue]) != 0)) + { ADD_NEW(state_offset + 1, 0); } + break; + + /*-----------------------------------------------------------------*/ + case OP_WORD_BOUNDARY: + case OP_NOT_WORD_BOUNDARY: + { + int left_word, right_word; + + if (ptr > start_subject) + { + const pcre_uchar *temp = ptr - 1; + if (temp < md->start_used_ptr) md->start_used_ptr = temp; +#if defined SUPPORT_UTF && !defined COMPILE_PCRE32 + if (utf) { BACKCHAR(temp); } +#endif + GETCHARTEST(d, temp); +#ifdef SUPPORT_UCP + if ((md->poptions & PCRE_UCP) != 0) + { + if (d == '_') left_word = TRUE; else + { + int cat = UCD_CATEGORY(d); + left_word = (cat == ucp_L || cat == ucp_N); + } + } + else +#endif + left_word = d < 256 && (ctypes[d] & ctype_word) != 0; + } + else left_word = FALSE; + + if (clen > 0) + { +#ifdef SUPPORT_UCP + if ((md->poptions & PCRE_UCP) != 0) + { + if (c == '_') right_word = TRUE; else + { + int cat = UCD_CATEGORY(c); + right_word = (cat == ucp_L || cat == ucp_N); + } + } + else +#endif + right_word = c < 256 && (ctypes[c] & ctype_word) != 0; + } + else right_word = FALSE; + + if ((left_word == right_word) == (codevalue == OP_NOT_WORD_BOUNDARY)) + { ADD_ACTIVE(state_offset + 1, 0); } + } + break; + + + /*-----------------------------------------------------------------*/ + /* Check the next character by Unicode property. We will get here only + if the support is in the binary; otherwise a compile-time error occurs. + */ + +#ifdef SUPPORT_UCP + case OP_PROP: + case OP_NOTPROP: + if (clen > 0) + { + BOOL OK; + const pcre_uint32 *cp; + const ucd_record * prop = GET_UCD(c); + switch(code[1]) + { + case PT_ANY: + OK = TRUE; + break; + + case PT_LAMP: + OK = prop->chartype == ucp_Lu || prop->chartype == ucp_Ll || + prop->chartype == ucp_Lt; + break; + + case PT_GC: + OK = PRIV(ucp_gentype)[prop->chartype] == code[2]; + break; + + case PT_PC: + OK = prop->chartype == code[2]; + break; + + case PT_SC: + OK = prop->script == code[2]; + break; + + /* These are specials for combination cases. */ + + case PT_ALNUM: + OK = PRIV(ucp_gentype)[prop->chartype] == ucp_L || + PRIV(ucp_gentype)[prop->chartype] == ucp_N; + break; + + /* Perl space used to exclude VT, but from Perl 5.18 it is included, + which means that Perl space and POSIX space are now identical. PCRE + was changed at release 8.34. */ + + case PT_SPACE: /* Perl space */ + case PT_PXSPACE: /* POSIX space */ + switch(c) + { + HSPACE_CASES: + VSPACE_CASES: + OK = TRUE; + break; + + default: + OK = PRIV(ucp_gentype)[prop->chartype] == ucp_Z; + break; + } + break; + + case PT_WORD: + OK = PRIV(ucp_gentype)[prop->chartype] == ucp_L || + PRIV(ucp_gentype)[prop->chartype] == ucp_N || + c == CHAR_UNDERSCORE; + break; + + case PT_CLIST: + cp = PRIV(ucd_caseless_sets) + code[2]; + for (;;) + { + if (c < *cp) { OK = FALSE; break; } + if (c == *cp++) { OK = TRUE; break; } + } + break; + + case PT_UCNC: + OK = c == CHAR_DOLLAR_SIGN || c == CHAR_COMMERCIAL_AT || + c == CHAR_GRAVE_ACCENT || (c >= 0xa0 && c <= 0xd7ff) || + c >= 0xe000; + break; + + /* Should never occur, but keep compilers from grumbling. */ + + default: + OK = codevalue != OP_PROP; + break; + } + + if (OK == (codevalue == OP_PROP)) { ADD_NEW(state_offset + 3, 0); } + } + break; +#endif + + + +/* ========================================================================== */ + /* These opcodes likewise inspect the subject character, but have an + argument that is not a data character. It is one of these opcodes: + OP_ANY, OP_ALLANY, OP_DIGIT, OP_NOT_DIGIT, OP_WHITESPACE, OP_NOT_SPACE, + OP_WORDCHAR, OP_NOT_WORDCHAR. The value is loaded into d. */ + + case OP_TYPEPLUS: + case OP_TYPEMINPLUS: + case OP_TYPEPOSPLUS: + count = current_state->count; /* Already matched */ + if (count > 0) { ADD_ACTIVE(state_offset + 2, 0); } + if (clen > 0) + { + if (d == OP_ANY && ptr + 1 >= md->end_subject && + (md->moptions & (PCRE_PARTIAL_HARD)) != 0 && + NLBLOCK->nltype == NLTYPE_FIXED && + NLBLOCK->nllen == 2 && + c == NLBLOCK->nl[0]) + { + could_continue = partial_newline = TRUE; + } + else if ((c >= 256 && d != OP_DIGIT && d != OP_WHITESPACE && d != OP_WORDCHAR) || + (c < 256 && + (d != OP_ANY || !IS_NEWLINE(ptr)) && + ((ctypes[c] & toptable1[d]) ^ toptable2[d]) != 0)) + { + if (count > 0 && codevalue == OP_TYPEPOSPLUS) + { + active_count--; /* Remove non-match possibility */ + next_active_state--; + } + count++; + ADD_NEW(state_offset, count); + } + } + break; + + /*-----------------------------------------------------------------*/ + case OP_TYPEQUERY: + case OP_TYPEMINQUERY: + case OP_TYPEPOSQUERY: + ADD_ACTIVE(state_offset + 2, 0); + if (clen > 0) + { + if (d == OP_ANY && ptr + 1 >= md->end_subject && + (md->moptions & (PCRE_PARTIAL_HARD)) != 0 && + NLBLOCK->nltype == NLTYPE_FIXED && + NLBLOCK->nllen == 2 && + c == NLBLOCK->nl[0]) + { + could_continue = partial_newline = TRUE; + } + else if ((c >= 256 && d != OP_DIGIT && d != OP_WHITESPACE && d != OP_WORDCHAR) || + (c < 256 && + (d != OP_ANY || !IS_NEWLINE(ptr)) && + ((ctypes[c] & toptable1[d]) ^ toptable2[d]) != 0)) + { + if (codevalue == OP_TYPEPOSQUERY) + { + active_count--; /* Remove non-match possibility */ + next_active_state--; + } + ADD_NEW(state_offset + 2, 0); + } + } + break; + + /*-----------------------------------------------------------------*/ + case OP_TYPESTAR: + case OP_TYPEMINSTAR: + case OP_TYPEPOSSTAR: + ADD_ACTIVE(state_offset + 2, 0); + if (clen > 0) + { + if (d == OP_ANY && ptr + 1 >= md->end_subject && + (md->moptions & (PCRE_PARTIAL_HARD)) != 0 && + NLBLOCK->nltype == NLTYPE_FIXED && + NLBLOCK->nllen == 2 && + c == NLBLOCK->nl[0]) + { + could_continue = partial_newline = TRUE; + } + else if ((c >= 256 && d != OP_DIGIT && d != OP_WHITESPACE && d != OP_WORDCHAR) || + (c < 256 && + (d != OP_ANY || !IS_NEWLINE(ptr)) && + ((ctypes[c] & toptable1[d]) ^ toptable2[d]) != 0)) + { + if (codevalue == OP_TYPEPOSSTAR) + { + active_count--; /* Remove non-match possibility */ + next_active_state--; + } + ADD_NEW(state_offset, 0); + } + } + break; + + /*-----------------------------------------------------------------*/ + case OP_TYPEEXACT: + count = current_state->count; /* Number already matched */ + if (clen > 0) + { + if (d == OP_ANY && ptr + 1 >= md->end_subject && + (md->moptions & (PCRE_PARTIAL_HARD)) != 0 && + NLBLOCK->nltype == NLTYPE_FIXED && + NLBLOCK->nllen == 2 && + c == NLBLOCK->nl[0]) + { + could_continue = partial_newline = TRUE; + } + else if ((c >= 256 && d != OP_DIGIT && d != OP_WHITESPACE && d != OP_WORDCHAR) || + (c < 256 && + (d != OP_ANY || !IS_NEWLINE(ptr)) && + ((ctypes[c] & toptable1[d]) ^ toptable2[d]) != 0)) + { + if (++count >= (int)GET2(code, 1)) + { ADD_NEW(state_offset + 1 + IMM2_SIZE + 1, 0); } + else + { ADD_NEW(state_offset, count); } + } + } + break; + + /*-----------------------------------------------------------------*/ + case OP_TYPEUPTO: + case OP_TYPEMINUPTO: + case OP_TYPEPOSUPTO: + ADD_ACTIVE(state_offset + 2 + IMM2_SIZE, 0); + count = current_state->count; /* Number already matched */ + if (clen > 0) + { + if (d == OP_ANY && ptr + 1 >= md->end_subject && + (md->moptions & (PCRE_PARTIAL_HARD)) != 0 && + NLBLOCK->nltype == NLTYPE_FIXED && + NLBLOCK->nllen == 2 && + c == NLBLOCK->nl[0]) + { + could_continue = partial_newline = TRUE; + } + else if ((c >= 256 && d != OP_DIGIT && d != OP_WHITESPACE && d != OP_WORDCHAR) || + (c < 256 && + (d != OP_ANY || !IS_NEWLINE(ptr)) && + ((ctypes[c] & toptable1[d]) ^ toptable2[d]) != 0)) + { + if (codevalue == OP_TYPEPOSUPTO) + { + active_count--; /* Remove non-match possibility */ + next_active_state--; + } + if (++count >= (int)GET2(code, 1)) + { ADD_NEW(state_offset + 2 + IMM2_SIZE, 0); } + else + { ADD_NEW(state_offset, count); } + } + } + break; + +/* ========================================================================== */ + /* These are virtual opcodes that are used when something like + OP_TYPEPLUS has OP_PROP, OP_NOTPROP, OP_ANYNL, or OP_EXTUNI as its + argument. It keeps the code above fast for the other cases. The argument + is in the d variable. */ + +#ifdef SUPPORT_UCP + case OP_PROP_EXTRA + OP_TYPEPLUS: + case OP_PROP_EXTRA + OP_TYPEMINPLUS: + case OP_PROP_EXTRA + OP_TYPEPOSPLUS: + count = current_state->count; /* Already matched */ + if (count > 0) { ADD_ACTIVE(state_offset + 4, 0); } + if (clen > 0) + { + BOOL OK; + const pcre_uint32 *cp; + const ucd_record * prop = GET_UCD(c); + switch(code[2]) + { + case PT_ANY: + OK = TRUE; + break; + + case PT_LAMP: + OK = prop->chartype == ucp_Lu || prop->chartype == ucp_Ll || + prop->chartype == ucp_Lt; + break; + + case PT_GC: + OK = PRIV(ucp_gentype)[prop->chartype] == code[3]; + break; + + case PT_PC: + OK = prop->chartype == code[3]; + break; + + case PT_SC: + OK = prop->script == code[3]; + break; + + /* These are specials for combination cases. */ + + case PT_ALNUM: + OK = PRIV(ucp_gentype)[prop->chartype] == ucp_L || + PRIV(ucp_gentype)[prop->chartype] == ucp_N; + break; + + /* Perl space used to exclude VT, but from Perl 5.18 it is included, + which means that Perl space and POSIX space are now identical. PCRE + was changed at release 8.34. */ + + case PT_SPACE: /* Perl space */ + case PT_PXSPACE: /* POSIX space */ + switch(c) + { + HSPACE_CASES: + VSPACE_CASES: + OK = TRUE; + break; + + default: + OK = PRIV(ucp_gentype)[prop->chartype] == ucp_Z; + break; + } + break; + + case PT_WORD: + OK = PRIV(ucp_gentype)[prop->chartype] == ucp_L || + PRIV(ucp_gentype)[prop->chartype] == ucp_N || + c == CHAR_UNDERSCORE; + break; + + case PT_CLIST: + cp = PRIV(ucd_caseless_sets) + code[3]; + for (;;) + { + if (c < *cp) { OK = FALSE; break; } + if (c == *cp++) { OK = TRUE; break; } + } + break; + + case PT_UCNC: + OK = c == CHAR_DOLLAR_SIGN || c == CHAR_COMMERCIAL_AT || + c == CHAR_GRAVE_ACCENT || (c >= 0xa0 && c <= 0xd7ff) || + c >= 0xe000; + break; + + /* Should never occur, but keep compilers from grumbling. */ + + default: + OK = codevalue != OP_PROP; + break; + } + + if (OK == (d == OP_PROP)) + { + if (count > 0 && codevalue == OP_PROP_EXTRA + OP_TYPEPOSPLUS) + { + active_count--; /* Remove non-match possibility */ + next_active_state--; + } + count++; + ADD_NEW(state_offset, count); + } + } + break; + + /*-----------------------------------------------------------------*/ + case OP_EXTUNI_EXTRA + OP_TYPEPLUS: + case OP_EXTUNI_EXTRA + OP_TYPEMINPLUS: + case OP_EXTUNI_EXTRA + OP_TYPEPOSPLUS: + count = current_state->count; /* Already matched */ + if (count > 0) { ADD_ACTIVE(state_offset + 2, 0); } + if (clen > 0) + { + int lgb, rgb; + const pcre_uchar *nptr = ptr + clen; + int ncount = 0; + if (count > 0 && codevalue == OP_EXTUNI_EXTRA + OP_TYPEPOSPLUS) + { + active_count--; /* Remove non-match possibility */ + next_active_state--; + } + lgb = UCD_GRAPHBREAK(c); + while (nptr < end_subject) + { + dlen = 1; + if (!utf) d = *nptr; else { GETCHARLEN(d, nptr, dlen); } + rgb = UCD_GRAPHBREAK(d); + if ((PRIV(ucp_gbtable)[lgb] & (1 << rgb)) == 0) break; + ncount++; + lgb = rgb; + nptr += dlen; + } + count++; + ADD_NEW_DATA(-state_offset, count, ncount); + } + break; +#endif + + /*-----------------------------------------------------------------*/ + case OP_ANYNL_EXTRA + OP_TYPEPLUS: + case OP_ANYNL_EXTRA + OP_TYPEMINPLUS: + case OP_ANYNL_EXTRA + OP_TYPEPOSPLUS: + count = current_state->count; /* Already matched */ + if (count > 0) { ADD_ACTIVE(state_offset + 2, 0); } + if (clen > 0) + { + int ncount = 0; + switch (c) + { + case CHAR_VT: + case CHAR_FF: + case CHAR_NEL: +#ifndef EBCDIC + case 0x2028: + case 0x2029: +#endif /* Not EBCDIC */ + if ((md->moptions & PCRE_BSR_ANYCRLF) != 0) break; + goto ANYNL01; + + case CHAR_CR: + if (ptr + 1 < end_subject && UCHAR21TEST(ptr + 1) == CHAR_LF) ncount = 1; + /* Fall through */ + + ANYNL01: + case CHAR_LF: + if (count > 0 && codevalue == OP_ANYNL_EXTRA + OP_TYPEPOSPLUS) + { + active_count--; /* Remove non-match possibility */ + next_active_state--; + } + count++; + ADD_NEW_DATA(-state_offset, count, ncount); + break; + + default: + break; + } + } + break; + + /*-----------------------------------------------------------------*/ + case OP_VSPACE_EXTRA + OP_TYPEPLUS: + case OP_VSPACE_EXTRA + OP_TYPEMINPLUS: + case OP_VSPACE_EXTRA + OP_TYPEPOSPLUS: + count = current_state->count; /* Already matched */ + if (count > 0) { ADD_ACTIVE(state_offset + 2, 0); } + if (clen > 0) + { + BOOL OK; + switch (c) + { + VSPACE_CASES: + OK = TRUE; + break; + + default: + OK = FALSE; + break; + } + + if (OK == (d == OP_VSPACE)) + { + if (count > 0 && codevalue == OP_VSPACE_EXTRA + OP_TYPEPOSPLUS) + { + active_count--; /* Remove non-match possibility */ + next_active_state--; + } + count++; + ADD_NEW_DATA(-state_offset, count, 0); + } + } + break; + + /*-----------------------------------------------------------------*/ + case OP_HSPACE_EXTRA + OP_TYPEPLUS: + case OP_HSPACE_EXTRA + OP_TYPEMINPLUS: + case OP_HSPACE_EXTRA + OP_TYPEPOSPLUS: + count = current_state->count; /* Already matched */ + if (count > 0) { ADD_ACTIVE(state_offset + 2, 0); } + if (clen > 0) + { + BOOL OK; + switch (c) + { + HSPACE_CASES: + OK = TRUE; + break; + + default: + OK = FALSE; + break; + } + + if (OK == (d == OP_HSPACE)) + { + if (count > 0 && codevalue == OP_HSPACE_EXTRA + OP_TYPEPOSPLUS) + { + active_count--; /* Remove non-match possibility */ + next_active_state--; + } + count++; + ADD_NEW_DATA(-state_offset, count, 0); + } + } + break; + + /*-----------------------------------------------------------------*/ +#ifdef SUPPORT_UCP + case OP_PROP_EXTRA + OP_TYPEQUERY: + case OP_PROP_EXTRA + OP_TYPEMINQUERY: + case OP_PROP_EXTRA + OP_TYPEPOSQUERY: + count = 4; + goto QS1; + + case OP_PROP_EXTRA + OP_TYPESTAR: + case OP_PROP_EXTRA + OP_TYPEMINSTAR: + case OP_PROP_EXTRA + OP_TYPEPOSSTAR: + count = 0; + + QS1: + + ADD_ACTIVE(state_offset + 4, 0); + if (clen > 0) + { + BOOL OK; + const pcre_uint32 *cp; + const ucd_record * prop = GET_UCD(c); + switch(code[2]) + { + case PT_ANY: + OK = TRUE; + break; + + case PT_LAMP: + OK = prop->chartype == ucp_Lu || prop->chartype == ucp_Ll || + prop->chartype == ucp_Lt; + break; + + case PT_GC: + OK = PRIV(ucp_gentype)[prop->chartype] == code[3]; + break; + + case PT_PC: + OK = prop->chartype == code[3]; + break; + + case PT_SC: + OK = prop->script == code[3]; + break; + + /* These are specials for combination cases. */ + + case PT_ALNUM: + OK = PRIV(ucp_gentype)[prop->chartype] == ucp_L || + PRIV(ucp_gentype)[prop->chartype] == ucp_N; + break; + + /* Perl space used to exclude VT, but from Perl 5.18 it is included, + which means that Perl space and POSIX space are now identical. PCRE + was changed at release 8.34. */ + + case PT_SPACE: /* Perl space */ + case PT_PXSPACE: /* POSIX space */ + switch(c) + { + HSPACE_CASES: + VSPACE_CASES: + OK = TRUE; + break; + + default: + OK = PRIV(ucp_gentype)[prop->chartype] == ucp_Z; + break; + } + break; + + case PT_WORD: + OK = PRIV(ucp_gentype)[prop->chartype] == ucp_L || + PRIV(ucp_gentype)[prop->chartype] == ucp_N || + c == CHAR_UNDERSCORE; + break; + + case PT_CLIST: + cp = PRIV(ucd_caseless_sets) + code[3]; + for (;;) + { + if (c < *cp) { OK = FALSE; break; } + if (c == *cp++) { OK = TRUE; break; } + } + break; + + case PT_UCNC: + OK = c == CHAR_DOLLAR_SIGN || c == CHAR_COMMERCIAL_AT || + c == CHAR_GRAVE_ACCENT || (c >= 0xa0 && c <= 0xd7ff) || + c >= 0xe000; + break; + + /* Should never occur, but keep compilers from grumbling. */ + + default: + OK = codevalue != OP_PROP; + break; + } + + if (OK == (d == OP_PROP)) + { + if (codevalue == OP_PROP_EXTRA + OP_TYPEPOSSTAR || + codevalue == OP_PROP_EXTRA + OP_TYPEPOSQUERY) + { + active_count--; /* Remove non-match possibility */ + next_active_state--; + } + ADD_NEW(state_offset + count, 0); + } + } + break; + + /*-----------------------------------------------------------------*/ + case OP_EXTUNI_EXTRA + OP_TYPEQUERY: + case OP_EXTUNI_EXTRA + OP_TYPEMINQUERY: + case OP_EXTUNI_EXTRA + OP_TYPEPOSQUERY: + count = 2; + goto QS2; + + case OP_EXTUNI_EXTRA + OP_TYPESTAR: + case OP_EXTUNI_EXTRA + OP_TYPEMINSTAR: + case OP_EXTUNI_EXTRA + OP_TYPEPOSSTAR: + count = 0; + + QS2: + + ADD_ACTIVE(state_offset + 2, 0); + if (clen > 0) + { + int lgb, rgb; + const pcre_uchar *nptr = ptr + clen; + int ncount = 0; + if (codevalue == OP_EXTUNI_EXTRA + OP_TYPEPOSSTAR || + codevalue == OP_EXTUNI_EXTRA + OP_TYPEPOSQUERY) + { + active_count--; /* Remove non-match possibility */ + next_active_state--; + } + lgb = UCD_GRAPHBREAK(c); + while (nptr < end_subject) + { + dlen = 1; + if (!utf) d = *nptr; else { GETCHARLEN(d, nptr, dlen); } + rgb = UCD_GRAPHBREAK(d); + if ((PRIV(ucp_gbtable)[lgb] & (1 << rgb)) == 0) break; + ncount++; + lgb = rgb; + nptr += dlen; + } + ADD_NEW_DATA(-(state_offset + count), 0, ncount); + } + break; +#endif + + /*-----------------------------------------------------------------*/ + case OP_ANYNL_EXTRA + OP_TYPEQUERY: + case OP_ANYNL_EXTRA + OP_TYPEMINQUERY: + case OP_ANYNL_EXTRA + OP_TYPEPOSQUERY: + count = 2; + goto QS3; + + case OP_ANYNL_EXTRA + OP_TYPESTAR: + case OP_ANYNL_EXTRA + OP_TYPEMINSTAR: + case OP_ANYNL_EXTRA + OP_TYPEPOSSTAR: + count = 0; + + QS3: + ADD_ACTIVE(state_offset + 2, 0); + if (clen > 0) + { + int ncount = 0; + switch (c) + { + case CHAR_VT: + case CHAR_FF: + case CHAR_NEL: +#ifndef EBCDIC + case 0x2028: + case 0x2029: +#endif /* Not EBCDIC */ + if ((md->moptions & PCRE_BSR_ANYCRLF) != 0) break; + goto ANYNL02; + + case CHAR_CR: + if (ptr + 1 < end_subject && UCHAR21TEST(ptr + 1) == CHAR_LF) ncount = 1; + /* Fall through */ + + ANYNL02: + case CHAR_LF: + if (codevalue == OP_ANYNL_EXTRA + OP_TYPEPOSSTAR || + codevalue == OP_ANYNL_EXTRA + OP_TYPEPOSQUERY) + { + active_count--; /* Remove non-match possibility */ + next_active_state--; + } + ADD_NEW_DATA(-(state_offset + (int)count), 0, ncount); + break; + + default: + break; + } + } + break; + + /*-----------------------------------------------------------------*/ + case OP_VSPACE_EXTRA + OP_TYPEQUERY: + case OP_VSPACE_EXTRA + OP_TYPEMINQUERY: + case OP_VSPACE_EXTRA + OP_TYPEPOSQUERY: + count = 2; + goto QS4; + + case OP_VSPACE_EXTRA + OP_TYPESTAR: + case OP_VSPACE_EXTRA + OP_TYPEMINSTAR: + case OP_VSPACE_EXTRA + OP_TYPEPOSSTAR: + count = 0; + + QS4: + ADD_ACTIVE(state_offset + 2, 0); + if (clen > 0) + { + BOOL OK; + switch (c) + { + VSPACE_CASES: + OK = TRUE; + break; + + default: + OK = FALSE; + break; + } + if (OK == (d == OP_VSPACE)) + { + if (codevalue == OP_VSPACE_EXTRA + OP_TYPEPOSSTAR || + codevalue == OP_VSPACE_EXTRA + OP_TYPEPOSQUERY) + { + active_count--; /* Remove non-match possibility */ + next_active_state--; + } + ADD_NEW_DATA(-(state_offset + (int)count), 0, 0); + } + } + break; + + /*-----------------------------------------------------------------*/ + case OP_HSPACE_EXTRA + OP_TYPEQUERY: + case OP_HSPACE_EXTRA + OP_TYPEMINQUERY: + case OP_HSPACE_EXTRA + OP_TYPEPOSQUERY: + count = 2; + goto QS5; + + case OP_HSPACE_EXTRA + OP_TYPESTAR: + case OP_HSPACE_EXTRA + OP_TYPEMINSTAR: + case OP_HSPACE_EXTRA + OP_TYPEPOSSTAR: + count = 0; + + QS5: + ADD_ACTIVE(state_offset + 2, 0); + if (clen > 0) + { + BOOL OK; + switch (c) + { + HSPACE_CASES: + OK = TRUE; + break; + + default: + OK = FALSE; + break; + } + + if (OK == (d == OP_HSPACE)) + { + if (codevalue == OP_HSPACE_EXTRA + OP_TYPEPOSSTAR || + codevalue == OP_HSPACE_EXTRA + OP_TYPEPOSQUERY) + { + active_count--; /* Remove non-match possibility */ + next_active_state--; + } + ADD_NEW_DATA(-(state_offset + (int)count), 0, 0); + } + } + break; + + /*-----------------------------------------------------------------*/ +#ifdef SUPPORT_UCP + case OP_PROP_EXTRA + OP_TYPEEXACT: + case OP_PROP_EXTRA + OP_TYPEUPTO: + case OP_PROP_EXTRA + OP_TYPEMINUPTO: + case OP_PROP_EXTRA + OP_TYPEPOSUPTO: + if (codevalue != OP_PROP_EXTRA + OP_TYPEEXACT) + { ADD_ACTIVE(state_offset + 1 + IMM2_SIZE + 3, 0); } + count = current_state->count; /* Number already matched */ + if (clen > 0) + { + BOOL OK; + const pcre_uint32 *cp; + const ucd_record * prop = GET_UCD(c); + switch(code[1 + IMM2_SIZE + 1]) + { + case PT_ANY: + OK = TRUE; + break; + + case PT_LAMP: + OK = prop->chartype == ucp_Lu || prop->chartype == ucp_Ll || + prop->chartype == ucp_Lt; + break; + + case PT_GC: + OK = PRIV(ucp_gentype)[prop->chartype] == code[1 + IMM2_SIZE + 2]; + break; + + case PT_PC: + OK = prop->chartype == code[1 + IMM2_SIZE + 2]; + break; + + case PT_SC: + OK = prop->script == code[1 + IMM2_SIZE + 2]; + break; + + /* These are specials for combination cases. */ + + case PT_ALNUM: + OK = PRIV(ucp_gentype)[prop->chartype] == ucp_L || + PRIV(ucp_gentype)[prop->chartype] == ucp_N; + break; + + /* Perl space used to exclude VT, but from Perl 5.18 it is included, + which means that Perl space and POSIX space are now identical. PCRE + was changed at release 8.34. */ + + case PT_SPACE: /* Perl space */ + case PT_PXSPACE: /* POSIX space */ + switch(c) + { + HSPACE_CASES: + VSPACE_CASES: + OK = TRUE; + break; + + default: + OK = PRIV(ucp_gentype)[prop->chartype] == ucp_Z; + break; + } + break; + + case PT_WORD: + OK = PRIV(ucp_gentype)[prop->chartype] == ucp_L || + PRIV(ucp_gentype)[prop->chartype] == ucp_N || + c == CHAR_UNDERSCORE; + break; + + case PT_CLIST: + cp = PRIV(ucd_caseless_sets) + code[1 + IMM2_SIZE + 2]; + for (;;) + { + if (c < *cp) { OK = FALSE; break; } + if (c == *cp++) { OK = TRUE; break; } + } + break; + + case PT_UCNC: + OK = c == CHAR_DOLLAR_SIGN || c == CHAR_COMMERCIAL_AT || + c == CHAR_GRAVE_ACCENT || (c >= 0xa0 && c <= 0xd7ff) || + c >= 0xe000; + break; + + /* Should never occur, but keep compilers from grumbling. */ + + default: + OK = codevalue != OP_PROP; + break; + } + + if (OK == (d == OP_PROP)) + { + if (codevalue == OP_PROP_EXTRA + OP_TYPEPOSUPTO) + { + active_count--; /* Remove non-match possibility */ + next_active_state--; + } + if (++count >= (int)GET2(code, 1)) + { ADD_NEW(state_offset + 1 + IMM2_SIZE + 3, 0); } + else + { ADD_NEW(state_offset, count); } + } + } + break; + + /*-----------------------------------------------------------------*/ + case OP_EXTUNI_EXTRA + OP_TYPEEXACT: + case OP_EXTUNI_EXTRA + OP_TYPEUPTO: + case OP_EXTUNI_EXTRA + OP_TYPEMINUPTO: + case OP_EXTUNI_EXTRA + OP_TYPEPOSUPTO: + if (codevalue != OP_EXTUNI_EXTRA + OP_TYPEEXACT) + { ADD_ACTIVE(state_offset + 2 + IMM2_SIZE, 0); } + count = current_state->count; /* Number already matched */ + if (clen > 0) + { + int lgb, rgb; + const pcre_uchar *nptr = ptr + clen; + int ncount = 0; + if (codevalue == OP_EXTUNI_EXTRA + OP_TYPEPOSUPTO) + { + active_count--; /* Remove non-match possibility */ + next_active_state--; + } + lgb = UCD_GRAPHBREAK(c); + while (nptr < end_subject) + { + dlen = 1; + if (!utf) d = *nptr; else { GETCHARLEN(d, nptr, dlen); } + rgb = UCD_GRAPHBREAK(d); + if ((PRIV(ucp_gbtable)[lgb] & (1 << rgb)) == 0) break; + ncount++; + lgb = rgb; + nptr += dlen; + } + if (nptr >= end_subject && (md->moptions & PCRE_PARTIAL_HARD) != 0) + reset_could_continue = TRUE; + if (++count >= (int)GET2(code, 1)) + { ADD_NEW_DATA(-(state_offset + 2 + IMM2_SIZE), 0, ncount); } + else + { ADD_NEW_DATA(-state_offset, count, ncount); } + } + break; +#endif + + /*-----------------------------------------------------------------*/ + case OP_ANYNL_EXTRA + OP_TYPEEXACT: + case OP_ANYNL_EXTRA + OP_TYPEUPTO: + case OP_ANYNL_EXTRA + OP_TYPEMINUPTO: + case OP_ANYNL_EXTRA + OP_TYPEPOSUPTO: + if (codevalue != OP_ANYNL_EXTRA + OP_TYPEEXACT) + { ADD_ACTIVE(state_offset + 2 + IMM2_SIZE, 0); } + count = current_state->count; /* Number already matched */ + if (clen > 0) + { + int ncount = 0; + switch (c) + { + case CHAR_VT: + case CHAR_FF: + case CHAR_NEL: +#ifndef EBCDIC + case 0x2028: + case 0x2029: +#endif /* Not EBCDIC */ + if ((md->moptions & PCRE_BSR_ANYCRLF) != 0) break; + goto ANYNL03; + + case CHAR_CR: + if (ptr + 1 < end_subject && UCHAR21TEST(ptr + 1) == CHAR_LF) ncount = 1; + /* Fall through */ + + ANYNL03: + case CHAR_LF: + if (codevalue == OP_ANYNL_EXTRA + OP_TYPEPOSUPTO) + { + active_count--; /* Remove non-match possibility */ + next_active_state--; + } + if (++count >= (int)GET2(code, 1)) + { ADD_NEW_DATA(-(state_offset + 2 + IMM2_SIZE), 0, ncount); } + else + { ADD_NEW_DATA(-state_offset, count, ncount); } + break; + + default: + break; + } + } + break; + + /*-----------------------------------------------------------------*/ + case OP_VSPACE_EXTRA + OP_TYPEEXACT: + case OP_VSPACE_EXTRA + OP_TYPEUPTO: + case OP_VSPACE_EXTRA + OP_TYPEMINUPTO: + case OP_VSPACE_EXTRA + OP_TYPEPOSUPTO: + if (codevalue != OP_VSPACE_EXTRA + OP_TYPEEXACT) + { ADD_ACTIVE(state_offset + 2 + IMM2_SIZE, 0); } + count = current_state->count; /* Number already matched */ + if (clen > 0) + { + BOOL OK; + switch (c) + { + VSPACE_CASES: + OK = TRUE; + break; + + default: + OK = FALSE; + } + + if (OK == (d == OP_VSPACE)) + { + if (codevalue == OP_VSPACE_EXTRA + OP_TYPEPOSUPTO) + { + active_count--; /* Remove non-match possibility */ + next_active_state--; + } + if (++count >= (int)GET2(code, 1)) + { ADD_NEW_DATA(-(state_offset + 2 + IMM2_SIZE), 0, 0); } + else + { ADD_NEW_DATA(-state_offset, count, 0); } + } + } + break; + + /*-----------------------------------------------------------------*/ + case OP_HSPACE_EXTRA + OP_TYPEEXACT: + case OP_HSPACE_EXTRA + OP_TYPEUPTO: + case OP_HSPACE_EXTRA + OP_TYPEMINUPTO: + case OP_HSPACE_EXTRA + OP_TYPEPOSUPTO: + if (codevalue != OP_HSPACE_EXTRA + OP_TYPEEXACT) + { ADD_ACTIVE(state_offset + 2 + IMM2_SIZE, 0); } + count = current_state->count; /* Number already matched */ + if (clen > 0) + { + BOOL OK; + switch (c) + { + HSPACE_CASES: + OK = TRUE; + break; + + default: + OK = FALSE; + break; + } + + if (OK == (d == OP_HSPACE)) + { + if (codevalue == OP_HSPACE_EXTRA + OP_TYPEPOSUPTO) + { + active_count--; /* Remove non-match possibility */ + next_active_state--; + } + if (++count >= (int)GET2(code, 1)) + { ADD_NEW_DATA(-(state_offset + 2 + IMM2_SIZE), 0, 0); } + else + { ADD_NEW_DATA(-state_offset, count, 0); } + } + } + break; + +/* ========================================================================== */ + /* These opcodes are followed by a character that is usually compared + to the current subject character; it is loaded into d. We still get + here even if there is no subject character, because in some cases zero + repetitions are permitted. */ + + /*-----------------------------------------------------------------*/ + case OP_CHAR: + if (clen > 0 && c == d) { ADD_NEW(state_offset + dlen + 1, 0); } + break; + + /*-----------------------------------------------------------------*/ + case OP_CHARI: + if (clen == 0) break; + +#ifdef SUPPORT_UTF + if (utf) + { + if (c == d) { ADD_NEW(state_offset + dlen + 1, 0); } else + { + unsigned int othercase; + if (c < 128) + othercase = fcc[c]; + else + /* If we have Unicode property support, we can use it to test the + other case of the character. */ +#ifdef SUPPORT_UCP + othercase = UCD_OTHERCASE(c); +#else + othercase = NOTACHAR; +#endif + + if (d == othercase) { ADD_NEW(state_offset + dlen + 1, 0); } + } + } + else +#endif /* SUPPORT_UTF */ + /* Not UTF mode */ + { + if (TABLE_GET(c, lcc, c) == TABLE_GET(d, lcc, d)) + { ADD_NEW(state_offset + 2, 0); } + } + break; + + +#ifdef SUPPORT_UCP + /*-----------------------------------------------------------------*/ + /* This is a tricky one because it can match more than one character. + Find out how many characters to skip, and then set up a negative state + to wait for them to pass before continuing. */ + + case OP_EXTUNI: + if (clen > 0) + { + int lgb, rgb; + const pcre_uchar *nptr = ptr + clen; + int ncount = 0; + lgb = UCD_GRAPHBREAK(c); + while (nptr < end_subject) + { + dlen = 1; + if (!utf) d = *nptr; else { GETCHARLEN(d, nptr, dlen); } + rgb = UCD_GRAPHBREAK(d); + if ((PRIV(ucp_gbtable)[lgb] & (1 << rgb)) == 0) break; + ncount++; + lgb = rgb; + nptr += dlen; + } + if (nptr >= end_subject && (md->moptions & PCRE_PARTIAL_HARD) != 0) + reset_could_continue = TRUE; + ADD_NEW_DATA(-(state_offset + 1), 0, ncount); + } + break; +#endif + + /*-----------------------------------------------------------------*/ + /* This is a tricky like EXTUNI because it too can match more than one + character (when CR is followed by LF). In this case, set up a negative + state to wait for one character to pass before continuing. */ + + case OP_ANYNL: + if (clen > 0) switch(c) + { + case CHAR_VT: + case CHAR_FF: + case CHAR_NEL: +#ifndef EBCDIC + case 0x2028: + case 0x2029: +#endif /* Not EBCDIC */ + if ((md->moptions & PCRE_BSR_ANYCRLF) != 0) break; + + case CHAR_LF: + ADD_NEW(state_offset + 1, 0); + break; + + case CHAR_CR: + if (ptr + 1 >= end_subject) + { + ADD_NEW(state_offset + 1, 0); + if ((md->moptions & PCRE_PARTIAL_HARD) != 0) + reset_could_continue = TRUE; + } + else if (UCHAR21TEST(ptr + 1) == CHAR_LF) + { + ADD_NEW_DATA(-(state_offset + 1), 0, 1); + } + else + { + ADD_NEW(state_offset + 1, 0); + } + break; + } + break; + + /*-----------------------------------------------------------------*/ + case OP_NOT_VSPACE: + if (clen > 0) switch(c) + { + VSPACE_CASES: + break; + + default: + ADD_NEW(state_offset + 1, 0); + break; + } + break; + + /*-----------------------------------------------------------------*/ + case OP_VSPACE: + if (clen > 0) switch(c) + { + VSPACE_CASES: + ADD_NEW(state_offset + 1, 0); + break; + + default: + break; + } + break; + + /*-----------------------------------------------------------------*/ + case OP_NOT_HSPACE: + if (clen > 0) switch(c) + { + HSPACE_CASES: + break; + + default: + ADD_NEW(state_offset + 1, 0); + break; + } + break; + + /*-----------------------------------------------------------------*/ + case OP_HSPACE: + if (clen > 0) switch(c) + { + HSPACE_CASES: + ADD_NEW(state_offset + 1, 0); + break; + + default: + break; + } + break; + + /*-----------------------------------------------------------------*/ + /* Match a negated single character casefully. */ + + case OP_NOT: + if (clen > 0 && c != d) { ADD_NEW(state_offset + dlen + 1, 0); } + break; + + /*-----------------------------------------------------------------*/ + /* Match a negated single character caselessly. */ + + case OP_NOTI: + if (clen > 0) + { + unsigned int otherd; +#ifdef SUPPORT_UTF + if (utf && d >= 128) + { +#ifdef SUPPORT_UCP + otherd = UCD_OTHERCASE(d); +#endif /* SUPPORT_UCP */ + } + else +#endif /* SUPPORT_UTF */ + otherd = TABLE_GET(d, fcc, d); + if (c != d && c != otherd) + { ADD_NEW(state_offset + dlen + 1, 0); } + } + break; + + /*-----------------------------------------------------------------*/ + case OP_PLUSI: + case OP_MINPLUSI: + case OP_POSPLUSI: + case OP_NOTPLUSI: + case OP_NOTMINPLUSI: + case OP_NOTPOSPLUSI: + caseless = TRUE; + codevalue -= OP_STARI - OP_STAR; + + /* Fall through */ + case OP_PLUS: + case OP_MINPLUS: + case OP_POSPLUS: + case OP_NOTPLUS: + case OP_NOTMINPLUS: + case OP_NOTPOSPLUS: + count = current_state->count; /* Already matched */ + if (count > 0) { ADD_ACTIVE(state_offset + dlen + 1, 0); } + if (clen > 0) + { + pcre_uint32 otherd = NOTACHAR; + if (caseless) + { +#ifdef SUPPORT_UTF + if (utf && d >= 128) + { +#ifdef SUPPORT_UCP + otherd = UCD_OTHERCASE(d); +#endif /* SUPPORT_UCP */ + } + else +#endif /* SUPPORT_UTF */ + otherd = TABLE_GET(d, fcc, d); + } + if ((c == d || c == otherd) == (codevalue < OP_NOTSTAR)) + { + if (count > 0 && + (codevalue == OP_POSPLUS || codevalue == OP_NOTPOSPLUS)) + { + active_count--; /* Remove non-match possibility */ + next_active_state--; + } + count++; + ADD_NEW(state_offset, count); + } + } + break; + + /*-----------------------------------------------------------------*/ + case OP_QUERYI: + case OP_MINQUERYI: + case OP_POSQUERYI: + case OP_NOTQUERYI: + case OP_NOTMINQUERYI: + case OP_NOTPOSQUERYI: + caseless = TRUE; + codevalue -= OP_STARI - OP_STAR; + /* Fall through */ + case OP_QUERY: + case OP_MINQUERY: + case OP_POSQUERY: + case OP_NOTQUERY: + case OP_NOTMINQUERY: + case OP_NOTPOSQUERY: + ADD_ACTIVE(state_offset + dlen + 1, 0); + if (clen > 0) + { + pcre_uint32 otherd = NOTACHAR; + if (caseless) + { +#ifdef SUPPORT_UTF + if (utf && d >= 128) + { +#ifdef SUPPORT_UCP + otherd = UCD_OTHERCASE(d); +#endif /* SUPPORT_UCP */ + } + else +#endif /* SUPPORT_UTF */ + otherd = TABLE_GET(d, fcc, d); + } + if ((c == d || c == otherd) == (codevalue < OP_NOTSTAR)) + { + if (codevalue == OP_POSQUERY || codevalue == OP_NOTPOSQUERY) + { + active_count--; /* Remove non-match possibility */ + next_active_state--; + } + ADD_NEW(state_offset + dlen + 1, 0); + } + } + break; + + /*-----------------------------------------------------------------*/ + case OP_STARI: + case OP_MINSTARI: + case OP_POSSTARI: + case OP_NOTSTARI: + case OP_NOTMINSTARI: + case OP_NOTPOSSTARI: + caseless = TRUE; + codevalue -= OP_STARI - OP_STAR; + /* Fall through */ + case OP_STAR: + case OP_MINSTAR: + case OP_POSSTAR: + case OP_NOTSTAR: + case OP_NOTMINSTAR: + case OP_NOTPOSSTAR: + ADD_ACTIVE(state_offset + dlen + 1, 0); + if (clen > 0) + { + pcre_uint32 otherd = NOTACHAR; + if (caseless) + { +#ifdef SUPPORT_UTF + if (utf && d >= 128) + { +#ifdef SUPPORT_UCP + otherd = UCD_OTHERCASE(d); +#endif /* SUPPORT_UCP */ + } + else +#endif /* SUPPORT_UTF */ + otherd = TABLE_GET(d, fcc, d); + } + if ((c == d || c == otherd) == (codevalue < OP_NOTSTAR)) + { + if (codevalue == OP_POSSTAR || codevalue == OP_NOTPOSSTAR) + { + active_count--; /* Remove non-match possibility */ + next_active_state--; + } + ADD_NEW(state_offset, 0); + } + } + break; + + /*-----------------------------------------------------------------*/ + case OP_EXACTI: + case OP_NOTEXACTI: + caseless = TRUE; + codevalue -= OP_STARI - OP_STAR; + /* Fall through */ + case OP_EXACT: + case OP_NOTEXACT: + count = current_state->count; /* Number already matched */ + if (clen > 0) + { + pcre_uint32 otherd = NOTACHAR; + if (caseless) + { +#ifdef SUPPORT_UTF + if (utf && d >= 128) + { +#ifdef SUPPORT_UCP + otherd = UCD_OTHERCASE(d); +#endif /* SUPPORT_UCP */ + } + else +#endif /* SUPPORT_UTF */ + otherd = TABLE_GET(d, fcc, d); + } + if ((c == d || c == otherd) == (codevalue < OP_NOTSTAR)) + { + if (++count >= (int)GET2(code, 1)) + { ADD_NEW(state_offset + dlen + 1 + IMM2_SIZE, 0); } + else + { ADD_NEW(state_offset, count); } + } + } + break; + + /*-----------------------------------------------------------------*/ + case OP_UPTOI: + case OP_MINUPTOI: + case OP_POSUPTOI: + case OP_NOTUPTOI: + case OP_NOTMINUPTOI: + case OP_NOTPOSUPTOI: + caseless = TRUE; + codevalue -= OP_STARI - OP_STAR; + /* Fall through */ + case OP_UPTO: + case OP_MINUPTO: + case OP_POSUPTO: + case OP_NOTUPTO: + case OP_NOTMINUPTO: + case OP_NOTPOSUPTO: + ADD_ACTIVE(state_offset + dlen + 1 + IMM2_SIZE, 0); + count = current_state->count; /* Number already matched */ + if (clen > 0) + { + pcre_uint32 otherd = NOTACHAR; + if (caseless) + { +#ifdef SUPPORT_UTF + if (utf && d >= 128) + { +#ifdef SUPPORT_UCP + otherd = UCD_OTHERCASE(d); +#endif /* SUPPORT_UCP */ + } + else +#endif /* SUPPORT_UTF */ + otherd = TABLE_GET(d, fcc, d); + } + if ((c == d || c == otherd) == (codevalue < OP_NOTSTAR)) + { + if (codevalue == OP_POSUPTO || codevalue == OP_NOTPOSUPTO) + { + active_count--; /* Remove non-match possibility */ + next_active_state--; + } + if (++count >= (int)GET2(code, 1)) + { ADD_NEW(state_offset + dlen + 1 + IMM2_SIZE, 0); } + else + { ADD_NEW(state_offset, count); } + } + } + break; + + +/* ========================================================================== */ + /* These are the class-handling opcodes */ + + case OP_CLASS: + case OP_NCLASS: + case OP_XCLASS: + { + BOOL isinclass = FALSE; + int next_state_offset; + const pcre_uchar *ecode; + + /* For a simple class, there is always just a 32-byte table, and we + can set isinclass from it. */ + + if (codevalue != OP_XCLASS) + { + ecode = code + 1 + (32 / sizeof(pcre_uchar)); + if (clen > 0) + { + isinclass = (c > 255)? (codevalue == OP_NCLASS) : + ((((pcre_uint8 *)(code + 1))[c/8] & (1 << (c&7))) != 0); + } + } + + /* An extended class may have a table or a list of single characters, + ranges, or both, and it may be positive or negative. There's a + function that sorts all this out. */ + + else + { + ecode = code + GET(code, 1); + if (clen > 0) isinclass = PRIV(xclass)(c, code + 1 + LINK_SIZE, utf); + } + + /* At this point, isinclass is set for all kinds of class, and ecode + points to the byte after the end of the class. If there is a + quantifier, this is where it will be. */ + + next_state_offset = (int)(ecode - start_code); + + switch (*ecode) + { + case OP_CRSTAR: + case OP_CRMINSTAR: + case OP_CRPOSSTAR: + ADD_ACTIVE(next_state_offset + 1, 0); + if (isinclass) + { + if (*ecode == OP_CRPOSSTAR) + { + active_count--; /* Remove non-match possibility */ + next_active_state--; + } + ADD_NEW(state_offset, 0); + } + break; + + case OP_CRPLUS: + case OP_CRMINPLUS: + case OP_CRPOSPLUS: + count = current_state->count; /* Already matched */ + if (count > 0) { ADD_ACTIVE(next_state_offset + 1, 0); } + if (isinclass) + { + if (count > 0 && *ecode == OP_CRPOSPLUS) + { + active_count--; /* Remove non-match possibility */ + next_active_state--; + } + count++; + ADD_NEW(state_offset, count); + } + break; + + case OP_CRQUERY: + case OP_CRMINQUERY: + case OP_CRPOSQUERY: + ADD_ACTIVE(next_state_offset + 1, 0); + if (isinclass) + { + if (*ecode == OP_CRPOSQUERY) + { + active_count--; /* Remove non-match possibility */ + next_active_state--; + } + ADD_NEW(next_state_offset + 1, 0); + } + break; + + case OP_CRRANGE: + case OP_CRMINRANGE: + case OP_CRPOSRANGE: + count = current_state->count; /* Already matched */ + if (count >= (int)GET2(ecode, 1)) + { ADD_ACTIVE(next_state_offset + 1 + 2 * IMM2_SIZE, 0); } + if (isinclass) + { + int max = (int)GET2(ecode, 1 + IMM2_SIZE); + if (*ecode == OP_CRPOSRANGE) + { + active_count--; /* Remove non-match possibility */ + next_active_state--; + } + if (++count >= max && max != 0) /* Max 0 => no limit */ + { ADD_NEW(next_state_offset + 1 + 2 * IMM2_SIZE, 0); } + else + { ADD_NEW(state_offset, count); } + } + break; + + default: + if (isinclass) { ADD_NEW(next_state_offset, 0); } + break; + } + } + break; + +/* ========================================================================== */ + /* These are the opcodes for fancy brackets of various kinds. We have + to use recursion in order to handle them. The "always failing" assertion + (?!) is optimised to OP_FAIL when compiling, so we have to support that, + though the other "backtracking verbs" are not supported. */ + + case OP_FAIL: + forced_fail++; /* Count FAILs for multiple states */ + break; + + case OP_ASSERT: + case OP_ASSERT_NOT: + case OP_ASSERTBACK: + case OP_ASSERTBACK_NOT: + { + int rc; + int local_offsets[2]; + int local_workspace[1000]; + const pcre_uchar *endasscode = code + GET(code, 1); + + while (*endasscode == OP_ALT) endasscode += GET(endasscode, 1); + + rc = internal_dfa_exec( + md, /* static match data */ + code, /* this subexpression's code */ + ptr, /* where we currently are */ + (int)(ptr - start_subject), /* start offset */ + local_offsets, /* offset vector */ + sizeof(local_offsets)/sizeof(int), /* size of same */ + local_workspace, /* workspace vector */ + sizeof(local_workspace)/sizeof(int), /* size of same */ + rlevel); /* function recursion level */ + + if (rc == PCRE_ERROR_DFA_UITEM) return rc; + if ((rc >= 0) == (codevalue == OP_ASSERT || codevalue == OP_ASSERTBACK)) + { ADD_ACTIVE((int)(endasscode + LINK_SIZE + 1 - start_code), 0); } + } + break; + + /*-----------------------------------------------------------------*/ + case OP_COND: + case OP_SCOND: + { + int local_offsets[1000]; + int local_workspace[1000]; + int codelink = GET(code, 1); + int condcode; + + /* Because of the way auto-callout works during compile, a callout item + is inserted between OP_COND and an assertion condition. This does not + happen for the other conditions. */ + + if (code[LINK_SIZE+1] == OP_CALLOUT) + { + rrc = 0; + if (PUBL(callout) != NULL) + { + PUBL(callout_block) cb; + cb.version = 1; /* Version 1 of the callout block */ + cb.callout_number = code[LINK_SIZE+2]; + cb.offset_vector = offsets; +#if defined COMPILE_PCRE8 + cb.subject = (PCRE_SPTR)start_subject; +#elif defined COMPILE_PCRE16 + cb.subject = (PCRE_SPTR16)start_subject; +#elif defined COMPILE_PCRE32 + cb.subject = (PCRE_SPTR32)start_subject; +#endif + cb.subject_length = (int)(end_subject - start_subject); + cb.start_match = (int)(current_subject - start_subject); + cb.current_position = (int)(ptr - start_subject); + cb.pattern_position = GET(code, LINK_SIZE + 3); + cb.next_item_length = GET(code, 3 + 2*LINK_SIZE); + cb.capture_top = 1; + cb.capture_last = -1; + cb.callout_data = md->callout_data; + cb.mark = NULL; /* No (*MARK) support */ + if ((rrc = (*PUBL(callout))(&cb)) < 0) return rrc; /* Abandon */ + } + if (rrc > 0) break; /* Fail this thread */ + code += PRIV(OP_lengths)[OP_CALLOUT]; /* Skip callout data */ + } + + condcode = code[LINK_SIZE+1]; + + /* Back reference conditions and duplicate named recursion conditions + are not supported */ + + if (condcode == OP_CREF || condcode == OP_DNCREF || + condcode == OP_DNRREF) + return PCRE_ERROR_DFA_UCOND; + + /* The DEFINE condition is always false */ + + if (condcode == OP_DEF) + { ADD_ACTIVE(state_offset + codelink + LINK_SIZE + 1, 0); } + + /* The only supported version of OP_RREF is for the value RREF_ANY, + which means "test if in any recursion". We can't test for specifically + recursed groups. */ + + else if (condcode == OP_RREF) + { + int value = GET2(code, LINK_SIZE + 2); + if (value != RREF_ANY) return PCRE_ERROR_DFA_UCOND; + if (md->recursive != NULL) + { ADD_ACTIVE(state_offset + LINK_SIZE + 2 + IMM2_SIZE, 0); } + else { ADD_ACTIVE(state_offset + codelink + LINK_SIZE + 1, 0); } + } + + /* Otherwise, the condition is an assertion */ + + else + { + int rc; + const pcre_uchar *asscode = code + LINK_SIZE + 1; + const pcre_uchar *endasscode = asscode + GET(asscode, 1); + + while (*endasscode == OP_ALT) endasscode += GET(endasscode, 1); + + rc = internal_dfa_exec( + md, /* fixed match data */ + asscode, /* this subexpression's code */ + ptr, /* where we currently are */ + (int)(ptr - start_subject), /* start offset */ + local_offsets, /* offset vector */ + sizeof(local_offsets)/sizeof(int), /* size of same */ + local_workspace, /* workspace vector */ + sizeof(local_workspace)/sizeof(int), /* size of same */ + rlevel); /* function recursion level */ + + if (rc == PCRE_ERROR_DFA_UITEM) return rc; + if ((rc >= 0) == + (condcode == OP_ASSERT || condcode == OP_ASSERTBACK)) + { ADD_ACTIVE((int)(endasscode + LINK_SIZE + 1 - start_code), 0); } + else + { ADD_ACTIVE(state_offset + codelink + LINK_SIZE + 1, 0); } + } + } + break; + + /*-----------------------------------------------------------------*/ + case OP_RECURSE: + { + dfa_recursion_info *ri; + int local_offsets[1000]; + int local_workspace[1000]; + const pcre_uchar *callpat = start_code + GET(code, 1); + int recno = (callpat == md->start_code)? 0 : + GET2(callpat, 1 + LINK_SIZE); + int rc; + + DPRINTF(("%.*sStarting regex recursion\n", rlevel*2-2, SP)); + + /* Check for repeating a recursion without advancing the subject + pointer. This should catch convoluted mutual recursions. (Some simple + cases are caught at compile time.) */ + + for (ri = md->recursive; ri != NULL; ri = ri->prevrec) + if (recno == ri->group_num && ptr == ri->subject_position) + return PCRE_ERROR_RECURSELOOP; + + /* Remember this recursion and where we started it so as to + catch infinite loops. */ + + new_recursive.group_num = recno; + new_recursive.subject_position = ptr; + new_recursive.prevrec = md->recursive; + md->recursive = &new_recursive; + + rc = internal_dfa_exec( + md, /* fixed match data */ + callpat, /* this subexpression's code */ + ptr, /* where we currently are */ + (int)(ptr - start_subject), /* start offset */ + local_offsets, /* offset vector */ + sizeof(local_offsets)/sizeof(int), /* size of same */ + local_workspace, /* workspace vector */ + sizeof(local_workspace)/sizeof(int), /* size of same */ + rlevel); /* function recursion level */ + + md->recursive = new_recursive.prevrec; /* Done this recursion */ + + DPRINTF(("%.*sReturn from regex recursion: rc=%d\n", rlevel*2-2, SP, + rc)); + + /* Ran out of internal offsets */ + + if (rc == 0) return PCRE_ERROR_DFA_RECURSE; + + /* For each successful matched substring, set up the next state with a + count of characters to skip before trying it. Note that the count is in + characters, not bytes. */ + + if (rc > 0) + { + for (rc = rc*2 - 2; rc >= 0; rc -= 2) + { + int charcount = local_offsets[rc+1] - local_offsets[rc]; +#if defined SUPPORT_UTF && !defined COMPILE_PCRE32 + if (utf) + { + const pcre_uchar *p = start_subject + local_offsets[rc]; + const pcre_uchar *pp = start_subject + local_offsets[rc+1]; + while (p < pp) if (NOT_FIRSTCHAR(*p++)) charcount--; + } +#endif + if (charcount > 0) + { + ADD_NEW_DATA(-(state_offset + LINK_SIZE + 1), 0, (charcount - 1)); + } + else + { + ADD_ACTIVE(state_offset + LINK_SIZE + 1, 0); + } + } + } + else if (rc != PCRE_ERROR_NOMATCH) return rc; + } + break; + + /*-----------------------------------------------------------------*/ + case OP_BRAPOS: + case OP_SBRAPOS: + case OP_CBRAPOS: + case OP_SCBRAPOS: + case OP_BRAPOSZERO: + { + int charcount, matched_count; + const pcre_uchar *local_ptr = ptr; + BOOL allow_zero; + + if (codevalue == OP_BRAPOSZERO) + { + allow_zero = TRUE; + codevalue = *(++code); /* Codevalue will be one of above BRAs */ + } + else allow_zero = FALSE; + + /* Loop to match the subpattern as many times as possible as if it were + a complete pattern. */ + + for (matched_count = 0;; matched_count++) + { + int local_offsets[2]; + int local_workspace[1000]; + + int rc = internal_dfa_exec( + md, /* fixed match data */ + code, /* this subexpression's code */ + local_ptr, /* where we currently are */ + (int)(ptr - start_subject), /* start offset */ + local_offsets, /* offset vector */ + sizeof(local_offsets)/sizeof(int), /* size of same */ + local_workspace, /* workspace vector */ + sizeof(local_workspace)/sizeof(int), /* size of same */ + rlevel); /* function recursion level */ + + /* Failed to match */ + + if (rc < 0) + { + if (rc != PCRE_ERROR_NOMATCH) return rc; + break; + } + + /* Matched: break the loop if zero characters matched. */ + + charcount = local_offsets[1] - local_offsets[0]; + if (charcount == 0) break; + local_ptr += charcount; /* Advance temporary position ptr */ + } + + /* At this point we have matched the subpattern matched_count + times, and local_ptr is pointing to the character after the end of the + last match. */ + + if (matched_count > 0 || allow_zero) + { + const pcre_uchar *end_subpattern = code; + int next_state_offset; + + do { end_subpattern += GET(end_subpattern, 1); } + while (*end_subpattern == OP_ALT); + next_state_offset = + (int)(end_subpattern - start_code + LINK_SIZE + 1); + + /* Optimization: if there are no more active states, and there + are no new states yet set up, then skip over the subject string + right here, to save looping. Otherwise, set up the new state to swing + into action when the end of the matched substring is reached. */ + + if (i + 1 >= active_count && new_count == 0) + { + ptr = local_ptr; + clen = 0; + ADD_NEW(next_state_offset, 0); + } + else + { + const pcre_uchar *p = ptr; + const pcre_uchar *pp = local_ptr; + charcount = (int)(pp - p); +#if defined SUPPORT_UTF && !defined COMPILE_PCRE32 + if (utf) while (p < pp) if (NOT_FIRSTCHAR(*p++)) charcount--; +#endif + ADD_NEW_DATA(-next_state_offset, 0, (charcount - 1)); + } + } + } + break; + + /*-----------------------------------------------------------------*/ + case OP_ONCE: + case OP_ONCE_NC: + { + int local_offsets[2]; + int local_workspace[1000]; + + int rc = internal_dfa_exec( + md, /* fixed match data */ + code, /* this subexpression's code */ + ptr, /* where we currently are */ + (int)(ptr - start_subject), /* start offset */ + local_offsets, /* offset vector */ + sizeof(local_offsets)/sizeof(int), /* size of same */ + local_workspace, /* workspace vector */ + sizeof(local_workspace)/sizeof(int), /* size of same */ + rlevel); /* function recursion level */ + + if (rc >= 0) + { + const pcre_uchar *end_subpattern = code; + int charcount = local_offsets[1] - local_offsets[0]; + int next_state_offset, repeat_state_offset; + + do { end_subpattern += GET(end_subpattern, 1); } + while (*end_subpattern == OP_ALT); + next_state_offset = + (int)(end_subpattern - start_code + LINK_SIZE + 1); + + /* If the end of this subpattern is KETRMAX or KETRMIN, we must + arrange for the repeat state also to be added to the relevant list. + Calculate the offset, or set -1 for no repeat. */ + + repeat_state_offset = (*end_subpattern == OP_KETRMAX || + *end_subpattern == OP_KETRMIN)? + (int)(end_subpattern - start_code - GET(end_subpattern, 1)) : -1; + + /* If we have matched an empty string, add the next state at the + current character pointer. This is important so that the duplicate + checking kicks in, which is what breaks infinite loops that match an + empty string. */ + + if (charcount == 0) + { + ADD_ACTIVE(next_state_offset, 0); + } + + /* Optimization: if there are no more active states, and there + are no new states yet set up, then skip over the subject string + right here, to save looping. Otherwise, set up the new state to swing + into action when the end of the matched substring is reached. */ + + else if (i + 1 >= active_count && new_count == 0) + { + ptr += charcount; + clen = 0; + ADD_NEW(next_state_offset, 0); + + /* If we are adding a repeat state at the new character position, + we must fudge things so that it is the only current state. + Otherwise, it might be a duplicate of one we processed before, and + that would cause it to be skipped. */ + + if (repeat_state_offset >= 0) + { + next_active_state = active_states; + active_count = 0; + i = -1; + ADD_ACTIVE(repeat_state_offset, 0); + } + } + else + { +#if defined SUPPORT_UTF && !defined COMPILE_PCRE32 + if (utf) + { + const pcre_uchar *p = start_subject + local_offsets[0]; + const pcre_uchar *pp = start_subject + local_offsets[1]; + while (p < pp) if (NOT_FIRSTCHAR(*p++)) charcount--; + } +#endif + ADD_NEW_DATA(-next_state_offset, 0, (charcount - 1)); + if (repeat_state_offset >= 0) + { ADD_NEW_DATA(-repeat_state_offset, 0, (charcount - 1)); } + } + } + else if (rc != PCRE_ERROR_NOMATCH) return rc; + } + break; + + +/* ========================================================================== */ + /* Handle callouts */ + + case OP_CALLOUT: + rrc = 0; + if (PUBL(callout) != NULL) + { + PUBL(callout_block) cb; + cb.version = 1; /* Version 1 of the callout block */ + cb.callout_number = code[1]; + cb.offset_vector = offsets; +#if defined COMPILE_PCRE8 + cb.subject = (PCRE_SPTR)start_subject; +#elif defined COMPILE_PCRE16 + cb.subject = (PCRE_SPTR16)start_subject; +#elif defined COMPILE_PCRE32 + cb.subject = (PCRE_SPTR32)start_subject; +#endif + cb.subject_length = (int)(end_subject - start_subject); + cb.start_match = (int)(current_subject - start_subject); + cb.current_position = (int)(ptr - start_subject); + cb.pattern_position = GET(code, 2); + cb.next_item_length = GET(code, 2 + LINK_SIZE); + cb.capture_top = 1; + cb.capture_last = -1; + cb.callout_data = md->callout_data; + cb.mark = NULL; /* No (*MARK) support */ + if ((rrc = (*PUBL(callout))(&cb)) < 0) return rrc; /* Abandon */ + } + if (rrc == 0) + { ADD_ACTIVE(state_offset + PRIV(OP_lengths)[OP_CALLOUT], 0); } + break; + + +/* ========================================================================== */ + default: /* Unsupported opcode */ + return PCRE_ERROR_DFA_UITEM; + } + + NEXT_ACTIVE_STATE: continue; + + } /* End of loop scanning active states */ + + /* We have finished the processing at the current subject character. If no + new states have been set for the next character, we have found all the + matches that we are going to find. If we are at the top level and partial + matching has been requested, check for appropriate conditions. + + The "forced_ fail" variable counts the number of (*F) encountered for the + character. If it is equal to the original active_count (saved in + workspace[1]) it means that (*F) was found on every active state. In this + case we don't want to give a partial match. + + The "could_continue" variable is true if a state could have continued but + for the fact that the end of the subject was reached. */ + + if (new_count <= 0) + { + if (rlevel == 1 && /* Top level, and */ + could_continue && /* Some could go on, and */ + forced_fail != workspace[1] && /* Not all forced fail & */ + ( /* either... */ + (md->moptions & PCRE_PARTIAL_HARD) != 0 /* Hard partial */ + || /* or... */ + ((md->moptions & PCRE_PARTIAL_SOFT) != 0 && /* Soft partial and */ + match_count < 0) /* no matches */ + ) && /* And... */ + ( + partial_newline || /* Either partial NL */ + ( /* or ... */ + ptr >= end_subject && /* End of subject and */ + ptr > md->start_used_ptr) /* Inspected non-empty string */ + ) + ) + match_count = PCRE_ERROR_PARTIAL; + DPRINTF(("%.*sEnd of internal_dfa_exec %d: returning %d\n" + "%.*s---------------------\n\n", rlevel*2-2, SP, rlevel, match_count, + rlevel*2-2, SP)); + break; /* In effect, "return", but see the comment below */ + } + + /* One or more states are active for the next character. */ + + ptr += clen; /* Advance to next subject character */ + } /* Loop to move along the subject string */ + +/* Control gets here from "break" a few lines above. We do it this way because +if we use "return" above, we have compiler trouble. Some compilers warn if +there's nothing here because they think the function doesn't return a value. On +the other hand, if we put a dummy statement here, some more clever compilers +complain that it can't be reached. Sigh. */ + +return match_count; +} + + + + +/************************************************* +* Execute a Regular Expression - DFA engine * +*************************************************/ + +/* This external function applies a compiled re to a subject string using a DFA +engine. This function calls the internal function multiple times if the pattern +is not anchored. + +Arguments: + argument_re points to the compiled expression + extra_data points to extra data or is NULL + subject points to the subject string + length length of subject string (may contain binary zeros) + start_offset where to start in the subject string + options option bits + offsets vector of match offsets + offsetcount size of same + workspace workspace vector + wscount size of same + +Returns: > 0 => number of match offset pairs placed in offsets + = 0 => offsets overflowed; longest matches are present + -1 => failed to match + < -1 => some kind of unexpected problem +*/ + +#if defined COMPILE_PCRE8 +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION +pcre_dfa_exec(const pcre *argument_re, const pcre_extra *extra_data, + const char *subject, int length, int start_offset, int options, int *offsets, + int offsetcount, int *workspace, int wscount) +#elif defined COMPILE_PCRE16 +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION +pcre16_dfa_exec(const pcre16 *argument_re, const pcre16_extra *extra_data, + PCRE_SPTR16 subject, int length, int start_offset, int options, int *offsets, + int offsetcount, int *workspace, int wscount) +#elif defined COMPILE_PCRE32 +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION +pcre32_dfa_exec(const pcre32 *argument_re, const pcre32_extra *extra_data, + PCRE_SPTR32 subject, int length, int start_offset, int options, int *offsets, + int offsetcount, int *workspace, int wscount) +#endif +{ +REAL_PCRE *re = (REAL_PCRE *)argument_re; +dfa_match_data match_block; +dfa_match_data *md = &match_block; +BOOL utf, anchored, startline, firstline; +const pcre_uchar *current_subject, *end_subject; +const pcre_study_data *study = NULL; + +const pcre_uchar *req_char_ptr; +const pcre_uint8 *start_bits = NULL; +BOOL has_first_char = FALSE; +BOOL has_req_char = FALSE; +pcre_uchar first_char = 0; +pcre_uchar first_char2 = 0; +pcre_uchar req_char = 0; +pcre_uchar req_char2 = 0; +int newline; + +/* Plausibility checks */ + +if ((options & ~PUBLIC_DFA_EXEC_OPTIONS) != 0) return PCRE_ERROR_BADOPTION; +if (re == NULL || subject == NULL || workspace == NULL || + (offsets == NULL && offsetcount > 0)) return PCRE_ERROR_NULL; +if (offsetcount < 0) return PCRE_ERROR_BADCOUNT; +if (wscount < 20) return PCRE_ERROR_DFA_WSSIZE; +if (length < 0) return PCRE_ERROR_BADLENGTH; +if (start_offset < 0 || start_offset > length) return PCRE_ERROR_BADOFFSET; + +/* Check that the first field in the block is the magic number. If it is not, +return with PCRE_ERROR_BADMAGIC. However, if the magic number is equal to +REVERSED_MAGIC_NUMBER we return with PCRE_ERROR_BADENDIANNESS, which +means that the pattern is likely compiled with different endianness. */ + +if (re->magic_number != MAGIC_NUMBER) + return re->magic_number == REVERSED_MAGIC_NUMBER? + PCRE_ERROR_BADENDIANNESS:PCRE_ERROR_BADMAGIC; +if ((re->flags & PCRE_MODE) == 0) return PCRE_ERROR_BADMODE; + +/* If restarting after a partial match, do some sanity checks on the contents +of the workspace. */ + +if ((options & PCRE_DFA_RESTART) != 0) + { + if ((workspace[0] & (-2)) != 0 || workspace[1] < 1 || + workspace[1] > (wscount - 2)/INTS_PER_STATEBLOCK) + return PCRE_ERROR_DFA_BADRESTART; + } + +/* Set up study, callout, and table data */ + +md->tables = re->tables; +md->callout_data = NULL; + +if (extra_data != NULL) + { + unsigned int flags = extra_data->flags; + if ((flags & PCRE_EXTRA_STUDY_DATA) != 0) + study = (const pcre_study_data *)extra_data->study_data; + if ((flags & PCRE_EXTRA_MATCH_LIMIT) != 0) return PCRE_ERROR_DFA_UMLIMIT; + if ((flags & PCRE_EXTRA_MATCH_LIMIT_RECURSION) != 0) + return PCRE_ERROR_DFA_UMLIMIT; + if ((flags & PCRE_EXTRA_CALLOUT_DATA) != 0) + md->callout_data = extra_data->callout_data; + if ((flags & PCRE_EXTRA_TABLES) != 0) + md->tables = extra_data->tables; + } + +/* Set some local values */ + +current_subject = (const pcre_uchar *)subject + start_offset; +end_subject = (const pcre_uchar *)subject + length; +req_char_ptr = current_subject - 1; + +#ifdef SUPPORT_UTF +/* PCRE_UTF(16|32) have the same value as PCRE_UTF8. */ +utf = (re->options & PCRE_UTF8) != 0; +#else +utf = FALSE; +#endif + +anchored = (options & (PCRE_ANCHORED|PCRE_DFA_RESTART)) != 0 || + (re->options & PCRE_ANCHORED) != 0; + +/* The remaining fixed data for passing around. */ + +md->start_code = (const pcre_uchar *)argument_re + + re->name_table_offset + re->name_count * re->name_entry_size; +md->start_subject = (const pcre_uchar *)subject; +md->end_subject = end_subject; +md->start_offset = start_offset; +md->moptions = options; +md->poptions = re->options; + +/* If the BSR option is not set at match time, copy what was set +at compile time. */ + +if ((md->moptions & (PCRE_BSR_ANYCRLF|PCRE_BSR_UNICODE)) == 0) + { + if ((re->options & (PCRE_BSR_ANYCRLF|PCRE_BSR_UNICODE)) != 0) + md->moptions |= re->options & (PCRE_BSR_ANYCRLF|PCRE_BSR_UNICODE); +#ifdef BSR_ANYCRLF + else md->moptions |= PCRE_BSR_ANYCRLF; +#endif + } + +/* Handle different types of newline. The three bits give eight cases. If +nothing is set at run time, whatever was used at compile time applies. */ + +switch ((((options & PCRE_NEWLINE_BITS) == 0)? re->options : (pcre_uint32)options) & + PCRE_NEWLINE_BITS) + { + case 0: newline = NEWLINE; break; /* Compile-time default */ + case PCRE_NEWLINE_CR: newline = CHAR_CR; break; + case PCRE_NEWLINE_LF: newline = CHAR_NL; break; + case PCRE_NEWLINE_CR+ + PCRE_NEWLINE_LF: newline = (CHAR_CR << 8) | CHAR_NL; break; + case PCRE_NEWLINE_ANY: newline = -1; break; + case PCRE_NEWLINE_ANYCRLF: newline = -2; break; + default: return PCRE_ERROR_BADNEWLINE; + } + +if (newline == -2) + { + md->nltype = NLTYPE_ANYCRLF; + } +else if (newline < 0) + { + md->nltype = NLTYPE_ANY; + } +else + { + md->nltype = NLTYPE_FIXED; + if (newline > 255) + { + md->nllen = 2; + md->nl[0] = (newline >> 8) & 255; + md->nl[1] = newline & 255; + } + else + { + md->nllen = 1; + md->nl[0] = newline; + } + } + +/* Check a UTF-8 string if required. Unfortunately there's no way of passing +back the character offset. */ + +#ifdef SUPPORT_UTF +if (utf && (options & PCRE_NO_UTF8_CHECK) == 0) + { + int erroroffset; + int errorcode = PRIV(valid_utf)((pcre_uchar *)subject, length, &erroroffset); + if (errorcode != 0) + { + if (offsetcount >= 2) + { + offsets[0] = erroroffset; + offsets[1] = errorcode; + } +#if defined COMPILE_PCRE8 + return (errorcode <= PCRE_UTF8_ERR5 && (options & PCRE_PARTIAL_HARD) != 0) ? + PCRE_ERROR_SHORTUTF8 : PCRE_ERROR_BADUTF8; +#elif defined COMPILE_PCRE16 + return (errorcode <= PCRE_UTF16_ERR1 && (options & PCRE_PARTIAL_HARD) != 0) ? + PCRE_ERROR_SHORTUTF16 : PCRE_ERROR_BADUTF16; +#elif defined COMPILE_PCRE32 + return PCRE_ERROR_BADUTF32; +#endif + } +#if defined COMPILE_PCRE8 || defined COMPILE_PCRE16 + if (start_offset > 0 && start_offset < length && + NOT_FIRSTCHAR(((PCRE_PUCHAR)subject)[start_offset])) + return PCRE_ERROR_BADUTF8_OFFSET; +#endif + } +#endif + +/* If the exec call supplied NULL for tables, use the inbuilt ones. This +is a feature that makes it possible to save compiled regex and re-use them +in other programs later. */ + +if (md->tables == NULL) md->tables = PRIV(default_tables); + +/* The "must be at the start of a line" flags are used in a loop when finding +where to start. */ + +startline = (re->flags & PCRE_STARTLINE) != 0; +firstline = (re->options & PCRE_FIRSTLINE) != 0; + +/* Set up the first character to match, if available. The first_byte value is +never set for an anchored regular expression, but the anchoring may be forced +at run time, so we have to test for anchoring. The first char may be unset for +an unanchored pattern, of course. If there's no first char and the pattern was +studied, there may be a bitmap of possible first characters. */ + +if (!anchored) + { + if ((re->flags & PCRE_FIRSTSET) != 0) + { + has_first_char = TRUE; + first_char = first_char2 = (pcre_uchar)(re->first_char); + if ((re->flags & PCRE_FCH_CASELESS) != 0) + { + first_char2 = TABLE_GET(first_char, md->tables + fcc_offset, first_char); +#if defined SUPPORT_UCP && !(defined COMPILE_PCRE8) + if (utf && first_char > 127) + first_char2 = UCD_OTHERCASE(first_char); +#endif + } + } + else + { + if (!startline && study != NULL && + (study->flags & PCRE_STUDY_MAPPED) != 0) + start_bits = study->start_bits; + } + } + +/* For anchored or unanchored matches, there may be a "last known required +character" set. */ + +if ((re->flags & PCRE_REQCHSET) != 0) + { + has_req_char = TRUE; + req_char = req_char2 = (pcre_uchar)(re->req_char); + if ((re->flags & PCRE_RCH_CASELESS) != 0) + { + req_char2 = TABLE_GET(req_char, md->tables + fcc_offset, req_char); +#if defined SUPPORT_UCP && !(defined COMPILE_PCRE8) + if (utf && req_char > 127) + req_char2 = UCD_OTHERCASE(req_char); +#endif + } + } + +/* Call the main matching function, looping for a non-anchored regex after a +failed match. If not restarting, perform certain optimizations at the start of +a match. */ + +for (;;) + { + int rc; + + if ((options & PCRE_DFA_RESTART) == 0) + { + const pcre_uchar *save_end_subject = end_subject; + + /* If firstline is TRUE, the start of the match is constrained to the first + line of a multiline string. Implement this by temporarily adjusting + end_subject so that we stop scanning at a newline. If the match fails at + the newline, later code breaks this loop. */ + + if (firstline) + { + PCRE_PUCHAR t = current_subject; +#ifdef SUPPORT_UTF + if (utf) + { + while (t < md->end_subject && !IS_NEWLINE(t)) + { + t++; + ACROSSCHAR(t < end_subject, *t, t++); + } + } + else +#endif + while (t < md->end_subject && !IS_NEWLINE(t)) t++; + end_subject = t; + } + + /* There are some optimizations that avoid running the match if a known + starting point is not found. However, there is an option that disables + these, for testing and for ensuring that all callouts do actually occur. + The option can be set in the regex by (*NO_START_OPT) or passed in + match-time options. */ + + if (((options | re->options) & PCRE_NO_START_OPTIMIZE) == 0) + { + /* Advance to a known first pcre_uchar (i.e. data item) */ + + if (has_first_char) + { + if (first_char != first_char2) + { + pcre_uchar csc; + while (current_subject < end_subject && + (csc = UCHAR21TEST(current_subject)) != first_char && csc != first_char2) + current_subject++; + } + else + while (current_subject < end_subject && + UCHAR21TEST(current_subject) != first_char) + current_subject++; + } + + /* Or to just after a linebreak for a multiline match if possible */ + + else if (startline) + { + if (current_subject > md->start_subject + start_offset) + { +#ifdef SUPPORT_UTF + if (utf) + { + while (current_subject < end_subject && + !WAS_NEWLINE(current_subject)) + { + current_subject++; + ACROSSCHAR(current_subject < end_subject, *current_subject, + current_subject++); + } + } + else +#endif + while (current_subject < end_subject && !WAS_NEWLINE(current_subject)) + current_subject++; + + /* If we have just passed a CR and the newline option is ANY or + ANYCRLF, and we are now at a LF, advance the match position by one + more character. */ + + if (UCHAR21TEST(current_subject - 1) == CHAR_CR && + (md->nltype == NLTYPE_ANY || md->nltype == NLTYPE_ANYCRLF) && + current_subject < end_subject && + UCHAR21TEST(current_subject) == CHAR_NL) + current_subject++; + } + } + + /* Advance to a non-unique first pcre_uchar after study */ + + else if (start_bits != NULL) + { + while (current_subject < end_subject) + { + register pcre_uint32 c = UCHAR21TEST(current_subject); +#ifndef COMPILE_PCRE8 + if (c > 255) c = 255; +#endif + if ((start_bits[c/8] & (1 << (c&7))) != 0) break; + current_subject++; + } + } + } + + /* Restore fudged end_subject */ + + end_subject = save_end_subject; + + /* The following two optimizations are disabled for partial matching or if + disabling is explicitly requested (and of course, by the test above, this + code is not obeyed when restarting after a partial match). */ + + if (((options | re->options) & PCRE_NO_START_OPTIMIZE) == 0 && + (options & (PCRE_PARTIAL_HARD|PCRE_PARTIAL_SOFT)) == 0) + { + /* If the pattern was studied, a minimum subject length may be set. This + is a lower bound; no actual string of that length may actually match the + pattern. Although the value is, strictly, in characters, we treat it as + in pcre_uchar units to avoid spending too much time in this optimization. + */ + + if (study != NULL && (study->flags & PCRE_STUDY_MINLEN) != 0 && + (pcre_uint32)(end_subject - current_subject) < study->minlength) + return PCRE_ERROR_NOMATCH; + + /* If req_char is set, we know that that pcre_uchar must appear in the + subject for the match to succeed. If the first pcre_uchar is set, + req_char must be later in the subject; otherwise the test starts at the + match point. This optimization can save a huge amount of work in patterns + with nested unlimited repeats that aren't going to match. Writing + separate code for cased/caseless versions makes it go faster, as does + using an autoincrement and backing off on a match. + + HOWEVER: when the subject string is very, very long, searching to its end + can take a long time, and give bad performance on quite ordinary + patterns. This showed up when somebody was matching /^C/ on a 32-megabyte + string... so we don't do this when the string is sufficiently long. */ + + if (has_req_char && end_subject - current_subject < REQ_BYTE_MAX) + { + register PCRE_PUCHAR p = current_subject + (has_first_char? 1:0); + + /* We don't need to repeat the search if we haven't yet reached the + place we found it at last time. */ + + if (p > req_char_ptr) + { + if (req_char != req_char2) + { + while (p < end_subject) + { + register pcre_uint32 pp = UCHAR21INCTEST(p); + if (pp == req_char || pp == req_char2) { p--; break; } + } + } + else + { + while (p < end_subject) + { + if (UCHAR21INCTEST(p) == req_char) { p--; break; } + } + } + + /* If we can't find the required pcre_uchar, break the matching loop, + which will cause a return or PCRE_ERROR_NOMATCH. */ + + if (p >= end_subject) break; + + /* If we have found the required pcre_uchar, save the point where we + found it, so that we don't search again next time round the loop if + the start hasn't passed this point yet. */ + + req_char_ptr = p; + } + } + } + } /* End of optimizations that are done when not restarting */ + + /* OK, now we can do the business */ + + md->start_used_ptr = current_subject; + md->recursive = NULL; + + rc = internal_dfa_exec( + md, /* fixed match data */ + md->start_code, /* this subexpression's code */ + current_subject, /* where we currently are */ + start_offset, /* start offset in subject */ + offsets, /* offset vector */ + offsetcount, /* size of same */ + workspace, /* workspace vector */ + wscount, /* size of same */ + 0); /* function recurse level */ + + /* Anything other than "no match" means we are done, always; otherwise, carry + on only if not anchored. */ + + if (rc != PCRE_ERROR_NOMATCH || anchored) + { + if (rc == PCRE_ERROR_PARTIAL && offsetcount >= 2) + { + offsets[0] = (int)(md->start_used_ptr - (PCRE_PUCHAR)subject); + offsets[1] = (int)(end_subject - (PCRE_PUCHAR)subject); + if (offsetcount > 2) + offsets[2] = (int)(current_subject - (PCRE_PUCHAR)subject); + } + return rc; + } + + /* Advance to the next subject character unless we are at the end of a line + and firstline is set. */ + + if (firstline && IS_NEWLINE(current_subject)) break; + current_subject++; +#ifdef SUPPORT_UTF + if (utf) + { + ACROSSCHAR(current_subject < end_subject, *current_subject, + current_subject++); + } +#endif + if (current_subject > end_subject) break; + + /* If we have just passed a CR and we are now at a LF, and the pattern does + not contain any explicit matches for \r or \n, and the newline option is CRLF + or ANY or ANYCRLF, advance the match position by one more character. */ + + if (UCHAR21TEST(current_subject - 1) == CHAR_CR && + current_subject < end_subject && + UCHAR21TEST(current_subject) == CHAR_NL && + (re->flags & PCRE_HASCRORLF) == 0 && + (md->nltype == NLTYPE_ANY || + md->nltype == NLTYPE_ANYCRLF || + md->nllen == 2)) + current_subject++; + + } /* "Bumpalong" loop */ + +return PCRE_ERROR_NOMATCH; +} + +/* End of pcre_dfa_exec.c */ diff --git a/Foundation/src/pcre_exec.c b/Foundation/src/pcre_exec.c index 3838ed68b..91adb2ec8 100644 --- a/Foundation/src/pcre_exec.c +++ b/Foundation/src/pcre_exec.c @@ -6,7 +6,7 @@ and semantics are as close as possible to those of the Perl 5 language. Written by Philip Hazel - Copyright (c) 1997-2008 University of Cambridge + Copyright (c) 1997-2014 University of Cambridge ----------------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without @@ -37,11 +37,13 @@ POSSIBILITY OF SUCH DAMAGE. ----------------------------------------------------------------------------- */ - /* This module contains pcre_exec(), the externally visible function that does pattern matching using an NFA algorithm, trying to mimic Perl as closely as possible. There are also some static supporting functions. */ +#pragma warning( disable : 4127) // conditional expression is constant +#pragma warning( disable : 4244) // conversion from 'int' to 'unsigned short', possible loss of data + #include "pcre_config.h" #define NLBLOCK md /* Block containing newline information */ @@ -55,10 +57,26 @@ possible. There are also some static supporting functions. */ #undef min #undef max -/* Flag bits for the match() function */ +/* The md->capture_last field uses the lower 16 bits for the last captured +substring (which can never be greater than 65535) and a bit in the top half +to mean "capture vector overflowed". This odd way of doing things was +implemented when it was realized that preserving and restoring the overflow bit +whenever the last capture number was saved/restored made for a neater +interface, and doing it this way saved on (a) another variable, which would +have increased the stack frame size (a big NO-NO in PCRE) and (b) another +separate set of save/restore instructions. The following defines are used in +implementing this. */ -#define match_condassert 0x01 /* Called to check a condition assertion */ -#define match_cbegroup 0x02 /* Could-be-empty unlimited repeat group */ +#define CAPLMASK 0x0000ffff /* The bits used for last_capture */ +#define OVFLMASK 0xffff0000 /* The bits used for the overflow flag */ +#define OVFLBIT 0x00010000 /* The bit that is set for overflow */ + +/* Values for setting in md->match_function_type to indicate two special types +of call to match(). We do it this way to save on using another stack variable, +as stack usage is to be discouraged. */ + +#define MATCH_CONDASSERT 1 /* Called to check a condition assertion */ +#define MATCH_CBEGROUP 2 /* Could-be-empty unlimited repeat group */ /* Non-error returns from the match() function. Error returns are externally defined PCRE_ERROR_xxx codes, which are all negative. */ @@ -69,10 +87,18 @@ defined PCRE_ERROR_xxx codes, which are all negative. */ /* Special internal returns from the match() function. Make them sufficiently negative to avoid the external error codes. */ -#define MATCH_COMMIT (-999) -#define MATCH_PRUNE (-998) -#define MATCH_SKIP (-997) -#define MATCH_THEN (-996) +#define MATCH_ACCEPT (-999) +#define MATCH_KETRPOS (-998) +#define MATCH_ONCE (-997) +/* The next 5 must be kept together and in sequence so that a test that checks +for any one of them can use a range. */ +#define MATCH_COMMIT (-996) +#define MATCH_PRUNE (-995) +#define MATCH_SKIP (-994) +#define MATCH_SKIP_ARG (-993) +#define MATCH_THEN (-992) +#define MATCH_BACKTRACK_MAX MATCH_THEN +#define MATCH_BACKTRACK_MIN MATCH_COMMIT /* Maximum number of ints of offset to save on the stack for recursive calls. If the offset vector is bigger, malloc is used. This should be a multiple of 3, @@ -82,12 +108,10 @@ because the offset vector is always a multiple of 3 long. */ /* Min and max values for the common repeats; for the maxima, 0 => infinity */ -static const char rep_min[] = { 0, 0, 1, 1, 0, 0 }; -static const char rep_max[] = { 0, 0, 0, 0, 1, 1 }; +static const char rep_min[] = { 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, }; +static const char rep_max[] = { 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, }; - - -#ifdef DEBUG +#ifdef PCRE_DEBUG /************************************************* * Debugging function to print chars * *************************************************/ @@ -105,12 +129,13 @@ Returns: nothing */ static void -pchars(const uschar *p, int length, BOOL is_subject, match_data *md) +pchars(const pcre_uchar *p, int length, BOOL is_subject, match_data *md) { -unsigned int c; +pcre_uint32 c; +BOOL utf = md->utf; if (is_subject && length > md->end_subject - p) length = md->end_subject - p; while (length-- > 0) - if (isprint(c = *(p++))) printf("%c", c); else printf("\\x%02x", c); + if (isprint(c = UCHAR21INCTEST(p))) printf("%c", (char)c); else printf("\\x{%02x}", c); } #endif @@ -120,26 +145,34 @@ while (length-- > 0) * Match a back-reference * *************************************************/ -/* If a back reference hasn't been set, the length that is passed is greater -than the number of characters left in the string, so the match fails. +/* Normally, if a back reference hasn't been set, the length that is passed is +negative, so the match always fails. However, in JavaScript compatibility mode, +the length passed is zero. Note that in caseless UTF-8 mode, the number of +subject bytes matched may be different to the number of reference bytes. Arguments: offset index into the offset vector - eptr points into the subject - length length to be matched + eptr pointer into the subject + length length of reference to be matched (number of bytes) md points to match data block - ims the ims flags + caseless TRUE if caseless -Returns: TRUE if matched +Returns: >= 0 the number of subject bytes matched + -1 no match + -2 partial match; always given if at end subject */ -static BOOL -match_ref(int offset, register USPTR eptr, int length, match_data *md, - unsigned long int ims) +static int +match_ref(int offset, register PCRE_PUCHAR eptr, int length, match_data *md, + BOOL caseless) { -USPTR p = md->start_subject + md->offset_vector[offset]; +PCRE_PUCHAR eptr_start = eptr; +register PCRE_PUCHAR p = md->start_subject + md->offset_vector[offset]; +#if defined SUPPORT_UTF && defined SUPPORT_UCP +BOOL utf = md->utf; +#endif -#ifdef DEBUG +#ifdef PCRE_DEBUG if (eptr >= md->end_subject) printf("matching subject "); else @@ -152,47 +185,81 @@ pchars(p, length, FALSE, md); printf("\n"); #endif -/* Always fail if not enough characters left */ +/* Always fail if reference not set (and not JavaScript compatible - in that +case the length is passed as zero). */ -if (length > md->end_subject - eptr) return FALSE; +if (length < 0) return -1; /* Separate the caseless case for speed. In UTF-8 mode we can only do this properly if Unicode properties are supported. Otherwise, we can check only ASCII characters. */ -if ((ims & PCRE_CASELESS) != 0) +if (caseless) { -#ifdef SUPPORT_UTF8 -#ifdef SUPPORT_UCP - if (md->utf8) +#if defined SUPPORT_UTF && defined SUPPORT_UCP + if (utf) { - USPTR endptr = eptr + length; - while (eptr < endptr) + /* Match characters up to the end of the reference. NOTE: the number of + data units matched may differ, because in UTF-8 there are some characters + whose upper and lower case versions code have different numbers of bytes. + For example, U+023A (2 bytes in UTF-8) is the upper case version of U+2C65 + (3 bytes in UTF-8); a sequence of 3 of the former uses 6 bytes, as does a + sequence of two of the latter. It is important, therefore, to check the + length along the reference, not along the subject (earlier code did this + wrong). */ + + PCRE_PUCHAR endptr = p + length; + while (p < endptr) { - int c, d; + pcre_uint32 c, d; + const ucd_record *ur; + if (eptr >= md->end_subject) return -2; /* Partial match */ GETCHARINC(c, eptr); GETCHARINC(d, p); - if (c != d && c != UCD_OTHERCASE(d)) return FALSE; + ur = GET_UCD(d); + if (c != d && c != d + ur->other_case) + { + const pcre_uint32 *pp = PRIV(ucd_caseless_sets) + ur->caseset; + for (;;) + { + if (c < *pp) return -1; + if (c == *pp++) break; + } + } } } else -#endif #endif /* The same code works when not in UTF-8 mode and in UTF-8 mode when there is no UCP support. */ - - while (length-- > 0) - { if (md->lcc[*p++] != md->lcc[*eptr++]) return FALSE; } + { + while (length-- > 0) + { + pcre_uint32 cc, cp; + if (eptr >= md->end_subject) return -2; /* Partial match */ + cc = UCHAR21TEST(eptr); + cp = UCHAR21TEST(p); + if (TABLE_GET(cp, md->lcc, cp) != TABLE_GET(cc, md->lcc, cc)) return -1; + p++; + eptr++; + } + } } /* In the caseful case, we can just compare the bytes, whether or not we are in UTF-8 mode. */ else - { while (length-- > 0) if (*p++ != *eptr++) return FALSE; } + { + while (length-- > 0) + { + if (eptr >= md->end_subject) return -2; /* Partial match */ + if (UCHAR21INCTEST(p) != UCHAR21INCTEST(eptr)) return -1; + } + } -return TRUE; +return (int)(eptr - eptr_start); } @@ -243,30 +310,31 @@ enum { RM1=1, RM2, RM3, RM4, RM5, RM6, RM7, RM8, RM9, RM10, RM21, RM22, RM23, RM24, RM25, RM26, RM27, RM28, RM29, RM30, RM31, RM32, RM33, RM34, RM35, RM36, RM37, RM38, RM39, RM40, RM41, RM42, RM43, RM44, RM45, RM46, RM47, RM48, RM49, RM50, - RM51, RM52, RM53, RM54 }; + RM51, RM52, RM53, RM54, RM55, RM56, RM57, RM58, RM59, RM60, + RM61, RM62, RM63, RM64, RM65, RM66, RM67 }; /* These versions of the macros use the stack, as normal. There are debugging versions and production versions. Note that the "rw" argument of RMATCH isn't -actuall used in this definition. */ +actually used in this definition. */ #ifndef NO_RECURSE #define REGISTER register -#ifdef DEBUG -#define RMATCH(ra,rb,rc,rd,re,rf,rg,rw) \ +#ifdef PCRE_DEBUG +#define RMATCH(ra,rb,rc,rd,re,rw) \ { \ printf("match() called in line %d\n", __LINE__); \ - rrc = match(ra,rb,mstart,rc,rd,re,rf,rg,rdepth+1); \ + rrc = match(ra,rb,mstart,rc,rd,re,rdepth+1); \ printf("to line %d\n", __LINE__); \ } #define RRETURN(ra) \ { \ - printf("match() returned %d from line %d ", ra, __LINE__); \ + printf("match() returned %d from line %d\n", ra, __LINE__); \ return ra; \ } #else -#define RMATCH(ra,rb,rc,rd,re,rf,rg,rw) \ - rrc = match(ra,rb,mstart,rc,rd,re,rf,rg,rdepth+1) +#define RMATCH(ra,rb,rc,rd,re,rw) \ + rrc = match(ra,rb,mstart,rc,rd,re,rdepth+1) #define RRETURN(ra) return ra #endif @@ -279,17 +347,22 @@ argument of match(), which never changes. */ #define REGISTER -#define RMATCH(ra,rb,rc,rd,re,rf,rg,rw)\ +#define RMATCH(ra,rb,rc,rd,re,rw)\ {\ - heapframe *newframe = (pcre_stack_malloc)(sizeof(heapframe));\ - frame->Xwhere = rw; \ + heapframe *newframe = frame->Xnextframe;\ + if (newframe == NULL)\ + {\ + newframe = (heapframe *)(PUBL(stack_malloc))(sizeof(heapframe));\ + if (newframe == NULL) RRETURN(PCRE_ERROR_NOMEMORY);\ + newframe->Xnextframe = NULL;\ + frame->Xnextframe = newframe;\ + }\ + frame->Xwhere = rw;\ newframe->Xeptr = ra;\ newframe->Xecode = rb;\ newframe->Xmstart = mstart;\ newframe->Xoffset_top = rc;\ - newframe->Xims = re;\ - newframe->Xeptrb = rf;\ - newframe->Xflags = rg;\ + newframe->Xeptrb = re;\ newframe->Xrdepth = frame->Xrdepth + 1;\ newframe->Xprevframe = frame;\ frame = newframe;\ @@ -301,9 +374,8 @@ argument of match(), which never changes. */ #define RRETURN(ra)\ {\ - heapframe *newframe = frame;\ - frame = newframe->Xprevframe;\ - (pcre_stack_free)(newframe);\ + heapframe *oldframe = frame;\ + frame = oldframe->Xprevframe;\ if (frame != NULL)\ {\ rrc = ra;\ @@ -317,27 +389,28 @@ argument of match(), which never changes. */ typedef struct heapframe { struct heapframe *Xprevframe; + struct heapframe *Xnextframe; /* Function arguments that may change */ - const uschar *Xeptr; - const uschar *Xecode; - const uschar *Xmstart; + PCRE_PUCHAR Xeptr; + const pcre_uchar *Xecode; + PCRE_PUCHAR Xmstart; int Xoffset_top; - long int Xims; eptrblock *Xeptrb; - int Xflags; unsigned int Xrdepth; /* Function local variables */ - const uschar *Xcallpat; - const uschar *Xcharptr; - const uschar *Xdata; - const uschar *Xnext; - const uschar *Xpp; - const uschar *Xprev; - const uschar *Xsaved_eptr; + PCRE_PUCHAR Xcallpat; +#ifdef SUPPORT_UTF + PCRE_PUCHAR Xcharptr; +#endif + PCRE_PUCHAR Xdata; + PCRE_PUCHAR Xnext; + PCRE_PUCHAR Xpp; + PCRE_PUCHAR Xprev; + PCRE_PUCHAR Xsaved_eptr; recursion_info Xnew_recursive; @@ -345,29 +418,25 @@ typedef struct heapframe { BOOL Xcondition; BOOL Xprev_is_word; - unsigned long int Xoriginal_ims; - #ifdef SUPPORT_UCP int Xprop_type; - int Xprop_value; + unsigned int Xprop_value; int Xprop_fail_result; - int Xprop_category; - int Xprop_chartype; - int Xprop_script; int Xoclength; - uschar Xocchars[8]; + pcre_uchar Xocchars[6]; #endif + int Xcodelink; int Xctype; unsigned int Xfc; int Xfi; int Xlength; int Xmax; int Xmin; - int Xnumber; + unsigned int Xnumber; int Xoffset; - int Xop; - int Xsave_capture_last; + unsigned int Xop; + pcre_int32 Xsave_capture_last; int Xsave_offset1, Xsave_offset2, Xsave_offset3; int Xstacksave[REC_STACK_SAVE_MAX]; @@ -393,10 +462,33 @@ typedef struct heapframe { /* This function is called recursively in many circumstances. Whenever it returns a negative (error) response, the outer incarnation must also return the -same response. +same response. */ -Performance note: It might be tempting to extract commonly used fields from the -md structure (e.g. utf8, end_subject) into individual variables to improve +/* These macros pack up tests that are used for partial matching, and which +appear several times in the code. We set the "hit end" flag if the pointer is +at the end of the subject and also past the start of the subject (i.e. +something has been matched). For hard partial matching, we then return +immediately. The second one is used when we already know we are past the end of +the subject. */ + +#define CHECK_PARTIAL()\ + if (md->partial != 0 && eptr >= md->end_subject && \ + eptr > md->start_used_ptr) \ + { \ + md->hitend = TRUE; \ + if (md->partial > 1) RRETURN(PCRE_ERROR_PARTIAL); \ + } + +#define SCHECK_PARTIAL()\ + if (md->partial != 0 && eptr > md->start_used_ptr) \ + { \ + md->hitend = TRUE; \ + if (md->partial > 1) RRETURN(PCRE_ERROR_PARTIAL); \ + } + + +/* Performance note: It might be tempting to extract commonly used fields from +the md structure (e.g. utf, end_subject) into individual variables to improve performance. Tests using gcc on a SPARC disproved this; in the first case, it made performance worse. @@ -407,25 +499,21 @@ Arguments: by encountering \K) offset_top current top pointer md pointer to "static" info for the match - ims current /i, /m, and /s options eptrb pointer to chain of blocks containing eptr at start of brackets - for testing for empty matches - flags can contain - match_condassert - this is an assertion condition - match_cbegroup - this is the start of an unlimited repeat - group that can match an empty string rdepth the recursion depth Returns: MATCH_MATCH if matched ) these values are >= 0 MATCH_NOMATCH if failed to match ) + a negative MATCH_xxx value for PRUNE, SKIP, etc a negative PCRE_ERROR_xxx value if aborted by an error condition (e.g. stopped by repeated call or recursion limit) */ static int -match(REGISTER USPTR eptr, REGISTER const uschar *ecode, const uschar *mstart, - int offset_top, match_data *md, unsigned long int ims, eptrblock *eptrb, - int flags, unsigned int rdepth) +match(REGISTER PCRE_PUCHAR eptr, REGISTER const pcre_uchar *ecode, + PCRE_PUCHAR mstart, int offset_top, match_data *md, eptrblock *eptrb, + unsigned int rdepth) { /* These variables do not need to be preserved over recursion in this function, so they can be ordinary variables in all cases. Mark some of them with @@ -433,19 +521,22 @@ so they can be ordinary variables in all cases. Mark some of them with register int rrc; /* Returns from recursive calls */ register int i; /* Used for loops not involving calls to RMATCH() */ -register unsigned int c; /* Character values not kept over RMATCH() calls */ -register BOOL utf8; /* Local copy of UTF-8 flag for speed */ +register pcre_uint32 c; /* Character values not kept over RMATCH() calls */ +register BOOL utf; /* Local copy of UTF flag for speed */ BOOL minimize, possessive; /* Quantifier options */ +BOOL caseless; +int condcode; /* When recursion is not being used, all "local" variables that have to be -preserved over calls to RMATCH() are part of a "frame" which is obtained from -heap storage. Set up the top-level frame here; others are obtained from the -heap whenever RMATCH() does a "recursion". See the macro definitions above. */ +preserved over calls to RMATCH() are part of a "frame". We set up the top-level +frame on the stack here; subsequent instantiations are obtained from the heap +whenever RMATCH() does a "recursion". See the macro definitions above. Putting +the top-level on the stack rather than malloc-ing them all gives a performance +boost in many cases where there is not much "recursion". */ #ifdef NO_RECURSE -heapframe *frame = (pcre_stack_malloc)(sizeof(heapframe)); -frame->Xprevframe = NULL; /* Marks the top level */ +heapframe *frame = (heapframe *)md->match_frames_base; /* Copy in the original argument variables */ @@ -453,9 +544,7 @@ frame->Xeptr = eptr; frame->Xecode = ecode; frame->Xmstart = mstart; frame->Xoffset_top = offset_top; -frame->Xims = ims; frame->Xeptrb = eptrb; -frame->Xflags = flags; frame->Xrdepth = rdepth; /* This is where control jumps back to to effect "recursion" */ @@ -468,17 +557,16 @@ HEAP_RECURSE: #define ecode frame->Xecode #define mstart frame->Xmstart #define offset_top frame->Xoffset_top -#define ims frame->Xims #define eptrb frame->Xeptrb -#define flags frame->Xflags #define rdepth frame->Xrdepth /* Ditto for the local variables */ -#ifdef SUPPORT_UTF8 +#ifdef SUPPORT_UTF #define charptr frame->Xcharptr #endif #define callpat frame->Xcallpat +#define codelink frame->Xcodelink #define data frame->Xdata #define next frame->Xnext #define pp frame->Xpp @@ -491,15 +579,10 @@ HEAP_RECURSE: #define condition frame->Xcondition #define prev_is_word frame->Xprev_is_word -#define original_ims frame->Xoriginal_ims - #ifdef SUPPORT_UCP #define prop_type frame->Xprop_type #define prop_value frame->Xprop_value #define prop_fail_result frame->Xprop_fail_result -#define prop_category frame->Xprop_category -#define prop_chartype frame->Xprop_chartype -#define prop_script frame->Xprop_script #define oclength frame->Xoclength #define occhars frame->Xocchars #endif @@ -529,50 +612,83 @@ i, and fc and c, can be the same variables. */ #define fi i #define fc c +/* Many of the following variables are used only in small blocks of the code. +My normal style of coding would have declared them within each of those blocks. +However, in order to accommodate the version of this code that uses an external +"stack" implemented on the heap, it is easier to declare them all here, so the +declarations can be cut out in a block. The only declarations within blocks +below are for variables that do not have to be preserved over a recursive call +to RMATCH(). */ -#ifdef SUPPORT_UTF8 /* Many of these variables are used only */ -const uschar *charptr; /* in small blocks of the code. My normal */ -#endif /* style of coding would have declared */ -const uschar *callpat; /* them within each of those blocks. */ -const uschar *data; /* However, in order to accommodate the */ -const uschar *next; /* version of this code that uses an */ -USPTR pp; /* external "stack" implemented on the */ -const uschar *prev; /* heap, it is easier to declare them all */ -USPTR saved_eptr; /* here, so the declarations can be cut */ - /* out in a block. The only declarations */ -recursion_info new_recursive; /* within blocks below are for variables */ - /* that do not have to be preserved over */ -BOOL cur_is_word; /* a recursive call to RMATCH(). */ +#ifdef SUPPORT_UTF +const pcre_uchar *charptr; +#endif +const pcre_uchar *callpat; +const pcre_uchar *data; +const pcre_uchar *next; +PCRE_PUCHAR pp; +const pcre_uchar *prev; +PCRE_PUCHAR saved_eptr; + +recursion_info new_recursive; + +BOOL cur_is_word; BOOL condition; BOOL prev_is_word; -unsigned long int original_ims; - #ifdef SUPPORT_UCP int prop_type; -int prop_value; +unsigned int prop_value; int prop_fail_result; -int prop_category; -int prop_chartype; -int prop_script; int oclength; -uschar occhars[8]; +pcre_uchar occhars[6]; #endif +int codelink; int ctype; int length; int max; int min; -int number; +unsigned int number; int offset; -int op; -int save_capture_last; +unsigned int op; +pcre_int32 save_capture_last; int save_offset1, save_offset2, save_offset3; int stacksave[REC_STACK_SAVE_MAX]; eptrblock newptrb; + +/* There is a special fudge for calling match() in a way that causes it to +measure the size of its basic stack frame when the stack is being used for +recursion. The second argument (ecode) being NULL triggers this behaviour. It +cannot normally ever be NULL. The return is the negated value of the frame +size. */ + +if (ecode == NULL) + { + if (rdepth == 0) + return match((PCRE_PUCHAR)&rdepth, NULL, NULL, 0, NULL, NULL, 1); + else + { + int len = (char *)&rdepth - (char *)eptr; + return (len > 0)? -len : len; + } + } #endif /* NO_RECURSE */ +/* To save space on the stack and in the heap frame, I have doubled up on some +of the local variables that are used only in localised parts of the code, but +still need to be preserved over recursive calls of match(). These macros define +the alternative names that are used. */ + +#define allow_zero cur_is_word +#define cbegroup condition +#define code_offset codelink +#define condassert condition +#define matched_once prev_is_word +#define foc number +#define save_mark data + /* These statements are here to stop the compiler complaining about unitialized variables. */ @@ -592,15 +708,15 @@ TAIL_RECURSE: /* OK, now we can get on with the real code of the function. Recursive calls are specified by the macro RMATCH and RRETURN is used to return. When NO_RECURSE is *not* defined, these just turn into a recursive call to match() -and a "return", respectively (possibly with some debugging if DEBUG is +and a "return", respectively (possibly with some debugging if PCRE_DEBUG is defined). However, RMATCH isn't like a function call because it's quite a complicated macro. It has to be used in one particular way. This shouldn't, however, impact performance when true recursion is being used. */ -#ifdef SUPPORT_UTF8 -utf8 = md->utf8; /* Local copy of the flag */ +#ifdef SUPPORT_UTF +utf = md->utf; /* Local copy of the flag */ #else -utf8 = FALSE; +utf = FALSE; #endif /* First check that we haven't called match() too many times, or that we @@ -609,22 +725,24 @@ haven't exceeded the recursive call limit. */ if (md->match_call_count++ >= md->match_limit) RRETURN(PCRE_ERROR_MATCHLIMIT); if (rdepth >= md->match_limit_recursion) RRETURN(PCRE_ERROR_RECURSIONLIMIT); -original_ims = ims; /* Save for resetting on ')' */ - /* At the start of a group with an unlimited repeat that may match an empty -string, the match_cbegroup flag is set. When this is the case, add the current -subject pointer to the chain of such remembered pointers, to be checked when we -hit the closing ket, in order to break infinite loops that match no characters. -When match() is called in other circumstances, don't add to the chain. The -match_cbegroup flag must NOT be used with tail recursion, because the memory -block that is used is on the stack, so a new one may be required for each -match(). */ +string, the variable md->match_function_type is set to MATCH_CBEGROUP. It is +done this way to save having to use another function argument, which would take +up space on the stack. See also MATCH_CONDASSERT below. -if ((flags & match_cbegroup) != 0) +When MATCH_CBEGROUP is set, add the current subject pointer to the chain of +such remembered pointers, to be checked when we hit the closing ket, in order +to break infinite loops that match no characters. When match() is called in +other circumstances, don't add to the chain. The MATCH_CBEGROUP feature must +NOT be used with tail recursion, because the memory block that is used is on +the stack, so a new one may be required for each match(). */ + +if (md->match_function_type == MATCH_CBEGROUP) { newptrb.epb_saved_eptr = eptr; newptrb.epb_prev = eptrb; eptrb = &newptrb; + md->match_function_type = 0; } /* Now start processing the opcodes. */ @@ -634,53 +752,203 @@ for (;;) minimize = possessive = FALSE; op = *ecode; - /* For partial matching, remember if we ever hit the end of the subject after - matching at least one subject character. */ - - if (md->partial && - eptr >= md->end_subject && - eptr > mstart) - md->hitend = TRUE; - switch(op) { + case OP_MARK: + md->nomatch_mark = ecode + 2; + md->mark = NULL; /* In case previously set by assertion */ + RMATCH(eptr, ecode + PRIV(OP_lengths)[*ecode] + ecode[1], offset_top, md, + eptrb, RM55); + if ((rrc == MATCH_MATCH || rrc == MATCH_ACCEPT) && + md->mark == NULL) md->mark = ecode + 2; + + /* A return of MATCH_SKIP_ARG means that matching failed at SKIP with an + argument, and we must check whether that argument matches this MARK's + argument. It is passed back in md->start_match_ptr (an overloading of that + variable). If it does match, we reset that variable to the current subject + position and return MATCH_SKIP. Otherwise, pass back the return code + unaltered. */ + + else if (rrc == MATCH_SKIP_ARG && + STRCMP_UC_UC_TEST(ecode + 2, md->start_match_ptr) == 0) + { + md->start_match_ptr = eptr; + RRETURN(MATCH_SKIP); + } + RRETURN(rrc); + case OP_FAIL: RRETURN(MATCH_NOMATCH); - case OP_PRUNE: - RMATCH(eptr, ecode + _pcre_OP_lengths[*ecode], offset_top, md, - ims, eptrb, flags, RM51); - if (rrc != MATCH_NOMATCH) RRETURN(rrc); - RRETURN(MATCH_PRUNE); - case OP_COMMIT: - RMATCH(eptr, ecode + _pcre_OP_lengths[*ecode], offset_top, md, - ims, eptrb, flags, RM52); + RMATCH(eptr, ecode + PRIV(OP_lengths)[*ecode], offset_top, md, + eptrb, RM52); if (rrc != MATCH_NOMATCH) RRETURN(rrc); RRETURN(MATCH_COMMIT); + case OP_PRUNE: + RMATCH(eptr, ecode + PRIV(OP_lengths)[*ecode], offset_top, md, + eptrb, RM51); + if (rrc != MATCH_NOMATCH) RRETURN(rrc); + RRETURN(MATCH_PRUNE); + + case OP_PRUNE_ARG: + md->nomatch_mark = ecode + 2; + md->mark = NULL; /* In case previously set by assertion */ + RMATCH(eptr, ecode + PRIV(OP_lengths)[*ecode] + ecode[1], offset_top, md, + eptrb, RM56); + if ((rrc == MATCH_MATCH || rrc == MATCH_ACCEPT) && + md->mark == NULL) md->mark = ecode + 2; + if (rrc != MATCH_NOMATCH) RRETURN(rrc); + RRETURN(MATCH_PRUNE); + case OP_SKIP: - RMATCH(eptr, ecode + _pcre_OP_lengths[*ecode], offset_top, md, - ims, eptrb, flags, RM53); + RMATCH(eptr, ecode + PRIV(OP_lengths)[*ecode], offset_top, md, + eptrb, RM53); if (rrc != MATCH_NOMATCH) RRETURN(rrc); md->start_match_ptr = eptr; /* Pass back current position */ RRETURN(MATCH_SKIP); - case OP_THEN: - RMATCH(eptr, ecode + _pcre_OP_lengths[*ecode], offset_top, md, - ims, eptrb, flags, RM54); + /* Note that, for Perl compatibility, SKIP with an argument does NOT set + nomatch_mark. When a pattern match ends with a SKIP_ARG for which there was + not a matching mark, we have to re-run the match, ignoring the SKIP_ARG + that failed and any that precede it (either they also failed, or were not + triggered). To do this, we maintain a count of executed SKIP_ARGs. If a + SKIP_ARG gets to top level, the match is re-run with md->ignore_skip_arg + set to the count of the one that failed. */ + + case OP_SKIP_ARG: + md->skip_arg_count++; + if (md->skip_arg_count <= md->ignore_skip_arg) + { + ecode += PRIV(OP_lengths)[*ecode] + ecode[1]; + break; + } + RMATCH(eptr, ecode + PRIV(OP_lengths)[*ecode] + ecode[1], offset_top, md, + eptrb, RM57); if (rrc != MATCH_NOMATCH) RRETURN(rrc); + + /* Pass back the current skip name by overloading md->start_match_ptr and + returning the special MATCH_SKIP_ARG return code. This will either be + caught by a matching MARK, or get to the top, where it causes a rematch + with md->ignore_skip_arg set to the value of md->skip_arg_count. */ + + md->start_match_ptr = ecode + 2; + RRETURN(MATCH_SKIP_ARG); + + /* For THEN (and THEN_ARG) we pass back the address of the opcode, so that + the branch in which it occurs can be determined. Overload the start of + match pointer to do this. */ + + case OP_THEN: + RMATCH(eptr, ecode + PRIV(OP_lengths)[*ecode], offset_top, md, + eptrb, RM54); + if (rrc != MATCH_NOMATCH) RRETURN(rrc); + md->start_match_ptr = ecode; RRETURN(MATCH_THEN); - /* Handle a capturing bracket. If there is space in the offset vector, save - the current subject position in the working slot at the top of the vector. - We mustn't change the current values of the data slot, because they may be - set from a previous iteration of this group, and be referred to by a - reference inside the group. + case OP_THEN_ARG: + md->nomatch_mark = ecode + 2; + md->mark = NULL; /* In case previously set by assertion */ + RMATCH(eptr, ecode + PRIV(OP_lengths)[*ecode] + ecode[1], offset_top, + md, eptrb, RM58); + if ((rrc == MATCH_MATCH || rrc == MATCH_ACCEPT) && + md->mark == NULL) md->mark = ecode + 2; + if (rrc != MATCH_NOMATCH) RRETURN(rrc); + md->start_match_ptr = ecode; + RRETURN(MATCH_THEN); - If the bracket fails to match, we need to restore this value and also the - values of the final offsets, in case they were set by a previous iteration - of the same bracket. + /* Handle an atomic group that does not contain any capturing parentheses. + This can be handled like an assertion. Prior to 8.13, all atomic groups + were handled this way. In 8.13, the code was changed as below for ONCE, so + that backups pass through the group and thereby reset captured values. + However, this uses a lot more stack, so in 8.20, atomic groups that do not + contain any captures generate OP_ONCE_NC, which can be handled in the old, + less stack intensive way. + + Check the alternative branches in turn - the matching won't pass the KET + for this kind of subpattern. If any one branch matches, we carry on as at + the end of a normal bracket, leaving the subject pointer, but resetting + the start-of-match value in case it was changed by \K. */ + + case OP_ONCE_NC: + prev = ecode; + saved_eptr = eptr; + save_mark = md->mark; + do + { + RMATCH(eptr, ecode + 1 + LINK_SIZE, offset_top, md, eptrb, RM64); + if (rrc == MATCH_MATCH) /* Note: _not_ MATCH_ACCEPT */ + { + mstart = md->start_match_ptr; + break; + } + if (rrc == MATCH_THEN) + { + next = ecode + GET(ecode,1); + if (md->start_match_ptr < next && + (*ecode == OP_ALT || *next == OP_ALT)) + rrc = MATCH_NOMATCH; + } + + if (rrc != MATCH_NOMATCH) RRETURN(rrc); + ecode += GET(ecode,1); + md->mark = save_mark; + } + while (*ecode == OP_ALT); + + /* If hit the end of the group (which could be repeated), fail */ + + if (*ecode != OP_ONCE_NC && *ecode != OP_ALT) RRETURN(MATCH_NOMATCH); + + /* Continue as from after the group, updating the offsets high water + mark, since extracts may have been taken. */ + + do ecode += GET(ecode, 1); while (*ecode == OP_ALT); + + offset_top = md->end_offset_top; + eptr = md->end_match_ptr; + + /* For a non-repeating ket, just continue at this level. This also + happens for a repeating ket if no characters were matched in the group. + This is the forcible breaking of infinite loops as implemented in Perl + 5.005. */ + + if (*ecode == OP_KET || eptr == saved_eptr) + { + ecode += 1+LINK_SIZE; + break; + } + + /* The repeating kets try the rest of the pattern or restart from the + preceding bracket, in the appropriate order. The second "call" of match() + uses tail recursion, to avoid using another stack frame. */ + + if (*ecode == OP_KETRMIN) + { + RMATCH(eptr, ecode + 1 + LINK_SIZE, offset_top, md, eptrb, RM65); + if (rrc != MATCH_NOMATCH) RRETURN(rrc); + ecode = prev; + goto TAIL_RECURSE; + } + else /* OP_KETRMAX */ + { + RMATCH(eptr, prev, offset_top, md, eptrb, RM66); + if (rrc != MATCH_NOMATCH) RRETURN(rrc); + ecode += 1 + LINK_SIZE; + goto TAIL_RECURSE; + } + /* Control never gets here */ + + /* Handle a capturing bracket, other than those that are possessive with an + unlimited repeat. If there is space in the offset vector, save the current + subject position in the working slot at the top of the vector. We mustn't + change the current values of the data slot, because they may be set from a + previous iteration of this group, and be referred to by a reference inside + the group. A failure to match might occur after the group has succeeded, + if something later on doesn't match. For this reason, we need to restore + the working value and also the values of the final offsets, in case they + were set by a previous iteration of the same bracket. If there isn't enough space in the offset vector, treat this as if it were a non-capturing bracket. Don't worry about setting the flag for the error @@ -691,7 +959,7 @@ for (;;) number = GET2(ecode, 1+LINK_SIZE); offset = number << 1; -#ifdef DEBUG +#ifdef PCRE_DEBUG printf("start bracket %d\n", number); printf("subject="); pchars(eptr, 16, TRUE, md); @@ -704,27 +972,240 @@ for (;;) save_offset2 = md->offset_vector[offset+1]; save_offset3 = md->offset_vector[md->offset_end - number]; save_capture_last = md->capture_last; + save_mark = md->mark; DPRINTF(("saving %d %d %d\n", save_offset1, save_offset2, save_offset3)); - md->offset_vector[md->offset_end - number] = eptr - md->start_subject; + md->offset_vector[md->offset_end - number] = + (int)(eptr - md->start_subject); - flags = (op == OP_SCBRA)? match_cbegroup : 0; - do + for (;;) { - RMATCH(eptr, ecode + _pcre_OP_lengths[*ecode], offset_top, md, - ims, eptrb, flags, RM1); - if (rrc != MATCH_NOMATCH && rrc != MATCH_THEN) RRETURN(rrc); + if (op >= OP_SBRA) md->match_function_type = MATCH_CBEGROUP; + RMATCH(eptr, ecode + PRIV(OP_lengths)[*ecode], offset_top, md, + eptrb, RM1); + if (rrc == MATCH_ONCE) break; /* Backing up through an atomic group */ + + /* If we backed up to a THEN, check whether it is within the current + branch by comparing the address of the THEN that is passed back with + the end of the branch. If it is within the current branch, and the + branch is one of two or more alternatives (it either starts or ends + with OP_ALT), we have reached the limit of THEN's action, so convert + the return code to NOMATCH, which will cause normal backtracking to + happen from now on. Otherwise, THEN is passed back to an outer + alternative. This implements Perl's treatment of parenthesized groups, + where a group not containing | does not affect the current alternative, + that is, (X) is NOT the same as (X|(*F)). */ + + if (rrc == MATCH_THEN) + { + next = ecode + GET(ecode,1); + if (md->start_match_ptr < next && + (*ecode == OP_ALT || *next == OP_ALT)) + rrc = MATCH_NOMATCH; + } + + /* Anything other than NOMATCH is passed back. */ + + if (rrc != MATCH_NOMATCH) RRETURN(rrc); md->capture_last = save_capture_last; ecode += GET(ecode, 1); + md->mark = save_mark; + if (*ecode != OP_ALT) break; } - while (*ecode == OP_ALT); DPRINTF(("bracket %d failed\n", number)); - md->offset_vector[offset] = save_offset1; md->offset_vector[offset+1] = save_offset2; md->offset_vector[md->offset_end - number] = save_offset3; + /* At this point, rrc will be one of MATCH_ONCE or MATCH_NOMATCH. */ + + RRETURN(rrc); + } + + /* FALL THROUGH ... Insufficient room for saving captured contents. Treat + as a non-capturing bracket. */ + + /* VVVVVVVVVVVVVVVVVVVVVVVVV */ + /* VVVVVVVVVVVVVVVVVVVVVVVVV */ + + DPRINTF(("insufficient capture room: treat as non-capturing\n")); + + /* VVVVVVVVVVVVVVVVVVVVVVVVV */ + /* VVVVVVVVVVVVVVVVVVVVVVVVV */ + + /* Non-capturing or atomic group, except for possessive with unlimited + repeat and ONCE group with no captures. Loop for all the alternatives. + + When we get to the final alternative within the brackets, we used to return + the result of a recursive call to match() whatever happened so it was + possible to reduce stack usage by turning this into a tail recursion, + except in the case of a possibly empty group. However, now that there is + the possiblity of (*THEN) occurring in the final alternative, this + optimization is no longer always possible. + + We can optimize if we know there are no (*THEN)s in the pattern; at present + this is the best that can be done. + + MATCH_ONCE is returned when the end of an atomic group is successfully + reached, but subsequent matching fails. It passes back up the tree (causing + captured values to be reset) until the original atomic group level is + reached. This is tested by comparing md->once_target with the start of the + group. At this point, the return is converted into MATCH_NOMATCH so that + previous backup points can be taken. */ + + case OP_ONCE: + case OP_BRA: + case OP_SBRA: + DPRINTF(("start non-capturing bracket\n")); + + for (;;) + { + if (op >= OP_SBRA || op == OP_ONCE) + md->match_function_type = MATCH_CBEGROUP; + + /* If this is not a possibly empty group, and there are no (*THEN)s in + the pattern, and this is the final alternative, optimize as described + above. */ + + else if (!md->hasthen && ecode[GET(ecode, 1)] != OP_ALT) + { + ecode += PRIV(OP_lengths)[*ecode]; + goto TAIL_RECURSE; + } + + /* In all other cases, we have to make another call to match(). */ + + save_mark = md->mark; + save_capture_last = md->capture_last; + RMATCH(eptr, ecode + PRIV(OP_lengths)[*ecode], offset_top, md, eptrb, + RM2); + + /* See comment in the code for capturing groups above about handling + THEN. */ + + if (rrc == MATCH_THEN) + { + next = ecode + GET(ecode,1); + if (md->start_match_ptr < next && + (*ecode == OP_ALT || *next == OP_ALT)) + rrc = MATCH_NOMATCH; + } + + if (rrc != MATCH_NOMATCH) + { + if (rrc == MATCH_ONCE) + { + const pcre_uchar *scode = ecode; + if (*scode != OP_ONCE) /* If not at start, find it */ + { + while (*scode == OP_ALT) scode += GET(scode, 1); + scode -= GET(scode, 1); + } + if (md->once_target == scode) rrc = MATCH_NOMATCH; + } + RRETURN(rrc); + } + ecode += GET(ecode, 1); + md->mark = save_mark; + if (*ecode != OP_ALT) break; + md->capture_last = save_capture_last; + } + + RRETURN(MATCH_NOMATCH); + + /* Handle possessive capturing brackets with an unlimited repeat. We come + here from BRAZERO with allow_zero set TRUE. The offset_vector values are + handled similarly to the normal case above. However, the matching is + different. The end of these brackets will always be OP_KETRPOS, which + returns MATCH_KETRPOS without going further in the pattern. By this means + we can handle the group by iteration rather than recursion, thereby + reducing the amount of stack needed. */ + + case OP_CBRAPOS: + case OP_SCBRAPOS: + allow_zero = FALSE; + + POSSESSIVE_CAPTURE: + number = GET2(ecode, 1+LINK_SIZE); + offset = number << 1; + +#ifdef PCRE_DEBUG + printf("start possessive bracket %d\n", number); + printf("subject="); + pchars(eptr, 16, TRUE, md); + printf("\n"); +#endif + + if (offset < md->offset_max) + { + matched_once = FALSE; + code_offset = (int)(ecode - md->start_code); + + save_offset1 = md->offset_vector[offset]; + save_offset2 = md->offset_vector[offset+1]; + save_offset3 = md->offset_vector[md->offset_end - number]; + save_capture_last = md->capture_last; + + DPRINTF(("saving %d %d %d\n", save_offset1, save_offset2, save_offset3)); + + /* Each time round the loop, save the current subject position for use + when the group matches. For MATCH_MATCH, the group has matched, so we + restart it with a new subject starting position, remembering that we had + at least one match. For MATCH_NOMATCH, carry on with the alternatives, as + usual. If we haven't matched any alternatives in any iteration, check to + see if a previous iteration matched. If so, the group has matched; + continue from afterwards. Otherwise it has failed; restore the previous + capture values before returning NOMATCH. */ + + for (;;) + { + md->offset_vector[md->offset_end - number] = + (int)(eptr - md->start_subject); + if (op >= OP_SBRA) md->match_function_type = MATCH_CBEGROUP; + RMATCH(eptr, ecode + PRIV(OP_lengths)[*ecode], offset_top, md, + eptrb, RM63); + if (rrc == MATCH_KETRPOS) + { + offset_top = md->end_offset_top; + eptr = md->end_match_ptr; + ecode = md->start_code + code_offset; + save_capture_last = md->capture_last; + matched_once = TRUE; + mstart = md->start_match_ptr; /* In case \K changed it */ + continue; + } + + /* See comment in the code for capturing groups above about handling + THEN. */ + + if (rrc == MATCH_THEN) + { + next = ecode + GET(ecode,1); + if (md->start_match_ptr < next && + (*ecode == OP_ALT || *next == OP_ALT)) + rrc = MATCH_NOMATCH; + } + + if (rrc != MATCH_NOMATCH) RRETURN(rrc); + md->capture_last = save_capture_last; + ecode += GET(ecode, 1); + if (*ecode != OP_ALT) break; + } + + if (!matched_once) + { + md->offset_vector[offset] = save_offset1; + md->offset_vector[offset+1] = save_offset2; + md->offset_vector[md->offset_end - number] = save_offset3; + } + + if (allow_zero || matched_once) + { + ecode += 1 + LINK_SIZE; + break; + } + RRETURN(MATCH_NOMATCH); } @@ -739,208 +1220,437 @@ for (;;) /* VVVVVVVVVVVVVVVVVVVVVVVVV */ /* VVVVVVVVVVVVVVVVVVVVVVVVV */ - /* Non-capturing bracket. Loop for all the alternatives. When we get to the - final alternative within the brackets, we would return the result of a - recursive call to match() whatever happened. We can reduce stack usage by - turning this into a tail recursion, except in the case when match_cbegroup - is set.*/ + /* Non-capturing possessive bracket with unlimited repeat. We come here + from BRAZERO with allow_zero = TRUE. The code is similar to the above, + without the capturing complication. It is written out separately for speed + and cleanliness. */ + + case OP_BRAPOS: + case OP_SBRAPOS: + allow_zero = FALSE; + + POSSESSIVE_NON_CAPTURE: + matched_once = FALSE; + code_offset = (int)(ecode - md->start_code); + save_capture_last = md->capture_last; - case OP_BRA: - case OP_SBRA: - DPRINTF(("start non-capturing bracket\n")); - flags = (op >= OP_SBRA)? match_cbegroup : 0; for (;;) { - if (ecode[GET(ecode, 1)] != OP_ALT) /* Final alternative */ + if (op >= OP_SBRA) md->match_function_type = MATCH_CBEGROUP; + RMATCH(eptr, ecode + PRIV(OP_lengths)[*ecode], offset_top, md, + eptrb, RM48); + if (rrc == MATCH_KETRPOS) { - if (flags == 0) /* Not a possibly empty group */ - { - ecode += _pcre_OP_lengths[*ecode]; - DPRINTF(("bracket 0 tail recursion\n")); - goto TAIL_RECURSE; - } - - /* Possibly empty group; can't use tail recursion. */ - - RMATCH(eptr, ecode + _pcre_OP_lengths[*ecode], offset_top, md, ims, - eptrb, flags, RM48); - RRETURN(rrc); + offset_top = md->end_offset_top; + eptr = md->end_match_ptr; + ecode = md->start_code + code_offset; + matched_once = TRUE; + mstart = md->start_match_ptr; /* In case \K reset it */ + continue; } - /* For non-final alternatives, continue the loop for a NOMATCH result; - otherwise return. */ + /* See comment in the code for capturing groups above about handling + THEN. */ - RMATCH(eptr, ecode + _pcre_OP_lengths[*ecode], offset_top, md, ims, - eptrb, flags, RM2); - if (rrc != MATCH_NOMATCH && rrc != MATCH_THEN) RRETURN(rrc); + if (rrc == MATCH_THEN) + { + next = ecode + GET(ecode,1); + if (md->start_match_ptr < next && + (*ecode == OP_ALT || *next == OP_ALT)) + rrc = MATCH_NOMATCH; + } + + if (rrc != MATCH_NOMATCH) RRETURN(rrc); ecode += GET(ecode, 1); + if (*ecode != OP_ALT) break; + md->capture_last = save_capture_last; } + + if (matched_once || allow_zero) + { + ecode += 1 + LINK_SIZE; + break; + } + RRETURN(MATCH_NOMATCH); + /* Control never reaches here. */ - /* Conditional group: compilation checked that there are no more than - two branches. If the condition is false, skipping the first branch takes us - past the end if there is only one branch, but that's OK because that is - exactly what going to the ket would do. As there is only one branch to be - obeyed, we can use tail recursion to avoid using another stack frame. */ + /* Conditional group: compilation checked that there are no more than two + branches. If the condition is false, skipping the first branch takes us + past the end of the item if there is only one branch, but that's exactly + what we want. */ case OP_COND: case OP_SCOND: - if (ecode[LINK_SIZE+1] == OP_RREF) /* Recursion test */ + + /* The variable codelink will be added to ecode when the condition is + false, to get to the second branch. Setting it to the offset to the ALT + or KET, then incrementing ecode achieves this effect. We now have ecode + pointing to the condition or callout. */ + + codelink = GET(ecode, 1); /* Offset to the second branch */ + ecode += 1 + LINK_SIZE; /* From this opcode */ + + /* Because of the way auto-callout works during compile, a callout item is + inserted between OP_COND and an assertion condition. */ + + if (*ecode == OP_CALLOUT) { - offset = GET2(ecode, LINK_SIZE + 2); /* Recursion group number*/ - condition = md->recursive != NULL && - (offset == RREF_ANY || offset == md->recursive->group_num); - ecode += condition? 3 : GET(ecode, 1); + if (PUBL(callout) != NULL) + { + PUBL(callout_block) cb; + cb.version = 2; /* Version 1 of the callout block */ + cb.callout_number = ecode[1]; + cb.offset_vector = md->offset_vector; +#if defined COMPILE_PCRE8 + cb.subject = (PCRE_SPTR)md->start_subject; +#elif defined COMPILE_PCRE16 + cb.subject = (PCRE_SPTR16)md->start_subject; +#elif defined COMPILE_PCRE32 + cb.subject = (PCRE_SPTR32)md->start_subject; +#endif + cb.subject_length = (int)(md->end_subject - md->start_subject); + cb.start_match = (int)(mstart - md->start_subject); + cb.current_position = (int)(eptr - md->start_subject); + cb.pattern_position = GET(ecode, 2); + cb.next_item_length = GET(ecode, 2 + LINK_SIZE); + cb.capture_top = offset_top/2; + cb.capture_last = md->capture_last & CAPLMASK; + /* Internal change requires this for API compatibility. */ + if (cb.capture_last == 0) cb.capture_last = -1; + cb.callout_data = md->callout_data; + cb.mark = md->nomatch_mark; + if ((rrc = (*PUBL(callout))(&cb)) > 0) RRETURN(MATCH_NOMATCH); + if (rrc < 0) RRETURN(rrc); + } + + /* Advance ecode past the callout, so it now points to the condition. We + must adjust codelink so that the value of ecode+codelink is unchanged. */ + + ecode += PRIV(OP_lengths)[OP_CALLOUT]; + codelink -= PRIV(OP_lengths)[OP_CALLOUT]; } - else if (ecode[LINK_SIZE+1] == OP_CREF) /* Group used test */ + /* Test the various possible conditions */ + + condition = FALSE; + switch(condcode = *ecode) { - offset = GET2(ecode, LINK_SIZE+2) << 1; /* Doubled ref number */ + case OP_RREF: /* Numbered group recursion test */ + if (md->recursive != NULL) /* Not recursing => FALSE */ + { + unsigned int recno = GET2(ecode, 1); /* Recursion group number*/ + condition = (recno == RREF_ANY || recno == md->recursive->group_num); + } + break; + + case OP_DNRREF: /* Duplicate named group recursion test */ + if (md->recursive != NULL) + { + int count = GET2(ecode, 1 + IMM2_SIZE); + pcre_uchar *slot = md->name_table + GET2(ecode, 1) * md->name_entry_size; + while (count-- > 0) + { + unsigned int recno = GET2(slot, 0); + condition = recno == md->recursive->group_num; + if (condition) break; + slot += md->name_entry_size; + } + } + break; + + case OP_CREF: /* Numbered group used test */ + offset = GET2(ecode, 1) << 1; /* Doubled ref number */ condition = offset < offset_top && md->offset_vector[offset] >= 0; - ecode += condition? 3 : GET(ecode, 1); - } + break; - else if (ecode[LINK_SIZE+1] == OP_DEF) /* DEFINE - always false */ - { - condition = FALSE; - ecode += GET(ecode, 1); - } + case OP_DNCREF: /* Duplicate named group used test */ + { + int count = GET2(ecode, 1 + IMM2_SIZE); + pcre_uchar *slot = md->name_table + GET2(ecode, 1) * md->name_entry_size; + while (count-- > 0) + { + offset = GET2(slot, 0) << 1; + condition = offset < offset_top && md->offset_vector[offset] >= 0; + if (condition) break; + slot += md->name_entry_size; + } + } + break; - /* The condition is an assertion. Call match() to evaluate it - setting - the final argument match_condassert causes it to stop at the end of an - assertion. */ + case OP_DEF: /* DEFINE - always false */ + break; - else - { - RMATCH(eptr, ecode + 1 + LINK_SIZE, offset_top, md, ims, NULL, - match_condassert, RM3); + /* The condition is an assertion. Call match() to evaluate it - setting + md->match_function_type to MATCH_CONDASSERT causes it to stop at the end + of an assertion. */ + + default: + md->match_function_type = MATCH_CONDASSERT; + RMATCH(eptr, ecode, offset_top, md, NULL, RM3); if (rrc == MATCH_MATCH) { + if (md->end_offset_top > offset_top) + offset_top = md->end_offset_top; /* Captures may have happened */ condition = TRUE; - ecode += 1 + LINK_SIZE + GET(ecode, LINK_SIZE + 2); + + /* Advance ecode past the assertion to the start of the first branch, + but adjust it so that the general choosing code below works. */ + + ecode += GET(ecode, 1); while (*ecode == OP_ALT) ecode += GET(ecode, 1); + ecode += 1 + LINK_SIZE - PRIV(OP_lengths)[condcode]; } + + /* PCRE doesn't allow the effect of (*THEN) to escape beyond an + assertion; it is therefore treated as NOMATCH. Any other return is an + error. */ + else if (rrc != MATCH_NOMATCH && rrc != MATCH_THEN) { RRETURN(rrc); /* Need braces because of following else */ } - else - { - condition = FALSE; - ecode += GET(ecode, 1); - } - } - - /* We are now at the branch that is to be obeyed. As there is only one, - we can use tail recursion to avoid using another stack frame, except when - match_cbegroup is required for an unlimited repeat of a possibly empty - group. If the second alternative doesn't exist, we can just plough on. */ - - if (condition || *ecode == OP_ALT) - { - ecode += 1 + LINK_SIZE; - if (op == OP_SCOND) /* Possibly empty group */ - { - RMATCH(eptr, ecode, offset_top, md, ims, eptrb, match_cbegroup, RM49); - RRETURN(rrc); - } - else /* Group must match something */ - { - flags = 0; - goto TAIL_RECURSE; - } - } - else /* Condition false & no 2nd alternative */ - { - ecode += 1 + LINK_SIZE; - } - break; - - - /* End of the pattern, either real or forced. If we are in a top-level - recursion, we should restore the offsets appropriately and continue from - after the call. */ - - case OP_ACCEPT: - case OP_END: - if (md->recursive != NULL && md->recursive->group_num == 0) - { - recursion_info *rec = md->recursive; - DPRINTF(("End of pattern in a (?0) recursion\n")); - md->recursive = rec->prevrec; - memmove(md->offset_vector, rec->offset_save, - rec->saved_max * sizeof(int)); - mstart = rec->save_start; - ims = original_ims; - ecode = rec->after_call; break; } - /* Otherwise, if PCRE_NOTEMPTY is set, fail if we have matched an empty - string - backtracking will then try other alternatives, if any. */ + /* Choose branch according to the condition */ + + ecode += condition? PRIV(OP_lengths)[condcode] : codelink; + + /* We are now at the branch that is to be obeyed. As there is only one, we + can use tail recursion to avoid using another stack frame, except when + there is unlimited repeat of a possibly empty group. In the latter case, a + recursive call to match() is always required, unless the second alternative + doesn't exist, in which case we can just plough on. Note that, for + compatibility with Perl, the | in a conditional group is NOT treated as + creating two alternatives. If a THEN is encountered in the branch, it + propagates out to the enclosing alternative (unless nested in a deeper set + of alternatives, of course). */ + + if (condition || ecode[-(1+LINK_SIZE)] == OP_ALT) + { + if (op != OP_SCOND) + { + goto TAIL_RECURSE; + } + + md->match_function_type = MATCH_CBEGROUP; + RMATCH(eptr, ecode, offset_top, md, eptrb, RM49); + RRETURN(rrc); + } + + /* Condition false & no alternative; continue after the group. */ + + else + { + } + break; + + + /* Before OP_ACCEPT there may be any number of OP_CLOSE opcodes, + to close any currently open capturing brackets. */ + + case OP_CLOSE: + number = GET2(ecode, 1); /* Must be less than 65536 */ + offset = number << 1; + +#ifdef PCRE_DEBUG + printf("end bracket %d at *ACCEPT", number); + printf("\n"); +#endif + + md->capture_last = (md->capture_last & OVFLMASK) | number; + if (offset >= md->offset_max) md->capture_last |= OVFLBIT; else + { + md->offset_vector[offset] = + md->offset_vector[md->offset_end - number]; + md->offset_vector[offset+1] = (int)(eptr - md->start_subject); + if (offset_top <= offset) offset_top = offset + 2; + } + ecode += 1 + IMM2_SIZE; + break; + + + /* End of the pattern, either real or forced. */ + + case OP_END: + case OP_ACCEPT: + case OP_ASSERT_ACCEPT: + + /* If we have matched an empty string, fail if not in an assertion and not + in a recursion if either PCRE_NOTEMPTY is set, or if PCRE_NOTEMPTY_ATSTART + is set and we have matched at the start of the subject. In both cases, + backtracking will then try other alternatives, if any. */ + + if (eptr == mstart && op != OP_ASSERT_ACCEPT && + md->recursive == NULL && + (md->notempty || + (md->notempty_atstart && + mstart == md->start_subject + md->start_offset))) + RRETURN(MATCH_NOMATCH); + + /* Otherwise, we have a match. */ - if (md->notempty && eptr == mstart) RRETURN(MATCH_NOMATCH); md->end_match_ptr = eptr; /* Record where we ended */ md->end_offset_top = offset_top; /* and how many extracts were taken */ md->start_match_ptr = mstart; /* and the start (\K can modify) */ - RRETURN(MATCH_MATCH); - /* Change option settings */ + /* For some reason, the macros don't work properly if an expression is + given as the argument to RRETURN when the heap is in use. */ - case OP_OPT: - ims = ecode[1]; - ecode += 2; - DPRINTF(("ims set to %02lx\n", ims)); - break; + rrc = (op == OP_END)? MATCH_MATCH : MATCH_ACCEPT; + RRETURN(rrc); /* Assertion brackets. Check the alternative branches in turn - the matching won't pass the KET for an assertion. If any one branch matches, the assertion is true. Lookbehind assertions have an OP_REVERSE item at the start of each branch to move the current point backwards, so the code at - this level is identical to the lookahead case. */ + this level is identical to the lookahead case. When the assertion is part + of a condition, we want to return immediately afterwards. The caller of + this incarnation of the match() function will have set MATCH_CONDASSERT in + md->match_function type, and one of these opcodes will be the first opcode + that is processed. We use a local variable that is preserved over calls to + match() to remember this case. */ case OP_ASSERT: case OP_ASSERTBACK: + save_mark = md->mark; + if (md->match_function_type == MATCH_CONDASSERT) + { + condassert = TRUE; + md->match_function_type = 0; + } + else condassert = FALSE; + + /* Loop for each branch */ + do { - RMATCH(eptr, ecode + 1 + LINK_SIZE, offset_top, md, ims, NULL, 0, - RM4); - if (rrc == MATCH_MATCH) break; - if (rrc != MATCH_NOMATCH && rrc != MATCH_THEN) RRETURN(rrc); + RMATCH(eptr, ecode + 1 + LINK_SIZE, offset_top, md, NULL, RM4); + + /* A match means that the assertion is true; break out of the loop + that matches its alternatives. */ + + if (rrc == MATCH_MATCH || rrc == MATCH_ACCEPT) + { + mstart = md->start_match_ptr; /* In case \K reset it */ + break; + } + + /* If not matched, restore the previous mark setting. */ + + md->mark = save_mark; + + /* See comment in the code for capturing groups above about handling + THEN. */ + + if (rrc == MATCH_THEN) + { + next = ecode + GET(ecode,1); + if (md->start_match_ptr < next && + (*ecode == OP_ALT || *next == OP_ALT)) + rrc = MATCH_NOMATCH; + } + + /* Anything other than NOMATCH causes the entire assertion to fail, + passing back the return code. This includes COMMIT, SKIP, PRUNE and an + uncaptured THEN, which means they take their normal effect. This + consistent approach does not always have exactly the same effect as in + Perl. */ + + if (rrc != MATCH_NOMATCH) RRETURN(rrc); ecode += GET(ecode, 1); } - while (*ecode == OP_ALT); + while (*ecode == OP_ALT); /* Continue for next alternative */ + + /* If we have tried all the alternative branches, the assertion has + failed. If not, we broke out after a match. */ + if (*ecode == OP_KET) RRETURN(MATCH_NOMATCH); /* If checking an assertion for a condition, return MATCH_MATCH. */ - if ((flags & match_condassert) != 0) RRETURN(MATCH_MATCH); + if (condassert) RRETURN(MATCH_MATCH); - /* Continue from after the assertion, updating the offsets high water - mark, since extracts may have been taken during the assertion. */ + /* Continue from after a successful assertion, updating the offsets high + water mark, since extracts may have been taken during the assertion. */ do ecode += GET(ecode,1); while (*ecode == OP_ALT); ecode += 1 + LINK_SIZE; offset_top = md->end_offset_top; continue; - /* Negative assertion: all branches must fail to match */ + /* Negative assertion: all branches must fail to match for the assertion to + succeed. */ case OP_ASSERT_NOT: case OP_ASSERTBACK_NOT: + save_mark = md->mark; + if (md->match_function_type == MATCH_CONDASSERT) + { + condassert = TRUE; + md->match_function_type = 0; + } + else condassert = FALSE; + + /* Loop for each alternative branch. */ + do { - RMATCH(eptr, ecode + 1 + LINK_SIZE, offset_top, md, ims, NULL, 0, - RM5); - if (rrc == MATCH_MATCH) RRETURN(MATCH_NOMATCH); - if (rrc != MATCH_NOMATCH && rrc != MATCH_THEN) RRETURN(rrc); + RMATCH(eptr, ecode + 1 + LINK_SIZE, offset_top, md, NULL, RM5); + md->mark = save_mark; /* Always restore the mark setting */ + + switch(rrc) + { + case MATCH_MATCH: /* A successful match means */ + case MATCH_ACCEPT: /* the assertion has failed. */ + RRETURN(MATCH_NOMATCH); + + case MATCH_NOMATCH: /* Carry on with next branch */ + break; + + /* See comment in the code for capturing groups above about handling + THEN. */ + + case MATCH_THEN: + next = ecode + GET(ecode,1); + if (md->start_match_ptr < next && + (*ecode == OP_ALT || *next == OP_ALT)) + { + rrc = MATCH_NOMATCH; + break; + } + /* Otherwise fall through. */ + + /* COMMIT, SKIP, PRUNE, and an uncaptured THEN cause the whole + assertion to fail to match, without considering any more alternatives. + Failing to match means the assertion is true. This is a consistent + approach, but does not always have the same effect as in Perl. */ + + case MATCH_COMMIT: + case MATCH_SKIP: + case MATCH_SKIP_ARG: + case MATCH_PRUNE: + do ecode += GET(ecode,1); while (*ecode == OP_ALT); + goto NEG_ASSERT_TRUE; /* Break out of alternation loop */ + + /* Anything else is an error */ + + default: + RRETURN(rrc); + } + + /* Continue with next branch */ + ecode += GET(ecode,1); } while (*ecode == OP_ALT); - if ((flags & match_condassert) != 0) RRETURN(MATCH_MATCH); + /* All branches in the assertion failed to match. */ - ecode += 1 + LINK_SIZE; + NEG_ASSERT_TRUE: + if (condassert) RRETURN(MATCH_MATCH); /* Condition assertion */ + ecode += 1 + LINK_SIZE; /* Continue with current branch */ continue; /* Move the subject pointer back. This occurs only at the start of @@ -949,8 +1659,8 @@ for (;;) back a number of characters, not bytes. */ case OP_REVERSE: -#ifdef SUPPORT_UTF8 - if (utf8) +#ifdef SUPPORT_UTF + if (utf) { i = GET(ecode, 1); while (i-- > 0) @@ -970,8 +1680,9 @@ for (;;) if (eptr < md->start_subject) RRETURN(MATCH_NOMATCH); } - /* Skip to next op code */ + /* Save the earliest consulted character, then skip to next op code */ + if (eptr < md->start_used_ptr) md->start_used_ptr = eptr; ecode += 1 + LINK_SIZE; break; @@ -980,22 +1691,31 @@ for (;;) function is able to force a failure. */ case OP_CALLOUT: - if (pcre_callout != NULL) + if (PUBL(callout) != NULL) { - pcre_callout_block cb; - cb.version = 1; /* Version 1 of the callout block */ + PUBL(callout_block) cb; + cb.version = 2; /* Version 1 of the callout block */ cb.callout_number = ecode[1]; cb.offset_vector = md->offset_vector; +#if defined COMPILE_PCRE8 cb.subject = (PCRE_SPTR)md->start_subject; - cb.subject_length = md->end_subject - md->start_subject; - cb.start_match = mstart - md->start_subject; - cb.current_position = eptr - md->start_subject; +#elif defined COMPILE_PCRE16 + cb.subject = (PCRE_SPTR16)md->start_subject; +#elif defined COMPILE_PCRE32 + cb.subject = (PCRE_SPTR32)md->start_subject; +#endif + cb.subject_length = (int)(md->end_subject - md->start_subject); + cb.start_match = (int)(mstart - md->start_subject); + cb.current_position = (int)(eptr - md->start_subject); cb.pattern_position = GET(ecode, 2); cb.next_item_length = GET(ecode, 2 + LINK_SIZE); cb.capture_top = offset_top/2; - cb.capture_last = md->capture_last; + cb.capture_last = md->capture_last & CAPLMASK; + /* Internal change requires this for API compatibility. */ + if (cb.capture_last == 0) cb.capture_last = -1; cb.callout_data = md->callout_data; - if ((rrc = (*pcre_callout)(&cb)) > 0) RRETURN(MATCH_NOMATCH); + cb.mark = md->nomatch_mark; + if ((rrc = (*PUBL(callout))(&cb)) > 0) RRETURN(MATCH_NOMATCH); if (rrc < 0) RRETURN(rrc); } ecode += 2 + 2*LINK_SIZE; @@ -1005,38 +1725,49 @@ for (;;) offset data is the offset to the starting bracket from the start of the whole pattern. (This is so that it works from duplicated subpatterns.) - If there are any capturing brackets started but not finished, we have to - save their starting points and reinstate them after the recursion. However, - we don't know how many such there are (offset_top records the completed - total) so we just have to save all the potential data. There may be up to - 65535 such values, which is too large to put on the stack, but using malloc - for small numbers seems expensive. As a compromise, the stack is used when - there are no more than REC_STACK_SAVE_MAX values to store; otherwise malloc - is used. A problem is what to do if the malloc fails ... there is no way of - returning to the top level with an error. Save the top REC_STACK_SAVE_MAX - values on the stack, and accept that the rest may be wrong. + The state of the capturing groups is preserved over recursion, and + re-instated afterwards. We don't know how many are started and not yet + finished (offset_top records the completed total) so we just have to save + all the potential data. There may be up to 65535 such values, which is too + large to put on the stack, but using malloc for small numbers seems + expensive. As a compromise, the stack is used when there are no more than + REC_STACK_SAVE_MAX values to store; otherwise malloc is used. There are also other values that have to be saved. We use a chained sequence of blocks that actually live on the stack. Thanks to Robin Houston - for the original version of this logic. */ + for the original version of this logic. It has, however, been hacked around + a lot, so he is not to blame for the current way it works. */ case OP_RECURSE: { + recursion_info *ri; + unsigned int recno; + callpat = md->start_code + GET(ecode, 1); - new_recursive.group_num = (callpat == md->start_code)? 0 : + recno = (callpat == md->start_code)? 0 : GET2(callpat, 1 + LINK_SIZE); + /* Check for repeating a recursion without advancing the subject pointer. + This should catch convoluted mutual recursions. (Some simple cases are + caught at compile time.) */ + + for (ri = md->recursive; ri != NULL; ri = ri->prevrec) + if (recno == ri->group_num && eptr == ri->subject_position) + RRETURN(PCRE_ERROR_RECURSELOOP); + /* Add to "recursing stack" */ + new_recursive.group_num = recno; + new_recursive.saved_capture_last = md->capture_last; + new_recursive.subject_position = eptr; new_recursive.prevrec = md->recursive; md->recursive = &new_recursive; - /* Find where to continue from afterwards */ + /* Where to continue from afterwards */ ecode += 1 + LINK_SIZE; - new_recursive.after_call = ecode; - /* Now save the offset data. */ + /* Now save the offset data */ new_recursive.saved_max = md->offset_end; if (new_recursive.saved_max <= REC_STACK_SAVE_MAX) @@ -1044,41 +1775,61 @@ for (;;) else { new_recursive.offset_save = - (int *)(pcre_malloc)(new_recursive.saved_max * sizeof(int)); + (int *)(PUBL(malloc))(new_recursive.saved_max * sizeof(int)); if (new_recursive.offset_save == NULL) RRETURN(PCRE_ERROR_NOMEMORY); } - memcpy(new_recursive.offset_save, md->offset_vector, new_recursive.saved_max * sizeof(int)); - new_recursive.save_start = mstart; - mstart = eptr; - /* OK, now we can do the recursion. For each top-level alternative we - restore the offset and recursion data. */ + /* OK, now we can do the recursion. After processing each alternative, + restore the offset data and the last captured value. If there were nested + recursions, md->recursive might be changed, so reset it before looping. + */ DPRINTF(("Recursing into group %d\n", new_recursive.group_num)); - flags = (*callpat >= OP_SBRA)? match_cbegroup : 0; + cbegroup = (*callpat >= OP_SBRA); do { - RMATCH(eptr, callpat + _pcre_OP_lengths[*callpat], offset_top, - md, ims, eptrb, flags, RM6); - if (rrc == MATCH_MATCH) + if (cbegroup) md->match_function_type = MATCH_CBEGROUP; + RMATCH(eptr, callpat + PRIV(OP_lengths)[*callpat], offset_top, + md, eptrb, RM6); + memcpy(md->offset_vector, new_recursive.offset_save, + new_recursive.saved_max * sizeof(int)); + md->capture_last = new_recursive.saved_capture_last; + md->recursive = new_recursive.prevrec; + if (rrc == MATCH_MATCH || rrc == MATCH_ACCEPT) { DPRINTF(("Recursion matched\n")); - md->recursive = new_recursive.prevrec; if (new_recursive.offset_save != stacksave) - (pcre_free)(new_recursive.offset_save); - RRETURN(MATCH_MATCH); + (PUBL(free))(new_recursive.offset_save); + + /* Set where we got to in the subject, and reset the start in case + it was changed by \K. This *is* propagated back out of a recursion, + for Perl compatibility. */ + + eptr = md->end_match_ptr; + mstart = md->start_match_ptr; + goto RECURSION_MATCHED; /* Exit loop; end processing */ } - else if (rrc != MATCH_NOMATCH && rrc != MATCH_THEN) + + /* PCRE does not allow THEN, SKIP, PRUNE or COMMIT to escape beyond a + recursion; they cause a NOMATCH for the entire recursion. These codes + are defined in a range that can be tested for. */ + + if (rrc >= MATCH_BACKTRACK_MIN && rrc <= MATCH_BACKTRACK_MAX) + RRETURN(MATCH_NOMATCH); + + /* Any return code other than NOMATCH is an error. */ + + if (rrc != MATCH_NOMATCH) { DPRINTF(("Recursion gave error %d\n", rrc)); + if (new_recursive.offset_save != stacksave) + (PUBL(free))(new_recursive.offset_save); RRETURN(rrc); } md->recursive = &new_recursive; - memcpy(md->offset_vector, new_recursive.offset_save, - new_recursive.saved_max * sizeof(int)); callpat += GET(callpat, 1); } while (*callpat == OP_ALT); @@ -1086,84 +1837,12 @@ for (;;) DPRINTF(("Recursion didn't match\n")); md->recursive = new_recursive.prevrec; if (new_recursive.offset_save != stacksave) - (pcre_free)(new_recursive.offset_save); + (PUBL(free))(new_recursive.offset_save); RRETURN(MATCH_NOMATCH); } - /* Control never reaches here */ - /* "Once" brackets are like assertion brackets except that after a match, - the point in the subject string is not moved back. Thus there can never be - a move back into the brackets. Friedl calls these "atomic" subpatterns. - Check the alternative branches in turn - the matching won't pass the KET - for this kind of subpattern. If any one branch matches, we carry on as at - the end of a normal bracket, leaving the subject pointer. */ - - case OP_ONCE: - prev = ecode; - saved_eptr = eptr; - - do - { - RMATCH(eptr, ecode + 1 + LINK_SIZE, offset_top, md, ims, eptrb, 0, RM7); - if (rrc == MATCH_MATCH) break; - if (rrc != MATCH_NOMATCH && rrc != MATCH_THEN) RRETURN(rrc); - ecode += GET(ecode,1); - } - while (*ecode == OP_ALT); - - /* If hit the end of the group (which could be repeated), fail */ - - if (*ecode != OP_ONCE && *ecode != OP_ALT) RRETURN(MATCH_NOMATCH); - - /* Continue as from after the assertion, updating the offsets high water - mark, since extracts may have been taken. */ - - do ecode += GET(ecode, 1); while (*ecode == OP_ALT); - - offset_top = md->end_offset_top; - eptr = md->end_match_ptr; - - /* For a non-repeating ket, just continue at this level. This also - happens for a repeating ket if no characters were matched in the group. - This is the forcible breaking of infinite loops as implemented in Perl - 5.005. If there is an options reset, it will get obeyed in the normal - course of events. */ - - if (*ecode == OP_KET || eptr == saved_eptr) - { - ecode += 1+LINK_SIZE; - break; - } - - /* The repeating kets try the rest of the pattern or restart from the - preceding bracket, in the appropriate order. The second "call" of match() - uses tail recursion, to avoid using another stack frame. We need to reset - any options that changed within the bracket before re-running it, so - check the next opcode. */ - - if (ecode[1+LINK_SIZE] == OP_OPT) - { - ims = (ims & ~PCRE_IMS) | ecode[4]; - DPRINTF(("ims set to %02lx at group repeat\n", ims)); - } - - if (*ecode == OP_KETRMIN) - { - RMATCH(eptr, ecode + 1 + LINK_SIZE, offset_top, md, ims, eptrb, 0, RM8); - if (rrc != MATCH_NOMATCH) RRETURN(rrc); - ecode = prev; - flags = 0; - goto TAIL_RECURSE; - } - else /* OP_KETRMAX */ - { - RMATCH(eptr, prev, offset_top, md, ims, eptrb, match_cbegroup, RM9); - if (rrc != MATCH_NOMATCH) RRETURN(rrc); - ecode += 1 + LINK_SIZE; - flags = 0; - goto TAIL_RECURSE; - } - /* Control never gets here */ + RECURSION_MATCHED: + break; /* An alternation is the end of a branch; scan along to find the end of the bracketed group and go to there. */ @@ -1179,138 +1858,182 @@ for (;;) optional ones preceded by BRAZERO or BRAMINZERO. */ case OP_BRAZERO: - { - next = ecode+1; - RMATCH(eptr, next, offset_top, md, ims, eptrb, 0, RM10); - if (rrc != MATCH_NOMATCH) RRETURN(rrc); - do next += GET(next,1); while (*next == OP_ALT); - ecode = next + 1 + LINK_SIZE; - } + next = ecode + 1; + RMATCH(eptr, next, offset_top, md, eptrb, RM10); + if (rrc != MATCH_NOMATCH) RRETURN(rrc); + do next += GET(next, 1); while (*next == OP_ALT); + ecode = next + 1 + LINK_SIZE; break; case OP_BRAMINZERO: - { - next = ecode+1; - do next += GET(next, 1); while (*next == OP_ALT); - RMATCH(eptr, next + 1+LINK_SIZE, offset_top, md, ims, eptrb, 0, RM11); - if (rrc != MATCH_NOMATCH) RRETURN(rrc); - ecode++; - } + next = ecode + 1; + do next += GET(next, 1); while (*next == OP_ALT); + RMATCH(eptr, next + 1+LINK_SIZE, offset_top, md, eptrb, RM11); + if (rrc != MATCH_NOMATCH) RRETURN(rrc); + ecode++; break; case OP_SKIPZERO: - { - next = ecode+1; - do next += GET(next,1); while (*next == OP_ALT); - ecode = next + 1 + LINK_SIZE; - } + next = ecode+1; + do next += GET(next,1); while (*next == OP_ALT); + ecode = next + 1 + LINK_SIZE; break; + /* BRAPOSZERO occurs before a possessive bracket group. Don't do anything + here; just jump to the group, with allow_zero set TRUE. */ + + case OP_BRAPOSZERO: + op = *(++ecode); + allow_zero = TRUE; + if (op == OP_CBRAPOS || op == OP_SCBRAPOS) goto POSSESSIVE_CAPTURE; + goto POSSESSIVE_NON_CAPTURE; + /* End of a group, repeated or non-repeating. */ case OP_KET: case OP_KETRMIN: case OP_KETRMAX: + case OP_KETRPOS: prev = ecode - GET(ecode, 1); /* If this was a group that remembered the subject start, in order to break infinite repeats of empty string matches, retrieve the subject start from the chain. Otherwise, set it NULL. */ - if (*prev >= OP_SBRA) + if (*prev >= OP_SBRA || *prev == OP_ONCE) { saved_eptr = eptrb->epb_saved_eptr; /* Value at start of group */ eptrb = eptrb->epb_prev; /* Backup to previous group */ } else saved_eptr = NULL; - /* If we are at the end of an assertion group, stop matching and return - MATCH_MATCH, but record the current high water mark for use by positive - assertions. Do this also for the "once" (atomic) groups. */ + /* If we are at the end of an assertion group or a non-capturing atomic + group, stop matching and return MATCH_MATCH, but record the current high + water mark for use by positive assertions. We also need to record the match + start in case it was changed by \K. */ - if (*prev == OP_ASSERT || *prev == OP_ASSERT_NOT || - *prev == OP_ASSERTBACK || *prev == OP_ASSERTBACK_NOT || - *prev == OP_ONCE) + if ((*prev >= OP_ASSERT && *prev <= OP_ASSERTBACK_NOT) || + *prev == OP_ONCE_NC) { - md->end_match_ptr = eptr; /* For ONCE */ + md->end_match_ptr = eptr; /* For ONCE_NC */ md->end_offset_top = offset_top; - RRETURN(MATCH_MATCH); + md->start_match_ptr = mstart; + RRETURN(MATCH_MATCH); /* Sets md->mark */ } /* For capturing groups we have to check the group number back at the start and if necessary complete handling an extraction by setting the offsets and - bumping the high water mark. Note that whole-pattern recursion is coded as - a recurse into group 0, so it won't be picked up here. Instead, we catch it - when the OP_END is reached. Other recursion is handled here. */ + bumping the high water mark. Whole-pattern recursion is coded as a recurse + into group 0, so it won't be picked up here. Instead, we catch it when the + OP_END is reached. Other recursion is handled here. We just have to record + the current subject position and start match pointer and give a MATCH + return. */ - if (*prev == OP_CBRA || *prev == OP_SCBRA) + if (*prev == OP_CBRA || *prev == OP_SCBRA || + *prev == OP_CBRAPOS || *prev == OP_SCBRAPOS) { number = GET2(prev, 1+LINK_SIZE); offset = number << 1; -#ifdef DEBUG +#ifdef PCRE_DEBUG printf("end bracket %d", number); printf("\n"); #endif - md->capture_last = number; - if (offset >= md->offset_max) md->offset_overflow = TRUE; else - { - md->offset_vector[offset] = - md->offset_vector[md->offset_end - number]; - md->offset_vector[offset+1] = eptr - md->start_subject; - if (offset_top <= offset) offset_top = offset + 2; - } - - /* Handle a recursively called group. Restore the offsets - appropriately and continue from after the call. */ + /* Handle a recursively called group. */ if (md->recursive != NULL && md->recursive->group_num == number) { - recursion_info *rec = md->recursive; - DPRINTF(("Recursion (%d) succeeded - continuing\n", number)); - md->recursive = rec->prevrec; - mstart = rec->save_start; - memcpy(md->offset_vector, rec->offset_save, - rec->saved_max * sizeof(int)); - ecode = rec->after_call; - ims = original_ims; - break; + md->end_match_ptr = eptr; + md->start_match_ptr = mstart; + RRETURN(MATCH_MATCH); + } + + /* Deal with capturing */ + + md->capture_last = (md->capture_last & OVFLMASK) | number; + if (offset >= md->offset_max) md->capture_last |= OVFLBIT; else + { + /* If offset is greater than offset_top, it means that we are + "skipping" a capturing group, and that group's offsets must be marked + unset. In earlier versions of PCRE, all the offsets were unset at the + start of matching, but this doesn't work because atomic groups and + assertions can cause a value to be set that should later be unset. + Example: matching /(?>(a))b|(a)c/ against "ac". This sets group 1 as + part of the atomic group, but this is not on the final matching path, + so must be unset when 2 is set. (If there is no group 2, there is no + problem, because offset_top will then be 2, indicating no capture.) */ + + if (offset > offset_top) + { + register int *iptr = md->offset_vector + offset_top; + register int *iend = md->offset_vector + offset; + while (iptr < iend) *iptr++ = -1; + } + + /* Now make the extraction */ + + md->offset_vector[offset] = + md->offset_vector[md->offset_end - number]; + md->offset_vector[offset+1] = (int)(eptr - md->start_subject); + if (offset_top <= offset) offset_top = offset + 2; } } - /* For both capturing and non-capturing groups, reset the value of the ims - flags, in case they got changed during the group. */ - - ims = original_ims; - DPRINTF(("ims reset to %02lx\n", ims)); - - /* For a non-repeating ket, just continue at this level. This also - happens for a repeating ket if no characters were matched in the group. - This is the forcible breaking of infinite loops as implemented in Perl - 5.005. If there is an options reset, it will get obeyed in the normal - course of events. */ + /* For an ordinary non-repeating ket, just continue at this level. This + also happens for a repeating ket if no characters were matched in the + group. This is the forcible breaking of infinite loops as implemented in + Perl 5.005. For a non-repeating atomic group that includes captures, + establish a backup point by processing the rest of the pattern at a lower + level. If this results in a NOMATCH return, pass MATCH_ONCE back to the + original OP_ONCE level, thereby bypassing intermediate backup points, but + resetting any captures that happened along the way. */ if (*ecode == OP_KET || eptr == saved_eptr) { - ecode += 1 + LINK_SIZE; + if (*prev == OP_ONCE) + { + RMATCH(eptr, ecode + 1 + LINK_SIZE, offset_top, md, eptrb, RM12); + if (rrc != MATCH_NOMATCH) RRETURN(rrc); + md->once_target = prev; /* Level at which to change to MATCH_NOMATCH */ + RRETURN(MATCH_ONCE); + } + ecode += 1 + LINK_SIZE; /* Carry on at this level */ break; } - /* The repeating kets try the rest of the pattern or restart from the - preceding bracket, in the appropriate order. In the second case, we can use - tail recursion to avoid using another stack frame, unless we have an - unlimited repeat of a group that can match an empty string. */ + /* OP_KETRPOS is a possessive repeating ket. Remember the current position, + and return the MATCH_KETRPOS. This makes it possible to do the repeats one + at a time from the outer level, thus saving stack. */ - flags = (*prev >= OP_SBRA)? match_cbegroup : 0; + if (*ecode == OP_KETRPOS) + { + md->start_match_ptr = mstart; /* In case \K reset it */ + md->end_match_ptr = eptr; + md->end_offset_top = offset_top; + RRETURN(MATCH_KETRPOS); + } + + /* The normal repeating kets try the rest of the pattern or restart from + the preceding bracket, in the appropriate order. In the second case, we can + use tail recursion to avoid using another stack frame, unless we have an + an atomic group or an unlimited repeat of a group that can match an empty + string. */ if (*ecode == OP_KETRMIN) { - RMATCH(eptr, ecode + 1 + LINK_SIZE, offset_top, md, ims, eptrb, 0, RM12); + RMATCH(eptr, ecode + 1 + LINK_SIZE, offset_top, md, eptrb, RM7); if (rrc != MATCH_NOMATCH) RRETURN(rrc); - if (flags != 0) /* Could match an empty string */ + if (*prev == OP_ONCE) { - RMATCH(eptr, prev, offset_top, md, ims, eptrb, flags, RM50); + RMATCH(eptr, prev, offset_top, md, eptrb, RM8); + if (rrc != MATCH_NOMATCH) RRETURN(rrc); + md->once_target = prev; /* Level at which to change to MATCH_NOMATCH */ + RRETURN(MATCH_ONCE); + } + if (*prev >= OP_SBRA) /* Could match an empty string */ + { + RMATCH(eptr, prev, offset_top, md, eptrb, RM50); RRETURN(rrc); } ecode = prev; @@ -1318,27 +2041,25 @@ for (;;) } else /* OP_KETRMAX */ { - RMATCH(eptr, prev, offset_top, md, ims, eptrb, flags, RM13); + RMATCH(eptr, prev, offset_top, md, eptrb, RM13); + if (rrc == MATCH_ONCE && md->once_target == prev) rrc = MATCH_NOMATCH; if (rrc != MATCH_NOMATCH) RRETURN(rrc); + if (*prev == OP_ONCE) + { + RMATCH(eptr, ecode + 1 + LINK_SIZE, offset_top, md, eptrb, RM9); + if (rrc != MATCH_NOMATCH) RRETURN(rrc); + md->once_target = prev; + RRETURN(MATCH_ONCE); + } ecode += 1 + LINK_SIZE; - flags = 0; goto TAIL_RECURSE; } /* Control never gets here */ - /* Start of subject unless notbol, or after internal newline if multiline */ + /* Not multiline mode: start of subject assertion, unless notbol. */ case OP_CIRC: if (md->notbol && eptr == md->start_subject) RRETURN(MATCH_NOMATCH); - if ((ims & PCRE_MULTILINE) != 0) - { - if (eptr != md->start_subject && - (eptr == md->end_subject || !WAS_NEWLINE(eptr))) - RRETURN(MATCH_NOMATCH); - ecode++; - break; - } - /* ... else fall through */ /* Start of subject assertion */ @@ -1347,6 +2068,16 @@ for (;;) ecode++; break; + /* Multiline mode: start of subject unless notbol, or after any newline. */ + + case OP_CIRCM: + if (md->notbol && eptr == md->start_subject) RRETURN(MATCH_NOMATCH); + if (eptr != md->start_subject && + (eptr == md->end_subject || !WAS_NEWLINE(eptr))) + RRETURN(MATCH_NOMATCH); + ecode++; + break; + /* Start of match assertion */ case OP_SOM: @@ -1361,46 +2092,73 @@ for (;;) ecode++; break; - /* Assert before internal newline if multiline, or before a terminating - newline unless endonly is set, else end of subject unless noteol is set. */ + /* Multiline mode: assert before any newline, or before end of subject + unless noteol is set. */ - case OP_DOLL: - if ((ims & PCRE_MULTILINE) != 0) + case OP_DOLLM: + if (eptr < md->end_subject) { - if (eptr < md->end_subject) - { if (!IS_NEWLINE(eptr)) RRETURN(MATCH_NOMATCH); } - else - { if (md->noteol) RRETURN(MATCH_NOMATCH); } - ecode++; - break; + if (!IS_NEWLINE(eptr)) + { + if (md->partial != 0 && + eptr + 1 >= md->end_subject && + NLBLOCK->nltype == NLTYPE_FIXED && + NLBLOCK->nllen == 2 && + UCHAR21TEST(eptr) == NLBLOCK->nl[0]) + { + md->hitend = TRUE; + if (md->partial > 1) RRETURN(PCRE_ERROR_PARTIAL); + } + RRETURN(MATCH_NOMATCH); + } } else { if (md->noteol) RRETURN(MATCH_NOMATCH); - if (!md->endonly) - { - if (eptr != md->end_subject && - (!IS_NEWLINE(eptr) || eptr != md->end_subject - md->nllen)) - RRETURN(MATCH_NOMATCH); - ecode++; - break; - } + SCHECK_PARTIAL(); } + ecode++; + break; + + /* Not multiline mode: assert before a terminating newline or before end of + subject unless noteol is set. */ + + case OP_DOLL: + if (md->noteol) RRETURN(MATCH_NOMATCH); + if (!md->endonly) goto ASSERT_NL_OR_EOS; + /* ... else fall through for endonly */ /* End of subject assertion (\z) */ case OP_EOD: if (eptr < md->end_subject) RRETURN(MATCH_NOMATCH); + SCHECK_PARTIAL(); ecode++; break; /* End of subject or ending \n assertion (\Z) */ case OP_EODN: - if (eptr != md->end_subject && + ASSERT_NL_OR_EOS: + if (eptr < md->end_subject && (!IS_NEWLINE(eptr) || eptr != md->end_subject - md->nllen)) + { + if (md->partial != 0 && + eptr + 1 >= md->end_subject && + NLBLOCK->nltype == NLTYPE_FIXED && + NLBLOCK->nllen == 2 && + UCHAR21TEST(eptr) == NLBLOCK->nl[0]) + { + md->hitend = TRUE; + if (md->partial > 1) RRETURN(PCRE_ERROR_PARTIAL); + } RRETURN(MATCH_NOMATCH); + } + + /* Either at end of string or \n before end. */ + + SCHECK_PARTIAL(); ecode++; break; @@ -1412,34 +2170,108 @@ for (;;) /* Find out if the previous and current characters are "word" characters. It takes a bit more work in UTF-8 mode. Characters > 255 are assumed to - be "non-word" characters. */ + be "non-word" characters. Remember the earliest consulted character for + partial matching. */ -#ifdef SUPPORT_UTF8 - if (utf8) +#ifdef SUPPORT_UTF + if (utf) { + /* Get status of previous character */ + if (eptr == md->start_subject) prev_is_word = FALSE; else { - const uschar *lastptr = eptr - 1; - while((*lastptr & 0xc0) == 0x80) lastptr--; + PCRE_PUCHAR lastptr = eptr - 1; + BACKCHAR(lastptr); + if (lastptr < md->start_used_ptr) md->start_used_ptr = lastptr; GETCHAR(c, lastptr); +#ifdef SUPPORT_UCP + if (md->use_ucp) + { + if (c == '_') prev_is_word = TRUE; else + { + int cat = UCD_CATEGORY(c); + prev_is_word = (cat == ucp_L || cat == ucp_N); + } + } + else +#endif prev_is_word = c < 256 && (md->ctypes[c] & ctype_word) != 0; } - if (eptr >= md->end_subject) cur_is_word = FALSE; else + + /* Get status of next character */ + + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + cur_is_word = FALSE; + } + else { GETCHAR(c, eptr); +#ifdef SUPPORT_UCP + if (md->use_ucp) + { + if (c == '_') cur_is_word = TRUE; else + { + int cat = UCD_CATEGORY(c); + cur_is_word = (cat == ucp_L || cat == ucp_N); + } + } + else +#endif cur_is_word = c < 256 && (md->ctypes[c] & ctype_word) != 0; } } else #endif - /* More streamlined when not in UTF-8 mode */ + /* Not in UTF-8 mode, but we may still have PCRE_UCP set, and for + consistency with the behaviour of \w we do use it in this case. */ { - prev_is_word = (eptr != md->start_subject) && - ((md->ctypes[eptr[-1]] & ctype_word) != 0); - cur_is_word = (eptr < md->end_subject) && - ((md->ctypes[*eptr] & ctype_word) != 0); + /* Get status of previous character */ + + if (eptr == md->start_subject) prev_is_word = FALSE; else + { + if (eptr <= md->start_used_ptr) md->start_used_ptr = eptr - 1; +#ifdef SUPPORT_UCP + if (md->use_ucp) + { + c = eptr[-1]; + if (c == '_') prev_is_word = TRUE; else + { + int cat = UCD_CATEGORY(c); + prev_is_word = (cat == ucp_L || cat == ucp_N); + } + } + else +#endif + prev_is_word = MAX_255(eptr[-1]) + && ((md->ctypes[eptr[-1]] & ctype_word) != 0); + } + + /* Get status of next character */ + + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + cur_is_word = FALSE; + } + else +#ifdef SUPPORT_UCP + if (md->use_ucp) + { + c = *eptr; + if (c == '_') cur_is_word = TRUE; else + { + int cat = UCD_CATEGORY(c); + cur_is_word = (cat == ucp_L || cat == ucp_N); + } + } + else +#endif + cur_is_word = MAX_255(*eptr) + && ((md->ctypes[*eptr] & ctype_word) != 0); } /* Now see if the situation is what we want */ @@ -1450,15 +2282,35 @@ for (;;) } break; - /* Match a single character type; inline for speed */ + /* Match any single character type except newline; have to take care with + CRLF newlines and partial matching. */ case OP_ANY: if (IS_NEWLINE(eptr)) RRETURN(MATCH_NOMATCH); + if (md->partial != 0 && + eptr + 1 >= md->end_subject && + NLBLOCK->nltype == NLTYPE_FIXED && + NLBLOCK->nllen == 2 && + UCHAR21TEST(eptr) == NLBLOCK->nl[0]) + { + md->hitend = TRUE; + if (md->partial > 1) RRETURN(PCRE_ERROR_PARTIAL); + } + /* Fall through */ + /* Match any single character whatsoever. */ + case OP_ALLANY: - if (eptr++ >= md->end_subject) RRETURN(MATCH_NOMATCH); - if (utf8) while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++; + if (eptr >= md->end_subject) /* DO NOT merge the eptr++ here; it must */ + { /* not be updated before SCHECK_PARTIAL. */ + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } + eptr++; +#ifdef SUPPORT_UTF + if (utf) ACROSSCHAR(eptr < md->end_subject, *eptr, eptr++); +#endif ecode++; break; @@ -1466,15 +2318,24 @@ for (;;) any byte, even newline, independent of the setting of PCRE_DOTALL. */ case OP_ANYBYTE: - if (eptr++ >= md->end_subject) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) /* DO NOT merge the eptr++ here; it must */ + { /* not be updated before SCHECK_PARTIAL. */ + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } + eptr++; ecode++; break; case OP_NOT_DIGIT: - if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } GETCHARINCTEST(c, eptr); if ( -#ifdef SUPPORT_UTF8 +#if defined SUPPORT_UTF || !(defined COMPILE_PCRE8) c < 256 && #endif (md->ctypes[c] & ctype_digit) != 0 @@ -1484,11 +2345,15 @@ for (;;) break; case OP_DIGIT: - if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } GETCHARINCTEST(c, eptr); if ( -#ifdef SUPPORT_UTF8 - c >= 256 || +#if defined SUPPORT_UTF || !(defined COMPILE_PCRE8) + c > 255 || #endif (md->ctypes[c] & ctype_digit) == 0 ) @@ -1497,10 +2362,14 @@ for (;;) break; case OP_NOT_WHITESPACE: - if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } GETCHARINCTEST(c, eptr); if ( -#ifdef SUPPORT_UTF8 +#if defined SUPPORT_UTF || !(defined COMPILE_PCRE8) c < 256 && #endif (md->ctypes[c] & ctype_space) != 0 @@ -1510,11 +2379,15 @@ for (;;) break; case OP_WHITESPACE: - if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } GETCHARINCTEST(c, eptr); if ( -#ifdef SUPPORT_UTF8 - c >= 256 || +#if defined SUPPORT_UTF || !(defined COMPILE_PCRE8) + c > 255 || #endif (md->ctypes[c] & ctype_space) == 0 ) @@ -1523,10 +2396,14 @@ for (;;) break; case OP_NOT_WORDCHAR: - if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } GETCHARINCTEST(c, eptr); if ( -#ifdef SUPPORT_UTF8 +#if defined SUPPORT_UTF || !(defined COMPILE_PCRE8) c < 256 && #endif (md->ctypes[c] & ctype_word) != 0 @@ -1536,11 +2413,15 @@ for (;;) break; case OP_WORDCHAR: - if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } GETCHARINCTEST(c, eptr); if ( -#ifdef SUPPORT_UTF8 - c >= 256 || +#if defined SUPPORT_UTF || !(defined COMPILE_PCRE8) + c > 255 || #endif (md->ctypes[c] & ctype_word) == 0 ) @@ -1549,23 +2430,34 @@ for (;;) break; case OP_ANYNL: - if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } GETCHARINCTEST(c, eptr); switch(c) { default: RRETURN(MATCH_NOMATCH); - case 0x000d: - if (eptr < md->end_subject && *eptr == 0x0a) eptr++; + + case CHAR_CR: + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + } + else if (UCHAR21TEST(eptr) == CHAR_LF) eptr++; break; - case 0x000a: + case CHAR_LF: break; - case 0x000b: - case 0x000c: - case 0x0085: + case CHAR_VT: + case CHAR_FF: + case CHAR_NEL: +#ifndef EBCDIC case 0x2028: case 0x2029: +#endif /* Not EBCDIC */ if (md->bsr_anycrlf) RRETURN(MATCH_NOMATCH); break; } @@ -1573,97 +2465,61 @@ for (;;) break; case OP_NOT_HSPACE: - if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } GETCHARINCTEST(c, eptr); switch(c) { + HSPACE_CASES: RRETURN(MATCH_NOMATCH); /* Byte and multibyte cases */ default: break; - case 0x09: /* HT */ - case 0x20: /* SPACE */ - case 0xa0: /* NBSP */ - case 0x1680: /* OGHAM SPACE MARK */ - case 0x180e: /* MONGOLIAN VOWEL SEPARATOR */ - case 0x2000: /* EN QUAD */ - case 0x2001: /* EM QUAD */ - case 0x2002: /* EN SPACE */ - case 0x2003: /* EM SPACE */ - case 0x2004: /* THREE-PER-EM SPACE */ - case 0x2005: /* FOUR-PER-EM SPACE */ - case 0x2006: /* SIX-PER-EM SPACE */ - case 0x2007: /* FIGURE SPACE */ - case 0x2008: /* PUNCTUATION SPACE */ - case 0x2009: /* THIN SPACE */ - case 0x200A: /* HAIR SPACE */ - case 0x202f: /* NARROW NO-BREAK SPACE */ - case 0x205f: /* MEDIUM MATHEMATICAL SPACE */ - case 0x3000: /* IDEOGRAPHIC SPACE */ - RRETURN(MATCH_NOMATCH); } ecode++; break; case OP_HSPACE: - if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } GETCHARINCTEST(c, eptr); switch(c) { + HSPACE_CASES: break; /* Byte and multibyte cases */ default: RRETURN(MATCH_NOMATCH); - case 0x09: /* HT */ - case 0x20: /* SPACE */ - case 0xa0: /* NBSP */ - case 0x1680: /* OGHAM SPACE MARK */ - case 0x180e: /* MONGOLIAN VOWEL SEPARATOR */ - case 0x2000: /* EN QUAD */ - case 0x2001: /* EM QUAD */ - case 0x2002: /* EN SPACE */ - case 0x2003: /* EM SPACE */ - case 0x2004: /* THREE-PER-EM SPACE */ - case 0x2005: /* FOUR-PER-EM SPACE */ - case 0x2006: /* SIX-PER-EM SPACE */ - case 0x2007: /* FIGURE SPACE */ - case 0x2008: /* PUNCTUATION SPACE */ - case 0x2009: /* THIN SPACE */ - case 0x200A: /* HAIR SPACE */ - case 0x202f: /* NARROW NO-BREAK SPACE */ - case 0x205f: /* MEDIUM MATHEMATICAL SPACE */ - case 0x3000: /* IDEOGRAPHIC SPACE */ - break; } ecode++; break; case OP_NOT_VSPACE: - if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } GETCHARINCTEST(c, eptr); switch(c) { + VSPACE_CASES: RRETURN(MATCH_NOMATCH); default: break; - case 0x0a: /* LF */ - case 0x0b: /* VT */ - case 0x0c: /* FF */ - case 0x0d: /* CR */ - case 0x85: /* NEL */ - case 0x2028: /* LINE SEPARATOR */ - case 0x2029: /* PARAGRAPH SEPARATOR */ - RRETURN(MATCH_NOMATCH); } ecode++; break; case OP_VSPACE: - if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } GETCHARINCTEST(c, eptr); switch(c) { + VSPACE_CASES: break; default: RRETURN(MATCH_NOMATCH); - case 0x0a: /* LF */ - case 0x0b: /* VT */ - case 0x0c: /* FF */ - case 0x0d: /* CR */ - case 0x85: /* NEL */ - case 0x2028: /* LINE SEPARATOR */ - case 0x2029: /* PARAGRAPH SEPARATOR */ - break; } ecode++; break; @@ -1674,10 +2530,15 @@ for (;;) case OP_PROP: case OP_NOTPROP: - if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } GETCHARINCTEST(c, eptr); { - const ucd_record * prop = GET_UCD(c); + const pcre_uint32 *cp; + const ucd_record *prop = GET_UCD(c); switch(ecode[1]) { @@ -1690,10 +2551,10 @@ for (;;) prop->chartype == ucp_Ll || prop->chartype == ucp_Lt) == (op == OP_NOTPROP)) RRETURN(MATCH_NOMATCH); - break; + break; case PT_GC: - if ((ecode[2] != _pcre_ucp_gentype[prop->chartype]) == (op == OP_PROP)) + if ((ecode[2] != PRIV(ucp_gentype)[prop->chartype]) == (op == OP_PROP)) RRETURN(MATCH_NOMATCH); break; @@ -1707,6 +2568,61 @@ for (;;) RRETURN(MATCH_NOMATCH); break; + /* These are specials */ + + case PT_ALNUM: + if ((PRIV(ucp_gentype)[prop->chartype] == ucp_L || + PRIV(ucp_gentype)[prop->chartype] == ucp_N) == (op == OP_NOTPROP)) + RRETURN(MATCH_NOMATCH); + break; + + /* Perl space used to exclude VT, but from Perl 5.18 it is included, + which means that Perl space and POSIX space are now identical. PCRE + was changed at release 8.34. */ + + case PT_SPACE: /* Perl space */ + case PT_PXSPACE: /* POSIX space */ + switch(c) + { + HSPACE_CASES: + VSPACE_CASES: + if (op == OP_NOTPROP) RRETURN(MATCH_NOMATCH); + break; + + default: + if ((PRIV(ucp_gentype)[prop->chartype] == ucp_Z) == + (op == OP_NOTPROP)) RRETURN(MATCH_NOMATCH); + break; + } + break; + + case PT_WORD: + if ((PRIV(ucp_gentype)[prop->chartype] == ucp_L || + PRIV(ucp_gentype)[prop->chartype] == ucp_N || + c == CHAR_UNDERSCORE) == (op == OP_NOTPROP)) + RRETURN(MATCH_NOMATCH); + break; + + case PT_CLIST: + cp = PRIV(ucd_caseless_sets) + ecode[2]; + for (;;) + { + if (c < *cp) + { if (op == OP_PROP) { RRETURN(MATCH_NOMATCH); } else break; } + if (c == *cp++) + { if (op == OP_PROP) break; else { RRETURN(MATCH_NOMATCH); } } + } + break; + + case PT_UCNC: + if ((c == CHAR_DOLLAR_SIGN || c == CHAR_COMMERCIAL_AT || + c == CHAR_GRAVE_ACCENT || (c >= 0xa0 && c <= 0xd7ff) || + c >= 0xe000) == (op == OP_NOTPROP)) + RRETURN(MATCH_NOMATCH); + break; + + /* This should never occur */ + default: RRETURN(PCRE_ERROR_INTERNAL); } @@ -1719,26 +2635,30 @@ for (;;) is in the binary; otherwise a compile-time error occurs. */ case OP_EXTUNI: - if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); - GETCHARINCTEST(c, eptr); + if (eptr >= md->end_subject) { - int category = UCD_CATEGORY(c); - if (category == ucp_M) RRETURN(MATCH_NOMATCH); + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } + else + { + int lgb, rgb; + GETCHARINCTEST(c, eptr); + lgb = UCD_GRAPHBREAK(c); while (eptr < md->end_subject) { int len = 1; - if (!utf8) c = *eptr; else - { - GETCHARLEN(c, eptr, len); - } - category = UCD_CATEGORY(c); - if (category != ucp_M) break; + if (!utf) c = *eptr; else { GETCHARLEN(c, eptr, len); } + rgb = UCD_GRAPHBREAK(c); + if ((PRIV(ucp_gbtable)[lgb] & (1 << rgb)) == 0) break; + lgb = rgb; eptr += len; } } + CHECK_PARTIAL(); ecode++; break; -#endif +#endif /* SUPPORT_UCP */ /* Match a back reference, possibly repeatedly. Look past the end of the @@ -1747,121 +2667,183 @@ for (;;) similar code to character type repeats - written out again for speed. However, if the referenced string is the empty string, always treat it as matched, any number of times (otherwise there could be infinite - loops). */ + loops). If the reference is unset, there are two possibilities: - case OP_REF: + (a) In the default, Perl-compatible state, set the length negative; + this ensures that every attempt at a match fails. We can't just fail + here, because of the possibility of quantifiers with zero minima. + + (b) If the JavaScript compatibility flag is set, set the length to zero + so that the back reference matches an empty string. + + Otherwise, set the length to the length of what was matched by the + referenced subpattern. + + The OP_REF and OP_REFI opcodes are used for a reference to a numbered group + or to a non-duplicated named group. For a duplicated named group, OP_DNREF + and OP_DNREFI are used. In this case we must scan the list of groups to + which the name refers, and use the first one that is set. */ + + case OP_DNREF: + case OP_DNREFI: + caseless = op == OP_DNREFI; { - offset = GET2(ecode, 1) << 1; /* Doubled ref number */ - ecode += 3; + int count = GET2(ecode, 1+IMM2_SIZE); + pcre_uchar *slot = md->name_table + GET2(ecode, 1) * md->name_entry_size; + ecode += 1 + 2*IMM2_SIZE; - /* If the reference is unset, there are two possibilities: + /* Setting the default length first and initializing 'offset' avoids + compiler warnings in the REF_REPEAT code. */ - (a) In the default, Perl-compatible state, set the length to be longer - than the amount of subject left; this ensures that every attempt at a - match fails. We can't just fail here, because of the possibility of - quantifiers with zero minima. + length = (md->jscript_compat)? 0 : -1; + offset = 0; - (b) If the JavaScript compatibility flag is set, set the length to zero - so that the back reference matches an empty string. - - Otherwise, set the length to the length of what was matched by the - referenced subpattern. */ - - if (offset >= offset_top || md->offset_vector[offset] < 0) - length = (md->jscript_compat)? 0 : md->end_subject - eptr + 1; - else - length = md->offset_vector[offset+1] - md->offset_vector[offset]; - - /* Set up for repetition, or handle the non-repeated case */ - - switch (*ecode) + while (count-- > 0) { - case OP_CRSTAR: - case OP_CRMINSTAR: - case OP_CRPLUS: - case OP_CRMINPLUS: - case OP_CRQUERY: - case OP_CRMINQUERY: - c = *ecode++ - OP_CRSTAR; - minimize = (c & 1) != 0; - min = rep_min[c]; /* Pick up values from tables; */ - max = rep_max[c]; /* zero for max => infinity */ - if (max == 0) max = INT_MAX; - break; - - case OP_CRRANGE: - case OP_CRMINRANGE: - minimize = (*ecode == OP_CRMINRANGE); - min = GET2(ecode, 1); - max = GET2(ecode, 3); - if (max == 0) max = INT_MAX; - ecode += 5; - break; - - default: /* No repeat follows */ - if (!match_ref(offset, eptr, length, md, ims)) RRETURN(MATCH_NOMATCH); - eptr += length; - continue; /* With the main loop */ - } - - /* If the length of the reference is zero, just continue with the - main loop. */ - - if (length == 0) continue; - - /* First, ensure the minimum number of matches are present. We get back - the length of the reference string explicitly rather than passing the - address of eptr, so that eptr can be a register variable. */ - - for (i = 1; i <= min; i++) - { - if (!match_ref(offset, eptr, length, md, ims)) RRETURN(MATCH_NOMATCH); - eptr += length; - } - - /* If min = max, continue at the same level without recursion. - They are not both allowed to be zero. */ - - if (min == max) continue; - - /* If minimizing, keep trying and advancing the pointer */ - - if (minimize) - { - for (fi = min;; fi++) + offset = GET2(slot, 0) << 1; + if (offset < offset_top && md->offset_vector[offset] >= 0) { - RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM14); - if (rrc != MATCH_NOMATCH) RRETURN(rrc); - if (fi >= max || !match_ref(offset, eptr, length, md, ims)) - RRETURN(MATCH_NOMATCH); - eptr += length; + length = md->offset_vector[offset+1] - md->offset_vector[offset]; + break; } - /* Control never gets here */ - } - - /* If maximizing, find the longest string and work backwards */ - - else - { - pp = eptr; - for (i = min; i < max; i++) - { - if (!match_ref(offset, eptr, length, md, ims)) break; - eptr += length; - } - while (eptr >= pp) - { - RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM15); - if (rrc != MATCH_NOMATCH) RRETURN(rrc); - eptr -= length; - } - RRETURN(MATCH_NOMATCH); + slot += md->name_entry_size; } } + goto REF_REPEAT; + + case OP_REF: + case OP_REFI: + caseless = op == OP_REFI; + offset = GET2(ecode, 1) << 1; /* Doubled ref number */ + ecode += 1 + IMM2_SIZE; + if (offset >= offset_top || md->offset_vector[offset] < 0) + length = (md->jscript_compat)? 0 : -1; + else + length = md->offset_vector[offset+1] - md->offset_vector[offset]; + + /* Set up for repetition, or handle the non-repeated case */ + + REF_REPEAT: + switch (*ecode) + { + case OP_CRSTAR: + case OP_CRMINSTAR: + case OP_CRPLUS: + case OP_CRMINPLUS: + case OP_CRQUERY: + case OP_CRMINQUERY: + c = *ecode++ - OP_CRSTAR; + minimize = (c & 1) != 0; + min = rep_min[c]; /* Pick up values from tables; */ + max = rep_max[c]; /* zero for max => infinity */ + if (max == 0) max = INT_MAX; + break; + + case OP_CRRANGE: + case OP_CRMINRANGE: + minimize = (*ecode == OP_CRMINRANGE); + min = GET2(ecode, 1); + max = GET2(ecode, 1 + IMM2_SIZE); + if (max == 0) max = INT_MAX; + ecode += 1 + 2 * IMM2_SIZE; + break; + + default: /* No repeat follows */ + if ((length = match_ref(offset, eptr, length, md, caseless)) < 0) + { + if (length == -2) eptr = md->end_subject; /* Partial match */ + CHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } + eptr += length; + continue; /* With the main loop */ + } + + /* Handle repeated back references. If the length of the reference is + zero, just continue with the main loop. If the length is negative, it + means the reference is unset in non-Java-compatible mode. If the minimum is + zero, we can continue at the same level without recursion. For any other + minimum, carrying on will result in NOMATCH. */ + + if (length == 0) continue; + if (length < 0 && min == 0) continue; + + /* First, ensure the minimum number of matches are present. We get back + the length of the reference string explicitly rather than passing the + address of eptr, so that eptr can be a register variable. */ + + for (i = 1; i <= min; i++) + { + int slength; + if ((slength = match_ref(offset, eptr, length, md, caseless)) < 0) + { + if (slength == -2) eptr = md->end_subject; /* Partial match */ + CHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } + eptr += slength; + } + + /* If min = max, continue at the same level without recursion. + They are not both allowed to be zero. */ + + if (min == max) continue; + + /* If minimizing, keep trying and advancing the pointer */ + + if (minimize) + { + for (fi = min;; fi++) + { + int slength; + RMATCH(eptr, ecode, offset_top, md, eptrb, RM14); + if (rrc != MATCH_NOMATCH) RRETURN(rrc); + if (fi >= max) RRETURN(MATCH_NOMATCH); + if ((slength = match_ref(offset, eptr, length, md, caseless)) < 0) + { + if (slength == -2) eptr = md->end_subject; /* Partial match */ + CHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } + eptr += slength; + } + /* Control never gets here */ + } + + /* If maximizing, find the longest string and work backwards */ + + else + { + pp = eptr; + for (i = min; i < max; i++) + { + int slength; + if ((slength = match_ref(offset, eptr, length, md, caseless)) < 0) + { + /* Can't use CHECK_PARTIAL because we don't want to update eptr in + the soft partial matching case. */ + + if (slength == -2 && md->partial != 0 && + md->end_subject > md->start_used_ptr) + { + md->hitend = TRUE; + if (md->partial > 1) RRETURN(PCRE_ERROR_PARTIAL); + } + break; + } + eptr += slength; + } + + while (eptr >= pp) + { + RMATCH(eptr, ecode, offset_top, md, eptrb, RM15); + if (rrc != MATCH_NOMATCH) RRETURN(rrc); + eptr -= length; + } + RRETURN(MATCH_NOMATCH); + } /* Control never gets here */ - - /* Match a bit-mapped character class, possibly repeatedly. This op code is used when all the characters in the class have values in the range 0-255, and either the matching is caseful, or the characters are in the range @@ -1876,8 +2858,11 @@ for (;;) case OP_NCLASS: case OP_CLASS: { + /* The data variable is saved across frames, so the byte map needs to + be stored there. */ +#define BYTE_MAP ((pcre_uint8 *)data) data = ecode + 1; /* Save for matching */ - ecode += 33; /* Advance past the item */ + ecode += 1 + (32 / sizeof(pcre_uchar)); /* Advance past the item */ switch (*ecode) { @@ -1887,8 +2872,12 @@ for (;;) case OP_CRMINPLUS: case OP_CRQUERY: case OP_CRMINQUERY: + case OP_CRPOSSTAR: + case OP_CRPOSPLUS: + case OP_CRPOSQUERY: c = *ecode++ - OP_CRSTAR; - minimize = (c & 1) != 0; + if (c < OP_CRPOSSTAR - OP_CRSTAR) minimize = (c & 1) != 0; + else possessive = TRUE; min = rep_min[c]; /* Pick up values from tables; */ max = rep_max[c]; /* zero for max => infinity */ if (max == 0) max = INT_MAX; @@ -1896,11 +2885,13 @@ for (;;) case OP_CRRANGE: case OP_CRMINRANGE: + case OP_CRPOSRANGE: minimize = (*ecode == OP_CRMINRANGE); + possessive = (*ecode == OP_CRPOSRANGE); min = GET2(ecode, 1); - max = GET2(ecode, 3); + max = GET2(ecode, 1 + IMM2_SIZE); if (max == 0) max = INT_MAX; - ecode += 5; + ecode += 1 + 2 * IMM2_SIZE; break; default: /* No repeat follows */ @@ -1910,33 +2901,45 @@ for (;;) /* First, ensure the minimum number of matches are present. */ -#ifdef SUPPORT_UTF8 - /* UTF-8 mode */ - if (utf8) +#ifdef SUPPORT_UTF + if (utf) { for (i = 1; i <= min; i++) { - if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } GETCHARINC(c, eptr); if (c > 255) { if (op == OP_CLASS) RRETURN(MATCH_NOMATCH); } else - { - if ((data[c/8] & (1 << (c&7))) == 0) RRETURN(MATCH_NOMATCH); - } + if ((BYTE_MAP[c/8] & (1 << (c&7))) == 0) RRETURN(MATCH_NOMATCH); } } else #endif - /* Not UTF-8 mode */ + /* Not UTF mode */ { for (i = 1; i <= min; i++) { - if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } c = *eptr++; - if ((data[c/8] & (1 << (c&7))) == 0) RRETURN(MATCH_NOMATCH); +#ifndef COMPILE_PCRE8 + if (c > 255) + { + if (op == OP_CLASS) RRETURN(MATCH_NOMATCH); + } + else +#endif + if ((BYTE_MAP[c/8] & (1 << (c&7))) == 0) RRETURN(MATCH_NOMATCH); } } @@ -1950,37 +2953,51 @@ for (;;) if (minimize) { -#ifdef SUPPORT_UTF8 - /* UTF-8 mode */ - if (utf8) +#ifdef SUPPORT_UTF + if (utf) { for (fi = min;; fi++) { - RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM16); + RMATCH(eptr, ecode, offset_top, md, eptrb, RM16); if (rrc != MATCH_NOMATCH) RRETURN(rrc); - if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); + if (fi >= max) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } GETCHARINC(c, eptr); if (c > 255) { if (op == OP_CLASS) RRETURN(MATCH_NOMATCH); } else - { - if ((data[c/8] & (1 << (c&7))) == 0) RRETURN(MATCH_NOMATCH); - } + if ((BYTE_MAP[c/8] & (1 << (c&7))) == 0) RRETURN(MATCH_NOMATCH); } } else #endif - /* Not UTF-8 mode */ + /* Not UTF mode */ { for (fi = min;; fi++) { - RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM17); + RMATCH(eptr, ecode, offset_top, md, eptrb, RM17); if (rrc != MATCH_NOMATCH) RRETURN(rrc); - if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); + if (fi >= max) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } c = *eptr++; - if ((data[c/8] & (1 << (c&7))) == 0) RRETURN(MATCH_NOMATCH); +#ifndef COMPILE_PCRE8 + if (c > 255) + { + if (op == OP_CLASS) RRETURN(MATCH_NOMATCH); + } + else +#endif + if ((BYTE_MAP[c/8] & (1 << (c&7))) == 0) RRETURN(MATCH_NOMATCH); } } /* Control never gets here */ @@ -1992,28 +3009,32 @@ for (;;) { pp = eptr; -#ifdef SUPPORT_UTF8 - /* UTF-8 mode */ - if (utf8) +#ifdef SUPPORT_UTF + if (utf) { for (i = min; i < max; i++) { int len = 1; - if (eptr >= md->end_subject) break; + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + break; + } GETCHARLEN(c, eptr, len); if (c > 255) { if (op == OP_CLASS) break; } else - { - if ((data[c/8] & (1 << (c&7))) == 0) break; - } + if ((BYTE_MAP[c/8] & (1 << (c&7))) == 0) break; eptr += len; } + + if (possessive) continue; /* No backtracking */ + for (;;) { - RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM18); + RMATCH(eptr, ecode, offset_top, md, eptrb, RM18); if (rrc != MATCH_NOMATCH) RRETURN(rrc); if (eptr-- == pp) break; /* Stop if tried at original pos */ BACKCHAR(eptr); @@ -2021,18 +3042,32 @@ for (;;) } else #endif - /* Not UTF-8 mode */ + /* Not UTF mode */ { for (i = min; i < max; i++) { - if (eptr >= md->end_subject) break; + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + break; + } c = *eptr; - if ((data[c/8] & (1 << (c&7))) == 0) break; +#ifndef COMPILE_PCRE8 + if (c > 255) + { + if (op == OP_CLASS) break; + } + else +#endif + if ((BYTE_MAP[c/8] & (1 << (c&7))) == 0) break; eptr++; } + + if (possessive) continue; /* No backtracking */ + while (eptr >= pp) { - RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM19); + RMATCH(eptr, ecode, offset_top, md, eptrb, RM19); if (rrc != MATCH_NOMATCH) RRETURN(rrc); eptr--; } @@ -2040,14 +3075,17 @@ for (;;) RRETURN(MATCH_NOMATCH); } +#undef BYTE_MAP } /* Control never gets here */ - /* Match an extended character class. This opcode is encountered only - in UTF-8 mode, because that's the only time it is compiled. */ + /* Match an extended character class. In the 8-bit library, this opcode is + encountered only when UTF-8 mode mode is supported. In the 16-bit and + 32-bit libraries, codepoints greater than 255 may be encountered even when + UTF is not supported. */ -#ifdef SUPPORT_UTF8 +#if defined SUPPORT_UTF || !defined COMPILE_PCRE8 case OP_XCLASS: { data = ecode + 1 + LINK_SIZE; /* Save for matching */ @@ -2061,8 +3099,12 @@ for (;;) case OP_CRMINPLUS: case OP_CRQUERY: case OP_CRMINQUERY: + case OP_CRPOSSTAR: + case OP_CRPOSPLUS: + case OP_CRPOSQUERY: c = *ecode++ - OP_CRSTAR; - minimize = (c & 1) != 0; + if (c < OP_CRPOSSTAR - OP_CRSTAR) minimize = (c & 1) != 0; + else possessive = TRUE; min = rep_min[c]; /* Pick up values from tables; */ max = rep_max[c]; /* zero for max => infinity */ if (max == 0) max = INT_MAX; @@ -2070,11 +3112,13 @@ for (;;) case OP_CRRANGE: case OP_CRMINRANGE: + case OP_CRPOSRANGE: minimize = (*ecode == OP_CRMINRANGE); + possessive = (*ecode == OP_CRPOSRANGE); min = GET2(ecode, 1); - max = GET2(ecode, 3); + max = GET2(ecode, 1 + IMM2_SIZE); if (max == 0) max = INT_MAX; - ecode += 5; + ecode += 1 + 2 * IMM2_SIZE; break; default: /* No repeat follows */ @@ -2086,9 +3130,13 @@ for (;;) for (i = 1; i <= min; i++) { - if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); - GETCHARINC(c, eptr); - if (!_pcre_xclass(c, data)) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } + GETCHARINCTEST(c, eptr); + if (!PRIV(xclass)(c, data, utf)) RRETURN(MATCH_NOMATCH); } /* If max == min we can continue with the main loop without the @@ -2103,11 +3151,16 @@ for (;;) { for (fi = min;; fi++) { - RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM20); + RMATCH(eptr, ecode, offset_top, md, eptrb, RM20); if (rrc != MATCH_NOMATCH) RRETURN(rrc); - if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); - GETCHARINC(c, eptr); - if (!_pcre_xclass(c, data)) RRETURN(MATCH_NOMATCH); + if (fi >= max) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } + GETCHARINCTEST(c, eptr); + if (!PRIV(xclass)(c, data, utf)) RRETURN(MATCH_NOMATCH); } /* Control never gets here */ } @@ -2120,17 +3173,30 @@ for (;;) for (i = min; i < max; i++) { int len = 1; - if (eptr >= md->end_subject) break; - GETCHARLEN(c, eptr, len); - if (!_pcre_xclass(c, data)) break; + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + break; + } +#ifdef SUPPORT_UTF + GETCHARLENTEST(c, eptr, len); +#else + c = *eptr; +#endif + if (!PRIV(xclass)(c, data, utf)) break; eptr += len; } + + if (possessive) continue; /* No backtracking */ + for(;;) { - RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM21); + RMATCH(eptr, ecode, offset_top, md, eptrb, RM21); if (rrc != MATCH_NOMATCH) RRETURN(rrc); if (eptr-- == pp) break; /* Stop if tried at original pos */ - if (utf8) BACKCHAR(eptr); +#ifdef SUPPORT_UTF + if (utf) BACKCHAR(eptr); +#endif } RRETURN(MATCH_NOMATCH); } @@ -2142,51 +3208,70 @@ for (;;) /* Match a single character, casefully */ case OP_CHAR: -#ifdef SUPPORT_UTF8 - if (utf8) +#ifdef SUPPORT_UTF + if (utf) { length = 1; ecode++; GETCHARLEN(fc, ecode, length); - if (length > md->end_subject - eptr) RRETURN(MATCH_NOMATCH); - while (length-- > 0) if (*ecode++ != *eptr++) RRETURN(MATCH_NOMATCH); + if (length > md->end_subject - eptr) + { + CHECK_PARTIAL(); /* Not SCHECK_PARTIAL() */ + RRETURN(MATCH_NOMATCH); + } + while (length-- > 0) if (*ecode++ != UCHAR21INC(eptr)) RRETURN(MATCH_NOMATCH); } else #endif - - /* Non-UTF-8 mode */ + /* Not UTF mode */ { - if (md->end_subject - eptr < 1) RRETURN(MATCH_NOMATCH); + if (md->end_subject - eptr < 1) + { + SCHECK_PARTIAL(); /* This one can use SCHECK_PARTIAL() */ + RRETURN(MATCH_NOMATCH); + } if (ecode[1] != *eptr++) RRETURN(MATCH_NOMATCH); ecode += 2; } break; - /* Match a single character, caselessly */ + /* Match a single character, caselessly. If we are at the end of the + subject, give up immediately. */ - case OP_CHARNC: -#ifdef SUPPORT_UTF8 - if (utf8) + case OP_CHARI: + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } + +#ifdef SUPPORT_UTF + if (utf) { length = 1; ecode++; GETCHARLEN(fc, ecode, length); - if (length > md->end_subject - eptr) RRETURN(MATCH_NOMATCH); - /* If the pattern character's value is < 128, we have only one byte, and - can use the fast lookup table. */ + we know that its other case must also be one byte long, so we can use the + fast lookup table. We know that there is at least one byte left in the + subject. */ if (fc < 128) { - if (md->lcc[*ecode++] != md->lcc[*eptr++]) RRETURN(MATCH_NOMATCH); + pcre_uint32 cc = UCHAR21(eptr); + if (md->lcc[fc] != TABLE_GET(cc, md->lcc, cc)) RRETURN(MATCH_NOMATCH); + ecode++; + eptr++; } - /* Otherwise we must pick up the subject character */ + /* Otherwise we must pick up the subject character. Note that we cannot + use the value of "length" to check for sufficient bytes left, because the + other case of the character may have more or fewer bytes. */ else { - unsigned int dc; + pcre_uint32 dc; GETCHARINC(dc, eptr); ecode += length; @@ -2203,12 +3288,13 @@ for (;;) } } else -#endif /* SUPPORT_UTF8 */ +#endif /* SUPPORT_UTF */ - /* Non-UTF-8 mode */ + /* Not UTF mode */ { - if (md->end_subject - eptr < 1) RRETURN(MATCH_NOMATCH); - if (md->lcc[ecode[1]] != md->lcc[*eptr++]) RRETURN(MATCH_NOMATCH); + if (TABLE_GET(ecode[1], md->lcc, ecode[1]) + != TABLE_GET(*eptr, md->lcc, *eptr)) RRETURN(MATCH_NOMATCH); + eptr++; ecode += 2; } break; @@ -2216,23 +3302,28 @@ for (;;) /* Match a single character repeatedly. */ case OP_EXACT: + case OP_EXACTI: min = max = GET2(ecode, 1); - ecode += 3; + ecode += 1 + IMM2_SIZE; goto REPEATCHAR; case OP_POSUPTO: + case OP_POSUPTOI: possessive = TRUE; /* Fall through */ case OP_UPTO: + case OP_UPTOI: case OP_MINUPTO: + case OP_MINUPTOI: min = 0; max = GET2(ecode, 1); - minimize = *ecode == OP_MINUPTO; - ecode += 3; + minimize = *ecode == OP_MINUPTO || *ecode == OP_MINUPTOI; + ecode += 1 + IMM2_SIZE; goto REPEATCHAR; case OP_POSSTAR: + case OP_POSSTARI: possessive = TRUE; min = 0; max = INT_MAX; @@ -2240,6 +3331,7 @@ for (;;) goto REPEATCHAR; case OP_POSPLUS: + case OP_POSPLUSI: possessive = TRUE; min = 1; max = INT_MAX; @@ -2247,6 +3339,7 @@ for (;;) goto REPEATCHAR; case OP_POSQUERY: + case OP_POSQUERYI: possessive = TRUE; min = 0; max = 1; @@ -2254,29 +3347,47 @@ for (;;) goto REPEATCHAR; case OP_STAR: + case OP_STARI: case OP_MINSTAR: + case OP_MINSTARI: case OP_PLUS: + case OP_PLUSI: case OP_MINPLUS: + case OP_MINPLUSI: case OP_QUERY: + case OP_QUERYI: case OP_MINQUERY: - c = *ecode++ - OP_STAR; + case OP_MINQUERYI: + c = *ecode++ - ((op < OP_STARI)? OP_STAR : OP_STARI); minimize = (c & 1) != 0; min = rep_min[c]; /* Pick up values from tables; */ max = rep_max[c]; /* zero for max => infinity */ if (max == 0) max = INT_MAX; - /* Common code for all repeated single-character matches. We can give - up quickly if there are fewer than the minimum number of characters left in - the subject. */ + /* Common code for all repeated single-character matches. We first check + for the minimum number of characters. If the minimum equals the maximum, we + are done. Otherwise, if minimizing, check the rest of the pattern for a + match; if there isn't one, advance up to the maximum, one character at a + time. + + If maximizing, advance up to the maximum number of matching characters, + until eptr is past the end of the maximum run. If possessive, we are + then done (no backing up). Otherwise, match at this position; anything + other than no match is immediately returned. For nomatch, back up one + character, unless we are matching \R and the last thing matched was + \r\n, in which case, back up two bytes. When we reach the first optional + character position, we can save stack by doing a tail recurse. + + The various UTF/non-UTF and caseful/caseless cases are handled separately, + for speed. */ REPEATCHAR: -#ifdef SUPPORT_UTF8 - if (utf8) +#ifdef SUPPORT_UTF + if (utf) { length = 1; charptr = ecode; GETCHARLEN(fc, ecode, length); - if (min * length > md->end_subject - eptr) RRETURN(MATCH_NOMATCH); ecode += length; /* Handle multibyte character matching specially here. There is @@ -2285,27 +3396,27 @@ for (;;) if (length > 1) { #ifdef SUPPORT_UCP - unsigned int othercase; - if ((ims & PCRE_CASELESS) != 0 && + pcre_uint32 othercase; + if (op >= OP_STARI && /* Caseless */ (othercase = UCD_OTHERCASE(fc)) != fc) - oclength = _pcre_ord2utf8(othercase, occhars); + oclength = PRIV(ord2utf)(othercase, occhars); else oclength = 0; #endif /* SUPPORT_UCP */ for (i = 1; i <= min; i++) { - if (memcmp(eptr, charptr, length) == 0) eptr += length; + if (eptr <= md->end_subject - length && + memcmp(eptr, charptr, IN_UCHARS(length)) == 0) eptr += length; #ifdef SUPPORT_UCP - /* Need braces because of following else */ - else if (oclength == 0) { RRETURN(MATCH_NOMATCH); } + else if (oclength > 0 && + eptr <= md->end_subject - oclength && + memcmp(eptr, occhars, IN_UCHARS(oclength)) == 0) eptr += oclength; +#endif /* SUPPORT_UCP */ else { - if (memcmp(eptr, occhars, oclength) != 0) RRETURN(MATCH_NOMATCH); - eptr += oclength; + CHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); } -#else /* without SUPPORT_UCP */ - else { RRETURN(MATCH_NOMATCH); } -#endif /* SUPPORT_UCP */ } if (min == max) continue; @@ -2314,21 +3425,21 @@ for (;;) { for (fi = min;; fi++) { - RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM22); + RMATCH(eptr, ecode, offset_top, md, eptrb, RM22); if (rrc != MATCH_NOMATCH) RRETURN(rrc); - if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); - if (memcmp(eptr, charptr, length) == 0) eptr += length; + if (fi >= max) RRETURN(MATCH_NOMATCH); + if (eptr <= md->end_subject - length && + memcmp(eptr, charptr, IN_UCHARS(length)) == 0) eptr += length; #ifdef SUPPORT_UCP - /* Need braces because of following else */ - else if (oclength == 0) { RRETURN(MATCH_NOMATCH); } + else if (oclength > 0 && + eptr <= md->end_subject - oclength && + memcmp(eptr, occhars, IN_UCHARS(oclength)) == 0) eptr += oclength; +#endif /* SUPPORT_UCP */ else { - if (memcmp(eptr, occhars, oclength) != 0) RRETURN(MATCH_NOMATCH); - eptr += oclength; + CHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); } -#else /* without SUPPORT_UCP */ - else { RRETURN (MATCH_NOMATCH); } -#endif /* SUPPORT_UCP */ } /* Control never gets here */ } @@ -2338,33 +3449,33 @@ for (;;) pp = eptr; for (i = min; i < max; i++) { - if (eptr > md->end_subject - length) break; - if (memcmp(eptr, charptr, length) == 0) eptr += length; + if (eptr <= md->end_subject - length && + memcmp(eptr, charptr, IN_UCHARS(length)) == 0) eptr += length; #ifdef SUPPORT_UCP - else if (oclength == 0) break; + else if (oclength > 0 && + eptr <= md->end_subject - oclength && + memcmp(eptr, occhars, IN_UCHARS(oclength)) == 0) eptr += oclength; +#endif /* SUPPORT_UCP */ else { - if (memcmp(eptr, occhars, oclength) != 0) break; - eptr += oclength; + CHECK_PARTIAL(); + break; } -#else /* without SUPPORT_UCP */ - else break; -#endif /* SUPPORT_UCP */ } - if (possessive) continue; + if (possessive) continue; /* No backtracking */ for(;;) - { - RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM23); - if (rrc != MATCH_NOMATCH) RRETURN(rrc); - if (eptr == pp) RRETURN(MATCH_NOMATCH); + { + if (eptr == pp) goto TAIL_RECURSE; + RMATCH(eptr, ecode, offset_top, md, eptrb, RM23); + if (rrc != MATCH_NOMATCH) RRETURN(rrc); #ifdef SUPPORT_UCP - eptr--; - BACKCHAR(eptr); + eptr--; + BACKCHAR(eptr); #else /* without SUPPORT_UCP */ - eptr -= length; + eptr -= length; #endif /* SUPPORT_UCP */ - } + } } /* Control never gets here */ } @@ -2374,16 +3485,12 @@ for (;;) value of fc will always be < 128. */ } else -#endif /* SUPPORT_UTF8 */ - - /* When not in UTF-8 mode, load a single-byte character. */ - { - if (min > md->end_subject - eptr) RRETURN(MATCH_NOMATCH); +#endif /* SUPPORT_UTF */ + /* When not in UTF-8 mode, load a single-byte character. */ fc = *ecode++; - } - /* The value of fc at this point is always less than 256, though we may or - may not be in UTF-8 mode. The code is duplicated for the caseless and + /* The value of fc at this point is always one character, though we may + or may not be in UTF mode. The code is duplicated for the caseless and caseful cases, for speed, since matching characters is likely to be quite common. First, ensure the minimum number of matches are present. If min = max, continue at the same level without recursing. Otherwise, if @@ -2392,23 +3499,56 @@ for (;;) maximizing, find the maximum number of characters and work backwards. */ DPRINTF(("matching %c{%d,%d} against subject %.*s\n", fc, min, max, - max, eptr)); + max, (char *)eptr)); - if ((ims & PCRE_CASELESS) != 0) + if (op >= OP_STARI) /* Caseless */ { - fc = md->lcc[fc]; +#ifdef COMPILE_PCRE8 + /* fc must be < 128 if UTF is enabled. */ + foc = md->fcc[fc]; +#else +#ifdef SUPPORT_UTF +#ifdef SUPPORT_UCP + if (utf && fc > 127) + foc = UCD_OTHERCASE(fc); +#else + if (utf && fc > 127) + foc = fc; +#endif /* SUPPORT_UCP */ + else +#endif /* SUPPORT_UTF */ + foc = TABLE_GET(fc, md->fcc, fc); +#endif /* COMPILE_PCRE8 */ + for (i = 1; i <= min; i++) - if (fc != md->lcc[*eptr++]) RRETURN(MATCH_NOMATCH); + { + pcre_uint32 cc; /* Faster than pcre_uchar */ + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } + cc = UCHAR21TEST(eptr); + if (fc != cc && foc != cc) RRETURN(MATCH_NOMATCH); + eptr++; + } if (min == max) continue; if (minimize) { for (fi = min;; fi++) { - RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM24); + pcre_uint32 cc; /* Faster than pcre_uchar */ + RMATCH(eptr, ecode, offset_top, md, eptrb, RM24); if (rrc != MATCH_NOMATCH) RRETURN(rrc); - if (fi >= max || eptr >= md->end_subject || - fc != md->lcc[*eptr++]) + if (fi >= max) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); RRETURN(MATCH_NOMATCH); + } + cc = UCHAR21TEST(eptr); + if (fc != cc && foc != cc) RRETURN(MATCH_NOMATCH); + eptr++; } /* Control never gets here */ } @@ -2417,35 +3557,57 @@ for (;;) pp = eptr; for (i = min; i < max; i++) { - if (eptr >= md->end_subject || fc != md->lcc[*eptr]) break; + pcre_uint32 cc; /* Faster than pcre_uchar */ + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + break; + } + cc = UCHAR21TEST(eptr); + if (fc != cc && foc != cc) break; eptr++; } - if (possessive) continue; - while (eptr >= pp) + if (possessive) continue; /* No backtracking */ + for (;;) { - RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM25); + if (eptr == pp) goto TAIL_RECURSE; + RMATCH(eptr, ecode, offset_top, md, eptrb, RM25); eptr--; if (rrc != MATCH_NOMATCH) RRETURN(rrc); } - RRETURN(MATCH_NOMATCH); + /* Control never gets here */ } - /* Control never gets here */ } /* Caseful comparisons (includes all multi-byte characters) */ else { - for (i = 1; i <= min; i++) if (fc != *eptr++) RRETURN(MATCH_NOMATCH); + for (i = 1; i <= min; i++) + { + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } + if (fc != UCHAR21INCTEST(eptr)) RRETURN(MATCH_NOMATCH); + } + if (min == max) continue; + if (minimize) { for (fi = min;; fi++) { - RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM26); + RMATCH(eptr, ecode, offset_top, md, eptrb, RM26); if (rrc != MATCH_NOMATCH) RRETURN(rrc); - if (fi >= max || eptr >= md->end_subject || fc != *eptr++) + if (fi >= max) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); RRETURN(MATCH_NOMATCH); + } + if (fc != UCHAR21INCTEST(eptr)) RRETURN(MATCH_NOMATCH); } /* Control never gets here */ } @@ -2454,17 +3616,23 @@ for (;;) pp = eptr; for (i = min; i < max; i++) { - if (eptr >= md->end_subject || fc != *eptr) break; + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + break; + } + if (fc != UCHAR21TEST(eptr)) break; eptr++; } - if (possessive) continue; - while (eptr >= pp) + if (possessive) continue; /* No backtracking */ + for (;;) { - RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM27); + if (eptr == pp) goto TAIL_RECURSE; + RMATCH(eptr, ecode, offset_top, md, eptrb, RM27); eptr--; if (rrc != MATCH_NOMATCH) RRETURN(rrc); } - RRETURN(MATCH_NOMATCH); + /* Control never gets here */ } } /* Control never gets here */ @@ -2473,20 +3641,47 @@ for (;;) checking can be multibyte. */ case OP_NOT: - if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); - ecode++; - GETCHARINCTEST(c, eptr); - if ((ims & PCRE_CASELESS) != 0) + case OP_NOTI: + if (eptr >= md->end_subject) { -#ifdef SUPPORT_UTF8 - if (c < 256) -#endif - c = md->lcc[c]; - if (md->lcc[*ecode++] == c) RRETURN(MATCH_NOMATCH); + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } +#ifdef SUPPORT_UTF + if (utf) + { + register pcre_uint32 ch, och; + + ecode++; + GETCHARINC(ch, ecode); + GETCHARINC(c, eptr); + + if (op == OP_NOT) + { + if (ch == c) RRETURN(MATCH_NOMATCH); + } + else + { +#ifdef SUPPORT_UCP + if (ch > 127) + och = UCD_OTHERCASE(ch); +#else + if (ch > 127) + och = ch; +#endif /* SUPPORT_UCP */ + else + och = TABLE_GET(ch, md->fcc, ch); + if (ch == c || och == c) RRETURN(MATCH_NOMATCH); + } } else +#endif { - if (*ecode++ == c) RRETURN(MATCH_NOMATCH); + register pcre_uint32 ch = ecode[1]; + c = *eptr++; + if (ch == c || (op == OP_NOTI && TABLE_GET(ch, md->fcc, ch) == c)) + RRETURN(MATCH_NOMATCH); + ecode += 2; } break; @@ -2498,19 +3693,23 @@ for (;;) about... */ case OP_NOTEXACT: + case OP_NOTEXACTI: min = max = GET2(ecode, 1); - ecode += 3; + ecode += 1 + IMM2_SIZE; goto REPEATNOTCHAR; case OP_NOTUPTO: + case OP_NOTUPTOI: case OP_NOTMINUPTO: + case OP_NOTMINUPTOI: min = 0; max = GET2(ecode, 1); - minimize = *ecode == OP_NOTMINUPTO; - ecode += 3; + minimize = *ecode == OP_NOTMINUPTO || *ecode == OP_NOTMINUPTOI; + ecode += 1 + IMM2_SIZE; goto REPEATNOTCHAR; case OP_NOTPOSSTAR: + case OP_NOTPOSSTARI: possessive = TRUE; min = 0; max = INT_MAX; @@ -2518,6 +3717,7 @@ for (;;) goto REPEATNOTCHAR; case OP_NOTPOSPLUS: + case OP_NOTPOSPLUSI: possessive = TRUE; min = 1; max = INT_MAX; @@ -2525,6 +3725,7 @@ for (;;) goto REPEATNOTCHAR; case OP_NOTPOSQUERY: + case OP_NOTPOSQUERYI: possessive = TRUE; min = 0; max = 1; @@ -2532,31 +3733,35 @@ for (;;) goto REPEATNOTCHAR; case OP_NOTPOSUPTO: + case OP_NOTPOSUPTOI: possessive = TRUE; min = 0; max = GET2(ecode, 1); - ecode += 3; + ecode += 1 + IMM2_SIZE; goto REPEATNOTCHAR; case OP_NOTSTAR: + case OP_NOTSTARI: case OP_NOTMINSTAR: + case OP_NOTMINSTARI: case OP_NOTPLUS: + case OP_NOTPLUSI: case OP_NOTMINPLUS: + case OP_NOTMINPLUSI: case OP_NOTQUERY: + case OP_NOTQUERYI: case OP_NOTMINQUERY: - c = *ecode++ - OP_NOTSTAR; + case OP_NOTMINQUERYI: + c = *ecode++ - ((op >= OP_NOTSTARI)? OP_NOTSTARI: OP_NOTSTAR); minimize = (c & 1) != 0; min = rep_min[c]; /* Pick up values from tables; */ max = rep_max[c]; /* zero for max => infinity */ if (max == 0) max = INT_MAX; - /* Common code for all repeated single-byte matches. We can give up quickly - if there are fewer than the minimum number of bytes left in the - subject. */ + /* Common code for all repeated single-byte matches. */ REPEATNOTCHAR: - if (min > md->end_subject - eptr) RRETURN(MATCH_NOMATCH); - fc = *ecode++; + GETCHARINCTEST(fc, ecode); /* The code is duplicated for the caseless and caseful cases, for speed, since matching characters is likely to be quite common. First, ensure the @@ -2567,63 +3772,91 @@ for (;;) characters and work backwards. */ DPRINTF(("negative matching %c{%d,%d} against subject %.*s\n", fc, min, max, - max, eptr)); + max, (char *)eptr)); - if ((ims & PCRE_CASELESS) != 0) + if (op >= OP_NOTSTARI) /* Caseless */ { - fc = md->lcc[fc]; +#ifdef SUPPORT_UTF +#ifdef SUPPORT_UCP + if (utf && fc > 127) + foc = UCD_OTHERCASE(fc); +#else + if (utf && fc > 127) + foc = fc; +#endif /* SUPPORT_UCP */ + else +#endif /* SUPPORT_UTF */ + foc = TABLE_GET(fc, md->fcc, fc); -#ifdef SUPPORT_UTF8 - /* UTF-8 mode */ - if (utf8) +#ifdef SUPPORT_UTF + if (utf) { - register unsigned int d; + register pcre_uint32 d; for (i = 1; i <= min; i++) { + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } GETCHARINC(d, eptr); - if (d < 256) d = md->lcc[d]; - if (fc == d) RRETURN(MATCH_NOMATCH); + if (fc == d || (unsigned int)foc == d) RRETURN(MATCH_NOMATCH); } } else -#endif - - /* Not UTF-8 mode */ +#endif /* SUPPORT_UTF */ + /* Not UTF mode */ { for (i = 1; i <= min; i++) - if (fc == md->lcc[*eptr++]) RRETURN(MATCH_NOMATCH); + { + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } + if (fc == *eptr || foc == *eptr) RRETURN(MATCH_NOMATCH); + eptr++; + } } if (min == max) continue; if (minimize) { -#ifdef SUPPORT_UTF8 - /* UTF-8 mode */ - if (utf8) +#ifdef SUPPORT_UTF + if (utf) { - register unsigned int d; + register pcre_uint32 d; for (fi = min;; fi++) { - RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM28); + RMATCH(eptr, ecode, offset_top, md, eptrb, RM28); if (rrc != MATCH_NOMATCH) RRETURN(rrc); - if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); + if (fi >= max) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } GETCHARINC(d, eptr); - if (d < 256) d = md->lcc[d]; - if (fc == d) RRETURN(MATCH_NOMATCH); - + if (fc == d || (unsigned int)foc == d) RRETURN(MATCH_NOMATCH); } } else -#endif - /* Not UTF-8 mode */ +#endif /*SUPPORT_UTF */ + /* Not UTF mode */ { for (fi = min;; fi++) { - RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM29); + RMATCH(eptr, ecode, offset_top, md, eptrb, RM29); if (rrc != MATCH_NOMATCH) RRETURN(rrc); - if (fi >= max || eptr >= md->end_subject || fc == md->lcc[*eptr++]) + if (fi >= max) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); RRETURN(MATCH_NOMATCH); + } + if (fc == *eptr || foc == *eptr) RRETURN(MATCH_NOMATCH); + eptr++; } } /* Control never gets here */ @@ -2635,103 +3868,130 @@ for (;;) { pp = eptr; -#ifdef SUPPORT_UTF8 - /* UTF-8 mode */ - if (utf8) +#ifdef SUPPORT_UTF + if (utf) { - register unsigned int d; + register pcre_uint32 d; for (i = min; i < max; i++) { int len = 1; - if (eptr >= md->end_subject) break; + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + break; + } GETCHARLEN(d, eptr, len); - if (d < 256) d = md->lcc[d]; - if (fc == d) break; + if (fc == d || (unsigned int)foc == d) break; eptr += len; } - if (possessive) continue; - for(;;) + if (possessive) continue; /* No backtracking */ + for(;;) { - RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM30); + if (eptr == pp) goto TAIL_RECURSE; + RMATCH(eptr, ecode, offset_top, md, eptrb, RM30); if (rrc != MATCH_NOMATCH) RRETURN(rrc); - if (eptr-- == pp) break; /* Stop if tried at original pos */ + eptr--; BACKCHAR(eptr); } } else -#endif - /* Not UTF-8 mode */ +#endif /* SUPPORT_UTF */ + /* Not UTF mode */ { for (i = min; i < max; i++) { - if (eptr >= md->end_subject || fc == md->lcc[*eptr]) break; + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + break; + } + if (fc == *eptr || foc == *eptr) break; eptr++; } - if (possessive) continue; - while (eptr >= pp) + if (possessive) continue; /* No backtracking */ + for (;;) { - RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM31); + if (eptr == pp) goto TAIL_RECURSE; + RMATCH(eptr, ecode, offset_top, md, eptrb, RM31); if (rrc != MATCH_NOMATCH) RRETURN(rrc); eptr--; } } - - RRETURN(MATCH_NOMATCH); + /* Control never gets here */ } - /* Control never gets here */ } /* Caseful comparisons */ else { -#ifdef SUPPORT_UTF8 - /* UTF-8 mode */ - if (utf8) +#ifdef SUPPORT_UTF + if (utf) { - register unsigned int d; + register pcre_uint32 d; for (i = 1; i <= min; i++) { + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } GETCHARINC(d, eptr); if (fc == d) RRETURN(MATCH_NOMATCH); } } else #endif - /* Not UTF-8 mode */ + /* Not UTF mode */ { for (i = 1; i <= min; i++) + { + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } if (fc == *eptr++) RRETURN(MATCH_NOMATCH); + } } if (min == max) continue; if (minimize) { -#ifdef SUPPORT_UTF8 - /* UTF-8 mode */ - if (utf8) +#ifdef SUPPORT_UTF + if (utf) { - register unsigned int d; + register pcre_uint32 d; for (fi = min;; fi++) { - RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM32); + RMATCH(eptr, ecode, offset_top, md, eptrb, RM32); if (rrc != MATCH_NOMATCH) RRETURN(rrc); - if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); + if (fi >= max) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } GETCHARINC(d, eptr); if (fc == d) RRETURN(MATCH_NOMATCH); } } else #endif - /* Not UTF-8 mode */ + /* Not UTF mode */ { for (fi = min;; fi++) { - RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM33); + RMATCH(eptr, ecode, offset_top, md, eptrb, RM33); if (rrc != MATCH_NOMATCH) RRETURN(rrc); - if (fi >= max || eptr >= md->end_subject || fc == *eptr++) + if (fi >= max) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); RRETURN(MATCH_NOMATCH); + } + if (fc == *eptr++) RRETURN(MATCH_NOMATCH); } } /* Control never gets here */ @@ -2743,47 +4003,56 @@ for (;;) { pp = eptr; -#ifdef SUPPORT_UTF8 - /* UTF-8 mode */ - if (utf8) +#ifdef SUPPORT_UTF + if (utf) { - register unsigned int d; + register pcre_uint32 d; for (i = min; i < max; i++) { int len = 1; - if (eptr >= md->end_subject) break; + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + break; + } GETCHARLEN(d, eptr, len); if (fc == d) break; eptr += len; } - if (possessive) continue; + if (possessive) continue; /* No backtracking */ for(;;) { - RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM34); + if (eptr == pp) goto TAIL_RECURSE; + RMATCH(eptr, ecode, offset_top, md, eptrb, RM34); if (rrc != MATCH_NOMATCH) RRETURN(rrc); - if (eptr-- == pp) break; /* Stop if tried at original pos */ + eptr--; BACKCHAR(eptr); } } else #endif - /* Not UTF-8 mode */ + /* Not UTF mode */ { for (i = min; i < max; i++) { - if (eptr >= md->end_subject || fc == *eptr) break; + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + break; + } + if (fc == *eptr) break; eptr++; } - if (possessive) continue; - while (eptr >= pp) + if (possessive) continue; /* No backtracking */ + for (;;) { - RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM35); + if (eptr == pp) goto TAIL_RECURSE; + RMATCH(eptr, ecode, offset_top, md, eptrb, RM35); if (rrc != MATCH_NOMATCH) RRETURN(rrc); eptr--; } } - - RRETURN(MATCH_NOMATCH); + /* Control never gets here */ } } /* Control never gets here */ @@ -2795,7 +4064,7 @@ for (;;) case OP_TYPEEXACT: min = max = GET2(ecode, 1); minimize = TRUE; - ecode += 3; + ecode += 1 + IMM2_SIZE; goto REPEATTYPE; case OP_TYPEUPTO: @@ -2803,7 +4072,7 @@ for (;;) min = 0; max = GET2(ecode, 1); minimize = *ecode == OP_TYPEMINUPTO; - ecode += 3; + ecode += 1 + IMM2_SIZE; goto REPEATTYPE; case OP_TYPEPOSSTAR: @@ -2831,7 +4100,7 @@ for (;;) possessive = TRUE; min = 0; max = GET2(ecode, 1); - ecode += 3; + ecode += 1 + IMM2_SIZE; goto REPEATTYPE; case OP_TYPESTAR: @@ -2865,13 +4134,10 @@ for (;;) /* First, ensure the minimum number of matches are present. Use inline code for maximizing the speed, and do the type test once at the start - (i.e. keep it out of the loop). Also we can test that there are at least - the minimum number of bytes before we start. This isn't as effective in - UTF-8 mode, but it does no harm. Separate the UTF-8 code completely as that + (i.e. keep it out of the loop). Separate the UTF-8 code completely as that is tidier. Also separate the UCP code, which can be the same for both UTF-8 and single-bytes. */ - if (min > md->end_subject - eptr) RRETURN(MATCH_NOMATCH); if (min > 0) { #ifdef SUPPORT_UCP @@ -2883,7 +4149,11 @@ for (;;) if (prop_fail_result) RRETURN(MATCH_NOMATCH); for (i = 1; i <= min; i++) { - if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } GETCHARINCTEST(c, eptr); } break; @@ -2891,12 +4161,17 @@ for (;;) case PT_LAMP: for (i = 1; i <= min; i++) { - if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); + int chartype; + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } GETCHARINCTEST(c, eptr); - prop_chartype = UCD_CHARTYPE(c); - if ((prop_chartype == ucp_Lu || - prop_chartype == ucp_Ll || - prop_chartype == ucp_Lt) == prop_fail_result) + chartype = UCD_CHARTYPE(c); + if ((chartype == ucp_Lu || + chartype == ucp_Ll || + chartype == ucp_Lt) == prop_fail_result) RRETURN(MATCH_NOMATCH); } break; @@ -2904,10 +4179,13 @@ for (;;) case PT_GC: for (i = 1; i <= min; i++) { - if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } GETCHARINCTEST(c, eptr); - prop_category = UCD_CATEGORY(c); - if ((prop_category == prop_value) == prop_fail_result) + if ((UCD_CATEGORY(c) == prop_value) == prop_fail_result) RRETURN(MATCH_NOMATCH); } break; @@ -2915,10 +4193,13 @@ for (;;) case PT_PC: for (i = 1; i <= min; i++) { - if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } GETCHARINCTEST(c, eptr); - prop_chartype = UCD_CHARTYPE(c); - if ((prop_chartype == prop_value) == prop_fail_result) + if ((UCD_CHARTYPE(c) == prop_value) == prop_fail_result) RRETURN(MATCH_NOMATCH); } break; @@ -2926,14 +4207,118 @@ for (;;) case PT_SC: for (i = 1; i <= min; i++) { - if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } GETCHARINCTEST(c, eptr); - prop_script = UCD_SCRIPT(c); - if ((prop_script == prop_value) == prop_fail_result) + if ((UCD_SCRIPT(c) == prop_value) == prop_fail_result) RRETURN(MATCH_NOMATCH); } break; + case PT_ALNUM: + for (i = 1; i <= min; i++) + { + int category; + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } + GETCHARINCTEST(c, eptr); + category = UCD_CATEGORY(c); + if ((category == ucp_L || category == ucp_N) == prop_fail_result) + RRETURN(MATCH_NOMATCH); + } + break; + + /* Perl space used to exclude VT, but from Perl 5.18 it is included, + which means that Perl space and POSIX space are now identical. PCRE + was changed at release 8.34. */ + + case PT_SPACE: /* Perl space */ + case PT_PXSPACE: /* POSIX space */ + for (i = 1; i <= min; i++) + { + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } + GETCHARINCTEST(c, eptr); + switch(c) + { + HSPACE_CASES: + VSPACE_CASES: + if (prop_fail_result) RRETURN(MATCH_NOMATCH); + break; + + default: + if ((UCD_CATEGORY(c) == ucp_Z) == prop_fail_result) + RRETURN(MATCH_NOMATCH); + break; + } + } + break; + + case PT_WORD: + for (i = 1; i <= min; i++) + { + int category; + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } + GETCHARINCTEST(c, eptr); + category = UCD_CATEGORY(c); + if ((category == ucp_L || category == ucp_N || c == CHAR_UNDERSCORE) + == prop_fail_result) + RRETURN(MATCH_NOMATCH); + } + break; + + case PT_CLIST: + for (i = 1; i <= min; i++) + { + const pcre_uint32 *cp; + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } + GETCHARINCTEST(c, eptr); + cp = PRIV(ucd_caseless_sets) + prop_value; + for (;;) + { + if (c < *cp) + { if (prop_fail_result) break; else { RRETURN(MATCH_NOMATCH); } } + if (c == *cp++) + { if (prop_fail_result) { RRETURN(MATCH_NOMATCH); } else break; } + } + } + break; + + case PT_UCNC: + for (i = 1; i <= min; i++) + { + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } + GETCHARINCTEST(c, eptr); + if ((c == CHAR_DOLLAR_SIGN || c == CHAR_COMMERCIAL_AT || + c == CHAR_GRAVE_ACCENT || (c >= 0xa0 && c <= 0xd7ff) || + c >= 0xe000) == prop_fail_result) + RRETURN(MATCH_NOMATCH); + } + break; + + /* This should not occur */ + default: RRETURN(PCRE_ERROR_INTERNAL); } @@ -2946,20 +4331,27 @@ for (;;) { for (i = 1; i <= min; i++) { - GETCHARINCTEST(c, eptr); - prop_category = UCD_CATEGORY(c); - if (prop_category == ucp_M) RRETURN(MATCH_NOMATCH); - while (eptr < md->end_subject) + if (eptr >= md->end_subject) { - int len = 1; - if (!utf8) c = *eptr; else - { - GETCHARLEN(c, eptr, len); - } - prop_category = UCD_CATEGORY(c); - if (prop_category != ucp_M) break; - eptr += len; + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); } + else + { + int lgb, rgb; + GETCHARINCTEST(c, eptr); + lgb = UCD_GRAPHBREAK(c); + while (eptr < md->end_subject) + { + int len = 1; + if (!utf) c = *eptr; else { GETCHARLEN(c, eptr, len); } + rgb = UCD_GRAPHBREAK(c); + if ((PRIV(ucp_gbtable)[lgb] & (1 << rgb)) == 0) break; + lgb = rgb; + eptr += len; + } + } + CHECK_PARTIAL(); } } @@ -2968,52 +4360,77 @@ for (;;) /* Handle all other cases when the coding is UTF-8 */ -#ifdef SUPPORT_UTF8 - if (utf8) switch(ctype) +#ifdef SUPPORT_UTF + if (utf) switch(ctype) { case OP_ANY: for (i = 1; i <= min; i++) { - if (eptr >= md->end_subject || IS_NEWLINE(eptr)) + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); RRETURN(MATCH_NOMATCH); + } + if (IS_NEWLINE(eptr)) RRETURN(MATCH_NOMATCH); + if (md->partial != 0 && + eptr + 1 >= md->end_subject && + NLBLOCK->nltype == NLTYPE_FIXED && + NLBLOCK->nllen == 2 && + UCHAR21(eptr) == NLBLOCK->nl[0]) + { + md->hitend = TRUE; + if (md->partial > 1) RRETURN(PCRE_ERROR_PARTIAL); + } eptr++; - while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++; + ACROSSCHAR(eptr < md->end_subject, *eptr, eptr++); } break; case OP_ALLANY: for (i = 1; i <= min; i++) { - if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } eptr++; - while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++; + ACROSSCHAR(eptr < md->end_subject, *eptr, eptr++); } break; case OP_ANYBYTE: + if (eptr > md->end_subject - min) RRETURN(MATCH_NOMATCH); eptr += min; break; case OP_ANYNL: for (i = 1; i <= min; i++) { - if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } GETCHARINC(c, eptr); switch(c) { default: RRETURN(MATCH_NOMATCH); - case 0x000d: - if (eptr < md->end_subject && *eptr == 0x0a) eptr++; + + case CHAR_CR: + if (eptr < md->end_subject && UCHAR21(eptr) == CHAR_LF) eptr++; break; - case 0x000a: + case CHAR_LF: break; - case 0x000b: - case 0x000c: - case 0x0085: + case CHAR_VT: + case CHAR_FF: + case CHAR_NEL: +#ifndef EBCDIC case 0x2028: case 0x2029: +#endif /* Not EBCDIC */ if (md->bsr_anycrlf) RRETURN(MATCH_NOMATCH); break; } @@ -3023,31 +4440,16 @@ for (;;) case OP_NOT_HSPACE: for (i = 1; i <= min; i++) { - if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } GETCHARINC(c, eptr); switch(c) { + HSPACE_CASES: RRETURN(MATCH_NOMATCH); /* Byte and multibyte cases */ default: break; - case 0x09: /* HT */ - case 0x20: /* SPACE */ - case 0xa0: /* NBSP */ - case 0x1680: /* OGHAM SPACE MARK */ - case 0x180e: /* MONGOLIAN VOWEL SEPARATOR */ - case 0x2000: /* EN QUAD */ - case 0x2001: /* EM QUAD */ - case 0x2002: /* EN SPACE */ - case 0x2003: /* EM SPACE */ - case 0x2004: /* THREE-PER-EM SPACE */ - case 0x2005: /* FOUR-PER-EM SPACE */ - case 0x2006: /* SIX-PER-EM SPACE */ - case 0x2007: /* FIGURE SPACE */ - case 0x2008: /* PUNCTUATION SPACE */ - case 0x2009: /* THIN SPACE */ - case 0x200A: /* HAIR SPACE */ - case 0x202f: /* NARROW NO-BREAK SPACE */ - case 0x205f: /* MEDIUM MATHEMATICAL SPACE */ - case 0x3000: /* IDEOGRAPHIC SPACE */ - RRETURN(MATCH_NOMATCH); } } break; @@ -3055,31 +4457,16 @@ for (;;) case OP_HSPACE: for (i = 1; i <= min; i++) { - if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } GETCHARINC(c, eptr); switch(c) { + HSPACE_CASES: break; /* Byte and multibyte cases */ default: RRETURN(MATCH_NOMATCH); - case 0x09: /* HT */ - case 0x20: /* SPACE */ - case 0xa0: /* NBSP */ - case 0x1680: /* OGHAM SPACE MARK */ - case 0x180e: /* MONGOLIAN VOWEL SEPARATOR */ - case 0x2000: /* EN QUAD */ - case 0x2001: /* EM QUAD */ - case 0x2002: /* EN SPACE */ - case 0x2003: /* EM SPACE */ - case 0x2004: /* THREE-PER-EM SPACE */ - case 0x2005: /* FOUR-PER-EM SPACE */ - case 0x2006: /* SIX-PER-EM SPACE */ - case 0x2007: /* FIGURE SPACE */ - case 0x2008: /* PUNCTUATION SPACE */ - case 0x2009: /* THIN SPACE */ - case 0x200A: /* HAIR SPACE */ - case 0x202f: /* NARROW NO-BREAK SPACE */ - case 0x205f: /* MEDIUM MATHEMATICAL SPACE */ - case 0x3000: /* IDEOGRAPHIC SPACE */ - break; } } break; @@ -3087,19 +4474,16 @@ for (;;) case OP_NOT_VSPACE: for (i = 1; i <= min; i++) { - if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } GETCHARINC(c, eptr); switch(c) { + VSPACE_CASES: RRETURN(MATCH_NOMATCH); default: break; - case 0x0a: /* LF */ - case 0x0b: /* VT */ - case 0x0c: /* FF */ - case 0x0d: /* CR */ - case 0x85: /* NEL */ - case 0x2028: /* LINE SEPARATOR */ - case 0x2029: /* PARAGRAPH SEPARATOR */ - RRETURN(MATCH_NOMATCH); } } break; @@ -3107,19 +4491,16 @@ for (;;) case OP_VSPACE: for (i = 1; i <= min; i++) { - if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } GETCHARINC(c, eptr); switch(c) { + VSPACE_CASES: break; default: RRETURN(MATCH_NOMATCH); - case 0x0a: /* LF */ - case 0x0b: /* VT */ - case 0x0c: /* FF */ - case 0x0d: /* CR */ - case 0x85: /* NEL */ - case 0x2028: /* LINE SEPARATOR */ - case 0x2029: /* PARAGRAPH SEPARATOR */ - break; } } break; @@ -3127,7 +4508,11 @@ for (;;) case OP_NOT_DIGIT: for (i = 1; i <= min; i++) { - if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } GETCHARINC(c, eptr); if (c < 128 && (md->ctypes[c] & ctype_digit) != 0) RRETURN(MATCH_NOMATCH); @@ -3137,9 +4522,16 @@ for (;;) case OP_DIGIT: for (i = 1; i <= min; i++) { - if (eptr >= md->end_subject || - *eptr >= 128 || (md->ctypes[*eptr++] & ctype_digit) == 0) + pcre_uint32 cc; + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); RRETURN(MATCH_NOMATCH); + } + cc = UCHAR21(eptr); + if (cc >= 128 || (md->ctypes[cc] & ctype_digit) == 0) + RRETURN(MATCH_NOMATCH); + eptr++; /* No need to skip more bytes - we know it's a 1-byte character */ } break; @@ -3147,19 +4539,33 @@ for (;;) case OP_NOT_WHITESPACE: for (i = 1; i <= min; i++) { - if (eptr >= md->end_subject || - (*eptr < 128 && (md->ctypes[*eptr] & ctype_space) != 0)) + pcre_uint32 cc; + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); RRETURN(MATCH_NOMATCH); - while (++eptr < md->end_subject && (*eptr & 0xc0) == 0x80); + } + cc = UCHAR21(eptr); + if (cc < 128 && (md->ctypes[cc] & ctype_space) != 0) + RRETURN(MATCH_NOMATCH); + eptr++; + ACROSSCHAR(eptr < md->end_subject, *eptr, eptr++); } break; case OP_WHITESPACE: for (i = 1; i <= min; i++) { - if (eptr >= md->end_subject || - *eptr >= 128 || (md->ctypes[*eptr++] & ctype_space) == 0) + pcre_uint32 cc; + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); RRETURN(MATCH_NOMATCH); + } + cc = UCHAR21(eptr); + if (cc >= 128 || (md->ctypes[cc] & ctype_space) == 0) + RRETURN(MATCH_NOMATCH); + eptr++; /* No need to skip more bytes - we know it's a 1-byte character */ } break; @@ -3167,19 +4573,33 @@ for (;;) case OP_NOT_WORDCHAR: for (i = 1; i <= min; i++) { - if (eptr >= md->end_subject || - (*eptr < 128 && (md->ctypes[*eptr] & ctype_word) != 0)) + pcre_uint32 cc; + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); RRETURN(MATCH_NOMATCH); - while (++eptr < md->end_subject && (*eptr & 0xc0) == 0x80); + } + cc = UCHAR21(eptr); + if (cc < 128 && (md->ctypes[cc] & ctype_word) != 0) + RRETURN(MATCH_NOMATCH); + eptr++; + ACROSSCHAR(eptr < md->end_subject, *eptr, eptr++); } break; case OP_WORDCHAR: for (i = 1; i <= min; i++) { - if (eptr >= md->end_subject || - *eptr >= 128 || (md->ctypes[*eptr++] & ctype_word) == 0) + pcre_uint32 cc; + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); RRETURN(MATCH_NOMATCH); + } + cc = UCHAR21(eptr); + if (cc >= 128 || (md->ctypes[cc] & ctype_word) == 0) + RRETURN(MATCH_NOMATCH); + eptr++; /* No need to skip more bytes - we know it's a 1-byte character */ } break; @@ -3189,49 +4609,79 @@ for (;;) } /* End switch(ctype) */ else -#endif /* SUPPORT_UTF8 */ +#endif /* SUPPORT_UTF */ /* Code for the non-UTF-8 case for minimum matching of operators other - than OP_PROP and OP_NOTPROP. We can assume that there are the minimum - number of bytes present, as this was tested above. */ + than OP_PROP and OP_NOTPROP. */ switch(ctype) { case OP_ANY: for (i = 1; i <= min; i++) { + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } if (IS_NEWLINE(eptr)) RRETURN(MATCH_NOMATCH); + if (md->partial != 0 && + eptr + 1 >= md->end_subject && + NLBLOCK->nltype == NLTYPE_FIXED && + NLBLOCK->nllen == 2 && + *eptr == NLBLOCK->nl[0]) + { + md->hitend = TRUE; + if (md->partial > 1) RRETURN(PCRE_ERROR_PARTIAL); + } eptr++; } break; case OP_ALLANY: + if (eptr > md->end_subject - min) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } eptr += min; break; case OP_ANYBYTE: + if (eptr > md->end_subject - min) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } eptr += min; break; - /* Because of the CRLF case, we can't assume the minimum number of - bytes are present in this case. */ - case OP_ANYNL: for (i = 1; i <= min; i++) { - if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } switch(*eptr++) { default: RRETURN(MATCH_NOMATCH); - case 0x000d: - if (eptr < md->end_subject && *eptr == 0x0a) eptr++; - break; - case 0x000a: + + case CHAR_CR: + if (eptr < md->end_subject && *eptr == CHAR_LF) eptr++; break; - case 0x000b: - case 0x000c: - case 0x0085: + case CHAR_LF: + break; + + case CHAR_VT: + case CHAR_FF: + case CHAR_NEL: +#if defined COMPILE_PCRE16 || defined COMPILE_PCRE32 + case 0x2028: + case 0x2029: +#endif if (md->bsr_anycrlf) RRETURN(MATCH_NOMATCH); break; } @@ -3241,13 +4691,18 @@ for (;;) case OP_NOT_HSPACE: for (i = 1; i <= min; i++) { - if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } switch(*eptr++) { default: break; - case 0x09: /* HT */ - case 0x20: /* SPACE */ - case 0xa0: /* NBSP */ + HSPACE_BYTE_CASES: +#if defined COMPILE_PCRE16 || defined COMPILE_PCRE32 + HSPACE_MULTIBYTE_CASES: +#endif RRETURN(MATCH_NOMATCH); } } @@ -3256,13 +4711,18 @@ for (;;) case OP_HSPACE: for (i = 1; i <= min; i++) { - if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } switch(*eptr++) { default: RRETURN(MATCH_NOMATCH); - case 0x09: /* HT */ - case 0x20: /* SPACE */ - case 0xa0: /* NBSP */ + HSPACE_BYTE_CASES: +#if defined COMPILE_PCRE16 || defined COMPILE_PCRE32 + HSPACE_MULTIBYTE_CASES: +#endif break; } } @@ -3271,16 +4731,19 @@ for (;;) case OP_NOT_VSPACE: for (i = 1; i <= min; i++) { - if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } switch(*eptr++) { - default: break; - case 0x0a: /* LF */ - case 0x0b: /* VT */ - case 0x0c: /* FF */ - case 0x0d: /* CR */ - case 0x85: /* NEL */ + VSPACE_BYTE_CASES: +#if defined COMPILE_PCRE16 || defined COMPILE_PCRE32 + VSPACE_MULTIBYTE_CASES: +#endif RRETURN(MATCH_NOMATCH); + default: break; } } break; @@ -3288,15 +4751,18 @@ for (;;) case OP_VSPACE: for (i = 1; i <= min; i++) { - if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } switch(*eptr++) { default: RRETURN(MATCH_NOMATCH); - case 0x0a: /* LF */ - case 0x0b: /* VT */ - case 0x0c: /* FF */ - case 0x0d: /* CR */ - case 0x85: /* NEL */ + VSPACE_BYTE_CASES: +#if defined COMPILE_PCRE16 || defined COMPILE_PCRE32 + VSPACE_MULTIBYTE_CASES: +#endif break; } } @@ -3304,34 +4770,86 @@ for (;;) case OP_NOT_DIGIT: for (i = 1; i <= min; i++) - if ((md->ctypes[*eptr++] & ctype_digit) != 0) RRETURN(MATCH_NOMATCH); + { + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } + if (MAX_255(*eptr) && (md->ctypes[*eptr] & ctype_digit) != 0) + RRETURN(MATCH_NOMATCH); + eptr++; + } break; case OP_DIGIT: for (i = 1; i <= min; i++) - if ((md->ctypes[*eptr++] & ctype_digit) == 0) RRETURN(MATCH_NOMATCH); + { + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } + if (!MAX_255(*eptr) || (md->ctypes[*eptr] & ctype_digit) == 0) + RRETURN(MATCH_NOMATCH); + eptr++; + } break; case OP_NOT_WHITESPACE: for (i = 1; i <= min; i++) - if ((md->ctypes[*eptr++] & ctype_space) != 0) RRETURN(MATCH_NOMATCH); + { + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } + if (MAX_255(*eptr) && (md->ctypes[*eptr] & ctype_space) != 0) + RRETURN(MATCH_NOMATCH); + eptr++; + } break; case OP_WHITESPACE: for (i = 1; i <= min; i++) - if ((md->ctypes[*eptr++] & ctype_space) == 0) RRETURN(MATCH_NOMATCH); + { + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } + if (!MAX_255(*eptr) || (md->ctypes[*eptr] & ctype_space) == 0) + RRETURN(MATCH_NOMATCH); + eptr++; + } break; case OP_NOT_WORDCHAR: for (i = 1; i <= min; i++) - if ((md->ctypes[*eptr++] & ctype_word) != 0) + { + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); RRETURN(MATCH_NOMATCH); + } + if (MAX_255(*eptr) && (md->ctypes[*eptr] & ctype_word) != 0) + RRETURN(MATCH_NOMATCH); + eptr++; + } break; case OP_WORDCHAR: for (i = 1; i <= min; i++) - if ((md->ctypes[*eptr++] & ctype_word) == 0) + { + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); RRETURN(MATCH_NOMATCH); + } + if (!MAX_255(*eptr) || (md->ctypes[*eptr] & ctype_word) == 0) + RRETURN(MATCH_NOMATCH); + eptr++; + } break; default: @@ -3357,10 +4875,15 @@ for (;;) case PT_ANY: for (fi = min;; fi++) { - RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM36); + RMATCH(eptr, ecode, offset_top, md, eptrb, RM36); if (rrc != MATCH_NOMATCH) RRETURN(rrc); - if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); - GETCHARINC(c, eptr); + if (fi >= max) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } + GETCHARINCTEST(c, eptr); if (prop_fail_result) RRETURN(MATCH_NOMATCH); } /* Control never gets here */ @@ -3368,14 +4891,20 @@ for (;;) case PT_LAMP: for (fi = min;; fi++) { - RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM37); + int chartype; + RMATCH(eptr, ecode, offset_top, md, eptrb, RM37); if (rrc != MATCH_NOMATCH) RRETURN(rrc); - if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); - GETCHARINC(c, eptr); - prop_chartype = UCD_CHARTYPE(c); - if ((prop_chartype == ucp_Lu || - prop_chartype == ucp_Ll || - prop_chartype == ucp_Lt) == prop_fail_result) + if (fi >= max) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } + GETCHARINCTEST(c, eptr); + chartype = UCD_CHARTYPE(c); + if ((chartype == ucp_Lu || + chartype == ucp_Ll || + chartype == ucp_Lt) == prop_fail_result) RRETURN(MATCH_NOMATCH); } /* Control never gets here */ @@ -3383,12 +4912,16 @@ for (;;) case PT_GC: for (fi = min;; fi++) { - RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM38); + RMATCH(eptr, ecode, offset_top, md, eptrb, RM38); if (rrc != MATCH_NOMATCH) RRETURN(rrc); - if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); - GETCHARINC(c, eptr); - prop_category = UCD_CATEGORY(c); - if ((prop_category == prop_value) == prop_fail_result) + if (fi >= max) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } + GETCHARINCTEST(c, eptr); + if ((UCD_CATEGORY(c) == prop_value) == prop_fail_result) RRETURN(MATCH_NOMATCH); } /* Control never gets here */ @@ -3396,12 +4929,16 @@ for (;;) case PT_PC: for (fi = min;; fi++) { - RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM39); + RMATCH(eptr, ecode, offset_top, md, eptrb, RM39); if (rrc != MATCH_NOMATCH) RRETURN(rrc); - if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); - GETCHARINC(c, eptr); - prop_chartype = UCD_CHARTYPE(c); - if ((prop_chartype == prop_value) == prop_fail_result) + if (fi >= max) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } + GETCHARINCTEST(c, eptr); + if ((UCD_CHARTYPE(c) == prop_value) == prop_fail_result) RRETURN(MATCH_NOMATCH); } /* Control never gets here */ @@ -3409,16 +4946,137 @@ for (;;) case PT_SC: for (fi = min;; fi++) { - RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM40); + RMATCH(eptr, ecode, offset_top, md, eptrb, RM40); if (rrc != MATCH_NOMATCH) RRETURN(rrc); - if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); - GETCHARINC(c, eptr); - prop_script = UCD_SCRIPT(c); - if ((prop_script == prop_value) == prop_fail_result) + if (fi >= max) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } + GETCHARINCTEST(c, eptr); + if ((UCD_SCRIPT(c) == prop_value) == prop_fail_result) RRETURN(MATCH_NOMATCH); } /* Control never gets here */ + case PT_ALNUM: + for (fi = min;; fi++) + { + int category; + RMATCH(eptr, ecode, offset_top, md, eptrb, RM59); + if (rrc != MATCH_NOMATCH) RRETURN(rrc); + if (fi >= max) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } + GETCHARINCTEST(c, eptr); + category = UCD_CATEGORY(c); + if ((category == ucp_L || category == ucp_N) == prop_fail_result) + RRETURN(MATCH_NOMATCH); + } + /* Control never gets here */ + + /* Perl space used to exclude VT, but from Perl 5.18 it is included, + which means that Perl space and POSIX space are now identical. PCRE + was changed at release 8.34. */ + + case PT_SPACE: /* Perl space */ + case PT_PXSPACE: /* POSIX space */ + for (fi = min;; fi++) + { + RMATCH(eptr, ecode, offset_top, md, eptrb, RM61); + if (rrc != MATCH_NOMATCH) RRETURN(rrc); + if (fi >= max) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } + GETCHARINCTEST(c, eptr); + switch(c) + { + HSPACE_CASES: + VSPACE_CASES: + if (prop_fail_result) RRETURN(MATCH_NOMATCH); + break; + + default: + if ((UCD_CATEGORY(c) == ucp_Z) == prop_fail_result) + RRETURN(MATCH_NOMATCH); + break; + } + } + /* Control never gets here */ + + case PT_WORD: + for (fi = min;; fi++) + { + int category; + RMATCH(eptr, ecode, offset_top, md, eptrb, RM62); + if (rrc != MATCH_NOMATCH) RRETURN(rrc); + if (fi >= max) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } + GETCHARINCTEST(c, eptr); + category = UCD_CATEGORY(c); + if ((category == ucp_L || + category == ucp_N || + c == CHAR_UNDERSCORE) + == prop_fail_result) + RRETURN(MATCH_NOMATCH); + } + /* Control never gets here */ + + case PT_CLIST: + for (fi = min;; fi++) + { + const pcre_uint32 *cp; + RMATCH(eptr, ecode, offset_top, md, eptrb, RM67); + if (rrc != MATCH_NOMATCH) RRETURN(rrc); + if (fi >= max) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } + GETCHARINCTEST(c, eptr); + cp = PRIV(ucd_caseless_sets) + prop_value; + for (;;) + { + if (c < *cp) + { if (prop_fail_result) break; else { RRETURN(MATCH_NOMATCH); } } + if (c == *cp++) + { if (prop_fail_result) { RRETURN(MATCH_NOMATCH); } else break; } + } + } + /* Control never gets here */ + + case PT_UCNC: + for (fi = min;; fi++) + { + RMATCH(eptr, ecode, offset_top, md, eptrb, RM60); + if (rrc != MATCH_NOMATCH) RRETURN(rrc); + if (fi >= max) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } + GETCHARINCTEST(c, eptr); + if ((c == CHAR_DOLLAR_SIGN || c == CHAR_COMMERCIAL_AT || + c == CHAR_GRAVE_ACCENT || (c >= 0xa0 && c <= 0xd7ff) || + c >= 0xe000) == prop_fail_result) + RRETURN(MATCH_NOMATCH); + } + /* Control never gets here */ + + /* This should never occur */ default: RRETURN(PCRE_ERROR_INTERNAL); } @@ -3431,45 +5089,65 @@ for (;;) { for (fi = min;; fi++) { - RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM41); + RMATCH(eptr, ecode, offset_top, md, eptrb, RM41); if (rrc != MATCH_NOMATCH) RRETURN(rrc); - if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); - GETCHARINCTEST(c, eptr); - prop_category = UCD_CATEGORY(c); - if (prop_category == ucp_M) RRETURN(MATCH_NOMATCH); - while (eptr < md->end_subject) + if (fi >= max) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) { - int len = 1; - if (!utf8) c = *eptr; else - { - GETCHARLEN(c, eptr, len); - } - prop_category = UCD_CATEGORY(c); - if (prop_category != ucp_M) break; - eptr += len; + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); } + else + { + int lgb, rgb; + GETCHARINCTEST(c, eptr); + lgb = UCD_GRAPHBREAK(c); + while (eptr < md->end_subject) + { + int len = 1; + if (!utf) c = *eptr; else { GETCHARLEN(c, eptr, len); } + rgb = UCD_GRAPHBREAK(c); + if ((PRIV(ucp_gbtable)[lgb] & (1 << rgb)) == 0) break; + lgb = rgb; + eptr += len; + } + } + CHECK_PARTIAL(); } } - else #endif /* SUPPORT_UCP */ -#ifdef SUPPORT_UTF8 - /* UTF-8 mode */ - if (utf8) +#ifdef SUPPORT_UTF + if (utf) { for (fi = min;; fi++) { - RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM42); + RMATCH(eptr, ecode, offset_top, md, eptrb, RM42); if (rrc != MATCH_NOMATCH) RRETURN(rrc); - if (fi >= max || eptr >= md->end_subject || - (ctype == OP_ANY && IS_NEWLINE(eptr))) + if (fi >= max) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } + if (ctype == OP_ANY && IS_NEWLINE(eptr)) RRETURN(MATCH_NOMATCH); - GETCHARINC(c, eptr); switch(ctype) { - case OP_ANY: /* This is the non-NL case */ + case OP_ANY: /* This is the non-NL case */ + if (md->partial != 0 && /* Take care with CRLF partial */ + eptr >= md->end_subject && + NLBLOCK->nltype == NLTYPE_FIXED && + NLBLOCK->nllen == 2 && + c == NLBLOCK->nl[0]) + { + md->hitend = TRUE; + if (md->partial > 1) RRETURN(PCRE_ERROR_PARTIAL); + } + break; + case OP_ALLANY: case OP_ANYBYTE: break; @@ -3478,17 +5156,20 @@ for (;;) switch(c) { default: RRETURN(MATCH_NOMATCH); - case 0x000d: - if (eptr < md->end_subject && *eptr == 0x0a) eptr++; - break; - case 0x000a: + case CHAR_CR: + if (eptr < md->end_subject && UCHAR21(eptr) == CHAR_LF) eptr++; break; - case 0x000b: - case 0x000c: - case 0x0085: + case CHAR_LF: + break; + + case CHAR_VT: + case CHAR_FF: + case CHAR_NEL: +#ifndef EBCDIC case 0x2028: case 0x2029: +#endif /* Not EBCDIC */ if (md->bsr_anycrlf) RRETURN(MATCH_NOMATCH); break; } @@ -3497,84 +5178,32 @@ for (;;) case OP_NOT_HSPACE: switch(c) { + HSPACE_CASES: RRETURN(MATCH_NOMATCH); default: break; - case 0x09: /* HT */ - case 0x20: /* SPACE */ - case 0xa0: /* NBSP */ - case 0x1680: /* OGHAM SPACE MARK */ - case 0x180e: /* MONGOLIAN VOWEL SEPARATOR */ - case 0x2000: /* EN QUAD */ - case 0x2001: /* EM QUAD */ - case 0x2002: /* EN SPACE */ - case 0x2003: /* EM SPACE */ - case 0x2004: /* THREE-PER-EM SPACE */ - case 0x2005: /* FOUR-PER-EM SPACE */ - case 0x2006: /* SIX-PER-EM SPACE */ - case 0x2007: /* FIGURE SPACE */ - case 0x2008: /* PUNCTUATION SPACE */ - case 0x2009: /* THIN SPACE */ - case 0x200A: /* HAIR SPACE */ - case 0x202f: /* NARROW NO-BREAK SPACE */ - case 0x205f: /* MEDIUM MATHEMATICAL SPACE */ - case 0x3000: /* IDEOGRAPHIC SPACE */ - RRETURN(MATCH_NOMATCH); } break; case OP_HSPACE: switch(c) { + HSPACE_CASES: break; default: RRETURN(MATCH_NOMATCH); - case 0x09: /* HT */ - case 0x20: /* SPACE */ - case 0xa0: /* NBSP */ - case 0x1680: /* OGHAM SPACE MARK */ - case 0x180e: /* MONGOLIAN VOWEL SEPARATOR */ - case 0x2000: /* EN QUAD */ - case 0x2001: /* EM QUAD */ - case 0x2002: /* EN SPACE */ - case 0x2003: /* EM SPACE */ - case 0x2004: /* THREE-PER-EM SPACE */ - case 0x2005: /* FOUR-PER-EM SPACE */ - case 0x2006: /* SIX-PER-EM SPACE */ - case 0x2007: /* FIGURE SPACE */ - case 0x2008: /* PUNCTUATION SPACE */ - case 0x2009: /* THIN SPACE */ - case 0x200A: /* HAIR SPACE */ - case 0x202f: /* NARROW NO-BREAK SPACE */ - case 0x205f: /* MEDIUM MATHEMATICAL SPACE */ - case 0x3000: /* IDEOGRAPHIC SPACE */ - break; } break; case OP_NOT_VSPACE: switch(c) { + VSPACE_CASES: RRETURN(MATCH_NOMATCH); default: break; - case 0x0a: /* LF */ - case 0x0b: /* VT */ - case 0x0c: /* FF */ - case 0x0d: /* CR */ - case 0x85: /* NEL */ - case 0x2028: /* LINE SEPARATOR */ - case 0x2029: /* PARAGRAPH SEPARATOR */ - RRETURN(MATCH_NOMATCH); } break; case OP_VSPACE: switch(c) { + VSPACE_CASES: break; default: RRETURN(MATCH_NOMATCH); - case 0x0a: /* LF */ - case 0x0b: /* VT */ - case 0x0c: /* FF */ - case 0x0d: /* CR */ - case 0x85: /* NEL */ - case 0x2028: /* LINE SEPARATOR */ - case 0x2029: /* PARAGRAPH SEPARATOR */ - break; } break; @@ -3594,7 +5223,7 @@ for (;;) break; case OP_WHITESPACE: - if (c >= 256 || (md->ctypes[c] & ctype_space) == 0) + if (c >= 256 || (md->ctypes[c] & ctype_space) == 0) RRETURN(MATCH_NOMATCH); break; @@ -3615,20 +5244,35 @@ for (;;) } else #endif - /* Not UTF-8 mode */ + /* Not UTF mode */ { for (fi = min;; fi++) { - RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM43); + RMATCH(eptr, ecode, offset_top, md, eptrb, RM43); if (rrc != MATCH_NOMATCH) RRETURN(rrc); - if (fi >= max || eptr >= md->end_subject || - (ctype == OP_ANY && IS_NEWLINE(eptr))) + if (fi >= max) RRETURN(MATCH_NOMATCH); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + RRETURN(MATCH_NOMATCH); + } + if (ctype == OP_ANY && IS_NEWLINE(eptr)) RRETURN(MATCH_NOMATCH); - c = *eptr++; switch(ctype) { - case OP_ANY: /* This is the non-NL case */ + case OP_ANY: /* This is the non-NL case */ + if (md->partial != 0 && /* Take care with CRLF partial */ + eptr >= md->end_subject && + NLBLOCK->nltype == NLTYPE_FIXED && + NLBLOCK->nllen == 2 && + c == NLBLOCK->nl[0]) + { + md->hitend = TRUE; + if (md->partial > 1) RRETURN(PCRE_ERROR_PARTIAL); + } + break; + case OP_ALLANY: case OP_ANYBYTE: break; @@ -3637,16 +5281,20 @@ for (;;) switch(c) { default: RRETURN(MATCH_NOMATCH); - case 0x000d: - if (eptr < md->end_subject && *eptr == 0x0a) eptr++; + case CHAR_CR: + if (eptr < md->end_subject && *eptr == CHAR_LF) eptr++; break; - case 0x000a: + case CHAR_LF: break; - case 0x000b: - case 0x000c: - case 0x0085: + case CHAR_VT: + case CHAR_FF: + case CHAR_NEL: +#if defined COMPILE_PCRE16 || defined COMPILE_PCRE32 + case 0x2028: + case 0x2029: +#endif if (md->bsr_anycrlf) RRETURN(MATCH_NOMATCH); break; } @@ -3656,9 +5304,10 @@ for (;;) switch(c) { default: break; - case 0x09: /* HT */ - case 0x20: /* SPACE */ - case 0xa0: /* NBSP */ + HSPACE_BYTE_CASES: +#if defined COMPILE_PCRE16 || defined COMPILE_PCRE32 + HSPACE_MULTIBYTE_CASES: +#endif RRETURN(MATCH_NOMATCH); } break; @@ -3667,9 +5316,10 @@ for (;;) switch(c) { default: RRETURN(MATCH_NOMATCH); - case 0x09: /* HT */ - case 0x20: /* SPACE */ - case 0xa0: /* NBSP */ + HSPACE_BYTE_CASES: +#if defined COMPILE_PCRE16 || defined COMPILE_PCRE32 + HSPACE_MULTIBYTE_CASES: +#endif break; } break; @@ -3678,11 +5328,10 @@ for (;;) switch(c) { default: break; - case 0x0a: /* LF */ - case 0x0b: /* VT */ - case 0x0c: /* FF */ - case 0x0d: /* CR */ - case 0x85: /* NEL */ + VSPACE_BYTE_CASES: +#if defined COMPILE_PCRE16 || defined COMPILE_PCRE32 + VSPACE_MULTIBYTE_CASES: +#endif RRETURN(MATCH_NOMATCH); } break; @@ -3691,37 +5340,36 @@ for (;;) switch(c) { default: RRETURN(MATCH_NOMATCH); - case 0x0a: /* LF */ - case 0x0b: /* VT */ - case 0x0c: /* FF */ - case 0x0d: /* CR */ - case 0x85: /* NEL */ + VSPACE_BYTE_CASES: +#if defined COMPILE_PCRE16 || defined COMPILE_PCRE32 + VSPACE_MULTIBYTE_CASES: +#endif break; } break; case OP_NOT_DIGIT: - if ((md->ctypes[c] & ctype_digit) != 0) RRETURN(MATCH_NOMATCH); + if (MAX_255(c) && (md->ctypes[c] & ctype_digit) != 0) RRETURN(MATCH_NOMATCH); break; case OP_DIGIT: - if ((md->ctypes[c] & ctype_digit) == 0) RRETURN(MATCH_NOMATCH); + if (!MAX_255(c) || (md->ctypes[c] & ctype_digit) == 0) RRETURN(MATCH_NOMATCH); break; case OP_NOT_WHITESPACE: - if ((md->ctypes[c] & ctype_space) != 0) RRETURN(MATCH_NOMATCH); + if (MAX_255(c) && (md->ctypes[c] & ctype_space) != 0) RRETURN(MATCH_NOMATCH); break; case OP_WHITESPACE: - if ((md->ctypes[c] & ctype_space) == 0) RRETURN(MATCH_NOMATCH); + if (!MAX_255(c) || (md->ctypes[c] & ctype_space) == 0) RRETURN(MATCH_NOMATCH); break; case OP_NOT_WORDCHAR: - if ((md->ctypes[c] & ctype_word) != 0) RRETURN(MATCH_NOMATCH); + if (MAX_255(c) && (md->ctypes[c] & ctype_word) != 0) RRETURN(MATCH_NOMATCH); break; case OP_WORDCHAR: - if ((md->ctypes[c] & ctype_word) == 0) RRETURN(MATCH_NOMATCH); + if (!MAX_255(c) || (md->ctypes[c] & ctype_word) == 0) RRETURN(MATCH_NOMATCH); break; default: @@ -3749,8 +5397,12 @@ for (;;) for (i = min; i < max; i++) { int len = 1; - if (eptr >= md->end_subject) break; - GETCHARLEN(c, eptr, len); + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + break; + } + GETCHARLENTEST(c, eptr, len); if (prop_fail_result) break; eptr+= len; } @@ -3759,13 +5411,18 @@ for (;;) case PT_LAMP: for (i = min; i < max; i++) { + int chartype; int len = 1; - if (eptr >= md->end_subject) break; - GETCHARLEN(c, eptr, len); - prop_chartype = UCD_CHARTYPE(c); - if ((prop_chartype == ucp_Lu || - prop_chartype == ucp_Ll || - prop_chartype == ucp_Lt) == prop_fail_result) + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + break; + } + GETCHARLENTEST(c, eptr, len); + chartype = UCD_CHARTYPE(c); + if ((chartype == ucp_Lu || + chartype == ucp_Ll || + chartype == ucp_Lt) == prop_fail_result) break; eptr+= len; } @@ -3775,11 +5432,13 @@ for (;;) for (i = min; i < max; i++) { int len = 1; - if (eptr >= md->end_subject) break; - GETCHARLEN(c, eptr, len); - prop_category = UCD_CATEGORY(c); - if ((prop_category == prop_value) == prop_fail_result) + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); break; + } + GETCHARLENTEST(c, eptr, len); + if ((UCD_CATEGORY(c) == prop_value) == prop_fail_result) break; eptr+= len; } break; @@ -3788,11 +5447,13 @@ for (;;) for (i = min; i < max; i++) { int len = 1; - if (eptr >= md->end_subject) break; - GETCHARLEN(c, eptr, len); - prop_chartype = UCD_CHARTYPE(c); - if ((prop_chartype == prop_value) == prop_fail_result) + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); break; + } + GETCHARLENTEST(c, eptr, len); + if ((UCD_CHARTYPE(c) == prop_value) == prop_fail_result) break; eptr+= len; } break; @@ -3801,71 +5462,213 @@ for (;;) for (i = min; i < max; i++) { int len = 1; - if (eptr >= md->end_subject) break; - GETCHARLEN(c, eptr, len); - prop_script = UCD_SCRIPT(c); - if ((prop_script == prop_value) == prop_fail_result) + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + break; + } + GETCHARLENTEST(c, eptr, len); + if ((UCD_SCRIPT(c) == prop_value) == prop_fail_result) break; + eptr+= len; + } + break; + + case PT_ALNUM: + for (i = min; i < max; i++) + { + int category; + int len = 1; + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + break; + } + GETCHARLENTEST(c, eptr, len); + category = UCD_CATEGORY(c); + if ((category == ucp_L || category == ucp_N) == prop_fail_result) break; eptr+= len; } break; + + /* Perl space used to exclude VT, but from Perl 5.18 it is included, + which means that Perl space and POSIX space are now identical. PCRE + was changed at release 8.34. */ + + case PT_SPACE: /* Perl space */ + case PT_PXSPACE: /* POSIX space */ + for (i = min; i < max; i++) + { + int len = 1; + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + break; + } + GETCHARLENTEST(c, eptr, len); + switch(c) + { + HSPACE_CASES: + VSPACE_CASES: + if (prop_fail_result) goto ENDLOOP99; /* Break the loop */ + break; + + default: + if ((UCD_CATEGORY(c) == ucp_Z) == prop_fail_result) + goto ENDLOOP99; /* Break the loop */ + break; + } + eptr+= len; + } + ENDLOOP99: + break; + + case PT_WORD: + for (i = min; i < max; i++) + { + int category; + int len = 1; + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + break; + } + GETCHARLENTEST(c, eptr, len); + category = UCD_CATEGORY(c); + if ((category == ucp_L || category == ucp_N || + c == CHAR_UNDERSCORE) == prop_fail_result) + break; + eptr+= len; + } + break; + + case PT_CLIST: + for (i = min; i < max; i++) + { + const pcre_uint32 *cp; + int len = 1; + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + break; + } + GETCHARLENTEST(c, eptr, len); + cp = PRIV(ucd_caseless_sets) + prop_value; + for (;;) + { + if (c < *cp) + { if (prop_fail_result) break; else goto GOT_MAX; } + if (c == *cp++) + { if (prop_fail_result) goto GOT_MAX; else break; } + } + eptr += len; + } + GOT_MAX: + break; + + case PT_UCNC: + for (i = min; i < max; i++) + { + int len = 1; + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + break; + } + GETCHARLENTEST(c, eptr, len); + if ((c == CHAR_DOLLAR_SIGN || c == CHAR_COMMERCIAL_AT || + c == CHAR_GRAVE_ACCENT || (c >= 0xa0 && c <= 0xd7ff) || + c >= 0xe000) == prop_fail_result) + break; + eptr += len; + } + break; + + default: + RRETURN(PCRE_ERROR_INTERNAL); } /* eptr is now past the end of the maximum run */ - if (possessive) continue; + if (possessive) continue; /* No backtracking */ for(;;) { - RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM44); + if (eptr == pp) goto TAIL_RECURSE; + RMATCH(eptr, ecode, offset_top, md, eptrb, RM44); if (rrc != MATCH_NOMATCH) RRETURN(rrc); - if (eptr-- == pp) break; /* Stop if tried at original pos */ - if (utf8) BACKCHAR(eptr); + eptr--; + if (utf) BACKCHAR(eptr); } } - /* Match extended Unicode sequences. We will get here only if the + /* Match extended Unicode grapheme clusters. We will get here only if the support is in the binary; otherwise a compile-time error occurs. */ else if (ctype == OP_EXTUNI) { for (i = min; i < max; i++) { - if (eptr >= md->end_subject) break; - GETCHARINCTEST(c, eptr); - prop_category = UCD_CATEGORY(c); - if (prop_category == ucp_M) break; - while (eptr < md->end_subject) + if (eptr >= md->end_subject) { - int len = 1; - if (!utf8) c = *eptr; else - { - GETCHARLEN(c, eptr, len); - } - prop_category = UCD_CATEGORY(c); - if (prop_category != ucp_M) break; - eptr += len; + SCHECK_PARTIAL(); + break; } + else + { + int lgb, rgb; + GETCHARINCTEST(c, eptr); + lgb = UCD_GRAPHBREAK(c); + while (eptr < md->end_subject) + { + int len = 1; + if (!utf) c = *eptr; else { GETCHARLEN(c, eptr, len); } + rgb = UCD_GRAPHBREAK(c); + if ((PRIV(ucp_gbtable)[lgb] & (1 << rgb)) == 0) break; + lgb = rgb; + eptr += len; + } + } + CHECK_PARTIAL(); } /* eptr is now past the end of the maximum run */ - if (possessive) continue; + if (possessive) continue; /* No backtracking */ + for(;;) { - RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM45); + int lgb, rgb; + PCRE_PUCHAR fptr; + + if (eptr == pp) goto TAIL_RECURSE; /* At start of char run */ + RMATCH(eptr, ecode, offset_top, md, eptrb, RM45); if (rrc != MATCH_NOMATCH) RRETURN(rrc); - if (eptr-- == pp) break; /* Stop if tried at original pos */ - for (;;) /* Move back over one extended */ + + /* Backtracking over an extended grapheme cluster involves inspecting + the previous two characters (if present) to see if a break is + permitted between them. */ + + eptr--; + if (!utf) c = *eptr; else { - int len = 1; - if (!utf8) c = *eptr; else + BACKCHAR(eptr); + GETCHAR(c, eptr); + } + rgb = UCD_GRAPHBREAK(c); + + for (;;) + { + if (eptr == pp) goto TAIL_RECURSE; /* At start of char run */ + fptr = eptr - 1; + if (!utf) c = *fptr; else { - BACKCHAR(eptr); - GETCHARLEN(c, eptr, len); + BACKCHAR(fptr); + GETCHAR(c, fptr); } - prop_category = UCD_CATEGORY(c); - if (prop_category != ucp_M) break; - eptr--; + lgb = UCD_GRAPHBREAK(c); + if ((PRIV(ucp_gbtable)[lgb] & (1 << rgb)) == 0) break; + eptr = fptr; + rgb = lgb; } } } @@ -3873,10 +5676,8 @@ for (;;) else #endif /* SUPPORT_UCP */ -#ifdef SUPPORT_UTF8 - /* UTF-8 mode */ - - if (utf8) +#ifdef SUPPORT_UTF + if (utf) { switch(ctype) { @@ -3885,9 +5686,23 @@ for (;;) { for (i = min; i < max; i++) { - if (eptr >= md->end_subject || IS_NEWLINE(eptr)) break; + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + break; + } + if (IS_NEWLINE(eptr)) break; + if (md->partial != 0 && /* Take care with CRLF partial */ + eptr + 1 >= md->end_subject && + NLBLOCK->nltype == NLTYPE_FIXED && + NLBLOCK->nllen == 2 && + UCHAR21(eptr) == NLBLOCK->nl[0]) + { + md->hitend = TRUE; + if (md->partial > 1) RRETURN(PCRE_ERROR_PARTIAL); + } eptr++; - while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++; + ACROSSCHAR(eptr < md->end_subject, *eptr, eptr++); } } @@ -3897,9 +5712,23 @@ for (;;) { for (i = min; i < max; i++) { - if (eptr >= md->end_subject || IS_NEWLINE(eptr)) break; + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + break; + } + if (IS_NEWLINE(eptr)) break; + if (md->partial != 0 && /* Take care with CRLF partial */ + eptr + 1 >= md->end_subject && + NLBLOCK->nltype == NLTYPE_FIXED && + NLBLOCK->nllen == 2 && + UCHAR21(eptr) == NLBLOCK->nl[0]) + { + md->hitend = TRUE; + if (md->partial > 1) RRETURN(PCRE_ERROR_PARTIAL); + } eptr++; - while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++; + ACROSSCHAR(eptr < md->end_subject, *eptr, eptr++); } } break; @@ -3909,12 +5738,20 @@ for (;;) { for (i = min; i < max; i++) { - if (eptr >= md->end_subject) break; + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + break; + } eptr++; - while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++; + ACROSSCHAR(eptr < md->end_subject, *eptr, eptr++); } } - else eptr = md->end_subject; /* Unlimited UTF-8 repeat */ + else + { + eptr = md->end_subject; /* Unlimited UTF-8 repeat */ + SCHECK_PARTIAL(); + } break; /* The byte case is the same as non-UTF8 */ @@ -3922,27 +5759,37 @@ for (;;) case OP_ANYBYTE: c = max - min; if (c > (unsigned int)(md->end_subject - eptr)) - c = md->end_subject - eptr; - eptr += c; + { + eptr = md->end_subject; + SCHECK_PARTIAL(); + } + else eptr += c; break; case OP_ANYNL: for (i = min; i < max; i++) { int len = 1; - if (eptr >= md->end_subject) break; + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + break; + } GETCHARLEN(c, eptr, len); - if (c == 0x000d) + if (c == CHAR_CR) { if (++eptr >= md->end_subject) break; - if (*eptr == 0x000a) eptr++; + if (UCHAR21(eptr) == CHAR_LF) eptr++; } else { - if (c != 0x000a && + if (c != CHAR_LF && (md->bsr_anycrlf || - (c != 0x000b && c != 0x000c && - c != 0x0085 && c != 0x2028 && c != 0x2029))) + (c != CHAR_VT && c != CHAR_FF && c != CHAR_NEL +#ifndef EBCDIC + && c != 0x2028 && c != 0x2029 +#endif /* Not EBCDIC */ + ))) break; eptr += len; } @@ -3955,32 +5802,16 @@ for (;;) { BOOL gotspace; int len = 1; - if (eptr >= md->end_subject) break; + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + break; + } GETCHARLEN(c, eptr, len); switch(c) { + HSPACE_CASES: gotspace = TRUE; break; default: gotspace = FALSE; break; - case 0x09: /* HT */ - case 0x20: /* SPACE */ - case 0xa0: /* NBSP */ - case 0x1680: /* OGHAM SPACE MARK */ - case 0x180e: /* MONGOLIAN VOWEL SEPARATOR */ - case 0x2000: /* EN QUAD */ - case 0x2001: /* EM QUAD */ - case 0x2002: /* EN SPACE */ - case 0x2003: /* EM SPACE */ - case 0x2004: /* THREE-PER-EM SPACE */ - case 0x2005: /* FOUR-PER-EM SPACE */ - case 0x2006: /* SIX-PER-EM SPACE */ - case 0x2007: /* FIGURE SPACE */ - case 0x2008: /* PUNCTUATION SPACE */ - case 0x2009: /* THIN SPACE */ - case 0x200A: /* HAIR SPACE */ - case 0x202f: /* NARROW NO-BREAK SPACE */ - case 0x205f: /* MEDIUM MATHEMATICAL SPACE */ - case 0x3000: /* IDEOGRAPHIC SPACE */ - gotspace = TRUE; - break; } if (gotspace == (ctype == OP_NOT_HSPACE)) break; eptr += len; @@ -3993,20 +5824,16 @@ for (;;) { BOOL gotspace; int len = 1; - if (eptr >= md->end_subject) break; + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + break; + } GETCHARLEN(c, eptr, len); switch(c) { + VSPACE_CASES: gotspace = TRUE; break; default: gotspace = FALSE; break; - case 0x0a: /* LF */ - case 0x0b: /* VT */ - case 0x0c: /* FF */ - case 0x0d: /* CR */ - case 0x85: /* NEL */ - case 0x2028: /* LINE SEPARATOR */ - case 0x2029: /* PARAGRAPH SEPARATOR */ - gotspace = TRUE; - break; } if (gotspace == (ctype == OP_NOT_VSPACE)) break; eptr += len; @@ -4017,7 +5844,11 @@ for (;;) for (i = min; i < max; i++) { int len = 1; - if (eptr >= md->end_subject) break; + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + break; + } GETCHARLEN(c, eptr, len); if (c < 256 && (md->ctypes[c] & ctype_digit) != 0) break; eptr+= len; @@ -4028,7 +5859,11 @@ for (;;) for (i = min; i < max; i++) { int len = 1; - if (eptr >= md->end_subject) break; + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + break; + } GETCHARLEN(c, eptr, len); if (c >= 256 ||(md->ctypes[c] & ctype_digit) == 0) break; eptr+= len; @@ -4039,7 +5874,11 @@ for (;;) for (i = min; i < max; i++) { int len = 1; - if (eptr >= md->end_subject) break; + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + break; + } GETCHARLEN(c, eptr, len); if (c < 256 && (md->ctypes[c] & ctype_space) != 0) break; eptr+= len; @@ -4050,7 +5889,11 @@ for (;;) for (i = min; i < max; i++) { int len = 1; - if (eptr >= md->end_subject) break; + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + break; + } GETCHARLEN(c, eptr, len); if (c >= 256 ||(md->ctypes[c] & ctype_space) == 0) break; eptr+= len; @@ -4061,7 +5904,11 @@ for (;;) for (i = min; i < max; i++) { int len = 1; - if (eptr >= md->end_subject) break; + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + break; + } GETCHARLEN(c, eptr, len); if (c < 256 && (md->ctypes[c] & ctype_word) != 0) break; eptr+= len; @@ -4072,7 +5919,11 @@ for (;;) for (i = min; i < max; i++) { int len = 1; - if (eptr >= md->end_subject) break; + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + break; + } GETCHARLEN(c, eptr, len); if (c >= 256 || (md->ctypes[c] & ctype_word) == 0) break; eptr+= len; @@ -4083,28 +5934,42 @@ for (;;) RRETURN(PCRE_ERROR_INTERNAL); } - /* eptr is now past the end of the maximum run */ - - if (possessive) continue; + if (possessive) continue; /* No backtracking */ for(;;) { - RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM46); + if (eptr == pp) goto TAIL_RECURSE; + RMATCH(eptr, ecode, offset_top, md, eptrb, RM46); if (rrc != MATCH_NOMATCH) RRETURN(rrc); - if (eptr-- == pp) break; /* Stop if tried at original pos */ + eptr--; BACKCHAR(eptr); + if (ctype == OP_ANYNL && eptr > pp && UCHAR21(eptr) == CHAR_NL && + UCHAR21(eptr - 1) == CHAR_CR) eptr--; } } else -#endif /* SUPPORT_UTF8 */ - - /* Not UTF-8 mode */ +#endif /* SUPPORT_UTF */ + /* Not UTF mode */ { switch(ctype) { case OP_ANY: for (i = min; i < max; i++) { - if (eptr >= md->end_subject || IS_NEWLINE(eptr)) break; + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + break; + } + if (IS_NEWLINE(eptr)) break; + if (md->partial != 0 && /* Take care with CRLF partial */ + eptr + 1 >= md->end_subject && + NLBLOCK->nltype == NLTYPE_FIXED && + NLBLOCK->nllen == 2 && + *eptr == NLBLOCK->nl[0]) + { + md->hitend = TRUE; + if (md->partial > 1) RRETURN(PCRE_ERROR_PARTIAL); + } eptr++; } break; @@ -4113,26 +5978,35 @@ for (;;) case OP_ANYBYTE: c = max - min; if (c > (unsigned int)(md->end_subject - eptr)) - c = md->end_subject - eptr; - eptr += c; + { + eptr = md->end_subject; + SCHECK_PARTIAL(); + } + else eptr += c; break; case OP_ANYNL: for (i = min; i < max; i++) { - if (eptr >= md->end_subject) break; + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + break; + } c = *eptr; - if (c == 0x000d) + if (c == CHAR_CR) { if (++eptr >= md->end_subject) break; - if (*eptr == 0x000a) eptr++; + if (*eptr == CHAR_LF) eptr++; } else { - if (c != 0x000a && - (md->bsr_anycrlf || - (c != 0x000b && c != 0x000c && c != 0x0085))) - break; + if (c != CHAR_LF && (md->bsr_anycrlf || + (c != CHAR_VT && c != CHAR_FF && c != CHAR_NEL +#if defined COMPILE_PCRE16 || defined COMPILE_PCRE32 + && c != 0x2028 && c != 0x2029 +#endif + ))) break; eptr++; } } @@ -4141,50 +6015,96 @@ for (;;) case OP_NOT_HSPACE: for (i = min; i < max; i++) { - if (eptr >= md->end_subject) break; - c = *eptr; - if (c == 0x09 || c == 0x20 || c == 0xa0) break; - eptr++; + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + break; + } + switch(*eptr) + { + default: eptr++; break; + HSPACE_BYTE_CASES: +#if defined COMPILE_PCRE16 || defined COMPILE_PCRE32 + HSPACE_MULTIBYTE_CASES: +#endif + goto ENDLOOP00; + } } + ENDLOOP00: break; case OP_HSPACE: for (i = min; i < max; i++) { - if (eptr >= md->end_subject) break; - c = *eptr; - if (c != 0x09 && c != 0x20 && c != 0xa0) break; - eptr++; + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); + break; + } + switch(*eptr) + { + default: goto ENDLOOP01; + HSPACE_BYTE_CASES: +#if defined COMPILE_PCRE16 || defined COMPILE_PCRE32 + HSPACE_MULTIBYTE_CASES: +#endif + eptr++; break; + } } + ENDLOOP01: break; case OP_NOT_VSPACE: for (i = min; i < max; i++) { - if (eptr >= md->end_subject) break; - c = *eptr; - if (c == 0x0a || c == 0x0b || c == 0x0c || c == 0x0d || c == 0x85) + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); break; - eptr++; + } + switch(*eptr) + { + default: eptr++; break; + VSPACE_BYTE_CASES: +#if defined COMPILE_PCRE16 || defined COMPILE_PCRE32 + VSPACE_MULTIBYTE_CASES: +#endif + goto ENDLOOP02; + } } + ENDLOOP02: break; case OP_VSPACE: for (i = min; i < max; i++) { - if (eptr >= md->end_subject) break; - c = *eptr; - if (c != 0x0a && c != 0x0b && c != 0x0c && c != 0x0d && c != 0x85) + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); break; - eptr++; + } + switch(*eptr) + { + default: goto ENDLOOP03; + VSPACE_BYTE_CASES: +#if defined COMPILE_PCRE16 || defined COMPILE_PCRE32 + VSPACE_MULTIBYTE_CASES: +#endif + eptr++; break; + } } + ENDLOOP03: break; case OP_NOT_DIGIT: for (i = min; i < max; i++) { - if (eptr >= md->end_subject || (md->ctypes[*eptr] & ctype_digit) != 0) + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); break; + } + if (MAX_255(*eptr) && (md->ctypes[*eptr] & ctype_digit) != 0) break; eptr++; } break; @@ -4192,8 +6112,12 @@ for (;;) case OP_DIGIT: for (i = min; i < max; i++) { - if (eptr >= md->end_subject || (md->ctypes[*eptr] & ctype_digit) == 0) + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); break; + } + if (!MAX_255(*eptr) || (md->ctypes[*eptr] & ctype_digit) == 0) break; eptr++; } break; @@ -4201,8 +6125,12 @@ for (;;) case OP_NOT_WHITESPACE: for (i = min; i < max; i++) { - if (eptr >= md->end_subject || (md->ctypes[*eptr] & ctype_space) != 0) + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); break; + } + if (MAX_255(*eptr) && (md->ctypes[*eptr] & ctype_space) != 0) break; eptr++; } break; @@ -4210,8 +6138,12 @@ for (;;) case OP_WHITESPACE: for (i = min; i < max; i++) { - if (eptr >= md->end_subject || (md->ctypes[*eptr] & ctype_space) == 0) + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); break; + } + if (!MAX_255(*eptr) || (md->ctypes[*eptr] & ctype_space) == 0) break; eptr++; } break; @@ -4219,8 +6151,12 @@ for (;;) case OP_NOT_WORDCHAR: for (i = min; i < max; i++) { - if (eptr >= md->end_subject || (md->ctypes[*eptr] & ctype_word) != 0) + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); break; + } + if (MAX_255(*eptr) && (md->ctypes[*eptr] & ctype_word) != 0) break; eptr++; } break; @@ -4228,8 +6164,12 @@ for (;;) case OP_WORDCHAR: for (i = min; i < max; i++) { - if (eptr >= md->end_subject || (md->ctypes[*eptr] & ctype_word) == 0) + if (eptr >= md->end_subject) + { + SCHECK_PARTIAL(); break; + } + if (!MAX_255(*eptr) || (md->ctypes[*eptr] & ctype_word) == 0) break; eptr++; } break; @@ -4238,22 +6178,20 @@ for (;;) RRETURN(PCRE_ERROR_INTERNAL); } - /* eptr is now past the end of the maximum run */ - - if (possessive) continue; - while (eptr >= pp) + if (possessive) continue; /* No backtracking */ + for (;;) { - RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM47); - eptr--; + if (eptr == pp) goto TAIL_RECURSE; + RMATCH(eptr, ecode, offset_top, md, eptrb, RM47); if (rrc != MATCH_NOMATCH) RRETURN(rrc); + eptr--; + if (ctype == OP_ANYNL && eptr > pp && *eptr == CHAR_LF && + eptr[-1] == CHAR_CR) eptr--; } } - /* Get here if we can't make it match with any permitted repetitions */ - - RRETURN(MATCH_NOMATCH); + /* Control never gets here */ } - /* Control never gets here */ /* There's been some horrible disaster. Arrival here can only mean there is something seriously wrong in the code above or the OP_xxx definitions. */ @@ -4284,14 +6222,20 @@ switch (frame->Xwhere) LBL( 9) LBL(10) LBL(11) LBL(12) LBL(13) LBL(14) LBL(15) LBL(17) LBL(19) LBL(24) LBL(25) LBL(26) LBL(27) LBL(29) LBL(31) LBL(33) LBL(35) LBL(43) LBL(47) LBL(48) LBL(49) LBL(50) LBL(51) LBL(52) - LBL(53) LBL(54) -#ifdef SUPPORT_UTF8 - LBL(16) LBL(18) LBL(20) LBL(21) LBL(22) LBL(23) LBL(28) LBL(30) + LBL(53) LBL(54) LBL(55) LBL(56) LBL(57) LBL(58) LBL(63) LBL(64) + LBL(65) LBL(66) +#if defined SUPPORT_UTF || !defined COMPILE_PCRE8 + LBL(20) LBL(21) +#endif +#ifdef SUPPORT_UTF + LBL(16) LBL(18) + LBL(22) LBL(23) LBL(28) LBL(30) LBL(32) LBL(34) LBL(42) LBL(46) #ifdef SUPPORT_UCP LBL(36) LBL(37) LBL(38) LBL(39) LBL(40) LBL(41) LBL(44) LBL(45) + LBL(59) LBL(60) LBL(61) LBL(62) LBL(67) #endif /* SUPPORT_UCP */ -#endif /* SUPPORT_UTF8 */ +#endif /* SUPPORT_UTF */ default: DPRINTF(("jump error in pcre match: label %d non-existent\n", frame->Xwhere)); return PCRE_ERROR_INTERNAL; @@ -4312,7 +6256,6 @@ Undefine all the macros that were defined above to handle this. */ #undef ecode #undef mstart #undef offset_top -#undef ims #undef eptrb #undef flags @@ -4330,8 +6273,6 @@ Undefine all the macros that were defined above to handle this. */ #undef condition #undef prev_is_word -#undef original_ims - #undef ctype #undef length #undef max @@ -4358,6 +6299,31 @@ Undefine all the macros that were defined above to handle this. */ ***************************************************************************/ +#ifdef NO_RECURSE +/************************************************* +* Release allocated heap frames * +*************************************************/ + +/* This function releases all the allocated frames. The base frame is on the +machine stack, and so must not be freed. + +Argument: the address of the base frame +Returns: nothing +*/ + +static void +release_match_heapframes (heapframe *frame_base) +{ +heapframe *nextframe = frame_base->Xnextframe; +while (nextframe != NULL) + { + heapframe *oldframe = nextframe; + nextframe = nextframe->Xnextframe; + (PUBL(stack_free))(oldframe); + } +} +#endif + /************************************************* * Execute a Regular Expression * @@ -4383,45 +6349,160 @@ Returns: > 0 => success; value is the number of elements filled in < -1 => some kind of unexpected problem */ +#if defined COMPILE_PCRE8 PCRE_EXP_DEFN int PCRE_CALL_CONVENTION pcre_exec(const pcre *argument_re, const pcre_extra *extra_data, PCRE_SPTR subject, int length, int start_offset, int options, int *offsets, int offsetcount) +#elif defined COMPILE_PCRE16 +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION +pcre16_exec(const pcre16 *argument_re, const pcre16_extra *extra_data, + PCRE_SPTR16 subject, int length, int start_offset, int options, int *offsets, + int offsetcount) +#elif defined COMPILE_PCRE32 +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION +pcre32_exec(const pcre32 *argument_re, const pcre32_extra *extra_data, + PCRE_SPTR32 subject, int length, int start_offset, int options, int *offsets, + int offsetcount) +#endif { -int rc, resetcount, ocount; -int first_byte = -1; -int req_byte = -1; -int req_byte2 = -1; +int rc, ocount, arg_offset_max; int newline; -unsigned long int ims; BOOL using_temporary_offsets = FALSE; BOOL anchored; BOOL startline; BOOL firstline; -BOOL first_byte_caseless = FALSE; -BOOL req_byte_caseless = FALSE; -BOOL utf8; +BOOL utf; +BOOL has_first_char = FALSE; +BOOL has_req_char = FALSE; +pcre_uchar first_char = 0; +pcre_uchar first_char2 = 0; +pcre_uchar req_char = 0; +pcre_uchar req_char2 = 0; match_data match_block; match_data *md = &match_block; -const uschar *tables; -const uschar *start_bits = NULL; -USPTR start_match = (USPTR)subject + start_offset; -USPTR end_subject; -USPTR req_byte_ptr = start_match - 1; +const pcre_uint8 *tables; +const pcre_uint8 *start_bits = NULL; +PCRE_PUCHAR start_match = (PCRE_PUCHAR)subject + start_offset; +PCRE_PUCHAR end_subject; +PCRE_PUCHAR start_partial = NULL; +PCRE_PUCHAR match_partial = NULL; +PCRE_PUCHAR req_char_ptr = start_match - 1; -pcre_study_data internal_study; const pcre_study_data *study; +const REAL_PCRE *re = (const REAL_PCRE *)argument_re; -real_pcre internal_re; -const real_pcre *external_re = (const real_pcre *)argument_re; -const real_pcre *re = external_re; +#ifdef NO_RECURSE +heapframe frame_zero; +frame_zero.Xprevframe = NULL; /* Marks the top level */ +frame_zero.Xnextframe = NULL; /* None are allocated yet */ +md->match_frames_base = &frame_zero; +#endif + +/* Check for the special magic call that measures the size of the stack used +per recursive call of match(). Without the funny casting for sizeof, a Windows +compiler gave this error: "unary minus operator applied to unsigned type, +result still unsigned". Hopefully the cast fixes that. */ + +if (re == NULL && extra_data == NULL && subject == NULL && length == -999 && + start_offset == -999) +#ifdef NO_RECURSE + return -((int)sizeof(heapframe)); +#else + return match(NULL, NULL, NULL, 0, NULL, NULL, 0); +#endif /* Plausibility checks */ if ((options & ~PUBLIC_EXEC_OPTIONS) != 0) return PCRE_ERROR_BADOPTION; -if (re == NULL || subject == NULL || - (offsets == NULL && offsetcount > 0)) return PCRE_ERROR_NULL; +if (re == NULL || subject == NULL || (offsets == NULL && offsetcount > 0)) + return PCRE_ERROR_NULL; if (offsetcount < 0) return PCRE_ERROR_BADCOUNT; +if (length < 0) return PCRE_ERROR_BADLENGTH; +if (start_offset < 0 || start_offset > length) return PCRE_ERROR_BADOFFSET; + +/* Check that the first field in the block is the magic number. If it is not, +return with PCRE_ERROR_BADMAGIC. However, if the magic number is equal to +REVERSED_MAGIC_NUMBER we return with PCRE_ERROR_BADENDIANNESS, which +means that the pattern is likely compiled with different endianness. */ + +if (re->magic_number != MAGIC_NUMBER) + return re->magic_number == REVERSED_MAGIC_NUMBER? + PCRE_ERROR_BADENDIANNESS:PCRE_ERROR_BADMAGIC; +if ((re->flags & PCRE_MODE) == 0) return PCRE_ERROR_BADMODE; + +/* These two settings are used in the code for checking a UTF-8 string that +follows immediately afterwards. Other values in the md block are used only +during "normal" pcre_exec() processing, not when the JIT support is in use, +so they are set up later. */ + +/* PCRE_UTF16 has the same value as PCRE_UTF8. */ +utf = md->utf = (re->options & PCRE_UTF8) != 0; +md->partial = ((options & PCRE_PARTIAL_HARD) != 0)? 2 : + ((options & PCRE_PARTIAL_SOFT) != 0)? 1 : 0; + +/* Check a UTF-8 string if required. Pass back the character offset and error +code for an invalid string if a results vector is available. */ + +#ifdef SUPPORT_UTF +if (utf && (options & PCRE_NO_UTF8_CHECK) == 0) + { + int erroroffset; + int errorcode = PRIV(valid_utf)((PCRE_PUCHAR)subject, length, &erroroffset); + if (errorcode != 0) + { + if (offsetcount >= 2) + { + offsets[0] = erroroffset; + offsets[1] = errorcode; + } +#if defined COMPILE_PCRE8 + return (errorcode <= PCRE_UTF8_ERR5 && md->partial > 1)? + PCRE_ERROR_SHORTUTF8 : PCRE_ERROR_BADUTF8; +#elif defined COMPILE_PCRE16 + return (errorcode <= PCRE_UTF16_ERR1 && md->partial > 1)? + PCRE_ERROR_SHORTUTF16 : PCRE_ERROR_BADUTF16; +#elif defined COMPILE_PCRE32 + return PCRE_ERROR_BADUTF32; +#endif + } +#if defined COMPILE_PCRE8 || defined COMPILE_PCRE16 + /* Check that a start_offset points to the start of a UTF character. */ + if (start_offset > 0 && start_offset < length && + NOT_FIRSTCHAR(((PCRE_PUCHAR)subject)[start_offset])) + return PCRE_ERROR_BADUTF8_OFFSET; +#endif + } +#endif + +/* If the pattern was successfully studied with JIT support, run the JIT +executable instead of the rest of this function. Most options must be set at +compile time for the JIT code to be usable. Fallback to the normal code path if +an unsupported flag is set. */ + +#ifdef SUPPORT_JIT +if (extra_data != NULL + && (extra_data->flags & (PCRE_EXTRA_EXECUTABLE_JIT | + PCRE_EXTRA_TABLES)) == PCRE_EXTRA_EXECUTABLE_JIT + && extra_data->executable_jit != NULL + && (options & ~PUBLIC_JIT_EXEC_OPTIONS) == 0) + { + rc = PRIV(jit_exec)(extra_data, (const pcre_uchar *)subject, length, + start_offset, options, offsets, offsetcount); + + /* PCRE_ERROR_NULL means that the selected normal or partial matching + mode is not compiled. In this case we simply fallback to interpreter. */ + + if (rc != PCRE_ERROR_JIT_BADOPTION) return rc; + } +#endif + +/* Carry on with non-JIT matching. This information is for finding all the +numbers associated with a given name, for condition testing. */ + +md->name_table = (pcre_uchar *)re + re->name_table_offset; +md->name_count = re->name_count; +md->name_entry_size = re->name_entry_size; /* Fish out the optional data from the extra_data structure, first setting the default values. */ @@ -4433,7 +6514,9 @@ md->callout_data = NULL; /* The table pointer is always in native byte order. */ -tables = external_re->tables; +tables = re->tables; + +/* The two limit values override the defaults, whatever their value. */ if (extra_data != NULL) { @@ -4449,23 +6532,20 @@ if (extra_data != NULL) if ((flags & PCRE_EXTRA_TABLES) != 0) tables = extra_data->tables; } +/* Limits in the regex override only if they are smaller. */ + +if ((re->flags & PCRE_MLSET) != 0 && re->limit_match < md->match_limit) + md->match_limit = re->limit_match; + +if ((re->flags & PCRE_RLSET) != 0 && + re->limit_recursion < md->match_limit_recursion) + md->match_limit_recursion = re->limit_recursion; + /* If the exec call supplied NULL for tables, use the inbuilt ones. This is a feature that makes it possible to save compiled regex and re-use them in other programs later. */ -if (tables == NULL) tables = _pcre_default_tables; - -/* Check that the first field in the block is the magic number. If it is not, -test for a regex that was compiled on a host of opposite endianness. If this is -the case, flipped values are put in internal_re and internal_study if there was -study data too. */ - -if (re->magic_number != MAGIC_NUMBER) - { - re = _pcre_try_flipped(re, &internal_re, study, &internal_study); - if (re == NULL) return PCRE_ERROR_BADMAGIC; - if (study != NULL) study = &internal_study; - } +if (tables == NULL) tables = PRIV(default_tables); /* Set up other data */ @@ -4475,27 +6555,35 @@ firstline = (re->options & PCRE_FIRSTLINE) != 0; /* The code starts after the real_pcre block and the capture name table. */ -md->start_code = (const uschar *)external_re + re->name_table_offset + +md->start_code = (const pcre_uchar *)re + re->name_table_offset + re->name_count * re->name_entry_size; -md->start_subject = (USPTR)subject; +md->start_subject = (PCRE_PUCHAR)subject; md->start_offset = start_offset; md->end_subject = md->start_subject + length; end_subject = md->end_subject; md->endonly = (re->options & PCRE_DOLLAR_ENDONLY) != 0; -utf8 = md->utf8 = (re->options & PCRE_UTF8) != 0; +md->use_ucp = (re->options & PCRE_UCP) != 0; md->jscript_compat = (re->options & PCRE_JAVASCRIPT_COMPAT) != 0; +md->ignore_skip_arg = 0; + +/* Some options are unpacked into BOOL variables in the hope that testing +them will be faster than individual option bits. */ md->notbol = (options & PCRE_NOTBOL) != 0; md->noteol = (options & PCRE_NOTEOL) != 0; md->notempty = (options & PCRE_NOTEMPTY) != 0; -md->partial = (options & PCRE_PARTIAL) != 0; +md->notempty_atstart = (options & PCRE_NOTEMPTY_ATSTART) != 0; + md->hitend = FALSE; +md->mark = md->nomatch_mark = NULL; /* In case never set */ md->recursive = NULL; /* No recursion at top level */ +md->hasthen = (re->flags & PCRE_HASTHEN) != 0; md->lcc = tables + lcc_offset; +md->fcc = tables + fcc_offset; md->ctypes = tables + ctypes_offset; /* Handle different \R options. */ @@ -4531,10 +6619,10 @@ switch ((((options & PCRE_NEWLINE_BITS) == 0)? re->options : (pcre_uint32)options) & PCRE_NEWLINE_BITS) { case 0: newline = NEWLINE; break; /* Compile-time default */ - case PCRE_NEWLINE_CR: newline = '\r'; break; - case PCRE_NEWLINE_LF: newline = '\n'; break; + case PCRE_NEWLINE_CR: newline = CHAR_CR; break; + case PCRE_NEWLINE_LF: newline = CHAR_NL; break; case PCRE_NEWLINE_CR+ - PCRE_NEWLINE_LF: newline = ('\r' << 8) | '\n'; break; + PCRE_NEWLINE_LF: newline = (CHAR_CR << 8) | CHAR_NL; break; case PCRE_NEWLINE_ANY: newline = -1; break; case PCRE_NEWLINE_ANYCRLF: newline = -2; break; default: return PCRE_ERROR_BADNEWLINE; @@ -4564,79 +6652,50 @@ else } } -/* Partial matching is supported only for a restricted set of regexes at the -moment. */ +/* Partial matching was originally supported only for a restricted set of +regexes; from release 8.00 there are no restrictions, but the bits are still +defined (though never set). So there's no harm in leaving this code. */ if (md->partial && (re->flags & PCRE_NOPARTIAL) != 0) return PCRE_ERROR_BADPARTIAL; -/* Check a UTF-8 string if required. Unfortunately there's no way of passing -back the character offset. */ - -#ifdef SUPPORT_UTF8 -if (utf8 && (options & PCRE_NO_UTF8_CHECK) == 0) - { - if (_pcre_valid_utf8((uschar *)subject, length) >= 0) - return PCRE_ERROR_BADUTF8; - if (start_offset > 0 && start_offset < length) - { - int tb = ((uschar *)subject)[start_offset]; - if (tb > 127) - { - tb &= 0xc0; - if (tb != 0 && tb != 0xc0) return PCRE_ERROR_BADUTF8_OFFSET; - } - } - } -#endif - -/* The ims options can vary during the matching as a result of the presence -of (?ims) items in the pattern. They are kept in a local variable so that -restoring at the exit of a group is easy. */ - -ims = re->options & (PCRE_CASELESS|PCRE_MULTILINE|PCRE_DOTALL); - /* If the expression has got more back references than the offsets supplied can hold, we get a temporary chunk of working store to use during the matching. Otherwise, we can use the vector supplied, rounding down its size to a multiple of 3. */ ocount = offsetcount - (offsetcount % 3); +arg_offset_max = (2*ocount)/3; if (re->top_backref > 0 && re->top_backref >= ocount/3) { ocount = re->top_backref * 3 + 3; - md->offset_vector = (int *)(pcre_malloc)(ocount * sizeof(int)); + md->offset_vector = (int *)(PUBL(malloc))(ocount * sizeof(int)); if (md->offset_vector == NULL) return PCRE_ERROR_NOMEMORY; using_temporary_offsets = TRUE; DPRINTF(("Got memory to hold back references\n")); } else md->offset_vector = offsets; - md->offset_end = ocount; md->offset_max = (2*ocount)/3; -md->offset_overflow = FALSE; -md->capture_last = -1; - -/* Compute the minimum number of offsets that we need to reset each time. Doing -this makes a huge difference to execution time when there aren't many brackets -in the pattern. */ - -resetcount = 2 + re->top_bracket * 2; -if (resetcount > offsetcount) resetcount = ocount; +md->capture_last = 0; /* Reset the working variable associated with each extraction. These should never be used unless previously set, but they get saved and restored, and so we -initialize them to avoid reading uninitialized locations. */ +initialize them to avoid reading uninitialized locations. Also, unset the +offsets for the matched string. This is really just for tidiness with callouts, +in case they inspect these fields. */ if (md->offset_vector != NULL) { register int *iptr = md->offset_vector + ocount; - register int *iend = iptr - resetcount/2 + 1; + register int *iend = iptr - re->top_bracket; + if (iend < md->offset_vector + 2) iend = md->offset_vector + 2; while (--iptr >= iend) *iptr = -1; + md->offset_vector[0] = md->offset_vector[1] = -1; } -/* Set up the first character to match, if available. The first_byte value is +/* Set up the first character to match, if available. The first_char value is never set for an anchored regular expression, but the anchoring may be forced at run time, so we have to test for anchoring. The first char may be unset for an unanchored pattern, of course. If there's no first char and the pattern was @@ -4646,13 +6705,20 @@ if (!anchored) { if ((re->flags & PCRE_FIRSTSET) != 0) { - first_byte = re->first_byte & 255; - if ((first_byte_caseless = ((re->first_byte & REQ_CASELESS) != 0)) == TRUE) - first_byte = md->lcc[first_byte]; + has_first_char = TRUE; + first_char = first_char2 = (pcre_uchar)(re->first_char); + if ((re->flags & PCRE_FCH_CASELESS) != 0) + { + first_char2 = TABLE_GET(first_char, md->fcc, first_char); +#if defined SUPPORT_UCP && !(defined COMPILE_PCRE8) + if (utf && first_char > 127) + first_char2 = UCD_OTHERCASE(first_char); +#endif + } } else if (!startline && study != NULL && - (study->options & PCRE_STUDY_MAPPED) != 0) + (study->flags & PCRE_STUDY_MAPPED) != 0) start_bits = study->start_bits; } @@ -4661,9 +6727,16 @@ character" set. */ if ((re->flags & PCRE_REQCHSET) != 0) { - req_byte = re->req_byte & 255; - req_byte_caseless = (re->req_byte & REQ_CASELESS) != 0; - req_byte2 = (tables + fcc_offset)[req_byte]; /* case flipped */ + has_req_char = TRUE; + req_char = req_char2 = (pcre_uchar)(re->req_char); + if ((re->flags & PCRE_RCH_CASELESS) != 0) + { + req_char2 = TABLE_GET(req_char, md->fcc, req_char); +#if defined SUPPORT_UCP && !(defined COMPILE_PCRE8) + if (utf && req_char > 127) + req_char2 = UCD_OTHERCASE(req_char); +#endif + } } @@ -4674,34 +6747,25 @@ the loop runs just once. */ for(;;) { - USPTR save_end_subject = end_subject; - USPTR new_start_match; + PCRE_PUCHAR save_end_subject = end_subject; + PCRE_PUCHAR new_start_match; - /* Reset the maximum number of extractions we might see. */ - - if (md->offset_vector != NULL) - { - register int *iptr = md->offset_vector; - register int *iend = iptr + resetcount; - while (iptr < iend) *iptr++ = -1; - } - - /* Advance to a unique first char if possible. If firstline is TRUE, the - start of the match is constrained to the first line of a multiline string. - That is, the match must be before or at the first newline. Implement this by - temporarily adjusting end_subject so that we stop scanning at a newline. If - the match fails at the newline, later code breaks this loop. */ + /* If firstline is TRUE, the start of the match is constrained to the first + line of a multiline string. That is, the match must be before or at the first + newline. Implement this by temporarily adjusting end_subject so that we stop + scanning at a newline. If the match fails at the newline, later code breaks + this loop. */ if (firstline) { - USPTR t = start_match; -#ifdef SUPPORT_UTF8 - if (utf8) + PCRE_PUCHAR t = start_match; +#ifdef SUPPORT_UTF + if (utf) { while (t < md->end_subject && !IS_NEWLINE(t)) { t++; - while (t < end_subject && (*t & 0xc0) == 0x80) t++; + ACROSSCHAR(t < end_subject, *t, t++); } } else @@ -4710,168 +6774,225 @@ for(;;) end_subject = t; } - /* Now advance to a unique first byte if there is one. */ + /* There are some optimizations that avoid running the match if a known + starting point is not found, or if a known later character is not present. + However, there is an option that disables these, for testing and for ensuring + that all callouts do actually occur. The option can be set in the regex by + (*NO_START_OPT) or passed in match-time options. */ - if (first_byte >= 0) + if (((options | re->options) & PCRE_NO_START_OPTIMIZE) == 0) { - if (first_byte_caseless) - while (start_match < end_subject && md->lcc[*start_match] != first_byte) - start_match++; - else - while (start_match < end_subject && *start_match != first_byte) - start_match++; - } + /* Advance to a unique first char if there is one. */ - /* Or to just after a linebreak for a multiline match */ - - else if (startline) - { - if (start_match > md->start_subject + start_offset) + if (has_first_char) { -#ifdef SUPPORT_UTF8 - if (utf8) - { - while (start_match < end_subject && !WAS_NEWLINE(start_match)) - { + pcre_uchar smc; + + if (first_char != first_char2) + while (start_match < end_subject && + (smc = UCHAR21TEST(start_match)) != first_char && smc != first_char2) start_match++; - while(start_match < end_subject && (*start_match & 0xc0) == 0x80) - start_match++; - } - } else -#endif - while (start_match < end_subject && !WAS_NEWLINE(start_match)) - start_match++; - - /* If we have just passed a CR and the newline option is ANY or ANYCRLF, - and we are now at a LF, advance the match position by one more character. - */ - - if (start_match[-1] == '\r' && - (md->nltype == NLTYPE_ANY || md->nltype == NLTYPE_ANYCRLF) && - start_match < end_subject && - *start_match == '\n') - start_match++; + while (start_match < end_subject && UCHAR21TEST(start_match) != first_char) + start_match++; } - } - /* Or to a non-unique first byte after study */ + /* Or to just after a linebreak for a multiline match */ - else if (start_bits != NULL) - { - while (start_match < end_subject) + else if (startline) { - register unsigned int c = *start_match; - if ((start_bits[c/8] & (1 << (c&7))) == 0) start_match++; - else break; + if (start_match > md->start_subject + start_offset) + { +#ifdef SUPPORT_UTF + if (utf) + { + while (start_match < end_subject && !WAS_NEWLINE(start_match)) + { + start_match++; + ACROSSCHAR(start_match < end_subject, *start_match, + start_match++); + } + } + else +#endif + while (start_match < end_subject && !WAS_NEWLINE(start_match)) + start_match++; + + /* If we have just passed a CR and the newline option is ANY or ANYCRLF, + and we are now at a LF, advance the match position by one more character. + */ + + if (start_match[-1] == CHAR_CR && + (md->nltype == NLTYPE_ANY || md->nltype == NLTYPE_ANYCRLF) && + start_match < end_subject && + UCHAR21TEST(start_match) == CHAR_NL) + start_match++; + } } - } + + /* Or to a non-unique first byte after study */ + + else if (start_bits != NULL) + { + while (start_match < end_subject) + { + register pcre_uint32 c = UCHAR21TEST(start_match); +#ifndef COMPILE_PCRE8 + if (c > 255) c = 255; +#endif + if ((start_bits[c/8] & (1 << (c&7))) != 0) break; + start_match++; + } + } + } /* Starting optimizations */ /* Restore fudged end_subject */ end_subject = save_end_subject; -#ifdef DEBUG /* Sigh. Some compilers never learn. */ + /* The following two optimizations are disabled for partial matching or if + disabling is explicitly requested. */ + + if (((options | re->options) & PCRE_NO_START_OPTIMIZE) == 0 && !md->partial) + { + /* If the pattern was studied, a minimum subject length may be set. This is + a lower bound; no actual string of that length may actually match the + pattern. Although the value is, strictly, in characters, we treat it as + bytes to avoid spending too much time in this optimization. */ + + if (study != NULL && (study->flags & PCRE_STUDY_MINLEN) != 0 && + (pcre_uint32)(end_subject - start_match) < study->minlength) + { + rc = MATCH_NOMATCH; + break; + } + + /* If req_char is set, we know that that character must appear in the + subject for the match to succeed. If the first character is set, req_char + must be later in the subject; otherwise the test starts at the match point. + This optimization can save a huge amount of backtracking in patterns with + nested unlimited repeats that aren't going to match. Writing separate code + for cased/caseless versions makes it go faster, as does using an + autoincrement and backing off on a match. + + HOWEVER: when the subject string is very, very long, searching to its end + can take a long time, and give bad performance on quite ordinary patterns. + This showed up when somebody was matching something like /^\d+C/ on a + 32-megabyte string... so we don't do this when the string is sufficiently + long. */ + + if (has_req_char && end_subject - start_match < REQ_BYTE_MAX) + { + register PCRE_PUCHAR p = start_match + (has_first_char? 1:0); + + /* We don't need to repeat the search if we haven't yet reached the + place we found it at last time. */ + + if (p > req_char_ptr) + { + if (req_char != req_char2) + { + while (p < end_subject) + { + register pcre_uint32 pp = UCHAR21INCTEST(p); + if (pp == req_char || pp == req_char2) { p--; break; } + } + } + else + { + while (p < end_subject) + { + if (UCHAR21INCTEST(p) == req_char) { p--; break; } + } + } + + /* If we can't find the required character, break the matching loop, + forcing a match failure. */ + + if (p >= end_subject) + { + rc = MATCH_NOMATCH; + break; + } + + /* If we have found the required character, save the point where we + found it, so that we don't search again next time round the loop if + the start hasn't passed this character yet. */ + + req_char_ptr = p; + } + } + } + +#ifdef PCRE_DEBUG /* Sigh. Some compilers never learn. */ printf(">>>> Match against: "); pchars(start_match, end_subject - start_match, TRUE, md); printf("\n"); #endif - /* If req_byte is set, we know that that character must appear in the subject - for the match to succeed. If the first character is set, req_byte must be - later in the subject; otherwise the test starts at the match point. This - optimization can save a huge amount of backtracking in patterns with nested - unlimited repeats that aren't going to match. Writing separate code for - cased/caseless versions makes it go faster, as does using an autoincrement - and backing off on a match. - - HOWEVER: when the subject string is very, very long, searching to its end can - take a long time, and give bad performance on quite ordinary patterns. This - showed up when somebody was matching something like /^\d+C/ on a 32-megabyte - string... so we don't do this when the string is sufficiently long. - - ALSO: this processing is disabled when partial matching is requested. - */ - - if (req_byte >= 0 && - end_subject - start_match < REQ_BYTE_MAX && - !md->partial) - { - register USPTR p = start_match + ((first_byte >= 0)? 1 : 0); - - /* We don't need to repeat the search if we haven't yet reached the - place we found it at last time. */ - - if (p > req_byte_ptr) - { - if (req_byte_caseless) - { - while (p < end_subject) - { - register int pp = *p++; - if (pp == req_byte || pp == req_byte2) { p--; break; } - } - } - else - { - while (p < end_subject) - { - if (*p++ == req_byte) { p--; break; } - } - } - - /* If we can't find the required character, break the matching loop, - forcing a match failure. */ - - if (p >= end_subject) - { - rc = MATCH_NOMATCH; - break; - } - - /* If we have found the required character, save the point where we - found it, so that we don't search again next time round the loop if - the start hasn't passed this character yet. */ - - req_byte_ptr = p; - } - } - - /* OK, we can now run the match. */ + /* OK, we can now run the match. If "hitend" is set afterwards, remember the + first starting point for which a partial match was found. */ md->start_match_ptr = start_match; + md->start_used_ptr = start_match; md->match_call_count = 0; - rc = match(start_match, md->start_code, start_match, 2, md, ims, NULL, 0, 0); + md->match_function_type = 0; + md->end_offset_top = 0; + md->skip_arg_count = 0; + rc = match(start_match, md->start_code, start_match, 2, md, NULL, 0); + if (md->hitend && start_partial == NULL) + { + start_partial = md->start_used_ptr; + match_partial = start_match; + } switch(rc) { + /* If MATCH_SKIP_ARG reaches this level it means that a MARK that matched + the SKIP's arg was not found. In this circumstance, Perl ignores the SKIP + entirely. The only way we can do that is to re-do the match at the same + point, with a flag to force SKIP with an argument to be ignored. Just + treating this case as NOMATCH does not work because it does not check other + alternatives in patterns such as A(*SKIP:A)B|AC when the subject is AC. */ + + case MATCH_SKIP_ARG: + new_start_match = start_match; + md->ignore_skip_arg = md->skip_arg_count; + break; + + /* SKIP passes back the next starting point explicitly, but if it is no + greater than the match we have just done, treat it as NOMATCH. */ + + case MATCH_SKIP: + if (md->start_match_ptr > start_match) + { + new_start_match = md->start_match_ptr; + break; + } + /* Fall through */ + /* NOMATCH and PRUNE advance by one character. THEN at this level acts - exactly like PRUNE. */ + exactly like PRUNE. Unset ignore SKIP-with-argument. */ case MATCH_NOMATCH: case MATCH_PRUNE: case MATCH_THEN: + md->ignore_skip_arg = 0; new_start_match = start_match + 1; -#ifdef SUPPORT_UTF8 - if (utf8) - while(new_start_match < end_subject && (*new_start_match & 0xc0) == 0x80) - new_start_match++; +#ifdef SUPPORT_UTF + if (utf) + ACROSSCHAR(new_start_match < end_subject, *new_start_match, + new_start_match++); #endif break; - /* SKIP passes back the next starting point explicitly. */ - - case MATCH_SKIP: - new_start_match = md->start_match_ptr; - break; - /* COMMIT disables the bumpalong, but otherwise behaves as NOMATCH. */ case MATCH_COMMIT: rc = MATCH_NOMATCH; goto ENDLOOP; - /* Any other return is some kind of error. */ + /* Any other return is either a match, or some kind of error. */ default: goto ENDLOOP; @@ -4899,18 +7020,23 @@ for(;;) /* If we have just passed a CR and we are now at a LF, and the pattern does not contain any explicit matches for \r or \n, and the newline option is CRLF - or ANY or ANYCRLF, advance the match position by one more character. */ + or ANY or ANYCRLF, advance the match position by one more character. In + normal matching start_match will aways be greater than the first position at + this stage, but a failed *SKIP can cause a return at the same point, which is + why the first test exists. */ - if (start_match[-1] == '\r' && + if (start_match > (PCRE_PUCHAR)subject + start_offset && + start_match[-1] == CHAR_CR && start_match < end_subject && - *start_match == '\n' && + *start_match == CHAR_NL && (re->flags & PCRE_HASCRORLF) == 0 && (md->nltype == NLTYPE_ANY || md->nltype == NLTYPE_ANYCRLF || md->nllen == 2)) start_match++; - } /* End of for(;;) "bumpalong" loop */ + md->mark = NULL; /* Reset for start of next match attempt */ + } /* End of for(;;) "bumpalong" loop */ /* ==========================================================================*/ @@ -4934,25 +7060,46 @@ capturing parentheses than vector slots. */ ENDLOOP: -if (rc == MATCH_MATCH) +if (rc == MATCH_MATCH || rc == MATCH_ACCEPT) { if (using_temporary_offsets) { - if (offsetcount >= 4) + if (arg_offset_max >= 4) { memcpy(offsets + 2, md->offset_vector + 2, - (offsetcount - 2) * sizeof(int)); + (arg_offset_max - 2) * sizeof(int)); DPRINTF(("Copied offsets from temporary memory\n")); } - if (md->end_offset_top > offsetcount) md->offset_overflow = TRUE; + if (md->end_offset_top > arg_offset_max) md->capture_last |= OVFLBIT; DPRINTF(("Freeing temporary memory\n")); - (pcre_free)(md->offset_vector); + (PUBL(free))(md->offset_vector); } - /* Set the return code to the number of captured strings, or 0 if there are + /* Set the return code to the number of captured strings, or 0 if there were too many to fit into the vector. */ - rc = md->offset_overflow? 0 : md->end_offset_top/2; + rc = ((md->capture_last & OVFLBIT) != 0 && + md->end_offset_top >= arg_offset_max)? + 0 : md->end_offset_top/2; + + /* If there is space in the offset vector, set any unused pairs at the end of + the pattern to -1 for backwards compatibility. It is documented that this + happens. In earlier versions, the whole set of potential capturing offsets + was set to -1 each time round the loop, but this is handled differently now. + "Gaps" are set to -1 dynamically instead (this fixes a bug). Thus, it is only + those at the end that need unsetting here. We can't just unset them all at + the start of the whole thing because they may get set in one branch that is + not the final matching branch. */ + + if (md->end_offset_top/2 <= re->top_bracket && offsets != NULL) + { + register int *iptr, *iend; + int resetcount = 2 + re->top_bracket * 2; + if (resetcount > offsetcount) resetcount = offsetcount; + iptr = offsets + md->end_offset_top; + iend = offsets + resetcount; + while (iptr < iend) *iptr++ = -1; + } /* If there is space, set up the whole thing as substring 0. The value of md->start_match_ptr might be modified if \K was encountered on the success @@ -4960,11 +7107,18 @@ if (rc == MATCH_MATCH) if (offsetcount < 2) rc = 0; else { - offsets[0] = md->start_match_ptr - md->start_subject; - offsets[1] = md->end_match_ptr - md->start_subject; + offsets[0] = (int)(md->start_match_ptr - md->start_subject); + offsets[1] = (int)(md->end_match_ptr - md->start_subject); } + /* Return MARK data if requested */ + + if (extra_data != NULL && (extra_data->flags & PCRE_EXTRA_MARK) != 0) + *(extra_data->mark) = (pcre_uchar *)md->mark; DPRINTF((">>>> returning %d\n", rc)); +#ifdef NO_RECURSE + release_match_heapframes(&frame_zero); +#endif return rc; } @@ -4974,24 +7128,52 @@ attempt has failed at all permitted starting positions. */ if (using_temporary_offsets) { DPRINTF(("Freeing temporary memory\n")); - (pcre_free)(md->offset_vector); + (PUBL(free))(md->offset_vector); } -if (rc != MATCH_NOMATCH) +/* For anything other than nomatch or partial match, just return the code. */ + +if (rc != MATCH_NOMATCH && rc != PCRE_ERROR_PARTIAL) { DPRINTF((">>>> error: returning %d\n", rc)); +#ifdef NO_RECURSE + release_match_heapframes(&frame_zero); +#endif return rc; } -else if (md->partial && md->hitend) + +/* Handle partial matches - disable any mark data */ + +if (match_partial != NULL) { DPRINTF((">>>> returning PCRE_ERROR_PARTIAL\n")); - return PCRE_ERROR_PARTIAL; + md->mark = NULL; + if (offsetcount > 1) + { + offsets[0] = (int)(start_partial - (PCRE_PUCHAR)subject); + offsets[1] = (int)(end_subject - (PCRE_PUCHAR)subject); + if (offsetcount > 2) + offsets[2] = (int)(match_partial - (PCRE_PUCHAR)subject); + } + rc = PCRE_ERROR_PARTIAL; } + +/* This is the classic nomatch case */ + else { DPRINTF((">>>> returning PCRE_ERROR_NOMATCH\n")); - return PCRE_ERROR_NOMATCH; + rc = PCRE_ERROR_NOMATCH; } + +/* Return the MARK data if it has been requested. */ + +if (extra_data != NULL && (extra_data->flags & PCRE_EXTRA_MARK) != 0) + *(extra_data->mark) = (pcre_uchar *)md->nomatch_mark; +#ifdef NO_RECURSE + release_match_heapframes(&frame_zero); +#endif +return rc; } /* End of pcre_exec.c */ diff --git a/Foundation/src/pcre_fullinfo.c b/Foundation/src/pcre_fullinfo.c index f309705c0..5ad19251d 100644 --- a/Foundation/src/pcre_fullinfo.c +++ b/Foundation/src/pcre_fullinfo.c @@ -6,7 +6,7 @@ and semantics are as close as possible to those of the Perl 5 language. Written by Philip Hazel - Copyright (c) 1997-2008 University of Cambridge + Copyright (c) 1997-2013 University of Cambridge ----------------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without @@ -62,13 +62,21 @@ Arguments: Returns: 0 if data returned, negative on error */ +#if defined COMPILE_PCRE8 PCRE_EXP_DEFN int PCRE_CALL_CONVENTION -pcre_fullinfo(const pcre *argument_re, const pcre_extra *extra_data, int what, - void *where) +pcre_fullinfo(const pcre *argument_re, const pcre_extra *extra_data, + int what, void *where) +#elif defined COMPILE_PCRE16 +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION +pcre16_fullinfo(const pcre16 *argument_re, const pcre16_extra *extra_data, + int what, void *where) +#elif defined COMPILE_PCRE32 +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION +pcre32_fullinfo(const pcre32 *argument_re, const pcre32_extra *extra_data, + int what, void *where) +#endif { -real_pcre internal_re; -pcre_study_data internal_study; -const real_pcre *re = (const real_pcre *)argument_re; +const REAL_PCRE *re = (const REAL_PCRE *)argument_re; const pcre_study_data *study = NULL; if (re == NULL || where == NULL) return PCRE_ERROR_NULL; @@ -76,17 +84,23 @@ if (re == NULL || where == NULL) return PCRE_ERROR_NULL; if (extra_data != NULL && (extra_data->flags & PCRE_EXTRA_STUDY_DATA) != 0) study = (const pcre_study_data *)extra_data->study_data; +/* Check that the first field in the block is the magic number. If it is not, +return with PCRE_ERROR_BADMAGIC. However, if the magic number is equal to +REVERSED_MAGIC_NUMBER we return with PCRE_ERROR_BADENDIANNESS, which +means that the pattern is likely compiled with different endianness. */ + if (re->magic_number != MAGIC_NUMBER) - { - re = _pcre_try_flipped(re, &internal_re, study, &internal_study); - if (re == NULL) return PCRE_ERROR_BADMAGIC; - if (study != NULL) study = &internal_study; - } + return re->magic_number == REVERSED_MAGIC_NUMBER? + PCRE_ERROR_BADENDIANNESS:PCRE_ERROR_BADMAGIC; + +/* Check that this pattern was compiled in the correct bit mode */ + +if ((re->flags & PCRE_MODE) == 0) return PCRE_ERROR_BADMODE; switch (what) { case PCRE_INFO_OPTIONS: - *((unsigned long int *)where) = re->options & PUBLIC_OPTIONS; + *((unsigned long int *)where) = re->options & PUBLIC_COMPILE_OPTIONS; break; case PCRE_INFO_SIZE: @@ -97,6 +111,18 @@ switch (what) *((size_t *)where) = (study == NULL)? 0 : study->size; break; + case PCRE_INFO_JITSIZE: +#ifdef SUPPORT_JIT + *((size_t *)where) = + (extra_data != NULL && + (extra_data->flags & PCRE_EXTRA_EXECUTABLE_JIT) != 0 && + extra_data->executable_jit != NULL)? + PRIV(jit_get_size)(extra_data->executable_jit) : 0; +#else + *((size_t *)where) = 0; +#endif + break; + case PCRE_INFO_CAPTURECOUNT: *((int *)where) = re->top_bracket; break; @@ -107,24 +133,57 @@ switch (what) case PCRE_INFO_FIRSTBYTE: *((int *)where) = - ((re->flags & PCRE_FIRSTSET) != 0)? re->first_byte : + ((re->flags & PCRE_FIRSTSET) != 0)? (int)re->first_char : ((re->flags & PCRE_STARTLINE) != 0)? -1 : -2; break; + case PCRE_INFO_FIRSTCHARACTER: + *((pcre_uint32 *)where) = + (re->flags & PCRE_FIRSTSET) != 0 ? re->first_char : 0; + break; + + case PCRE_INFO_FIRSTCHARACTERFLAGS: + *((int *)where) = + ((re->flags & PCRE_FIRSTSET) != 0) ? 1 : + ((re->flags & PCRE_STARTLINE) != 0) ? 2 : 0; + break; + /* Make sure we pass back the pointer to the bit vector in the external block, not the internal copy (with flipped integer fields). */ case PCRE_INFO_FIRSTTABLE: - *((const uschar **)where) = - (study != NULL && (study->options & PCRE_STUDY_MAPPED) != 0)? + *((const pcre_uint8 **)where) = + (study != NULL && (study->flags & PCRE_STUDY_MAPPED) != 0)? ((const pcre_study_data *)extra_data->study_data)->start_bits : NULL; break; + case PCRE_INFO_MINLENGTH: + *((int *)where) = + (study != NULL && (study->flags & PCRE_STUDY_MINLEN) != 0)? + (int)(study->minlength) : -1; + break; + + case PCRE_INFO_JIT: + *((int *)where) = extra_data != NULL && + (extra_data->flags & PCRE_EXTRA_EXECUTABLE_JIT) != 0 && + extra_data->executable_jit != NULL; + break; + case PCRE_INFO_LASTLITERAL: *((int *)where) = - ((re->flags & PCRE_REQCHSET) != 0)? re->req_byte : -1; + ((re->flags & PCRE_REQCHSET) != 0)? (int)re->req_char : -1; break; + case PCRE_INFO_REQUIREDCHAR: + *((pcre_uint32 *)where) = + ((re->flags & PCRE_REQCHSET) != 0) ? re->req_char : 0; + break; + + case PCRE_INFO_REQUIREDCHARFLAGS: + *((int *)where) = + ((re->flags & PCRE_REQCHSET) != 0); + break; + case PCRE_INFO_NAMEENTRYSIZE: *((int *)where) = re->name_entry_size; break; @@ -134,13 +193,16 @@ switch (what) break; case PCRE_INFO_NAMETABLE: - *((const uschar **)where) = (const uschar *)re + re->name_table_offset; + *((const pcre_uchar **)where) = (const pcre_uchar *)re + re->name_table_offset; break; case PCRE_INFO_DEFAULT_TABLES: - *((const uschar **)where) = (const uschar *)(_pcre_default_tables); + *((const pcre_uint8 **)where) = (const pcre_uint8 *)(PRIV(default_tables)); break; + /* From release 8.00 this will always return TRUE because NOPARTIAL is + no longer ever set (the restrictions have been removed). */ + case PCRE_INFO_OKPARTIAL: *((int *)where) = (re->flags & PCRE_NOPARTIAL) == 0; break; @@ -153,6 +215,24 @@ switch (what) *((int *)where) = (re->flags & PCRE_HASCRORLF) != 0; break; + case PCRE_INFO_MAXLOOKBEHIND: + *((int *)where) = re->max_lookbehind; + break; + + case PCRE_INFO_MATCHLIMIT: + if ((re->flags & PCRE_MLSET) == 0) return PCRE_ERROR_UNSET; + *((pcre_uint32 *)where) = re->limit_match; + break; + + case PCRE_INFO_RECURSIONLIMIT: + if ((re->flags & PCRE_RLSET) == 0) return PCRE_ERROR_UNSET; + *((pcre_uint32 *)where) = re->limit_recursion; + break; + + case PCRE_INFO_MATCH_EMPTY: + *((int *)where) = (re->flags & PCRE_MATCH_EMPTY) != 0; + break; + default: return PCRE_ERROR_BADOPTION; } diff --git a/Foundation/src/pcre_get.c b/Foundation/src/pcre_get.c new file mode 100644 index 000000000..b0f0bc8a0 --- /dev/null +++ b/Foundation/src/pcre_get.c @@ -0,0 +1,659 @@ +/************************************************* +* Perl-Compatible Regular Expressions * +*************************************************/ + +/* PCRE is a library of functions to support regular expressions whose syntax +and semantics are as close as possible to those of the Perl 5 language. + + Written by Philip Hazel + Copyright (c) 1997-2012 University of Cambridge + +----------------------------------------------------------------------------- +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + * Neither the name of the University of Cambridge nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +----------------------------------------------------------------------------- +*/ + + +/* This module contains some convenience functions for extracting substrings +from the subject string after a regex match has succeeded. The original idea +for these functions came from Scott Wimer. */ + + +#include "pcre_config.h" +#include "pcre_internal.h" + + +/************************************************* +* Find number for named string * +*************************************************/ + +/* This function is used by the get_first_set() function below, as well +as being generally available. It assumes that names are unique. + +Arguments: + code the compiled regex + stringname the name whose number is required + +Returns: the number of the named parentheses, or a negative number + (PCRE_ERROR_NOSUBSTRING) if not found +*/ + +#if defined COMPILE_PCRE8 +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION +pcre_get_stringnumber(const pcre *code, const char *stringname) +#elif defined COMPILE_PCRE16 +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION +pcre16_get_stringnumber(const pcre16 *code, PCRE_SPTR16 stringname) +#elif defined COMPILE_PCRE32 +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION +pcre32_get_stringnumber(const pcre32 *code, PCRE_SPTR32 stringname) +#endif +{ +int rc; +int entrysize; +int top, bot; +pcre_uchar *nametable; + +#ifdef COMPILE_PCRE8 +if ((rc = pcre_fullinfo(code, NULL, PCRE_INFO_NAMECOUNT, &top)) != 0) + return rc; +if (top <= 0) return PCRE_ERROR_NOSUBSTRING; + +if ((rc = pcre_fullinfo(code, NULL, PCRE_INFO_NAMEENTRYSIZE, &entrysize)) != 0) + return rc; +if ((rc = pcre_fullinfo(code, NULL, PCRE_INFO_NAMETABLE, &nametable)) != 0) + return rc; +#endif +#ifdef COMPILE_PCRE16 +if ((rc = pcre16_fullinfo(code, NULL, PCRE_INFO_NAMECOUNT, &top)) != 0) + return rc; +if (top <= 0) return PCRE_ERROR_NOSUBSTRING; + +if ((rc = pcre16_fullinfo(code, NULL, PCRE_INFO_NAMEENTRYSIZE, &entrysize)) != 0) + return rc; +if ((rc = pcre16_fullinfo(code, NULL, PCRE_INFO_NAMETABLE, &nametable)) != 0) + return rc; +#endif +#ifdef COMPILE_PCRE32 +if ((rc = pcre32_fullinfo(code, NULL, PCRE_INFO_NAMECOUNT, &top)) != 0) + return rc; +if (top <= 0) return PCRE_ERROR_NOSUBSTRING; + +if ((rc = pcre32_fullinfo(code, NULL, PCRE_INFO_NAMEENTRYSIZE, &entrysize)) != 0) + return rc; +if ((rc = pcre32_fullinfo(code, NULL, PCRE_INFO_NAMETABLE, &nametable)) != 0) + return rc; +#endif + +bot = 0; +while (top > bot) + { + int mid = (top + bot) / 2; + pcre_uchar *entry = nametable + entrysize*mid; + int c = STRCMP_UC_UC((pcre_uchar *)stringname, + (pcre_uchar *)(entry + IMM2_SIZE)); + if (c == 0) return GET2(entry, 0); + if (c > 0) bot = mid + 1; else top = mid; + } + +return PCRE_ERROR_NOSUBSTRING; +} + + + +/************************************************* +* Find (multiple) entries for named string * +*************************************************/ + +/* This is used by the get_first_set() function below, as well as being +generally available. It is used when duplicated names are permitted. + +Arguments: + code the compiled regex + stringname the name whose entries required + firstptr where to put the pointer to the first entry + lastptr where to put the pointer to the last entry + +Returns: the length of each entry, or a negative number + (PCRE_ERROR_NOSUBSTRING) if not found +*/ + +#if defined COMPILE_PCRE8 +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION +pcre_get_stringtable_entries(const pcre *code, const char *stringname, + char **firstptr, char **lastptr) +#elif defined COMPILE_PCRE16 +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION +pcre16_get_stringtable_entries(const pcre16 *code, PCRE_SPTR16 stringname, + PCRE_UCHAR16 **firstptr, PCRE_UCHAR16 **lastptr) +#elif defined COMPILE_PCRE32 +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION +pcre32_get_stringtable_entries(const pcre32 *code, PCRE_SPTR32 stringname, + PCRE_UCHAR32 **firstptr, PCRE_UCHAR32 **lastptr) +#endif +{ +int rc; +int entrysize; +int top, bot; +pcre_uchar *nametable, *lastentry; + +#ifdef COMPILE_PCRE8 +if ((rc = pcre_fullinfo(code, NULL, PCRE_INFO_NAMECOUNT, &top)) != 0) + return rc; +if (top <= 0) return PCRE_ERROR_NOSUBSTRING; + +if ((rc = pcre_fullinfo(code, NULL, PCRE_INFO_NAMEENTRYSIZE, &entrysize)) != 0) + return rc; +if ((rc = pcre_fullinfo(code, NULL, PCRE_INFO_NAMETABLE, &nametable)) != 0) + return rc; +#endif +#ifdef COMPILE_PCRE16 +if ((rc = pcre16_fullinfo(code, NULL, PCRE_INFO_NAMECOUNT, &top)) != 0) + return rc; +if (top <= 0) return PCRE_ERROR_NOSUBSTRING; + +if ((rc = pcre16_fullinfo(code, NULL, PCRE_INFO_NAMEENTRYSIZE, &entrysize)) != 0) + return rc; +if ((rc = pcre16_fullinfo(code, NULL, PCRE_INFO_NAMETABLE, &nametable)) != 0) + return rc; +#endif +#ifdef COMPILE_PCRE32 +if ((rc = pcre32_fullinfo(code, NULL, PCRE_INFO_NAMECOUNT, &top)) != 0) + return rc; +if (top <= 0) return PCRE_ERROR_NOSUBSTRING; + +if ((rc = pcre32_fullinfo(code, NULL, PCRE_INFO_NAMEENTRYSIZE, &entrysize)) != 0) + return rc; +if ((rc = pcre32_fullinfo(code, NULL, PCRE_INFO_NAMETABLE, &nametable)) != 0) + return rc; +#endif + +lastentry = nametable + entrysize * (top - 1); +bot = 0; +while (top > bot) + { + int mid = (top + bot) / 2; + pcre_uchar *entry = nametable + entrysize*mid; + int c = STRCMP_UC_UC((pcre_uchar *)stringname, + (pcre_uchar *)(entry + IMM2_SIZE)); + if (c == 0) + { + pcre_uchar *first = entry; + pcre_uchar *last = entry; + while (first > nametable) + { + if (STRCMP_UC_UC((pcre_uchar *)stringname, + (pcre_uchar *)(first - entrysize + IMM2_SIZE)) != 0) break; + first -= entrysize; + } + while (last < lastentry) + { + if (STRCMP_UC_UC((pcre_uchar *)stringname, + (pcre_uchar *)(last + entrysize + IMM2_SIZE)) != 0) break; + last += entrysize; + } +#if defined COMPILE_PCRE8 + *firstptr = (char *)first; + *lastptr = (char *)last; +#elif defined COMPILE_PCRE16 + *firstptr = (PCRE_UCHAR16 *)first; + *lastptr = (PCRE_UCHAR16 *)last; +#elif defined COMPILE_PCRE32 + *firstptr = (PCRE_UCHAR32 *)first; + *lastptr = (PCRE_UCHAR32 *)last; +#endif + return entrysize; + } + if (c > 0) bot = mid + 1; else top = mid; + } + +return PCRE_ERROR_NOSUBSTRING; +} + + + +/************************************************* +* Find first set of multiple named strings * +*************************************************/ + +/* This function allows for duplicate names in the table of named substrings. +It returns the number of the first one that was set in a pattern match. + +Arguments: + code the compiled regex + stringname the name of the capturing substring + ovector the vector of matched substrings + +Returns: the number of the first that is set, + or the number of the last one if none are set, + or a negative number on error +*/ + +#if defined COMPILE_PCRE8 +static int +get_first_set(const pcre *code, const char *stringname, int *ovector) +#elif defined COMPILE_PCRE16 +static int +get_first_set(const pcre16 *code, PCRE_SPTR16 stringname, int *ovector) +#elif defined COMPILE_PCRE32 +static int +get_first_set(const pcre32 *code, PCRE_SPTR32 stringname, int *ovector) +#endif +{ +const REAL_PCRE *re = (const REAL_PCRE *)code; +int entrysize; +pcre_uchar *entry; +#if defined COMPILE_PCRE8 +char *first, *last; +#elif defined COMPILE_PCRE16 +PCRE_UCHAR16 *first, *last; +#elif defined COMPILE_PCRE32 +PCRE_UCHAR32 *first, *last; +#endif + +#if defined COMPILE_PCRE8 +if ((re->options & PCRE_DUPNAMES) == 0 && (re->flags & PCRE_JCHANGED) == 0) + return pcre_get_stringnumber(code, stringname); +entrysize = pcre_get_stringtable_entries(code, stringname, &first, &last); +#elif defined COMPILE_PCRE16 +if ((re->options & PCRE_DUPNAMES) == 0 && (re->flags & PCRE_JCHANGED) == 0) + return pcre16_get_stringnumber(code, stringname); +entrysize = pcre16_get_stringtable_entries(code, stringname, &first, &last); +#elif defined COMPILE_PCRE32 +if ((re->options & PCRE_DUPNAMES) == 0 && (re->flags & PCRE_JCHANGED) == 0) + return pcre32_get_stringnumber(code, stringname); +entrysize = pcre32_get_stringtable_entries(code, stringname, &first, &last); +#endif +if (entrysize <= 0) return entrysize; +for (entry = (pcre_uchar *)first; entry <= (pcre_uchar *)last; entry += entrysize) + { + int n = GET2(entry, 0); + if (ovector[n*2] >= 0) return n; + } +return GET2(entry, 0); +} + + + + +/************************************************* +* Copy captured string to given buffer * +*************************************************/ + +/* This function copies a single captured substring into a given buffer. +Note that we use memcpy() rather than strncpy() in case there are binary zeros +in the string. + +Arguments: + subject the subject string that was matched + ovector pointer to the offsets table + stringcount the number of substrings that were captured + (i.e. the yield of the pcre_exec call, unless + that was zero, in which case it should be 1/3 + of the offset table size) + stringnumber the number of the required substring + buffer where to put the substring + size the size of the buffer + +Returns: if successful: + the length of the copied string, not including the zero + that is put on the end; can be zero + if not successful: + PCRE_ERROR_NOMEMORY (-6) buffer too small + PCRE_ERROR_NOSUBSTRING (-7) no such captured substring +*/ + +#if defined COMPILE_PCRE8 +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION +pcre_copy_substring(const char *subject, int *ovector, int stringcount, + int stringnumber, char *buffer, int size) +#elif defined COMPILE_PCRE16 +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION +pcre16_copy_substring(PCRE_SPTR16 subject, int *ovector, int stringcount, + int stringnumber, PCRE_UCHAR16 *buffer, int size) +#elif defined COMPILE_PCRE32 +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION +pcre32_copy_substring(PCRE_SPTR32 subject, int *ovector, int stringcount, + int stringnumber, PCRE_UCHAR32 *buffer, int size) +#endif +{ +int yield; +if (stringnumber < 0 || stringnumber >= stringcount) + return PCRE_ERROR_NOSUBSTRING; +stringnumber *= 2; +yield = ovector[stringnumber+1] - ovector[stringnumber]; +if (size < yield + 1) return PCRE_ERROR_NOMEMORY; +memcpy(buffer, subject + ovector[stringnumber], IN_UCHARS(yield)); +buffer[yield] = 0; +return yield; +} + + + +/************************************************* +* Copy named captured string to given buffer * +*************************************************/ + +/* This function copies a single captured substring into a given buffer, +identifying it by name. If the regex permits duplicate names, the first +substring that is set is chosen. + +Arguments: + code the compiled regex + subject the subject string that was matched + ovector pointer to the offsets table + stringcount the number of substrings that were captured + (i.e. the yield of the pcre_exec call, unless + that was zero, in which case it should be 1/3 + of the offset table size) + stringname the name of the required substring + buffer where to put the substring + size the size of the buffer + +Returns: if successful: + the length of the copied string, not including the zero + that is put on the end; can be zero + if not successful: + PCRE_ERROR_NOMEMORY (-6) buffer too small + PCRE_ERROR_NOSUBSTRING (-7) no such captured substring +*/ + +#if defined COMPILE_PCRE8 +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION +pcre_copy_named_substring(const pcre *code, const char *subject, + int *ovector, int stringcount, const char *stringname, + char *buffer, int size) +#elif defined COMPILE_PCRE16 +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION +pcre16_copy_named_substring(const pcre16 *code, PCRE_SPTR16 subject, + int *ovector, int stringcount, PCRE_SPTR16 stringname, + PCRE_UCHAR16 *buffer, int size) +#elif defined COMPILE_PCRE32 +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION +pcre32_copy_named_substring(const pcre32 *code, PCRE_SPTR32 subject, + int *ovector, int stringcount, PCRE_SPTR32 stringname, + PCRE_UCHAR32 *buffer, int size) +#endif +{ +int n = get_first_set(code, stringname, ovector); +if (n <= 0) return n; +#if defined COMPILE_PCRE8 +return pcre_copy_substring(subject, ovector, stringcount, n, buffer, size); +#elif defined COMPILE_PCRE16 +return pcre16_copy_substring(subject, ovector, stringcount, n, buffer, size); +#elif defined COMPILE_PCRE32 +return pcre32_copy_substring(subject, ovector, stringcount, n, buffer, size); +#endif +} + + + +/************************************************* +* Copy all captured strings to new store * +*************************************************/ + +/* This function gets one chunk of store and builds a list of pointers and all +of the captured substrings in it. A NULL pointer is put on the end of the list. + +Arguments: + subject the subject string that was matched + ovector pointer to the offsets table + stringcount the number of substrings that were captured + (i.e. the yield of the pcre_exec call, unless + that was zero, in which case it should be 1/3 + of the offset table size) + listptr set to point to the list of pointers + +Returns: if successful: 0 + if not successful: + PCRE_ERROR_NOMEMORY (-6) failed to get store +*/ + +#if defined COMPILE_PCRE8 +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION +pcre_get_substring_list(const char *subject, int *ovector, int stringcount, + const char ***listptr) +#elif defined COMPILE_PCRE16 +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION +pcre16_get_substring_list(PCRE_SPTR16 subject, int *ovector, int stringcount, + PCRE_SPTR16 **listptr) +#elif defined COMPILE_PCRE32 +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION +pcre32_get_substring_list(PCRE_SPTR32 subject, int *ovector, int stringcount, + PCRE_SPTR32 **listptr) +#endif +{ +int i; +int size = sizeof(pcre_uchar *); +int double_count = stringcount * 2; +pcre_uchar **stringlist; +pcre_uchar *p; + +for (i = 0; i < double_count; i += 2) + size += sizeof(pcre_uchar *) + IN_UCHARS(ovector[i+1] - ovector[i] + 1); + +stringlist = (pcre_uchar **)(PUBL(malloc))(size); +if (stringlist == NULL) return PCRE_ERROR_NOMEMORY; + +#if defined COMPILE_PCRE8 +*listptr = (const char **)stringlist; +#elif defined COMPILE_PCRE16 +*listptr = (PCRE_SPTR16 *)stringlist; +#elif defined COMPILE_PCRE32 +*listptr = (PCRE_SPTR32 *)stringlist; +#endif +p = (pcre_uchar *)(stringlist + stringcount + 1); + +for (i = 0; i < double_count; i += 2) + { + int len = ovector[i+1] - ovector[i]; + memcpy(p, subject + ovector[i], IN_UCHARS(len)); + *stringlist++ = p; + p += len; + *p++ = 0; + } + +*stringlist = NULL; +return 0; +} + + + +/************************************************* +* Free store obtained by get_substring_list * +*************************************************/ + +/* This function exists for the benefit of people calling PCRE from non-C +programs that can call its functions, but not free() or (PUBL(free))() +directly. + +Argument: the result of a previous pcre_get_substring_list() +Returns: nothing +*/ + +#if defined COMPILE_PCRE8 +PCRE_EXP_DEFN void PCRE_CALL_CONVENTION +pcre_free_substring_list(const char **pointer) +#elif defined COMPILE_PCRE16 +PCRE_EXP_DEFN void PCRE_CALL_CONVENTION +pcre16_free_substring_list(PCRE_SPTR16 *pointer) +#elif defined COMPILE_PCRE32 +PCRE_EXP_DEFN void PCRE_CALL_CONVENTION +pcre32_free_substring_list(PCRE_SPTR32 *pointer) +#endif +{ +(PUBL(free))((void *)pointer); +} + + + +/************************************************* +* Copy captured string to new store * +*************************************************/ + +/* This function copies a single captured substring into a piece of new +store + +Arguments: + subject the subject string that was matched + ovector pointer to the offsets table + stringcount the number of substrings that were captured + (i.e. the yield of the pcre_exec call, unless + that was zero, in which case it should be 1/3 + of the offset table size) + stringnumber the number of the required substring + stringptr where to put a pointer to the substring + +Returns: if successful: + the length of the string, not including the zero that + is put on the end; can be zero + if not successful: + PCRE_ERROR_NOMEMORY (-6) failed to get store + PCRE_ERROR_NOSUBSTRING (-7) substring not present +*/ + +#if defined COMPILE_PCRE8 +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION +pcre_get_substring(const char *subject, int *ovector, int stringcount, + int stringnumber, const char **stringptr) +#elif defined COMPILE_PCRE16 +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION +pcre16_get_substring(PCRE_SPTR16 subject, int *ovector, int stringcount, + int stringnumber, PCRE_SPTR16 *stringptr) +#elif defined COMPILE_PCRE32 +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION +pcre32_get_substring(PCRE_SPTR32 subject, int *ovector, int stringcount, + int stringnumber, PCRE_SPTR32 *stringptr) +#endif +{ +int yield; +pcre_uchar *substring; +if (stringnumber < 0 || stringnumber >= stringcount) + return PCRE_ERROR_NOSUBSTRING; +stringnumber *= 2; +yield = ovector[stringnumber+1] - ovector[stringnumber]; +substring = (pcre_uchar *)(PUBL(malloc))(IN_UCHARS(yield + 1)); +if (substring == NULL) return PCRE_ERROR_NOMEMORY; +memcpy(substring, subject + ovector[stringnumber], IN_UCHARS(yield)); +substring[yield] = 0; +#if defined COMPILE_PCRE8 +*stringptr = (const char *)substring; +#elif defined COMPILE_PCRE16 +*stringptr = (PCRE_SPTR16)substring; +#elif defined COMPILE_PCRE32 +*stringptr = (PCRE_SPTR32)substring; +#endif +return yield; +} + + + +/************************************************* +* Copy named captured string to new store * +*************************************************/ + +/* This function copies a single captured substring, identified by name, into +new store. If the regex permits duplicate names, the first substring that is +set is chosen. + +Arguments: + code the compiled regex + subject the subject string that was matched + ovector pointer to the offsets table + stringcount the number of substrings that were captured + (i.e. the yield of the pcre_exec call, unless + that was zero, in which case it should be 1/3 + of the offset table size) + stringname the name of the required substring + stringptr where to put the pointer + +Returns: if successful: + the length of the copied string, not including the zero + that is put on the end; can be zero + if not successful: + PCRE_ERROR_NOMEMORY (-6) couldn't get memory + PCRE_ERROR_NOSUBSTRING (-7) no such captured substring +*/ + +#if defined COMPILE_PCRE8 +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION +pcre_get_named_substring(const pcre *code, const char *subject, + int *ovector, int stringcount, const char *stringname, + const char **stringptr) +#elif defined COMPILE_PCRE16 +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION +pcre16_get_named_substring(const pcre16 *code, PCRE_SPTR16 subject, + int *ovector, int stringcount, PCRE_SPTR16 stringname, + PCRE_SPTR16 *stringptr) +#elif defined COMPILE_PCRE32 +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION +pcre32_get_named_substring(const pcre32 *code, PCRE_SPTR32 subject, + int *ovector, int stringcount, PCRE_SPTR32 stringname, + PCRE_SPTR32 *stringptr) +#endif +{ +int n = get_first_set(code, stringname, ovector); +if (n <= 0) return n; +#if defined COMPILE_PCRE8 +return pcre_get_substring(subject, ovector, stringcount, n, stringptr); +#elif defined COMPILE_PCRE16 +return pcre16_get_substring(subject, ovector, stringcount, n, stringptr); +#elif defined COMPILE_PCRE32 +return pcre32_get_substring(subject, ovector, stringcount, n, stringptr); +#endif +} + + + + +/************************************************* +* Free store obtained by get_substring * +*************************************************/ + +/* This function exists for the benefit of people calling PCRE from non-C +programs that can call its functions, but not free() or (PUBL(free))() +directly. + +Argument: the result of a previous pcre_get_substring() +Returns: nothing +*/ + +#if defined COMPILE_PCRE8 +PCRE_EXP_DEFN void PCRE_CALL_CONVENTION +pcre_free_substring(const char *pointer) +#elif defined COMPILE_PCRE16 +PCRE_EXP_DEFN void PCRE_CALL_CONVENTION +pcre16_free_substring(PCRE_SPTR16 pointer) +#elif defined COMPILE_PCRE32 +PCRE_EXP_DEFN void PCRE_CALL_CONVENTION +pcre32_free_substring(PCRE_SPTR32 pointer) +#endif +{ +(PUBL(free))((void *)pointer); +} + +/* End of pcre_get.c */ diff --git a/Foundation/src/pcre_globals.c b/Foundation/src/pcre_globals.c index fb496ca51..9b2329a32 100644 --- a/Foundation/src/pcre_globals.c +++ b/Foundation/src/pcre_globals.c @@ -6,7 +6,7 @@ and semantics are as close as possible to those of the Perl 5 language. Written by Philip Hazel - Copyright (c) 1997-2008 University of Cambridge + Copyright (c) 1997-2014 University of Cambridge ----------------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without @@ -43,18 +43,41 @@ PCRE is thread-clean and doesn't use any global variables in the normal sense. However, it calls memory allocation and freeing functions via the four indirections below, and it can optionally do callouts, using the fifth indirection. These values can be changed by the caller, but are shared between -all threads. However, when compiling for Virtual Pascal, things are done -differently, and global variables are not used (see pcre.in). */ +all threads. + +For MS Visual Studio and Symbian OS, there are problems in initializing these +variables to non-local functions. In these cases, therefore, an indirection via +a local function is used. + +Also, when compiling for Virtual Pascal, things are done differently, and +global variables are not used. */ #include "pcre_config.h" #include "pcre_internal.h" -#ifndef VPCOMPAT -PCRE_EXP_DATA_DEFN void *(*pcre_malloc)(size_t) = malloc; -PCRE_EXP_DATA_DEFN void (*pcre_free)(void *) = free; -PCRE_EXP_DATA_DEFN void *(*pcre_stack_malloc)(size_t) = malloc; -PCRE_EXP_DATA_DEFN void (*pcre_stack_free)(void *) = free; -PCRE_EXP_DATA_DEFN int (*pcre_callout)(pcre_callout_block *) = NULL; +#if defined _MSC_VER || defined __SYMBIAN32__ +static void* LocalPcreMalloc(size_t aSize) + { + return malloc(aSize); + } +static void LocalPcreFree(void* aPtr) + { + free(aPtr); + } +PCRE_EXP_DATA_DEFN void *(*PUBL(malloc))(size_t) = LocalPcreMalloc; +PCRE_EXP_DATA_DEFN void (*PUBL(free))(void *) = LocalPcreFree; +PCRE_EXP_DATA_DEFN void *(*PUBL(stack_malloc))(size_t) = LocalPcreMalloc; +PCRE_EXP_DATA_DEFN void (*PUBL(stack_free))(void *) = LocalPcreFree; +PCRE_EXP_DATA_DEFN int (*PUBL(callout))(PUBL(callout_block) *) = NULL; +PCRE_EXP_DATA_DEFN int (*PUBL(stack_guard))(void) = NULL; + +#elif !defined VPCOMPAT +PCRE_EXP_DATA_DEFN void *(*PUBL(malloc))(size_t) = malloc; +PCRE_EXP_DATA_DEFN void (*PUBL(free))(void *) = free; +PCRE_EXP_DATA_DEFN void *(*PUBL(stack_malloc))(size_t) = malloc; +PCRE_EXP_DATA_DEFN void (*PUBL(stack_free))(void *) = free; +PCRE_EXP_DATA_DEFN int (*PUBL(callout))(PUBL(callout_block) *) = NULL; +PCRE_EXP_DATA_DEFN int (*PUBL(stack_guard))(void) = NULL; #endif /* End of pcre_globals.c */ diff --git a/Foundation/src/pcre_internal.h b/Foundation/src/pcre_internal.h index ffff4e36d..f3e69fcdc 100644 --- a/Foundation/src/pcre_internal.h +++ b/Foundation/src/pcre_internal.h @@ -7,7 +7,7 @@ and semantics are as close as possible to those of the Perl 5 language. Written by Philip Hazel - Copyright (c) 1997-2008 University of Cambridge + Copyright (c) 1997-2014 University of Cambridge ----------------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without @@ -40,15 +40,50 @@ POSSIBILITY OF SUCH DAMAGE. /* This header contains definitions that are shared between the different modules, but which are not relevant to the exported API. This includes some -functions whose names all begin with "_pcre_". */ +functions whose names all begin with "_pcre_", "_pcre16_" or "_pcre32_" +depending on the PRIV macro. */ #ifndef PCRE_INTERNAL_H #define PCRE_INTERNAL_H -/* Define DEBUG to get debugging output on stdout. */ +/* Define PCRE_DEBUG to get debugging output on stdout. */ #if 0 -#define DEBUG +#define PCRE_DEBUG +#endif + +/* PCRE is compiled as an 8 bit library if it is not requested otherwise. */ + +#if !defined COMPILE_PCRE16 && !defined COMPILE_PCRE32 +#define COMPILE_PCRE8 +#endif + +/* If SUPPORT_UCP is defined, SUPPORT_UTF must also be defined. The +"configure" script ensures this, but not everybody uses "configure". */ + +#if defined SUPPORT_UCP && !(defined SUPPORT_UTF) +#define SUPPORT_UTF 1 +#endif + +/* We define SUPPORT_UTF if SUPPORT_UTF8 is enabled for compatibility +reasons with existing code. */ + +#if defined SUPPORT_UTF8 && !(defined SUPPORT_UTF) +#define SUPPORT_UTF 1 +#endif + +/* Fixme: SUPPORT_UTF8 should be eventually disappear from the code. +Until then we define it if SUPPORT_UTF is defined. */ + +#if defined SUPPORT_UTF && !(defined SUPPORT_UTF8) +#define SUPPORT_UTF8 1 +#endif + +/* We do not support both EBCDIC and UTF-8/16/32 at the same time. The "configure" +script prevents both being selected, but not everybody uses "configure". */ + +#if defined EBCDIC && defined SUPPORT_UTF +#error The use of both EBCDIC and SUPPORT_UTF is not supported. #endif /* Use a macro for debugging printing, 'cause that eliminates the use of #ifdef @@ -60,7 +95,7 @@ It turns out that the Mac Debugging.h header also defines the macro DPRINTF, so be absolutely sure we get our version. */ #undef DPRINTF -#ifdef DEBUG +#ifdef PCRE_DEBUG #define DPRINTF(p) printf p #else #define DPRINTF(p) /* Nothing */ @@ -76,8 +111,12 @@ setjmp and stdarg are used is when NO_RECURSE is set. */ #include #include #include -#include -#include + +/* Valgrind (memcheck) support */ + +#ifdef SUPPORT_VALGRIND +#include +#endif /* When compiling a DLL for Windows, the exported symbols have to be declared using some MS magic. I found some useful information on this web page: @@ -113,7 +152,7 @@ PCRE_EXP_DATA_DEFN only if they are not already set. */ # define PCRE_EXP_DEFN __declspec(dllexport) # define PCRE_EXP_DATA_DEFN __declspec(dllexport) # else -# define PCRE_EXP_DECL extern +# define PCRE_EXP_DECL extern # define PCRE_EXP_DEFN # define PCRE_EXP_DATA_DEFN # endif @@ -146,40 +185,111 @@ set, we ensure here that it has no effect. */ #define PCRE_CALL_CONVENTION #endif -/* We need to have types that specify unsigned 16-bit and 32-bit integers. We +/* We need to have types that specify unsigned 8, 16 and 32-bit integers. We cannot determine these outside the compilation (e.g. by running a program as part of "configure") because PCRE is often cross-compiled for use on other systems. Instead we make use of the maximum sizes that are available at preprocessor time in standard C environments. */ +typedef unsigned char pcre_uint8; + #if USHRT_MAX == 65535 - typedef unsigned short pcre_uint16; - typedef short pcre_int16; +typedef unsigned short pcre_uint16; +typedef short pcre_int16; +#define PCRE_UINT16_MAX USHRT_MAX +#define PCRE_INT16_MAX SHRT_MAX #elif UINT_MAX == 65535 - typedef unsigned int pcre_uint16; - typedef int pcre_int16; +typedef unsigned int pcre_uint16; +typedef int pcre_int16; +#define PCRE_UINT16_MAX UINT_MAX +#define PCRE_INT16_MAX INT_MAX #else - #error Cannot determine a type for 16-bit unsigned integers +#error Cannot determine a type for 16-bit integers #endif -#if UINT_MAX == 4294967295 - typedef unsigned int pcre_uint32; - typedef int pcre_int32; -#elif ULONG_MAX == 4294967295 - typedef unsigned long int pcre_uint32; - typedef long int pcre_int32; +#if UINT_MAX == 4294967295U +typedef unsigned int pcre_uint32; +typedef int pcre_int32; +#define PCRE_UINT32_MAX UINT_MAX +#define PCRE_INT32_MAX INT_MAX +#elif ULONG_MAX == 4294967295UL +typedef unsigned long int pcre_uint32; +typedef long int pcre_int32; +#define PCRE_UINT32_MAX ULONG_MAX +#define PCRE_INT32_MAX LONG_MAX #else - #error Cannot determine a type for 32-bit unsigned integers +#error Cannot determine a type for 32-bit integers +#endif + +/* When checking for integer overflow in pcre_compile(), we need to handle +large integers. If a 64-bit integer type is available, we can use that. +Otherwise we have to cast to double, which of course requires floating point +arithmetic. Handle this by defining a macro for the appropriate type. If +stdint.h is available, include it; it may define INT64_MAX. Systems that do not +have stdint.h (e.g. Solaris) may have inttypes.h. The macro int64_t may be set +by "configure". */ + +#if HAVE_STDINT_H +#include +#elif HAVE_INTTYPES_H +#include +#endif + +#if defined INT64_MAX || defined int64_t +#define INT64_OR_DOUBLE int64_t +#else +#define INT64_OR_DOUBLE double #endif /* All character handling must be done as unsigned characters. Otherwise there are problems with top-bit-set characters and functions such as isspace(). -However, we leave the interface to the outside world as char *, because that -should make things easier for callers. We define a short type for unsigned char -to save lots of typing. I tried "uchar", but it causes problems on Digital -Unix, where it is defined in sys/types, so use "uschar" instead. */ +However, we leave the interface to the outside world as char * or short *, +because that should make things easier for callers. This character type is +called pcre_uchar. -typedef unsigned char uschar; +The IN_UCHARS macro multiply its argument with the byte size of the current +pcre_uchar type. Useful for memcpy and such operations, whose require the +byte size of their input/output buffers. + +The MAX_255 macro checks whether its pcre_uchar input is less than 256. + +The TABLE_GET macro is designed for accessing elements of tables whose contain +exactly 256 items. When the character is able to contain more than 256 +items, some check is needed before accessing these tables. +*/ + +#if defined COMPILE_PCRE8 + +typedef unsigned char pcre_uchar; +#define IN_UCHARS(x) (x) +#define MAX_255(c) 1 +#define TABLE_GET(c, table, default) ((table)[c]) + +#elif defined COMPILE_PCRE16 + +#if USHRT_MAX != 65535 +/* This is a warning message. Change PCRE_UCHAR16 to a 16 bit data type in +pcre.h(.in) and disable (comment out) this message. */ +#error Warning: PCRE_UCHAR16 is not a 16 bit data type. +#endif + +typedef pcre_uint16 pcre_uchar; +#define UCHAR_SHIFT (1) +#define IN_UCHARS(x) ((x) << UCHAR_SHIFT) +#define MAX_255(c) ((c) <= 255u) +#define TABLE_GET(c, table, default) (MAX_255(c)? ((table)[c]):(default)) + +#elif defined COMPILE_PCRE32 + +typedef pcre_uint32 pcre_uchar; +#define UCHAR_SHIFT (2) +#define IN_UCHARS(x) ((x) << UCHAR_SHIFT) +#define MAX_255(c) ((c) <= 255u) +#define TABLE_GET(c, table, default) (MAX_255(c)? ((table)[c]):(default)) + +#else +#error Unsupported compiling mode +#endif /* COMPILE_PCRE[8|16|32] */ /* This is an unsigned int value that no character can ever have. UTF-8 characters only go up to 0x7fffffff (though Unicode doesn't go beyond @@ -202,12 +312,12 @@ start/end of string field names are. */ #define IS_NEWLINE(p) \ ((NLBLOCK->nltype != NLTYPE_FIXED)? \ ((p) < NLBLOCK->PSEND && \ - _pcre_is_newline((p), NLBLOCK->nltype, NLBLOCK->PSEND, &(NLBLOCK->nllen),\ - utf8)) \ + PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \ + &(NLBLOCK->nllen), utf)) \ : \ ((p) <= NLBLOCK->PSEND - NLBLOCK->nllen && \ - (p)[0] == NLBLOCK->nl[0] && \ - (NLBLOCK->nllen == 1 || (p)[1] == NLBLOCK->nl[1]) \ + UCHAR21TEST(p) == NLBLOCK->nl[0] && \ + (NLBLOCK->nllen == 1 || UCHAR21TEST(p+1) == NLBLOCK->nl[1]) \ ) \ ) @@ -216,12 +326,12 @@ start/end of string field names are. */ #define WAS_NEWLINE(p) \ ((NLBLOCK->nltype != NLTYPE_FIXED)? \ ((p) > NLBLOCK->PSSTART && \ - _pcre_was_newline((p), NLBLOCK->nltype, NLBLOCK->PSSTART, \ - &(NLBLOCK->nllen), utf8)) \ + PRIV(was_newline)((p), NLBLOCK->nltype, NLBLOCK->PSSTART, \ + &(NLBLOCK->nllen), utf)) \ : \ ((p) >= NLBLOCK->PSSTART + NLBLOCK->nllen && \ - (p)[-NLBLOCK->nllen] == NLBLOCK->nl[0] && \ - (NLBLOCK->nllen == 1 || (p)[-NLBLOCK->nllen+1] == NLBLOCK->nl[1]) \ + UCHAR21TEST(p - NLBLOCK->nllen) == NLBLOCK->nl[0] && \ + (NLBLOCK->nllen == 1 || UCHAR21TEST(p - NLBLOCK->nllen + 1) == NLBLOCK->nl[1]) \ ) \ ) @@ -235,21 +345,22 @@ used for the external interface and appears in pcre.h, which is why its name must begin with PCRE_. */ #ifdef CUSTOM_SUBJECT_PTR -#define PCRE_SPTR CUSTOM_SUBJECT_PTR -#define USPTR CUSTOM_SUBJECT_PTR +#define PCRE_PUCHAR CUSTOM_SUBJECT_PTR #else -#define PCRE_SPTR const char * -#define USPTR const unsigned char * +#define PCRE_PUCHAR const pcre_uchar * #endif - - /* Include the public PCRE header and the definitions of UCP character property values. */ #include "pcre.h" #include "ucp.h" +#ifdef COMPILE_PCRE32 +/* Assert that the public PCRE_UCHAR32 is a 32-bit type */ +typedef int __assert_pcre_uchar32_size[sizeof(PCRE_UCHAR32) == 4 ? 1 : -1]; +#endif + /* When compiling for use with the Virtual Pascal compiler, these functions need to have their names changed. PCRE must be compiled with the -DVPCOMPAT option on the command line. */ @@ -311,6 +422,8 @@ The macros are controlled by the value of LINK_SIZE. This defaults to 2 in the config.h file, but can be overridden by using -D on the command line. This is automated on Unix systems via the "configure" command. */ +#if defined COMPILE_PCRE8 + #if LINK_SIZE == 2 #define PUT(a,n,d) \ @@ -347,13 +460,68 @@ is automated on Unix systems via the "configure" command. */ #define GET(a,n) \ (((a)[n] << 24) | ((a)[(n)+1] << 16) | ((a)[(n)+2] << 8) | (a)[(n)+3]) -#define MAX_PATTERN_SIZE (1 << 30) /* Keep it positive */ - +/* Keep it positive */ +#define MAX_PATTERN_SIZE (1 << 30) #else #error LINK_SIZE must be either 2, 3, or 4 #endif +#elif defined COMPILE_PCRE16 + +#if LINK_SIZE == 2 + +/* Redefine LINK_SIZE as a multiple of sizeof(pcre_uchar) */ +#undef LINK_SIZE +#define LINK_SIZE 1 + +#define PUT(a,n,d) \ + (a[n] = (d)) + +#define GET(a,n) \ + (a[n]) + +#define MAX_PATTERN_SIZE (1 << 16) + +#elif LINK_SIZE == 3 || LINK_SIZE == 4 + +/* Redefine LINK_SIZE as a multiple of sizeof(pcre_uchar) */ +#undef LINK_SIZE +#define LINK_SIZE 2 + +#define PUT(a,n,d) \ + (a[n] = (d) >> 16), \ + (a[(n)+1] = (d) & 65535) + +#define GET(a,n) \ + (((a)[n] << 16) | (a)[(n)+1]) + +/* Keep it positive */ +#define MAX_PATTERN_SIZE (1 << 30) + +#else +#error LINK_SIZE must be either 2, 3, or 4 +#endif + +#elif defined COMPILE_PCRE32 + +/* Only supported LINK_SIZE is 4 */ +/* Redefine LINK_SIZE as a multiple of sizeof(pcre_uchar) */ +#undef LINK_SIZE +#define LINK_SIZE 1 + +#define PUT(a,n,d) \ + (a[n] = (d)) + +#define GET(a,n) \ + (a[n]) + +/* Keep it positive */ +#define MAX_PATTERN_SIZE (1 << 30) + +#else +#error Unsupported compiling mode +#endif /* COMPILE_PCRE[8|16|32] */ /* Convenience macro defined in terms of the others */ @@ -364,98 +532,243 @@ is automated on Unix systems via the "configure" command. */ offsets changes. There are used for repeat counts and for other things such as capturing parenthesis numbers in back references. */ +#if defined COMPILE_PCRE8 + +#define IMM2_SIZE 2 + #define PUT2(a,n,d) \ a[n] = (d) >> 8; \ a[(n)+1] = (d) & 255 +/* For reasons that I do not understand, the expression in this GET2 macro is +treated by gcc as a signed expression, even when a is declared as unsigned. It +seems that any kind of arithmetic results in a signed value. */ + #define GET2(a,n) \ - (((a)[n] << 8) | (a)[(n)+1]) + (unsigned int)(((a)[n] << 8) | (a)[(n)+1]) -#define PUT2INC(a,n,d) PUT2(a,n,d), a += 2 +#elif defined COMPILE_PCRE16 +#define IMM2_SIZE 1 -/* When UTF-8 encoding is being used, a character is no longer just a single -byte. The macros for character handling generate simple sequences when used in -byte-mode, and more complicated ones for UTF-8 characters. BACKCHAR should -never be called in byte mode. To make sure it can never even appear when UTF-8 -support is omitted, we don't even define it. */ +#define PUT2(a,n,d) \ + a[n] = d -#ifndef SUPPORT_UTF8 +#define GET2(a,n) \ + a[n] + +#elif defined COMPILE_PCRE32 + +#define IMM2_SIZE 1 + +#define PUT2(a,n,d) \ + a[n] = d + +#define GET2(a,n) \ + a[n] + +#else +#error Unsupported compiling mode +#endif /* COMPILE_PCRE[8|16|32] */ + +#define PUT2INC(a,n,d) PUT2(a,n,d), a += IMM2_SIZE + +/* The maximum length of a MARK name is currently one data unit; it may be +changed in future to be a fixed number of bytes or to depend on LINK_SIZE. */ + +#if defined COMPILE_PCRE16 || defined COMPILE_PCRE32 +#define MAX_MARK ((1u << 16) - 1) +#else +#define MAX_MARK ((1u << 8) - 1) +#endif + +/* There is a proposed future special "UTF-21" mode, in which only the lowest +21 bits of a 32-bit character are interpreted as UTF, with the remaining 11 +high-order bits available to the application for other uses. In preparation for +the future implementation of this mode, there are macros that load a data item +and, if in this special mode, mask it to 21 bits. These macros all have names +starting with UCHAR21. In all other modes, including the normal 32-bit +library, the macros all have the same simple definitions. When the new mode is +implemented, it is expected that these definitions will be varied appropriately +using #ifdef when compiling the library that supports the special mode. */ + +#define UCHAR21(eptr) (*(eptr)) +#define UCHAR21TEST(eptr) (*(eptr)) +#define UCHAR21INC(eptr) (*(eptr)++) +#define UCHAR21INCTEST(eptr) (*(eptr)++) + +/* When UTF encoding is being used, a character is no longer just a single +byte in 8-bit mode or a single short in 16-bit mode. The macros for character +handling generate simple sequences when used in the basic mode, and more +complicated ones for UTF characters. GETCHARLENTEST and other macros are not +used when UTF is not supported. To make sure they can never even appear when +UTF support is omitted, we don't even define them. */ + +#ifndef SUPPORT_UTF + +/* #define MAX_VALUE_FOR_SINGLE_CHAR */ +/* #define HAS_EXTRALEN(c) */ +/* #define GET_EXTRALEN(c) */ +/* #define NOT_FIRSTCHAR(c) */ #define GETCHAR(c, eptr) c = *eptr; #define GETCHARTEST(c, eptr) c = *eptr; #define GETCHARINC(c, eptr) c = *eptr++; #define GETCHARINCTEST(c, eptr) c = *eptr++; #define GETCHARLEN(c, eptr, len) c = *eptr; +/* #define GETCHARLENTEST(c, eptr, len) */ /* #define BACKCHAR(eptr) */ +/* #define FORWARDCHAR(eptr) */ +/* #define ACROSSCHAR(condition, eptr, action) */ -#else /* SUPPORT_UTF8 */ +#else /* SUPPORT_UTF */ + +/* Tests whether the code point needs extra characters to decode. */ + +#define HASUTF8EXTRALEN(c) ((c) >= 0xc0) + +/* Base macro to pick up the remaining bytes of a UTF-8 character, not +advancing the pointer. */ + +#define GETUTF8(c, eptr) \ + { \ + if ((c & 0x20) == 0) \ + c = ((c & 0x1f) << 6) | (eptr[1] & 0x3f); \ + else if ((c & 0x10) == 0) \ + c = ((c & 0x0f) << 12) | ((eptr[1] & 0x3f) << 6) | (eptr[2] & 0x3f); \ + else if ((c & 0x08) == 0) \ + c = ((c & 0x07) << 18) | ((eptr[1] & 0x3f) << 12) | \ + ((eptr[2] & 0x3f) << 6) | (eptr[3] & 0x3f); \ + else if ((c & 0x04) == 0) \ + c = ((c & 0x03) << 24) | ((eptr[1] & 0x3f) << 18) | \ + ((eptr[2] & 0x3f) << 12) | ((eptr[3] & 0x3f) << 6) | \ + (eptr[4] & 0x3f); \ + else \ + c = ((c & 0x01) << 30) | ((eptr[1] & 0x3f) << 24) | \ + ((eptr[2] & 0x3f) << 18) | ((eptr[3] & 0x3f) << 12) | \ + ((eptr[4] & 0x3f) << 6) | (eptr[5] & 0x3f); \ + } + +/* Base macro to pick up the remaining bytes of a UTF-8 character, advancing +the pointer. */ + +#define GETUTF8INC(c, eptr) \ + { \ + if ((c & 0x20) == 0) \ + c = ((c & 0x1f) << 6) | (*eptr++ & 0x3f); \ + else if ((c & 0x10) == 0) \ + { \ + c = ((c & 0x0f) << 12) | ((*eptr & 0x3f) << 6) | (eptr[1] & 0x3f); \ + eptr += 2; \ + } \ + else if ((c & 0x08) == 0) \ + { \ + c = ((c & 0x07) << 18) | ((*eptr & 0x3f) << 12) | \ + ((eptr[1] & 0x3f) << 6) | (eptr[2] & 0x3f); \ + eptr += 3; \ + } \ + else if ((c & 0x04) == 0) \ + { \ + c = ((c & 0x03) << 24) | ((*eptr & 0x3f) << 18) | \ + ((eptr[1] & 0x3f) << 12) | ((eptr[2] & 0x3f) << 6) | \ + (eptr[3] & 0x3f); \ + eptr += 4; \ + } \ + else \ + { \ + c = ((c & 0x01) << 30) | ((*eptr & 0x3f) << 24) | \ + ((eptr[1] & 0x3f) << 18) | ((eptr[2] & 0x3f) << 12) | \ + ((eptr[3] & 0x3f) << 6) | (eptr[4] & 0x3f); \ + eptr += 5; \ + } \ + } + +#if defined COMPILE_PCRE8 + +/* These macros were originally written in the form of loops that used data +from the tables whose names start with PRIV(utf8_table). They were rewritten by +a user so as not to use loops, because in some environments this gives a +significant performance advantage, and it seems never to do any harm. */ + +/* Tells the biggest code point which can be encoded as a single character. */ + +#define MAX_VALUE_FOR_SINGLE_CHAR 127 + +/* Tests whether the code point needs extra characters to decode. */ + +#define HAS_EXTRALEN(c) ((c) >= 0xc0) + +/* Returns with the additional number of characters if IS_MULTICHAR(c) is TRUE. +Otherwise it has an undefined behaviour. */ + +#define GET_EXTRALEN(c) (PRIV(utf8_table4)[(c) & 0x3f]) + +/* Returns TRUE, if the given character is not the first character +of a UTF sequence. */ + +#define NOT_FIRSTCHAR(c) (((c) & 0xc0) == 0x80) /* Get the next UTF-8 character, not advancing the pointer. This is called when we know we are in UTF-8 mode. */ #define GETCHAR(c, eptr) \ c = *eptr; \ - if (c >= 0xc0) \ - { \ - int gcii; \ - int gcaa = _pcre_utf8_table4[c & 0x3f]; /* Number of additional bytes */ \ - int gcss = 6*gcaa; \ - c = (c & _pcre_utf8_table3[gcaa]) << gcss; \ - for (gcii = 1; gcii <= gcaa; gcii++) \ - { \ - gcss -= 6; \ - c |= (eptr[gcii] & 0x3f) << gcss; \ - } \ - } + if (c >= 0xc0) GETUTF8(c, eptr); /* Get the next UTF-8 character, testing for UTF-8 mode, and not advancing the pointer. */ #define GETCHARTEST(c, eptr) \ c = *eptr; \ - if (utf8 && c >= 0xc0) \ - { \ - int gcii; \ - int gcaa = _pcre_utf8_table4[c & 0x3f]; /* Number of additional bytes */ \ - int gcss = 6*gcaa; \ - c = (c & _pcre_utf8_table3[gcaa]) << gcss; \ - for (gcii = 1; gcii <= gcaa; gcii++) \ - { \ - gcss -= 6; \ - c |= (eptr[gcii] & 0x3f) << gcss; \ - } \ - } + if (utf && c >= 0xc0) GETUTF8(c, eptr); /* Get the next UTF-8 character, advancing the pointer. This is called when we know we are in UTF-8 mode. */ #define GETCHARINC(c, eptr) \ c = *eptr++; \ - if (c >= 0xc0) \ - { \ - int gcaa = _pcre_utf8_table4[c & 0x3f]; /* Number of additional bytes */ \ - int gcss = 6*gcaa; \ - c = (c & _pcre_utf8_table3[gcaa]) << gcss; \ - while (gcaa-- > 0) \ - { \ - gcss -= 6; \ - c |= (*eptr++ & 0x3f) << gcss; \ - } \ - } + if (c >= 0xc0) GETUTF8INC(c, eptr); -/* Get the next character, testing for UTF-8 mode, and advancing the pointer */ +/* Get the next character, testing for UTF-8 mode, and advancing the pointer. +This is called when we don't know if we are in UTF-8 mode. */ #define GETCHARINCTEST(c, eptr) \ c = *eptr++; \ - if (utf8 && c >= 0xc0) \ + if (utf && c >= 0xc0) GETUTF8INC(c, eptr); + +/* Base macro to pick up the remaining bytes of a UTF-8 character, not +advancing the pointer, incrementing the length. */ + +#define GETUTF8LEN(c, eptr, len) \ { \ - int gcaa = _pcre_utf8_table4[c & 0x3f]; /* Number of additional bytes */ \ - int gcss = 6*gcaa; \ - c = (c & _pcre_utf8_table3[gcaa]) << gcss; \ - while (gcaa-- > 0) \ + if ((c & 0x20) == 0) \ { \ - gcss -= 6; \ - c |= (*eptr++ & 0x3f) << gcss; \ + c = ((c & 0x1f) << 6) | (eptr[1] & 0x3f); \ + len++; \ + } \ + else if ((c & 0x10) == 0) \ + { \ + c = ((c & 0x0f) << 12) | ((eptr[1] & 0x3f) << 6) | (eptr[2] & 0x3f); \ + len += 2; \ + } \ + else if ((c & 0x08) == 0) \ + {\ + c = ((c & 0x07) << 18) | ((eptr[1] & 0x3f) << 12) | \ + ((eptr[2] & 0x3f) << 6) | (eptr[3] & 0x3f); \ + len += 3; \ + } \ + else if ((c & 0x04) == 0) \ + { \ + c = ((c & 0x03) << 24) | ((eptr[1] & 0x3f) << 18) | \ + ((eptr[2] & 0x3f) << 12) | ((eptr[3] & 0x3f) << 6) | \ + (eptr[4] & 0x3f); \ + len += 4; \ + } \ + else \ + {\ + c = ((c & 0x01) << 30) | ((eptr[1] & 0x3f) << 24) | \ + ((eptr[2] & 0x3f) << 18) | ((eptr[3] & 0x3f) << 12) | \ + ((eptr[4] & 0x3f) << 6) | (eptr[5] & 0x3f); \ + len += 5; \ } \ } @@ -464,19 +777,15 @@ if there are extra bytes. This is called when we know we are in UTF-8 mode. */ #define GETCHARLEN(c, eptr, len) \ c = *eptr; \ - if (c >= 0xc0) \ - { \ - int gcii; \ - int gcaa = _pcre_utf8_table4[c & 0x3f]; /* Number of additional bytes */ \ - int gcss = 6*gcaa; \ - c = (c & _pcre_utf8_table3[gcaa]) << gcss; \ - for (gcii = 1; gcii <= gcaa; gcii++) \ - { \ - gcss -= 6; \ - c |= (eptr[gcii] & 0x3f) << gcss; \ - } \ - len += gcaa; \ - } + if (c >= 0xc0) GETUTF8LEN(c, eptr, len); + +/* Get the next UTF-8 character, testing for UTF-8 mode, not advancing the +pointer, incrementing length if there are extra bytes. This is called when we +do not know if we are in UTF-8 mode. */ + +#define GETCHARLENTEST(c, eptr, len) \ + c = *eptr; \ + if (utf && c >= 0xc0) GETUTF8LEN(c, eptr, len); /* If the pointer is not at the start of a character, move it back until it is. This is called only in UTF-8 mode - we don't put a test within the macro @@ -484,35 +793,316 @@ because almost all calls are already within a block of UTF-8 only code. */ #define BACKCHAR(eptr) while((*eptr & 0xc0) == 0x80) eptr-- +/* Same as above, just in the other direction. */ +#define FORWARDCHAR(eptr) while((*eptr & 0xc0) == 0x80) eptr++ + +/* Same as above, but it allows a fully customizable form. */ +#define ACROSSCHAR(condition, eptr, action) \ + while((condition) && ((eptr) & 0xc0) == 0x80) action + +#elif defined COMPILE_PCRE16 + +/* Tells the biggest code point which can be encoded as a single character. */ + +#define MAX_VALUE_FOR_SINGLE_CHAR 65535 + +/* Tests whether the code point needs extra characters to decode. */ + +#define HAS_EXTRALEN(c) (((c) & 0xfc00) == 0xd800) + +/* Returns with the additional number of characters if IS_MULTICHAR(c) is TRUE. +Otherwise it has an undefined behaviour. */ + +#define GET_EXTRALEN(c) 1 + +/* Returns TRUE, if the given character is not the first character +of a UTF sequence. */ + +#define NOT_FIRSTCHAR(c) (((c) & 0xfc00) == 0xdc00) + +/* Base macro to pick up the low surrogate of a UTF-16 character, not +advancing the pointer. */ + +#define GETUTF16(c, eptr) \ + { c = (((c & 0x3ff) << 10) | (eptr[1] & 0x3ff)) + 0x10000; } + +/* Get the next UTF-16 character, not advancing the pointer. This is called when +we know we are in UTF-16 mode. */ + +#define GETCHAR(c, eptr) \ + c = *eptr; \ + if ((c & 0xfc00) == 0xd800) GETUTF16(c, eptr); + +/* Get the next UTF-16 character, testing for UTF-16 mode, and not advancing the +pointer. */ + +#define GETCHARTEST(c, eptr) \ + c = *eptr; \ + if (utf && (c & 0xfc00) == 0xd800) GETUTF16(c, eptr); + +/* Base macro to pick up the low surrogate of a UTF-16 character, advancing +the pointer. */ + +#define GETUTF16INC(c, eptr) \ + { c = (((c & 0x3ff) << 10) | (*eptr++ & 0x3ff)) + 0x10000; } + +/* Get the next UTF-16 character, advancing the pointer. This is called when we +know we are in UTF-16 mode. */ + +#define GETCHARINC(c, eptr) \ + c = *eptr++; \ + if ((c & 0xfc00) == 0xd800) GETUTF16INC(c, eptr); + +/* Get the next character, testing for UTF-16 mode, and advancing the pointer. +This is called when we don't know if we are in UTF-16 mode. */ + +#define GETCHARINCTEST(c, eptr) \ + c = *eptr++; \ + if (utf && (c & 0xfc00) == 0xd800) GETUTF16INC(c, eptr); + +/* Base macro to pick up the low surrogate of a UTF-16 character, not +advancing the pointer, incrementing the length. */ + +#define GETUTF16LEN(c, eptr, len) \ + { c = (((c & 0x3ff) << 10) | (eptr[1] & 0x3ff)) + 0x10000; len++; } + +/* Get the next UTF-16 character, not advancing the pointer, incrementing +length if there is a low surrogate. This is called when we know we are in +UTF-16 mode. */ + +#define GETCHARLEN(c, eptr, len) \ + c = *eptr; \ + if ((c & 0xfc00) == 0xd800) GETUTF16LEN(c, eptr, len); + +/* Get the next UTF-816character, testing for UTF-16 mode, not advancing the +pointer, incrementing length if there is a low surrogate. This is called when +we do not know if we are in UTF-16 mode. */ + +#define GETCHARLENTEST(c, eptr, len) \ + c = *eptr; \ + if (utf && (c & 0xfc00) == 0xd800) GETUTF16LEN(c, eptr, len); + +/* If the pointer is not at the start of a character, move it back until +it is. This is called only in UTF-16 mode - we don't put a test within the +macro because almost all calls are already within a block of UTF-16 only +code. */ + +#define BACKCHAR(eptr) if ((*eptr & 0xfc00) == 0xdc00) eptr-- + +/* Same as above, just in the other direction. */ +#define FORWARDCHAR(eptr) if ((*eptr & 0xfc00) == 0xdc00) eptr++ + +/* Same as above, but it allows a fully customizable form. */ +#define ACROSSCHAR(condition, eptr, action) \ + if ((condition) && ((eptr) & 0xfc00) == 0xdc00) action + +#elif defined COMPILE_PCRE32 + +/* These are trivial for the 32-bit library, since all UTF-32 characters fit +into one pcre_uchar unit. */ +#define MAX_VALUE_FOR_SINGLE_CHAR (0x10ffffu) +#define HAS_EXTRALEN(c) (0) +#define GET_EXTRALEN(c) (0) +#define NOT_FIRSTCHAR(c) (0) + +/* Get the next UTF-32 character, not advancing the pointer. This is called when +we know we are in UTF-32 mode. */ + +#define GETCHAR(c, eptr) \ + c = *(eptr); + +/* Get the next UTF-32 character, testing for UTF-32 mode, and not advancing the +pointer. */ + +#define GETCHARTEST(c, eptr) \ + c = *(eptr); + +/* Get the next UTF-32 character, advancing the pointer. This is called when we +know we are in UTF-32 mode. */ + +#define GETCHARINC(c, eptr) \ + c = *((eptr)++); + +/* Get the next character, testing for UTF-32 mode, and advancing the pointer. +This is called when we don't know if we are in UTF-32 mode. */ + +#define GETCHARINCTEST(c, eptr) \ + c = *((eptr)++); + +/* Get the next UTF-32 character, not advancing the pointer, not incrementing +length (since all UTF-32 is of length 1). This is called when we know we are in +UTF-32 mode. */ + +#define GETCHARLEN(c, eptr, len) \ + GETCHAR(c, eptr) + +/* Get the next UTF-32character, testing for UTF-32 mode, not advancing the +pointer, not incrementing the length (since all UTF-32 is of length 1). +This is called when we do not know if we are in UTF-32 mode. */ + +#define GETCHARLENTEST(c, eptr, len) \ + GETCHARTEST(c, eptr) + +/* If the pointer is not at the start of a character, move it back until +it is. This is called only in UTF-32 mode - we don't put a test within the +macro because almost all calls are already within a block of UTF-32 only +code. +These are all no-ops since all UTF-32 characters fit into one pcre_uchar. */ + +#define BACKCHAR(eptr) do { } while (0) + +/* Same as above, just in the other direction. */ +#define FORWARDCHAR(eptr) do { } while (0) + +/* Same as above, but it allows a fully customizable form. */ +#define ACROSSCHAR(condition, eptr, action) do { } while (0) + +#else +#error Unsupported compiling mode +#endif /* COMPILE_PCRE[8|16|32] */ + +#endif /* SUPPORT_UTF */ + +/* Tests for Unicode horizontal and vertical whitespace characters must check a +number of different values. Using a switch statement for this generates the +fastest code (no loop, no memory access), and there are several places in the +interpreter code where this happens. In order to ensure that all the case lists +remain in step, we use macros so that there is only one place where the lists +are defined. + +These values are also required as lists in pcre_compile.c when processing \h, +\H, \v and \V in a character class. The lists are defined in pcre_tables.c, but +macros that define the values are here so that all the definitions are +together. The lists must be in ascending character order, terminated by +NOTACHAR (which is 0xffffffff). + +Any changes should ensure that the various macros are kept in step with each +other. NOTE: The values also appear in pcre_jit_compile.c. */ + +/* ------ ASCII/Unicode environments ------ */ + +#ifndef EBCDIC + +#define HSPACE_LIST \ + CHAR_HT, CHAR_SPACE, 0xa0, \ + 0x1680, 0x180e, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, \ + 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202f, 0x205f, 0x3000, \ + NOTACHAR + +#define HSPACE_MULTIBYTE_CASES \ + case 0x1680: /* OGHAM SPACE MARK */ \ + case 0x180e: /* MONGOLIAN VOWEL SEPARATOR */ \ + case 0x2000: /* EN QUAD */ \ + case 0x2001: /* EM QUAD */ \ + case 0x2002: /* EN SPACE */ \ + case 0x2003: /* EM SPACE */ \ + case 0x2004: /* THREE-PER-EM SPACE */ \ + case 0x2005: /* FOUR-PER-EM SPACE */ \ + case 0x2006: /* SIX-PER-EM SPACE */ \ + case 0x2007: /* FIGURE SPACE */ \ + case 0x2008: /* PUNCTUATION SPACE */ \ + case 0x2009: /* THIN SPACE */ \ + case 0x200A: /* HAIR SPACE */ \ + case 0x202f: /* NARROW NO-BREAK SPACE */ \ + case 0x205f: /* MEDIUM MATHEMATICAL SPACE */ \ + case 0x3000 /* IDEOGRAPHIC SPACE */ + +#define HSPACE_BYTE_CASES \ + case CHAR_HT: \ + case CHAR_SPACE: \ + case 0xa0 /* NBSP */ + +#define HSPACE_CASES \ + HSPACE_BYTE_CASES: \ + HSPACE_MULTIBYTE_CASES + +#define VSPACE_LIST \ + CHAR_LF, CHAR_VT, CHAR_FF, CHAR_CR, CHAR_NEL, 0x2028, 0x2029, NOTACHAR + +#define VSPACE_MULTIBYTE_CASES \ + case 0x2028: /* LINE SEPARATOR */ \ + case 0x2029 /* PARAGRAPH SEPARATOR */ + +#define VSPACE_BYTE_CASES \ + case CHAR_LF: \ + case CHAR_VT: \ + case CHAR_FF: \ + case CHAR_CR: \ + case CHAR_NEL + +#define VSPACE_CASES \ + VSPACE_BYTE_CASES: \ + VSPACE_MULTIBYTE_CASES + +/* ------ EBCDIC environments ------ */ + +#else +#define HSPACE_LIST CHAR_HT, CHAR_SPACE + +#define HSPACE_BYTE_CASES \ + case CHAR_HT: \ + case CHAR_SPACE + +#define HSPACE_CASES HSPACE_BYTE_CASES + +#ifdef EBCDIC_NL25 +#define VSPACE_LIST \ + CHAR_VT, CHAR_FF, CHAR_CR, CHAR_NEL, CHAR_LF, NOTACHAR +#else +#define VSPACE_LIST \ + CHAR_VT, CHAR_FF, CHAR_CR, CHAR_LF, CHAR_NEL, NOTACHAR #endif +#define VSPACE_BYTE_CASES \ + case CHAR_LF: \ + case CHAR_VT: \ + case CHAR_FF: \ + case CHAR_CR: \ + case CHAR_NEL -/* In case there is no definition of offsetof() provided - though any proper -Standard C system should have one. */ +#define VSPACE_CASES VSPACE_BYTE_CASES +#endif /* EBCDIC */ -#ifndef offsetof -#define offsetof(p_type,field) ((size_t)&(((p_type *)0)->field)) -#endif +/* ------ End of whitespace macros ------ */ -/* These are the public options that can change during matching. */ - -#define PCRE_IMS (PCRE_CASELESS|PCRE_MULTILINE|PCRE_DOTALL) /* Private flags containing information about the compiled regex. They used to -live at the top end of the options word, but that got almost full, so now they -are in a 16-bit flags word. */ +live at the top end of the options word, but that got almost full, so they were +moved to a 16-bit flags word - which got almost full, so now they are in a +32-bit flags word. From release 8.00, PCRE_NOPARTIAL is unused, as the +restrictions on partial matching have been lifted. It remains for backwards +compatibility. */ -#define PCRE_NOPARTIAL 0x0001 /* can't use partial with this regex */ -#define PCRE_FIRSTSET 0x0002 /* first_byte is set */ -#define PCRE_REQCHSET 0x0004 /* req_byte is set */ -#define PCRE_STARTLINE 0x0008 /* start after \n for multiline */ -#define PCRE_JCHANGED 0x0010 /* j option used in regex */ -#define PCRE_HASCRORLF 0x0020 /* explicit \r or \n in pattern */ +#define PCRE_MODE8 0x00000001 /* compiled in 8 bit mode */ +#define PCRE_MODE16 0x00000002 /* compiled in 16 bit mode */ +#define PCRE_MODE32 0x00000004 /* compiled in 32 bit mode */ +#define PCRE_FIRSTSET 0x00000010 /* first_char is set */ +#define PCRE_FCH_CASELESS 0x00000020 /* caseless first char */ +#define PCRE_REQCHSET 0x00000040 /* req_byte is set */ +#define PCRE_RCH_CASELESS 0x00000080 /* caseless requested char */ +#define PCRE_STARTLINE 0x00000100 /* start after \n for multiline */ +#define PCRE_NOPARTIAL 0x00000200 /* can't use partial with this regex */ +#define PCRE_JCHANGED 0x00000400 /* j option used in regex */ +#define PCRE_HASCRORLF 0x00000800 /* explicit \r or \n in pattern */ +#define PCRE_HASTHEN 0x00001000 /* pattern contains (*THEN) */ +#define PCRE_MLSET 0x00002000 /* match limit set by regex */ +#define PCRE_RLSET 0x00004000 /* recursion limit set by regex */ +#define PCRE_MATCH_EMPTY 0x00008000 /* pattern can match empty string */ -/* Options for the "extra" block produced by pcre_study(). */ +#if defined COMPILE_PCRE8 +#define PCRE_MODE PCRE_MODE8 +#elif defined COMPILE_PCRE16 +#define PCRE_MODE PCRE_MODE16 +#elif defined COMPILE_PCRE32 +#define PCRE_MODE PCRE_MODE32 +#endif +#define PCRE_MODE_MASK (PCRE_MODE8 | PCRE_MODE16 | PCRE_MODE32) -#define PCRE_STUDY_MAPPED 0x01 /* a map of starting chars exists */ +/* Flags for the "extra" block produced by pcre_study(). */ + +#define PCRE_STUDY_MAPPED 0x0001 /* a map of starting chars exists */ +#define PCRE_STUDY_MINLEN 0x0002 /* a minimum length field exists */ /* Masks for identifying the public options that are permitted at compile time, run time, or study time, respectively. */ @@ -520,93 +1110,712 @@ time, run time, or study time, respectively. */ #define PCRE_NEWLINE_BITS (PCRE_NEWLINE_CR|PCRE_NEWLINE_LF|PCRE_NEWLINE_ANY| \ PCRE_NEWLINE_ANYCRLF) -#define PUBLIC_OPTIONS \ +#define PUBLIC_COMPILE_OPTIONS \ (PCRE_CASELESS|PCRE_EXTENDED|PCRE_ANCHORED|PCRE_MULTILINE| \ PCRE_DOTALL|PCRE_DOLLAR_ENDONLY|PCRE_EXTRA|PCRE_UNGREEDY|PCRE_UTF8| \ - PCRE_NO_AUTO_CAPTURE|PCRE_NO_UTF8_CHECK|PCRE_AUTO_CALLOUT|PCRE_FIRSTLINE| \ + PCRE_NO_AUTO_CAPTURE|PCRE_NO_AUTO_POSSESS| \ + PCRE_NO_UTF8_CHECK|PCRE_AUTO_CALLOUT|PCRE_FIRSTLINE| \ PCRE_DUPNAMES|PCRE_NEWLINE_BITS|PCRE_BSR_ANYCRLF|PCRE_BSR_UNICODE| \ - PCRE_JAVASCRIPT_COMPAT) + PCRE_JAVASCRIPT_COMPAT|PCRE_UCP|PCRE_NO_START_OPTIMIZE|PCRE_NEVER_UTF) #define PUBLIC_EXEC_OPTIONS \ - (PCRE_ANCHORED|PCRE_NOTBOL|PCRE_NOTEOL|PCRE_NOTEMPTY|PCRE_NO_UTF8_CHECK| \ - PCRE_PARTIAL|PCRE_NEWLINE_BITS|PCRE_BSR_ANYCRLF|PCRE_BSR_UNICODE) + (PCRE_ANCHORED|PCRE_NOTBOL|PCRE_NOTEOL|PCRE_NOTEMPTY|PCRE_NOTEMPTY_ATSTART| \ + PCRE_NO_UTF8_CHECK|PCRE_PARTIAL_HARD|PCRE_PARTIAL_SOFT|PCRE_NEWLINE_BITS| \ + PCRE_BSR_ANYCRLF|PCRE_BSR_UNICODE|PCRE_NO_START_OPTIMIZE) #define PUBLIC_DFA_EXEC_OPTIONS \ - (PCRE_ANCHORED|PCRE_NOTBOL|PCRE_NOTEOL|PCRE_NOTEMPTY|PCRE_NO_UTF8_CHECK| \ - PCRE_PARTIAL|PCRE_DFA_SHORTEST|PCRE_DFA_RESTART|PCRE_NEWLINE_BITS| \ - PCRE_BSR_ANYCRLF|PCRE_BSR_UNICODE) + (PCRE_ANCHORED|PCRE_NOTBOL|PCRE_NOTEOL|PCRE_NOTEMPTY|PCRE_NOTEMPTY_ATSTART| \ + PCRE_NO_UTF8_CHECK|PCRE_PARTIAL_HARD|PCRE_PARTIAL_SOFT|PCRE_DFA_SHORTEST| \ + PCRE_DFA_RESTART|PCRE_NEWLINE_BITS|PCRE_BSR_ANYCRLF|PCRE_BSR_UNICODE| \ + PCRE_NO_START_OPTIMIZE) -#define PUBLIC_STUDY_OPTIONS 0 /* None defined */ +#define PUBLIC_STUDY_OPTIONS \ + (PCRE_STUDY_JIT_COMPILE|PCRE_STUDY_JIT_PARTIAL_SOFT_COMPILE| \ + PCRE_STUDY_JIT_PARTIAL_HARD_COMPILE|PCRE_STUDY_EXTRA_NEEDED) -/* Magic number to provide a small check against being handed junk. Also used -to detect whether a pattern was compiled on a host of different endianness. */ +#define PUBLIC_JIT_EXEC_OPTIONS \ + (PCRE_NO_UTF8_CHECK|PCRE_NOTBOL|PCRE_NOTEOL|PCRE_NOTEMPTY|\ + PCRE_NOTEMPTY_ATSTART|PCRE_PARTIAL_SOFT|PCRE_PARTIAL_HARD) + +/* Magic number to provide a small check against being handed junk. */ #define MAGIC_NUMBER 0x50435245UL /* 'PCRE' */ -/* Negative values for the firstchar and reqchar variables */ +/* This variable is used to detect a loaded regular expression +in different endianness. */ -#define REQ_UNSET (-2) -#define REQ_NONE (-1) +#define REVERSED_MAGIC_NUMBER 0x45524350UL /* 'ERCP' */ /* The maximum remaining length of subject we are prepared to search for a req_byte match. */ #define REQ_BYTE_MAX 1000 -/* Flags added to firstbyte or reqbyte; a "non-literal" item is either a -variable-length repeat, or a anything other than literal characters. */ - -#define REQ_CASELESS 0x0100 /* indicates caselessness */ -#define REQ_VARY 0x0200 /* reqbyte followed non-literal item */ - /* Miscellaneous definitions. The #ifndef is to pacify compiler warnings in -environments where these macros are defined elsewhere. */ +environments where these macros are defined elsewhere. Unfortunately, there +is no way to do the same for the typedef. */ -#ifndef FALSE typedef int BOOL; +#ifndef FALSE #define FALSE 0 #define TRUE 1 #endif +/* If PCRE is to support UTF-8 on EBCDIC platforms, we cannot use normal +character constants like '*' because the compiler would emit their EBCDIC code, +which is different from their ASCII/UTF-8 code. Instead we define macros for +the characters so that they always use the ASCII/UTF-8 code when UTF-8 support +is enabled. When UTF-8 support is not enabled, the definitions use character +literals. Both character and string versions of each character are needed, and +there are some longer strings as well. + +This means that, on EBCDIC platforms, the PCRE library can handle either +EBCDIC, or UTF-8, but not both. To support both in the same compiled library +would need different lookups depending on whether PCRE_UTF8 was set or not. +This would make it impossible to use characters in switch/case statements, +which would reduce performance. For a theoretical use (which nobody has asked +for) in a minority area (EBCDIC platforms), this is not sensible. Any +application that did need both could compile two versions of the library, using +macros to give the functions distinct names. */ + +#ifndef SUPPORT_UTF + +/* UTF-8 support is not enabled; use the platform-dependent character literals +so that PCRE works in both ASCII and EBCDIC environments, but only in non-UTF +mode. Newline characters are problematic in EBCDIC. Though it has CR and LF +characters, a common practice has been to use its NL (0x15) character as the +line terminator in C-like processing environments. However, sometimes the LF +(0x25) character is used instead, according to this Unicode document: + +http://unicode.org/standard/reports/tr13/tr13-5.html + +PCRE defaults EBCDIC NL to 0x15, but has a build-time option to select 0x25 +instead. Whichever is *not* chosen is defined as NEL. + +In both ASCII and EBCDIC environments, CHAR_NL and CHAR_LF are synonyms for the +same code point. */ + +#ifdef EBCDIC + +#ifndef EBCDIC_NL25 +#define CHAR_NL '\x15' +#define CHAR_NEL '\x25' +#define STR_NL "\x15" +#define STR_NEL "\x25" +#else +#define CHAR_NL '\x25' +#define CHAR_NEL '\x15' +#define STR_NL "\x25" +#define STR_NEL "\x15" +#endif + +#define CHAR_LF CHAR_NL +#define STR_LF STR_NL + +#define CHAR_ESC '\047' +#define CHAR_DEL '\007' +#define STR_ESC "\047" +#define STR_DEL "\007" + +#else /* Not EBCDIC */ + +/* In ASCII/Unicode, linefeed is '\n' and we equate this to NL for +compatibility. NEL is the Unicode newline character; make sure it is +a positive value. */ + +#define CHAR_LF '\n' +#define CHAR_NL CHAR_LF +#define CHAR_NEL ((unsigned char)'\x85') +#define CHAR_ESC '\033' +#define CHAR_DEL '\177' + +#define STR_LF "\n" +#define STR_NL STR_LF +#define STR_NEL "\x85" +#define STR_ESC "\033" +#define STR_DEL "\177" + +#endif /* EBCDIC */ + +/* The remaining definitions work in both environments. */ + +#define CHAR_NULL '\0' +#define CHAR_HT '\t' +#define CHAR_VT '\v' +#define CHAR_FF '\f' +#define CHAR_CR '\r' +#define CHAR_BS '\b' +#define CHAR_BEL '\a' + +#define CHAR_SPACE ' ' +#define CHAR_EXCLAMATION_MARK '!' +#define CHAR_QUOTATION_MARK '"' +#define CHAR_NUMBER_SIGN '#' +#define CHAR_DOLLAR_SIGN '$' +#define CHAR_PERCENT_SIGN '%' +#define CHAR_AMPERSAND '&' +#define CHAR_APOSTROPHE '\'' +#define CHAR_LEFT_PARENTHESIS '(' +#define CHAR_RIGHT_PARENTHESIS ')' +#define CHAR_ASTERISK '*' +#define CHAR_PLUS '+' +#define CHAR_COMMA ',' +#define CHAR_MINUS '-' +#define CHAR_DOT '.' +#define CHAR_SLASH '/' +#define CHAR_0 '0' +#define CHAR_1 '1' +#define CHAR_2 '2' +#define CHAR_3 '3' +#define CHAR_4 '4' +#define CHAR_5 '5' +#define CHAR_6 '6' +#define CHAR_7 '7' +#define CHAR_8 '8' +#define CHAR_9 '9' +#define CHAR_COLON ':' +#define CHAR_SEMICOLON ';' +#define CHAR_LESS_THAN_SIGN '<' +#define CHAR_EQUALS_SIGN '=' +#define CHAR_GREATER_THAN_SIGN '>' +#define CHAR_QUESTION_MARK '?' +#define CHAR_COMMERCIAL_AT '@' +#define CHAR_A 'A' +#define CHAR_B 'B' +#define CHAR_C 'C' +#define CHAR_D 'D' +#define CHAR_E 'E' +#define CHAR_F 'F' +#define CHAR_G 'G' +#define CHAR_H 'H' +#define CHAR_I 'I' +#define CHAR_J 'J' +#define CHAR_K 'K' +#define CHAR_L 'L' +#define CHAR_M 'M' +#define CHAR_N 'N' +#define CHAR_O 'O' +#define CHAR_P 'P' +#define CHAR_Q 'Q' +#define CHAR_R 'R' +#define CHAR_S 'S' +#define CHAR_T 'T' +#define CHAR_U 'U' +#define CHAR_V 'V' +#define CHAR_W 'W' +#define CHAR_X 'X' +#define CHAR_Y 'Y' +#define CHAR_Z 'Z' +#define CHAR_LEFT_SQUARE_BRACKET '[' +#define CHAR_BACKSLASH '\\' +#define CHAR_RIGHT_SQUARE_BRACKET ']' +#define CHAR_CIRCUMFLEX_ACCENT '^' +#define CHAR_UNDERSCORE '_' +#define CHAR_GRAVE_ACCENT '`' +#define CHAR_a 'a' +#define CHAR_b 'b' +#define CHAR_c 'c' +#define CHAR_d 'd' +#define CHAR_e 'e' +#define CHAR_f 'f' +#define CHAR_g 'g' +#define CHAR_h 'h' +#define CHAR_i 'i' +#define CHAR_j 'j' +#define CHAR_k 'k' +#define CHAR_l 'l' +#define CHAR_m 'm' +#define CHAR_n 'n' +#define CHAR_o 'o' +#define CHAR_p 'p' +#define CHAR_q 'q' +#define CHAR_r 'r' +#define CHAR_s 's' +#define CHAR_t 't' +#define CHAR_u 'u' +#define CHAR_v 'v' +#define CHAR_w 'w' +#define CHAR_x 'x' +#define CHAR_y 'y' +#define CHAR_z 'z' +#define CHAR_LEFT_CURLY_BRACKET '{' +#define CHAR_VERTICAL_LINE '|' +#define CHAR_RIGHT_CURLY_BRACKET '}' +#define CHAR_TILDE '~' + +#define STR_HT "\t" +#define STR_VT "\v" +#define STR_FF "\f" +#define STR_CR "\r" +#define STR_BS "\b" +#define STR_BEL "\a" + +#define STR_SPACE " " +#define STR_EXCLAMATION_MARK "!" +#define STR_QUOTATION_MARK "\"" +#define STR_NUMBER_SIGN "#" +#define STR_DOLLAR_SIGN "$" +#define STR_PERCENT_SIGN "%" +#define STR_AMPERSAND "&" +#define STR_APOSTROPHE "'" +#define STR_LEFT_PARENTHESIS "(" +#define STR_RIGHT_PARENTHESIS ")" +#define STR_ASTERISK "*" +#define STR_PLUS "+" +#define STR_COMMA "," +#define STR_MINUS "-" +#define STR_DOT "." +#define STR_SLASH "/" +#define STR_0 "0" +#define STR_1 "1" +#define STR_2 "2" +#define STR_3 "3" +#define STR_4 "4" +#define STR_5 "5" +#define STR_6 "6" +#define STR_7 "7" +#define STR_8 "8" +#define STR_9 "9" +#define STR_COLON ":" +#define STR_SEMICOLON ";" +#define STR_LESS_THAN_SIGN "<" +#define STR_EQUALS_SIGN "=" +#define STR_GREATER_THAN_SIGN ">" +#define STR_QUESTION_MARK "?" +#define STR_COMMERCIAL_AT "@" +#define STR_A "A" +#define STR_B "B" +#define STR_C "C" +#define STR_D "D" +#define STR_E "E" +#define STR_F "F" +#define STR_G "G" +#define STR_H "H" +#define STR_I "I" +#define STR_J "J" +#define STR_K "K" +#define STR_L "L" +#define STR_M "M" +#define STR_N "N" +#define STR_O "O" +#define STR_P "P" +#define STR_Q "Q" +#define STR_R "R" +#define STR_S "S" +#define STR_T "T" +#define STR_U "U" +#define STR_V "V" +#define STR_W "W" +#define STR_X "X" +#define STR_Y "Y" +#define STR_Z "Z" +#define STR_LEFT_SQUARE_BRACKET "[" +#define STR_BACKSLASH "\\" +#define STR_RIGHT_SQUARE_BRACKET "]" +#define STR_CIRCUMFLEX_ACCENT "^" +#define STR_UNDERSCORE "_" +#define STR_GRAVE_ACCENT "`" +#define STR_a "a" +#define STR_b "b" +#define STR_c "c" +#define STR_d "d" +#define STR_e "e" +#define STR_f "f" +#define STR_g "g" +#define STR_h "h" +#define STR_i "i" +#define STR_j "j" +#define STR_k "k" +#define STR_l "l" +#define STR_m "m" +#define STR_n "n" +#define STR_o "o" +#define STR_p "p" +#define STR_q "q" +#define STR_r "r" +#define STR_s "s" +#define STR_t "t" +#define STR_u "u" +#define STR_v "v" +#define STR_w "w" +#define STR_x "x" +#define STR_y "y" +#define STR_z "z" +#define STR_LEFT_CURLY_BRACKET "{" +#define STR_VERTICAL_LINE "|" +#define STR_RIGHT_CURLY_BRACKET "}" +#define STR_TILDE "~" + +#define STRING_ACCEPT0 "ACCEPT\0" +#define STRING_COMMIT0 "COMMIT\0" +#define STRING_F0 "F\0" +#define STRING_FAIL0 "FAIL\0" +#define STRING_MARK0 "MARK\0" +#define STRING_PRUNE0 "PRUNE\0" +#define STRING_SKIP0 "SKIP\0" +#define STRING_THEN "THEN" + +#define STRING_alpha0 "alpha\0" +#define STRING_lower0 "lower\0" +#define STRING_upper0 "upper\0" +#define STRING_alnum0 "alnum\0" +#define STRING_ascii0 "ascii\0" +#define STRING_blank0 "blank\0" +#define STRING_cntrl0 "cntrl\0" +#define STRING_digit0 "digit\0" +#define STRING_graph0 "graph\0" +#define STRING_print0 "print\0" +#define STRING_punct0 "punct\0" +#define STRING_space0 "space\0" +#define STRING_word0 "word\0" +#define STRING_xdigit "xdigit" + +#define STRING_DEFINE "DEFINE" +#define STRING_WEIRD_STARTWORD "[:<:]]" +#define STRING_WEIRD_ENDWORD "[:>:]]" + +#define STRING_CR_RIGHTPAR "CR)" +#define STRING_LF_RIGHTPAR "LF)" +#define STRING_CRLF_RIGHTPAR "CRLF)" +#define STRING_ANY_RIGHTPAR "ANY)" +#define STRING_ANYCRLF_RIGHTPAR "ANYCRLF)" +#define STRING_BSR_ANYCRLF_RIGHTPAR "BSR_ANYCRLF)" +#define STRING_BSR_UNICODE_RIGHTPAR "BSR_UNICODE)" +#define STRING_UTF8_RIGHTPAR "UTF8)" +#define STRING_UTF16_RIGHTPAR "UTF16)" +#define STRING_UTF32_RIGHTPAR "UTF32)" +#define STRING_UTF_RIGHTPAR "UTF)" +#define STRING_UCP_RIGHTPAR "UCP)" +#define STRING_NO_AUTO_POSSESS_RIGHTPAR "NO_AUTO_POSSESS)" +#define STRING_NO_START_OPT_RIGHTPAR "NO_START_OPT)" +#define STRING_LIMIT_MATCH_EQ "LIMIT_MATCH=" +#define STRING_LIMIT_RECURSION_EQ "LIMIT_RECURSION=" + +#else /* SUPPORT_UTF */ + +/* UTF-8 support is enabled; always use UTF-8 (=ASCII) character codes. This +works in both modes non-EBCDIC platforms, and on EBCDIC platforms in UTF-8 mode +only. */ + +#define CHAR_HT '\011' +#define CHAR_VT '\013' +#define CHAR_FF '\014' +#define CHAR_CR '\015' +#define CHAR_LF '\012' +#define CHAR_NL CHAR_LF +#define CHAR_NEL ((unsigned char)'\x85') +#define CHAR_BS '\010' +#define CHAR_BEL '\007' +#define CHAR_ESC '\033' +#define CHAR_DEL '\177' + +#define CHAR_NULL '\0' +#define CHAR_SPACE '\040' +#define CHAR_EXCLAMATION_MARK '\041' +#define CHAR_QUOTATION_MARK '\042' +#define CHAR_NUMBER_SIGN '\043' +#define CHAR_DOLLAR_SIGN '\044' +#define CHAR_PERCENT_SIGN '\045' +#define CHAR_AMPERSAND '\046' +#define CHAR_APOSTROPHE '\047' +#define CHAR_LEFT_PARENTHESIS '\050' +#define CHAR_RIGHT_PARENTHESIS '\051' +#define CHAR_ASTERISK '\052' +#define CHAR_PLUS '\053' +#define CHAR_COMMA '\054' +#define CHAR_MINUS '\055' +#define CHAR_DOT '\056' +#define CHAR_SLASH '\057' +#define CHAR_0 '\060' +#define CHAR_1 '\061' +#define CHAR_2 '\062' +#define CHAR_3 '\063' +#define CHAR_4 '\064' +#define CHAR_5 '\065' +#define CHAR_6 '\066' +#define CHAR_7 '\067' +#define CHAR_8 '\070' +#define CHAR_9 '\071' +#define CHAR_COLON '\072' +#define CHAR_SEMICOLON '\073' +#define CHAR_LESS_THAN_SIGN '\074' +#define CHAR_EQUALS_SIGN '\075' +#define CHAR_GREATER_THAN_SIGN '\076' +#define CHAR_QUESTION_MARK '\077' +#define CHAR_COMMERCIAL_AT '\100' +#define CHAR_A '\101' +#define CHAR_B '\102' +#define CHAR_C '\103' +#define CHAR_D '\104' +#define CHAR_E '\105' +#define CHAR_F '\106' +#define CHAR_G '\107' +#define CHAR_H '\110' +#define CHAR_I '\111' +#define CHAR_J '\112' +#define CHAR_K '\113' +#define CHAR_L '\114' +#define CHAR_M '\115' +#define CHAR_N '\116' +#define CHAR_O '\117' +#define CHAR_P '\120' +#define CHAR_Q '\121' +#define CHAR_R '\122' +#define CHAR_S '\123' +#define CHAR_T '\124' +#define CHAR_U '\125' +#define CHAR_V '\126' +#define CHAR_W '\127' +#define CHAR_X '\130' +#define CHAR_Y '\131' +#define CHAR_Z '\132' +#define CHAR_LEFT_SQUARE_BRACKET '\133' +#define CHAR_BACKSLASH '\134' +#define CHAR_RIGHT_SQUARE_BRACKET '\135' +#define CHAR_CIRCUMFLEX_ACCENT '\136' +#define CHAR_UNDERSCORE '\137' +#define CHAR_GRAVE_ACCENT '\140' +#define CHAR_a '\141' +#define CHAR_b '\142' +#define CHAR_c '\143' +#define CHAR_d '\144' +#define CHAR_e '\145' +#define CHAR_f '\146' +#define CHAR_g '\147' +#define CHAR_h '\150' +#define CHAR_i '\151' +#define CHAR_j '\152' +#define CHAR_k '\153' +#define CHAR_l '\154' +#define CHAR_m '\155' +#define CHAR_n '\156' +#define CHAR_o '\157' +#define CHAR_p '\160' +#define CHAR_q '\161' +#define CHAR_r '\162' +#define CHAR_s '\163' +#define CHAR_t '\164' +#define CHAR_u '\165' +#define CHAR_v '\166' +#define CHAR_w '\167' +#define CHAR_x '\170' +#define CHAR_y '\171' +#define CHAR_z '\172' +#define CHAR_LEFT_CURLY_BRACKET '\173' +#define CHAR_VERTICAL_LINE '\174' +#define CHAR_RIGHT_CURLY_BRACKET '\175' +#define CHAR_TILDE '\176' + +#define STR_HT "\011" +#define STR_VT "\013" +#define STR_FF "\014" +#define STR_CR "\015" +#define STR_NL "\012" +#define STR_BS "\010" +#define STR_BEL "\007" +#define STR_ESC "\033" +#define STR_DEL "\177" + +#define STR_SPACE "\040" +#define STR_EXCLAMATION_MARK "\041" +#define STR_QUOTATION_MARK "\042" +#define STR_NUMBER_SIGN "\043" +#define STR_DOLLAR_SIGN "\044" +#define STR_PERCENT_SIGN "\045" +#define STR_AMPERSAND "\046" +#define STR_APOSTROPHE "\047" +#define STR_LEFT_PARENTHESIS "\050" +#define STR_RIGHT_PARENTHESIS "\051" +#define STR_ASTERISK "\052" +#define STR_PLUS "\053" +#define STR_COMMA "\054" +#define STR_MINUS "\055" +#define STR_DOT "\056" +#define STR_SLASH "\057" +#define STR_0 "\060" +#define STR_1 "\061" +#define STR_2 "\062" +#define STR_3 "\063" +#define STR_4 "\064" +#define STR_5 "\065" +#define STR_6 "\066" +#define STR_7 "\067" +#define STR_8 "\070" +#define STR_9 "\071" +#define STR_COLON "\072" +#define STR_SEMICOLON "\073" +#define STR_LESS_THAN_SIGN "\074" +#define STR_EQUALS_SIGN "\075" +#define STR_GREATER_THAN_SIGN "\076" +#define STR_QUESTION_MARK "\077" +#define STR_COMMERCIAL_AT "\100" +#define STR_A "\101" +#define STR_B "\102" +#define STR_C "\103" +#define STR_D "\104" +#define STR_E "\105" +#define STR_F "\106" +#define STR_G "\107" +#define STR_H "\110" +#define STR_I "\111" +#define STR_J "\112" +#define STR_K "\113" +#define STR_L "\114" +#define STR_M "\115" +#define STR_N "\116" +#define STR_O "\117" +#define STR_P "\120" +#define STR_Q "\121" +#define STR_R "\122" +#define STR_S "\123" +#define STR_T "\124" +#define STR_U "\125" +#define STR_V "\126" +#define STR_W "\127" +#define STR_X "\130" +#define STR_Y "\131" +#define STR_Z "\132" +#define STR_LEFT_SQUARE_BRACKET "\133" +#define STR_BACKSLASH "\134" +#define STR_RIGHT_SQUARE_BRACKET "\135" +#define STR_CIRCUMFLEX_ACCENT "\136" +#define STR_UNDERSCORE "\137" +#define STR_GRAVE_ACCENT "\140" +#define STR_a "\141" +#define STR_b "\142" +#define STR_c "\143" +#define STR_d "\144" +#define STR_e "\145" +#define STR_f "\146" +#define STR_g "\147" +#define STR_h "\150" +#define STR_i "\151" +#define STR_j "\152" +#define STR_k "\153" +#define STR_l "\154" +#define STR_m "\155" +#define STR_n "\156" +#define STR_o "\157" +#define STR_p "\160" +#define STR_q "\161" +#define STR_r "\162" +#define STR_s "\163" +#define STR_t "\164" +#define STR_u "\165" +#define STR_v "\166" +#define STR_w "\167" +#define STR_x "\170" +#define STR_y "\171" +#define STR_z "\172" +#define STR_LEFT_CURLY_BRACKET "\173" +#define STR_VERTICAL_LINE "\174" +#define STR_RIGHT_CURLY_BRACKET "\175" +#define STR_TILDE "\176" + +#define STRING_ACCEPT0 STR_A STR_C STR_C STR_E STR_P STR_T "\0" +#define STRING_COMMIT0 STR_C STR_O STR_M STR_M STR_I STR_T "\0" +#define STRING_F0 STR_F "\0" +#define STRING_FAIL0 STR_F STR_A STR_I STR_L "\0" +#define STRING_MARK0 STR_M STR_A STR_R STR_K "\0" +#define STRING_PRUNE0 STR_P STR_R STR_U STR_N STR_E "\0" +#define STRING_SKIP0 STR_S STR_K STR_I STR_P "\0" +#define STRING_THEN STR_T STR_H STR_E STR_N + +#define STRING_alpha0 STR_a STR_l STR_p STR_h STR_a "\0" +#define STRING_lower0 STR_l STR_o STR_w STR_e STR_r "\0" +#define STRING_upper0 STR_u STR_p STR_p STR_e STR_r "\0" +#define STRING_alnum0 STR_a STR_l STR_n STR_u STR_m "\0" +#define STRING_ascii0 STR_a STR_s STR_c STR_i STR_i "\0" +#define STRING_blank0 STR_b STR_l STR_a STR_n STR_k "\0" +#define STRING_cntrl0 STR_c STR_n STR_t STR_r STR_l "\0" +#define STRING_digit0 STR_d STR_i STR_g STR_i STR_t "\0" +#define STRING_graph0 STR_g STR_r STR_a STR_p STR_h "\0" +#define STRING_print0 STR_p STR_r STR_i STR_n STR_t "\0" +#define STRING_punct0 STR_p STR_u STR_n STR_c STR_t "\0" +#define STRING_space0 STR_s STR_p STR_a STR_c STR_e "\0" +#define STRING_word0 STR_w STR_o STR_r STR_d "\0" +#define STRING_xdigit STR_x STR_d STR_i STR_g STR_i STR_t + +#define STRING_DEFINE STR_D STR_E STR_F STR_I STR_N STR_E +#define STRING_WEIRD_STARTWORD STR_LEFT_SQUARE_BRACKET STR_COLON STR_LESS_THAN_SIGN STR_COLON STR_RIGHT_SQUARE_BRACKET STR_RIGHT_SQUARE_BRACKET +#define STRING_WEIRD_ENDWORD STR_LEFT_SQUARE_BRACKET STR_COLON STR_GREATER_THAN_SIGN STR_COLON STR_RIGHT_SQUARE_BRACKET STR_RIGHT_SQUARE_BRACKET + +#define STRING_CR_RIGHTPAR STR_C STR_R STR_RIGHT_PARENTHESIS +#define STRING_LF_RIGHTPAR STR_L STR_F STR_RIGHT_PARENTHESIS +#define STRING_CRLF_RIGHTPAR STR_C STR_R STR_L STR_F STR_RIGHT_PARENTHESIS +#define STRING_ANY_RIGHTPAR STR_A STR_N STR_Y STR_RIGHT_PARENTHESIS +#define STRING_ANYCRLF_RIGHTPAR STR_A STR_N STR_Y STR_C STR_R STR_L STR_F STR_RIGHT_PARENTHESIS +#define STRING_BSR_ANYCRLF_RIGHTPAR STR_B STR_S STR_R STR_UNDERSCORE STR_A STR_N STR_Y STR_C STR_R STR_L STR_F STR_RIGHT_PARENTHESIS +#define STRING_BSR_UNICODE_RIGHTPAR STR_B STR_S STR_R STR_UNDERSCORE STR_U STR_N STR_I STR_C STR_O STR_D STR_E STR_RIGHT_PARENTHESIS +#define STRING_UTF8_RIGHTPAR STR_U STR_T STR_F STR_8 STR_RIGHT_PARENTHESIS +#define STRING_UTF16_RIGHTPAR STR_U STR_T STR_F STR_1 STR_6 STR_RIGHT_PARENTHESIS +#define STRING_UTF32_RIGHTPAR STR_U STR_T STR_F STR_3 STR_2 STR_RIGHT_PARENTHESIS +#define STRING_UTF_RIGHTPAR STR_U STR_T STR_F STR_RIGHT_PARENTHESIS +#define STRING_UCP_RIGHTPAR STR_U STR_C STR_P STR_RIGHT_PARENTHESIS +#define STRING_NO_AUTO_POSSESS_RIGHTPAR STR_N STR_O STR_UNDERSCORE STR_A STR_U STR_T STR_O STR_UNDERSCORE STR_P STR_O STR_S STR_S STR_E STR_S STR_S STR_RIGHT_PARENTHESIS +#define STRING_NO_START_OPT_RIGHTPAR STR_N STR_O STR_UNDERSCORE STR_S STR_T STR_A STR_R STR_T STR_UNDERSCORE STR_O STR_P STR_T STR_RIGHT_PARENTHESIS +#define STRING_LIMIT_MATCH_EQ STR_L STR_I STR_M STR_I STR_T STR_UNDERSCORE STR_M STR_A STR_T STR_C STR_H STR_EQUALS_SIGN +#define STRING_LIMIT_RECURSION_EQ STR_L STR_I STR_M STR_I STR_T STR_UNDERSCORE STR_R STR_E STR_C STR_U STR_R STR_S STR_I STR_O STR_N STR_EQUALS_SIGN + +#endif /* SUPPORT_UTF */ + /* Escape items that are just an encoding of a particular data value. */ #ifndef ESC_e -#define ESC_e 27 +#define ESC_e CHAR_ESC #endif #ifndef ESC_f -#define ESC_f '\f' +#define ESC_f CHAR_FF #endif #ifndef ESC_n -#define ESC_n '\n' +#define ESC_n CHAR_LF #endif #ifndef ESC_r -#define ESC_r '\r' +#define ESC_r CHAR_CR #endif /* We can't officially use ESC_t because it is a POSIX reserved identifier (presumably because of all the others like size_t). */ #ifndef ESC_tee -#define ESC_tee '\t' +#define ESC_tee CHAR_HT #endif /* Codes for different types of Unicode property */ #define PT_ANY 0 /* Any property - matches all chars */ #define PT_LAMP 1 /* L& - the union of Lu, Ll, Lt */ -#define PT_GC 2 /* General characteristic (e.g. L) */ -#define PT_PC 3 /* Particular characteristic (e.g. Lu) */ +#define PT_GC 2 /* Specified general characteristic (e.g. L) */ +#define PT_PC 3 /* Specified particular characteristic (e.g. Lu) */ #define PT_SC 4 /* Script (e.g. Han) */ +#define PT_ALNUM 5 /* Alphanumeric - the union of L and N */ +#define PT_SPACE 6 /* Perl space - Z plus 9,10,12,13 */ +#define PT_PXSPACE 7 /* POSIX space - Z plus 9,10,11,12,13 */ +#define PT_WORD 8 /* Word - L plus N plus underscore */ +#define PT_CLIST 9 /* Pseudo-property: match character list */ +#define PT_UCNC 10 /* Universal Character nameable character */ +#define PT_TABSIZE 11 /* Size of square table for autopossessify tests */ + +/* The following special properties are used only in XCLASS items, when POSIX +classes are specified and PCRE_UCP is set - in other words, for Unicode +handling of these classes. They are not available via the \p or \P escapes like +those in the above list, and so they do not take part in the autopossessifying +table. */ + +#define PT_PXGRAPH 11 /* [:graph:] - characters that mark the paper */ +#define PT_PXPRINT 12 /* [:print:] - [:graph:] plus non-control spaces */ +#define PT_PXPUNCT 13 /* [:punct:] - punctuation characters */ /* Flag bits and data types for the extended class (OP_XCLASS) for classes that -contain UTF-8 characters with values greater than 255. */ +contain characters with values greater than 255. */ -#define XCL_NOT 0x01 /* Flag: this is a negative class */ -#define XCL_MAP 0x02 /* Flag: a 32-byte map is present */ +#define XCL_NOT 0x01 /* Flag: this is a negative class */ +#define XCL_MAP 0x02 /* Flag: a 32-byte map is present */ +#define XCL_HASPROP 0x04 /* Flag: property checks are present. */ #define XCL_END 0 /* Marks end of individual items */ #define XCL_SINGLE 1 /* Single item (one multibyte char) follows */ @@ -615,31 +1824,56 @@ contain UTF-8 characters with values greater than 255. */ #define XCL_NOTPROP 4 /* Unicode inverted property (ditto) */ /* These are escaped items that aren't just an encoding of a particular data -value such as \n. They must have non-zero values, as check_escape() returns -their negation. Also, they must appear in the same order as in the opcode -definitions below, up to ESC_z. There's a dummy for OP_ANY because it -corresponds to "." rather than an escape sequence, and another for OP_ALLANY -(which is used for [^] in JavaScript compatibility mode). +value such as \n. They must have non-zero values, as check_escape() returns 0 +for a data character. Also, they must appear in the same order as in the +opcode definitions below, up to ESC_z. There's a dummy for OP_ALLANY because it +corresponds to "." in DOTALL mode rather than an escape sequence. It is also +used for [^] in JavaScript compatibility mode, and for \C in non-utf mode. In +non-DOTALL mode, "." behaves like \N. -The final escape must be ESC_REF as subsequent values are used for -backreferences (\1, \2, \3, etc). There are two tests in the code for an escape +The special values ESC_DU, ESC_du, etc. are used instead of ESC_D, ESC_d, etc. +when PCRE_UCP is set and replacement of \d etc by \p sequences is required. +They must be contiguous, and remain in order so that the replacements can be +looked up from a table. + +Negative numbers are used to encode a backreference (\1, \2, \3, etc.) in +check_escape(). There are two tests in the code for an escape greater than ESC_b and less than ESC_Z to detect the types that may be repeated. These are the types that consume characters. If any new escapes are put in between that don't consume a character, that code will have to change. */ enum { ESC_A = 1, ESC_G, ESC_K, ESC_B, ESC_b, ESC_D, ESC_d, ESC_S, ESC_s, - ESC_W, ESC_w, ESC_dum1, ESC_dum2, ESC_C, ESC_P, ESC_p, ESC_R, ESC_H, - ESC_h, ESC_V, ESC_v, ESC_X, ESC_Z, ESC_z, ESC_E, ESC_Q, ESC_g, ESC_k, - ESC_REF }; + ESC_W, ESC_w, ESC_N, ESC_dum, ESC_C, ESC_P, ESC_p, ESC_R, ESC_H, + ESC_h, ESC_V, ESC_v, ESC_X, ESC_Z, ESC_z, + ESC_E, ESC_Q, ESC_g, ESC_k, + ESC_DU, ESC_du, ESC_SU, ESC_su, ESC_WU, ESC_wu }; -/* Opcode table: Starting from 1 (i.e. after OP_END), the values up to -OP_EOD must correspond in order to the list of escapes immediately above. +/********************** Opcode definitions ******************/ -*** NOTE NOTE NOTE *** Whenever this list is updated, the two macro definitions -that follow must also be updated to match. There is also a table called -"coptable" in pcre_dfa_exec.c that must be updated. */ +/****** NOTE NOTE NOTE ****** + +Starting from 1 (i.e. after OP_END), the values up to OP_EOD must correspond in +order to the list of escapes immediately above. Furthermore, values up to +OP_DOLLM must not be changed without adjusting the table called autoposstab in +pcre_compile.c + +Whenever this list is updated, the two macro definitions that follow must be +updated to match. The possessification table called "opcode_possessify" in +pcre_compile.c must also be updated, and also the tables called "coptable" +and "poptable" in pcre_dfa_exec.c. + +****** NOTE NOTE NOTE ******/ + + +/* The values between FIRST_AUTOTAB_OP and LAST_AUTOTAB_RIGHT_OP, inclusive, +are used in a table for deciding whether a repeated character type can be +auto-possessified. */ + +#define FIRST_AUTOTAB_OP OP_NOT_DIGIT +#define LAST_AUTOTAB_LEFT_OP OP_EXTUNI +#define LAST_AUTOTAB_RIGHT_OP OP_DOLLM enum { OP_END, /* 0 End of pattern */ @@ -657,8 +1891,9 @@ enum { OP_WHITESPACE, /* 9 \s */ OP_NOT_WORDCHAR, /* 10 \W */ OP_WORDCHAR, /* 11 \w */ - OP_ANY, /* 12 Match any character (subject to DOTALL) */ - OP_ALLANY, /* 13 Match any character (not subject to DOTALL) */ + + OP_ANY, /* 12 Match any character except newline (\N) */ + OP_ALLANY, /* 13 Match any character */ OP_ANYBYTE, /* 14 Match any byte (\C); different to OP_ANY for UTF-8 */ OP_NOTPROP, /* 15 \P (not Unicode property) */ OP_PROP, /* 16 \p (Unicode property) */ @@ -668,161 +1903,276 @@ enum { OP_NOT_VSPACE, /* 20 \V (not vertical whitespace) */ OP_VSPACE, /* 21 \v (vertical whitespace) */ OP_EXTUNI, /* 22 \X (extended Unicode sequence */ - OP_EODN, /* 23 End of data or \n at end of data: \Z. */ - OP_EOD, /* 24 End of data: \z */ + OP_EODN, /* 23 End of data or \n at end of data (\Z) */ + OP_EOD, /* 24 End of data (\z) */ - OP_OPT, /* 25 Set runtime options */ - OP_CIRC, /* 26 Start of line - varies with multiline switch */ - OP_DOLL, /* 27 End of line - varies with multiline switch */ - OP_CHAR, /* 28 Match one character, casefully */ - OP_CHARNC, /* 29 Match one character, caselessly */ - OP_NOT, /* 30 Match one character, not the following one */ + /* Line end assertions */ - OP_STAR, /* 31 The maximizing and minimizing versions of */ - OP_MINSTAR, /* 32 these six opcodes must come in pairs, with */ - OP_PLUS, /* 33 the minimizing one second. */ - OP_MINPLUS, /* 34 This first set applies to single characters.*/ - OP_QUERY, /* 35 */ - OP_MINQUERY, /* 36 */ + OP_DOLL, /* 25 End of line - not multiline */ + OP_DOLLM, /* 26 End of line - multiline */ + OP_CIRC, /* 27 Start of line - not multiline */ + OP_CIRCM, /* 28 Start of line - multiline */ - OP_UPTO, /* 37 From 0 to n matches */ - OP_MINUPTO, /* 38 */ - OP_EXACT, /* 39 Exactly n matches */ + /* Single characters; caseful must precede the caseless ones */ - OP_POSSTAR, /* 40 Possessified star */ - OP_POSPLUS, /* 41 Possessified plus */ - OP_POSQUERY, /* 42 Posesssified query */ - OP_POSUPTO, /* 43 Possessified upto */ + OP_CHAR, /* 29 Match one character, casefully */ + OP_CHARI, /* 30 Match one character, caselessly */ + OP_NOT, /* 31 Match one character, not the given one, casefully */ + OP_NOTI, /* 32 Match one character, not the given one, caselessly */ - OP_NOTSTAR, /* 44 The maximizing and minimizing versions of */ - OP_NOTMINSTAR, /* 45 these six opcodes must come in pairs, with */ - OP_NOTPLUS, /* 46 the minimizing one second. They must be in */ - OP_NOTMINPLUS, /* 47 exactly the same order as those above. */ - OP_NOTQUERY, /* 48 This set applies to "not" single characters. */ - OP_NOTMINQUERY, /* 49 */ + /* The following sets of 13 opcodes must always be kept in step because + the offset from the first one is used to generate the others. */ - OP_NOTUPTO, /* 50 From 0 to n matches */ - OP_NOTMINUPTO, /* 51 */ - OP_NOTEXACT, /* 52 Exactly n matches */ + /* Repeated characters; caseful must precede the caseless ones */ - OP_NOTPOSSTAR, /* 53 Possessified versions */ - OP_NOTPOSPLUS, /* 54 */ - OP_NOTPOSQUERY, /* 55 */ - OP_NOTPOSUPTO, /* 56 */ + OP_STAR, /* 33 The maximizing and minimizing versions of */ + OP_MINSTAR, /* 34 these six opcodes must come in pairs, with */ + OP_PLUS, /* 35 the minimizing one second. */ + OP_MINPLUS, /* 36 */ + OP_QUERY, /* 37 */ + OP_MINQUERY, /* 38 */ - OP_TYPESTAR, /* 57 The maximizing and minimizing versions of */ - OP_TYPEMINSTAR, /* 58 these six opcodes must come in pairs, with */ - OP_TYPEPLUS, /* 59 the minimizing one second. These codes must */ - OP_TYPEMINPLUS, /* 60 be in exactly the same order as those above. */ - OP_TYPEQUERY, /* 61 This set applies to character types such as \d */ - OP_TYPEMINQUERY, /* 62 */ + OP_UPTO, /* 39 From 0 to n matches of one character, caseful*/ + OP_MINUPTO, /* 40 */ + OP_EXACT, /* 41 Exactly n matches */ - OP_TYPEUPTO, /* 63 From 0 to n matches */ - OP_TYPEMINUPTO, /* 64 */ - OP_TYPEEXACT, /* 65 Exactly n matches */ + OP_POSSTAR, /* 42 Possessified star, caseful */ + OP_POSPLUS, /* 43 Possessified plus, caseful */ + OP_POSQUERY, /* 44 Posesssified query, caseful */ + OP_POSUPTO, /* 45 Possessified upto, caseful */ - OP_TYPEPOSSTAR, /* 66 Possessified versions */ - OP_TYPEPOSPLUS, /* 67 */ - OP_TYPEPOSQUERY, /* 68 */ - OP_TYPEPOSUPTO, /* 69 */ + /* Repeated characters; caseless must follow the caseful ones */ - OP_CRSTAR, /* 70 The maximizing and minimizing versions of */ - OP_CRMINSTAR, /* 71 all these opcodes must come in pairs, with */ - OP_CRPLUS, /* 72 the minimizing one second. These codes must */ - OP_CRMINPLUS, /* 73 be in exactly the same order as those above. */ - OP_CRQUERY, /* 74 These are for character classes and back refs */ - OP_CRMINQUERY, /* 75 */ - OP_CRRANGE, /* 76 These are different to the three sets above. */ - OP_CRMINRANGE, /* 77 */ + OP_STARI, /* 46 */ + OP_MINSTARI, /* 47 */ + OP_PLUSI, /* 48 */ + OP_MINPLUSI, /* 49 */ + OP_QUERYI, /* 50 */ + OP_MINQUERYI, /* 51 */ - OP_CLASS, /* 78 Match a character class, chars < 256 only */ - OP_NCLASS, /* 79 Same, but the bitmap was created from a negative - class - the difference is relevant only when a UTF-8 - character > 255 is encountered. */ + OP_UPTOI, /* 52 From 0 to n matches of one character, caseless */ + OP_MINUPTOI, /* 53 */ + OP_EXACTI, /* 54 */ - OP_XCLASS, /* 80 Extended class for handling UTF-8 chars within the - class. This does both positive and negative. */ + OP_POSSTARI, /* 55 Possessified star, caseless */ + OP_POSPLUSI, /* 56 Possessified plus, caseless */ + OP_POSQUERYI, /* 57 Posesssified query, caseless */ + OP_POSUPTOI, /* 58 Possessified upto, caseless */ - OP_REF, /* 81 Match a back reference */ - OP_RECURSE, /* 82 Match a numbered subpattern (possibly recursive) */ - OP_CALLOUT, /* 83 Call out to external function if provided */ + /* The negated ones must follow the non-negated ones, and match them */ + /* Negated repeated character, caseful; must precede the caseless ones */ - OP_ALT, /* 84 Start of alternation */ - OP_KET, /* 85 End of group that doesn't have an unbounded repeat */ - OP_KETRMAX, /* 86 These two must remain together and in this */ - OP_KETRMIN, /* 87 order. They are for groups the repeat for ever. */ + OP_NOTSTAR, /* 59 The maximizing and minimizing versions of */ + OP_NOTMINSTAR, /* 60 these six opcodes must come in pairs, with */ + OP_NOTPLUS, /* 61 the minimizing one second. They must be in */ + OP_NOTMINPLUS, /* 62 exactly the same order as those above. */ + OP_NOTQUERY, /* 63 */ + OP_NOTMINQUERY, /* 64 */ - /* The assertions must come before BRA, CBRA, ONCE, and COND.*/ + OP_NOTUPTO, /* 65 From 0 to n matches, caseful */ + OP_NOTMINUPTO, /* 66 */ + OP_NOTEXACT, /* 67 Exactly n matches */ - OP_ASSERT, /* 88 Positive lookahead */ - OP_ASSERT_NOT, /* 89 Negative lookahead */ - OP_ASSERTBACK, /* 90 Positive lookbehind */ - OP_ASSERTBACK_NOT, /* 91 Negative lookbehind */ - OP_REVERSE, /* 92 Move pointer back - used in lookbehind assertions */ + OP_NOTPOSSTAR, /* 68 Possessified versions, caseful */ + OP_NOTPOSPLUS, /* 69 */ + OP_NOTPOSQUERY, /* 70 */ + OP_NOTPOSUPTO, /* 71 */ - /* ONCE, BRA, CBRA, and COND must come after the assertions, with ONCE first, - as there's a test for >= ONCE for a subpattern that isn't an assertion. */ + /* Negated repeated character, caseless; must follow the caseful ones */ - OP_ONCE, /* 93 Atomic group */ - OP_BRA, /* 94 Start of non-capturing bracket */ - OP_CBRA, /* 95 Start of capturing bracket */ - OP_COND, /* 96 Conditional group */ + OP_NOTSTARI, /* 72 */ + OP_NOTMINSTARI, /* 73 */ + OP_NOTPLUSI, /* 74 */ + OP_NOTMINPLUSI, /* 75 */ + OP_NOTQUERYI, /* 76 */ + OP_NOTMINQUERYI, /* 77 */ - /* These three must follow the previous three, in the same order. There's a + OP_NOTUPTOI, /* 78 From 0 to n matches, caseless */ + OP_NOTMINUPTOI, /* 79 */ + OP_NOTEXACTI, /* 80 Exactly n matches */ + + OP_NOTPOSSTARI, /* 81 Possessified versions, caseless */ + OP_NOTPOSPLUSI, /* 82 */ + OP_NOTPOSQUERYI, /* 83 */ + OP_NOTPOSUPTOI, /* 84 */ + + /* Character types */ + + OP_TYPESTAR, /* 85 The maximizing and minimizing versions of */ + OP_TYPEMINSTAR, /* 86 these six opcodes must come in pairs, with */ + OP_TYPEPLUS, /* 87 the minimizing one second. These codes must */ + OP_TYPEMINPLUS, /* 88 be in exactly the same order as those above. */ + OP_TYPEQUERY, /* 89 */ + OP_TYPEMINQUERY, /* 90 */ + + OP_TYPEUPTO, /* 91 From 0 to n matches */ + OP_TYPEMINUPTO, /* 92 */ + OP_TYPEEXACT, /* 93 Exactly n matches */ + + OP_TYPEPOSSTAR, /* 94 Possessified versions */ + OP_TYPEPOSPLUS, /* 95 */ + OP_TYPEPOSQUERY, /* 96 */ + OP_TYPEPOSUPTO, /* 97 */ + + /* These are used for character classes and back references; only the + first six are the same as the sets above. */ + + OP_CRSTAR, /* 98 The maximizing and minimizing versions of */ + OP_CRMINSTAR, /* 99 all these opcodes must come in pairs, with */ + OP_CRPLUS, /* 100 the minimizing one second. These codes must */ + OP_CRMINPLUS, /* 101 be in exactly the same order as those above. */ + OP_CRQUERY, /* 102 */ + OP_CRMINQUERY, /* 103 */ + + OP_CRRANGE, /* 104 These are different to the three sets above. */ + OP_CRMINRANGE, /* 105 */ + + OP_CRPOSSTAR, /* 106 Possessified versions */ + OP_CRPOSPLUS, /* 107 */ + OP_CRPOSQUERY, /* 108 */ + OP_CRPOSRANGE, /* 109 */ + + /* End of quantifier opcodes */ + + OP_CLASS, /* 110 Match a character class, chars < 256 only */ + OP_NCLASS, /* 111 Same, but the bitmap was created from a negative + class - the difference is relevant only when a + character > 255 is encountered. */ + OP_XCLASS, /* 112 Extended class for handling > 255 chars within the + class. This does both positive and negative. */ + OP_REF, /* 113 Match a back reference, casefully */ + OP_REFI, /* 114 Match a back reference, caselessly */ + OP_DNREF, /* 115 Match a duplicate name backref, casefully */ + OP_DNREFI, /* 116 Match a duplicate name backref, caselessly */ + OP_RECURSE, /* 117 Match a numbered subpattern (possibly recursive) */ + OP_CALLOUT, /* 118 Call out to external function if provided */ + + OP_ALT, /* 119 Start of alternation */ + OP_KET, /* 120 End of group that doesn't have an unbounded repeat */ + OP_KETRMAX, /* 121 These two must remain together and in this */ + OP_KETRMIN, /* 122 order. They are for groups the repeat for ever. */ + OP_KETRPOS, /* 123 Possessive unlimited repeat. */ + + /* The assertions must come before BRA, CBRA, ONCE, and COND, and the four + asserts must remain in order. */ + + OP_REVERSE, /* 124 Move pointer back - used in lookbehind assertions */ + OP_ASSERT, /* 125 Positive lookahead */ + OP_ASSERT_NOT, /* 126 Negative lookahead */ + OP_ASSERTBACK, /* 127 Positive lookbehind */ + OP_ASSERTBACK_NOT, /* 128 Negative lookbehind */ + + /* ONCE, ONCE_NC, BRA, BRAPOS, CBRA, CBRAPOS, and COND must come immediately + after the assertions, with ONCE first, as there's a test for >= ONCE for a + subpattern that isn't an assertion. The POS versions must immediately follow + the non-POS versions in each case. */ + + OP_ONCE, /* 129 Atomic group, contains captures */ + OP_ONCE_NC, /* 130 Atomic group containing no captures */ + OP_BRA, /* 131 Start of non-capturing bracket */ + OP_BRAPOS, /* 132 Ditto, with unlimited, possessive repeat */ + OP_CBRA, /* 133 Start of capturing bracket */ + OP_CBRAPOS, /* 134 Ditto, with unlimited, possessive repeat */ + OP_COND, /* 135 Conditional group */ + + /* These five must follow the previous five, in the same order. There's a check for >= SBRA to distinguish the two sets. */ - OP_SBRA, /* 97 Start of non-capturing bracket, check empty */ - OP_SCBRA, /* 98 Start of capturing bracket, check empty */ - OP_SCOND, /* 99 Conditional group, check empty */ + OP_SBRA, /* 136 Start of non-capturing bracket, check empty */ + OP_SBRAPOS, /* 137 Ditto, with unlimited, possessive repeat */ + OP_SCBRA, /* 138 Start of capturing bracket, check empty */ + OP_SCBRAPOS, /* 139 Ditto, with unlimited, possessive repeat */ + OP_SCOND, /* 140 Conditional group, check empty */ - OP_CREF, /* 100 Used to hold a capture number as condition */ - OP_RREF, /* 101 Used to hold a recursion number as condition */ - OP_DEF, /* 102 The DEFINE condition */ + /* The next two pairs must (respectively) be kept together. */ - OP_BRAZERO, /* 103 These two must remain together and in this */ - OP_BRAMINZERO, /* 104 order. */ + OP_CREF, /* 141 Used to hold a capture number as condition */ + OP_DNCREF, /* 142 Used to point to duplicate names as a condition */ + OP_RREF, /* 143 Used to hold a recursion number as condition */ + OP_DNRREF, /* 144 Used to point to duplicate names as a condition */ + OP_DEF, /* 145 The DEFINE condition */ + + OP_BRAZERO, /* 146 These two must remain together and in this */ + OP_BRAMINZERO, /* 147 order. */ + OP_BRAPOSZERO, /* 148 */ /* These are backtracking control verbs */ - OP_PRUNE, /* 105 */ - OP_SKIP, /* 106 */ - OP_THEN, /* 107 */ - OP_COMMIT, /* 108 */ + OP_MARK, /* 149 always has an argument */ + OP_PRUNE, /* 150 */ + OP_PRUNE_ARG, /* 151 same, but with argument */ + OP_SKIP, /* 152 */ + OP_SKIP_ARG, /* 153 same, but with argument */ + OP_THEN, /* 154 */ + OP_THEN_ARG, /* 155 same, but with argument */ + OP_COMMIT, /* 156 */ /* These are forced failure and success verbs */ - OP_FAIL, /* 109 */ - OP_ACCEPT, /* 110 */ + OP_FAIL, /* 157 */ + OP_ACCEPT, /* 158 */ + OP_ASSERT_ACCEPT, /* 159 Used inside assertions */ + OP_CLOSE, /* 160 Used before OP_ACCEPT to close open captures */ /* This is used to skip a subpattern with a {0} quantifier */ - OP_SKIPZERO /* 111 */ + OP_SKIPZERO, /* 161 */ + + /* This is not an opcode, but is used to check that tables indexed by opcode + are the correct length, in order to catch updating errors - there have been + some in the past. */ + + OP_TABLE_LENGTH }; +/* *** NOTE NOTE NOTE *** Whenever the list above is updated, the two macro +definitions that follow must also be updated to match. There are also tables +called "opcode_possessify" in pcre_compile.c and "coptable" and "poptable" in +pcre_dfa_exec.c that must be updated. */ + /* This macro defines textual names for all the opcodes. These are used only -for debugging. The macro is referenced only in pcre_printint.c. */ +for debugging, and some of them are only partial names. The macro is referenced +only in pcre_printint.c, which fills out the full names in many cases (and in +some cases doesn't actually use these names at all). */ #define OP_NAME_LIST \ "End", "\\A", "\\G", "\\K", "\\B", "\\b", "\\D", "\\d", \ "\\S", "\\s", "\\W", "\\w", "Any", "AllAny", "Anybyte", \ "notprop", "prop", "\\R", "\\H", "\\h", "\\V", "\\v", \ "extuni", "\\Z", "\\z", \ - "Opt", "^", "$", "char", "charnc", "not", \ - "*", "*?", "+", "+?", "?", "??", "{", "{", "{", \ + "$", "$", "^", "^", "char", "chari", "not", "noti", \ + "*", "*?", "+", "+?", "?", "??", \ + "{", "{", "{", \ "*+","++", "?+", "{", \ - "*", "*?", "+", "+?", "?", "??", "{", "{", "{", \ + "*", "*?", "+", "+?", "?", "??", \ + "{", "{", "{", \ + "*+","++", "?+", "{", \ + "*", "*?", "+", "+?", "?", "??", \ + "{", "{", "{", \ + "*+","++", "?+", "{", \ + "*", "*?", "+", "+?", "?", "??", \ + "{", "{", "{", \ "*+","++", "?+", "{", \ "*", "*?", "+", "+?", "?", "??", "{", "{", "{", \ "*+","++", "?+", "{", \ "*", "*?", "+", "+?", "?", "??", "{", "{", \ - "class", "nclass", "xclass", "Ref", "Recurse", "Callout", \ - "Alt", "Ket", "KetRmax", "KetRmin", "Assert", "Assert not", \ - "AssertB", "AssertB not", "Reverse", \ - "Once", "Bra", "CBra", "Cond", "SBra", "SCBra", "SCond", \ - "Cond ref", "Cond rec", "Cond def", "Brazero", "Braminzero", \ - "*PRUNE", "*SKIP", "*THEN", "*COMMIT", "*FAIL", "*ACCEPT", \ - "Skip zero" + "*+","++", "?+", "{", \ + "class", "nclass", "xclass", "Ref", "Refi", "DnRef", "DnRefi", \ + "Recurse", "Callout", \ + "Alt", "Ket", "KetRmax", "KetRmin", "KetRpos", \ + "Reverse", "Assert", "Assert not", "AssertB", "AssertB not", \ + "Once", "Once_NC", \ + "Bra", "BraPos", "CBra", "CBraPos", \ + "Cond", \ + "SBra", "SBraPos", "SCBra", "SCBraPos", \ + "SCond", \ + "Cond ref", "Cond dnref", "Cond rec", "Cond dnrec", "Cond def", \ + "Brazero", "Braminzero", "Braposzero", \ + "*MARK", "*PRUNE", "*PRUNE", "*SKIP", "*SKIP", \ + "*THEN", "*THEN", "*COMMIT", "*FAIL", \ + "*ACCEPT", "*ASSERT_ACCEPT", \ + "Close", "Skip zero" /* This macro defines the length of fixed length operations in the compiled @@ -839,63 +2189,89 @@ in UTF-8 mode. The code that uses this table must know about such things. */ 1, 1, 1, 1, 1, /* \A, \G, \K, \B, \b */ \ 1, 1, 1, 1, 1, 1, /* \D, \d, \S, \s, \W, \w */ \ 1, 1, 1, /* Any, AllAny, Anybyte */ \ - 3, 3, 1, /* NOTPROP, PROP, EXTUNI */ \ + 3, 3, /* \P, \p */ \ 1, 1, 1, 1, 1, /* \R, \H, \h, \V, \v */ \ - 1, 1, 2, 1, 1, /* \Z, \z, Opt, ^, $ */ \ + 1, /* \X */ \ + 1, 1, 1, 1, 1, 1, /* \Z, \z, $, $M ^, ^M */ \ 2, /* Char - the minimum length */ \ - 2, /* Charnc - the minimum length */ \ + 2, /* Chari - the minimum length */ \ 2, /* not */ \ - /* Positive single-char repeats ** These are */ \ - 2, 2, 2, 2, 2, 2, /* *, *?, +, +?, ?, ?? ** minima in */ \ - 4, 4, 4, /* upto, minupto, exact ** UTF-8 mode */ \ - 2, 2, 2, 4, /* *+, ++, ?+, upto+ */ \ + 2, /* noti */ \ + /* Positive single-char repeats ** These are */ \ + 2, 2, 2, 2, 2, 2, /* *, *?, +, +?, ?, ?? ** minima in */ \ + 2+IMM2_SIZE, 2+IMM2_SIZE, /* upto, minupto ** mode */ \ + 2+IMM2_SIZE, /* exact */ \ + 2, 2, 2, 2+IMM2_SIZE, /* *+, ++, ?+, upto+ */ \ + 2, 2, 2, 2, 2, 2, /* *I, *?I, +I, +?I, ?I, ??I ** UTF-8 */ \ + 2+IMM2_SIZE, 2+IMM2_SIZE, /* upto I, minupto I */ \ + 2+IMM2_SIZE, /* exact I */ \ + 2, 2, 2, 2+IMM2_SIZE, /* *+I, ++I, ?+I, upto+I */ \ /* Negative single-char repeats - only for chars < 256 */ \ 2, 2, 2, 2, 2, 2, /* NOT *, *?, +, +?, ?, ?? */ \ - 4, 4, 4, /* NOT upto, minupto, exact */ \ - 2, 2, 2, 4, /* Possessive *, +, ?, upto */ \ + 2+IMM2_SIZE, 2+IMM2_SIZE, /* NOT upto, minupto */ \ + 2+IMM2_SIZE, /* NOT exact */ \ + 2, 2, 2, 2+IMM2_SIZE, /* Possessive NOT *, +, ?, upto */ \ + 2, 2, 2, 2, 2, 2, /* NOT *I, *?I, +I, +?I, ?I, ??I */ \ + 2+IMM2_SIZE, 2+IMM2_SIZE, /* NOT upto I, minupto I */ \ + 2+IMM2_SIZE, /* NOT exact I */ \ + 2, 2, 2, 2+IMM2_SIZE, /* Possessive NOT *I, +I, ?I, upto I */ \ /* Positive type repeats */ \ 2, 2, 2, 2, 2, 2, /* Type *, *?, +, +?, ?, ?? */ \ - 4, 4, 4, /* Type upto, minupto, exact */ \ - 2, 2, 2, 4, /* Possessive *+, ++, ?+, upto+ */ \ + 2+IMM2_SIZE, 2+IMM2_SIZE, /* Type upto, minupto */ \ + 2+IMM2_SIZE, /* Type exact */ \ + 2, 2, 2, 2+IMM2_SIZE, /* Possessive *+, ++, ?+, upto+ */ \ /* Character class & ref repeats */ \ 1, 1, 1, 1, 1, 1, /* *, *?, +, +?, ?, ?? */ \ - 5, 5, /* CRRANGE, CRMINRANGE */ \ - 33, /* CLASS */ \ - 33, /* NCLASS */ \ + 1+2*IMM2_SIZE, 1+2*IMM2_SIZE, /* CRRANGE, CRMINRANGE */ \ + 1, 1, 1, 1+2*IMM2_SIZE, /* Possessive *+, ++, ?+, CRPOSRANGE */ \ + 1+(32/sizeof(pcre_uchar)), /* CLASS */ \ + 1+(32/sizeof(pcre_uchar)), /* NCLASS */ \ 0, /* XCLASS - variable length */ \ - 3, /* REF */ \ + 1+IMM2_SIZE, /* REF */ \ + 1+IMM2_SIZE, /* REFI */ \ + 1+2*IMM2_SIZE, /* DNREF */ \ + 1+2*IMM2_SIZE, /* DNREFI */ \ 1+LINK_SIZE, /* RECURSE */ \ 2+2*LINK_SIZE, /* CALLOUT */ \ 1+LINK_SIZE, /* Alt */ \ 1+LINK_SIZE, /* Ket */ \ 1+LINK_SIZE, /* KetRmax */ \ 1+LINK_SIZE, /* KetRmin */ \ + 1+LINK_SIZE, /* KetRpos */ \ + 1+LINK_SIZE, /* Reverse */ \ 1+LINK_SIZE, /* Assert */ \ 1+LINK_SIZE, /* Assert not */ \ 1+LINK_SIZE, /* Assert behind */ \ 1+LINK_SIZE, /* Assert behind not */ \ - 1+LINK_SIZE, /* Reverse */ \ 1+LINK_SIZE, /* ONCE */ \ + 1+LINK_SIZE, /* ONCE_NC */ \ 1+LINK_SIZE, /* BRA */ \ - 3+LINK_SIZE, /* CBRA */ \ + 1+LINK_SIZE, /* BRAPOS */ \ + 1+LINK_SIZE+IMM2_SIZE, /* CBRA */ \ + 1+LINK_SIZE+IMM2_SIZE, /* CBRAPOS */ \ 1+LINK_SIZE, /* COND */ \ 1+LINK_SIZE, /* SBRA */ \ - 3+LINK_SIZE, /* SCBRA */ \ + 1+LINK_SIZE, /* SBRAPOS */ \ + 1+LINK_SIZE+IMM2_SIZE, /* SCBRA */ \ + 1+LINK_SIZE+IMM2_SIZE, /* SCBRAPOS */ \ 1+LINK_SIZE, /* SCOND */ \ - 3, /* CREF */ \ - 3, /* RREF */ \ + 1+IMM2_SIZE, 1+2*IMM2_SIZE, /* CREF, DNCREF */ \ + 1+IMM2_SIZE, 1+2*IMM2_SIZE, /* RREF, DNRREF */ \ 1, /* DEF */ \ - 1, 1, /* BRAZERO, BRAMINZERO */ \ - 1, 1, 1, 1, /* PRUNE, SKIP, THEN, COMMIT, */ \ - 1, 1, 1 /* FAIL, ACCEPT, SKIPZERO */ - + 1, 1, 1, /* BRAZERO, BRAMINZERO, BRAPOSZERO */ \ + 3, 1, 3, /* MARK, PRUNE, PRUNE_ARG */ \ + 1, 3, /* SKIP, SKIP_ARG */ \ + 1, 3, /* THEN, THEN_ARG */ \ + 1, 1, 1, 1, /* COMMIT, FAIL, ACCEPT, ASSERT_ACCEPT */ \ + 1+IMM2_SIZE, 1 /* CLOSE, SKIPZERO */ /* A magic value for OP_RREF to indicate the "any recursion" condition. */ #define RREF_ANY 0xffff -/* Error code numbers. They are given names so that they can more easily be -tracked. */ +/* Compile time error code numbers. They are given names so that they can more +easily be tracked. When a new number is added, the table called eint in +pcreposix.c must be updated. */ enum { ERR0, ERR1, ERR2, ERR3, ERR4, ERR5, ERR6, ERR7, ERR8, ERR9, ERR10, ERR11, ERR12, ERR13, ERR14, ERR15, ERR16, ERR17, ERR18, ERR19, @@ -903,109 +2279,214 @@ enum { ERR0, ERR1, ERR2, ERR3, ERR4, ERR5, ERR6, ERR7, ERR8, ERR9, ERR30, ERR31, ERR32, ERR33, ERR34, ERR35, ERR36, ERR37, ERR38, ERR39, ERR40, ERR41, ERR42, ERR43, ERR44, ERR45, ERR46, ERR47, ERR48, ERR49, ERR50, ERR51, ERR52, ERR53, ERR54, ERR55, ERR56, ERR57, ERR58, ERR59, - ERR60, ERR61, ERR62, ERR63, ERR64 }; + ERR60, ERR61, ERR62, ERR63, ERR64, ERR65, ERR66, ERR67, ERR68, ERR69, + ERR70, ERR71, ERR72, ERR73, ERR74, ERR75, ERR76, ERR77, ERR78, ERR79, + ERR80, ERR81, ERR82, ERR83, ERR84, ERR85, ERRCOUNT }; + +/* JIT compiling modes. The function list is indexed by them. */ + +enum { JIT_COMPILE, JIT_PARTIAL_SOFT_COMPILE, JIT_PARTIAL_HARD_COMPILE, + JIT_NUMBER_OF_COMPILE_MODES }; /* The real format of the start of the pcre block; the index of names and the code vector run on as long as necessary after the end. We store an explicit offset to the name table so that if a regex is compiled on one host, saved, and then run on another where the size of pointers is different, all might still -be well. For the case of compiled-on-4 and run-on-8, we include an extra -pointer that is always NULL. For future-proofing, a few dummy fields were -originally included - even though you can never get this planning right - but -there is only one left now. +be well. -NOTE NOTE NOTE: -Because people can now save and re-use compiled patterns, any additions to this -structure should be made at the end, and something earlier (e.g. a new -flag in the options or one of the dummy fields) should indicate that the new -fields are present. Currently PCRE always sets the dummy fields to zero. -NOTE NOTE NOTE: +The size of the structure must be a multiple of 8 bytes. For the case of +compiled-on-4 and run-on-8, we include an extra pointer that is always NULL so +that there are an even number of pointers which therefore are a multiple of 8 +bytes. + +It is necessary to fork the struct for the 32 bit library, since it needs to +use pcre_uint32 for first_char and req_char. We can't put an ifdef inside the +typedef because pcretest needs access to the struct of the 8-, 16- and 32-bit +variants. + +*** WARNING *** +When new fields are added to these structures, remember to adjust the code in +pcre_byte_order.c that is concerned with swapping the byte order of the fields +when a compiled regex is reloaded on a host with different endianness. +*** WARNING *** +There is also similar byte-flipping code in pcretest.c, which is used for +testing the byte-flipping features. It must also be kept in step. +*** WARNING *** */ -typedef struct real_pcre { +typedef struct real_pcre8_or_16 { pcre_uint32 magic_number; pcre_uint32 size; /* Total that was malloced */ pcre_uint32 options; /* Public options */ - pcre_uint16 flags; /* Private flags */ - pcre_uint16 dummy1; /* For future use */ - pcre_uint16 top_bracket; - pcre_uint16 top_backref; - pcre_uint16 first_byte; - pcre_uint16 req_byte; + pcre_uint32 flags; /* Private flags */ + pcre_uint32 limit_match; /* Limit set from regex */ + pcre_uint32 limit_recursion; /* Limit set from regex */ + pcre_uint16 first_char; /* Starting character */ + pcre_uint16 req_char; /* This character must be seen */ + pcre_uint16 max_lookbehind; /* Longest lookbehind (characters) */ + pcre_uint16 top_bracket; /* Highest numbered group */ + pcre_uint16 top_backref; /* Highest numbered back reference */ pcre_uint16 name_table_offset; /* Offset to name table that follows */ pcre_uint16 name_entry_size; /* Size of any name items */ pcre_uint16 name_count; /* Number of name items */ pcre_uint16 ref_count; /* Reference count */ + pcre_uint16 dummy1; /* To ensure size is a multiple of 8 */ + pcre_uint16 dummy2; /* To ensure size is a multiple of 8 */ + pcre_uint16 dummy3; /* To ensure size is a multiple of 8 */ + const pcre_uint8 *tables; /* Pointer to tables or NULL for std */ + void *nullpad; /* NULL padding */ +} real_pcre8_or_16; - const unsigned char *tables; /* Pointer to tables or NULL for std */ - const unsigned char *nullpad; /* NULL padding */ -} real_pcre; +typedef struct real_pcre8_or_16 real_pcre; +typedef struct real_pcre8_or_16 real_pcre16; + +typedef struct real_pcre32 { + pcre_uint32 magic_number; + pcre_uint32 size; /* Total that was malloced */ + pcre_uint32 options; /* Public options */ + pcre_uint32 flags; /* Private flags */ + pcre_uint32 limit_match; /* Limit set from regex */ + pcre_uint32 limit_recursion; /* Limit set from regex */ + pcre_uint32 first_char; /* Starting character */ + pcre_uint32 req_char; /* This character must be seen */ + pcre_uint16 max_lookbehind; /* Longest lookbehind (characters) */ + pcre_uint16 top_bracket; /* Highest numbered group */ + pcre_uint16 top_backref; /* Highest numbered back reference */ + pcre_uint16 name_table_offset; /* Offset to name table that follows */ + pcre_uint16 name_entry_size; /* Size of any name items */ + pcre_uint16 name_count; /* Number of name items */ + pcre_uint16 ref_count; /* Reference count */ + pcre_uint16 dummy; /* To ensure size is a multiple of 8 */ + const pcre_uint8 *tables; /* Pointer to tables or NULL for std */ + void *nullpad; /* NULL padding */ +} real_pcre32; + +#if defined COMPILE_PCRE8 +#define REAL_PCRE real_pcre +#elif defined COMPILE_PCRE16 +#define REAL_PCRE real_pcre16 +#elif defined COMPILE_PCRE32 +#define REAL_PCRE real_pcre32 +#endif + +/* Assert that the size of REAL_PCRE is divisible by 8 */ +typedef int __assert_real_pcre_size_divisible_8[(sizeof(REAL_PCRE) % 8) == 0 ? 1 : -1]; + +/* Needed in pcretest to access some fields in the real_pcre* structures + * directly. They're unified for 8/16/32 bits since the structs only differ + * after these fields; if that ever changes, need to fork those defines into + * 8/16 and 32 bit versions. */ +#define REAL_PCRE_MAGIC(re) (((REAL_PCRE*)re)->magic_number) +#define REAL_PCRE_SIZE(re) (((REAL_PCRE*)re)->size) +#define REAL_PCRE_OPTIONS(re) (((REAL_PCRE*)re)->options) +#define REAL_PCRE_FLAGS(re) (((REAL_PCRE*)re)->flags) /* The format of the block used to store data from pcre_study(). The same remark (see NOTE above) about extending this structure applies. */ typedef struct pcre_study_data { pcre_uint32 size; /* Total that was malloced */ - pcre_uint32 options; - uschar start_bits[32]; + pcre_uint32 flags; /* Private flags */ + pcre_uint8 start_bits[32]; /* Starting char bits */ + pcre_uint32 minlength; /* Minimum subject length */ } pcre_study_data; +/* Structure for building a chain of open capturing subpatterns during +compiling, so that instructions to close them can be compiled when (*ACCEPT) is +encountered. This is also used to identify subpatterns that contain recursive +back references to themselves, so that they can be made atomic. */ + +typedef struct open_capitem { + struct open_capitem *next; /* Chain link */ + pcre_uint16 number; /* Capture number */ + pcre_uint16 flag; /* Set TRUE if recursive back ref */ +} open_capitem; + +/* Structure for building a list of named groups during the first pass of +compiling. */ + +typedef struct named_group { + const pcre_uchar *name; /* Points to the name in the pattern */ + int length; /* Length of the name */ + pcre_uint32 number; /* Group number */ +} named_group; + /* Structure for passing "static" information around between the functions doing the compiling, so that they are thread-safe. */ typedef struct compile_data { - const uschar *lcc; /* Points to lower casing table */ - const uschar *fcc; /* Points to case-flipping table */ - const uschar *cbits; /* Points to character type table */ - const uschar *ctypes; /* Points to table of type maps */ - const uschar *start_workspace;/* The start of working space */ - const uschar *start_code; /* The start of the compiled code */ - const uschar *start_pattern; /* The start of the pattern */ - const uschar *end_pattern; /* The end of the pattern */ - uschar *hwm; /* High watermark of workspace */ - uschar *name_table; /* The name/number table */ - int names_found; /* Number of entries so far */ - int name_entry_size; /* Size of each entry */ - int bracount; /* Count of capturing parens as we compile */ - int final_bracount; /* Saved value after first pass */ - int top_backref; /* Maximum back reference */ - unsigned int backref_map; /* Bitmap of low back refs */ - int external_options; /* External (initial) options */ - int external_flags; /* External flag bits to be set */ - int req_varyopt; /* "After variable item" flag for reqbyte */ - BOOL had_accept; /* (*ACCEPT) encountered */ - int nltype; /* Newline type */ - int nllen; /* Newline string length */ - uschar nl[4]; /* Newline string when fixed length */ + const pcre_uint8 *lcc; /* Points to lower casing table */ + const pcre_uint8 *fcc; /* Points to case-flipping table */ + const pcre_uint8 *cbits; /* Points to character type table */ + const pcre_uint8 *ctypes; /* Points to table of type maps */ + const pcre_uchar *start_workspace;/* The start of working space */ + const pcre_uchar *start_code; /* The start of the compiled code */ + const pcre_uchar *start_pattern; /* The start of the pattern */ + const pcre_uchar *end_pattern; /* The end of the pattern */ + pcre_uchar *hwm; /* High watermark of workspace */ + open_capitem *open_caps; /* Chain of open capture items */ + named_group *named_groups; /* Points to vector in pre-compile */ + pcre_uchar *name_table; /* The name/number table */ + int names_found; /* Number of entries so far */ + int name_entry_size; /* Size of each entry */ + int named_group_list_size; /* Number of entries in the list */ + int workspace_size; /* Size of workspace */ + unsigned int bracount; /* Count of capturing parens as we compile */ + int final_bracount; /* Saved value after first pass */ + int max_lookbehind; /* Maximum lookbehind (characters) */ + int top_backref; /* Maximum back reference */ + unsigned int backref_map; /* Bitmap of low back refs */ + unsigned int namedrefcount; /* Number of backreferences by name */ + int parens_depth; /* Depth of nested parentheses */ + int assert_depth; /* Depth of nested assertions */ + pcre_uint32 external_options; /* External (initial) options */ + pcre_uint32 external_flags; /* External flag bits to be set */ + int req_varyopt; /* "After variable item" flag for reqbyte */ + BOOL had_accept; /* (*ACCEPT) encountered */ + BOOL had_pruneorskip; /* (*PRUNE) or (*SKIP) encountered */ + BOOL check_lookbehind; /* Lookbehinds need later checking */ + BOOL dupnames; /* Duplicate names exist */ + int nltype; /* Newline type */ + int nllen; /* Newline string length */ + pcre_uchar nl[4]; /* Newline string when fixed length */ } compile_data; /* Structure for maintaining a chain of pointers to the currently incomplete -branches, for testing for left recursion. */ +branches, for testing for left recursion while compiling. */ typedef struct branch_chain { struct branch_chain *outer; - uschar *current; + pcre_uchar *current_branch; } branch_chain; /* Structure for items in a linked list that represents an explicit recursive -call within the pattern. */ +call within the pattern; used by pcre_exec(). */ typedef struct recursion_info { struct recursion_info *prevrec; /* Previous recursion record (or NULL) */ - int group_num; /* Number of group that was called */ - const uschar *after_call; /* "Return value": points after the call in the expr */ - USPTR save_start; /* Old value of mstart */ - int *offset_save; /* Pointer to start of saved offsets */ - int saved_max; /* Number of saved offsets */ + unsigned int group_num; /* Number of group that was called */ + int *offset_save; /* Pointer to start of saved offsets */ + int saved_max; /* Number of saved offsets */ + int saved_capture_last; /* Last capture number */ + PCRE_PUCHAR subject_position; /* Position at start of recursion */ } recursion_info; +/* A similar structure for pcre_dfa_exec(). */ + +typedef struct dfa_recursion_info { + struct dfa_recursion_info *prevrec; + int group_num; + PCRE_PUCHAR subject_position; +} dfa_recursion_info; + /* Structure for building a chain of data for holding the values of the subject pointer at the start of each subpattern, so as to detect when an empty string -has been matched by a subpattern - to break infinite loops. */ +has been matched by a subpattern - to break infinite loops; used by +pcre_exec(). */ typedef struct eptrblock { struct eptrblock *epb_prev; - USPTR epb_saved_eptr; + PCRE_PUCHAR epb_saved_eptr; } eptrblock; @@ -1016,52 +2497,71 @@ typedef struct match_data { unsigned long int match_call_count; /* As it says */ unsigned long int match_limit; /* As it says */ unsigned long int match_limit_recursion; /* As it says */ - int *offset_vector; /* Offset vector */ - int offset_end; /* One past the end */ - int offset_max; /* The maximum usable for return data */ - int nltype; /* Newline type */ - int nllen; /* Newline string length */ - uschar nl[4]; /* Newline string when fixed */ - const uschar *lcc; /* Points to lower casing table */ - const uschar *ctypes; /* Points to table of type maps */ - BOOL offset_overflow; /* Set if too many extractions */ - BOOL notbol; /* NOTBOL flag */ - BOOL noteol; /* NOTEOL flag */ - BOOL utf8; /* UTF8 flag */ - BOOL jscript_compat; /* JAVASCRIPT_COMPAT flag */ - BOOL endonly; /* Dollar not before final \n */ - BOOL notempty; /* Empty string match not wanted */ - BOOL partial; /* PARTIAL flag */ - BOOL hitend; /* Hit the end of the subject at some point */ - BOOL bsr_anycrlf; /* \R is just any CRLF, not full Unicode */ - const uschar *start_code; /* For use when recursing */ - USPTR start_subject; /* Start of the subject string */ - USPTR end_subject; /* End of the subject string */ - USPTR start_match_ptr; /* Start of matched string */ - USPTR end_match_ptr; /* Subject position at end match */ - int end_offset_top; /* Highwater mark at end of match */ - int capture_last; /* Most recent capture number */ - int start_offset; /* The start offset value */ - eptrblock *eptrchain; /* Chain of eptrblocks for tail recursions */ - int eptrn; /* Next free eptrblock */ - recursion_info *recursive; /* Linked list of recursion data */ - void *callout_data; /* To pass back to callouts */ + int *offset_vector; /* Offset vector */ + int offset_end; /* One past the end */ + int offset_max; /* The maximum usable for return data */ + int nltype; /* Newline type */ + int nllen; /* Newline string length */ + int name_count; /* Number of names in name table */ + int name_entry_size; /* Size of entry in names table */ + unsigned int skip_arg_count; /* For counting SKIP_ARGs */ + unsigned int ignore_skip_arg; /* For re-run when SKIP arg name not found */ + pcre_uchar *name_table; /* Table of names */ + pcre_uchar nl[4]; /* Newline string when fixed */ + const pcre_uint8 *lcc; /* Points to lower casing table */ + const pcre_uint8 *fcc; /* Points to case-flipping table */ + const pcre_uint8 *ctypes; /* Points to table of type maps */ + BOOL notbol; /* NOTBOL flag */ + BOOL noteol; /* NOTEOL flag */ + BOOL utf; /* UTF-8 / UTF-16 flag */ + BOOL jscript_compat; /* JAVASCRIPT_COMPAT flag */ + BOOL use_ucp; /* PCRE_UCP flag */ + BOOL endonly; /* Dollar not before final \n */ + BOOL notempty; /* Empty string match not wanted */ + BOOL notempty_atstart; /* Empty string match at start not wanted */ + BOOL hitend; /* Hit the end of the subject at some point */ + BOOL bsr_anycrlf; /* \R is just any CRLF, not full Unicode */ + BOOL hasthen; /* Pattern contains (*THEN) */ + const pcre_uchar *start_code; /* For use when recursing */ + PCRE_PUCHAR start_subject; /* Start of the subject string */ + PCRE_PUCHAR end_subject; /* End of the subject string */ + PCRE_PUCHAR start_match_ptr; /* Start of matched string */ + PCRE_PUCHAR end_match_ptr; /* Subject position at end match */ + PCRE_PUCHAR start_used_ptr; /* Earliest consulted character */ + int partial; /* PARTIAL options */ + int end_offset_top; /* Highwater mark at end of match */ + pcre_int32 capture_last; /* Most recent capture number + overflow flag */ + int start_offset; /* The start offset value */ + int match_function_type; /* Set for certain special calls of MATCH() */ + eptrblock *eptrchain; /* Chain of eptrblocks for tail recursions */ + int eptrn; /* Next free eptrblock */ + recursion_info *recursive; /* Linked list of recursion data */ + void *callout_data; /* To pass back to callouts */ + const pcre_uchar *mark; /* Mark pointer to pass back on success */ + const pcre_uchar *nomatch_mark;/* Mark pointer to pass back on failure */ + const pcre_uchar *once_target; /* Where to back up to for atomic groups */ +#ifdef NO_RECURSE + void *match_frames_base; /* For remembering malloc'd frames */ +#endif } match_data; /* A similar structure is used for the same purpose by the DFA matching functions. */ typedef struct dfa_match_data { - const uschar *start_code; /* Start of the compiled pattern */ - const uschar *start_subject; /* Start of the subject string */ - const uschar *end_subject; /* End of subject string */ - const uschar *tables; /* Character tables */ - int moptions; /* Match options */ - int poptions; /* Pattern options */ - int nltype; /* Newline type */ - int nllen; /* Newline string length */ - uschar nl[4]; /* Newline string when fixed */ - void *callout_data; /* To pass back to callouts */ + const pcre_uchar *start_code; /* Start of the compiled pattern */ + const pcre_uchar *start_subject ; /* Start of the subject string */ + const pcre_uchar *end_subject; /* End of subject string */ + const pcre_uchar *start_used_ptr; /* Earliest consulted character */ + const pcre_uint8 *tables; /* Character tables */ + int start_offset; /* The start offset value */ + int moptions; /* Match options */ + int poptions; /* Pattern options */ + int nltype; /* Newline type */ + int nllen; /* Newline string length */ + pcre_uchar nl[4]; /* Newline string when fixed */ + void *callout_data; /* To pass back to callouts */ + dfa_recursion_info *recursive; /* Linked list of recursion data */ } dfa_match_data; /* Bit definitions for entries in the pcre_ctypes table. */ @@ -1097,6 +2597,33 @@ total length. */ #define ctypes_offset (cbits_offset + cbit_length) #define tables_length (ctypes_offset + 256) +/* Internal function and data prefixes. */ + +#if defined COMPILE_PCRE8 +#ifndef PUBL +#define PUBL(name) pcre_##name +#endif +#ifndef PRIV +#define PRIV(name) _pcre_##name +#endif +#elif defined COMPILE_PCRE16 +#ifndef PUBL +#define PUBL(name) pcre16_##name +#endif +#ifndef PRIV +#define PRIV(name) _pcre16_##name +#endif +#elif defined COMPILE_PCRE32 +#ifndef PUBL +#define PUBL(name) pcre32_##name +#endif +#ifndef PRIV +#define PRIV(name) _pcre32_##name +#endif +#else +#error Unsupported compiling mode +#endif /* COMPILE_PCRE[8|16|32] */ + /* Layout of the UCP type table that translates property names into types and codes. Each entry used to point directly to a name, but to reduce the number of relocations in shared libraries, it now has an offset into a single string @@ -1114,62 +2641,140 @@ of the exported public functions. They have to be "external" in the C sense, but are not part of the PCRE public API. The data for these tables is in the pcre_tables.c module. */ -extern const int _pcre_utf8_table1[]; -extern const int _pcre_utf8_table2[]; -extern const int _pcre_utf8_table3[]; -extern const uschar _pcre_utf8_table4[]; +#ifdef COMPILE_PCRE8 +extern const int PRIV(utf8_table1)[]; +extern const int PRIV(utf8_table1_size); +extern const int PRIV(utf8_table2)[]; +extern const int PRIV(utf8_table3)[]; +extern const pcre_uint8 PRIV(utf8_table4)[]; +#endif /* COMPILE_PCRE8 */ -extern const int _pcre_utf8_table1_size; +extern const char PRIV(utt_names)[]; +extern const ucp_type_table PRIV(utt)[]; +extern const int PRIV(utt_size); -extern const char _pcre_utt_names[]; -extern const ucp_type_table _pcre_utt[]; -extern const int _pcre_utt_size; +extern const pcre_uint8 PRIV(OP_lengths)[]; +extern const pcre_uint8 PRIV(default_tables)[]; -extern const uschar _pcre_default_tables[]; - -extern const uschar _pcre_OP_lengths[]; +extern const pcre_uint32 PRIV(hspace_list)[]; +extern const pcre_uint32 PRIV(vspace_list)[]; /* Internal shared functions. These are functions that are used by more than one of the exported public functions. They have to be "external" in the C sense, but are not part of the PCRE public API. */ -extern BOOL _pcre_is_newline(const uschar *, int, const uschar *, - int *, BOOL); -extern int _pcre_ord2utf8(int, uschar *); -extern real_pcre *_pcre_try_flipped(const real_pcre *, real_pcre *, - const pcre_study_data *, pcre_study_data *); -extern int _pcre_valid_utf8(const uschar *, int); -extern BOOL _pcre_was_newline(const uschar *, int, const uschar *, - int *, BOOL); -extern BOOL _pcre_xclass(int, const uschar *); +/* String comparison functions. */ +#if defined COMPILE_PCRE8 +#define STRCMP_UC_UC(str1, str2) \ + strcmp((char *)(str1), (char *)(str2)) +#define STRCMP_UC_C8(str1, str2) \ + strcmp((char *)(str1), (str2)) +#define STRNCMP_UC_UC(str1, str2, num) \ + strncmp((char *)(str1), (char *)(str2), (num)) +#define STRNCMP_UC_C8(str1, str2, num) \ + strncmp((char *)(str1), (str2), (num)) +#define STRLEN_UC(str) strlen((const char *)str) + +#elif defined COMPILE_PCRE16 || defined COMPILE_PCRE32 + +extern int PRIV(strcmp_uc_uc)(const pcre_uchar *, + const pcre_uchar *); +extern int PRIV(strcmp_uc_c8)(const pcre_uchar *, + const char *); +extern int PRIV(strncmp_uc_uc)(const pcre_uchar *, + const pcre_uchar *, unsigned int num); +extern int PRIV(strncmp_uc_c8)(const pcre_uchar *, + const char *, unsigned int num); +extern unsigned int PRIV(strlen_uc)(const pcre_uchar *str); + +#define STRCMP_UC_UC(str1, str2) \ + PRIV(strcmp_uc_uc)((str1), (str2)) +#define STRCMP_UC_C8(str1, str2) \ + PRIV(strcmp_uc_c8)((str1), (str2)) +#define STRNCMP_UC_UC(str1, str2, num) \ + PRIV(strncmp_uc_uc)((str1), (str2), (num)) +#define STRNCMP_UC_C8(str1, str2, num) \ + PRIV(strncmp_uc_c8)((str1), (str2), (num)) +#define STRLEN_UC(str) PRIV(strlen_uc)(str) + +#endif /* COMPILE_PCRE[8|16|32] */ + +#if defined COMPILE_PCRE8 || defined COMPILE_PCRE16 + +#define STRCMP_UC_UC_TEST(str1, str2) STRCMP_UC_UC(str1, str2) +#define STRCMP_UC_C8_TEST(str1, str2) STRCMP_UC_C8(str1, str2) + +#elif defined COMPILE_PCRE32 + +extern int PRIV(strcmp_uc_uc_utf)(const pcre_uchar *, + const pcre_uchar *); +extern int PRIV(strcmp_uc_c8_utf)(const pcre_uchar *, + const char *); + +#define STRCMP_UC_UC_TEST(str1, str2) \ + (utf ? PRIV(strcmp_uc_uc_utf)((str1), (str2)) : PRIV(strcmp_uc_uc)((str1), (str2))) +#define STRCMP_UC_C8_TEST(str1, str2) \ + (utf ? PRIV(strcmp_uc_c8_utf)((str1), (str2)) : PRIV(strcmp_uc_c8)((str1), (str2))) + +#endif /* COMPILE_PCRE[8|16|32] */ + +extern const pcre_uchar *PRIV(find_bracket)(const pcre_uchar *, BOOL, int); +extern BOOL PRIV(is_newline)(PCRE_PUCHAR, int, PCRE_PUCHAR, + int *, BOOL); +extern unsigned int PRIV(ord2utf)(pcre_uint32, pcre_uchar *); +extern int PRIV(valid_utf)(PCRE_PUCHAR, int, int *); +extern BOOL PRIV(was_newline)(PCRE_PUCHAR, int, PCRE_PUCHAR, + int *, BOOL); +extern BOOL PRIV(xclass)(pcre_uint32, const pcre_uchar *, BOOL); + +#ifdef SUPPORT_JIT +extern void PRIV(jit_compile)(const REAL_PCRE *, + PUBL(extra) *, int); +extern int PRIV(jit_exec)(const PUBL(extra) *, + const pcre_uchar *, int, int, int, int *, int); +extern void PRIV(jit_free)(void *); +extern int PRIV(jit_get_size)(void *); +extern const char* PRIV(jit_get_target)(void); +#endif /* Unicode character database (UCD) */ typedef struct { - uschar script; - uschar chartype; - pcre_int32 other_case; + pcre_uint8 script; /* ucp_Arabic, etc. */ + pcre_uint8 chartype; /* ucp_Cc, etc. (general categories) */ + pcre_uint8 gbprop; /* ucp_gbControl, etc. (grapheme break property) */ + pcre_uint8 caseset; /* offset to multichar other cases or zero */ + pcre_int32 other_case; /* offset to other case, or zero if none */ } ucd_record; -extern const ucd_record _pcre_ucd_records[]; -extern const uschar _pcre_ucd_stage1[]; -extern const pcre_uint16 _pcre_ucd_stage2[]; -extern const int _pcre_ucp_gentype[]; - +extern const pcre_uint32 PRIV(ucd_caseless_sets)[]; +extern const ucd_record PRIV(ucd_records)[]; +extern const pcre_uint8 PRIV(ucd_stage1)[]; +extern const pcre_uint16 PRIV(ucd_stage2)[]; +extern const pcre_uint32 PRIV(ucp_gentype)[]; +extern const pcre_uint32 PRIV(ucp_gbtable)[]; +#ifdef SUPPORT_JIT +extern const int PRIV(ucp_typerange)[]; +#endif +#ifdef SUPPORT_UCP /* UCD access macros */ #define UCD_BLOCK_SIZE 128 -#define GET_UCD(ch) (_pcre_ucd_records + \ - _pcre_ucd_stage2[_pcre_ucd_stage1[(ch) / UCD_BLOCK_SIZE] * \ - UCD_BLOCK_SIZE + ch % UCD_BLOCK_SIZE]) +#define GET_UCD(ch) (PRIV(ucd_records) + \ + PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \ + UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE]) -#define UCD_CHARTYPE(ch) GET_UCD(ch)->chartype -#define UCD_SCRIPT(ch) GET_UCD(ch)->script -#define UCD_CATEGORY(ch) _pcre_ucp_gentype[UCD_CHARTYPE(ch)] -#define UCD_OTHERCASE(ch) (ch + GET_UCD(ch)->other_case) +#define UCD_CHARTYPE(ch) GET_UCD(ch)->chartype +#define UCD_SCRIPT(ch) GET_UCD(ch)->script +#define UCD_CATEGORY(ch) PRIV(ucp_gentype)[UCD_CHARTYPE(ch)] +#define UCD_GRAPHBREAK(ch) GET_UCD(ch)->gbprop +#define UCD_CASESET(ch) GET_UCD(ch)->caseset +#define UCD_OTHERCASE(ch) ((pcre_uint32)((int)ch + (int)(GET_UCD(ch)->other_case))) + +#endif /* SUPPORT_UCP */ #endif diff --git a/Foundation/src/pcre_jit_compile.c b/Foundation/src/pcre_jit_compile.c new file mode 100644 index 000000000..1db5516bc --- /dev/null +++ b/Foundation/src/pcre_jit_compile.c @@ -0,0 +1,10698 @@ +/************************************************* +* Perl-Compatible Regular Expressions * +*************************************************/ + +/* PCRE is a library of functions to support regular expressions whose syntax +and semantics are as close as possible to those of the Perl 5 language. + + Written by Philip Hazel + Copyright (c) 1997-2013 University of Cambridge + + The machine code generator part (this module) was written by Zoltan Herczeg + Copyright (c) 2010-2013 + +----------------------------------------------------------------------------- +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + * Neither the name of the University of Cambridge nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +----------------------------------------------------------------------------- +*/ + +#include "pcre_config.h" +#include "pcre_internal.h" + +#if defined SUPPORT_JIT + +/* All-in-one: Since we use the JIT compiler only from here, +we just include it. This way we don't need to touch the build +system files. */ + +#define SLJIT_MALLOC(size) (PUBL(malloc))(size) +#define SLJIT_FREE(ptr) (PUBL(free))(ptr) +#define SLJIT_CONFIG_AUTO 1 +#define SLJIT_CONFIG_STATIC 1 +#define SLJIT_VERBOSE 0 +#define SLJIT_DEBUG 0 + +#include "sljit/sljitLir.c" + +#if defined SLJIT_CONFIG_UNSUPPORTED && SLJIT_CONFIG_UNSUPPORTED +#error Unsupported architecture +#endif + +/* Defines for debugging purposes. */ + +/* 1 - Use unoptimized capturing brackets. + 2 - Enable capture_last_ptr (includes option 1). */ +/* #define DEBUG_FORCE_UNOPTIMIZED_CBRAS 2 */ + +/* 1 - Always have a control head. */ +/* #define DEBUG_FORCE_CONTROL_HEAD 1 */ + +/* Allocate memory for the regex stack on the real machine stack. +Fast, but limited size. */ +#define MACHINE_STACK_SIZE 32768 + +/* Growth rate for stack allocated by the OS. Should be the multiply +of page size. */ +#define STACK_GROWTH_RATE 8192 + +/* Enable to check that the allocation could destroy temporaries. */ +#if defined SLJIT_DEBUG && SLJIT_DEBUG +#define DESTROY_REGISTERS 1 +#endif + +/* +Short summary about the backtracking mechanism empolyed by the jit code generator: + +The code generator follows the recursive nature of the PERL compatible regular +expressions. The basic blocks of regular expressions are condition checkers +whose execute different commands depending on the result of the condition check. +The relationship between the operators can be horizontal (concatenation) and +vertical (sub-expression) (See struct backtrack_common for more details). + + 'ab' - 'a' and 'b' regexps are concatenated + 'a+' - 'a' is the sub-expression of the '+' operator + +The condition checkers are boolean (true/false) checkers. Machine code is generated +for the checker itself and for the actions depending on the result of the checker. +The 'true' case is called as the matching path (expected path), and the other is called as +the 'backtrack' path. Branch instructions are expesive for all CPUs, so we avoid taken +branches on the matching path. + + Greedy star operator (*) : + Matching path: match happens. + Backtrack path: match failed. + Non-greedy star operator (*?) : + Matching path: no need to perform a match. + Backtrack path: match is required. + +The following example shows how the code generated for a capturing bracket +with two alternatives. Let A, B, C, D are arbirary regular expressions, and +we have the following regular expression: + + A(B|C)D + +The generated code will be the following: + + A matching path + '(' matching path (pushing arguments to the stack) + B matching path + ')' matching path (pushing arguments to the stack) + D matching path + return with successful match + + D backtrack path + ')' backtrack path (If we arrived from "C" jump to the backtrack of "C") + B backtrack path + C expected path + jump to D matching path + C backtrack path + A backtrack path + + Notice, that the order of backtrack code paths are the opposite of the fast + code paths. In this way the topmost value on the stack is always belong + to the current backtrack code path. The backtrack path must check + whether there is a next alternative. If so, it needs to jump back to + the matching path eventually. Otherwise it needs to clear out its own stack + frame and continue the execution on the backtrack code paths. +*/ + +/* +Saved stack frames: + +Atomic blocks and asserts require reloading the values of private data +when the backtrack mechanism performed. Because of OP_RECURSE, the data +are not necessarly known in compile time, thus we need a dynamic restore +mechanism. + +The stack frames are stored in a chain list, and have the following format: +([ capturing bracket offset ][ start value ][ end value ])+ ... [ 0 ] [ previous head ] + +Thus we can restore the private data to a particular point in the stack. +*/ + +typedef struct jit_arguments { + /* Pointers first. */ + struct sljit_stack *stack; + const pcre_uchar *str; + const pcre_uchar *begin; + const pcre_uchar *end; + int *offsets; + pcre_uchar *uchar_ptr; + pcre_uchar *mark_ptr; + void *callout_data; + /* Everything else after. */ + pcre_uint32 limit_match; + int real_offset_count; + int offset_count; + pcre_uint8 notbol; + pcre_uint8 noteol; + pcre_uint8 notempty; + pcre_uint8 notempty_atstart; +} jit_arguments; + +typedef struct executable_functions { + void *executable_funcs[JIT_NUMBER_OF_COMPILE_MODES]; + sljit_uw *read_only_data[JIT_NUMBER_OF_COMPILE_MODES]; + sljit_uw executable_sizes[JIT_NUMBER_OF_COMPILE_MODES]; + PUBL(jit_callback) callback; + void *userdata; + pcre_uint32 top_bracket; + pcre_uint32 limit_match; +} executable_functions; + +typedef struct jump_list { + struct sljit_jump *jump; + struct jump_list *next; +} jump_list; + +typedef struct stub_list { + struct sljit_jump *start; + struct sljit_label *quit; + struct stub_list *next; +} stub_list; + +typedef struct label_addr_list { + struct sljit_label *label; + sljit_uw *addr; + struct label_addr_list *next; +} label_addr_list; + +enum frame_types { + no_frame = -1, + no_stack = -2 +}; + +enum control_types { + type_mark = 0, + type_then_trap = 1 +}; + +typedef int (SLJIT_CALL *jit_function)(jit_arguments *args); + +/* The following structure is the key data type for the recursive +code generator. It is allocated by compile_matchingpath, and contains +the arguments for compile_backtrackingpath. Must be the first member +of its descendants. */ +typedef struct backtrack_common { + /* Concatenation stack. */ + struct backtrack_common *prev; + jump_list *nextbacktracks; + /* Internal stack (for component operators). */ + struct backtrack_common *top; + jump_list *topbacktracks; + /* Opcode pointer. */ + pcre_uchar *cc; +} backtrack_common; + +typedef struct assert_backtrack { + backtrack_common common; + jump_list *condfailed; + /* Less than 0 if a frame is not needed. */ + int framesize; + /* Points to our private memory word on the stack. */ + int private_data_ptr; + /* For iterators. */ + struct sljit_label *matchingpath; +} assert_backtrack; + +typedef struct bracket_backtrack { + backtrack_common common; + /* Where to coninue if an alternative is successfully matched. */ + struct sljit_label *alternative_matchingpath; + /* For rmin and rmax iterators. */ + struct sljit_label *recursive_matchingpath; + /* For greedy ? operator. */ + struct sljit_label *zero_matchingpath; + /* Contains the branches of a failed condition. */ + union { + /* Both for OP_COND, OP_SCOND. */ + jump_list *condfailed; + assert_backtrack *assert; + /* For OP_ONCE. Less than 0 if not needed. */ + int framesize; + } u; + /* Points to our private memory word on the stack. */ + int private_data_ptr; +} bracket_backtrack; + +typedef struct bracketpos_backtrack { + backtrack_common common; + /* Points to our private memory word on the stack. */ + int private_data_ptr; + /* Reverting stack is needed. */ + int framesize; + /* Allocated stack size. */ + int stacksize; +} bracketpos_backtrack; + +typedef struct braminzero_backtrack { + backtrack_common common; + struct sljit_label *matchingpath; +} braminzero_backtrack; + +typedef struct iterator_backtrack { + backtrack_common common; + /* Next iteration. */ + struct sljit_label *matchingpath; +} iterator_backtrack; + +typedef struct recurse_entry { + struct recurse_entry *next; + /* Contains the function entry. */ + struct sljit_label *entry; + /* Collects the calls until the function is not created. */ + jump_list *calls; + /* Points to the starting opcode. */ + sljit_sw start; +} recurse_entry; + +typedef struct recurse_backtrack { + backtrack_common common; + BOOL inlined_pattern; +} recurse_backtrack; + +#define OP_THEN_TRAP OP_TABLE_LENGTH + +typedef struct then_trap_backtrack { + backtrack_common common; + /* If then_trap is not NULL, this structure contains the real + then_trap for the backtracking path. */ + struct then_trap_backtrack *then_trap; + /* Points to the starting opcode. */ + sljit_sw start; + /* Exit point for the then opcodes of this alternative. */ + jump_list *quit; + /* Frame size of the current alternative. */ + int framesize; +} then_trap_backtrack; + +#define MAX_RANGE_SIZE 4 + +typedef struct compiler_common { + /* The sljit ceneric compiler. */ + struct sljit_compiler *compiler; + /* First byte code. */ + pcre_uchar *start; + /* Maps private data offset to each opcode. */ + sljit_si *private_data_ptrs; + /* This read-only data is available during runtime. */ + sljit_uw *read_only_data; + /* The total size of the read-only data. */ + sljit_uw read_only_data_size; + /* The next free entry of the read_only_data. */ + sljit_uw *read_only_data_ptr; + /* Tells whether the capturing bracket is optimized. */ + pcre_uint8 *optimized_cbracket; + /* Tells whether the starting offset is a target of then. */ + pcre_uint8 *then_offsets; + /* Current position where a THEN must jump. */ + then_trap_backtrack *then_trap; + /* Starting offset of private data for capturing brackets. */ + int cbra_ptr; + /* Output vector starting point. Must be divisible by 2. */ + int ovector_start; + /* Last known position of the requested byte. */ + int req_char_ptr; + /* Head of the last recursion. */ + int recursive_head_ptr; + /* First inspected character for partial matching. */ + int start_used_ptr; + /* Starting pointer for partial soft matches. */ + int hit_start; + /* End pointer of the first line. */ + int first_line_end; + /* Points to the marked string. */ + int mark_ptr; + /* Recursive control verb management chain. */ + int control_head_ptr; + /* Points to the last matched capture block index. */ + int capture_last_ptr; + /* Points to the starting position of the current match. */ + int start_ptr; + + /* Flipped and lower case tables. */ + const pcre_uint8 *fcc; + sljit_sw lcc; + /* Mode can be PCRE_STUDY_JIT_COMPILE and others. */ + int mode; + /* TRUE, when minlength is greater than 0. */ + BOOL might_be_empty; + /* \K is found in the pattern. */ + BOOL has_set_som; + /* (*SKIP:arg) is found in the pattern. */ + BOOL has_skip_arg; + /* (*THEN) is found in the pattern. */ + BOOL has_then; + /* Needs to know the start position anytime. */ + BOOL needs_start_ptr; + /* Currently in recurse or negative assert. */ + BOOL local_exit; + /* Currently in a positive assert. */ + BOOL positive_assert; + /* Newline control. */ + int nltype; + pcre_uint32 nlmax; + pcre_uint32 nlmin; + int newline; + int bsr_nltype; + pcre_uint32 bsr_nlmax; + pcre_uint32 bsr_nlmin; + /* Dollar endonly. */ + int endonly; + /* Tables. */ + sljit_sw ctypes; + /* Named capturing brackets. */ + pcre_uchar *name_table; + sljit_sw name_count; + sljit_sw name_entry_size; + + /* Labels and jump lists. */ + struct sljit_label *partialmatchlabel; + struct sljit_label *quit_label; + struct sljit_label *forced_quit_label; + struct sljit_label *accept_label; + struct sljit_label *ff_newline_shortcut; + stub_list *stubs; + label_addr_list *label_addrs; + recurse_entry *entries; + recurse_entry *currententry; + jump_list *partialmatch; + jump_list *quit; + jump_list *positive_assert_quit; + jump_list *forced_quit; + jump_list *accept; + jump_list *calllimit; + jump_list *stackalloc; + jump_list *revertframes; + jump_list *wordboundary; + jump_list *anynewline; + jump_list *hspace; + jump_list *vspace; + jump_list *casefulcmp; + jump_list *caselesscmp; + jump_list *reset_match; + BOOL jscript_compat; +#ifdef SUPPORT_UTF + BOOL utf; +#ifdef SUPPORT_UCP + BOOL use_ucp; +#endif +#ifdef COMPILE_PCRE8 + jump_list *utfreadchar; + jump_list *utfreadchar16; + jump_list *utfreadtype8; +#endif +#endif /* SUPPORT_UTF */ +#ifdef SUPPORT_UCP + jump_list *getucd; +#endif +} compiler_common; + +/* For byte_sequence_compare. */ + +typedef struct compare_context { + int length; + int sourcereg; +#if defined SLJIT_UNALIGNED && SLJIT_UNALIGNED + int ucharptr; + union { + sljit_si asint; + sljit_uh asushort; +#if defined COMPILE_PCRE8 + sljit_ub asbyte; + sljit_ub asuchars[4]; +#elif defined COMPILE_PCRE16 + sljit_uh asuchars[2]; +#elif defined COMPILE_PCRE32 + sljit_ui asuchars[1]; +#endif + } c; + union { + sljit_si asint; + sljit_uh asushort; +#if defined COMPILE_PCRE8 + sljit_ub asbyte; + sljit_ub asuchars[4]; +#elif defined COMPILE_PCRE16 + sljit_uh asuchars[2]; +#elif defined COMPILE_PCRE32 + sljit_ui asuchars[1]; +#endif + } oc; +#endif +} compare_context; + +/* Undefine sljit macros. */ +#undef CMP + +/* Used for accessing the elements of the stack. */ +#define STACK(i) ((-(i) - 1) * (int)sizeof(sljit_sw)) + +#define TMP1 SLJIT_SCRATCH_REG1 +#define TMP2 SLJIT_SCRATCH_REG3 +#define TMP3 SLJIT_TEMPORARY_EREG2 +#define STR_PTR SLJIT_SAVED_REG1 +#define STR_END SLJIT_SAVED_REG2 +#define STACK_TOP SLJIT_SCRATCH_REG2 +#define STACK_LIMIT SLJIT_SAVED_REG3 +#define ARGUMENTS SLJIT_SAVED_EREG1 +#define COUNT_MATCH SLJIT_SAVED_EREG2 +#define RETURN_ADDR SLJIT_TEMPORARY_EREG1 + +/* Local space layout. */ +/* These two locals can be used by the current opcode. */ +#define LOCALS0 (0 * sizeof(sljit_sw)) +#define LOCALS1 (1 * sizeof(sljit_sw)) +/* Two local variables for possessive quantifiers (char1 cannot use them). */ +#define POSSESSIVE0 (2 * sizeof(sljit_sw)) +#define POSSESSIVE1 (3 * sizeof(sljit_sw)) +/* Max limit of recursions. */ +#define LIMIT_MATCH (4 * sizeof(sljit_sw)) +/* The output vector is stored on the stack, and contains pointers +to characters. The vector data is divided into two groups: the first +group contains the start / end character pointers, and the second is +the start pointers when the end of the capturing group has not yet reached. */ +#define OVECTOR_START (common->ovector_start) +#define OVECTOR(i) (OVECTOR_START + (i) * (sljit_sw)sizeof(sljit_sw)) +#define OVECTOR_PRIV(i) (common->cbra_ptr + (i) * (sljit_sw)sizeof(sljit_sw)) +#define PRIVATE_DATA(cc) (common->private_data_ptrs[(cc) - common->start]) + +#if defined COMPILE_PCRE8 +#define MOV_UCHAR SLJIT_MOV_UB +#define MOVU_UCHAR SLJIT_MOVU_UB +#elif defined COMPILE_PCRE16 +#define MOV_UCHAR SLJIT_MOV_UH +#define MOVU_UCHAR SLJIT_MOVU_UH +#elif defined COMPILE_PCRE32 +#define MOV_UCHAR SLJIT_MOV_UI +#define MOVU_UCHAR SLJIT_MOVU_UI +#else +#error Unsupported compiling mode +#endif + +/* Shortcuts. */ +#define DEFINE_COMPILER \ + struct sljit_compiler *compiler = common->compiler +#define OP1(op, dst, dstw, src, srcw) \ + sljit_emit_op1(compiler, (op), (dst), (dstw), (src), (srcw)) +#define OP2(op, dst, dstw, src1, src1w, src2, src2w) \ + sljit_emit_op2(compiler, (op), (dst), (dstw), (src1), (src1w), (src2), (src2w)) +#define LABEL() \ + sljit_emit_label(compiler) +#define JUMP(type) \ + sljit_emit_jump(compiler, (type)) +#define JUMPTO(type, label) \ + sljit_set_label(sljit_emit_jump(compiler, (type)), (label)) +#define JUMPHERE(jump) \ + sljit_set_label((jump), sljit_emit_label(compiler)) +#define SET_LABEL(jump, label) \ + sljit_set_label((jump), (label)) +#define CMP(type, src1, src1w, src2, src2w) \ + sljit_emit_cmp(compiler, (type), (src1), (src1w), (src2), (src2w)) +#define CMPTO(type, src1, src1w, src2, src2w, label) \ + sljit_set_label(sljit_emit_cmp(compiler, (type), (src1), (src1w), (src2), (src2w)), (label)) +#define OP_FLAGS(op, dst, dstw, src, srcw, type) \ + sljit_emit_op_flags(compiler, (op), (dst), (dstw), (src), (srcw), (type)) +#define GET_LOCAL_BASE(dst, dstw, offset) \ + sljit_get_local_base(compiler, (dst), (dstw), (offset)) + +#define READ_CHAR_MAX 0x7fffffff + +static pcre_uchar* bracketend(pcre_uchar* cc) +{ +SLJIT_ASSERT((*cc >= OP_ASSERT && *cc <= OP_ASSERTBACK_NOT) || (*cc >= OP_ONCE && *cc <= OP_SCOND)); +do cc += GET(cc, 1); while (*cc == OP_ALT); +SLJIT_ASSERT(*cc >= OP_KET && *cc <= OP_KETRPOS); +cc += 1 + LINK_SIZE; +return cc; +} + +static int no_alternatives(pcre_uchar* cc) +{ +int count = 0; +SLJIT_ASSERT((*cc >= OP_ASSERT && *cc <= OP_ASSERTBACK_NOT) || (*cc >= OP_ONCE && *cc <= OP_SCOND)); +do + { + cc += GET(cc, 1); + count++; + } +while (*cc == OP_ALT); +SLJIT_ASSERT(*cc >= OP_KET && *cc <= OP_KETRPOS); +return count; +} + +static int ones_in_half_byte[16] = { + /* 0 */ 0, 1, 1, 2, /* 4 */ 1, 2, 2, 3, + /* 8 */ 1, 2, 2, 3, /* 12 */ 2, 3, 3, 4 +}; + +/* Functions whose might need modification for all new supported opcodes: + next_opcode + check_opcode_types + set_private_data_ptrs + get_framesize + init_frame + get_private_data_copy_length + copy_private_data + compile_matchingpath + compile_backtrackingpath +*/ + +static pcre_uchar *next_opcode(compiler_common *common, pcre_uchar *cc) +{ +SLJIT_UNUSED_ARG(common); +switch(*cc) + { + case OP_SOD: + case OP_SOM: + case OP_SET_SOM: + case OP_NOT_WORD_BOUNDARY: + case OP_WORD_BOUNDARY: + case OP_NOT_DIGIT: + case OP_DIGIT: + case OP_NOT_WHITESPACE: + case OP_WHITESPACE: + case OP_NOT_WORDCHAR: + case OP_WORDCHAR: + case OP_ANY: + case OP_ALLANY: + case OP_NOTPROP: + case OP_PROP: + case OP_ANYNL: + case OP_NOT_HSPACE: + case OP_HSPACE: + case OP_NOT_VSPACE: + case OP_VSPACE: + case OP_EXTUNI: + case OP_EODN: + case OP_EOD: + case OP_CIRC: + case OP_CIRCM: + case OP_DOLL: + case OP_DOLLM: + case OP_CRSTAR: + case OP_CRMINSTAR: + case OP_CRPLUS: + case OP_CRMINPLUS: + case OP_CRQUERY: + case OP_CRMINQUERY: + case OP_CRRANGE: + case OP_CRMINRANGE: + case OP_CRPOSSTAR: + case OP_CRPOSPLUS: + case OP_CRPOSQUERY: + case OP_CRPOSRANGE: + case OP_CLASS: + case OP_NCLASS: + case OP_REF: + case OP_REFI: + case OP_DNREF: + case OP_DNREFI: + case OP_RECURSE: + case OP_CALLOUT: + case OP_ALT: + case OP_KET: + case OP_KETRMAX: + case OP_KETRMIN: + case OP_KETRPOS: + case OP_REVERSE: + case OP_ASSERT: + case OP_ASSERT_NOT: + case OP_ASSERTBACK: + case OP_ASSERTBACK_NOT: + case OP_ONCE: + case OP_ONCE_NC: + case OP_BRA: + case OP_BRAPOS: + case OP_CBRA: + case OP_CBRAPOS: + case OP_COND: + case OP_SBRA: + case OP_SBRAPOS: + case OP_SCBRA: + case OP_SCBRAPOS: + case OP_SCOND: + case OP_CREF: + case OP_DNCREF: + case OP_RREF: + case OP_DNRREF: + case OP_DEF: + case OP_BRAZERO: + case OP_BRAMINZERO: + case OP_BRAPOSZERO: + case OP_PRUNE: + case OP_SKIP: + case OP_THEN: + case OP_COMMIT: + case OP_FAIL: + case OP_ACCEPT: + case OP_ASSERT_ACCEPT: + case OP_CLOSE: + case OP_SKIPZERO: + return cc + PRIV(OP_lengths)[*cc]; + + case OP_CHAR: + case OP_CHARI: + case OP_NOT: + case OP_NOTI: + case OP_STAR: + case OP_MINSTAR: + case OP_PLUS: + case OP_MINPLUS: + case OP_QUERY: + case OP_MINQUERY: + case OP_UPTO: + case OP_MINUPTO: + case OP_EXACT: + case OP_POSSTAR: + case OP_POSPLUS: + case OP_POSQUERY: + case OP_POSUPTO: + case OP_STARI: + case OP_MINSTARI: + case OP_PLUSI: + case OP_MINPLUSI: + case OP_QUERYI: + case OP_MINQUERYI: + case OP_UPTOI: + case OP_MINUPTOI: + case OP_EXACTI: + case OP_POSSTARI: + case OP_POSPLUSI: + case OP_POSQUERYI: + case OP_POSUPTOI: + case OP_NOTSTAR: + case OP_NOTMINSTAR: + case OP_NOTPLUS: + case OP_NOTMINPLUS: + case OP_NOTQUERY: + case OP_NOTMINQUERY: + case OP_NOTUPTO: + case OP_NOTMINUPTO: + case OP_NOTEXACT: + case OP_NOTPOSSTAR: + case OP_NOTPOSPLUS: + case OP_NOTPOSQUERY: + case OP_NOTPOSUPTO: + case OP_NOTSTARI: + case OP_NOTMINSTARI: + case OP_NOTPLUSI: + case OP_NOTMINPLUSI: + case OP_NOTQUERYI: + case OP_NOTMINQUERYI: + case OP_NOTUPTOI: + case OP_NOTMINUPTOI: + case OP_NOTEXACTI: + case OP_NOTPOSSTARI: + case OP_NOTPOSPLUSI: + case OP_NOTPOSQUERYI: + case OP_NOTPOSUPTOI: + cc += PRIV(OP_lengths)[*cc]; +#ifdef SUPPORT_UTF + if (common->utf && HAS_EXTRALEN(cc[-1])) cc += GET_EXTRALEN(cc[-1]); +#endif + return cc; + + /* Special cases. */ + case OP_TYPESTAR: + case OP_TYPEMINSTAR: + case OP_TYPEPLUS: + case OP_TYPEMINPLUS: + case OP_TYPEQUERY: + case OP_TYPEMINQUERY: + case OP_TYPEUPTO: + case OP_TYPEMINUPTO: + case OP_TYPEEXACT: + case OP_TYPEPOSSTAR: + case OP_TYPEPOSPLUS: + case OP_TYPEPOSQUERY: + case OP_TYPEPOSUPTO: + return cc + PRIV(OP_lengths)[*cc] - 1; + + case OP_ANYBYTE: +#ifdef SUPPORT_UTF + if (common->utf) return NULL; +#endif + return cc + 1; + +#if defined SUPPORT_UTF || !defined COMPILE_PCRE8 + case OP_XCLASS: + return cc + GET(cc, 1); +#endif + + case OP_MARK: + case OP_PRUNE_ARG: + case OP_SKIP_ARG: + case OP_THEN_ARG: + return cc + 1 + 2 + cc[1]; + + default: + /* All opcodes are supported now! */ + SLJIT_ASSERT_STOP(); + return NULL; + } +} + +static BOOL check_opcode_types(compiler_common *common, pcre_uchar *cc, pcre_uchar *ccend) +{ +int count; +pcre_uchar *slot; + +/* Calculate important variables (like stack size) and checks whether all opcodes are supported. */ +while (cc < ccend) + { + switch(*cc) + { + case OP_SET_SOM: + common->has_set_som = TRUE; + common->might_be_empty = TRUE; + cc += 1; + break; + + case OP_REF: + case OP_REFI: + common->optimized_cbracket[GET2(cc, 1)] = 0; + cc += 1 + IMM2_SIZE; + break; + + case OP_BRA: + case OP_CBRA: + case OP_SBRA: + case OP_SCBRA: + count = no_alternatives(cc); + if (count > 4) + common->read_only_data_size += count * sizeof(sljit_uw); + cc += 1 + LINK_SIZE + (*cc == OP_CBRA || *cc == OP_SCBRA ? IMM2_SIZE : 0); + break; + + case OP_CBRAPOS: + case OP_SCBRAPOS: + common->optimized_cbracket[GET2(cc, 1 + LINK_SIZE)] = 0; + cc += 1 + LINK_SIZE + IMM2_SIZE; + break; + + case OP_COND: + case OP_SCOND: + /* Only AUTO_CALLOUT can insert this opcode. We do + not intend to support this case. */ + if (cc[1 + LINK_SIZE] == OP_CALLOUT) + return FALSE; + cc += 1 + LINK_SIZE; + break; + + case OP_CREF: + common->optimized_cbracket[GET2(cc, 1)] = 0; + cc += 1 + IMM2_SIZE; + break; + + case OP_DNREF: + case OP_DNREFI: + case OP_DNCREF: + count = GET2(cc, 1 + IMM2_SIZE); + slot = common->name_table + GET2(cc, 1) * common->name_entry_size; + while (count-- > 0) + { + common->optimized_cbracket[GET2(slot, 0)] = 0; + slot += common->name_entry_size; + } + cc += 1 + 2 * IMM2_SIZE; + break; + + case OP_RECURSE: + /* Set its value only once. */ + if (common->recursive_head_ptr == 0) + { + common->recursive_head_ptr = common->ovector_start; + common->ovector_start += sizeof(sljit_sw); + } + cc += 1 + LINK_SIZE; + break; + + case OP_CALLOUT: + if (common->capture_last_ptr == 0) + { + common->capture_last_ptr = common->ovector_start; + common->ovector_start += sizeof(sljit_sw); + } + cc += 2 + 2 * LINK_SIZE; + break; + + case OP_THEN_ARG: + common->has_then = TRUE; + common->control_head_ptr = 1; + /* Fall through. */ + + case OP_PRUNE_ARG: + common->needs_start_ptr = TRUE; + /* Fall through. */ + + case OP_MARK: + if (common->mark_ptr == 0) + { + common->mark_ptr = common->ovector_start; + common->ovector_start += sizeof(sljit_sw); + } + cc += 1 + 2 + cc[1]; + break; + + case OP_THEN: + common->has_then = TRUE; + common->control_head_ptr = 1; + /* Fall through. */ + + case OP_PRUNE: + case OP_SKIP: + common->needs_start_ptr = TRUE; + cc += 1; + break; + + case OP_SKIP_ARG: + common->control_head_ptr = 1; + common->has_skip_arg = TRUE; + cc += 1 + 2 + cc[1]; + break; + + default: + cc = next_opcode(common, cc); + if (cc == NULL) + return FALSE; + break; + } + } +return TRUE; +} + +static int get_class_iterator_size(pcre_uchar *cc) +{ +switch(*cc) + { + case OP_CRSTAR: + case OP_CRPLUS: + return 2; + + case OP_CRMINSTAR: + case OP_CRMINPLUS: + case OP_CRQUERY: + case OP_CRMINQUERY: + return 1; + + case OP_CRRANGE: + case OP_CRMINRANGE: + if (GET2(cc, 1) == GET2(cc, 1 + IMM2_SIZE)) + return 0; + return 2; + + default: + return 0; + } +} + +static BOOL detect_repeat(compiler_common *common, pcre_uchar *begin) +{ +pcre_uchar *end = bracketend(begin); +pcre_uchar *next; +pcre_uchar *next_end; +pcre_uchar *max_end; +pcre_uchar type; +sljit_sw length = end - begin; +int min, max, i; + +/* Detect fixed iterations first. */ +if (end[-(1 + LINK_SIZE)] != OP_KET) + return FALSE; + +/* Already detected repeat. */ +if (common->private_data_ptrs[end - common->start - LINK_SIZE] != 0) + return TRUE; + +next = end; +min = 1; +while (1) + { + if (*next != *begin) + break; + next_end = bracketend(next); + if (next_end - next != length || memcmp(begin, next, IN_UCHARS(length)) != 0) + break; + next = next_end; + min++; + } + +if (min == 2) + return FALSE; + +max = 0; +max_end = next; +if (*next == OP_BRAZERO || *next == OP_BRAMINZERO) + { + type = *next; + while (1) + { + if (next[0] != type || next[1] != OP_BRA || next[2 + LINK_SIZE] != *begin) + break; + next_end = bracketend(next + 2 + LINK_SIZE); + if (next_end - next != (length + 2 + LINK_SIZE) || memcmp(begin, next + 2 + LINK_SIZE, IN_UCHARS(length)) != 0) + break; + next = next_end; + max++; + } + + if (next[0] == type && next[1] == *begin && max >= 1) + { + next_end = bracketend(next + 1); + if (next_end - next == (length + 1) && memcmp(begin, next + 1, IN_UCHARS(length)) == 0) + { + for (i = 0; i < max; i++, next_end += 1 + LINK_SIZE) + if (*next_end != OP_KET) + break; + + if (i == max) + { + common->private_data_ptrs[max_end - common->start - LINK_SIZE] = next_end - max_end; + common->private_data_ptrs[max_end - common->start - LINK_SIZE + 1] = (type == OP_BRAZERO) ? OP_UPTO : OP_MINUPTO; + /* +2 the original and the last. */ + common->private_data_ptrs[max_end - common->start - LINK_SIZE + 2] = max + 2; + if (min == 1) + return TRUE; + min--; + max_end -= (1 + LINK_SIZE) + GET(max_end, -LINK_SIZE); + } + } + } + } + +if (min >= 3) + { + common->private_data_ptrs[end - common->start - LINK_SIZE] = max_end - end; + common->private_data_ptrs[end - common->start - LINK_SIZE + 1] = OP_EXACT; + common->private_data_ptrs[end - common->start - LINK_SIZE + 2] = min; + return TRUE; + } + +return FALSE; +} + +#define CASE_ITERATOR_PRIVATE_DATA_1 \ + case OP_MINSTAR: \ + case OP_MINPLUS: \ + case OP_QUERY: \ + case OP_MINQUERY: \ + case OP_MINSTARI: \ + case OP_MINPLUSI: \ + case OP_QUERYI: \ + case OP_MINQUERYI: \ + case OP_NOTMINSTAR: \ + case OP_NOTMINPLUS: \ + case OP_NOTQUERY: \ + case OP_NOTMINQUERY: \ + case OP_NOTMINSTARI: \ + case OP_NOTMINPLUSI: \ + case OP_NOTQUERYI: \ + case OP_NOTMINQUERYI: + +#define CASE_ITERATOR_PRIVATE_DATA_2A \ + case OP_STAR: \ + case OP_PLUS: \ + case OP_STARI: \ + case OP_PLUSI: \ + case OP_NOTSTAR: \ + case OP_NOTPLUS: \ + case OP_NOTSTARI: \ + case OP_NOTPLUSI: + +#define CASE_ITERATOR_PRIVATE_DATA_2B \ + case OP_UPTO: \ + case OP_MINUPTO: \ + case OP_UPTOI: \ + case OP_MINUPTOI: \ + case OP_NOTUPTO: \ + case OP_NOTMINUPTO: \ + case OP_NOTUPTOI: \ + case OP_NOTMINUPTOI: + +#define CASE_ITERATOR_TYPE_PRIVATE_DATA_1 \ + case OP_TYPEMINSTAR: \ + case OP_TYPEMINPLUS: \ + case OP_TYPEQUERY: \ + case OP_TYPEMINQUERY: + +#define CASE_ITERATOR_TYPE_PRIVATE_DATA_2A \ + case OP_TYPESTAR: \ + case OP_TYPEPLUS: + +#define CASE_ITERATOR_TYPE_PRIVATE_DATA_2B \ + case OP_TYPEUPTO: \ + case OP_TYPEMINUPTO: + +static void set_private_data_ptrs(compiler_common *common, int *private_data_start, pcre_uchar *ccend) +{ +pcre_uchar *cc = common->start; +pcre_uchar *alternative; +pcre_uchar *end = NULL; +int private_data_ptr = *private_data_start; +int space, size, bracketlen; + +while (cc < ccend) + { + space = 0; + size = 0; + bracketlen = 0; + if (private_data_ptr > SLJIT_MAX_LOCAL_SIZE) + return; + + if (*cc == OP_ONCE || *cc == OP_ONCE_NC || *cc == OP_BRA || *cc == OP_CBRA || *cc == OP_COND) + if (detect_repeat(common, cc)) + { + /* These brackets are converted to repeats, so no global + based single character repeat is allowed. */ + if (cc >= end) + end = bracketend(cc); + } + + switch(*cc) + { + case OP_KET: + if (common->private_data_ptrs[cc + 1 - common->start] != 0) + { + common->private_data_ptrs[cc - common->start] = private_data_ptr; + private_data_ptr += sizeof(sljit_sw); + cc += common->private_data_ptrs[cc + 1 - common->start]; + } + cc += 1 + LINK_SIZE; + break; + + case OP_ASSERT: + case OP_ASSERT_NOT: + case OP_ASSERTBACK: + case OP_ASSERTBACK_NOT: + case OP_ONCE: + case OP_ONCE_NC: + case OP_BRAPOS: + case OP_SBRA: + case OP_SBRAPOS: + case OP_SCOND: + common->private_data_ptrs[cc - common->start] = private_data_ptr; + private_data_ptr += sizeof(sljit_sw); + bracketlen = 1 + LINK_SIZE; + break; + + case OP_CBRAPOS: + case OP_SCBRAPOS: + common->private_data_ptrs[cc - common->start] = private_data_ptr; + private_data_ptr += sizeof(sljit_sw); + bracketlen = 1 + LINK_SIZE + IMM2_SIZE; + break; + + case OP_COND: + /* Might be a hidden SCOND. */ + alternative = cc + GET(cc, 1); + if (*alternative == OP_KETRMAX || *alternative == OP_KETRMIN) + { + common->private_data_ptrs[cc - common->start] = private_data_ptr; + private_data_ptr += sizeof(sljit_sw); + } + bracketlen = 1 + LINK_SIZE; + break; + + case OP_BRA: + bracketlen = 1 + LINK_SIZE; + break; + + case OP_CBRA: + case OP_SCBRA: + bracketlen = 1 + LINK_SIZE + IMM2_SIZE; + break; + + CASE_ITERATOR_PRIVATE_DATA_1 + space = 1; + size = -2; + break; + + CASE_ITERATOR_PRIVATE_DATA_2A + space = 2; + size = -2; + break; + + CASE_ITERATOR_PRIVATE_DATA_2B + space = 2; + size = -(2 + IMM2_SIZE); + break; + + CASE_ITERATOR_TYPE_PRIVATE_DATA_1 + space = 1; + size = 1; + break; + + CASE_ITERATOR_TYPE_PRIVATE_DATA_2A + if (cc[1] != OP_ANYNL && cc[1] != OP_EXTUNI) + space = 2; + size = 1; + break; + + CASE_ITERATOR_TYPE_PRIVATE_DATA_2B + if (cc[1 + IMM2_SIZE] != OP_ANYNL && cc[1 + IMM2_SIZE] != OP_EXTUNI) + space = 2; + size = 1 + IMM2_SIZE; + break; + + case OP_CLASS: + case OP_NCLASS: + size += 1 + 32 / sizeof(pcre_uchar); + space = get_class_iterator_size(cc + size); + break; + +#if defined SUPPORT_UTF || !defined COMPILE_PCRE8 + case OP_XCLASS: + size = GET(cc, 1); + space = get_class_iterator_size(cc + size); + break; +#endif + + default: + cc = next_opcode(common, cc); + SLJIT_ASSERT(cc != NULL); + break; + } + + /* Character iterators, which are not inside a repeated bracket, + gets a private slot instead of allocating it on the stack. */ + if (space > 0 && cc >= end) + { + common->private_data_ptrs[cc - common->start] = private_data_ptr; + private_data_ptr += sizeof(sljit_sw) * space; + } + + if (size != 0) + { + if (size < 0) + { + cc += -size; +#ifdef SUPPORT_UTF + if (common->utf && HAS_EXTRALEN(cc[-1])) cc += GET_EXTRALEN(cc[-1]); +#endif + } + else + cc += size; + } + + if (bracketlen > 0) + { + if (cc >= end) + { + end = bracketend(cc); + if (end[-1 - LINK_SIZE] == OP_KET) + end = NULL; + } + cc += bracketlen; + } + } +*private_data_start = private_data_ptr; +} + +/* Returns with a frame_types (always < 0) if no need for frame. */ +static int get_framesize(compiler_common *common, pcre_uchar *cc, pcre_uchar *ccend, BOOL recursive, BOOL* needs_control_head) +{ +int length = 0; +int possessive = 0; +BOOL stack_restore = FALSE; +BOOL setsom_found = recursive; +BOOL setmark_found = recursive; +/* The last capture is a local variable even for recursions. */ +BOOL capture_last_found = FALSE; + +#if defined DEBUG_FORCE_CONTROL_HEAD && DEBUG_FORCE_CONTROL_HEAD +SLJIT_ASSERT(common->control_head_ptr != 0); +*needs_control_head = TRUE; +#else +*needs_control_head = FALSE; +#endif + +if (ccend == NULL) + { + ccend = bracketend(cc) - (1 + LINK_SIZE); + if (!recursive && (*cc == OP_CBRAPOS || *cc == OP_SCBRAPOS)) + { + possessive = length = (common->capture_last_ptr != 0) ? 5 : 3; + /* This is correct regardless of common->capture_last_ptr. */ + capture_last_found = TRUE; + } + cc = next_opcode(common, cc); + } + +SLJIT_ASSERT(cc != NULL); +while (cc < ccend) + switch(*cc) + { + case OP_SET_SOM: + SLJIT_ASSERT(common->has_set_som); + stack_restore = TRUE; + if (!setsom_found) + { + length += 2; + setsom_found = TRUE; + } + cc += 1; + break; + + case OP_MARK: + case OP_PRUNE_ARG: + case OP_THEN_ARG: + SLJIT_ASSERT(common->mark_ptr != 0); + stack_restore = TRUE; + if (!setmark_found) + { + length += 2; + setmark_found = TRUE; + } + if (common->control_head_ptr != 0) + *needs_control_head = TRUE; + cc += 1 + 2 + cc[1]; + break; + + case OP_RECURSE: + stack_restore = TRUE; + if (common->has_set_som && !setsom_found) + { + length += 2; + setsom_found = TRUE; + } + if (common->mark_ptr != 0 && !setmark_found) + { + length += 2; + setmark_found = TRUE; + } + if (common->capture_last_ptr != 0 && !capture_last_found) + { + length += 2; + capture_last_found = TRUE; + } + cc += 1 + LINK_SIZE; + break; + + case OP_CBRA: + case OP_CBRAPOS: + case OP_SCBRA: + case OP_SCBRAPOS: + stack_restore = TRUE; + if (common->capture_last_ptr != 0 && !capture_last_found) + { + length += 2; + capture_last_found = TRUE; + } + length += 3; + cc += 1 + LINK_SIZE + IMM2_SIZE; + break; + + default: + stack_restore = TRUE; + /* Fall through. */ + + case OP_NOT_WORD_BOUNDARY: + case OP_WORD_BOUNDARY: + case OP_NOT_DIGIT: + case OP_DIGIT: + case OP_NOT_WHITESPACE: + case OP_WHITESPACE: + case OP_NOT_WORDCHAR: + case OP_WORDCHAR: + case OP_ANY: + case OP_ALLANY: + case OP_ANYBYTE: + case OP_NOTPROP: + case OP_PROP: + case OP_ANYNL: + case OP_NOT_HSPACE: + case OP_HSPACE: + case OP_NOT_VSPACE: + case OP_VSPACE: + case OP_EXTUNI: + case OP_EODN: + case OP_EOD: + case OP_CIRC: + case OP_CIRCM: + case OP_DOLL: + case OP_DOLLM: + case OP_CHAR: + case OP_CHARI: + case OP_NOT: + case OP_NOTI: + + case OP_EXACT: + case OP_POSSTAR: + case OP_POSPLUS: + case OP_POSQUERY: + case OP_POSUPTO: + + case OP_EXACTI: + case OP_POSSTARI: + case OP_POSPLUSI: + case OP_POSQUERYI: + case OP_POSUPTOI: + + case OP_NOTEXACT: + case OP_NOTPOSSTAR: + case OP_NOTPOSPLUS: + case OP_NOTPOSQUERY: + case OP_NOTPOSUPTO: + + case OP_NOTEXACTI: + case OP_NOTPOSSTARI: + case OP_NOTPOSPLUSI: + case OP_NOTPOSQUERYI: + case OP_NOTPOSUPTOI: + + case OP_TYPEEXACT: + case OP_TYPEPOSSTAR: + case OP_TYPEPOSPLUS: + case OP_TYPEPOSQUERY: + case OP_TYPEPOSUPTO: + + case OP_CLASS: + case OP_NCLASS: + case OP_XCLASS: + + cc = next_opcode(common, cc); + SLJIT_ASSERT(cc != NULL); + break; + } + +/* Possessive quantifiers can use a special case. */ +if (SLJIT_UNLIKELY(possessive == length)) + return stack_restore ? no_frame : no_stack; + +if (length > 0) + return length + 1; +return stack_restore ? no_frame : no_stack; +} + +static void init_frame(compiler_common *common, pcre_uchar *cc, pcre_uchar *ccend, int stackpos, int stacktop, BOOL recursive) +{ +DEFINE_COMPILER; +BOOL setsom_found = recursive; +BOOL setmark_found = recursive; +/* The last capture is a local variable even for recursions. */ +BOOL capture_last_found = FALSE; +int offset; + +/* >= 1 + shortest item size (2) */ +SLJIT_UNUSED_ARG(stacktop); +SLJIT_ASSERT(stackpos >= stacktop + 2); + +stackpos = STACK(stackpos); +if (ccend == NULL) + { + ccend = bracketend(cc) - (1 + LINK_SIZE); + if (recursive || (*cc != OP_CBRAPOS && *cc != OP_SCBRAPOS)) + cc = next_opcode(common, cc); + } + +SLJIT_ASSERT(cc != NULL); +while (cc < ccend) + switch(*cc) + { + case OP_SET_SOM: + SLJIT_ASSERT(common->has_set_som); + if (!setsom_found) + { + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(0)); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), stackpos, SLJIT_IMM, -OVECTOR(0)); + stackpos += (int)sizeof(sljit_sw); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), stackpos, TMP1, 0); + stackpos += (int)sizeof(sljit_sw); + setsom_found = TRUE; + } + cc += 1; + break; + + case OP_MARK: + case OP_PRUNE_ARG: + case OP_THEN_ARG: + SLJIT_ASSERT(common->mark_ptr != 0); + if (!setmark_found) + { + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), common->mark_ptr); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), stackpos, SLJIT_IMM, -common->mark_ptr); + stackpos += (int)sizeof(sljit_sw); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), stackpos, TMP1, 0); + stackpos += (int)sizeof(sljit_sw); + setmark_found = TRUE; + } + cc += 1 + 2 + cc[1]; + break; + + case OP_RECURSE: + if (common->has_set_som && !setsom_found) + { + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(0)); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), stackpos, SLJIT_IMM, -OVECTOR(0)); + stackpos += (int)sizeof(sljit_sw); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), stackpos, TMP1, 0); + stackpos += (int)sizeof(sljit_sw); + setsom_found = TRUE; + } + if (common->mark_ptr != 0 && !setmark_found) + { + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), common->mark_ptr); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), stackpos, SLJIT_IMM, -common->mark_ptr); + stackpos += (int)sizeof(sljit_sw); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), stackpos, TMP1, 0); + stackpos += (int)sizeof(sljit_sw); + setmark_found = TRUE; + } + if (common->capture_last_ptr != 0 && !capture_last_found) + { + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), common->capture_last_ptr); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), stackpos, SLJIT_IMM, -common->capture_last_ptr); + stackpos += (int)sizeof(sljit_sw); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), stackpos, TMP1, 0); + stackpos += (int)sizeof(sljit_sw); + capture_last_found = TRUE; + } + cc += 1 + LINK_SIZE; + break; + + case OP_CBRA: + case OP_CBRAPOS: + case OP_SCBRA: + case OP_SCBRAPOS: + if (common->capture_last_ptr != 0 && !capture_last_found) + { + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), common->capture_last_ptr); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), stackpos, SLJIT_IMM, -common->capture_last_ptr); + stackpos += (int)sizeof(sljit_sw); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), stackpos, TMP1, 0); + stackpos += (int)sizeof(sljit_sw); + capture_last_found = TRUE; + } + offset = (GET2(cc, 1 + LINK_SIZE)) << 1; + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), stackpos, SLJIT_IMM, OVECTOR(offset)); + stackpos += (int)sizeof(sljit_sw); + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(offset)); + OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(offset + 1)); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), stackpos, TMP1, 0); + stackpos += (int)sizeof(sljit_sw); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), stackpos, TMP2, 0); + stackpos += (int)sizeof(sljit_sw); + + cc += 1 + LINK_SIZE + IMM2_SIZE; + break; + + default: + cc = next_opcode(common, cc); + SLJIT_ASSERT(cc != NULL); + break; + } + +OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), stackpos, SLJIT_IMM, 0); +SLJIT_ASSERT(stackpos == STACK(stacktop)); +} + +static SLJIT_INLINE int get_private_data_copy_length(compiler_common *common, pcre_uchar *cc, pcre_uchar *ccend, BOOL needs_control_head) +{ +int private_data_length = needs_control_head ? 3 : 2; +int size; +pcre_uchar *alternative; +/* Calculate the sum of the private machine words. */ +while (cc < ccend) + { + size = 0; + switch(*cc) + { + case OP_KET: + if (PRIVATE_DATA(cc) != 0) + private_data_length++; + cc += 1 + LINK_SIZE; + break; + + case OP_ASSERT: + case OP_ASSERT_NOT: + case OP_ASSERTBACK: + case OP_ASSERTBACK_NOT: + case OP_ONCE: + case OP_ONCE_NC: + case OP_BRAPOS: + case OP_SBRA: + case OP_SBRAPOS: + case OP_SCOND: + private_data_length++; + cc += 1 + LINK_SIZE; + break; + + case OP_CBRA: + case OP_SCBRA: + if (common->optimized_cbracket[GET2(cc, 1 + LINK_SIZE)] == 0) + private_data_length++; + cc += 1 + LINK_SIZE + IMM2_SIZE; + break; + + case OP_CBRAPOS: + case OP_SCBRAPOS: + private_data_length += 2; + cc += 1 + LINK_SIZE + IMM2_SIZE; + break; + + case OP_COND: + /* Might be a hidden SCOND. */ + alternative = cc + GET(cc, 1); + if (*alternative == OP_KETRMAX || *alternative == OP_KETRMIN) + private_data_length++; + cc += 1 + LINK_SIZE; + break; + + CASE_ITERATOR_PRIVATE_DATA_1 + if (PRIVATE_DATA(cc)) + private_data_length++; + cc += 2; +#ifdef SUPPORT_UTF + if (common->utf && HAS_EXTRALEN(cc[-1])) cc += GET_EXTRALEN(cc[-1]); +#endif + break; + + CASE_ITERATOR_PRIVATE_DATA_2A + if (PRIVATE_DATA(cc)) + private_data_length += 2; + cc += 2; +#ifdef SUPPORT_UTF + if (common->utf && HAS_EXTRALEN(cc[-1])) cc += GET_EXTRALEN(cc[-1]); +#endif + break; + + CASE_ITERATOR_PRIVATE_DATA_2B + if (PRIVATE_DATA(cc)) + private_data_length += 2; + cc += 2 + IMM2_SIZE; +#ifdef SUPPORT_UTF + if (common->utf && HAS_EXTRALEN(cc[-1])) cc += GET_EXTRALEN(cc[-1]); +#endif + break; + + CASE_ITERATOR_TYPE_PRIVATE_DATA_1 + if (PRIVATE_DATA(cc)) + private_data_length++; + cc += 1; + break; + + CASE_ITERATOR_TYPE_PRIVATE_DATA_2A + if (PRIVATE_DATA(cc)) + private_data_length += 2; + cc += 1; + break; + + CASE_ITERATOR_TYPE_PRIVATE_DATA_2B + if (PRIVATE_DATA(cc)) + private_data_length += 2; + cc += 1 + IMM2_SIZE; + break; + + case OP_CLASS: + case OP_NCLASS: +#if defined SUPPORT_UTF || !defined COMPILE_PCRE8 + case OP_XCLASS: + size = (*cc == OP_XCLASS) ? GET(cc, 1) : 1 + 32 / (int)sizeof(pcre_uchar); +#else + size = 1 + 32 / (int)sizeof(pcre_uchar); +#endif + if (PRIVATE_DATA(cc)) + private_data_length += get_class_iterator_size(cc + size); + cc += size; + break; + + default: + cc = next_opcode(common, cc); + SLJIT_ASSERT(cc != NULL); + break; + } + } +SLJIT_ASSERT(cc == ccend); +return private_data_length; +} + +static void copy_private_data(compiler_common *common, pcre_uchar *cc, pcre_uchar *ccend, + BOOL save, int stackptr, int stacktop, BOOL needs_control_head) +{ +DEFINE_COMPILER; +int srcw[2]; +int count, size; +BOOL tmp1next = TRUE; +BOOL tmp1empty = TRUE; +BOOL tmp2empty = TRUE; +pcre_uchar *alternative; +enum { + start, + loop, + end +} status; + +status = save ? start : loop; +stackptr = STACK(stackptr - 2); +stacktop = STACK(stacktop - 1); + +if (!save) + { + stackptr += (needs_control_head ? 2 : 1) * sizeof(sljit_sw); + if (stackptr < stacktop) + { + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(STACK_TOP), stackptr); + stackptr += sizeof(sljit_sw); + tmp1empty = FALSE; + } + if (stackptr < stacktop) + { + OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(STACK_TOP), stackptr); + stackptr += sizeof(sljit_sw); + tmp2empty = FALSE; + } + /* The tmp1next must be TRUE in either way. */ + } + +do + { + count = 0; + switch(status) + { + case start: + SLJIT_ASSERT(save && common->recursive_head_ptr != 0); + count = 1; + srcw[0] = common->recursive_head_ptr; + if (needs_control_head) + { + SLJIT_ASSERT(common->control_head_ptr != 0); + count = 2; + srcw[1] = common->control_head_ptr; + } + status = loop; + break; + + case loop: + if (cc >= ccend) + { + status = end; + break; + } + + switch(*cc) + { + case OP_KET: + if (PRIVATE_DATA(cc) != 0) + { + count = 1; + srcw[0] = PRIVATE_DATA(cc); + } + cc += 1 + LINK_SIZE; + break; + + case OP_ASSERT: + case OP_ASSERT_NOT: + case OP_ASSERTBACK: + case OP_ASSERTBACK_NOT: + case OP_ONCE: + case OP_ONCE_NC: + case OP_BRAPOS: + case OP_SBRA: + case OP_SBRAPOS: + case OP_SCOND: + count = 1; + srcw[0] = PRIVATE_DATA(cc); + SLJIT_ASSERT(srcw[0] != 0); + cc += 1 + LINK_SIZE; + break; + + case OP_CBRA: + case OP_SCBRA: + if (common->optimized_cbracket[GET2(cc, 1 + LINK_SIZE)] == 0) + { + count = 1; + srcw[0] = OVECTOR_PRIV(GET2(cc, 1 + LINK_SIZE)); + } + cc += 1 + LINK_SIZE + IMM2_SIZE; + break; + + case OP_CBRAPOS: + case OP_SCBRAPOS: + count = 2; + srcw[0] = PRIVATE_DATA(cc); + srcw[1] = OVECTOR_PRIV(GET2(cc, 1 + LINK_SIZE)); + SLJIT_ASSERT(srcw[0] != 0 && srcw[1] != 0); + cc += 1 + LINK_SIZE + IMM2_SIZE; + break; + + case OP_COND: + /* Might be a hidden SCOND. */ + alternative = cc + GET(cc, 1); + if (*alternative == OP_KETRMAX || *alternative == OP_KETRMIN) + { + count = 1; + srcw[0] = PRIVATE_DATA(cc); + SLJIT_ASSERT(srcw[0] != 0); + } + cc += 1 + LINK_SIZE; + break; + + CASE_ITERATOR_PRIVATE_DATA_1 + if (PRIVATE_DATA(cc)) + { + count = 1; + srcw[0] = PRIVATE_DATA(cc); + } + cc += 2; +#ifdef SUPPORT_UTF + if (common->utf && HAS_EXTRALEN(cc[-1])) cc += GET_EXTRALEN(cc[-1]); +#endif + break; + + CASE_ITERATOR_PRIVATE_DATA_2A + if (PRIVATE_DATA(cc)) + { + count = 2; + srcw[0] = PRIVATE_DATA(cc); + srcw[1] = PRIVATE_DATA(cc) + sizeof(sljit_sw); + } + cc += 2; +#ifdef SUPPORT_UTF + if (common->utf && HAS_EXTRALEN(cc[-1])) cc += GET_EXTRALEN(cc[-1]); +#endif + break; + + CASE_ITERATOR_PRIVATE_DATA_2B + if (PRIVATE_DATA(cc)) + { + count = 2; + srcw[0] = PRIVATE_DATA(cc); + srcw[1] = PRIVATE_DATA(cc) + sizeof(sljit_sw); + } + cc += 2 + IMM2_SIZE; +#ifdef SUPPORT_UTF + if (common->utf && HAS_EXTRALEN(cc[-1])) cc += GET_EXTRALEN(cc[-1]); +#endif + break; + + CASE_ITERATOR_TYPE_PRIVATE_DATA_1 + if (PRIVATE_DATA(cc)) + { + count = 1; + srcw[0] = PRIVATE_DATA(cc); + } + cc += 1; + break; + + CASE_ITERATOR_TYPE_PRIVATE_DATA_2A + if (PRIVATE_DATA(cc)) + { + count = 2; + srcw[0] = PRIVATE_DATA(cc); + srcw[1] = srcw[0] + sizeof(sljit_sw); + } + cc += 1; + break; + + CASE_ITERATOR_TYPE_PRIVATE_DATA_2B + if (PRIVATE_DATA(cc)) + { + count = 2; + srcw[0] = PRIVATE_DATA(cc); + srcw[1] = srcw[0] + sizeof(sljit_sw); + } + cc += 1 + IMM2_SIZE; + break; + + case OP_CLASS: + case OP_NCLASS: +#if defined SUPPORT_UTF || !defined COMPILE_PCRE8 + case OP_XCLASS: + size = (*cc == OP_XCLASS) ? GET(cc, 1) : 1 + 32 / (int)sizeof(pcre_uchar); +#else + size = 1 + 32 / (int)sizeof(pcre_uchar); +#endif + if (PRIVATE_DATA(cc)) + switch(get_class_iterator_size(cc + size)) + { + case 1: + count = 1; + srcw[0] = PRIVATE_DATA(cc); + break; + + case 2: + count = 2; + srcw[0] = PRIVATE_DATA(cc); + srcw[1] = srcw[0] + sizeof(sljit_sw); + break; + + default: + SLJIT_ASSERT_STOP(); + break; + } + cc += size; + break; + + default: + cc = next_opcode(common, cc); + SLJIT_ASSERT(cc != NULL); + break; + } + break; + + case end: + SLJIT_ASSERT_STOP(); + break; + } + + while (count > 0) + { + count--; + if (save) + { + if (tmp1next) + { + if (!tmp1empty) + { + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), stackptr, TMP1, 0); + stackptr += sizeof(sljit_sw); + } + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), srcw[count]); + tmp1empty = FALSE; + tmp1next = FALSE; + } + else + { + if (!tmp2empty) + { + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), stackptr, TMP2, 0); + stackptr += sizeof(sljit_sw); + } + OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), srcw[count]); + tmp2empty = FALSE; + tmp1next = TRUE; + } + } + else + { + if (tmp1next) + { + SLJIT_ASSERT(!tmp1empty); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), srcw[count], TMP1, 0); + tmp1empty = stackptr >= stacktop; + if (!tmp1empty) + { + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(STACK_TOP), stackptr); + stackptr += sizeof(sljit_sw); + } + tmp1next = FALSE; + } + else + { + SLJIT_ASSERT(!tmp2empty); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), srcw[count], TMP2, 0); + tmp2empty = stackptr >= stacktop; + if (!tmp2empty) + { + OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(STACK_TOP), stackptr); + stackptr += sizeof(sljit_sw); + } + tmp1next = TRUE; + } + } + } + } +while (status != end); + +if (save) + { + if (tmp1next) + { + if (!tmp1empty) + { + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), stackptr, TMP1, 0); + stackptr += sizeof(sljit_sw); + } + if (!tmp2empty) + { + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), stackptr, TMP2, 0); + stackptr += sizeof(sljit_sw); + } + } + else + { + if (!tmp2empty) + { + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), stackptr, TMP2, 0); + stackptr += sizeof(sljit_sw); + } + if (!tmp1empty) + { + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), stackptr, TMP1, 0); + stackptr += sizeof(sljit_sw); + } + } + } +SLJIT_ASSERT(cc == ccend && stackptr == stacktop && (save || (tmp1empty && tmp2empty))); +} + +static SLJIT_INLINE pcre_uchar *set_then_offsets(compiler_common *common, pcre_uchar *cc, pcre_uint8 *current_offset) +{ +pcre_uchar *end = bracketend(cc); +BOOL has_alternatives = cc[GET(cc, 1)] == OP_ALT; + +/* Assert captures then. */ +if (*cc >= OP_ASSERT && *cc <= OP_ASSERTBACK_NOT) + current_offset = NULL; +/* Conditional block does not. */ +if (*cc == OP_COND || *cc == OP_SCOND) + has_alternatives = FALSE; + +cc = next_opcode(common, cc); +if (has_alternatives) + current_offset = common->then_offsets + (cc - common->start); + +while (cc < end) + { + if ((*cc >= OP_ASSERT && *cc <= OP_ASSERTBACK_NOT) || (*cc >= OP_ONCE && *cc <= OP_SCOND)) + cc = set_then_offsets(common, cc, current_offset); + else + { + if (*cc == OP_ALT && has_alternatives) + current_offset = common->then_offsets + (cc + 1 + LINK_SIZE - common->start); + if (*cc >= OP_THEN && *cc <= OP_THEN_ARG && current_offset != NULL) + *current_offset = 1; + cc = next_opcode(common, cc); + } + } + +return end; +} + +#undef CASE_ITERATOR_PRIVATE_DATA_1 +#undef CASE_ITERATOR_PRIVATE_DATA_2A +#undef CASE_ITERATOR_PRIVATE_DATA_2B +#undef CASE_ITERATOR_TYPE_PRIVATE_DATA_1 +#undef CASE_ITERATOR_TYPE_PRIVATE_DATA_2A +#undef CASE_ITERATOR_TYPE_PRIVATE_DATA_2B + +static SLJIT_INLINE BOOL is_powerof2(unsigned int value) +{ +return (value & (value - 1)) == 0; +} + +static SLJIT_INLINE void set_jumps(jump_list *list, struct sljit_label *label) +{ +while (list) + { + /* sljit_set_label is clever enough to do nothing + if either the jump or the label is NULL. */ + SET_LABEL(list->jump, label); + list = list->next; + } +} + +static SLJIT_INLINE void add_jump(struct sljit_compiler *compiler, jump_list **list, struct sljit_jump* jump) +{ +jump_list *list_item = sljit_alloc_memory(compiler, sizeof(jump_list)); +if (list_item) + { + list_item->next = *list; + list_item->jump = jump; + *list = list_item; + } +} + +static void add_stub(compiler_common *common, struct sljit_jump *start) +{ +DEFINE_COMPILER; +stub_list* list_item = sljit_alloc_memory(compiler, sizeof(stub_list)); + +if (list_item) + { + list_item->start = start; + list_item->quit = LABEL(); + list_item->next = common->stubs; + common->stubs = list_item; + } +} + +static void flush_stubs(compiler_common *common) +{ +DEFINE_COMPILER; +stub_list* list_item = common->stubs; + +while (list_item) + { + JUMPHERE(list_item->start); + add_jump(compiler, &common->stackalloc, JUMP(SLJIT_FAST_CALL)); + JUMPTO(SLJIT_JUMP, list_item->quit); + list_item = list_item->next; + } +common->stubs = NULL; +} + +static void add_label_addr(compiler_common *common) +{ +DEFINE_COMPILER; +label_addr_list *label_addr; + +label_addr = sljit_alloc_memory(compiler, sizeof(label_addr_list)); +if (label_addr == NULL) + return; +label_addr->label = LABEL(); +label_addr->addr = common->read_only_data_ptr; +label_addr->next = common->label_addrs; +common->label_addrs = label_addr; +common->read_only_data_ptr++; +} + +static SLJIT_INLINE void count_match(compiler_common *common) +{ +DEFINE_COMPILER; + +OP2(SLJIT_SUB | SLJIT_SET_E, COUNT_MATCH, 0, COUNT_MATCH, 0, SLJIT_IMM, 1); +add_jump(compiler, &common->calllimit, JUMP(SLJIT_C_ZERO)); +} + +static SLJIT_INLINE void allocate_stack(compiler_common *common, int size) +{ +/* May destroy all locals and registers except TMP2. */ +DEFINE_COMPILER; + +OP2(SLJIT_ADD, STACK_TOP, 0, STACK_TOP, 0, SLJIT_IMM, size * sizeof(sljit_sw)); +#ifdef DESTROY_REGISTERS +OP1(SLJIT_MOV, TMP1, 0, SLJIT_IMM, 12345); +OP1(SLJIT_MOV, TMP3, 0, TMP1, 0); +OP1(SLJIT_MOV, RETURN_ADDR, 0, TMP1, 0); +OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), LOCALS0, TMP1, 0); +OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), LOCALS1, TMP1, 0); +#endif +add_stub(common, CMP(SLJIT_C_GREATER, STACK_TOP, 0, STACK_LIMIT, 0)); +} + +static SLJIT_INLINE void free_stack(compiler_common *common, int size) +{ +DEFINE_COMPILER; +OP2(SLJIT_SUB, STACK_TOP, 0, STACK_TOP, 0, SLJIT_IMM, size * sizeof(sljit_sw)); +} + +static SLJIT_INLINE void reset_ovector(compiler_common *common, int length) +{ +DEFINE_COMPILER; +struct sljit_label *loop; +int i; + +/* At this point we can freely use all temporary registers. */ +SLJIT_ASSERT(length > 1); +/* TMP1 returns with begin - 1. */ +OP2(SLJIT_SUB, SLJIT_SCRATCH_REG1, 0, SLJIT_MEM1(SLJIT_SAVED_REG1), SLJIT_OFFSETOF(jit_arguments, begin), SLJIT_IMM, IN_UCHARS(1)); +if (length < 8) + { + for (i = 1; i < length; i++) + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(i), SLJIT_SCRATCH_REG1, 0); + } +else + { + GET_LOCAL_BASE(SLJIT_SCRATCH_REG2, 0, OVECTOR_START); + OP1(SLJIT_MOV, SLJIT_SCRATCH_REG3, 0, SLJIT_IMM, length - 1); + loop = LABEL(); + OP1(SLJIT_MOVU, SLJIT_MEM1(SLJIT_SCRATCH_REG2), sizeof(sljit_sw), SLJIT_SCRATCH_REG1, 0); + OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_SCRATCH_REG3, 0, SLJIT_SCRATCH_REG3, 0, SLJIT_IMM, 1); + JUMPTO(SLJIT_C_NOT_ZERO, loop); + } +} + +static SLJIT_INLINE void do_reset_match(compiler_common *common, int length) +{ +DEFINE_COMPILER; +struct sljit_label *loop; +int i; + +SLJIT_ASSERT(length > 1); +/* OVECTOR(1) contains the "string begin - 1" constant. */ +if (length > 2) + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(1)); +if (length < 8) + { + for (i = 2; i < length; i++) + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(i), TMP1, 0); + } +else + { + GET_LOCAL_BASE(TMP2, 0, OVECTOR_START + sizeof(sljit_sw)); + OP1(SLJIT_MOV, STACK_TOP, 0, SLJIT_IMM, length - 2); + loop = LABEL(); + OP1(SLJIT_MOVU, SLJIT_MEM1(TMP2), sizeof(sljit_sw), TMP1, 0); + OP2(SLJIT_SUB | SLJIT_SET_E, STACK_TOP, 0, STACK_TOP, 0, SLJIT_IMM, 1); + JUMPTO(SLJIT_C_NOT_ZERO, loop); + } + +OP1(SLJIT_MOV, STACK_TOP, 0, ARGUMENTS, 0); +if (common->mark_ptr != 0) + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), common->mark_ptr, SLJIT_IMM, 0); +if (common->control_head_ptr != 0) + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), common->control_head_ptr, SLJIT_IMM, 0); +OP1(SLJIT_MOV, STACK_TOP, 0, SLJIT_MEM1(STACK_TOP), SLJIT_OFFSETOF(jit_arguments, stack)); +OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), common->start_ptr); +OP1(SLJIT_MOV, STACK_TOP, 0, SLJIT_MEM1(STACK_TOP), SLJIT_OFFSETOF(struct sljit_stack, base)); +} + +static sljit_sw SLJIT_CALL do_search_mark(sljit_sw *current, const pcre_uchar *skip_arg) +{ +while (current != NULL) + { + switch (current[-2]) + { + case type_then_trap: + break; + + case type_mark: + if (STRCMP_UC_UC(skip_arg, (pcre_uchar *)current[-3]) == 0) + return current[-4]; + break; + + default: + SLJIT_ASSERT_STOP(); + break; + } + current = (sljit_sw*)current[-1]; + } +return -1; +} + +static SLJIT_INLINE void copy_ovector(compiler_common *common, int topbracket) +{ +DEFINE_COMPILER; +struct sljit_label *loop; +struct sljit_jump *early_quit; + +/* At this point we can freely use all registers. */ +OP1(SLJIT_MOV, SLJIT_SAVED_REG3, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(1)); +OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(1), STR_PTR, 0); + +OP1(SLJIT_MOV, SLJIT_SCRATCH_REG1, 0, ARGUMENTS, 0); +if (common->mark_ptr != 0) + OP1(SLJIT_MOV, SLJIT_SCRATCH_REG3, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), common->mark_ptr); +OP1(SLJIT_MOV_SI, SLJIT_SCRATCH_REG2, 0, SLJIT_MEM1(SLJIT_SCRATCH_REG1), SLJIT_OFFSETOF(jit_arguments, offset_count)); +if (common->mark_ptr != 0) + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_SCRATCH_REG1), SLJIT_OFFSETOF(jit_arguments, mark_ptr), SLJIT_SCRATCH_REG3, 0); +OP2(SLJIT_SUB, SLJIT_SCRATCH_REG3, 0, SLJIT_MEM1(SLJIT_SCRATCH_REG1), SLJIT_OFFSETOF(jit_arguments, offsets), SLJIT_IMM, sizeof(int)); +OP1(SLJIT_MOV, SLJIT_SCRATCH_REG1, 0, SLJIT_MEM1(SLJIT_SCRATCH_REG1), SLJIT_OFFSETOF(jit_arguments, begin)); +GET_LOCAL_BASE(SLJIT_SAVED_REG1, 0, OVECTOR_START); +/* Unlikely, but possible */ +early_quit = CMP(SLJIT_C_EQUAL, SLJIT_SCRATCH_REG2, 0, SLJIT_IMM, 0); +loop = LABEL(); +OP2(SLJIT_SUB, SLJIT_SAVED_REG2, 0, SLJIT_MEM1(SLJIT_SAVED_REG1), 0, SLJIT_SCRATCH_REG1, 0); +OP2(SLJIT_ADD, SLJIT_SAVED_REG1, 0, SLJIT_SAVED_REG1, 0, SLJIT_IMM, sizeof(sljit_sw)); +/* Copy the integer value to the output buffer */ +#if defined COMPILE_PCRE16 || defined COMPILE_PCRE32 +OP2(SLJIT_ASHR, SLJIT_SAVED_REG2, 0, SLJIT_SAVED_REG2, 0, SLJIT_IMM, UCHAR_SHIFT); +#endif +OP1(SLJIT_MOVU_SI, SLJIT_MEM1(SLJIT_SCRATCH_REG3), sizeof(int), SLJIT_SAVED_REG2, 0); +OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_SCRATCH_REG2, 0, SLJIT_SCRATCH_REG2, 0, SLJIT_IMM, 1); +JUMPTO(SLJIT_C_NOT_ZERO, loop); +JUMPHERE(early_quit); + +/* Calculate the return value, which is the maximum ovector value. */ +if (topbracket > 1) + { + GET_LOCAL_BASE(SLJIT_SCRATCH_REG1, 0, OVECTOR_START + topbracket * 2 * sizeof(sljit_sw)); + OP1(SLJIT_MOV, SLJIT_SCRATCH_REG2, 0, SLJIT_IMM, topbracket + 1); + + /* OVECTOR(0) is never equal to SLJIT_SAVED_REG3. */ + loop = LABEL(); + OP1(SLJIT_MOVU, SLJIT_SCRATCH_REG3, 0, SLJIT_MEM1(SLJIT_SCRATCH_REG1), -(2 * (sljit_sw)sizeof(sljit_sw))); + OP2(SLJIT_SUB, SLJIT_SCRATCH_REG2, 0, SLJIT_SCRATCH_REG2, 0, SLJIT_IMM, 1); + CMPTO(SLJIT_C_EQUAL, SLJIT_SCRATCH_REG3, 0, SLJIT_SAVED_REG3, 0, loop); + OP1(SLJIT_MOV, SLJIT_RETURN_REG, 0, SLJIT_SCRATCH_REG2, 0); + } +else + OP1(SLJIT_MOV, SLJIT_RETURN_REG, 0, SLJIT_IMM, 1); +} + +static SLJIT_INLINE void return_with_partial_match(compiler_common *common, struct sljit_label *quit) +{ +DEFINE_COMPILER; +struct sljit_jump *jump; + +SLJIT_COMPILE_ASSERT(STR_END == SLJIT_SAVED_REG2, str_end_must_be_saved_reg2); +SLJIT_ASSERT(common->start_used_ptr != 0 && common->start_ptr != 0 + && (common->mode == JIT_PARTIAL_SOFT_COMPILE ? common->hit_start != 0 : common->hit_start == 0)); + +OP1(SLJIT_MOV, SLJIT_SCRATCH_REG2, 0, ARGUMENTS, 0); +OP1(SLJIT_MOV, SLJIT_RETURN_REG, 0, SLJIT_IMM, PCRE_ERROR_PARTIAL); +OP1(SLJIT_MOV_SI, SLJIT_SCRATCH_REG3, 0, SLJIT_MEM1(SLJIT_SCRATCH_REG2), SLJIT_OFFSETOF(jit_arguments, real_offset_count)); +CMPTO(SLJIT_C_SIG_LESS, SLJIT_SCRATCH_REG3, 0, SLJIT_IMM, 2, quit); + +/* Store match begin and end. */ +OP1(SLJIT_MOV, SLJIT_SAVED_REG1, 0, SLJIT_MEM1(SLJIT_SCRATCH_REG2), SLJIT_OFFSETOF(jit_arguments, begin)); +OP1(SLJIT_MOV, SLJIT_SCRATCH_REG2, 0, SLJIT_MEM1(SLJIT_SCRATCH_REG2), SLJIT_OFFSETOF(jit_arguments, offsets)); + +jump = CMP(SLJIT_C_SIG_LESS, SLJIT_SCRATCH_REG3, 0, SLJIT_IMM, 3); +OP2(SLJIT_SUB, SLJIT_SCRATCH_REG3, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), common->mode == JIT_PARTIAL_HARD_COMPILE ? common->start_ptr : (common->hit_start + (int)sizeof(sljit_sw)), SLJIT_SAVED_REG1, 0); +#if defined COMPILE_PCRE16 || defined COMPILE_PCRE32 +OP2(SLJIT_ASHR, SLJIT_SCRATCH_REG3, 0, SLJIT_SCRATCH_REG3, 0, SLJIT_IMM, UCHAR_SHIFT); +#endif +OP1(SLJIT_MOV_SI, SLJIT_MEM1(SLJIT_SCRATCH_REG2), 2 * sizeof(int), SLJIT_SCRATCH_REG3, 0); +JUMPHERE(jump); + +OP1(SLJIT_MOV, SLJIT_SCRATCH_REG3, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), common->mode == JIT_PARTIAL_HARD_COMPILE ? common->start_used_ptr : common->hit_start); +OP2(SLJIT_SUB, SLJIT_SAVED_REG2, 0, STR_END, 0, SLJIT_SAVED_REG1, 0); +#if defined COMPILE_PCRE16 || defined COMPILE_PCRE32 +OP2(SLJIT_ASHR, SLJIT_SAVED_REG2, 0, SLJIT_SAVED_REG2, 0, SLJIT_IMM, UCHAR_SHIFT); +#endif +OP1(SLJIT_MOV_SI, SLJIT_MEM1(SLJIT_SCRATCH_REG2), sizeof(int), SLJIT_SAVED_REG2, 0); + +OP2(SLJIT_SUB, SLJIT_SCRATCH_REG3, 0, SLJIT_SCRATCH_REG3, 0, SLJIT_SAVED_REG1, 0); +#if defined COMPILE_PCRE16 || defined COMPILE_PCRE32 +OP2(SLJIT_ASHR, SLJIT_SCRATCH_REG3, 0, SLJIT_SCRATCH_REG3, 0, SLJIT_IMM, UCHAR_SHIFT); +#endif +OP1(SLJIT_MOV_SI, SLJIT_MEM1(SLJIT_SCRATCH_REG2), 0, SLJIT_SCRATCH_REG3, 0); + +JUMPTO(SLJIT_JUMP, quit); +} + +static SLJIT_INLINE void check_start_used_ptr(compiler_common *common) +{ +/* May destroy TMP1. */ +DEFINE_COMPILER; +struct sljit_jump *jump; + +if (common->mode == JIT_PARTIAL_SOFT_COMPILE) + { + /* The value of -1 must be kept for start_used_ptr! */ + OP2(SLJIT_ADD, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), common->start_used_ptr, SLJIT_IMM, 1); + /* Jumps if start_used_ptr < STR_PTR, or start_used_ptr == -1. Although overwriting + is not necessary if start_used_ptr == STR_PTR, it does not hurt as well. */ + jump = CMP(SLJIT_C_LESS_EQUAL, TMP1, 0, STR_PTR, 0); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), common->start_used_ptr, STR_PTR, 0); + JUMPHERE(jump); + } +else if (common->mode == JIT_PARTIAL_HARD_COMPILE) + { + jump = CMP(SLJIT_C_LESS_EQUAL, SLJIT_MEM1(SLJIT_LOCALS_REG), common->start_used_ptr, STR_PTR, 0); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), common->start_used_ptr, STR_PTR, 0); + JUMPHERE(jump); + } +} + +static SLJIT_INLINE BOOL char_has_othercase(compiler_common *common, pcre_uchar* cc) +{ +/* Detects if the character has an othercase. */ +unsigned int c; + +#ifdef SUPPORT_UTF +if (common->utf) + { + GETCHAR(c, cc); + if (c > 127) + { +#ifdef SUPPORT_UCP + return c != UCD_OTHERCASE(c); +#else + return FALSE; +#endif + } +#ifndef COMPILE_PCRE8 + return common->fcc[c] != c; +#endif + } +else +#endif + c = *cc; +return MAX_255(c) ? common->fcc[c] != c : FALSE; +} + +static SLJIT_INLINE unsigned int char_othercase(compiler_common *common, unsigned int c) +{ +/* Returns with the othercase. */ +#ifdef SUPPORT_UTF +if (common->utf && c > 127) + { +#ifdef SUPPORT_UCP + return UCD_OTHERCASE(c); +#else + return c; +#endif + } +#endif +return TABLE_GET(c, common->fcc, c); +} + +static unsigned int char_get_othercase_bit(compiler_common *common, pcre_uchar* cc) +{ +/* Detects if the character and its othercase has only 1 bit difference. */ +unsigned int c, oc, bit; +#if defined SUPPORT_UTF && defined COMPILE_PCRE8 +int n; +#endif + +#ifdef SUPPORT_UTF +if (common->utf) + { + GETCHAR(c, cc); + if (c <= 127) + oc = common->fcc[c]; + else + { +#ifdef SUPPORT_UCP + oc = UCD_OTHERCASE(c); +#else + oc = c; +#endif + } + } +else + { + c = *cc; + oc = TABLE_GET(c, common->fcc, c); + } +#else +c = *cc; +oc = TABLE_GET(c, common->fcc, c); +#endif + +SLJIT_ASSERT(c != oc); + +bit = c ^ oc; +/* Optimized for English alphabet. */ +if (c <= 127 && bit == 0x20) + return (0 << 8) | 0x20; + +/* Since c != oc, they must have at least 1 bit difference. */ +if (!is_powerof2(bit)) + return 0; + +#if defined COMPILE_PCRE8 + +#ifdef SUPPORT_UTF +if (common->utf && c > 127) + { + n = GET_EXTRALEN(*cc); + while ((bit & 0x3f) == 0) + { + n--; + bit >>= 6; + } + return (n << 8) | bit; + } +#endif /* SUPPORT_UTF */ +return (0 << 8) | bit; + +#elif defined COMPILE_PCRE16 || defined COMPILE_PCRE32 + +#ifdef SUPPORT_UTF +if (common->utf && c > 65535) + { + if (bit >= (1 << 10)) + bit >>= 10; + else + return (bit < 256) ? ((2 << 8) | bit) : ((3 << 8) | (bit >> 8)); + } +#endif /* SUPPORT_UTF */ +return (bit < 256) ? ((0 << 8) | bit) : ((1 << 8) | (bit >> 8)); + +#endif /* COMPILE_PCRE[8|16|32] */ +} + +static void check_partial(compiler_common *common, BOOL force) +{ +/* Checks whether a partial matching is occurred. Does not modify registers. */ +DEFINE_COMPILER; +struct sljit_jump *jump = NULL; + +SLJIT_ASSERT(!force || common->mode != JIT_COMPILE); + +if (common->mode == JIT_COMPILE) + return; + +if (!force) + jump = CMP(SLJIT_C_GREATER_EQUAL, SLJIT_MEM1(SLJIT_LOCALS_REG), common->start_used_ptr, STR_PTR, 0); +else if (common->mode == JIT_PARTIAL_SOFT_COMPILE) + jump = CMP(SLJIT_C_EQUAL, SLJIT_MEM1(SLJIT_LOCALS_REG), common->start_used_ptr, SLJIT_IMM, -1); + +if (common->mode == JIT_PARTIAL_SOFT_COMPILE) + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), common->hit_start, SLJIT_IMM, 0); +else + { + if (common->partialmatchlabel != NULL) + JUMPTO(SLJIT_JUMP, common->partialmatchlabel); + else + add_jump(compiler, &common->partialmatch, JUMP(SLJIT_JUMP)); + } + +if (jump != NULL) + JUMPHERE(jump); +} + +static void check_str_end(compiler_common *common, jump_list **end_reached) +{ +/* Does not affect registers. Usually used in a tight spot. */ +DEFINE_COMPILER; +struct sljit_jump *jump; + +if (common->mode == JIT_COMPILE) + { + add_jump(compiler, end_reached, CMP(SLJIT_C_GREATER_EQUAL, STR_PTR, 0, STR_END, 0)); + return; + } + +jump = CMP(SLJIT_C_LESS, STR_PTR, 0, STR_END, 0); +if (common->mode == JIT_PARTIAL_SOFT_COMPILE) + { + add_jump(compiler, end_reached, CMP(SLJIT_C_GREATER_EQUAL, SLJIT_MEM1(SLJIT_LOCALS_REG), common->start_used_ptr, STR_PTR, 0)); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), common->hit_start, SLJIT_IMM, 0); + add_jump(compiler, end_reached, JUMP(SLJIT_JUMP)); + } +else + { + add_jump(compiler, end_reached, CMP(SLJIT_C_GREATER_EQUAL, SLJIT_MEM1(SLJIT_LOCALS_REG), common->start_used_ptr, STR_PTR, 0)); + if (common->partialmatchlabel != NULL) + JUMPTO(SLJIT_JUMP, common->partialmatchlabel); + else + add_jump(compiler, &common->partialmatch, JUMP(SLJIT_JUMP)); + } +JUMPHERE(jump); +} + +static void detect_partial_match(compiler_common *common, jump_list **backtracks) +{ +DEFINE_COMPILER; +struct sljit_jump *jump; + +if (common->mode == JIT_COMPILE) + { + add_jump(compiler, backtracks, CMP(SLJIT_C_GREATER_EQUAL, STR_PTR, 0, STR_END, 0)); + return; + } + +/* Partial matching mode. */ +jump = CMP(SLJIT_C_LESS, STR_PTR, 0, STR_END, 0); +add_jump(compiler, backtracks, CMP(SLJIT_C_GREATER_EQUAL, SLJIT_MEM1(SLJIT_LOCALS_REG), common->start_used_ptr, STR_PTR, 0)); +if (common->mode == JIT_PARTIAL_SOFT_COMPILE) + { + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), common->hit_start, SLJIT_IMM, 0); + add_jump(compiler, backtracks, JUMP(SLJIT_JUMP)); + } +else + { + if (common->partialmatchlabel != NULL) + JUMPTO(SLJIT_JUMP, common->partialmatchlabel); + else + add_jump(compiler, &common->partialmatch, JUMP(SLJIT_JUMP)); + } +JUMPHERE(jump); +} + +static void peek_char(compiler_common *common, pcre_uint32 max) +{ +/* Reads the character into TMP1, keeps STR_PTR. +Does not check STR_END. TMP2 Destroyed. */ +DEFINE_COMPILER; +#if defined SUPPORT_UTF && !defined COMPILE_PCRE32 +struct sljit_jump *jump; +#endif + +SLJIT_UNUSED_ARG(max); + +OP1(MOV_UCHAR, TMP1, 0, SLJIT_MEM1(STR_PTR), 0); +#if defined SUPPORT_UTF && defined COMPILE_PCRE8 +if (common->utf) + { + if (max < 128) return; + + jump = CMP(SLJIT_C_LESS, TMP1, 0, SLJIT_IMM, 0xc0); + OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(1)); + add_jump(compiler, &common->utfreadchar, JUMP(SLJIT_FAST_CALL)); + OP2(SLJIT_SUB, STR_PTR, 0, STR_PTR, 0, TMP2, 0); + JUMPHERE(jump); + } +#endif /* SUPPORT_UTF && !COMPILE_PCRE32 */ + +#if defined SUPPORT_UTF && defined COMPILE_PCRE16 +if (common->utf) + { + if (max < 0xd800) return; + + OP2(SLJIT_SUB, TMP2, 0, TMP1, 0, SLJIT_IMM, 0xd800); + jump = CMP(SLJIT_C_GREATER, TMP2, 0, SLJIT_IMM, 0xdc00 - 0xd800 - 1); + /* TMP2 contains the high surrogate. */ + OP1(MOV_UCHAR, TMP1, 0, SLJIT_MEM1(STR_PTR), IN_UCHARS(0)); + OP2(SLJIT_ADD, TMP2, 0, TMP2, 0, SLJIT_IMM, 0x40); + OP2(SLJIT_SHL, TMP2, 0, TMP2, 0, SLJIT_IMM, 10); + OP2(SLJIT_AND, TMP1, 0, TMP1, 0, SLJIT_IMM, 0x3ff); + OP2(SLJIT_OR, TMP1, 0, TMP1, 0, TMP2, 0); + JUMPHERE(jump); + } +#endif +} + +#if defined SUPPORT_UTF && defined COMPILE_PCRE8 + +static BOOL is_char7_bitset(const pcre_uint8 *bitset, BOOL nclass) +{ +/* Tells whether the character codes below 128 are enough +to determine a match. */ +const pcre_uint8 value = nclass ? 0xff : 0; +const pcre_uint8* end = bitset + 32; + +bitset += 16; +do + { + if (*bitset++ != value) + return FALSE; + } +while (bitset < end); +return TRUE; +} + +static void read_char7_type(compiler_common *common, BOOL full_read) +{ +/* Reads the precise character type of a character into TMP1, if the character +is less than 128. Otherwise it returns with zero. Does not check STR_END. The +full_read argument tells whether characters above max are accepted or not. */ +DEFINE_COMPILER; +struct sljit_jump *jump; + +SLJIT_ASSERT(common->utf); + +OP1(MOV_UCHAR, TMP2, 0, SLJIT_MEM1(STR_PTR), 0); +OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(1)); + +OP1(SLJIT_MOV_UB, TMP1, 0, SLJIT_MEM1(TMP2), common->ctypes); + +if (full_read) + { + jump = CMP(SLJIT_C_LESS, TMP2, 0, SLJIT_IMM, 0xc0); + OP1(SLJIT_MOV_UB, TMP2, 0, SLJIT_MEM1(TMP2), (sljit_sw)PRIV(utf8_table4) - 0xc0); + OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, TMP2, 0); + JUMPHERE(jump); + } +} + +#endif /* SUPPORT_UTF && COMPILE_PCRE8 */ + +static void read_char_range(compiler_common *common, pcre_uint32 min, pcre_uint32 max, BOOL update_str_ptr) +{ +/* Reads the precise value of a character into TMP1, if the character is +between min and max (c >= min && c <= max). Otherwise it returns with a value +outside the range. Does not check STR_END. */ +DEFINE_COMPILER; +#if defined SUPPORT_UTF && !defined COMPILE_PCRE32 +struct sljit_jump *jump; +#endif +#if defined SUPPORT_UTF && defined COMPILE_PCRE8 +struct sljit_jump *jump2; +#endif + +SLJIT_UNUSED_ARG(update_str_ptr); +SLJIT_UNUSED_ARG(min); +SLJIT_UNUSED_ARG(max); +SLJIT_ASSERT(min <= max); + +OP1(MOV_UCHAR, TMP1, 0, SLJIT_MEM1(STR_PTR), IN_UCHARS(0)); +OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(1)); + +#if defined SUPPORT_UTF && defined COMPILE_PCRE8 +if (common->utf) + { + if (max < 128 && !update_str_ptr) return; + + jump = CMP(SLJIT_C_LESS, TMP1, 0, SLJIT_IMM, 0xc0); + if (min >= 0x10000) + { + OP2(SLJIT_SUB, TMP2, 0, TMP1, 0, SLJIT_IMM, 0xf0); + if (update_str_ptr) + OP1(SLJIT_MOV_UB, RETURN_ADDR, 0, SLJIT_MEM1(TMP1), (sljit_sw)PRIV(utf8_table4) - 0xc0); + OP1(MOV_UCHAR, TMP1, 0, SLJIT_MEM1(STR_PTR), IN_UCHARS(0)); + jump2 = CMP(SLJIT_C_GREATER, TMP2, 0, SLJIT_IMM, 0x7); + OP2(SLJIT_SHL, TMP2, 0, TMP2, 0, SLJIT_IMM, 6); + OP2(SLJIT_AND, TMP1, 0, TMP1, 0, SLJIT_IMM, 0x3f); + OP2(SLJIT_OR, TMP1, 0, TMP1, 0, TMP2, 0); + OP1(MOV_UCHAR, TMP2, 0, SLJIT_MEM1(STR_PTR), IN_UCHARS(1)); + OP2(SLJIT_SHL, TMP1, 0, TMP1, 0, SLJIT_IMM, 6); + OP2(SLJIT_AND, TMP2, 0, TMP2, 0, SLJIT_IMM, 0x3f); + OP2(SLJIT_OR, TMP1, 0, TMP1, 0, TMP2, 0); + OP1(MOV_UCHAR, TMP2, 0, SLJIT_MEM1(STR_PTR), IN_UCHARS(2)); + if (!update_str_ptr) + OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(3)); + OP2(SLJIT_SHL, TMP1, 0, TMP1, 0, SLJIT_IMM, 6); + OP2(SLJIT_AND, TMP2, 0, TMP2, 0, SLJIT_IMM, 0x3f); + OP2(SLJIT_OR, TMP1, 0, TMP1, 0, TMP2, 0); + JUMPHERE(jump2); + if (update_str_ptr) + OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, RETURN_ADDR, 0); + } + else if (min >= 0x800 && max <= 0xffff) + { + OP2(SLJIT_SUB, TMP2, 0, TMP1, 0, SLJIT_IMM, 0xe0); + if (update_str_ptr) + OP1(SLJIT_MOV_UB, RETURN_ADDR, 0, SLJIT_MEM1(TMP1), (sljit_sw)PRIV(utf8_table4) - 0xc0); + OP1(MOV_UCHAR, TMP1, 0, SLJIT_MEM1(STR_PTR), IN_UCHARS(0)); + jump2 = CMP(SLJIT_C_GREATER, TMP2, 0, SLJIT_IMM, 0xf); + OP2(SLJIT_SHL, TMP2, 0, TMP2, 0, SLJIT_IMM, 6); + OP2(SLJIT_AND, TMP1, 0, TMP1, 0, SLJIT_IMM, 0x3f); + OP2(SLJIT_OR, TMP1, 0, TMP1, 0, TMP2, 0); + OP1(MOV_UCHAR, TMP2, 0, SLJIT_MEM1(STR_PTR), IN_UCHARS(1)); + if (!update_str_ptr) + OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(2)); + OP2(SLJIT_SHL, TMP1, 0, TMP1, 0, SLJIT_IMM, 6); + OP2(SLJIT_AND, TMP2, 0, TMP2, 0, SLJIT_IMM, 0x3f); + OP2(SLJIT_OR, TMP1, 0, TMP1, 0, TMP2, 0); + JUMPHERE(jump2); + if (update_str_ptr) + OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, RETURN_ADDR, 0); + } + else if (max >= 0x800) + add_jump(compiler, (max < 0x10000) ? &common->utfreadchar16 : &common->utfreadchar, JUMP(SLJIT_FAST_CALL)); + else if (max < 128) + { + OP1(SLJIT_MOV_UB, TMP2, 0, SLJIT_MEM1(TMP1), (sljit_sw)PRIV(utf8_table4) - 0xc0); + OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, TMP2, 0); + } + else + { + OP1(MOV_UCHAR, TMP2, 0, SLJIT_MEM1(STR_PTR), IN_UCHARS(0)); + if (!update_str_ptr) + OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(1)); + else + OP1(SLJIT_MOV_UB, RETURN_ADDR, 0, SLJIT_MEM1(TMP1), (sljit_sw)PRIV(utf8_table4) - 0xc0); + OP2(SLJIT_AND, TMP1, 0, TMP1, 0, SLJIT_IMM, 0x3f); + OP2(SLJIT_SHL, TMP1, 0, TMP1, 0, SLJIT_IMM, 6); + OP2(SLJIT_AND, TMP2, 0, TMP2, 0, SLJIT_IMM, 0x3f); + OP2(SLJIT_OR, TMP1, 0, TMP1, 0, TMP2, 0); + if (update_str_ptr) + OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, RETURN_ADDR, 0); + } + JUMPHERE(jump); + } +#endif + +#if defined SUPPORT_UTF && defined COMPILE_PCRE16 +if (common->utf) + { + if (max >= 0x10000) + { + OP2(SLJIT_SUB, TMP2, 0, TMP1, 0, SLJIT_IMM, 0xd800); + jump = CMP(SLJIT_C_GREATER, TMP2, 0, SLJIT_IMM, 0xdc00 - 0xd800 - 1); + /* TMP2 contains the high surrogate. */ + OP1(MOV_UCHAR, TMP1, 0, SLJIT_MEM1(STR_PTR), IN_UCHARS(0)); + OP2(SLJIT_ADD, TMP2, 0, TMP2, 0, SLJIT_IMM, 0x40); + OP2(SLJIT_SHL, TMP2, 0, TMP2, 0, SLJIT_IMM, 10); + OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(1)); + OP2(SLJIT_AND, TMP1, 0, TMP1, 0, SLJIT_IMM, 0x3ff); + OP2(SLJIT_OR, TMP1, 0, TMP1, 0, TMP2, 0); + JUMPHERE(jump); + return; + } + + if (max < 0xd800 && !update_str_ptr) return; + + /* Skip low surrogate if necessary. */ + OP2(SLJIT_SUB, TMP2, 0, TMP1, 0, SLJIT_IMM, 0xd800); + jump = CMP(SLJIT_C_GREATER, TMP2, 0, SLJIT_IMM, 0xdc00 - 0xd800 - 1); + if (update_str_ptr) + OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(1)); + if (max >= 0xd800) + OP1(SLJIT_MOV, TMP1, 0, SLJIT_IMM, 0x10000); + JUMPHERE(jump); + } +#endif +} + +static SLJIT_INLINE void read_char(compiler_common *common) +{ +read_char_range(common, 0, READ_CHAR_MAX, TRUE); +} + +static void read_char8_type(compiler_common *common, BOOL update_str_ptr) +{ +/* Reads the character type into TMP1, updates STR_PTR. Does not check STR_END. */ +DEFINE_COMPILER; +#if defined SUPPORT_UTF || !defined COMPILE_PCRE8 +struct sljit_jump *jump; +#endif +#if defined SUPPORT_UTF && defined COMPILE_PCRE8 +struct sljit_jump *jump2; +#endif + +SLJIT_UNUSED_ARG(update_str_ptr); + +OP1(MOV_UCHAR, TMP2, 0, SLJIT_MEM1(STR_PTR), 0); +OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(1)); + +#if defined SUPPORT_UTF && defined COMPILE_PCRE8 +if (common->utf) + { + /* This can be an extra read in some situations, but hopefully + it is needed in most cases. */ + OP1(SLJIT_MOV_UB, TMP1, 0, SLJIT_MEM1(TMP2), common->ctypes); + jump = CMP(SLJIT_C_LESS, TMP2, 0, SLJIT_IMM, 0xc0); + if (!update_str_ptr) + { + OP1(MOV_UCHAR, TMP1, 0, SLJIT_MEM1(STR_PTR), IN_UCHARS(0)); + OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(1)); + OP2(SLJIT_AND, TMP2, 0, TMP2, 0, SLJIT_IMM, 0x3f); + OP2(SLJIT_SHL, TMP2, 0, TMP2, 0, SLJIT_IMM, 6); + OP2(SLJIT_AND, TMP1, 0, TMP1, 0, SLJIT_IMM, 0x3f); + OP2(SLJIT_OR, TMP2, 0, TMP2, 0, TMP1, 0); + OP1(SLJIT_MOV, TMP1, 0, SLJIT_IMM, 0); + jump2 = CMP(SLJIT_C_GREATER, TMP2, 0, SLJIT_IMM, 255); + OP1(SLJIT_MOV_UB, TMP1, 0, SLJIT_MEM1(TMP2), common->ctypes); + JUMPHERE(jump2); + } + else + add_jump(compiler, &common->utfreadtype8, JUMP(SLJIT_FAST_CALL)); + JUMPHERE(jump); + return; + } +#endif /* SUPPORT_UTF && COMPILE_PCRE8 */ + +#if !defined COMPILE_PCRE8 +/* The ctypes array contains only 256 values. */ +OP1(SLJIT_MOV, TMP1, 0, SLJIT_IMM, 0); +jump = CMP(SLJIT_C_GREATER, TMP2, 0, SLJIT_IMM, 255); +#endif +OP1(SLJIT_MOV_UB, TMP1, 0, SLJIT_MEM1(TMP2), common->ctypes); +#if !defined COMPILE_PCRE8 +JUMPHERE(jump); +#endif + +#if defined SUPPORT_UTF && defined COMPILE_PCRE16 +if (common->utf && update_str_ptr) + { + /* Skip low surrogate if necessary. */ + OP2(SLJIT_SUB, TMP2, 0, TMP2, 0, SLJIT_IMM, 0xd800); + jump = CMP(SLJIT_C_GREATER, TMP2, 0, SLJIT_IMM, 0xdc00 - 0xd800 - 1); + OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(1)); + JUMPHERE(jump); + } +#endif /* SUPPORT_UTF && COMPILE_PCRE16 */ +} + +static void skip_char_back(compiler_common *common) +{ +/* Goes one character back. Affects STR_PTR and TMP1. Does not check begin. */ +DEFINE_COMPILER; +#if defined SUPPORT_UTF && !defined COMPILE_PCRE32 +#if defined COMPILE_PCRE8 +struct sljit_label *label; + +if (common->utf) + { + label = LABEL(); + OP1(MOV_UCHAR, TMP1, 0, SLJIT_MEM1(STR_PTR), -IN_UCHARS(1)); + OP2(SLJIT_SUB, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(1)); + OP2(SLJIT_AND, TMP1, 0, TMP1, 0, SLJIT_IMM, 0xc0); + CMPTO(SLJIT_C_EQUAL, TMP1, 0, SLJIT_IMM, 0x80, label); + return; + } +#elif defined COMPILE_PCRE16 +if (common->utf) + { + OP1(MOV_UCHAR, TMP1, 0, SLJIT_MEM1(STR_PTR), -IN_UCHARS(1)); + OP2(SLJIT_SUB, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(1)); + /* Skip low surrogate if necessary. */ + OP2(SLJIT_AND, TMP1, 0, TMP1, 0, SLJIT_IMM, 0xfc00); + OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, 0xdc00); + OP_FLAGS(SLJIT_MOV, TMP1, 0, SLJIT_UNUSED, 0, SLJIT_C_EQUAL); + OP2(SLJIT_SHL, TMP1, 0, TMP1, 0, SLJIT_IMM, 1); + OP2(SLJIT_SUB, STR_PTR, 0, STR_PTR, 0, TMP1, 0); + return; + } +#endif /* COMPILE_PCRE[8|16] */ +#endif /* SUPPORT_UTF && !COMPILE_PCRE32 */ +OP2(SLJIT_SUB, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(1)); +} + +static void check_newlinechar(compiler_common *common, int nltype, jump_list **backtracks, BOOL jumpifmatch) +{ +/* Character comes in TMP1. Checks if it is a newline. TMP2 may be destroyed. */ +DEFINE_COMPILER; +struct sljit_jump *jump; + +if (nltype == NLTYPE_ANY) + { + add_jump(compiler, &common->anynewline, JUMP(SLJIT_FAST_CALL)); + add_jump(compiler, backtracks, JUMP(jumpifmatch ? SLJIT_C_NOT_ZERO : SLJIT_C_ZERO)); + } +else if (nltype == NLTYPE_ANYCRLF) + { + if (jumpifmatch) + { + add_jump(compiler, backtracks, CMP(SLJIT_C_EQUAL, TMP1, 0, SLJIT_IMM, CHAR_CR)); + add_jump(compiler, backtracks, CMP(SLJIT_C_EQUAL, TMP1, 0, SLJIT_IMM, CHAR_NL)); + } + else + { + jump = CMP(SLJIT_C_EQUAL, TMP1, 0, SLJIT_IMM, CHAR_CR); + add_jump(compiler, backtracks, CMP(SLJIT_C_NOT_EQUAL, TMP1, 0, SLJIT_IMM, CHAR_NL)); + JUMPHERE(jump); + } + } +else + { + SLJIT_ASSERT(nltype == NLTYPE_FIXED && common->newline < 256); + add_jump(compiler, backtracks, CMP(jumpifmatch ? SLJIT_C_EQUAL : SLJIT_C_NOT_EQUAL, TMP1, 0, SLJIT_IMM, common->newline)); + } +} + +#ifdef SUPPORT_UTF + +#if defined COMPILE_PCRE8 +static void do_utfreadchar(compiler_common *common) +{ +/* Fast decoding a UTF-8 character. TMP1 contains the first byte +of the character (>= 0xc0). Return char value in TMP1, length in TMP2. */ +DEFINE_COMPILER; +struct sljit_jump *jump; + +sljit_emit_fast_enter(compiler, RETURN_ADDR, 0); +OP1(MOV_UCHAR, TMP2, 0, SLJIT_MEM1(STR_PTR), IN_UCHARS(0)); +OP2(SLJIT_AND, TMP1, 0, TMP1, 0, SLJIT_IMM, 0x3f); +OP2(SLJIT_SHL, TMP1, 0, TMP1, 0, SLJIT_IMM, 6); +OP2(SLJIT_AND, TMP2, 0, TMP2, 0, SLJIT_IMM, 0x3f); +OP2(SLJIT_OR, TMP1, 0, TMP1, 0, TMP2, 0); + +/* Searching for the first zero. */ +OP2(SLJIT_AND | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, 0x800); +jump = JUMP(SLJIT_C_NOT_ZERO); +/* Two byte sequence. */ +OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(1)); +OP1(SLJIT_MOV, TMP2, 0, SLJIT_IMM, IN_UCHARS(2)); +sljit_emit_fast_return(compiler, RETURN_ADDR, 0); + +JUMPHERE(jump); +OP1(MOV_UCHAR, TMP2, 0, SLJIT_MEM1(STR_PTR), IN_UCHARS(1)); +OP2(SLJIT_XOR, TMP1, 0, TMP1, 0, SLJIT_IMM, 0x800); +OP2(SLJIT_SHL, TMP1, 0, TMP1, 0, SLJIT_IMM, 6); +OP2(SLJIT_AND, TMP2, 0, TMP2, 0, SLJIT_IMM, 0x3f); +OP2(SLJIT_OR, TMP1, 0, TMP1, 0, TMP2, 0); + +OP2(SLJIT_AND | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, 0x10000); +jump = JUMP(SLJIT_C_NOT_ZERO); +/* Three byte sequence. */ +OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(2)); +OP1(SLJIT_MOV, TMP2, 0, SLJIT_IMM, IN_UCHARS(3)); +sljit_emit_fast_return(compiler, RETURN_ADDR, 0); + +/* Four byte sequence. */ +JUMPHERE(jump); +OP1(MOV_UCHAR, TMP2, 0, SLJIT_MEM1(STR_PTR), IN_UCHARS(2)); +OP2(SLJIT_XOR, TMP1, 0, TMP1, 0, SLJIT_IMM, 0x10000); +OP2(SLJIT_SHL, TMP1, 0, TMP1, 0, SLJIT_IMM, 6); +OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(3)); +OP2(SLJIT_AND, TMP2, 0, TMP2, 0, SLJIT_IMM, 0x3f); +OP2(SLJIT_OR, TMP1, 0, TMP1, 0, TMP2, 0); +OP1(SLJIT_MOV, TMP2, 0, SLJIT_IMM, IN_UCHARS(4)); +sljit_emit_fast_return(compiler, RETURN_ADDR, 0); +} + +static void do_utfreadchar16(compiler_common *common) +{ +/* Fast decoding a UTF-8 character. TMP1 contains the first byte +of the character (>= 0xc0). Return value in TMP1. */ +DEFINE_COMPILER; +struct sljit_jump *jump; + +sljit_emit_fast_enter(compiler, RETURN_ADDR, 0); +OP1(MOV_UCHAR, TMP2, 0, SLJIT_MEM1(STR_PTR), IN_UCHARS(0)); +OP2(SLJIT_AND, TMP1, 0, TMP1, 0, SLJIT_IMM, 0x3f); +OP2(SLJIT_SHL, TMP1, 0, TMP1, 0, SLJIT_IMM, 6); +OP2(SLJIT_AND, TMP2, 0, TMP2, 0, SLJIT_IMM, 0x3f); +OP2(SLJIT_OR, TMP1, 0, TMP1, 0, TMP2, 0); + +/* Searching for the first zero. */ +OP2(SLJIT_AND | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, 0x800); +jump = JUMP(SLJIT_C_NOT_ZERO); +/* Two byte sequence. */ +OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(1)); +sljit_emit_fast_return(compiler, RETURN_ADDR, 0); + +JUMPHERE(jump); +OP2(SLJIT_AND | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, 0x400); +OP_FLAGS(SLJIT_MOV, TMP2, 0, SLJIT_UNUSED, 0, SLJIT_C_NOT_ZERO); +/* This code runs only in 8 bit mode. No need to shift the value. */ +OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, TMP2, 0); +OP1(MOV_UCHAR, TMP2, 0, SLJIT_MEM1(STR_PTR), IN_UCHARS(1)); +OP2(SLJIT_XOR, TMP1, 0, TMP1, 0, SLJIT_IMM, 0x800); +OP2(SLJIT_SHL, TMP1, 0, TMP1, 0, SLJIT_IMM, 6); +OP2(SLJIT_AND, TMP2, 0, TMP2, 0, SLJIT_IMM, 0x3f); +OP2(SLJIT_OR, TMP1, 0, TMP1, 0, TMP2, 0); +/* Three byte sequence. */ +OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(2)); +sljit_emit_fast_return(compiler, RETURN_ADDR, 0); +} + +static void do_utfreadtype8(compiler_common *common) +{ +/* Fast decoding a UTF-8 character type. TMP2 contains the first byte +of the character (>= 0xc0). Return value in TMP1. */ +DEFINE_COMPILER; +struct sljit_jump *jump; +struct sljit_jump *compare; + +sljit_emit_fast_enter(compiler, RETURN_ADDR, 0); + +OP2(SLJIT_AND | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP2, 0, SLJIT_IMM, 0x20); +jump = JUMP(SLJIT_C_NOT_ZERO); +/* Two byte sequence. */ +OP1(MOV_UCHAR, TMP1, 0, SLJIT_MEM1(STR_PTR), IN_UCHARS(0)); +OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(1)); +OP2(SLJIT_AND, TMP2, 0, TMP2, 0, SLJIT_IMM, 0x1f); +/* The upper 5 bits are known at this point. */ +compare = CMP(SLJIT_C_GREATER, TMP2, 0, SLJIT_IMM, 0x3); +OP2(SLJIT_SHL, TMP2, 0, TMP2, 0, SLJIT_IMM, 6); +OP2(SLJIT_AND, TMP1, 0, TMP1, 0, SLJIT_IMM, 0x3f); +OP2(SLJIT_OR, TMP2, 0, TMP2, 0, TMP1, 0); +OP1(SLJIT_MOV_UB, TMP1, 0, SLJIT_MEM1(TMP2), common->ctypes); +sljit_emit_fast_return(compiler, RETURN_ADDR, 0); + +JUMPHERE(compare); +OP1(SLJIT_MOV, TMP1, 0, SLJIT_IMM, 0); +sljit_emit_fast_return(compiler, RETURN_ADDR, 0); + +/* We only have types for characters less than 256. */ +JUMPHERE(jump); +OP1(SLJIT_MOV_UB, TMP2, 0, SLJIT_MEM1(TMP2), (sljit_sw)PRIV(utf8_table4) - 0xc0); +OP1(SLJIT_MOV, TMP1, 0, SLJIT_IMM, 0); +OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, TMP2, 0); +sljit_emit_fast_return(compiler, RETURN_ADDR, 0); +} + +#endif /* COMPILE_PCRE8 */ + +#endif /* SUPPORT_UTF */ + +#ifdef SUPPORT_UCP + +/* UCD_BLOCK_SIZE must be 128 (see the assert below). */ +#define UCD_BLOCK_MASK 127 +#define UCD_BLOCK_SHIFT 7 + +static void do_getucd(compiler_common *common) +{ +/* Search the UCD record for the character comes in TMP1. +Returns chartype in TMP1 and UCD offset in TMP2. */ +DEFINE_COMPILER; + +SLJIT_ASSERT(UCD_BLOCK_SIZE == 128 && sizeof(ucd_record) == 8); + +sljit_emit_fast_enter(compiler, RETURN_ADDR, 0); +OP2(SLJIT_LSHR, TMP2, 0, TMP1, 0, SLJIT_IMM, UCD_BLOCK_SHIFT); +OP1(SLJIT_MOV_UB, TMP2, 0, SLJIT_MEM1(TMP2), (sljit_sw)PRIV(ucd_stage1)); +OP2(SLJIT_AND, TMP1, 0, TMP1, 0, SLJIT_IMM, UCD_BLOCK_MASK); +OP2(SLJIT_SHL, TMP2, 0, TMP2, 0, SLJIT_IMM, UCD_BLOCK_SHIFT); +OP2(SLJIT_ADD, TMP1, 0, TMP1, 0, TMP2, 0); +OP1(SLJIT_MOV, TMP2, 0, SLJIT_IMM, (sljit_sw)PRIV(ucd_stage2)); +OP1(SLJIT_MOV_UH, TMP2, 0, SLJIT_MEM2(TMP2, TMP1), 1); +OP1(SLJIT_MOV, TMP1, 0, SLJIT_IMM, (sljit_sw)PRIV(ucd_records) + SLJIT_OFFSETOF(ucd_record, chartype)); +OP1(SLJIT_MOV_UB, TMP1, 0, SLJIT_MEM2(TMP1, TMP2), 3); +sljit_emit_fast_return(compiler, RETURN_ADDR, 0); +} +#endif + +static SLJIT_INLINE struct sljit_label *mainloop_entry(compiler_common *common, BOOL hascrorlf, BOOL firstline) +{ +DEFINE_COMPILER; +struct sljit_label *mainloop; +struct sljit_label *newlinelabel = NULL; +struct sljit_jump *start; +struct sljit_jump *end = NULL; +struct sljit_jump *nl = NULL; +#if defined SUPPORT_UTF && !defined COMPILE_PCRE32 +struct sljit_jump *singlechar; +#endif +jump_list *newline = NULL; +BOOL newlinecheck = FALSE; +BOOL readuchar = FALSE; + +if (!(hascrorlf || firstline) && (common->nltype == NLTYPE_ANY || + common->nltype == NLTYPE_ANYCRLF || common->newline > 255)) + newlinecheck = TRUE; + +if (firstline) + { + /* Search for the end of the first line. */ + SLJIT_ASSERT(common->first_line_end != 0); + OP1(SLJIT_MOV, TMP3, 0, STR_PTR, 0); + + if (common->nltype == NLTYPE_FIXED && common->newline > 255) + { + mainloop = LABEL(); + OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(1)); + end = CMP(SLJIT_C_GREATER_EQUAL, STR_PTR, 0, STR_END, 0); + OP1(MOV_UCHAR, TMP1, 0, SLJIT_MEM1(STR_PTR), IN_UCHARS(-1)); + OP1(MOV_UCHAR, TMP2, 0, SLJIT_MEM1(STR_PTR), IN_UCHARS(0)); + CMPTO(SLJIT_C_NOT_EQUAL, TMP1, 0, SLJIT_IMM, (common->newline >> 8) & 0xff, mainloop); + CMPTO(SLJIT_C_NOT_EQUAL, TMP2, 0, SLJIT_IMM, common->newline & 0xff, mainloop); + JUMPHERE(end); + OP2(SLJIT_SUB, SLJIT_MEM1(SLJIT_LOCALS_REG), common->first_line_end, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(1)); + } + else + { + end = CMP(SLJIT_C_GREATER_EQUAL, STR_PTR, 0, STR_END, 0); + mainloop = LABEL(); + /* Continual stores does not cause data dependency. */ + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), common->first_line_end, STR_PTR, 0); + read_char_range(common, common->nlmin, common->nlmax, TRUE); + check_newlinechar(common, common->nltype, &newline, TRUE); + CMPTO(SLJIT_C_LESS, STR_PTR, 0, STR_END, 0, mainloop); + JUMPHERE(end); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), common->first_line_end, STR_PTR, 0); + set_jumps(newline, LABEL()); + } + + OP1(SLJIT_MOV, STR_PTR, 0, TMP3, 0); + } + +start = JUMP(SLJIT_JUMP); + +if (newlinecheck) + { + newlinelabel = LABEL(); + OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(1)); + end = CMP(SLJIT_C_GREATER_EQUAL, STR_PTR, 0, STR_END, 0); + OP1(MOV_UCHAR, TMP1, 0, SLJIT_MEM1(STR_PTR), 0); + OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, common->newline & 0xff); + OP_FLAGS(SLJIT_MOV, TMP1, 0, SLJIT_UNUSED, 0, SLJIT_C_EQUAL); +#if defined COMPILE_PCRE16 || defined COMPILE_PCRE32 + OP2(SLJIT_SHL, TMP1, 0, TMP1, 0, SLJIT_IMM, UCHAR_SHIFT); +#endif + OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, TMP1, 0); + nl = JUMP(SLJIT_JUMP); + } + +mainloop = LABEL(); + +/* Increasing the STR_PTR here requires one less jump in the most common case. */ +#ifdef SUPPORT_UTF +if (common->utf) readuchar = TRUE; +#endif +if (newlinecheck) readuchar = TRUE; + +if (readuchar) + OP1(MOV_UCHAR, TMP1, 0, SLJIT_MEM1(STR_PTR), 0); + +if (newlinecheck) + CMPTO(SLJIT_C_EQUAL, TMP1, 0, SLJIT_IMM, (common->newline >> 8) & 0xff, newlinelabel); + +OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(1)); +#if defined SUPPORT_UTF && !defined COMPILE_PCRE32 +#if defined COMPILE_PCRE8 +if (common->utf) + { + singlechar = CMP(SLJIT_C_LESS, TMP1, 0, SLJIT_IMM, 0xc0); + OP1(SLJIT_MOV_UB, TMP1, 0, SLJIT_MEM1(TMP1), (sljit_sw)PRIV(utf8_table4) - 0xc0); + OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, TMP1, 0); + JUMPHERE(singlechar); + } +#elif defined COMPILE_PCRE16 +if (common->utf) + { + singlechar = CMP(SLJIT_C_LESS, TMP1, 0, SLJIT_IMM, 0xd800); + OP2(SLJIT_AND, TMP1, 0, TMP1, 0, SLJIT_IMM, 0xfc00); + OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, 0xd800); + OP_FLAGS(SLJIT_MOV, TMP1, 0, SLJIT_UNUSED, 0, SLJIT_C_EQUAL); + OP2(SLJIT_SHL, TMP1, 0, TMP1, 0, SLJIT_IMM, 1); + OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, TMP1, 0); + JUMPHERE(singlechar); + } +#endif /* COMPILE_PCRE[8|16] */ +#endif /* SUPPORT_UTF && !COMPILE_PCRE32 */ +JUMPHERE(start); + +if (newlinecheck) + { + JUMPHERE(end); + JUMPHERE(nl); + } + +return mainloop; +} + +#define MAX_N_CHARS 16 +#define MAX_N_BYTES 8 + +static SLJIT_INLINE void add_prefix_byte(pcre_uint8 byte, pcre_uint8 *bytes) +{ +pcre_uint8 len = bytes[0]; +int i; + +if (len == 255) + return; + +if (len == 0) + { + bytes[0] = 1; + bytes[1] = byte; + return; + } + +for (i = len; i > 0; i--) + if (bytes[i] == byte) + return; + +if (len >= MAX_N_BYTES - 1) + { + bytes[0] = 255; + return; + } + +len++; +bytes[len] = byte; +bytes[0] = len; +} + +static int scan_prefix(compiler_common *common, pcre_uchar *cc, pcre_uint32 *chars, pcre_uint8 *bytes, int max_chars) +{ +/* Recursive function, which scans prefix literals. */ +BOOL last, any, caseless; +int len, repeat, len_save, consumed = 0; +pcre_uint32 chr, mask; +pcre_uchar *alternative, *cc_save, *oc; +#if defined SUPPORT_UTF && defined COMPILE_PCRE8 +pcre_uchar othercase[8]; +#elif defined SUPPORT_UTF && defined COMPILE_PCRE16 +pcre_uchar othercase[2]; +#else +pcre_uchar othercase[1]; +#endif + +repeat = 1; +while (TRUE) + { + last = TRUE; + any = FALSE; + caseless = FALSE; + switch (*cc) + { + case OP_CHARI: + caseless = TRUE; + case OP_CHAR: + last = FALSE; + cc++; + break; + + case OP_SOD: + case OP_SOM: + case OP_SET_SOM: + case OP_NOT_WORD_BOUNDARY: + case OP_WORD_BOUNDARY: + case OP_EODN: + case OP_EOD: + case OP_CIRC: + case OP_CIRCM: + case OP_DOLL: + case OP_DOLLM: + /* Zero width assertions. */ + cc++; + continue; + + case OP_ASSERT: + case OP_ASSERT_NOT: + case OP_ASSERTBACK: + case OP_ASSERTBACK_NOT: + cc = bracketend(cc); + continue; + + case OP_PLUSI: + case OP_MINPLUSI: + case OP_POSPLUSI: + caseless = TRUE; + case OP_PLUS: + case OP_MINPLUS: + case OP_POSPLUS: + cc++; + break; + + case OP_EXACTI: + caseless = TRUE; + case OP_EXACT: + repeat = GET2(cc, 1); + last = FALSE; + cc += 1 + IMM2_SIZE; + break; + + case OP_QUERYI: + case OP_MINQUERYI: + case OP_POSQUERYI: + caseless = TRUE; + case OP_QUERY: + case OP_MINQUERY: + case OP_POSQUERY: + len = 1; + cc++; +#ifdef SUPPORT_UTF + if (common->utf && HAS_EXTRALEN(*cc)) len += GET_EXTRALEN(*cc); +#endif + max_chars = scan_prefix(common, cc + len, chars, bytes, max_chars); + if (max_chars == 0) + return consumed; + last = FALSE; + break; + + case OP_KET: + cc += 1 + LINK_SIZE; + continue; + + case OP_ALT: + cc += GET(cc, 1); + continue; + + case OP_ONCE: + case OP_ONCE_NC: + case OP_BRA: + case OP_BRAPOS: + case OP_CBRA: + case OP_CBRAPOS: + alternative = cc + GET(cc, 1); + while (*alternative == OP_ALT) + { + max_chars = scan_prefix(common, alternative + 1 + LINK_SIZE, chars, bytes, max_chars); + if (max_chars == 0) + return consumed; + alternative += GET(alternative, 1); + } + + if (*cc == OP_CBRA || *cc == OP_CBRAPOS) + cc += IMM2_SIZE; + cc += 1 + LINK_SIZE; + continue; + + case OP_CLASS: +#if defined SUPPORT_UTF && defined COMPILE_PCRE8 + if (common->utf && !is_char7_bitset((const pcre_uint8 *)(cc + 1), FALSE)) return consumed; +#endif + any = TRUE; + cc += 1 + 32 / sizeof(pcre_uchar); + break; + + case OP_NCLASS: +#if defined SUPPORT_UTF && !defined COMPILE_PCRE32 + if (common->utf) return consumed; +#endif + any = TRUE; + cc += 1 + 32 / sizeof(pcre_uchar); + break; + +#if defined SUPPORT_UTF || !defined COMPILE_PCRE8 + case OP_XCLASS: +#if defined SUPPORT_UTF && !defined COMPILE_PCRE32 + if (common->utf) return consumed; +#endif + any = TRUE; + cc += GET(cc, 1); + break; +#endif + + case OP_DIGIT: +#if defined SUPPORT_UTF && defined COMPILE_PCRE8 + if (common->utf && !is_char7_bitset((const pcre_uint8 *)common->ctypes - cbit_length + cbit_digit, FALSE)) + return consumed; +#endif + any = TRUE; + cc++; + break; + + case OP_WHITESPACE: +#if defined SUPPORT_UTF && defined COMPILE_PCRE8 + if (common->utf && !is_char7_bitset((const pcre_uint8 *)common->ctypes - cbit_length + cbit_space, FALSE)) + return consumed; +#endif + any = TRUE; + cc++; + break; + + case OP_WORDCHAR: +#if defined SUPPORT_UTF && defined COMPILE_PCRE8 + if (common->utf && !is_char7_bitset((const pcre_uint8 *)common->ctypes - cbit_length + cbit_word, FALSE)) + return consumed; +#endif + any = TRUE; + cc++; + break; + + case OP_NOT: + case OP_NOTI: + cc++; + /* Fall through. */ + case OP_NOT_DIGIT: + case OP_NOT_WHITESPACE: + case OP_NOT_WORDCHAR: + case OP_ANY: + case OP_ALLANY: +#if defined SUPPORT_UTF && !defined COMPILE_PCRE32 + if (common->utf) return consumed; +#endif + any = TRUE; + cc++; + break; + +#ifdef SUPPORT_UCP + case OP_NOTPROP: + case OP_PROP: +#if defined SUPPORT_UTF && !defined COMPILE_PCRE32 + if (common->utf) return consumed; +#endif + any = TRUE; + cc += 1 + 2; + break; +#endif + + case OP_TYPEEXACT: + repeat = GET2(cc, 1); + cc += 1 + IMM2_SIZE; + continue; + + case OP_NOTEXACT: + case OP_NOTEXACTI: +#if defined SUPPORT_UTF && !defined COMPILE_PCRE32 + if (common->utf) return consumed; +#endif + any = TRUE; + repeat = GET2(cc, 1); + cc += 1 + IMM2_SIZE + 1; + break; + + default: + return consumed; + } + + if (any) + { +#if defined COMPILE_PCRE8 + mask = 0xff; +#elif defined COMPILE_PCRE16 + mask = 0xffff; +#elif defined COMPILE_PCRE32 + mask = 0xffffffff; +#else + SLJIT_ASSERT_STOP(); +#endif + + do + { + chars[0] = mask; + chars[1] = mask; + bytes[0] = 255; + + consumed++; + if (--max_chars == 0) + return consumed; + chars += 2; + bytes += MAX_N_BYTES; + } + while (--repeat > 0); + + repeat = 1; + continue; + } + + len = 1; +#ifdef SUPPORT_UTF + if (common->utf && HAS_EXTRALEN(*cc)) len += GET_EXTRALEN(*cc); +#endif + + if (caseless && char_has_othercase(common, cc)) + { +#ifdef SUPPORT_UTF + if (common->utf) + { + GETCHAR(chr, cc); + if ((int)PRIV(ord2utf)(char_othercase(common, chr), othercase) != len) + return consumed; + } + else +#endif + { + chr = *cc; + othercase[0] = TABLE_GET(chr, common->fcc, chr); + } + } + else + caseless = FALSE; + + len_save = len; + cc_save = cc; + while (TRUE) + { + oc = othercase; + do + { + chr = *cc; +#ifdef COMPILE_PCRE32 + if (SLJIT_UNLIKELY(chr == NOTACHAR)) + return consumed; +#endif + add_prefix_byte((pcre_uint8)chr, bytes); + + mask = 0; + if (caseless) + { + add_prefix_byte((pcre_uint8)*oc, bytes); + mask = *cc ^ *oc; + chr |= mask; + } + +#ifdef COMPILE_PCRE32 + if (chars[0] == NOTACHAR && chars[1] == 0) +#else + if (chars[0] == NOTACHAR) +#endif + { + chars[0] = chr; + chars[1] = mask; + } + else + { + mask |= chars[0] ^ chr; + chr |= mask; + chars[0] = chr; + chars[1] |= mask; + } + + len--; + consumed++; + if (--max_chars == 0) + return consumed; + chars += 2; + bytes += MAX_N_BYTES; + cc++; + oc++; + } + while (len > 0); + + if (--repeat == 0) + break; + + len = len_save; + cc = cc_save; + } + + repeat = 1; + if (last) + return consumed; + } +} + +static SLJIT_INLINE BOOL fast_forward_first_n_chars(compiler_common *common, BOOL firstline) +{ +DEFINE_COMPILER; +struct sljit_label *start; +struct sljit_jump *quit; +pcre_uint32 chars[MAX_N_CHARS * 2]; +pcre_uint8 bytes[MAX_N_CHARS * MAX_N_BYTES]; +pcre_uint8 ones[MAX_N_CHARS]; +int offsets[3]; +pcre_uint32 mask; +pcre_uint8 *byte_set, *byte_set_end; +int i, max, from; +int range_right = -1, range_len = 3 - 1; +sljit_ub *update_table = NULL; +BOOL in_range; + +/* This is even TRUE, if both are NULL. */ +SLJIT_ASSERT(common->read_only_data_ptr == common->read_only_data); + +for (i = 0; i < MAX_N_CHARS; i++) + { + chars[i << 1] = NOTACHAR; + chars[(i << 1) + 1] = 0; + bytes[i * MAX_N_BYTES] = 0; + } + +max = scan_prefix(common, common->start, chars, bytes, MAX_N_CHARS); + +if (max <= 1) + return FALSE; + +for (i = 0; i < max; i++) + { + mask = chars[(i << 1) + 1]; + ones[i] = ones_in_half_byte[mask & 0xf]; + mask >>= 4; + while (mask != 0) + { + ones[i] += ones_in_half_byte[mask & 0xf]; + mask >>= 4; + } + } + +in_range = FALSE; +from = 0; /* Prevent compiler "uninitialized" warning */ +for (i = 0; i <= max; i++) + { + if (in_range && (i - from) > range_len && (bytes[(i - 1) * MAX_N_BYTES] <= 4)) + { + range_len = i - from; + range_right = i - 1; + } + + if (i < max && bytes[i * MAX_N_BYTES] < 255) + { + if (!in_range) + { + in_range = TRUE; + from = i; + } + } + else if (in_range) + in_range = FALSE; + } + +if (range_right >= 0) + { + /* Since no data is consumed (see the assert in the beginning + of this function), this space can be reallocated. */ + if (common->read_only_data) + SLJIT_FREE(common->read_only_data); + + common->read_only_data_size += 256; + common->read_only_data = (sljit_uw *)SLJIT_MALLOC(common->read_only_data_size); + if (common->read_only_data == NULL) + return TRUE; + + update_table = (sljit_ub *)common->read_only_data; + common->read_only_data_ptr = (sljit_uw *)(update_table + 256); + memset(update_table, IN_UCHARS(range_len), 256); + + for (i = 0; i < range_len; i++) + { + byte_set = bytes + ((range_right - i) * MAX_N_BYTES); + SLJIT_ASSERT(byte_set[0] > 0 && byte_set[0] < 255); + byte_set_end = byte_set + byte_set[0]; + byte_set++; + while (byte_set <= byte_set_end) + { + if (update_table[*byte_set] > IN_UCHARS(i)) + update_table[*byte_set] = IN_UCHARS(i); + byte_set++; + } + } + } + +offsets[0] = -1; +/* Scan forward. */ +for (i = 0; i < max; i++) + if (ones[i] <= 2) { + offsets[0] = i; + break; + } + +if (offsets[0] < 0 && range_right < 0) + return FALSE; + +if (offsets[0] >= 0) + { + /* Scan backward. */ + offsets[1] = -1; + for (i = max - 1; i > offsets[0]; i--) + if (ones[i] <= 2 && i != range_right) + { + offsets[1] = i; + break; + } + + /* This case is handled better by fast_forward_first_char. */ + if (offsets[1] == -1 && offsets[0] == 0 && range_right < 0) + return FALSE; + + offsets[2] = -1; + /* We only search for a middle character if there is no range check. */ + if (offsets[1] >= 0 && range_right == -1) + { + /* Scan from middle. */ + for (i = (offsets[0] + offsets[1]) / 2 + 1; i < offsets[1]; i++) + if (ones[i] <= 2) + { + offsets[2] = i; + break; + } + + if (offsets[2] == -1) + { + for (i = (offsets[0] + offsets[1]) / 2; i > offsets[0]; i--) + if (ones[i] <= 2) + { + offsets[2] = i; + break; + } + } + } + + SLJIT_ASSERT(offsets[1] == -1 || (offsets[0] < offsets[1])); + SLJIT_ASSERT(offsets[2] == -1 || (offsets[0] < offsets[2] && offsets[1] > offsets[2])); + + chars[0] = chars[offsets[0] << 1]; + chars[1] = chars[(offsets[0] << 1) + 1]; + if (offsets[2] >= 0) + { + chars[2] = chars[offsets[2] << 1]; + chars[3] = chars[(offsets[2] << 1) + 1]; + } + if (offsets[1] >= 0) + { + chars[4] = chars[offsets[1] << 1]; + chars[5] = chars[(offsets[1] << 1) + 1]; + } + } + +max -= 1; +if (firstline) + { + SLJIT_ASSERT(common->first_line_end != 0); + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), common->first_line_end); + OP1(SLJIT_MOV, TMP3, 0, STR_END, 0); + OP2(SLJIT_SUB, STR_END, 0, STR_END, 0, SLJIT_IMM, IN_UCHARS(max)); + quit = CMP(SLJIT_C_LESS_EQUAL, STR_END, 0, TMP1, 0); + OP1(SLJIT_MOV, STR_END, 0, TMP1, 0); + JUMPHERE(quit); + } +else + OP2(SLJIT_SUB, STR_END, 0, STR_END, 0, SLJIT_IMM, IN_UCHARS(max)); + +#if !(defined SLJIT_CONFIG_X86_32 && SLJIT_CONFIG_X86_32) +if (range_right >= 0) + OP1(SLJIT_MOV, RETURN_ADDR, 0, SLJIT_IMM, (sljit_sw)update_table); +#endif + +start = LABEL(); +quit = CMP(SLJIT_C_GREATER_EQUAL, STR_PTR, 0, STR_END, 0); + +SLJIT_ASSERT(range_right >= 0 || offsets[0] >= 0); + +if (range_right >= 0) + { +#if defined COMPILE_PCRE8 || (defined SLJIT_LITTLE_ENDIAN && SLJIT_LITTLE_ENDIAN) + OP1(SLJIT_MOV_UB, TMP1, 0, SLJIT_MEM1(STR_PTR), IN_UCHARS(range_right)); +#else + OP1(SLJIT_MOV_UB, TMP1, 0, SLJIT_MEM1(STR_PTR), IN_UCHARS(range_right + 1) - 1); +#endif + +#if !(defined SLJIT_CONFIG_X86_32 && SLJIT_CONFIG_X86_32) + OP1(SLJIT_MOV_UB, TMP1, 0, SLJIT_MEM2(RETURN_ADDR, TMP1), 0); +#else + OP1(SLJIT_MOV_UB, TMP1, 0, SLJIT_MEM1(TMP1), (sljit_sw)update_table); +#endif + OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, TMP1, 0); + CMPTO(SLJIT_C_NOT_EQUAL, TMP1, 0, SLJIT_IMM, 0, start); + } + +if (offsets[0] >= 0) + { + OP1(MOV_UCHAR, TMP1, 0, SLJIT_MEM1(STR_PTR), IN_UCHARS(offsets[0])); + if (offsets[1] >= 0) + OP1(MOV_UCHAR, TMP2, 0, SLJIT_MEM1(STR_PTR), IN_UCHARS(offsets[1])); + OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(1)); + + if (chars[1] != 0) + OP2(SLJIT_OR, TMP1, 0, TMP1, 0, SLJIT_IMM, chars[1]); + CMPTO(SLJIT_C_NOT_EQUAL, TMP1, 0, SLJIT_IMM, chars[0], start); + if (offsets[2] >= 0) + OP1(MOV_UCHAR, TMP1, 0, SLJIT_MEM1(STR_PTR), IN_UCHARS(offsets[2] - 1)); + + if (offsets[1] >= 0) + { + if (chars[5] != 0) + OP2(SLJIT_OR, TMP2, 0, TMP2, 0, SLJIT_IMM, chars[5]); + CMPTO(SLJIT_C_NOT_EQUAL, TMP2, 0, SLJIT_IMM, chars[4], start); + } + + if (offsets[2] >= 0) + { + if (chars[3] != 0) + OP2(SLJIT_OR, TMP1, 0, TMP1, 0, SLJIT_IMM, chars[3]); + CMPTO(SLJIT_C_NOT_EQUAL, TMP1, 0, SLJIT_IMM, chars[2], start); + } + OP2(SLJIT_SUB, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(1)); + } + +JUMPHERE(quit); + +if (firstline) + { + if (range_right >= 0) + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), common->first_line_end); + OP1(SLJIT_MOV, STR_END, 0, TMP3, 0); + if (range_right >= 0) + { + quit = CMP(SLJIT_C_LESS_EQUAL, STR_PTR, 0, TMP1, 0); + OP1(SLJIT_MOV, STR_PTR, 0, TMP1, 0); + JUMPHERE(quit); + } + } +else + OP2(SLJIT_ADD, STR_END, 0, STR_END, 0, SLJIT_IMM, IN_UCHARS(max)); +return TRUE; +} + +#undef MAX_N_CHARS +#undef MAX_N_BYTES + +static SLJIT_INLINE void fast_forward_first_char(compiler_common *common, pcre_uchar first_char, BOOL caseless, BOOL firstline) +{ +DEFINE_COMPILER; +struct sljit_label *start; +struct sljit_jump *quit; +struct sljit_jump *found; +pcre_uchar oc, bit; + +if (firstline) + { + SLJIT_ASSERT(common->first_line_end != 0); + OP1(SLJIT_MOV, TMP3, 0, STR_END, 0); + OP1(SLJIT_MOV, STR_END, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), common->first_line_end); + } + +start = LABEL(); +quit = CMP(SLJIT_C_GREATER_EQUAL, STR_PTR, 0, STR_END, 0); +OP1(MOV_UCHAR, TMP1, 0, SLJIT_MEM1(STR_PTR), 0); + +oc = first_char; +if (caseless) + { + oc = TABLE_GET(first_char, common->fcc, first_char); +#if defined SUPPORT_UCP && !(defined COMPILE_PCRE8) + if (first_char > 127 && common->utf) + oc = UCD_OTHERCASE(first_char); +#endif + } +if (first_char == oc) + found = CMP(SLJIT_C_EQUAL, TMP1, 0, SLJIT_IMM, first_char); +else + { + bit = first_char ^ oc; + if (is_powerof2(bit)) + { + OP2(SLJIT_OR, TMP2, 0, TMP1, 0, SLJIT_IMM, bit); + found = CMP(SLJIT_C_EQUAL, TMP2, 0, SLJIT_IMM, first_char | bit); + } + else + { + OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, first_char); + OP_FLAGS(SLJIT_MOV, TMP2, 0, SLJIT_UNUSED, 0, SLJIT_C_EQUAL); + OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, oc); + OP_FLAGS(SLJIT_OR | SLJIT_SET_E, TMP2, 0, TMP2, 0, SLJIT_C_EQUAL); + found = JUMP(SLJIT_C_NOT_ZERO); + } + } + +OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(1)); +JUMPTO(SLJIT_JUMP, start); +JUMPHERE(found); +JUMPHERE(quit); + +if (firstline) + OP1(SLJIT_MOV, STR_END, 0, TMP3, 0); +} + +static SLJIT_INLINE void fast_forward_newline(compiler_common *common, BOOL firstline) +{ +DEFINE_COMPILER; +struct sljit_label *loop; +struct sljit_jump *lastchar; +struct sljit_jump *firstchar; +struct sljit_jump *quit; +struct sljit_jump *foundcr = NULL; +struct sljit_jump *notfoundnl; +jump_list *newline = NULL; + +if (firstline) + { + SLJIT_ASSERT(common->first_line_end != 0); + OP1(SLJIT_MOV, TMP3, 0, STR_END, 0); + OP1(SLJIT_MOV, STR_END, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), common->first_line_end); + } + +if (common->nltype == NLTYPE_FIXED && common->newline > 255) + { + lastchar = CMP(SLJIT_C_GREATER_EQUAL, STR_PTR, 0, STR_END, 0); + OP1(SLJIT_MOV, TMP1, 0, ARGUMENTS, 0); + OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(TMP1), SLJIT_OFFSETOF(jit_arguments, str)); + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(TMP1), SLJIT_OFFSETOF(jit_arguments, begin)); + firstchar = CMP(SLJIT_C_LESS_EQUAL, STR_PTR, 0, TMP2, 0); + + OP2(SLJIT_ADD, TMP1, 0, TMP1, 0, SLJIT_IMM, IN_UCHARS(2)); + OP2(SLJIT_SUB | SLJIT_SET_U, SLJIT_UNUSED, 0, STR_PTR, 0, TMP1, 0); + OP_FLAGS(SLJIT_MOV, TMP2, 0, SLJIT_UNUSED, 0, SLJIT_C_GREATER_EQUAL); +#if defined COMPILE_PCRE16 || defined COMPILE_PCRE32 + OP2(SLJIT_SHL, TMP2, 0, TMP2, 0, SLJIT_IMM, UCHAR_SHIFT); +#endif + OP2(SLJIT_SUB, STR_PTR, 0, STR_PTR, 0, TMP2, 0); + + loop = LABEL(); + OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(1)); + quit = CMP(SLJIT_C_GREATER_EQUAL, STR_PTR, 0, STR_END, 0); + OP1(MOV_UCHAR, TMP1, 0, SLJIT_MEM1(STR_PTR), IN_UCHARS(-2)); + OP1(MOV_UCHAR, TMP2, 0, SLJIT_MEM1(STR_PTR), IN_UCHARS(-1)); + CMPTO(SLJIT_C_NOT_EQUAL, TMP1, 0, SLJIT_IMM, (common->newline >> 8) & 0xff, loop); + CMPTO(SLJIT_C_NOT_EQUAL, TMP2, 0, SLJIT_IMM, common->newline & 0xff, loop); + + JUMPHERE(quit); + JUMPHERE(firstchar); + JUMPHERE(lastchar); + + if (firstline) + OP1(SLJIT_MOV, STR_END, 0, TMP3, 0); + return; + } + +OP1(SLJIT_MOV, TMP1, 0, ARGUMENTS, 0); +OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(TMP1), SLJIT_OFFSETOF(jit_arguments, str)); +firstchar = CMP(SLJIT_C_LESS_EQUAL, STR_PTR, 0, TMP2, 0); +skip_char_back(common); + +loop = LABEL(); +common->ff_newline_shortcut = loop; + +read_char_range(common, common->nlmin, common->nlmax, TRUE); +lastchar = CMP(SLJIT_C_GREATER_EQUAL, STR_PTR, 0, STR_END, 0); +if (common->nltype == NLTYPE_ANY || common->nltype == NLTYPE_ANYCRLF) + foundcr = CMP(SLJIT_C_EQUAL, TMP1, 0, SLJIT_IMM, CHAR_CR); +check_newlinechar(common, common->nltype, &newline, FALSE); +set_jumps(newline, loop); + +if (common->nltype == NLTYPE_ANY || common->nltype == NLTYPE_ANYCRLF) + { + quit = JUMP(SLJIT_JUMP); + JUMPHERE(foundcr); + notfoundnl = CMP(SLJIT_C_GREATER_EQUAL, STR_PTR, 0, STR_END, 0); + OP1(MOV_UCHAR, TMP1, 0, SLJIT_MEM1(STR_PTR), 0); + OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, CHAR_NL); + OP_FLAGS(SLJIT_MOV, TMP1, 0, SLJIT_UNUSED, 0, SLJIT_C_EQUAL); +#if defined COMPILE_PCRE16 || defined COMPILE_PCRE32 + OP2(SLJIT_SHL, TMP1, 0, TMP1, 0, SLJIT_IMM, UCHAR_SHIFT); +#endif + OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, TMP1, 0); + JUMPHERE(notfoundnl); + JUMPHERE(quit); + } +JUMPHERE(lastchar); +JUMPHERE(firstchar); + +if (firstline) + OP1(SLJIT_MOV, STR_END, 0, TMP3, 0); +} + +static BOOL check_class_ranges(compiler_common *common, const pcre_uint8 *bits, BOOL nclass, BOOL invert, jump_list **backtracks); + +static SLJIT_INLINE void fast_forward_start_bits(compiler_common *common, pcre_uint8 *start_bits, BOOL firstline) +{ +DEFINE_COMPILER; +struct sljit_label *start; +struct sljit_jump *quit; +struct sljit_jump *found = NULL; +jump_list *matches = NULL; +#ifndef COMPILE_PCRE8 +struct sljit_jump *jump; +#endif + +if (firstline) + { + SLJIT_ASSERT(common->first_line_end != 0); + OP1(SLJIT_MOV, RETURN_ADDR, 0, STR_END, 0); + OP1(SLJIT_MOV, STR_END, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), common->first_line_end); + } + +start = LABEL(); +quit = CMP(SLJIT_C_GREATER_EQUAL, STR_PTR, 0, STR_END, 0); +OP1(MOV_UCHAR, TMP1, 0, SLJIT_MEM1(STR_PTR), 0); +#ifdef SUPPORT_UTF +if (common->utf) + OP1(SLJIT_MOV, TMP3, 0, TMP1, 0); +#endif + +if (!check_class_ranges(common, start_bits, (start_bits[31] & 0x80) != 0, TRUE, &matches)) + { +#ifndef COMPILE_PCRE8 + jump = CMP(SLJIT_C_LESS, TMP1, 0, SLJIT_IMM, 255); + OP1(SLJIT_MOV, TMP1, 0, SLJIT_IMM, 255); + JUMPHERE(jump); +#endif + OP2(SLJIT_AND, TMP2, 0, TMP1, 0, SLJIT_IMM, 0x7); + OP2(SLJIT_LSHR, TMP1, 0, TMP1, 0, SLJIT_IMM, 3); + OP1(SLJIT_MOV_UB, TMP1, 0, SLJIT_MEM1(TMP1), (sljit_sw)start_bits); + OP2(SLJIT_SHL, TMP2, 0, SLJIT_IMM, 1, TMP2, 0); + OP2(SLJIT_AND | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, TMP2, 0); + found = JUMP(SLJIT_C_NOT_ZERO); + } + +#ifdef SUPPORT_UTF +if (common->utf) + OP1(SLJIT_MOV, TMP1, 0, TMP3, 0); +#endif +OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(1)); +#ifdef SUPPORT_UTF +#if defined COMPILE_PCRE8 +if (common->utf) + { + CMPTO(SLJIT_C_LESS, TMP1, 0, SLJIT_IMM, 0xc0, start); + OP1(SLJIT_MOV_UB, TMP1, 0, SLJIT_MEM1(TMP1), (sljit_sw)PRIV(utf8_table4) - 0xc0); + OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, TMP1, 0); + } +#elif defined COMPILE_PCRE16 +if (common->utf) + { + CMPTO(SLJIT_C_LESS, TMP1, 0, SLJIT_IMM, 0xd800, start); + OP2(SLJIT_AND, TMP1, 0, TMP1, 0, SLJIT_IMM, 0xfc00); + OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, 0xd800); + OP_FLAGS(SLJIT_MOV, TMP1, 0, SLJIT_UNUSED, 0, SLJIT_C_EQUAL); + OP2(SLJIT_SHL, TMP1, 0, TMP1, 0, SLJIT_IMM, 1); + OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, TMP1, 0); + } +#endif /* COMPILE_PCRE[8|16] */ +#endif /* SUPPORT_UTF */ +JUMPTO(SLJIT_JUMP, start); +if (found != NULL) + JUMPHERE(found); +if (matches != NULL) + set_jumps(matches, LABEL()); +JUMPHERE(quit); + +if (firstline) + OP1(SLJIT_MOV, STR_END, 0, RETURN_ADDR, 0); +} + +static SLJIT_INLINE struct sljit_jump *search_requested_char(compiler_common *common, pcre_uchar req_char, BOOL caseless, BOOL has_firstchar) +{ +DEFINE_COMPILER; +struct sljit_label *loop; +struct sljit_jump *toolong; +struct sljit_jump *alreadyfound; +struct sljit_jump *found; +struct sljit_jump *foundoc = NULL; +struct sljit_jump *notfound; +pcre_uint32 oc, bit; + +SLJIT_ASSERT(common->req_char_ptr != 0); +OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), common->req_char_ptr); +OP2(SLJIT_ADD, TMP1, 0, STR_PTR, 0, SLJIT_IMM, REQ_BYTE_MAX); +toolong = CMP(SLJIT_C_LESS, TMP1, 0, STR_END, 0); +alreadyfound = CMP(SLJIT_C_LESS, STR_PTR, 0, TMP2, 0); + +if (has_firstchar) + OP2(SLJIT_ADD, TMP1, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(1)); +else + OP1(SLJIT_MOV, TMP1, 0, STR_PTR, 0); + +loop = LABEL(); +notfound = CMP(SLJIT_C_GREATER_EQUAL, TMP1, 0, STR_END, 0); + +OP1(MOV_UCHAR, TMP2, 0, SLJIT_MEM1(TMP1), 0); +oc = req_char; +if (caseless) + { + oc = TABLE_GET(req_char, common->fcc, req_char); +#if defined SUPPORT_UCP && !(defined COMPILE_PCRE8) + if (req_char > 127 && common->utf) + oc = UCD_OTHERCASE(req_char); +#endif + } +if (req_char == oc) + found = CMP(SLJIT_C_EQUAL, TMP2, 0, SLJIT_IMM, req_char); +else + { + bit = req_char ^ oc; + if (is_powerof2(bit)) + { + OP2(SLJIT_OR, TMP2, 0, TMP2, 0, SLJIT_IMM, bit); + found = CMP(SLJIT_C_EQUAL, TMP2, 0, SLJIT_IMM, req_char | bit); + } + else + { + found = CMP(SLJIT_C_EQUAL, TMP2, 0, SLJIT_IMM, req_char); + foundoc = CMP(SLJIT_C_EQUAL, TMP2, 0, SLJIT_IMM, oc); + } + } +OP2(SLJIT_ADD, TMP1, 0, TMP1, 0, SLJIT_IMM, IN_UCHARS(1)); +JUMPTO(SLJIT_JUMP, loop); + +JUMPHERE(found); +if (foundoc) + JUMPHERE(foundoc); +OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), common->req_char_ptr, TMP1, 0); +JUMPHERE(alreadyfound); +JUMPHERE(toolong); +return notfound; +} + +static void do_revertframes(compiler_common *common) +{ +DEFINE_COMPILER; +struct sljit_jump *jump; +struct sljit_label *mainloop; + +sljit_emit_fast_enter(compiler, RETURN_ADDR, 0); +OP1(SLJIT_MOV, TMP1, 0, STACK_TOP, 0); +GET_LOCAL_BASE(TMP3, 0, 0); + +/* Drop frames until we reach STACK_TOP. */ +mainloop = LABEL(); +OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(TMP1), 0); +OP2(SLJIT_SUB | SLJIT_SET_S, SLJIT_UNUSED, 0, TMP2, 0, SLJIT_IMM, 0); +jump = JUMP(SLJIT_C_SIG_LESS_EQUAL); + +OP2(SLJIT_ADD, TMP2, 0, TMP2, 0, TMP3, 0); +OP1(SLJIT_MOV, SLJIT_MEM1(TMP2), 0, SLJIT_MEM1(TMP1), sizeof(sljit_sw)); +OP1(SLJIT_MOV, SLJIT_MEM1(TMP2), sizeof(sljit_sw), SLJIT_MEM1(TMP1), 2 * sizeof(sljit_sw)); +OP2(SLJIT_ADD, TMP1, 0, TMP1, 0, SLJIT_IMM, 3 * sizeof(sljit_sw)); +JUMPTO(SLJIT_JUMP, mainloop); + +JUMPHERE(jump); +jump = JUMP(SLJIT_C_SIG_LESS); +/* End of dropping frames. */ +sljit_emit_fast_return(compiler, RETURN_ADDR, 0); + +JUMPHERE(jump); +OP1(SLJIT_NEG, TMP2, 0, TMP2, 0); +OP2(SLJIT_ADD, TMP2, 0, TMP2, 0, TMP3, 0); +OP1(SLJIT_MOV, SLJIT_MEM1(TMP2), 0, SLJIT_MEM1(TMP1), sizeof(sljit_sw)); +OP2(SLJIT_ADD, TMP1, 0, TMP1, 0, SLJIT_IMM, 2 * sizeof(sljit_sw)); +JUMPTO(SLJIT_JUMP, mainloop); +} + +static void check_wordboundary(compiler_common *common) +{ +DEFINE_COMPILER; +struct sljit_jump *skipread; +jump_list *skipread_list = NULL; +#if !(defined COMPILE_PCRE8) || defined SUPPORT_UTF +struct sljit_jump *jump; +#endif + +SLJIT_COMPILE_ASSERT(ctype_word == 0x10, ctype_word_must_be_16); + +sljit_emit_fast_enter(compiler, SLJIT_MEM1(SLJIT_LOCALS_REG), LOCALS0); +/* Get type of the previous char, and put it to LOCALS1. */ +OP1(SLJIT_MOV, TMP1, 0, ARGUMENTS, 0); +OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(TMP1), SLJIT_OFFSETOF(jit_arguments, begin)); +OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), LOCALS1, SLJIT_IMM, 0); +skipread = CMP(SLJIT_C_LESS_EQUAL, STR_PTR, 0, TMP1, 0); +skip_char_back(common); +check_start_used_ptr(common); +read_char(common); + +/* Testing char type. */ +#ifdef SUPPORT_UCP +if (common->use_ucp) + { + OP1(SLJIT_MOV, TMP2, 0, SLJIT_IMM, 1); + jump = CMP(SLJIT_C_EQUAL, TMP1, 0, SLJIT_IMM, CHAR_UNDERSCORE); + add_jump(compiler, &common->getucd, JUMP(SLJIT_FAST_CALL)); + OP2(SLJIT_SUB, TMP1, 0, TMP1, 0, SLJIT_IMM, ucp_Ll); + OP2(SLJIT_SUB | SLJIT_SET_U, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, ucp_Lu - ucp_Ll); + OP_FLAGS(SLJIT_MOV, TMP2, 0, SLJIT_UNUSED, 0, SLJIT_C_LESS_EQUAL); + OP2(SLJIT_SUB, TMP1, 0, TMP1, 0, SLJIT_IMM, ucp_Nd - ucp_Ll); + OP2(SLJIT_SUB | SLJIT_SET_U, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, ucp_No - ucp_Nd); + OP_FLAGS(SLJIT_OR, TMP2, 0, TMP2, 0, SLJIT_C_LESS_EQUAL); + JUMPHERE(jump); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), LOCALS1, TMP2, 0); + } +else +#endif + { +#ifndef COMPILE_PCRE8 + jump = CMP(SLJIT_C_GREATER, TMP1, 0, SLJIT_IMM, 255); +#elif defined SUPPORT_UTF + /* Here LOCALS1 has already been zeroed. */ + jump = NULL; + if (common->utf) + jump = CMP(SLJIT_C_GREATER, TMP1, 0, SLJIT_IMM, 255); +#endif /* COMPILE_PCRE8 */ + OP1(SLJIT_MOV_UB, TMP1, 0, SLJIT_MEM1(TMP1), common->ctypes); + OP2(SLJIT_LSHR, TMP1, 0, TMP1, 0, SLJIT_IMM, 4 /* ctype_word */); + OP2(SLJIT_AND, TMP1, 0, TMP1, 0, SLJIT_IMM, 1); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), LOCALS1, TMP1, 0); +#ifndef COMPILE_PCRE8 + JUMPHERE(jump); +#elif defined SUPPORT_UTF + if (jump != NULL) + JUMPHERE(jump); +#endif /* COMPILE_PCRE8 */ + } +JUMPHERE(skipread); + +OP1(SLJIT_MOV, TMP2, 0, SLJIT_IMM, 0); +check_str_end(common, &skipread_list); +peek_char(common, READ_CHAR_MAX); + +/* Testing char type. This is a code duplication. */ +#ifdef SUPPORT_UCP +if (common->use_ucp) + { + OP1(SLJIT_MOV, TMP2, 0, SLJIT_IMM, 1); + jump = CMP(SLJIT_C_EQUAL, TMP1, 0, SLJIT_IMM, CHAR_UNDERSCORE); + add_jump(compiler, &common->getucd, JUMP(SLJIT_FAST_CALL)); + OP2(SLJIT_SUB, TMP1, 0, TMP1, 0, SLJIT_IMM, ucp_Ll); + OP2(SLJIT_SUB | SLJIT_SET_U, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, ucp_Lu - ucp_Ll); + OP_FLAGS(SLJIT_MOV, TMP2, 0, SLJIT_UNUSED, 0, SLJIT_C_LESS_EQUAL); + OP2(SLJIT_SUB, TMP1, 0, TMP1, 0, SLJIT_IMM, ucp_Nd - ucp_Ll); + OP2(SLJIT_SUB | SLJIT_SET_U, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, ucp_No - ucp_Nd); + OP_FLAGS(SLJIT_OR, TMP2, 0, TMP2, 0, SLJIT_C_LESS_EQUAL); + JUMPHERE(jump); + } +else +#endif + { +#ifndef COMPILE_PCRE8 + /* TMP2 may be destroyed by peek_char. */ + OP1(SLJIT_MOV, TMP2, 0, SLJIT_IMM, 0); + jump = CMP(SLJIT_C_GREATER, TMP1, 0, SLJIT_IMM, 255); +#elif defined SUPPORT_UTF + OP1(SLJIT_MOV, TMP2, 0, SLJIT_IMM, 0); + jump = NULL; + if (common->utf) + jump = CMP(SLJIT_C_GREATER, TMP1, 0, SLJIT_IMM, 255); +#endif + OP1(SLJIT_MOV_UB, TMP2, 0, SLJIT_MEM1(TMP1), common->ctypes); + OP2(SLJIT_LSHR, TMP2, 0, TMP2, 0, SLJIT_IMM, 4 /* ctype_word */); + OP2(SLJIT_AND, TMP2, 0, TMP2, 0, SLJIT_IMM, 1); +#ifndef COMPILE_PCRE8 + JUMPHERE(jump); +#elif defined SUPPORT_UTF + if (jump != NULL) + JUMPHERE(jump); +#endif /* COMPILE_PCRE8 */ + } +set_jumps(skipread_list, LABEL()); + +OP2(SLJIT_XOR | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP2, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), LOCALS1); +sljit_emit_fast_return(compiler, SLJIT_MEM1(SLJIT_LOCALS_REG), LOCALS0); +} + +static BOOL check_class_ranges(compiler_common *common, const pcre_uint8 *bits, BOOL nclass, BOOL invert, jump_list **backtracks) +{ +DEFINE_COMPILER; +int ranges[MAX_RANGE_SIZE]; +pcre_uint8 bit, cbit, all; +int i, byte, length = 0; + +bit = bits[0] & 0x1; +/* All bits will be zero or one (since bit is zero or one). */ +all = -bit; + +for (i = 0; i < 256; ) + { + byte = i >> 3; + if ((i & 0x7) == 0 && bits[byte] == all) + i += 8; + else + { + cbit = (bits[byte] >> (i & 0x7)) & 0x1; + if (cbit != bit) + { + if (length >= MAX_RANGE_SIZE) + return FALSE; + ranges[length] = i; + length++; + bit = cbit; + all = -cbit; + } + i++; + } + } + +if (((bit == 0) && nclass) || ((bit == 1) && !nclass)) + { + if (length >= MAX_RANGE_SIZE) + return FALSE; + ranges[length] = 256; + length++; + } + +if (length < 0 || length > 4) + return FALSE; + +bit = bits[0] & 0x1; +if (invert) bit ^= 0x1; + +/* No character is accepted. */ +if (length == 0 && bit == 0) + add_jump(compiler, backtracks, JUMP(SLJIT_JUMP)); + +switch(length) + { + case 0: + /* When bit != 0, all characters are accepted. */ + return TRUE; + + case 1: + add_jump(compiler, backtracks, CMP(bit == 0 ? SLJIT_C_LESS : SLJIT_C_GREATER_EQUAL, TMP1, 0, SLJIT_IMM, ranges[0])); + return TRUE; + + case 2: + if (ranges[0] + 1 != ranges[1]) + { + OP2(SLJIT_SUB, TMP1, 0, TMP1, 0, SLJIT_IMM, ranges[0]); + add_jump(compiler, backtracks, CMP(bit != 0 ? SLJIT_C_LESS : SLJIT_C_GREATER_EQUAL, TMP1, 0, SLJIT_IMM, ranges[1] - ranges[0])); + } + else + add_jump(compiler, backtracks, CMP(bit != 0 ? SLJIT_C_EQUAL : SLJIT_C_NOT_EQUAL, TMP1, 0, SLJIT_IMM, ranges[0])); + return TRUE; + + case 3: + if (bit != 0) + { + add_jump(compiler, backtracks, CMP(SLJIT_C_GREATER_EQUAL, TMP1, 0, SLJIT_IMM, ranges[2])); + if (ranges[0] + 1 != ranges[1]) + { + OP2(SLJIT_SUB, TMP1, 0, TMP1, 0, SLJIT_IMM, ranges[0]); + add_jump(compiler, backtracks, CMP(SLJIT_C_LESS, TMP1, 0, SLJIT_IMM, ranges[1] - ranges[0])); + } + else + add_jump(compiler, backtracks, CMP(SLJIT_C_EQUAL, TMP1, 0, SLJIT_IMM, ranges[0])); + return TRUE; + } + + add_jump(compiler, backtracks, CMP(SLJIT_C_LESS, TMP1, 0, SLJIT_IMM, ranges[0])); + if (ranges[1] + 1 != ranges[2]) + { + OP2(SLJIT_SUB, TMP1, 0, TMP1, 0, SLJIT_IMM, ranges[1]); + add_jump(compiler, backtracks, CMP(SLJIT_C_LESS, TMP1, 0, SLJIT_IMM, ranges[2] - ranges[1])); + } + else + add_jump(compiler, backtracks, CMP(SLJIT_C_EQUAL, TMP1, 0, SLJIT_IMM, ranges[1])); + return TRUE; + + case 4: + if ((ranges[1] - ranges[0]) == (ranges[3] - ranges[2]) + && (ranges[0] | (ranges[2] - ranges[0])) == ranges[2] + && is_powerof2(ranges[2] - ranges[0])) + { + OP2(SLJIT_OR, TMP1, 0, TMP1, 0, SLJIT_IMM, ranges[2] - ranges[0]); + if (ranges[2] + 1 != ranges[3]) + { + OP2(SLJIT_SUB, TMP1, 0, TMP1, 0, SLJIT_IMM, ranges[2]); + add_jump(compiler, backtracks, CMP(bit != 0 ? SLJIT_C_LESS : SLJIT_C_GREATER_EQUAL, TMP1, 0, SLJIT_IMM, ranges[3] - ranges[2])); + } + else + add_jump(compiler, backtracks, CMP(bit != 0 ? SLJIT_C_EQUAL : SLJIT_C_NOT_EQUAL, TMP1, 0, SLJIT_IMM, ranges[2])); + return TRUE; + } + + if (bit != 0) + { + i = 0; + if (ranges[0] + 1 != ranges[1]) + { + OP2(SLJIT_SUB, TMP1, 0, TMP1, 0, SLJIT_IMM, ranges[0]); + add_jump(compiler, backtracks, CMP(SLJIT_C_LESS, TMP1, 0, SLJIT_IMM, ranges[1] - ranges[0])); + i = ranges[0]; + } + else + add_jump(compiler, backtracks, CMP(SLJIT_C_EQUAL, TMP1, 0, SLJIT_IMM, ranges[0])); + + if (ranges[2] + 1 != ranges[3]) + { + OP2(SLJIT_SUB, TMP1, 0, TMP1, 0, SLJIT_IMM, ranges[2] - i); + add_jump(compiler, backtracks, CMP(SLJIT_C_LESS, TMP1, 0, SLJIT_IMM, ranges[3] - ranges[2])); + } + else + add_jump(compiler, backtracks, CMP(SLJIT_C_EQUAL, TMP1, 0, SLJIT_IMM, ranges[2] - i)); + return TRUE; + } + + OP2(SLJIT_SUB, TMP1, 0, TMP1, 0, SLJIT_IMM, ranges[0]); + add_jump(compiler, backtracks, CMP(SLJIT_C_GREATER_EQUAL, TMP1, 0, SLJIT_IMM, ranges[3] - ranges[0])); + if (ranges[1] + 1 != ranges[2]) + { + OP2(SLJIT_SUB, TMP1, 0, TMP1, 0, SLJIT_IMM, ranges[1] - ranges[0]); + add_jump(compiler, backtracks, CMP(SLJIT_C_LESS, TMP1, 0, SLJIT_IMM, ranges[2] - ranges[1])); + } + else + add_jump(compiler, backtracks, CMP(SLJIT_C_EQUAL, TMP1, 0, SLJIT_IMM, ranges[1] - ranges[0])); + return TRUE; + + default: + SLJIT_ASSERT_STOP(); + return FALSE; + } +} + +static void check_anynewline(compiler_common *common) +{ +/* Check whether TMP1 contains a newline character. TMP2 destroyed. */ +DEFINE_COMPILER; + +sljit_emit_fast_enter(compiler, RETURN_ADDR, 0); + +OP2(SLJIT_SUB, TMP1, 0, TMP1, 0, SLJIT_IMM, 0x0a); +OP2(SLJIT_SUB | SLJIT_SET_U, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, 0x0d - 0x0a); +OP_FLAGS(SLJIT_MOV, TMP2, 0, SLJIT_UNUSED, 0, SLJIT_C_LESS_EQUAL); +OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, 0x85 - 0x0a); +#if defined SUPPORT_UTF || defined COMPILE_PCRE16 || defined COMPILE_PCRE32 +#ifdef COMPILE_PCRE8 +if (common->utf) + { +#endif + OP_FLAGS(SLJIT_OR, TMP2, 0, TMP2, 0, SLJIT_C_EQUAL); + OP2(SLJIT_OR, TMP1, 0, TMP1, 0, SLJIT_IMM, 0x1); + OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, 0x2029 - 0x0a); +#ifdef COMPILE_PCRE8 + } +#endif +#endif /* SUPPORT_UTF || COMPILE_PCRE16 || COMPILE_PCRE32 */ +OP_FLAGS(SLJIT_OR | SLJIT_SET_E, TMP2, 0, TMP2, 0, SLJIT_C_EQUAL); +sljit_emit_fast_return(compiler, RETURN_ADDR, 0); +} + +static void check_hspace(compiler_common *common) +{ +/* Check whether TMP1 contains a newline character. TMP2 destroyed. */ +DEFINE_COMPILER; + +sljit_emit_fast_enter(compiler, RETURN_ADDR, 0); + +OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, 0x09); +OP_FLAGS(SLJIT_MOV, TMP2, 0, SLJIT_UNUSED, 0, SLJIT_C_EQUAL); +OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, 0x20); +OP_FLAGS(SLJIT_OR, TMP2, 0, TMP2, 0, SLJIT_C_EQUAL); +OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, 0xa0); +#if defined SUPPORT_UTF || defined COMPILE_PCRE16 || defined COMPILE_PCRE32 +#ifdef COMPILE_PCRE8 +if (common->utf) + { +#endif + OP_FLAGS(SLJIT_OR, TMP2, 0, TMP2, 0, SLJIT_C_EQUAL); + OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, 0x1680); + OP_FLAGS(SLJIT_OR, TMP2, 0, TMP2, 0, SLJIT_C_EQUAL); + OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, 0x180e); + OP_FLAGS(SLJIT_OR, TMP2, 0, TMP2, 0, SLJIT_C_EQUAL); + OP2(SLJIT_SUB, TMP1, 0, TMP1, 0, SLJIT_IMM, 0x2000); + OP2(SLJIT_SUB | SLJIT_SET_U, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, 0x200A - 0x2000); + OP_FLAGS(SLJIT_OR, TMP2, 0, TMP2, 0, SLJIT_C_LESS_EQUAL); + OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, 0x202f - 0x2000); + OP_FLAGS(SLJIT_OR, TMP2, 0, TMP2, 0, SLJIT_C_EQUAL); + OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, 0x205f - 0x2000); + OP_FLAGS(SLJIT_OR, TMP2, 0, TMP2, 0, SLJIT_C_EQUAL); + OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, 0x3000 - 0x2000); +#ifdef COMPILE_PCRE8 + } +#endif +#endif /* SUPPORT_UTF || COMPILE_PCRE16 || COMPILE_PCRE32 */ +OP_FLAGS(SLJIT_OR | SLJIT_SET_E, TMP2, 0, TMP2, 0, SLJIT_C_EQUAL); + +sljit_emit_fast_return(compiler, RETURN_ADDR, 0); +} + +static void check_vspace(compiler_common *common) +{ +/* Check whether TMP1 contains a newline character. TMP2 destroyed. */ +DEFINE_COMPILER; + +sljit_emit_fast_enter(compiler, RETURN_ADDR, 0); + +OP2(SLJIT_SUB, TMP1, 0, TMP1, 0, SLJIT_IMM, 0x0a); +OP2(SLJIT_SUB | SLJIT_SET_U, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, 0x0d - 0x0a); +OP_FLAGS(SLJIT_MOV, TMP2, 0, SLJIT_UNUSED, 0, SLJIT_C_LESS_EQUAL); +OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, 0x85 - 0x0a); +#if defined SUPPORT_UTF || defined COMPILE_PCRE16 || defined COMPILE_PCRE32 +#ifdef COMPILE_PCRE8 +if (common->utf) + { +#endif + OP_FLAGS(SLJIT_OR | SLJIT_SET_E, TMP2, 0, TMP2, 0, SLJIT_C_EQUAL); + OP2(SLJIT_OR, TMP1, 0, TMP1, 0, SLJIT_IMM, 0x1); + OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, 0x2029 - 0x0a); +#ifdef COMPILE_PCRE8 + } +#endif +#endif /* SUPPORT_UTF || COMPILE_PCRE16 || COMPILE_PCRE32 */ +OP_FLAGS(SLJIT_OR | SLJIT_SET_E, TMP2, 0, TMP2, 0, SLJIT_C_EQUAL); + +sljit_emit_fast_return(compiler, RETURN_ADDR, 0); +} + +#define CHAR1 STR_END +#define CHAR2 STACK_TOP + +static void do_casefulcmp(compiler_common *common) +{ +DEFINE_COMPILER; +struct sljit_jump *jump; +struct sljit_label *label; + +sljit_emit_fast_enter(compiler, RETURN_ADDR, 0); +OP2(SLJIT_SUB, STR_PTR, 0, STR_PTR, 0, TMP2, 0); +OP1(SLJIT_MOV, TMP3, 0, CHAR1, 0); +OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), LOCALS0, CHAR2, 0); +OP2(SLJIT_SUB, TMP1, 0, TMP1, 0, SLJIT_IMM, IN_UCHARS(1)); +OP2(SLJIT_SUB, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(1)); + +label = LABEL(); +OP1(MOVU_UCHAR, CHAR1, 0, SLJIT_MEM1(TMP1), IN_UCHARS(1)); +OP1(MOVU_UCHAR, CHAR2, 0, SLJIT_MEM1(STR_PTR), IN_UCHARS(1)); +jump = CMP(SLJIT_C_NOT_EQUAL, CHAR1, 0, CHAR2, 0); +OP2(SLJIT_SUB | SLJIT_SET_E, TMP2, 0, TMP2, 0, SLJIT_IMM, IN_UCHARS(1)); +JUMPTO(SLJIT_C_NOT_ZERO, label); + +JUMPHERE(jump); +OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(1)); +OP1(SLJIT_MOV, CHAR1, 0, TMP3, 0); +OP1(SLJIT_MOV, CHAR2, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), LOCALS0); +sljit_emit_fast_return(compiler, RETURN_ADDR, 0); +} + +#define LCC_TABLE STACK_LIMIT + +static void do_caselesscmp(compiler_common *common) +{ +DEFINE_COMPILER; +struct sljit_jump *jump; +struct sljit_label *label; + +sljit_emit_fast_enter(compiler, RETURN_ADDR, 0); +OP2(SLJIT_SUB, STR_PTR, 0, STR_PTR, 0, TMP2, 0); + +OP1(SLJIT_MOV, TMP3, 0, LCC_TABLE, 0); +OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), LOCALS0, CHAR1, 0); +OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), LOCALS1, CHAR2, 0); +OP1(SLJIT_MOV, LCC_TABLE, 0, SLJIT_IMM, common->lcc); +OP2(SLJIT_SUB, TMP1, 0, TMP1, 0, SLJIT_IMM, IN_UCHARS(1)); +OP2(SLJIT_SUB, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(1)); + +label = LABEL(); +OP1(MOVU_UCHAR, CHAR1, 0, SLJIT_MEM1(TMP1), IN_UCHARS(1)); +OP1(MOVU_UCHAR, CHAR2, 0, SLJIT_MEM1(STR_PTR), IN_UCHARS(1)); +#ifndef COMPILE_PCRE8 +jump = CMP(SLJIT_C_GREATER, CHAR1, 0, SLJIT_IMM, 255); +#endif +OP1(SLJIT_MOV_UB, CHAR1, 0, SLJIT_MEM2(LCC_TABLE, CHAR1), 0); +#ifndef COMPILE_PCRE8 +JUMPHERE(jump); +jump = CMP(SLJIT_C_GREATER, CHAR2, 0, SLJIT_IMM, 255); +#endif +OP1(SLJIT_MOV_UB, CHAR2, 0, SLJIT_MEM2(LCC_TABLE, CHAR2), 0); +#ifndef COMPILE_PCRE8 +JUMPHERE(jump); +#endif +jump = CMP(SLJIT_C_NOT_EQUAL, CHAR1, 0, CHAR2, 0); +OP2(SLJIT_SUB | SLJIT_SET_E, TMP2, 0, TMP2, 0, SLJIT_IMM, IN_UCHARS(1)); +JUMPTO(SLJIT_C_NOT_ZERO, label); + +JUMPHERE(jump); +OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(1)); +OP1(SLJIT_MOV, LCC_TABLE, 0, TMP3, 0); +OP1(SLJIT_MOV, CHAR1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), LOCALS0); +OP1(SLJIT_MOV, CHAR2, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), LOCALS1); +sljit_emit_fast_return(compiler, RETURN_ADDR, 0); +} + +#undef LCC_TABLE +#undef CHAR1 +#undef CHAR2 + +#if defined SUPPORT_UTF && defined SUPPORT_UCP + +static const pcre_uchar * SLJIT_CALL do_utf_caselesscmp(pcre_uchar *src1, jit_arguments *args, pcre_uchar *end1) +{ +/* This function would be ineffective to do in JIT level. */ +pcre_uint32 c1, c2; +const pcre_uchar *src2 = args->uchar_ptr; +const pcre_uchar *end2 = args->end; +const ucd_record *ur; +const pcre_uint32 *pp; + +while (src1 < end1) + { + if (src2 >= end2) + return (pcre_uchar*)1; + GETCHARINC(c1, src1); + GETCHARINC(c2, src2); + ur = GET_UCD(c2); + if (c1 != c2 && c1 != c2 + ur->other_case) + { + pp = PRIV(ucd_caseless_sets) + ur->caseset; + for (;;) + { + if (c1 < *pp) return NULL; + if (c1 == *pp++) break; + } + } + } +return src2; +} + +#endif /* SUPPORT_UTF && SUPPORT_UCP */ + +static pcre_uchar *byte_sequence_compare(compiler_common *common, BOOL caseless, pcre_uchar *cc, + compare_context* context, jump_list **backtracks) +{ +DEFINE_COMPILER; +unsigned int othercasebit = 0; +pcre_uchar *othercasechar = NULL; +#ifdef SUPPORT_UTF +int utflength; +#endif + +if (caseless && char_has_othercase(common, cc)) + { + othercasebit = char_get_othercase_bit(common, cc); + SLJIT_ASSERT(othercasebit); + /* Extracting bit difference info. */ +#if defined COMPILE_PCRE8 + othercasechar = cc + (othercasebit >> 8); + othercasebit &= 0xff; +#elif defined COMPILE_PCRE16 || defined COMPILE_PCRE32 + /* Note that this code only handles characters in the BMP. If there + ever are characters outside the BMP whose othercase differs in only one + bit from itself (there currently are none), this code will need to be + revised for COMPILE_PCRE32. */ + othercasechar = cc + (othercasebit >> 9); + if ((othercasebit & 0x100) != 0) + othercasebit = (othercasebit & 0xff) << 8; + else + othercasebit &= 0xff; +#endif /* COMPILE_PCRE[8|16|32] */ + } + +if (context->sourcereg == -1) + { +#if defined COMPILE_PCRE8 +#if defined SLJIT_UNALIGNED && SLJIT_UNALIGNED + if (context->length >= 4) + OP1(SLJIT_MOV_SI, TMP1, 0, SLJIT_MEM1(STR_PTR), -context->length); + else if (context->length >= 2) + OP1(SLJIT_MOV_UH, TMP1, 0, SLJIT_MEM1(STR_PTR), -context->length); + else +#endif + OP1(SLJIT_MOV_UB, TMP1, 0, SLJIT_MEM1(STR_PTR), -context->length); +#elif defined COMPILE_PCRE16 +#if defined SLJIT_UNALIGNED && SLJIT_UNALIGNED + if (context->length >= 4) + OP1(SLJIT_MOV_SI, TMP1, 0, SLJIT_MEM1(STR_PTR), -context->length); + else +#endif + OP1(MOV_UCHAR, TMP1, 0, SLJIT_MEM1(STR_PTR), -context->length); +#elif defined COMPILE_PCRE32 + OP1(MOV_UCHAR, TMP1, 0, SLJIT_MEM1(STR_PTR), -context->length); +#endif /* COMPILE_PCRE[8|16|32] */ + context->sourcereg = TMP2; + } + +#ifdef SUPPORT_UTF +utflength = 1; +if (common->utf && HAS_EXTRALEN(*cc)) + utflength += GET_EXTRALEN(*cc); + +do + { +#endif + + context->length -= IN_UCHARS(1); +#if (defined SLJIT_UNALIGNED && SLJIT_UNALIGNED) && (defined COMPILE_PCRE8 || defined COMPILE_PCRE16) + + /* Unaligned read is supported. */ + if (othercasebit != 0 && othercasechar == cc) + { + context->c.asuchars[context->ucharptr] = *cc | othercasebit; + context->oc.asuchars[context->ucharptr] = othercasebit; + } + else + { + context->c.asuchars[context->ucharptr] = *cc; + context->oc.asuchars[context->ucharptr] = 0; + } + context->ucharptr++; + +#if defined COMPILE_PCRE8 + if (context->ucharptr >= 4 || context->length == 0 || (context->ucharptr == 2 && context->length == 1)) +#else + if (context->ucharptr >= 2 || context->length == 0) +#endif + { + if (context->length >= 4) + OP1(SLJIT_MOV_SI, context->sourcereg, 0, SLJIT_MEM1(STR_PTR), -context->length); + else if (context->length >= 2) + OP1(SLJIT_MOV_UH, context->sourcereg, 0, SLJIT_MEM1(STR_PTR), -context->length); +#if defined COMPILE_PCRE8 + else if (context->length >= 1) + OP1(SLJIT_MOV_UB, context->sourcereg, 0, SLJIT_MEM1(STR_PTR), -context->length); +#endif /* COMPILE_PCRE8 */ + context->sourcereg = context->sourcereg == TMP1 ? TMP2 : TMP1; + + switch(context->ucharptr) + { + case 4 / sizeof(pcre_uchar): + if (context->oc.asint != 0) + OP2(SLJIT_OR, context->sourcereg, 0, context->sourcereg, 0, SLJIT_IMM, context->oc.asint); + add_jump(compiler, backtracks, CMP(SLJIT_C_NOT_EQUAL, context->sourcereg, 0, SLJIT_IMM, context->c.asint | context->oc.asint)); + break; + + case 2 / sizeof(pcre_uchar): + if (context->oc.asushort != 0) + OP2(SLJIT_OR, context->sourcereg, 0, context->sourcereg, 0, SLJIT_IMM, context->oc.asushort); + add_jump(compiler, backtracks, CMP(SLJIT_C_NOT_EQUAL, context->sourcereg, 0, SLJIT_IMM, context->c.asushort | context->oc.asushort)); + break; + +#ifdef COMPILE_PCRE8 + case 1: + if (context->oc.asbyte != 0) + OP2(SLJIT_OR, context->sourcereg, 0, context->sourcereg, 0, SLJIT_IMM, context->oc.asbyte); + add_jump(compiler, backtracks, CMP(SLJIT_C_NOT_EQUAL, context->sourcereg, 0, SLJIT_IMM, context->c.asbyte | context->oc.asbyte)); + break; +#endif + + default: + SLJIT_ASSERT_STOP(); + break; + } + context->ucharptr = 0; + } + +#else + + /* Unaligned read is unsupported or in 32 bit mode. */ + if (context->length >= 1) + OP1(MOV_UCHAR, context->sourcereg, 0, SLJIT_MEM1(STR_PTR), -context->length); + + context->sourcereg = context->sourcereg == TMP1 ? TMP2 : TMP1; + + if (othercasebit != 0 && othercasechar == cc) + { + OP2(SLJIT_OR, context->sourcereg, 0, context->sourcereg, 0, SLJIT_IMM, othercasebit); + add_jump(compiler, backtracks, CMP(SLJIT_C_NOT_EQUAL, context->sourcereg, 0, SLJIT_IMM, *cc | othercasebit)); + } + else + add_jump(compiler, backtracks, CMP(SLJIT_C_NOT_EQUAL, context->sourcereg, 0, SLJIT_IMM, *cc)); + +#endif + + cc++; +#ifdef SUPPORT_UTF + utflength--; + } +while (utflength > 0); +#endif + +return cc; +} + +#if defined SUPPORT_UTF || !defined COMPILE_PCRE8 + +#define SET_TYPE_OFFSET(value) \ + if ((value) != typeoffset) \ + { \ + if ((value) < typeoffset) \ + OP2(SLJIT_ADD, typereg, 0, typereg, 0, SLJIT_IMM, typeoffset - (value)); \ + else \ + OP2(SLJIT_SUB, typereg, 0, typereg, 0, SLJIT_IMM, (value) - typeoffset); \ + } \ + typeoffset = (value); + +#define SET_CHAR_OFFSET(value) \ + if ((value) != charoffset) \ + { \ + if ((value) < charoffset) \ + OP2(SLJIT_ADD, TMP1, 0, TMP1, 0, SLJIT_IMM, (sljit_sw)(charoffset - (value))); \ + else \ + OP2(SLJIT_SUB, TMP1, 0, TMP1, 0, SLJIT_IMM, (sljit_sw)((value) - charoffset)); \ + } \ + charoffset = (value); + +static void compile_xclass_matchingpath(compiler_common *common, pcre_uchar *cc, jump_list **backtracks) +{ +DEFINE_COMPILER; +jump_list *found = NULL; +jump_list **list = (cc[0] & XCL_NOT) == 0 ? &found : backtracks; +sljit_uw c, charoffset, max = 256, min = READ_CHAR_MAX; +struct sljit_jump *jump = NULL; +pcre_uchar *ccbegin; +int compares, invertcmp, numberofcmps; +#if defined SUPPORT_UTF && (defined COMPILE_PCRE8 || defined COMPILE_PCRE16) +BOOL utf = common->utf; +#endif + +#ifdef SUPPORT_UCP +BOOL needstype = FALSE, needsscript = FALSE, needschar = FALSE; +BOOL charsaved = FALSE; +int typereg = TMP1, scriptreg = TMP1; +const pcre_uint32 *other_cases; +sljit_uw typeoffset; +#endif + +/* Scanning the necessary info. */ +cc++; +ccbegin = cc; +compares = 0; +if (cc[-1] & XCL_MAP) + { + min = 0; + cc += 32 / sizeof(pcre_uchar); + } + +while (*cc != XCL_END) + { + compares++; + if (*cc == XCL_SINGLE) + { + cc ++; + GETCHARINCTEST(c, cc); + if (c > max) max = c; + if (c < min) min = c; +#ifdef SUPPORT_UCP + needschar = TRUE; +#endif + } + else if (*cc == XCL_RANGE) + { + cc ++; + GETCHARINCTEST(c, cc); + if (c < min) min = c; + GETCHARINCTEST(c, cc); + if (c > max) max = c; +#ifdef SUPPORT_UCP + needschar = TRUE; +#endif + } +#ifdef SUPPORT_UCP + else + { + SLJIT_ASSERT(*cc == XCL_PROP || *cc == XCL_NOTPROP); + cc++; + if (*cc == PT_CLIST) + { + other_cases = PRIV(ucd_caseless_sets) + cc[1]; + while (*other_cases != NOTACHAR) + { + if (*other_cases > max) max = *other_cases; + if (*other_cases < min) min = *other_cases; + other_cases++; + } + } + else + { + max = READ_CHAR_MAX; + min = 0; + } + + switch(*cc) + { + case PT_ANY: + break; + + case PT_LAMP: + case PT_GC: + case PT_PC: + case PT_ALNUM: + needstype = TRUE; + break; + + case PT_SC: + needsscript = TRUE; + break; + + case PT_SPACE: + case PT_PXSPACE: + case PT_WORD: + case PT_PXGRAPH: + case PT_PXPRINT: + case PT_PXPUNCT: + needstype = TRUE; + needschar = TRUE; + break; + + case PT_CLIST: + case PT_UCNC: + needschar = TRUE; + break; + + default: + SLJIT_ASSERT_STOP(); + break; + } + cc += 2; + } +#endif + } + +/* We are not necessary in utf mode even in 8 bit mode. */ +cc = ccbegin; +detect_partial_match(common, backtracks); +read_char_range(common, min, max, (cc[-1] & XCL_NOT) != 0); + +if ((cc[-1] & XCL_HASPROP) == 0) + { + if ((cc[-1] & XCL_MAP) != 0) + { + jump = CMP(SLJIT_C_GREATER, TMP1, 0, SLJIT_IMM, 255); + if (!check_class_ranges(common, (const pcre_uint8 *)cc, (((const pcre_uint8 *)cc)[31] & 0x80) != 0, TRUE, &found)) + { + OP2(SLJIT_AND, TMP2, 0, TMP1, 0, SLJIT_IMM, 0x7); + OP2(SLJIT_LSHR, TMP1, 0, TMP1, 0, SLJIT_IMM, 3); + OP1(SLJIT_MOV_UB, TMP1, 0, SLJIT_MEM1(TMP1), (sljit_sw)cc); + OP2(SLJIT_SHL, TMP2, 0, SLJIT_IMM, 1, TMP2, 0); + OP2(SLJIT_AND | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, TMP2, 0); + add_jump(compiler, &found, JUMP(SLJIT_C_NOT_ZERO)); + } + + add_jump(compiler, backtracks, JUMP(SLJIT_JUMP)); + JUMPHERE(jump); + + cc += 32 / sizeof(pcre_uchar); + } + else + { + OP2(SLJIT_SUB, TMP2, 0, TMP1, 0, SLJIT_IMM, min); + add_jump(compiler, (cc[-1] & XCL_NOT) == 0 ? backtracks : &found, CMP(SLJIT_C_GREATER, TMP2, 0, SLJIT_IMM, max - min)); + } + } +else if ((cc[-1] & XCL_MAP) != 0) + { + OP1(SLJIT_MOV, TMP3, 0, TMP1, 0); +#ifdef SUPPORT_UCP + charsaved = TRUE; +#endif + if (!check_class_ranges(common, (const pcre_uint8 *)cc, FALSE, TRUE, list)) + { +#ifdef COMPILE_PCRE8 + SLJIT_ASSERT(common->utf); +#endif + jump = CMP(SLJIT_C_GREATER, TMP1, 0, SLJIT_IMM, 255); + + OP2(SLJIT_AND, TMP2, 0, TMP1, 0, SLJIT_IMM, 0x7); + OP2(SLJIT_LSHR, TMP1, 0, TMP1, 0, SLJIT_IMM, 3); + OP1(SLJIT_MOV_UB, TMP1, 0, SLJIT_MEM1(TMP1), (sljit_sw)cc); + OP2(SLJIT_SHL, TMP2, 0, SLJIT_IMM, 1, TMP2, 0); + OP2(SLJIT_AND | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, TMP2, 0); + add_jump(compiler, list, JUMP(SLJIT_C_NOT_ZERO)); + + JUMPHERE(jump); + } + + OP1(SLJIT_MOV, TMP1, 0, TMP3, 0); + cc += 32 / sizeof(pcre_uchar); + } + +#ifdef SUPPORT_UCP +/* Simple register allocation. TMP1 is preferred if possible. */ +if (needstype || needsscript) + { + if (needschar && !charsaved) + OP1(SLJIT_MOV, TMP3, 0, TMP1, 0); + add_jump(compiler, &common->getucd, JUMP(SLJIT_FAST_CALL)); + if (needschar) + { + if (needstype) + { + OP1(SLJIT_MOV, RETURN_ADDR, 0, TMP1, 0); + typereg = RETURN_ADDR; + } + + if (needsscript) + scriptreg = TMP3; + OP1(SLJIT_MOV, TMP1, 0, TMP3, 0); + } + else if (needstype && needsscript) + scriptreg = TMP3; + /* In all other cases only one of them was specified, and that can goes to TMP1. */ + + if (needsscript) + { + if (scriptreg == TMP1) + { + OP1(SLJIT_MOV, scriptreg, 0, SLJIT_IMM, (sljit_sw)PRIV(ucd_records) + SLJIT_OFFSETOF(ucd_record, script)); + OP1(SLJIT_MOV_UB, scriptreg, 0, SLJIT_MEM2(scriptreg, TMP2), 3); + } + else + { + OP2(SLJIT_SHL, TMP2, 0, TMP2, 0, SLJIT_IMM, 3); + OP2(SLJIT_ADD, TMP2, 0, TMP2, 0, SLJIT_IMM, (sljit_sw)PRIV(ucd_records) + SLJIT_OFFSETOF(ucd_record, script)); + OP1(SLJIT_MOV_UB, scriptreg, 0, SLJIT_MEM1(TMP2), 0); + } + } + } +#endif + +/* Generating code. */ +charoffset = 0; +numberofcmps = 0; +#ifdef SUPPORT_UCP +typeoffset = 0; +#endif + +while (*cc != XCL_END) + { + compares--; + invertcmp = (compares == 0 && list != backtracks); + jump = NULL; + + if (*cc == XCL_SINGLE) + { + cc ++; + GETCHARINCTEST(c, cc); + + if (numberofcmps < 3 && (*cc == XCL_SINGLE || *cc == XCL_RANGE)) + { + OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, (sljit_sw)(c - charoffset)); + OP_FLAGS(numberofcmps == 0 ? SLJIT_MOV : SLJIT_OR, TMP2, 0, numberofcmps == 0 ? SLJIT_UNUSED : TMP2, 0, SLJIT_C_EQUAL); + numberofcmps++; + } + else if (numberofcmps > 0) + { + OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, (sljit_sw)(c - charoffset)); + OP_FLAGS(SLJIT_OR | SLJIT_SET_E, TMP2, 0, TMP2, 0, SLJIT_C_EQUAL); + jump = JUMP(SLJIT_C_NOT_ZERO ^ invertcmp); + numberofcmps = 0; + } + else + { + jump = CMP(SLJIT_C_EQUAL ^ invertcmp, TMP1, 0, SLJIT_IMM, (sljit_sw)(c - charoffset)); + numberofcmps = 0; + } + } + else if (*cc == XCL_RANGE) + { + cc ++; + GETCHARINCTEST(c, cc); + SET_CHAR_OFFSET(c); + GETCHARINCTEST(c, cc); + + if (numberofcmps < 3 && (*cc == XCL_SINGLE || *cc == XCL_RANGE)) + { + OP2(SLJIT_SUB | SLJIT_SET_U, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, (sljit_sw)(c - charoffset)); + OP_FLAGS(numberofcmps == 0 ? SLJIT_MOV : SLJIT_OR, TMP2, 0, numberofcmps == 0 ? SLJIT_UNUSED : TMP2, 0, SLJIT_C_LESS_EQUAL); + numberofcmps++; + } + else if (numberofcmps > 0) + { + OP2(SLJIT_SUB | SLJIT_SET_U, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, (sljit_sw)(c - charoffset)); + OP_FLAGS(SLJIT_OR | SLJIT_SET_E, TMP2, 0, TMP2, 0, SLJIT_C_LESS_EQUAL); + jump = JUMP(SLJIT_C_NOT_ZERO ^ invertcmp); + numberofcmps = 0; + } + else + { + jump = CMP(SLJIT_C_LESS_EQUAL ^ invertcmp, TMP1, 0, SLJIT_IMM, (sljit_sw)(c - charoffset)); + numberofcmps = 0; + } + } +#ifdef SUPPORT_UCP + else + { + if (*cc == XCL_NOTPROP) + invertcmp ^= 0x1; + cc++; + switch(*cc) + { + case PT_ANY: + if (list != backtracks) + { + if ((cc[-1] == XCL_NOTPROP && compares > 0) || (cc[-1] == XCL_PROP && compares == 0)) + continue; + } + else if (cc[-1] == XCL_NOTPROP) + continue; + jump = JUMP(SLJIT_JUMP); + break; + + case PT_LAMP: + OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, typereg, 0, SLJIT_IMM, ucp_Lu - typeoffset); + OP_FLAGS(SLJIT_MOV, TMP2, 0, SLJIT_UNUSED, 0, SLJIT_C_EQUAL); + OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, typereg, 0, SLJIT_IMM, ucp_Ll - typeoffset); + OP_FLAGS(SLJIT_OR, TMP2, 0, TMP2, 0, SLJIT_C_EQUAL); + OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, typereg, 0, SLJIT_IMM, ucp_Lt - typeoffset); + OP_FLAGS(SLJIT_OR | SLJIT_SET_E, TMP2, 0, TMP2, 0, SLJIT_C_EQUAL); + jump = JUMP(SLJIT_C_NOT_ZERO ^ invertcmp); + break; + + case PT_GC: + c = PRIV(ucp_typerange)[(int)cc[1] * 2]; + SET_TYPE_OFFSET(c); + jump = CMP(SLJIT_C_LESS_EQUAL ^ invertcmp, typereg, 0, SLJIT_IMM, PRIV(ucp_typerange)[(int)cc[1] * 2 + 1] - c); + break; + + case PT_PC: + jump = CMP(SLJIT_C_EQUAL ^ invertcmp, typereg, 0, SLJIT_IMM, (int)cc[1] - typeoffset); + break; + + case PT_SC: + jump = CMP(SLJIT_C_EQUAL ^ invertcmp, scriptreg, 0, SLJIT_IMM, (int)cc[1]); + break; + + case PT_SPACE: + case PT_PXSPACE: + SET_CHAR_OFFSET(9); + OP2(SLJIT_SUB | SLJIT_SET_U, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, 0xd - 0x9); + OP_FLAGS(SLJIT_MOV, TMP2, 0, SLJIT_UNUSED, 0, SLJIT_C_LESS_EQUAL); + + OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, 0x85 - 0x9); + OP_FLAGS(SLJIT_OR | SLJIT_SET_E, TMP2, 0, TMP2, 0, SLJIT_C_EQUAL); + + OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, 0x180e - 0x9); + OP_FLAGS(SLJIT_OR | SLJIT_SET_E, TMP2, 0, TMP2, 0, SLJIT_C_EQUAL); + + SET_TYPE_OFFSET(ucp_Zl); + OP2(SLJIT_SUB | SLJIT_SET_U, SLJIT_UNUSED, 0, typereg, 0, SLJIT_IMM, ucp_Zs - ucp_Zl); + OP_FLAGS(SLJIT_OR | SLJIT_SET_E, TMP2, 0, TMP2, 0, SLJIT_C_LESS_EQUAL); + jump = JUMP(SLJIT_C_NOT_ZERO ^ invertcmp); + break; + + case PT_WORD: + OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, (sljit_sw)(CHAR_UNDERSCORE - charoffset)); + OP_FLAGS(SLJIT_MOV, TMP2, 0, SLJIT_UNUSED, 0, SLJIT_C_EQUAL); + /* Fall through. */ + + case PT_ALNUM: + SET_TYPE_OFFSET(ucp_Ll); + OP2(SLJIT_SUB | SLJIT_SET_U, SLJIT_UNUSED, 0, typereg, 0, SLJIT_IMM, ucp_Lu - ucp_Ll); + OP_FLAGS((*cc == PT_ALNUM) ? SLJIT_MOV : SLJIT_OR, TMP2, 0, (*cc == PT_ALNUM) ? SLJIT_UNUSED : TMP2, 0, SLJIT_C_LESS_EQUAL); + SET_TYPE_OFFSET(ucp_Nd); + OP2(SLJIT_SUB | SLJIT_SET_U, SLJIT_UNUSED, 0, typereg, 0, SLJIT_IMM, ucp_No - ucp_Nd); + OP_FLAGS(SLJIT_OR | SLJIT_SET_E, TMP2, 0, TMP2, 0, SLJIT_C_LESS_EQUAL); + jump = JUMP(SLJIT_C_NOT_ZERO ^ invertcmp); + break; + + case PT_CLIST: + other_cases = PRIV(ucd_caseless_sets) + cc[1]; + + /* At least three characters are required. + Otherwise this case would be handled by the normal code path. */ + SLJIT_ASSERT(other_cases[0] != NOTACHAR && other_cases[1] != NOTACHAR && other_cases[2] != NOTACHAR); + SLJIT_ASSERT(other_cases[0] < other_cases[1] && other_cases[1] < other_cases[2]); + + /* Optimizing character pairs, if their difference is power of 2. */ + if (is_powerof2(other_cases[1] ^ other_cases[0])) + { + if (charoffset == 0) + OP2(SLJIT_OR, TMP2, 0, TMP1, 0, SLJIT_IMM, other_cases[1] ^ other_cases[0]); + else + { + OP2(SLJIT_ADD, TMP2, 0, TMP1, 0, SLJIT_IMM, (sljit_sw)charoffset); + OP2(SLJIT_OR, TMP2, 0, TMP2, 0, SLJIT_IMM, other_cases[1] ^ other_cases[0]); + } + OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP2, 0, SLJIT_IMM, other_cases[1]); + OP_FLAGS(SLJIT_MOV, TMP2, 0, SLJIT_UNUSED, 0, SLJIT_C_EQUAL); + other_cases += 2; + } + else if (is_powerof2(other_cases[2] ^ other_cases[1])) + { + if (charoffset == 0) + OP2(SLJIT_OR, TMP2, 0, TMP1, 0, SLJIT_IMM, other_cases[2] ^ other_cases[1]); + else + { + OP2(SLJIT_ADD, TMP2, 0, TMP1, 0, SLJIT_IMM, (sljit_sw)charoffset); + OP2(SLJIT_OR, TMP2, 0, TMP2, 0, SLJIT_IMM, other_cases[1] ^ other_cases[0]); + } + OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP2, 0, SLJIT_IMM, other_cases[2]); + OP_FLAGS(SLJIT_MOV, TMP2, 0, SLJIT_UNUSED, 0, SLJIT_C_EQUAL); + + OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, (sljit_sw)(other_cases[0] - charoffset)); + OP_FLAGS(SLJIT_OR | ((other_cases[3] == NOTACHAR) ? SLJIT_SET_E : 0), TMP2, 0, TMP2, 0, SLJIT_C_EQUAL); + + other_cases += 3; + } + else + { + OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, (sljit_sw)(*other_cases++ - charoffset)); + OP_FLAGS(SLJIT_MOV, TMP2, 0, SLJIT_UNUSED, 0, SLJIT_C_EQUAL); + } + + while (*other_cases != NOTACHAR) + { + OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, (sljit_sw)(*other_cases++ - charoffset)); + OP_FLAGS(SLJIT_OR | ((*other_cases == NOTACHAR) ? SLJIT_SET_E : 0), TMP2, 0, TMP2, 0, SLJIT_C_EQUAL); + } + jump = JUMP(SLJIT_C_NOT_ZERO ^ invertcmp); + break; + + case PT_UCNC: + OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, (sljit_sw)(CHAR_DOLLAR_SIGN - charoffset)); + OP_FLAGS(SLJIT_MOV, TMP2, 0, SLJIT_UNUSED, 0, SLJIT_C_EQUAL); + OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, (sljit_sw)(CHAR_COMMERCIAL_AT - charoffset)); + OP_FLAGS(SLJIT_OR, TMP2, 0, TMP2, 0, SLJIT_C_EQUAL); + OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, (sljit_sw)(CHAR_GRAVE_ACCENT - charoffset)); + OP_FLAGS(SLJIT_OR, TMP2, 0, TMP2, 0, SLJIT_C_EQUAL); + + SET_CHAR_OFFSET(0xa0); + OP2(SLJIT_SUB | SLJIT_SET_U, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, (sljit_sw)(0xd7ff - charoffset)); + OP_FLAGS(SLJIT_OR, TMP2, 0, TMP2, 0, SLJIT_C_LESS_EQUAL); + SET_CHAR_OFFSET(0); + OP2(SLJIT_SUB | SLJIT_SET_U, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, 0xe000 - 0); + OP_FLAGS(SLJIT_OR | SLJIT_SET_E, TMP2, 0, TMP2, 0, SLJIT_C_GREATER_EQUAL); + jump = JUMP(SLJIT_C_NOT_ZERO ^ invertcmp); + break; + + case PT_PXGRAPH: + /* C and Z groups are the farthest two groups. */ + SET_TYPE_OFFSET(ucp_Ll); + OP2(SLJIT_SUB | SLJIT_SET_U, SLJIT_UNUSED, 0, typereg, 0, SLJIT_IMM, ucp_So - ucp_Ll); + OP_FLAGS(SLJIT_MOV, TMP2, 0, SLJIT_UNUSED, 0, SLJIT_C_GREATER); + + jump = CMP(SLJIT_C_NOT_EQUAL, typereg, 0, SLJIT_IMM, ucp_Cf - ucp_Ll); + + /* In case of ucp_Cf, we overwrite the result. */ + SET_CHAR_OFFSET(0x2066); + OP2(SLJIT_SUB | SLJIT_SET_U, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, 0x2069 - 0x2066); + OP_FLAGS(SLJIT_MOV, TMP2, 0, SLJIT_UNUSED, 0, SLJIT_C_LESS_EQUAL); + + OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, 0x061c - 0x2066); + OP_FLAGS(SLJIT_OR, TMP2, 0, TMP2, 0, SLJIT_C_EQUAL); + + OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, 0x180e - 0x2066); + OP_FLAGS(SLJIT_OR, TMP2, 0, TMP2, 0, SLJIT_C_EQUAL); + + JUMPHERE(jump); + jump = CMP(SLJIT_C_ZERO ^ invertcmp, TMP2, 0, SLJIT_IMM, 0); + break; + + case PT_PXPRINT: + /* C and Z groups are the farthest two groups. */ + SET_TYPE_OFFSET(ucp_Ll); + OP2(SLJIT_SUB | SLJIT_SET_U, SLJIT_UNUSED, 0, typereg, 0, SLJIT_IMM, ucp_So - ucp_Ll); + OP_FLAGS(SLJIT_MOV, TMP2, 0, SLJIT_UNUSED, 0, SLJIT_C_GREATER); + + OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, typereg, 0, SLJIT_IMM, ucp_Zs - ucp_Ll); + OP_FLAGS(SLJIT_AND, TMP2, 0, TMP2, 0, SLJIT_C_NOT_EQUAL); + + jump = CMP(SLJIT_C_NOT_EQUAL, typereg, 0, SLJIT_IMM, ucp_Cf - ucp_Ll); + + /* In case of ucp_Cf, we overwrite the result. */ + SET_CHAR_OFFSET(0x2066); + OP2(SLJIT_SUB | SLJIT_SET_U, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, 0x2069 - 0x2066); + OP_FLAGS(SLJIT_MOV, TMP2, 0, SLJIT_UNUSED, 0, SLJIT_C_LESS_EQUAL); + + OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, 0x061c - 0x2066); + OP_FLAGS(SLJIT_OR, TMP2, 0, TMP2, 0, SLJIT_C_EQUAL); + + JUMPHERE(jump); + jump = CMP(SLJIT_C_ZERO ^ invertcmp, TMP2, 0, SLJIT_IMM, 0); + break; + + case PT_PXPUNCT: + SET_TYPE_OFFSET(ucp_Sc); + OP2(SLJIT_SUB | SLJIT_SET_U, SLJIT_UNUSED, 0, typereg, 0, SLJIT_IMM, ucp_So - ucp_Sc); + OP_FLAGS(SLJIT_MOV, TMP2, 0, SLJIT_UNUSED, 0, SLJIT_C_LESS_EQUAL); + + SET_CHAR_OFFSET(0); + OP2(SLJIT_SUB | SLJIT_SET_U, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, 0xff); + OP_FLAGS(SLJIT_AND, TMP2, 0, TMP2, 0, SLJIT_C_LESS_EQUAL); + + SET_TYPE_OFFSET(ucp_Pc); + OP2(SLJIT_SUB | SLJIT_SET_U, SLJIT_UNUSED, 0, typereg, 0, SLJIT_IMM, ucp_Ps - ucp_Pc); + OP_FLAGS(SLJIT_OR | SLJIT_SET_E, TMP2, 0, TMP2, 0, SLJIT_C_LESS_EQUAL); + jump = JUMP(SLJIT_C_NOT_ZERO ^ invertcmp); + break; + } + cc += 2; + } +#endif + + if (jump != NULL) + add_jump(compiler, compares > 0 ? list : backtracks, jump); + } + +if (found != NULL) + set_jumps(found, LABEL()); +} + +#undef SET_TYPE_OFFSET +#undef SET_CHAR_OFFSET + +#endif + +static pcre_uchar *compile_char1_matchingpath(compiler_common *common, pcre_uchar type, pcre_uchar *cc, jump_list **backtracks) +{ +DEFINE_COMPILER; +int length; +unsigned int c, oc, bit; +compare_context context; +struct sljit_jump *jump[4]; +jump_list *end_list; +#ifdef SUPPORT_UTF +struct sljit_label *label; +#ifdef SUPPORT_UCP +pcre_uchar propdata[5]; +#endif +#endif /* SUPPORT_UTF */ + +switch(type) + { + case OP_SOD: + OP1(SLJIT_MOV, TMP1, 0, ARGUMENTS, 0); + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(TMP1), SLJIT_OFFSETOF(jit_arguments, begin)); + add_jump(compiler, backtracks, CMP(SLJIT_C_NOT_EQUAL, STR_PTR, 0, TMP1, 0)); + return cc; + + case OP_SOM: + OP1(SLJIT_MOV, TMP1, 0, ARGUMENTS, 0); + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(TMP1), SLJIT_OFFSETOF(jit_arguments, str)); + add_jump(compiler, backtracks, CMP(SLJIT_C_NOT_EQUAL, STR_PTR, 0, TMP1, 0)); + return cc; + + case OP_NOT_WORD_BOUNDARY: + case OP_WORD_BOUNDARY: + add_jump(compiler, &common->wordboundary, JUMP(SLJIT_FAST_CALL)); + add_jump(compiler, backtracks, JUMP(type == OP_NOT_WORD_BOUNDARY ? SLJIT_C_NOT_ZERO : SLJIT_C_ZERO)); + return cc; + + case OP_NOT_DIGIT: + case OP_DIGIT: + /* Digits are usually 0-9, so it is worth to optimize them. */ + detect_partial_match(common, backtracks); +#if defined SUPPORT_UTF && defined COMPILE_PCRE8 + if (common->utf && is_char7_bitset((const pcre_uint8*)common->ctypes - cbit_length + cbit_digit, FALSE)) + read_char7_type(common, type == OP_NOT_DIGIT); + else +#endif + read_char8_type(common, type == OP_NOT_DIGIT); + /* Flip the starting bit in the negative case. */ + OP2(SLJIT_AND | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, ctype_digit); + add_jump(compiler, backtracks, JUMP(type == OP_DIGIT ? SLJIT_C_ZERO : SLJIT_C_NOT_ZERO)); + return cc; + + case OP_NOT_WHITESPACE: + case OP_WHITESPACE: + detect_partial_match(common, backtracks); +#if defined SUPPORT_UTF && defined COMPILE_PCRE8 + if (common->utf && is_char7_bitset((const pcre_uint8*)common->ctypes - cbit_length + cbit_space, FALSE)) + read_char7_type(common, type == OP_NOT_WHITESPACE); + else +#endif + read_char8_type(common, type == OP_NOT_WHITESPACE); + OP2(SLJIT_AND | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, ctype_space); + add_jump(compiler, backtracks, JUMP(type == OP_WHITESPACE ? SLJIT_C_ZERO : SLJIT_C_NOT_ZERO)); + return cc; + + case OP_NOT_WORDCHAR: + case OP_WORDCHAR: + detect_partial_match(common, backtracks); +#if defined SUPPORT_UTF && defined COMPILE_PCRE8 + if (common->utf && is_char7_bitset((const pcre_uint8*)common->ctypes - cbit_length + cbit_word, FALSE)) + read_char7_type(common, type == OP_NOT_WORDCHAR); + else +#endif + read_char8_type(common, type == OP_NOT_WORDCHAR); + OP2(SLJIT_AND | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, ctype_word); + add_jump(compiler, backtracks, JUMP(type == OP_WORDCHAR ? SLJIT_C_ZERO : SLJIT_C_NOT_ZERO)); + return cc; + + case OP_ANY: + detect_partial_match(common, backtracks); + read_char_range(common, common->nlmin, common->nlmax, TRUE); + if (common->nltype == NLTYPE_FIXED && common->newline > 255) + { + jump[0] = CMP(SLJIT_C_NOT_EQUAL, TMP1, 0, SLJIT_IMM, (common->newline >> 8) & 0xff); + end_list = NULL; + if (common->mode != JIT_PARTIAL_HARD_COMPILE) + add_jump(compiler, &end_list, CMP(SLJIT_C_GREATER_EQUAL, STR_PTR, 0, STR_END, 0)); + else + check_str_end(common, &end_list); + + OP1(MOV_UCHAR, TMP1, 0, SLJIT_MEM1(STR_PTR), 0); + add_jump(compiler, backtracks, CMP(SLJIT_C_EQUAL, TMP1, 0, SLJIT_IMM, common->newline & 0xff)); + set_jumps(end_list, LABEL()); + JUMPHERE(jump[0]); + } + else + check_newlinechar(common, common->nltype, backtracks, TRUE); + return cc; + + case OP_ALLANY: + detect_partial_match(common, backtracks); +#ifdef SUPPORT_UTF + if (common->utf) + { + OP1(MOV_UCHAR, TMP1, 0, SLJIT_MEM1(STR_PTR), 0); + OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(1)); +#if defined COMPILE_PCRE8 || defined COMPILE_PCRE16 +#if defined COMPILE_PCRE8 + jump[0] = CMP(SLJIT_C_LESS, TMP1, 0, SLJIT_IMM, 0xc0); + OP1(SLJIT_MOV_UB, TMP1, 0, SLJIT_MEM1(TMP1), (sljit_sw)PRIV(utf8_table4) - 0xc0); + OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, TMP1, 0); +#elif defined COMPILE_PCRE16 + jump[0] = CMP(SLJIT_C_LESS, TMP1, 0, SLJIT_IMM, 0xd800); + OP2(SLJIT_AND, TMP1, 0, TMP1, 0, SLJIT_IMM, 0xfc00); + OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, 0xd800); + OP_FLAGS(SLJIT_MOV, TMP1, 0, SLJIT_UNUSED, 0, SLJIT_C_EQUAL); + OP2(SLJIT_SHL, TMP1, 0, TMP1, 0, SLJIT_IMM, 1); + OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, TMP1, 0); +#endif + JUMPHERE(jump[0]); +#endif /* COMPILE_PCRE[8|16] */ + return cc; + } +#endif + OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(1)); + return cc; + + case OP_ANYBYTE: + detect_partial_match(common, backtracks); + OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(1)); + return cc; + +#ifdef SUPPORT_UTF +#ifdef SUPPORT_UCP + case OP_NOTPROP: + case OP_PROP: + propdata[0] = XCL_HASPROP; + propdata[1] = type == OP_NOTPROP ? XCL_NOTPROP : XCL_PROP; + propdata[2] = cc[0]; + propdata[3] = cc[1]; + propdata[4] = XCL_END; + compile_xclass_matchingpath(common, propdata, backtracks); + return cc + 2; +#endif +#endif + + case OP_ANYNL: + detect_partial_match(common, backtracks); + read_char_range(common, common->bsr_nlmin, common->bsr_nlmax, FALSE); + jump[0] = CMP(SLJIT_C_NOT_EQUAL, TMP1, 0, SLJIT_IMM, CHAR_CR); + /* We don't need to handle soft partial matching case. */ + end_list = NULL; + if (common->mode != JIT_PARTIAL_HARD_COMPILE) + add_jump(compiler, &end_list, CMP(SLJIT_C_GREATER_EQUAL, STR_PTR, 0, STR_END, 0)); + else + check_str_end(common, &end_list); + OP1(MOV_UCHAR, TMP1, 0, SLJIT_MEM1(STR_PTR), 0); + jump[1] = CMP(SLJIT_C_NOT_EQUAL, TMP1, 0, SLJIT_IMM, CHAR_NL); + OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(1)); + jump[2] = JUMP(SLJIT_JUMP); + JUMPHERE(jump[0]); + check_newlinechar(common, common->bsr_nltype, backtracks, FALSE); + set_jumps(end_list, LABEL()); + JUMPHERE(jump[1]); + JUMPHERE(jump[2]); + return cc; + + case OP_NOT_HSPACE: + case OP_HSPACE: + detect_partial_match(common, backtracks); + read_char_range(common, 0x9, 0x3000, type == OP_NOT_HSPACE); + add_jump(compiler, &common->hspace, JUMP(SLJIT_FAST_CALL)); + add_jump(compiler, backtracks, JUMP(type == OP_NOT_HSPACE ? SLJIT_C_NOT_ZERO : SLJIT_C_ZERO)); + return cc; + + case OP_NOT_VSPACE: + case OP_VSPACE: + detect_partial_match(common, backtracks); + read_char_range(common, 0xa, 0x2029, type == OP_NOT_VSPACE); + add_jump(compiler, &common->vspace, JUMP(SLJIT_FAST_CALL)); + add_jump(compiler, backtracks, JUMP(type == OP_NOT_VSPACE ? SLJIT_C_NOT_ZERO : SLJIT_C_ZERO)); + return cc; + +#ifdef SUPPORT_UCP + case OP_EXTUNI: + detect_partial_match(common, backtracks); + read_char(common); + add_jump(compiler, &common->getucd, JUMP(SLJIT_FAST_CALL)); + OP1(SLJIT_MOV, TMP1, 0, SLJIT_IMM, (sljit_sw)PRIV(ucd_records) + SLJIT_OFFSETOF(ucd_record, gbprop)); + /* Optimize register allocation: use a real register. */ + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), LOCALS0, STACK_TOP, 0); + OP1(SLJIT_MOV_UB, STACK_TOP, 0, SLJIT_MEM2(TMP1, TMP2), 3); + + label = LABEL(); + jump[0] = CMP(SLJIT_C_GREATER_EQUAL, STR_PTR, 0, STR_END, 0); + OP1(SLJIT_MOV, TMP3, 0, STR_PTR, 0); + read_char(common); + add_jump(compiler, &common->getucd, JUMP(SLJIT_FAST_CALL)); + OP1(SLJIT_MOV, TMP1, 0, SLJIT_IMM, (sljit_sw)PRIV(ucd_records) + SLJIT_OFFSETOF(ucd_record, gbprop)); + OP1(SLJIT_MOV_UB, TMP2, 0, SLJIT_MEM2(TMP1, TMP2), 3); + + OP2(SLJIT_SHL, STACK_TOP, 0, STACK_TOP, 0, SLJIT_IMM, 2); + OP1(SLJIT_MOV_UI, TMP1, 0, SLJIT_MEM1(STACK_TOP), (sljit_sw)PRIV(ucp_gbtable)); + OP1(SLJIT_MOV, STACK_TOP, 0, TMP2, 0); + OP2(SLJIT_SHL, TMP2, 0, SLJIT_IMM, 1, TMP2, 0); + OP2(SLJIT_AND | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, TMP2, 0); + JUMPTO(SLJIT_C_NOT_ZERO, label); + + OP1(SLJIT_MOV, STR_PTR, 0, TMP3, 0); + JUMPHERE(jump[0]); + OP1(SLJIT_MOV, STACK_TOP, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), LOCALS0); + + if (common->mode == JIT_PARTIAL_HARD_COMPILE) + { + jump[0] = CMP(SLJIT_C_LESS, STR_PTR, 0, STR_END, 0); + /* Since we successfully read a char above, partial matching must occure. */ + check_partial(common, TRUE); + JUMPHERE(jump[0]); + } + return cc; +#endif + + case OP_EODN: + /* Requires rather complex checks. */ + jump[0] = CMP(SLJIT_C_GREATER_EQUAL, STR_PTR, 0, STR_END, 0); + if (common->nltype == NLTYPE_FIXED && common->newline > 255) + { + OP2(SLJIT_ADD, TMP2, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(2)); + OP1(MOV_UCHAR, TMP1, 0, SLJIT_MEM1(STR_PTR), IN_UCHARS(0)); + if (common->mode == JIT_COMPILE) + add_jump(compiler, backtracks, CMP(SLJIT_C_NOT_EQUAL, TMP2, 0, STR_END, 0)); + else + { + jump[1] = CMP(SLJIT_C_EQUAL, TMP2, 0, STR_END, 0); + OP2(SLJIT_SUB | SLJIT_SET_U, SLJIT_UNUSED, 0, TMP2, 0, STR_END, 0); + OP_FLAGS(SLJIT_MOV, TMP2, 0, SLJIT_UNUSED, 0, SLJIT_C_LESS); + OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, (common->newline >> 8) & 0xff); + OP_FLAGS(SLJIT_OR | SLJIT_SET_E, TMP2, 0, TMP2, 0, SLJIT_C_NOT_EQUAL); + add_jump(compiler, backtracks, JUMP(SLJIT_C_NOT_EQUAL)); + check_partial(common, TRUE); + add_jump(compiler, backtracks, JUMP(SLJIT_JUMP)); + JUMPHERE(jump[1]); + } + OP1(MOV_UCHAR, TMP2, 0, SLJIT_MEM1(STR_PTR), IN_UCHARS(1)); + add_jump(compiler, backtracks, CMP(SLJIT_C_NOT_EQUAL, TMP1, 0, SLJIT_IMM, (common->newline >> 8) & 0xff)); + add_jump(compiler, backtracks, CMP(SLJIT_C_NOT_EQUAL, TMP2, 0, SLJIT_IMM, common->newline & 0xff)); + } + else if (common->nltype == NLTYPE_FIXED) + { + OP2(SLJIT_ADD, TMP2, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(1)); + OP1(MOV_UCHAR, TMP1, 0, SLJIT_MEM1(STR_PTR), IN_UCHARS(0)); + add_jump(compiler, backtracks, CMP(SLJIT_C_NOT_EQUAL, TMP2, 0, STR_END, 0)); + add_jump(compiler, backtracks, CMP(SLJIT_C_NOT_EQUAL, TMP1, 0, SLJIT_IMM, common->newline)); + } + else + { + OP1(MOV_UCHAR, TMP1, 0, SLJIT_MEM1(STR_PTR), IN_UCHARS(0)); + jump[1] = CMP(SLJIT_C_NOT_EQUAL, TMP1, 0, SLJIT_IMM, CHAR_CR); + OP2(SLJIT_ADD, TMP2, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(2)); + OP2(SLJIT_SUB | SLJIT_SET_U, SLJIT_UNUSED, 0, TMP2, 0, STR_END, 0); + jump[2] = JUMP(SLJIT_C_GREATER); + add_jump(compiler, backtracks, JUMP(SLJIT_C_LESS)); + /* Equal. */ + OP1(MOV_UCHAR, TMP1, 0, SLJIT_MEM1(STR_PTR), IN_UCHARS(1)); + jump[3] = CMP(SLJIT_C_EQUAL, TMP1, 0, SLJIT_IMM, CHAR_NL); + add_jump(compiler, backtracks, JUMP(SLJIT_JUMP)); + + JUMPHERE(jump[1]); + if (common->nltype == NLTYPE_ANYCRLF) + { + OP2(SLJIT_ADD, TMP2, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(1)); + add_jump(compiler, backtracks, CMP(SLJIT_C_LESS, TMP2, 0, STR_END, 0)); + add_jump(compiler, backtracks, CMP(SLJIT_C_NOT_EQUAL, TMP1, 0, SLJIT_IMM, CHAR_NL)); + } + else + { + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), LOCALS1, STR_PTR, 0); + read_char_range(common, common->nlmin, common->nlmax, TRUE); + add_jump(compiler, backtracks, CMP(SLJIT_C_NOT_EQUAL, STR_PTR, 0, STR_END, 0)); + add_jump(compiler, &common->anynewline, JUMP(SLJIT_FAST_CALL)); + add_jump(compiler, backtracks, JUMP(SLJIT_C_ZERO)); + OP1(SLJIT_MOV, STR_PTR, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), LOCALS1); + } + JUMPHERE(jump[2]); + JUMPHERE(jump[3]); + } + JUMPHERE(jump[0]); + check_partial(common, FALSE); + return cc; + + case OP_EOD: + add_jump(compiler, backtracks, CMP(SLJIT_C_LESS, STR_PTR, 0, STR_END, 0)); + check_partial(common, FALSE); + return cc; + + case OP_CIRC: + OP1(SLJIT_MOV, TMP2, 0, ARGUMENTS, 0); + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(TMP2), SLJIT_OFFSETOF(jit_arguments, begin)); + add_jump(compiler, backtracks, CMP(SLJIT_C_GREATER, STR_PTR, 0, TMP1, 0)); + OP1(SLJIT_MOV_UB, TMP2, 0, SLJIT_MEM1(TMP2), SLJIT_OFFSETOF(jit_arguments, notbol)); + add_jump(compiler, backtracks, CMP(SLJIT_C_NOT_EQUAL, TMP2, 0, SLJIT_IMM, 0)); + return cc; + + case OP_CIRCM: + OP1(SLJIT_MOV, TMP2, 0, ARGUMENTS, 0); + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(TMP2), SLJIT_OFFSETOF(jit_arguments, begin)); + jump[1] = CMP(SLJIT_C_GREATER, STR_PTR, 0, TMP1, 0); + OP1(SLJIT_MOV_UB, TMP2, 0, SLJIT_MEM1(TMP2), SLJIT_OFFSETOF(jit_arguments, notbol)); + add_jump(compiler, backtracks, CMP(SLJIT_C_NOT_EQUAL, TMP2, 0, SLJIT_IMM, 0)); + jump[0] = JUMP(SLJIT_JUMP); + JUMPHERE(jump[1]); + + add_jump(compiler, backtracks, CMP(SLJIT_C_GREATER_EQUAL, STR_PTR, 0, STR_END, 0)); + if (common->nltype == NLTYPE_FIXED && common->newline > 255) + { + OP2(SLJIT_SUB, TMP2, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(2)); + add_jump(compiler, backtracks, CMP(SLJIT_C_LESS, TMP2, 0, TMP1, 0)); + OP1(MOV_UCHAR, TMP1, 0, SLJIT_MEM1(STR_PTR), IN_UCHARS(-2)); + OP1(MOV_UCHAR, TMP2, 0, SLJIT_MEM1(STR_PTR), IN_UCHARS(-1)); + add_jump(compiler, backtracks, CMP(SLJIT_C_NOT_EQUAL, TMP1, 0, SLJIT_IMM, (common->newline >> 8) & 0xff)); + add_jump(compiler, backtracks, CMP(SLJIT_C_NOT_EQUAL, TMP2, 0, SLJIT_IMM, common->newline & 0xff)); + } + else + { + skip_char_back(common); + read_char_range(common, common->nlmin, common->nlmax, TRUE); + check_newlinechar(common, common->nltype, backtracks, FALSE); + } + JUMPHERE(jump[0]); + return cc; + + case OP_DOLL: + OP1(SLJIT_MOV, TMP2, 0, ARGUMENTS, 0); + OP1(SLJIT_MOV_UB, TMP2, 0, SLJIT_MEM1(TMP2), SLJIT_OFFSETOF(jit_arguments, noteol)); + add_jump(compiler, backtracks, CMP(SLJIT_C_NOT_EQUAL, TMP2, 0, SLJIT_IMM, 0)); + + if (!common->endonly) + compile_char1_matchingpath(common, OP_EODN, cc, backtracks); + else + { + add_jump(compiler, backtracks, CMP(SLJIT_C_LESS, STR_PTR, 0, STR_END, 0)); + check_partial(common, FALSE); + } + return cc; + + case OP_DOLLM: + jump[1] = CMP(SLJIT_C_LESS, STR_PTR, 0, STR_END, 0); + OP1(SLJIT_MOV, TMP2, 0, ARGUMENTS, 0); + OP1(SLJIT_MOV_UB, TMP2, 0, SLJIT_MEM1(TMP2), SLJIT_OFFSETOF(jit_arguments, noteol)); + add_jump(compiler, backtracks, CMP(SLJIT_C_NOT_EQUAL, TMP2, 0, SLJIT_IMM, 0)); + check_partial(common, FALSE); + jump[0] = JUMP(SLJIT_JUMP); + JUMPHERE(jump[1]); + + if (common->nltype == NLTYPE_FIXED && common->newline > 255) + { + OP2(SLJIT_ADD, TMP2, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(2)); + OP1(MOV_UCHAR, TMP1, 0, SLJIT_MEM1(STR_PTR), IN_UCHARS(0)); + if (common->mode == JIT_COMPILE) + add_jump(compiler, backtracks, CMP(SLJIT_C_GREATER, TMP2, 0, STR_END, 0)); + else + { + jump[1] = CMP(SLJIT_C_LESS_EQUAL, TMP2, 0, STR_END, 0); + /* STR_PTR = STR_END - IN_UCHARS(1) */ + add_jump(compiler, backtracks, CMP(SLJIT_C_NOT_EQUAL, TMP1, 0, SLJIT_IMM, (common->newline >> 8) & 0xff)); + check_partial(common, TRUE); + add_jump(compiler, backtracks, JUMP(SLJIT_JUMP)); + JUMPHERE(jump[1]); + } + + OP1(MOV_UCHAR, TMP2, 0, SLJIT_MEM1(STR_PTR), IN_UCHARS(1)); + add_jump(compiler, backtracks, CMP(SLJIT_C_NOT_EQUAL, TMP1, 0, SLJIT_IMM, (common->newline >> 8) & 0xff)); + add_jump(compiler, backtracks, CMP(SLJIT_C_NOT_EQUAL, TMP2, 0, SLJIT_IMM, common->newline & 0xff)); + } + else + { + peek_char(common, common->nlmax); + check_newlinechar(common, common->nltype, backtracks, FALSE); + } + JUMPHERE(jump[0]); + return cc; + + case OP_CHAR: + case OP_CHARI: + length = 1; +#ifdef SUPPORT_UTF + if (common->utf && HAS_EXTRALEN(*cc)) length += GET_EXTRALEN(*cc); +#endif + if (common->mode == JIT_COMPILE && (type == OP_CHAR || !char_has_othercase(common, cc) || char_get_othercase_bit(common, cc) != 0)) + { + OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(length)); + add_jump(compiler, backtracks, CMP(SLJIT_C_GREATER, STR_PTR, 0, STR_END, 0)); + + context.length = IN_UCHARS(length); + context.sourcereg = -1; +#if defined SLJIT_UNALIGNED && SLJIT_UNALIGNED + context.ucharptr = 0; +#endif + return byte_sequence_compare(common, type == OP_CHARI, cc, &context, backtracks); + } + + detect_partial_match(common, backtracks); +#ifdef SUPPORT_UTF + if (common->utf) + { + GETCHAR(c, cc); + } + else +#endif + c = *cc; + + if (type == OP_CHAR || !char_has_othercase(common, cc)) + { + read_char_range(common, c, c, FALSE); + add_jump(compiler, backtracks, CMP(SLJIT_C_NOT_EQUAL, TMP1, 0, SLJIT_IMM, c)); + return cc + length; + } + oc = char_othercase(common, c); + read_char_range(common, c < oc ? c : oc, c > oc ? c : oc, FALSE); + bit = c ^ oc; + if (is_powerof2(bit)) + { + OP2(SLJIT_OR, TMP1, 0, TMP1, 0, SLJIT_IMM, bit); + add_jump(compiler, backtracks, CMP(SLJIT_C_NOT_EQUAL, TMP1, 0, SLJIT_IMM, c | bit)); + return cc + length; + } + jump[0] = CMP(SLJIT_C_EQUAL, TMP1, 0, SLJIT_IMM, c); + add_jump(compiler, backtracks, CMP(SLJIT_C_NOT_EQUAL, TMP1, 0, SLJIT_IMM, oc)); + JUMPHERE(jump[0]); + return cc + length; + + case OP_NOT: + case OP_NOTI: + detect_partial_match(common, backtracks); + length = 1; +#ifdef SUPPORT_UTF + if (common->utf) + { +#ifdef COMPILE_PCRE8 + c = *cc; + if (c < 128) + { + OP1(SLJIT_MOV_UB, TMP1, 0, SLJIT_MEM1(STR_PTR), 0); + if (type == OP_NOT || !char_has_othercase(common, cc)) + add_jump(compiler, backtracks, CMP(SLJIT_C_EQUAL, TMP1, 0, SLJIT_IMM, c)); + else + { + /* Since UTF8 code page is fixed, we know that c is in [a-z] or [A-Z] range. */ + OP2(SLJIT_OR, TMP2, 0, TMP1, 0, SLJIT_IMM, 0x20); + add_jump(compiler, backtracks, CMP(SLJIT_C_EQUAL, TMP2, 0, SLJIT_IMM, c | 0x20)); + } + /* Skip the variable-length character. */ + OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(1)); + jump[0] = CMP(SLJIT_C_LESS, TMP1, 0, SLJIT_IMM, 0xc0); + OP1(MOV_UCHAR, TMP1, 0, SLJIT_MEM1(TMP1), (sljit_sw)PRIV(utf8_table4) - 0xc0); + OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, TMP1, 0); + JUMPHERE(jump[0]); + return cc + 1; + } + else +#endif /* COMPILE_PCRE8 */ + { + GETCHARLEN(c, cc, length); + } + } + else +#endif /* SUPPORT_UTF */ + c = *cc; + + if (type == OP_NOT || !char_has_othercase(common, cc)) + { + read_char_range(common, c, c, TRUE); + add_jump(compiler, backtracks, CMP(SLJIT_C_EQUAL, TMP1, 0, SLJIT_IMM, c)); + } + else + { + oc = char_othercase(common, c); + read_char_range(common, c < oc ? c : oc, c > oc ? c : oc, TRUE); + bit = c ^ oc; + if (is_powerof2(bit)) + { + OP2(SLJIT_OR, TMP1, 0, TMP1, 0, SLJIT_IMM, bit); + add_jump(compiler, backtracks, CMP(SLJIT_C_EQUAL, TMP1, 0, SLJIT_IMM, c | bit)); + } + else + { + add_jump(compiler, backtracks, CMP(SLJIT_C_EQUAL, TMP1, 0, SLJIT_IMM, c)); + add_jump(compiler, backtracks, CMP(SLJIT_C_EQUAL, TMP1, 0, SLJIT_IMM, oc)); + } + } + return cc + length; + + case OP_CLASS: + case OP_NCLASS: + detect_partial_match(common, backtracks); + +#if defined SUPPORT_UTF && defined COMPILE_PCRE8 + bit = (common->utf && is_char7_bitset((const pcre_uint8 *)cc, type == OP_NCLASS)) ? 127 : 255; + read_char_range(common, 0, bit, type == OP_NCLASS); +#else + read_char_range(common, 0, 255, type == OP_NCLASS); +#endif + + if (check_class_ranges(common, (const pcre_uint8 *)cc, type == OP_NCLASS, FALSE, backtracks)) + return cc + 32 / sizeof(pcre_uchar); + +#if defined SUPPORT_UTF && defined COMPILE_PCRE8 + jump[0] = NULL; + if (common->utf) + { + jump[0] = CMP(SLJIT_C_GREATER, TMP1, 0, SLJIT_IMM, bit); + if (type == OP_CLASS) + { + add_jump(compiler, backtracks, jump[0]); + jump[0] = NULL; + } + } +#elif !defined COMPILE_PCRE8 + jump[0] = CMP(SLJIT_C_GREATER, TMP1, 0, SLJIT_IMM, 255); + if (type == OP_CLASS) + { + add_jump(compiler, backtracks, jump[0]); + jump[0] = NULL; + } +#endif /* SUPPORT_UTF && COMPILE_PCRE8 */ + + OP2(SLJIT_AND, TMP2, 0, TMP1, 0, SLJIT_IMM, 0x7); + OP2(SLJIT_LSHR, TMP1, 0, TMP1, 0, SLJIT_IMM, 3); + OP1(SLJIT_MOV_UB, TMP1, 0, SLJIT_MEM1(TMP1), (sljit_sw)cc); + OP2(SLJIT_SHL, TMP2, 0, SLJIT_IMM, 1, TMP2, 0); + OP2(SLJIT_AND | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, TMP2, 0); + add_jump(compiler, backtracks, JUMP(SLJIT_C_ZERO)); + +#if defined SUPPORT_UTF || !defined COMPILE_PCRE8 + if (jump[0] != NULL) + JUMPHERE(jump[0]); +#endif + + return cc + 32 / sizeof(pcre_uchar); + +#if defined SUPPORT_UTF || defined COMPILE_PCRE16 || defined COMPILE_PCRE32 + case OP_XCLASS: + compile_xclass_matchingpath(common, cc + LINK_SIZE, backtracks); + return cc + GET(cc, 0) - 1; +#endif + + case OP_REVERSE: + length = GET(cc, 0); + if (length == 0) + return cc + LINK_SIZE; + OP1(SLJIT_MOV, TMP1, 0, ARGUMENTS, 0); +#ifdef SUPPORT_UTF + if (common->utf) + { + OP1(SLJIT_MOV, TMP3, 0, SLJIT_MEM1(TMP1), SLJIT_OFFSETOF(jit_arguments, begin)); + OP1(SLJIT_MOV, TMP2, 0, SLJIT_IMM, length); + label = LABEL(); + add_jump(compiler, backtracks, CMP(SLJIT_C_LESS_EQUAL, STR_PTR, 0, TMP3, 0)); + skip_char_back(common); + OP2(SLJIT_SUB | SLJIT_SET_E, TMP2, 0, TMP2, 0, SLJIT_IMM, 1); + JUMPTO(SLJIT_C_NOT_ZERO, label); + } + else +#endif + { + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(TMP1), SLJIT_OFFSETOF(jit_arguments, begin)); + OP2(SLJIT_SUB, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(length)); + add_jump(compiler, backtracks, CMP(SLJIT_C_LESS, STR_PTR, 0, TMP1, 0)); + } + check_start_used_ptr(common); + return cc + LINK_SIZE; + } +SLJIT_ASSERT_STOP(); +return cc; +} + +static SLJIT_INLINE pcre_uchar *compile_charn_matchingpath(compiler_common *common, pcre_uchar *cc, pcre_uchar *ccend, jump_list **backtracks) +{ +/* This function consumes at least one input character. */ +/* To decrease the number of length checks, we try to concatenate the fixed length character sequences. */ +DEFINE_COMPILER; +pcre_uchar *ccbegin = cc; +compare_context context; +int size; + +context.length = 0; +do + { + if (cc >= ccend) + break; + + if (*cc == OP_CHAR) + { + size = 1; +#ifdef SUPPORT_UTF + if (common->utf && HAS_EXTRALEN(cc[1])) + size += GET_EXTRALEN(cc[1]); +#endif + } + else if (*cc == OP_CHARI) + { + size = 1; +#ifdef SUPPORT_UTF + if (common->utf) + { + if (char_has_othercase(common, cc + 1) && char_get_othercase_bit(common, cc + 1) == 0) + size = 0; + else if (HAS_EXTRALEN(cc[1])) + size += GET_EXTRALEN(cc[1]); + } + else +#endif + if (char_has_othercase(common, cc + 1) && char_get_othercase_bit(common, cc + 1) == 0) + size = 0; + } + else + size = 0; + + cc += 1 + size; + context.length += IN_UCHARS(size); + } +while (size > 0 && context.length <= 128); + +cc = ccbegin; +if (context.length > 0) + { + /* We have a fixed-length byte sequence. */ + OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, context.length); + add_jump(compiler, backtracks, CMP(SLJIT_C_GREATER, STR_PTR, 0, STR_END, 0)); + + context.sourcereg = -1; +#if defined SLJIT_UNALIGNED && SLJIT_UNALIGNED + context.ucharptr = 0; +#endif + do cc = byte_sequence_compare(common, *cc == OP_CHARI, cc + 1, &context, backtracks); while (context.length > 0); + return cc; + } + +/* A non-fixed length character will be checked if length == 0. */ +return compile_char1_matchingpath(common, *cc, cc + 1, backtracks); +} + +/* Forward definitions. */ +static void compile_matchingpath(compiler_common *, pcre_uchar *, pcre_uchar *, backtrack_common *); +static void compile_backtrackingpath(compiler_common *, struct backtrack_common *); + +#define PUSH_BACKTRACK(size, ccstart, error) \ + do \ + { \ + backtrack = sljit_alloc_memory(compiler, (size)); \ + if (SLJIT_UNLIKELY(sljit_get_compiler_error(compiler))) \ + return error; \ + memset(backtrack, 0, size); \ + backtrack->prev = parent->top; \ + backtrack->cc = (ccstart); \ + parent->top = backtrack; \ + } \ + while (0) + +#define PUSH_BACKTRACK_NOVALUE(size, ccstart) \ + do \ + { \ + backtrack = sljit_alloc_memory(compiler, (size)); \ + if (SLJIT_UNLIKELY(sljit_get_compiler_error(compiler))) \ + return; \ + memset(backtrack, 0, size); \ + backtrack->prev = parent->top; \ + backtrack->cc = (ccstart); \ + parent->top = backtrack; \ + } \ + while (0) + +#define BACKTRACK_AS(type) ((type *)backtrack) + +static void compile_dnref_search(compiler_common *common, pcre_uchar *cc, jump_list **backtracks) +{ +/* The OVECTOR offset goes to TMP2. */ +DEFINE_COMPILER; +int count = GET2(cc, 1 + IMM2_SIZE); +pcre_uchar *slot = common->name_table + GET2(cc, 1) * common->name_entry_size; +unsigned int offset; +jump_list *found = NULL; + +SLJIT_ASSERT(*cc == OP_DNREF || *cc == OP_DNREFI); + +OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(1)); + +count--; +while (count-- > 0) + { + offset = GET2(slot, 0) << 1; + GET_LOCAL_BASE(TMP2, 0, OVECTOR(offset)); + add_jump(compiler, &found, CMP(SLJIT_C_NOT_EQUAL, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(offset), TMP1, 0)); + slot += common->name_entry_size; + } + +offset = GET2(slot, 0) << 1; +GET_LOCAL_BASE(TMP2, 0, OVECTOR(offset)); +if (backtracks != NULL && !common->jscript_compat) + add_jump(compiler, backtracks, CMP(SLJIT_C_EQUAL, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(offset), TMP1, 0)); + +set_jumps(found, LABEL()); +} + +static void compile_ref_matchingpath(compiler_common *common, pcre_uchar *cc, jump_list **backtracks, BOOL withchecks, BOOL emptyfail) +{ +DEFINE_COMPILER; +BOOL ref = (*cc == OP_REF || *cc == OP_REFI); +int offset = 0; +struct sljit_jump *jump = NULL; +struct sljit_jump *partial; +struct sljit_jump *nopartial; + +if (ref) + { + offset = GET2(cc, 1) << 1; + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(offset)); + /* OVECTOR(1) contains the "string begin - 1" constant. */ + if (withchecks && !common->jscript_compat) + add_jump(compiler, backtracks, CMP(SLJIT_C_EQUAL, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(1))); + } +else + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(TMP2), 0); + +#if defined SUPPORT_UTF && defined SUPPORT_UCP +if (common->utf && *cc == OP_REFI) + { + SLJIT_ASSERT(TMP1 == SLJIT_SCRATCH_REG1 && STACK_TOP == SLJIT_SCRATCH_REG2 && TMP2 == SLJIT_SCRATCH_REG3); + if (ref) + OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(offset + 1)); + else + OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(TMP2), sizeof(sljit_sw)); + + if (withchecks) + jump = CMP(SLJIT_C_EQUAL, TMP1, 0, TMP2, 0); + + /* Needed to save important temporary registers. */ + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), LOCALS0, STACK_TOP, 0); + OP1(SLJIT_MOV, SLJIT_SCRATCH_REG2, 0, ARGUMENTS, 0); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_SCRATCH_REG2), SLJIT_OFFSETOF(jit_arguments, uchar_ptr), STR_PTR, 0); + sljit_emit_ijump(compiler, SLJIT_CALL3, SLJIT_IMM, SLJIT_FUNC_OFFSET(do_utf_caselesscmp)); + OP1(SLJIT_MOV, STACK_TOP, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), LOCALS0); + if (common->mode == JIT_COMPILE) + add_jump(compiler, backtracks, CMP(SLJIT_C_LESS_EQUAL, SLJIT_RETURN_REG, 0, SLJIT_IMM, 1)); + else + { + add_jump(compiler, backtracks, CMP(SLJIT_C_EQUAL, SLJIT_RETURN_REG, 0, SLJIT_IMM, 0)); + nopartial = CMP(SLJIT_C_NOT_EQUAL, SLJIT_RETURN_REG, 0, SLJIT_IMM, 1); + check_partial(common, FALSE); + add_jump(compiler, backtracks, JUMP(SLJIT_JUMP)); + JUMPHERE(nopartial); + } + OP1(SLJIT_MOV, STR_PTR, 0, SLJIT_RETURN_REG, 0); + } +else +#endif /* SUPPORT_UTF && SUPPORT_UCP */ + { + if (ref) + OP2(SLJIT_SUB | SLJIT_SET_E, TMP2, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(offset + 1), TMP1, 0); + else + OP2(SLJIT_SUB | SLJIT_SET_E, TMP2, 0, SLJIT_MEM1(TMP2), sizeof(sljit_sw), TMP1, 0); + + if (withchecks) + jump = JUMP(SLJIT_C_ZERO); + + OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, TMP2, 0); + partial = CMP(SLJIT_C_GREATER, STR_PTR, 0, STR_END, 0); + if (common->mode == JIT_COMPILE) + add_jump(compiler, backtracks, partial); + + add_jump(compiler, *cc == OP_REF ? &common->casefulcmp : &common->caselesscmp, JUMP(SLJIT_FAST_CALL)); + add_jump(compiler, backtracks, CMP(SLJIT_C_NOT_EQUAL, TMP2, 0, SLJIT_IMM, 0)); + + if (common->mode != JIT_COMPILE) + { + nopartial = JUMP(SLJIT_JUMP); + JUMPHERE(partial); + /* TMP2 -= STR_END - STR_PTR */ + OP2(SLJIT_SUB, TMP2, 0, TMP2, 0, STR_PTR, 0); + OP2(SLJIT_ADD, TMP2, 0, TMP2, 0, STR_END, 0); + partial = CMP(SLJIT_C_EQUAL, TMP2, 0, SLJIT_IMM, 0); + OP1(SLJIT_MOV, STR_PTR, 0, STR_END, 0); + add_jump(compiler, *cc == OP_REF ? &common->casefulcmp : &common->caselesscmp, JUMP(SLJIT_FAST_CALL)); + add_jump(compiler, backtracks, CMP(SLJIT_C_NOT_EQUAL, TMP2, 0, SLJIT_IMM, 0)); + JUMPHERE(partial); + check_partial(common, FALSE); + add_jump(compiler, backtracks, JUMP(SLJIT_JUMP)); + JUMPHERE(nopartial); + } + } + +if (jump != NULL) + { + if (emptyfail) + add_jump(compiler, backtracks, jump); + else + JUMPHERE(jump); + } +} + +static SLJIT_INLINE pcre_uchar *compile_ref_iterator_matchingpath(compiler_common *common, pcre_uchar *cc, backtrack_common *parent) +{ +DEFINE_COMPILER; +BOOL ref = (*cc == OP_REF || *cc == OP_REFI); +backtrack_common *backtrack; +pcre_uchar type; +int offset = 0; +struct sljit_label *label; +struct sljit_jump *zerolength; +struct sljit_jump *jump = NULL; +pcre_uchar *ccbegin = cc; +int min = 0, max = 0; +BOOL minimize; + +PUSH_BACKTRACK(sizeof(iterator_backtrack), cc, NULL); + +if (ref) + offset = GET2(cc, 1) << 1; +else + cc += IMM2_SIZE; +type = cc[1 + IMM2_SIZE]; + +SLJIT_COMPILE_ASSERT((OP_CRSTAR & 0x1) == 0, crstar_opcode_must_be_even); +minimize = (type & 0x1) != 0; +switch(type) + { + case OP_CRSTAR: + case OP_CRMINSTAR: + min = 0; + max = 0; + cc += 1 + IMM2_SIZE + 1; + break; + case OP_CRPLUS: + case OP_CRMINPLUS: + min = 1; + max = 0; + cc += 1 + IMM2_SIZE + 1; + break; + case OP_CRQUERY: + case OP_CRMINQUERY: + min = 0; + max = 1; + cc += 1 + IMM2_SIZE + 1; + break; + case OP_CRRANGE: + case OP_CRMINRANGE: + min = GET2(cc, 1 + IMM2_SIZE + 1); + max = GET2(cc, 1 + IMM2_SIZE + 1 + IMM2_SIZE); + cc += 1 + IMM2_SIZE + 1 + 2 * IMM2_SIZE; + break; + default: + SLJIT_ASSERT_STOP(); + break; + } + +if (!minimize) + { + if (min == 0) + { + allocate_stack(common, 2); + if (ref) + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(offset)); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(0), STR_PTR, 0); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(1), SLJIT_IMM, 0); + /* Temporary release of STR_PTR. */ + OP2(SLJIT_SUB, STACK_TOP, 0, STACK_TOP, 0, SLJIT_IMM, sizeof(sljit_sw)); + /* Handles both invalid and empty cases. Since the minimum repeat, + is zero the invalid case is basically the same as an empty case. */ + if (ref) + zerolength = CMP(SLJIT_C_EQUAL, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(offset + 1)); + else + { + compile_dnref_search(common, ccbegin, NULL); + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(TMP2), 0); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), POSSESSIVE1, TMP2, 0); + zerolength = CMP(SLJIT_C_EQUAL, TMP1, 0, SLJIT_MEM1(TMP2), sizeof(sljit_sw)); + } + /* Restore if not zero length. */ + OP2(SLJIT_ADD, STACK_TOP, 0, STACK_TOP, 0, SLJIT_IMM, sizeof(sljit_sw)); + } + else + { + allocate_stack(common, 1); + if (ref) + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(offset)); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(0), SLJIT_IMM, 0); + if (ref) + { + add_jump(compiler, &backtrack->topbacktracks, CMP(SLJIT_C_EQUAL, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(1))); + zerolength = CMP(SLJIT_C_EQUAL, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(offset + 1)); + } + else + { + compile_dnref_search(common, ccbegin, &backtrack->topbacktracks); + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(TMP2), 0); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), POSSESSIVE1, TMP2, 0); + zerolength = CMP(SLJIT_C_EQUAL, TMP1, 0, SLJIT_MEM1(TMP2), sizeof(sljit_sw)); + } + } + + if (min > 1 || max > 1) + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), POSSESSIVE0, SLJIT_IMM, 0); + + label = LABEL(); + if (!ref) + OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), POSSESSIVE1); + compile_ref_matchingpath(common, ccbegin, &backtrack->topbacktracks, FALSE, FALSE); + + if (min > 1 || max > 1) + { + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), POSSESSIVE0); + OP2(SLJIT_ADD, TMP1, 0, TMP1, 0, SLJIT_IMM, 1); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), POSSESSIVE0, TMP1, 0); + if (min > 1) + CMPTO(SLJIT_C_LESS, TMP1, 0, SLJIT_IMM, min, label); + if (max > 1) + { + jump = CMP(SLJIT_C_GREATER_EQUAL, TMP1, 0, SLJIT_IMM, max); + allocate_stack(common, 1); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(0), STR_PTR, 0); + JUMPTO(SLJIT_JUMP, label); + JUMPHERE(jump); + } + } + + if (max == 0) + { + /* Includes min > 1 case as well. */ + allocate_stack(common, 1); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(0), STR_PTR, 0); + JUMPTO(SLJIT_JUMP, label); + } + + JUMPHERE(zerolength); + BACKTRACK_AS(iterator_backtrack)->matchingpath = LABEL(); + + count_match(common); + return cc; + } + +allocate_stack(common, ref ? 2 : 3); +if (ref) + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(offset)); +OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(0), SLJIT_IMM, 0); +if (type != OP_CRMINSTAR) + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(1), SLJIT_IMM, 0); + +if (min == 0) + { + /* Handles both invalid and empty cases. Since the minimum repeat, + is zero the invalid case is basically the same as an empty case. */ + if (ref) + zerolength = CMP(SLJIT_C_EQUAL, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(offset + 1)); + else + { + compile_dnref_search(common, ccbegin, NULL); + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(TMP2), 0); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(2), TMP2, 0); + zerolength = CMP(SLJIT_C_EQUAL, TMP1, 0, SLJIT_MEM1(TMP2), sizeof(sljit_sw)); + } + /* Length is non-zero, we can match real repeats. */ + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(0), STR_PTR, 0); + jump = JUMP(SLJIT_JUMP); + } +else + { + if (ref) + { + add_jump(compiler, &backtrack->topbacktracks, CMP(SLJIT_C_EQUAL, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(1))); + zerolength = CMP(SLJIT_C_EQUAL, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(offset + 1)); + } + else + { + compile_dnref_search(common, ccbegin, &backtrack->topbacktracks); + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(TMP2), 0); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(2), TMP2, 0); + zerolength = CMP(SLJIT_C_EQUAL, TMP1, 0, SLJIT_MEM1(TMP2), sizeof(sljit_sw)); + } + } + +BACKTRACK_AS(iterator_backtrack)->matchingpath = LABEL(); +if (max > 0) + add_jump(compiler, &backtrack->topbacktracks, CMP(SLJIT_C_GREATER_EQUAL, SLJIT_MEM1(STACK_TOP), STACK(1), SLJIT_IMM, max)); + +if (!ref) + OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(STACK_TOP), STACK(2)); +compile_ref_matchingpath(common, ccbegin, &backtrack->topbacktracks, TRUE, TRUE); +OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(0), STR_PTR, 0); + +if (min > 1) + { + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(STACK_TOP), STACK(1)); + OP2(SLJIT_ADD, TMP1, 0, TMP1, 0, SLJIT_IMM, 1); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(1), TMP1, 0); + CMPTO(SLJIT_C_LESS, TMP1, 0, SLJIT_IMM, min, BACKTRACK_AS(iterator_backtrack)->matchingpath); + } +else if (max > 0) + OP2(SLJIT_ADD, SLJIT_MEM1(STACK_TOP), STACK(1), SLJIT_MEM1(STACK_TOP), STACK(1), SLJIT_IMM, 1); + +if (jump != NULL) + JUMPHERE(jump); +JUMPHERE(zerolength); + +count_match(common); +return cc; +} + +static SLJIT_INLINE pcre_uchar *compile_recurse_matchingpath(compiler_common *common, pcre_uchar *cc, backtrack_common *parent) +{ +DEFINE_COMPILER; +backtrack_common *backtrack; +recurse_entry *entry = common->entries; +recurse_entry *prev = NULL; +sljit_sw start = GET(cc, 1); +pcre_uchar *start_cc; +BOOL needs_control_head; + +PUSH_BACKTRACK(sizeof(recurse_backtrack), cc, NULL); + +/* Inlining simple patterns. */ +if (get_framesize(common, common->start + start, NULL, TRUE, &needs_control_head) == no_stack) + { + start_cc = common->start + start; + compile_matchingpath(common, next_opcode(common, start_cc), bracketend(start_cc) - (1 + LINK_SIZE), backtrack); + BACKTRACK_AS(recurse_backtrack)->inlined_pattern = TRUE; + return cc + 1 + LINK_SIZE; + } + +while (entry != NULL) + { + if (entry->start == start) + break; + prev = entry; + entry = entry->next; + } + +if (entry == NULL) + { + entry = sljit_alloc_memory(compiler, sizeof(recurse_entry)); + if (SLJIT_UNLIKELY(sljit_get_compiler_error(compiler))) + return NULL; + entry->next = NULL; + entry->entry = NULL; + entry->calls = NULL; + entry->start = start; + + if (prev != NULL) + prev->next = entry; + else + common->entries = entry; + } + +if (common->has_set_som && common->mark_ptr != 0) + { + OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(0)); + allocate_stack(common, 2); + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), common->mark_ptr); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(0), TMP2, 0); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(1), TMP1, 0); + } +else if (common->has_set_som || common->mark_ptr != 0) + { + OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), common->has_set_som ? (int)(OVECTOR(0)) : common->mark_ptr); + allocate_stack(common, 1); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(0), TMP2, 0); + } + +if (entry->entry == NULL) + add_jump(compiler, &entry->calls, JUMP(SLJIT_FAST_CALL)); +else + JUMPTO(SLJIT_FAST_CALL, entry->entry); +/* Leave if the match is failed. */ +add_jump(compiler, &backtrack->topbacktracks, CMP(SLJIT_C_EQUAL, TMP1, 0, SLJIT_IMM, 0)); +return cc + 1 + LINK_SIZE; +} + +static int SLJIT_CALL do_callout(struct jit_arguments* arguments, PUBL(callout_block) *callout_block, pcre_uchar **jit_ovector) +{ +const pcre_uchar *begin = arguments->begin; +int *offset_vector = arguments->offsets; +int offset_count = arguments->offset_count; +int i; + +if (PUBL(callout) == NULL) + return 0; + +callout_block->version = 2; +callout_block->callout_data = arguments->callout_data; + +/* Offsets in subject. */ +callout_block->subject_length = arguments->end - arguments->begin; +callout_block->start_match = (pcre_uchar*)callout_block->subject - arguments->begin; +callout_block->current_position = (pcre_uchar*)callout_block->offset_vector - arguments->begin; +#if defined COMPILE_PCRE8 +callout_block->subject = (PCRE_SPTR)begin; +#elif defined COMPILE_PCRE16 +callout_block->subject = (PCRE_SPTR16)begin; +#elif defined COMPILE_PCRE32 +callout_block->subject = (PCRE_SPTR32)begin; +#endif + +/* Convert and copy the JIT offset vector to the offset_vector array. */ +callout_block->capture_top = 0; +callout_block->offset_vector = offset_vector; +for (i = 2; i < offset_count; i += 2) + { + offset_vector[i] = jit_ovector[i] - begin; + offset_vector[i + 1] = jit_ovector[i + 1] - begin; + if (jit_ovector[i] >= begin) + callout_block->capture_top = i; + } + +callout_block->capture_top = (callout_block->capture_top >> 1) + 1; +if (offset_count > 0) + offset_vector[0] = -1; +if (offset_count > 1) + offset_vector[1] = -1; +return (*PUBL(callout))(callout_block); +} + +/* Aligning to 8 byte. */ +#define CALLOUT_ARG_SIZE \ + (((int)sizeof(PUBL(callout_block)) + 7) & ~7) + +#define CALLOUT_ARG_OFFSET(arg) \ + (-CALLOUT_ARG_SIZE + SLJIT_OFFSETOF(PUBL(callout_block), arg)) + +static SLJIT_INLINE pcre_uchar *compile_callout_matchingpath(compiler_common *common, pcre_uchar *cc, backtrack_common *parent) +{ +DEFINE_COMPILER; +backtrack_common *backtrack; + +PUSH_BACKTRACK(sizeof(backtrack_common), cc, NULL); + +allocate_stack(common, CALLOUT_ARG_SIZE / sizeof(sljit_sw)); + +OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), common->capture_last_ptr); +OP1(SLJIT_MOV, TMP1, 0, ARGUMENTS, 0); +SLJIT_ASSERT(common->capture_last_ptr != 0); +OP1(SLJIT_MOV_SI, SLJIT_MEM1(STACK_TOP), CALLOUT_ARG_OFFSET(callout_number), SLJIT_IMM, cc[1]); +OP1(SLJIT_MOV_SI, SLJIT_MEM1(STACK_TOP), CALLOUT_ARG_OFFSET(capture_last), TMP2, 0); + +/* These pointer sized fields temporarly stores internal variables. */ +OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(0)); +OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), CALLOUT_ARG_OFFSET(offset_vector), STR_PTR, 0); +OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), CALLOUT_ARG_OFFSET(subject), TMP2, 0); + +if (common->mark_ptr != 0) + OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(TMP1), SLJIT_OFFSETOF(jit_arguments, mark_ptr)); +OP1(SLJIT_MOV_SI, SLJIT_MEM1(STACK_TOP), CALLOUT_ARG_OFFSET(pattern_position), SLJIT_IMM, GET(cc, 2)); +OP1(SLJIT_MOV_SI, SLJIT_MEM1(STACK_TOP), CALLOUT_ARG_OFFSET(next_item_length), SLJIT_IMM, GET(cc, 2 + LINK_SIZE)); +OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), CALLOUT_ARG_OFFSET(mark), (common->mark_ptr != 0) ? TMP2 : SLJIT_IMM, 0); + +/* Needed to save important temporary registers. */ +OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), LOCALS0, STACK_TOP, 0); +OP2(SLJIT_SUB, SLJIT_SCRATCH_REG2, 0, STACK_TOP, 0, SLJIT_IMM, CALLOUT_ARG_SIZE); +GET_LOCAL_BASE(SLJIT_SCRATCH_REG3, 0, OVECTOR_START); +sljit_emit_ijump(compiler, SLJIT_CALL3, SLJIT_IMM, SLJIT_FUNC_OFFSET(do_callout)); +OP1(SLJIT_MOV_SI, SLJIT_RETURN_REG, 0, SLJIT_RETURN_REG, 0); +OP1(SLJIT_MOV, STACK_TOP, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), LOCALS0); +free_stack(common, CALLOUT_ARG_SIZE / sizeof(sljit_sw)); + +/* Check return value. */ +OP2(SLJIT_SUB | SLJIT_SET_S, SLJIT_UNUSED, 0, SLJIT_RETURN_REG, 0, SLJIT_IMM, 0); +add_jump(compiler, &backtrack->topbacktracks, JUMP(SLJIT_C_SIG_GREATER)); +if (common->forced_quit_label == NULL) + add_jump(compiler, &common->forced_quit, JUMP(SLJIT_C_SIG_LESS)); +else + JUMPTO(SLJIT_C_SIG_LESS, common->forced_quit_label); +return cc + 2 + 2 * LINK_SIZE; +} + +#undef CALLOUT_ARG_SIZE +#undef CALLOUT_ARG_OFFSET + +static pcre_uchar *compile_assert_matchingpath(compiler_common *common, pcre_uchar *cc, assert_backtrack *backtrack, BOOL conditional) +{ +DEFINE_COMPILER; +int framesize; +int extrasize; +BOOL needs_control_head; +int private_data_ptr; +backtrack_common altbacktrack; +pcre_uchar *ccbegin; +pcre_uchar opcode; +pcre_uchar bra = OP_BRA; +jump_list *tmp = NULL; +jump_list **target = (conditional) ? &backtrack->condfailed : &backtrack->common.topbacktracks; +jump_list **found; +/* Saving previous accept variables. */ +BOOL save_local_exit = common->local_exit; +BOOL save_positive_assert = common->positive_assert; +then_trap_backtrack *save_then_trap = common->then_trap; +struct sljit_label *save_quit_label = common->quit_label; +struct sljit_label *save_accept_label = common->accept_label; +jump_list *save_quit = common->quit; +jump_list *save_positive_assert_quit = common->positive_assert_quit; +jump_list *save_accept = common->accept; +struct sljit_jump *jump; +struct sljit_jump *brajump = NULL; + +/* Assert captures then. */ +common->then_trap = NULL; + +if (*cc == OP_BRAZERO || *cc == OP_BRAMINZERO) + { + SLJIT_ASSERT(!conditional); + bra = *cc; + cc++; + } +private_data_ptr = PRIVATE_DATA(cc); +SLJIT_ASSERT(private_data_ptr != 0); +framesize = get_framesize(common, cc, NULL, FALSE, &needs_control_head); +backtrack->framesize = framesize; +backtrack->private_data_ptr = private_data_ptr; +opcode = *cc; +SLJIT_ASSERT(opcode >= OP_ASSERT && opcode <= OP_ASSERTBACK_NOT); +found = (opcode == OP_ASSERT || opcode == OP_ASSERTBACK) ? &tmp : target; +ccbegin = cc; +cc += GET(cc, 1); + +if (bra == OP_BRAMINZERO) + { + /* This is a braminzero backtrack path. */ + OP1(SLJIT_MOV, STR_PTR, 0, SLJIT_MEM1(STACK_TOP), STACK(0)); + free_stack(common, 1); + brajump = CMP(SLJIT_C_EQUAL, STR_PTR, 0, SLJIT_IMM, 0); + } + +if (framesize < 0) + { + extrasize = needs_control_head ? 2 : 1; + if (framesize == no_frame) + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr, STACK_TOP, 0); + allocate_stack(common, extrasize); + if (needs_control_head) + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), common->control_head_ptr); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(0), STR_PTR, 0); + if (needs_control_head) + { + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), common->control_head_ptr, SLJIT_IMM, 0); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(1), TMP1, 0); + } + } +else + { + extrasize = needs_control_head ? 3 : 2; + allocate_stack(common, framesize + extrasize); + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr); + OP2(SLJIT_SUB, TMP2, 0, STACK_TOP, 0, SLJIT_IMM, (framesize + extrasize) * sizeof(sljit_sw)); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr, TMP2, 0); + if (needs_control_head) + OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), common->control_head_ptr); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(0), STR_PTR, 0); + if (needs_control_head) + { + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(2), TMP1, 0); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(1), TMP2, 0); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), common->control_head_ptr, SLJIT_IMM, 0); + } + else + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(1), TMP1, 0); + init_frame(common, ccbegin, NULL, framesize + extrasize - 1, extrasize, FALSE); + } + +memset(&altbacktrack, 0, sizeof(backtrack_common)); +if (opcode == OP_ASSERT_NOT || opcode == OP_ASSERTBACK_NOT) + { + /* Negative assert is stronger than positive assert. */ + common->local_exit = TRUE; + common->quit_label = NULL; + common->quit = NULL; + common->positive_assert = FALSE; + } +else + common->positive_assert = TRUE; +common->positive_assert_quit = NULL; + +while (1) + { + common->accept_label = NULL; + common->accept = NULL; + altbacktrack.top = NULL; + altbacktrack.topbacktracks = NULL; + + if (*ccbegin == OP_ALT) + OP1(SLJIT_MOV, STR_PTR, 0, SLJIT_MEM1(STACK_TOP), STACK(0)); + + altbacktrack.cc = ccbegin; + compile_matchingpath(common, ccbegin + 1 + LINK_SIZE, cc, &altbacktrack); + if (SLJIT_UNLIKELY(sljit_get_compiler_error(compiler))) + { + if (opcode == OP_ASSERT_NOT || opcode == OP_ASSERTBACK_NOT) + { + common->local_exit = save_local_exit; + common->quit_label = save_quit_label; + common->quit = save_quit; + } + common->positive_assert = save_positive_assert; + common->then_trap = save_then_trap; + common->accept_label = save_accept_label; + common->positive_assert_quit = save_positive_assert_quit; + common->accept = save_accept; + return NULL; + } + common->accept_label = LABEL(); + if (common->accept != NULL) + set_jumps(common->accept, common->accept_label); + + /* Reset stack. */ + if (framesize < 0) + { + if (framesize == no_frame) + OP1(SLJIT_MOV, STACK_TOP, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr); + else + free_stack(common, extrasize); + if (needs_control_head) + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), common->control_head_ptr, SLJIT_MEM1(STACK_TOP), 0); + } + else + { + if ((opcode != OP_ASSERT_NOT && opcode != OP_ASSERTBACK_NOT) || conditional) + { + /* We don't need to keep the STR_PTR, only the previous private_data_ptr. */ + OP2(SLJIT_ADD, STACK_TOP, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr, SLJIT_IMM, (framesize + 1) * sizeof(sljit_sw)); + if (needs_control_head) + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), common->control_head_ptr, SLJIT_MEM1(STACK_TOP), 0); + } + else + { + OP1(SLJIT_MOV, STACK_TOP, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr); + if (needs_control_head) + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), common->control_head_ptr, SLJIT_MEM1(STACK_TOP), (framesize + 1) * sizeof(sljit_sw)); + add_jump(compiler, &common->revertframes, JUMP(SLJIT_FAST_CALL)); + } + } + + if (opcode == OP_ASSERT_NOT || opcode == OP_ASSERTBACK_NOT) + { + /* We know that STR_PTR was stored on the top of the stack. */ + if (conditional) + OP1(SLJIT_MOV, STR_PTR, 0, SLJIT_MEM1(STACK_TOP), needs_control_head ? sizeof(sljit_sw) : 0); + else if (bra == OP_BRAZERO) + { + if (framesize < 0) + OP1(SLJIT_MOV, STR_PTR, 0, SLJIT_MEM1(STACK_TOP), (extrasize - 1) * sizeof(sljit_sw)); + else + { + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(STACK_TOP), framesize * sizeof(sljit_sw)); + OP1(SLJIT_MOV, STR_PTR, 0, SLJIT_MEM1(STACK_TOP), (framesize + extrasize - 1) * sizeof(sljit_sw)); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr, TMP1, 0); + } + OP2(SLJIT_ADD, STACK_TOP, 0, STACK_TOP, 0, SLJIT_IMM, sizeof(sljit_sw)); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(0), SLJIT_IMM, 0); + } + else if (framesize >= 0) + { + /* For OP_BRA and OP_BRAMINZERO. */ + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr, SLJIT_MEM1(STACK_TOP), framesize * sizeof(sljit_sw)); + } + } + add_jump(compiler, found, JUMP(SLJIT_JUMP)); + + compile_backtrackingpath(common, altbacktrack.top); + if (SLJIT_UNLIKELY(sljit_get_compiler_error(compiler))) + { + if (opcode == OP_ASSERT_NOT || opcode == OP_ASSERTBACK_NOT) + { + common->local_exit = save_local_exit; + common->quit_label = save_quit_label; + common->quit = save_quit; + } + common->positive_assert = save_positive_assert; + common->then_trap = save_then_trap; + common->accept_label = save_accept_label; + common->positive_assert_quit = save_positive_assert_quit; + common->accept = save_accept; + return NULL; + } + set_jumps(altbacktrack.topbacktracks, LABEL()); + + if (*cc != OP_ALT) + break; + + ccbegin = cc; + cc += GET(cc, 1); + } + +if (opcode == OP_ASSERT_NOT || opcode == OP_ASSERTBACK_NOT) + { + SLJIT_ASSERT(common->positive_assert_quit == NULL); + /* Makes the check less complicated below. */ + common->positive_assert_quit = common->quit; + } + +/* None of them matched. */ +if (common->positive_assert_quit != NULL) + { + jump = JUMP(SLJIT_JUMP); + set_jumps(common->positive_assert_quit, LABEL()); + SLJIT_ASSERT(framesize != no_stack); + if (framesize < 0) + OP2(SLJIT_ADD, STACK_TOP, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr, SLJIT_IMM, extrasize * sizeof(sljit_sw)); + else + { + OP1(SLJIT_MOV, STACK_TOP, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr); + add_jump(compiler, &common->revertframes, JUMP(SLJIT_FAST_CALL)); + OP2(SLJIT_ADD, STACK_TOP, 0, STACK_TOP, 0, SLJIT_IMM, (framesize + extrasize) * sizeof(sljit_sw)); + } + JUMPHERE(jump); + } + +if (needs_control_head) + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), common->control_head_ptr, SLJIT_MEM1(STACK_TOP), STACK(1)); + +if (opcode == OP_ASSERT || opcode == OP_ASSERTBACK) + { + /* Assert is failed. */ + if (conditional || bra == OP_BRAZERO) + OP1(SLJIT_MOV, STR_PTR, 0, SLJIT_MEM1(STACK_TOP), STACK(0)); + + if (framesize < 0) + { + /* The topmost item should be 0. */ + if (bra == OP_BRAZERO) + { + if (extrasize == 2) + free_stack(common, 1); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(0), SLJIT_IMM, 0); + } + else + free_stack(common, extrasize); + } + else + { + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(STACK_TOP), STACK(extrasize - 1)); + /* The topmost item should be 0. */ + if (bra == OP_BRAZERO) + { + free_stack(common, framesize + extrasize - 1); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(0), SLJIT_IMM, 0); + } + else + free_stack(common, framesize + extrasize); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr, TMP1, 0); + } + jump = JUMP(SLJIT_JUMP); + if (bra != OP_BRAZERO) + add_jump(compiler, target, jump); + + /* Assert is successful. */ + set_jumps(tmp, LABEL()); + if (framesize < 0) + { + /* We know that STR_PTR was stored on the top of the stack. */ + OP1(SLJIT_MOV, STR_PTR, 0, SLJIT_MEM1(STACK_TOP), (extrasize - 1) * sizeof(sljit_sw)); + /* Keep the STR_PTR on the top of the stack. */ + if (bra == OP_BRAZERO) + { + OP2(SLJIT_ADD, STACK_TOP, 0, STACK_TOP, 0, SLJIT_IMM, sizeof(sljit_sw)); + if (extrasize == 2) + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(0), STR_PTR, 0); + } + else if (bra == OP_BRAMINZERO) + { + OP2(SLJIT_ADD, STACK_TOP, 0, STACK_TOP, 0, SLJIT_IMM, sizeof(sljit_sw)); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(0), SLJIT_IMM, 0); + } + } + else + { + if (bra == OP_BRA) + { + /* We don't need to keep the STR_PTR, only the previous private_data_ptr. */ + OP2(SLJIT_ADD, STACK_TOP, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr, SLJIT_IMM, (framesize + 1) * sizeof(sljit_sw)); + OP1(SLJIT_MOV, STR_PTR, 0, SLJIT_MEM1(STACK_TOP), (extrasize - 2) * sizeof(sljit_sw)); + } + else + { + /* We don't need to keep the STR_PTR, only the previous private_data_ptr. */ + OP2(SLJIT_ADD, STACK_TOP, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr, SLJIT_IMM, (framesize + 2) * sizeof(sljit_sw)); + if (extrasize == 2) + { + OP1(SLJIT_MOV, STR_PTR, 0, SLJIT_MEM1(STACK_TOP), STACK(0)); + if (bra == OP_BRAMINZERO) + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(0), SLJIT_IMM, 0); + } + else + { + OP1(SLJIT_MOV, STR_PTR, 0, SLJIT_MEM1(STACK_TOP), 0); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(0), bra == OP_BRAZERO ? STR_PTR : SLJIT_IMM, 0); + } + } + } + + if (bra == OP_BRAZERO) + { + backtrack->matchingpath = LABEL(); + SET_LABEL(jump, backtrack->matchingpath); + } + else if (bra == OP_BRAMINZERO) + { + JUMPTO(SLJIT_JUMP, backtrack->matchingpath); + JUMPHERE(brajump); + if (framesize >= 0) + { + OP1(SLJIT_MOV, STACK_TOP, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr); + add_jump(compiler, &common->revertframes, JUMP(SLJIT_FAST_CALL)); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr, SLJIT_MEM1(STACK_TOP), framesize * sizeof(sljit_sw)); + } + set_jumps(backtrack->common.topbacktracks, LABEL()); + } + } +else + { + /* AssertNot is successful. */ + if (framesize < 0) + { + OP1(SLJIT_MOV, STR_PTR, 0, SLJIT_MEM1(STACK_TOP), STACK(0)); + if (bra != OP_BRA) + { + if (extrasize == 2) + free_stack(common, 1); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(0), SLJIT_IMM, 0); + } + else + free_stack(common, extrasize); + } + else + { + OP1(SLJIT_MOV, STR_PTR, 0, SLJIT_MEM1(STACK_TOP), STACK(0)); + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(STACK_TOP), STACK(extrasize - 1)); + /* The topmost item should be 0. */ + if (bra != OP_BRA) + { + free_stack(common, framesize + extrasize - 1); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(0), SLJIT_IMM, 0); + } + else + free_stack(common, framesize + extrasize); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr, TMP1, 0); + } + + if (bra == OP_BRAZERO) + backtrack->matchingpath = LABEL(); + else if (bra == OP_BRAMINZERO) + { + JUMPTO(SLJIT_JUMP, backtrack->matchingpath); + JUMPHERE(brajump); + } + + if (bra != OP_BRA) + { + SLJIT_ASSERT(found == &backtrack->common.topbacktracks); + set_jumps(backtrack->common.topbacktracks, LABEL()); + backtrack->common.topbacktracks = NULL; + } + } + +if (opcode == OP_ASSERT_NOT || opcode == OP_ASSERTBACK_NOT) + { + common->local_exit = save_local_exit; + common->quit_label = save_quit_label; + common->quit = save_quit; + } +common->positive_assert = save_positive_assert; +common->then_trap = save_then_trap; +common->accept_label = save_accept_label; +common->positive_assert_quit = save_positive_assert_quit; +common->accept = save_accept; +return cc + 1 + LINK_SIZE; +} + +static SLJIT_INLINE void match_once_common(compiler_common *common, pcre_uchar ket, int framesize, int private_data_ptr, BOOL has_alternatives, BOOL needs_control_head) +{ +DEFINE_COMPILER; +int stacksize; + +if (framesize < 0) + { + if (framesize == no_frame) + OP1(SLJIT_MOV, STACK_TOP, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr); + else + { + stacksize = needs_control_head ? 1 : 0; + if (ket != OP_KET || has_alternatives) + stacksize++; + free_stack(common, stacksize); + } + + if (needs_control_head) + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(STACK_TOP), (ket != OP_KET || has_alternatives) ? sizeof(sljit_sw) : 0); + + /* TMP2 which is set here used by OP_KETRMAX below. */ + if (ket == OP_KETRMAX) + OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(STACK_TOP), 0); + else if (ket == OP_KETRMIN) + { + /* Move the STR_PTR to the private_data_ptr. */ + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr, SLJIT_MEM1(STACK_TOP), 0); + } + } +else + { + stacksize = (ket != OP_KET || has_alternatives) ? 2 : 1; + OP2(SLJIT_ADD, STACK_TOP, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr, SLJIT_IMM, (framesize + stacksize) * sizeof(sljit_sw)); + if (needs_control_head) + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(STACK_TOP), 0); + + if (ket == OP_KETRMAX) + { + /* TMP2 which is set here used by OP_KETRMAX below. */ + OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(STACK_TOP), STACK(0)); + } + } +if (needs_control_head) + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), common->control_head_ptr, TMP1, 0); +} + +static SLJIT_INLINE int match_capture_common(compiler_common *common, int stacksize, int offset, int private_data_ptr) +{ +DEFINE_COMPILER; + +if (common->capture_last_ptr != 0) + { + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), common->capture_last_ptr); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), common->capture_last_ptr, SLJIT_IMM, offset >> 1); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(stacksize), TMP1, 0); + stacksize++; + } +if (common->optimized_cbracket[offset >> 1] == 0) + { + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(offset)); + OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(offset + 1)); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(stacksize), TMP1, 0); + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(stacksize + 1), TMP2, 0); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(offset + 1), STR_PTR, 0); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(offset), TMP1, 0); + stacksize += 2; + } +return stacksize; +} + +/* + Handling bracketed expressions is probably the most complex part. + + Stack layout naming characters: + S - Push the current STR_PTR + 0 - Push a 0 (NULL) + A - Push the current STR_PTR. Needed for restoring the STR_PTR + before the next alternative. Not pushed if there are no alternatives. + M - Any values pushed by the current alternative. Can be empty, or anything. + C - Push the previous OVECTOR(i), OVECTOR(i+1) and OVECTOR_PRIV(i) to the stack. + L - Push the previous local (pointed by localptr) to the stack + () - opional values stored on the stack + ()* - optonal, can be stored multiple times + + The following list shows the regular expression templates, their PCRE byte codes + and stack layout supported by pcre-sljit. + + (?:) OP_BRA | OP_KET A M + () OP_CBRA | OP_KET C M + (?:)+ OP_BRA | OP_KETRMAX 0 A M S ( A M S )* + OP_SBRA | OP_KETRMAX 0 L M S ( L M S )* + (?:)+? OP_BRA | OP_KETRMIN 0 A M S ( A M S )* + OP_SBRA | OP_KETRMIN 0 L M S ( L M S )* + ()+ OP_CBRA | OP_KETRMAX 0 C M S ( C M S )* + OP_SCBRA | OP_KETRMAX 0 C M S ( C M S )* + ()+? OP_CBRA | OP_KETRMIN 0 C M S ( C M S )* + OP_SCBRA | OP_KETRMIN 0 C M S ( C M S )* + (?:)? OP_BRAZERO | OP_BRA | OP_KET S ( A M 0 ) + (?:)?? OP_BRAMINZERO | OP_BRA | OP_KET S ( A M 0 ) + ()? OP_BRAZERO | OP_CBRA | OP_KET S ( C M 0 ) + ()?? OP_BRAMINZERO | OP_CBRA | OP_KET S ( C M 0 ) + (?:)* OP_BRAZERO | OP_BRA | OP_KETRMAX S 0 ( A M S )* + OP_BRAZERO | OP_SBRA | OP_KETRMAX S 0 ( L M S )* + (?:)*? OP_BRAMINZERO | OP_BRA | OP_KETRMIN S 0 ( A M S )* + OP_BRAMINZERO | OP_SBRA | OP_KETRMIN S 0 ( L M S )* + ()* OP_BRAZERO | OP_CBRA | OP_KETRMAX S 0 ( C M S )* + OP_BRAZERO | OP_SCBRA | OP_KETRMAX S 0 ( C M S )* + ()*? OP_BRAMINZERO | OP_CBRA | OP_KETRMIN S 0 ( C M S )* + OP_BRAMINZERO | OP_SCBRA | OP_KETRMIN S 0 ( C M S )* + + + Stack layout naming characters: + A - Push the alternative index (starting from 0) on the stack. + Not pushed if there is no alternatives. + M - Any values pushed by the current alternative. Can be empty, or anything. + + The next list shows the possible content of a bracket: + (|) OP_*BRA | OP_ALT ... M A + (?()|) OP_*COND | OP_ALT M A + (?>|) OP_ONCE | OP_ALT ... [stack trace] M A + (?>|) OP_ONCE_NC | OP_ALT ... [stack trace] M A + Or nothing, if trace is unnecessary +*/ + +static pcre_uchar *compile_bracket_matchingpath(compiler_common *common, pcre_uchar *cc, backtrack_common *parent) +{ +DEFINE_COMPILER; +backtrack_common *backtrack; +pcre_uchar opcode; +int private_data_ptr = 0; +int offset = 0; +int i, stacksize; +int repeat_ptr = 0, repeat_length = 0; +int repeat_type = 0, repeat_count = 0; +pcre_uchar *ccbegin; +pcre_uchar *matchingpath; +pcre_uchar *slot; +pcre_uchar bra = OP_BRA; +pcre_uchar ket; +assert_backtrack *assert; +BOOL has_alternatives; +BOOL needs_control_head = FALSE; +struct sljit_jump *jump; +struct sljit_jump *skip; +struct sljit_label *rmax_label = NULL; +struct sljit_jump *braminzero = NULL; + +PUSH_BACKTRACK(sizeof(bracket_backtrack), cc, NULL); + +if (*cc == OP_BRAZERO || *cc == OP_BRAMINZERO) + { + bra = *cc; + cc++; + opcode = *cc; + } + +opcode = *cc; +ccbegin = cc; +matchingpath = bracketend(cc) - 1 - LINK_SIZE; +ket = *matchingpath; +if (ket == OP_KET && PRIVATE_DATA(matchingpath) != 0) + { + repeat_ptr = PRIVATE_DATA(matchingpath); + repeat_length = PRIVATE_DATA(matchingpath + 1); + repeat_type = PRIVATE_DATA(matchingpath + 2); + repeat_count = PRIVATE_DATA(matchingpath + 3); + SLJIT_ASSERT(repeat_length != 0 && repeat_type != 0 && repeat_count != 0); + if (repeat_type == OP_UPTO) + ket = OP_KETRMAX; + if (repeat_type == OP_MINUPTO) + ket = OP_KETRMIN; + } + +if ((opcode == OP_COND || opcode == OP_SCOND) && cc[1 + LINK_SIZE] == OP_DEF) + { + /* Drop this bracket_backtrack. */ + parent->top = backtrack->prev; + return matchingpath + 1 + LINK_SIZE + repeat_length; + } + +matchingpath = ccbegin + 1 + LINK_SIZE; +SLJIT_ASSERT(ket == OP_KET || ket == OP_KETRMAX || ket == OP_KETRMIN); +SLJIT_ASSERT(!((bra == OP_BRAZERO && ket == OP_KETRMIN) || (bra == OP_BRAMINZERO && ket == OP_KETRMAX))); +cc += GET(cc, 1); + +has_alternatives = *cc == OP_ALT; +if (SLJIT_UNLIKELY(opcode == OP_COND || opcode == OP_SCOND)) + has_alternatives = (*matchingpath == OP_RREF || *matchingpath == OP_DNRREF) ? FALSE : TRUE; + +if (SLJIT_UNLIKELY(opcode == OP_COND) && (*cc == OP_KETRMAX || *cc == OP_KETRMIN)) + opcode = OP_SCOND; +if (SLJIT_UNLIKELY(opcode == OP_ONCE_NC)) + opcode = OP_ONCE; + +if (opcode == OP_CBRA || opcode == OP_SCBRA) + { + /* Capturing brackets has a pre-allocated space. */ + offset = GET2(ccbegin, 1 + LINK_SIZE); + if (common->optimized_cbracket[offset] == 0) + { + private_data_ptr = OVECTOR_PRIV(offset); + offset <<= 1; + } + else + { + offset <<= 1; + private_data_ptr = OVECTOR(offset); + } + BACKTRACK_AS(bracket_backtrack)->private_data_ptr = private_data_ptr; + matchingpath += IMM2_SIZE; + } +else if (opcode == OP_ONCE || opcode == OP_SBRA || opcode == OP_SCOND) + { + /* Other brackets simply allocate the next entry. */ + private_data_ptr = PRIVATE_DATA(ccbegin); + SLJIT_ASSERT(private_data_ptr != 0); + BACKTRACK_AS(bracket_backtrack)->private_data_ptr = private_data_ptr; + if (opcode == OP_ONCE) + BACKTRACK_AS(bracket_backtrack)->u.framesize = get_framesize(common, ccbegin, NULL, FALSE, &needs_control_head); + } + +/* Instructions before the first alternative. */ +stacksize = 0; +if (ket == OP_KETRMAX || (ket == OP_KETRMIN && bra != OP_BRAMINZERO)) + stacksize++; +if (bra == OP_BRAZERO) + stacksize++; + +if (stacksize > 0) + allocate_stack(common, stacksize); + +stacksize = 0; +if (ket == OP_KETRMAX || (ket == OP_KETRMIN && bra != OP_BRAMINZERO)) + { + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(stacksize), SLJIT_IMM, 0); + stacksize++; + } + +if (bra == OP_BRAZERO) + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(stacksize), STR_PTR, 0); + +if (bra == OP_BRAMINZERO) + { + /* This is a backtrack path! (Since the try-path of OP_BRAMINZERO matches to the empty string) */ + OP1(SLJIT_MOV, STR_PTR, 0, SLJIT_MEM1(STACK_TOP), STACK(0)); + if (ket != OP_KETRMIN) + { + free_stack(common, 1); + braminzero = CMP(SLJIT_C_EQUAL, STR_PTR, 0, SLJIT_IMM, 0); + } + else + { + if (opcode == OP_ONCE || opcode >= OP_SBRA) + { + jump = CMP(SLJIT_C_NOT_EQUAL, STR_PTR, 0, SLJIT_IMM, 0); + OP1(SLJIT_MOV, STR_PTR, 0, SLJIT_MEM1(STACK_TOP), STACK(1)); + /* Nothing stored during the first run. */ + skip = JUMP(SLJIT_JUMP); + JUMPHERE(jump); + /* Checking zero-length iteration. */ + if (opcode != OP_ONCE || BACKTRACK_AS(bracket_backtrack)->u.framesize < 0) + { + /* When we come from outside, private_data_ptr contains the previous STR_PTR. */ + braminzero = CMP(SLJIT_C_EQUAL, STR_PTR, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr); + } + else + { + /* Except when the whole stack frame must be saved. */ + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr); + braminzero = CMP(SLJIT_C_EQUAL, STR_PTR, 0, SLJIT_MEM1(TMP1), (BACKTRACK_AS(bracket_backtrack)->u.framesize + 1) * sizeof(sljit_sw)); + } + JUMPHERE(skip); + } + else + { + jump = CMP(SLJIT_C_NOT_EQUAL, STR_PTR, 0, SLJIT_IMM, 0); + OP1(SLJIT_MOV, STR_PTR, 0, SLJIT_MEM1(STACK_TOP), STACK(1)); + JUMPHERE(jump); + } + } + } + +if (repeat_type != 0) + { + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), repeat_ptr, SLJIT_IMM, repeat_count); + if (repeat_type == OP_EXACT) + rmax_label = LABEL(); + } + +if (ket == OP_KETRMIN) + BACKTRACK_AS(bracket_backtrack)->recursive_matchingpath = LABEL(); + +if (ket == OP_KETRMAX) + { + rmax_label = LABEL(); + if (has_alternatives && opcode != OP_ONCE && opcode < OP_SBRA && repeat_type == 0) + BACKTRACK_AS(bracket_backtrack)->alternative_matchingpath = rmax_label; + } + +/* Handling capturing brackets and alternatives. */ +if (opcode == OP_ONCE) + { + stacksize = 0; + if (needs_control_head) + { + OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), common->control_head_ptr); + stacksize++; + } + + if (BACKTRACK_AS(bracket_backtrack)->u.framesize < 0) + { + /* Neither capturing brackets nor recursions are found in the block. */ + if (ket == OP_KETRMIN) + { + stacksize += 2; + if (!needs_control_head) + OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr); + } + else + { + if (BACKTRACK_AS(bracket_backtrack)->u.framesize == no_frame) + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr, STACK_TOP, 0); + if (ket == OP_KETRMAX || has_alternatives) + stacksize++; + } + + if (stacksize > 0) + allocate_stack(common, stacksize); + + stacksize = 0; + if (needs_control_head) + { + stacksize++; + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(0), TMP2, 0); + } + + if (ket == OP_KETRMIN) + { + if (needs_control_head) + OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(stacksize), STR_PTR, 0); + if (BACKTRACK_AS(bracket_backtrack)->u.framesize == no_frame) + OP2(SLJIT_SUB, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr, STACK_TOP, 0, SLJIT_IMM, needs_control_head ? (2 * sizeof(sljit_sw)) : sizeof(sljit_sw)); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(stacksize + 1), TMP2, 0); + } + else if (ket == OP_KETRMAX || has_alternatives) + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(stacksize), STR_PTR, 0); + } + else + { + if (ket != OP_KET || has_alternatives) + stacksize++; + + stacksize += BACKTRACK_AS(bracket_backtrack)->u.framesize + 1; + allocate_stack(common, stacksize); + + if (needs_control_head) + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(0), TMP2, 0); + + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr); + OP2(SLJIT_SUB, TMP2, 0, STACK_TOP, 0, SLJIT_IMM, stacksize * sizeof(sljit_sw)); + + stacksize = needs_control_head ? 1 : 0; + if (ket != OP_KET || has_alternatives) + { + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(stacksize), STR_PTR, 0); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr, TMP2, 0); + stacksize++; + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(stacksize), TMP1, 0); + } + else + { + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr, TMP2, 0); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(stacksize), TMP1, 0); + } + init_frame(common, ccbegin, NULL, BACKTRACK_AS(bracket_backtrack)->u.framesize + stacksize, stacksize + 1, FALSE); + } + } +else if (opcode == OP_CBRA || opcode == OP_SCBRA) + { + /* Saving the previous values. */ + if (common->optimized_cbracket[offset >> 1] != 0) + { + SLJIT_ASSERT(private_data_ptr == OVECTOR(offset)); + allocate_stack(common, 2); + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr); + OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr + sizeof(sljit_sw)); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr, STR_PTR, 0); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(0), TMP1, 0); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(1), TMP2, 0); + } + else + { + OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr); + allocate_stack(common, 1); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr, STR_PTR, 0); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(0), TMP2, 0); + } + } +else if (opcode == OP_SBRA || opcode == OP_SCOND) + { + /* Saving the previous value. */ + OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr); + allocate_stack(common, 1); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr, STR_PTR, 0); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(0), TMP2, 0); + } +else if (has_alternatives) + { + /* Pushing the starting string pointer. */ + allocate_stack(common, 1); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(0), STR_PTR, 0); + } + +/* Generating code for the first alternative. */ +if (opcode == OP_COND || opcode == OP_SCOND) + { + if (*matchingpath == OP_CREF) + { + SLJIT_ASSERT(has_alternatives); + add_jump(compiler, &(BACKTRACK_AS(bracket_backtrack)->u.condfailed), + CMP(SLJIT_C_EQUAL, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(GET2(matchingpath, 1) << 1), SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(1))); + matchingpath += 1 + IMM2_SIZE; + } + else if (*matchingpath == OP_DNCREF) + { + SLJIT_ASSERT(has_alternatives); + + i = GET2(matchingpath, 1 + IMM2_SIZE); + slot = common->name_table + GET2(matchingpath, 1) * common->name_entry_size; + OP1(SLJIT_MOV, TMP3, 0, STR_PTR, 0); + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(1)); + OP2(SLJIT_SUB | SLJIT_SET_E, TMP2, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(GET2(slot, 0) << 1), TMP1, 0); + slot += common->name_entry_size; + i--; + while (i-- > 0) + { + OP2(SLJIT_SUB, STR_PTR, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(GET2(slot, 0) << 1), TMP1, 0); + OP2(SLJIT_OR | SLJIT_SET_E, TMP2, 0, TMP2, 0, STR_PTR, 0); + slot += common->name_entry_size; + } + OP1(SLJIT_MOV, STR_PTR, 0, TMP3, 0); + add_jump(compiler, &(BACKTRACK_AS(bracket_backtrack)->u.condfailed), JUMP(SLJIT_C_ZERO)); + matchingpath += 1 + 2 * IMM2_SIZE; + } + else if (*matchingpath == OP_RREF || *matchingpath == OP_DNRREF) + { + /* Never has other case. */ + BACKTRACK_AS(bracket_backtrack)->u.condfailed = NULL; + SLJIT_ASSERT(!has_alternatives); + + if (*matchingpath == OP_RREF) + { + stacksize = GET2(matchingpath, 1); + if (common->currententry == NULL) + stacksize = 0; + else if (stacksize == RREF_ANY) + stacksize = 1; + else if (common->currententry->start == 0) + stacksize = stacksize == 0; + else + stacksize = stacksize == (int)GET2(common->start, common->currententry->start + 1 + LINK_SIZE); + + if (stacksize != 0) + matchingpath += 1 + IMM2_SIZE; + } + else + { + if (common->currententry == NULL || common->currententry->start == 0) + stacksize = 0; + else + { + stacksize = GET2(matchingpath, 1 + IMM2_SIZE); + slot = common->name_table + GET2(matchingpath, 1) * common->name_entry_size; + i = (int)GET2(common->start, common->currententry->start + 1 + LINK_SIZE); + while (stacksize > 0) + { + if ((int)GET2(slot, 0) == i) + break; + slot += common->name_entry_size; + stacksize--; + } + } + + if (stacksize != 0) + matchingpath += 1 + 2 * IMM2_SIZE; + } + + /* The stacksize == 0 is a common "else" case. */ + if (stacksize == 0) + { + if (*cc == OP_ALT) + { + matchingpath = cc + 1 + LINK_SIZE; + cc += GET(cc, 1); + } + else + matchingpath = cc; + } + } + else + { + SLJIT_ASSERT(has_alternatives && *matchingpath >= OP_ASSERT && *matchingpath <= OP_ASSERTBACK_NOT); + /* Similar code as PUSH_BACKTRACK macro. */ + assert = sljit_alloc_memory(compiler, sizeof(assert_backtrack)); + if (SLJIT_UNLIKELY(sljit_get_compiler_error(compiler))) + return NULL; + memset(assert, 0, sizeof(assert_backtrack)); + assert->common.cc = matchingpath; + BACKTRACK_AS(bracket_backtrack)->u.assert = assert; + matchingpath = compile_assert_matchingpath(common, matchingpath, assert, TRUE); + } + } + +compile_matchingpath(common, matchingpath, cc, backtrack); +if (SLJIT_UNLIKELY(sljit_get_compiler_error(compiler))) + return NULL; + +if (opcode == OP_ONCE) + match_once_common(common, ket, BACKTRACK_AS(bracket_backtrack)->u.framesize, private_data_ptr, has_alternatives, needs_control_head); + +stacksize = 0; +if (repeat_type == OP_MINUPTO) + { + /* We need to preserve the counter. TMP2 will be used below. */ + OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), repeat_ptr); + stacksize++; + } +if (ket != OP_KET || bra != OP_BRA) + stacksize++; +if (offset != 0) + { + if (common->capture_last_ptr != 0) + stacksize++; + if (common->optimized_cbracket[offset >> 1] == 0) + stacksize += 2; + } +if (has_alternatives && opcode != OP_ONCE) + stacksize++; + +if (stacksize > 0) + allocate_stack(common, stacksize); + +stacksize = 0; +if (repeat_type == OP_MINUPTO) + { + /* TMP2 was set above. */ + OP2(SLJIT_SUB, SLJIT_MEM1(STACK_TOP), STACK(stacksize), TMP2, 0, SLJIT_IMM, 1); + stacksize++; + } + +if (ket != OP_KET || bra != OP_BRA) + { + if (ket != OP_KET) + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(stacksize), STR_PTR, 0); + else + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(stacksize), SLJIT_IMM, 0); + stacksize++; + } + +if (offset != 0) + stacksize = match_capture_common(common, stacksize, offset, private_data_ptr); + +if (has_alternatives) + { + if (opcode != OP_ONCE) + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(stacksize), SLJIT_IMM, 0); + if (ket != OP_KETRMAX) + BACKTRACK_AS(bracket_backtrack)->alternative_matchingpath = LABEL(); + } + +/* Must be after the matchingpath label. */ +if (offset != 0 && common->optimized_cbracket[offset >> 1] != 0) + { + SLJIT_ASSERT(private_data_ptr == OVECTOR(offset + 0)); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(offset + 1), STR_PTR, 0); + } + +if (ket == OP_KETRMAX) + { + if (repeat_type != 0) + { + if (has_alternatives) + BACKTRACK_AS(bracket_backtrack)->alternative_matchingpath = LABEL(); + OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_MEM1(SLJIT_LOCALS_REG), repeat_ptr, SLJIT_MEM1(SLJIT_LOCALS_REG), repeat_ptr, SLJIT_IMM, 1); + JUMPTO(SLJIT_C_NOT_ZERO, rmax_label); + /* Drop STR_PTR for greedy plus quantifier. */ + if (opcode != OP_ONCE) + free_stack(common, 1); + } + else if (opcode == OP_ONCE || opcode >= OP_SBRA) + { + if (has_alternatives) + BACKTRACK_AS(bracket_backtrack)->alternative_matchingpath = LABEL(); + /* Checking zero-length iteration. */ + if (opcode != OP_ONCE) + { + CMPTO(SLJIT_C_NOT_EQUAL, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr, STR_PTR, 0, rmax_label); + /* Drop STR_PTR for greedy plus quantifier. */ + if (bra != OP_BRAZERO) + free_stack(common, 1); + } + else + /* TMP2 must contain the starting STR_PTR. */ + CMPTO(SLJIT_C_NOT_EQUAL, TMP2, 0, STR_PTR, 0, rmax_label); + } + else + JUMPTO(SLJIT_JUMP, rmax_label); + BACKTRACK_AS(bracket_backtrack)->recursive_matchingpath = LABEL(); + } + +if (repeat_type == OP_EXACT) + { + OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_MEM1(SLJIT_LOCALS_REG), repeat_ptr, SLJIT_MEM1(SLJIT_LOCALS_REG), repeat_ptr, SLJIT_IMM, 1); + JUMPTO(SLJIT_C_NOT_ZERO, rmax_label); + } +else if (repeat_type == OP_UPTO) + { + /* We need to preserve the counter. */ + OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), repeat_ptr); + allocate_stack(common, 1); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(0), TMP2, 0); + } + +if (bra == OP_BRAZERO) + BACKTRACK_AS(bracket_backtrack)->zero_matchingpath = LABEL(); + +if (bra == OP_BRAMINZERO) + { + /* This is a backtrack path! (From the viewpoint of OP_BRAMINZERO) */ + JUMPTO(SLJIT_JUMP, ((braminzero_backtrack *)parent)->matchingpath); + if (braminzero != NULL) + { + JUMPHERE(braminzero); + /* We need to release the end pointer to perform the + backtrack for the zero-length iteration. When + framesize is < 0, OP_ONCE will do the release itself. */ + if (opcode == OP_ONCE && BACKTRACK_AS(bracket_backtrack)->u.framesize >= 0) + { + OP1(SLJIT_MOV, STACK_TOP, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr); + add_jump(compiler, &common->revertframes, JUMP(SLJIT_FAST_CALL)); + } + else if (ket == OP_KETRMIN && opcode != OP_ONCE) + free_stack(common, 1); + } + /* Continue to the normal backtrack. */ + } + +if ((ket != OP_KET && bra != OP_BRAMINZERO) || bra == OP_BRAZERO) + count_match(common); + +/* Skip the other alternatives. */ +while (*cc == OP_ALT) + cc += GET(cc, 1); +cc += 1 + LINK_SIZE; + +/* Temporarily encoding the needs_control_head in framesize. */ +if (opcode == OP_ONCE) + BACKTRACK_AS(bracket_backtrack)->u.framesize = (BACKTRACK_AS(bracket_backtrack)->u.framesize << 1) | (needs_control_head ? 1 : 0); +return cc + repeat_length; +} + +static pcre_uchar *compile_bracketpos_matchingpath(compiler_common *common, pcre_uchar *cc, backtrack_common *parent) +{ +DEFINE_COMPILER; +backtrack_common *backtrack; +pcre_uchar opcode; +int private_data_ptr; +int cbraprivptr = 0; +BOOL needs_control_head; +int framesize; +int stacksize; +int offset = 0; +BOOL zero = FALSE; +pcre_uchar *ccbegin = NULL; +int stack; /* Also contains the offset of control head. */ +struct sljit_label *loop = NULL; +struct jump_list *emptymatch = NULL; + +PUSH_BACKTRACK(sizeof(bracketpos_backtrack), cc, NULL); +if (*cc == OP_BRAPOSZERO) + { + zero = TRUE; + cc++; + } + +opcode = *cc; +private_data_ptr = PRIVATE_DATA(cc); +SLJIT_ASSERT(private_data_ptr != 0); +BACKTRACK_AS(bracketpos_backtrack)->private_data_ptr = private_data_ptr; +switch(opcode) + { + case OP_BRAPOS: + case OP_SBRAPOS: + ccbegin = cc + 1 + LINK_SIZE; + break; + + case OP_CBRAPOS: + case OP_SCBRAPOS: + offset = GET2(cc, 1 + LINK_SIZE); + /* This case cannot be optimized in the same was as + normal capturing brackets. */ + SLJIT_ASSERT(common->optimized_cbracket[offset] == 0); + cbraprivptr = OVECTOR_PRIV(offset); + offset <<= 1; + ccbegin = cc + 1 + LINK_SIZE + IMM2_SIZE; + break; + + default: + SLJIT_ASSERT_STOP(); + break; + } + +framesize = get_framesize(common, cc, NULL, FALSE, &needs_control_head); +BACKTRACK_AS(bracketpos_backtrack)->framesize = framesize; +if (framesize < 0) + { + if (offset != 0) + { + stacksize = 2; + if (common->capture_last_ptr != 0) + stacksize++; + } + else + stacksize = 1; + + if (needs_control_head) + stacksize++; + if (!zero) + stacksize++; + + BACKTRACK_AS(bracketpos_backtrack)->stacksize = stacksize; + allocate_stack(common, stacksize); + if (framesize == no_frame) + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr, STACK_TOP, 0); + + stack = 0; + if (offset != 0) + { + stack = 2; + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(offset)); + OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(offset + 1)); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(0), TMP1, 0); + if (common->capture_last_ptr != 0) + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), common->capture_last_ptr); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(1), TMP2, 0); + if (needs_control_head) + OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), common->control_head_ptr); + if (common->capture_last_ptr != 0) + { + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(2), TMP1, 0); + stack = 3; + } + } + else + { + if (needs_control_head) + OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), common->control_head_ptr); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(0), STR_PTR, 0); + stack = 1; + } + + if (needs_control_head) + stack++; + if (!zero) + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(stack), SLJIT_IMM, 1); + if (needs_control_head) + { + stack--; + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(stack), TMP2, 0); + } + } +else + { + stacksize = framesize + 1; + if (!zero) + stacksize++; + if (needs_control_head) + stacksize++; + if (offset == 0) + stacksize++; + BACKTRACK_AS(bracketpos_backtrack)->stacksize = stacksize; + + allocate_stack(common, stacksize); + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr); + if (needs_control_head) + OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), common->control_head_ptr); + OP2(SLJIT_SUB, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr, STACK_TOP, 0, SLJIT_IMM, -STACK(stacksize - 1)); + + stack = 0; + if (!zero) + { + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(0), SLJIT_IMM, 1); + stack = 1; + } + if (needs_control_head) + { + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(stack), TMP2, 0); + stack++; + } + if (offset == 0) + { + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(stack), STR_PTR, 0); + stack++; + } + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(stack), TMP1, 0); + init_frame(common, cc, NULL, stacksize - 1, stacksize - framesize, FALSE); + stack -= 1 + (offset == 0); + } + +if (offset != 0) + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), cbraprivptr, STR_PTR, 0); + +loop = LABEL(); +while (*cc != OP_KETRPOS) + { + backtrack->top = NULL; + backtrack->topbacktracks = NULL; + cc += GET(cc, 1); + + compile_matchingpath(common, ccbegin, cc, backtrack); + if (SLJIT_UNLIKELY(sljit_get_compiler_error(compiler))) + return NULL; + + if (framesize < 0) + { + if (framesize == no_frame) + OP1(SLJIT_MOV, STACK_TOP, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr); + + if (offset != 0) + { + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), cbraprivptr); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(offset + 1), STR_PTR, 0); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), cbraprivptr, STR_PTR, 0); + if (common->capture_last_ptr != 0) + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), common->capture_last_ptr, SLJIT_IMM, offset >> 1); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(offset), TMP1, 0); + } + else + { + if (opcode == OP_SBRAPOS) + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(STACK_TOP), STACK(0)); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(0), STR_PTR, 0); + } + + if (opcode == OP_SBRAPOS || opcode == OP_SCBRAPOS) + add_jump(compiler, &emptymatch, CMP(SLJIT_C_EQUAL, TMP1, 0, STR_PTR, 0)); + + if (!zero) + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(stacksize - 1), SLJIT_IMM, 0); + } + else + { + if (offset != 0) + { + OP2(SLJIT_ADD, STACK_TOP, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr, SLJIT_IMM, stacksize * sizeof(sljit_sw)); + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), cbraprivptr); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(offset + 1), STR_PTR, 0); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), cbraprivptr, STR_PTR, 0); + if (common->capture_last_ptr != 0) + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), common->capture_last_ptr, SLJIT_IMM, offset >> 1); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(offset), TMP1, 0); + } + else + { + OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr); + OP2(SLJIT_ADD, STACK_TOP, 0, TMP2, 0, SLJIT_IMM, stacksize * sizeof(sljit_sw)); + if (opcode == OP_SBRAPOS) + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(TMP2), (framesize + 1) * sizeof(sljit_sw)); + OP1(SLJIT_MOV, SLJIT_MEM1(TMP2), (framesize + 1) * sizeof(sljit_sw), STR_PTR, 0); + } + + if (opcode == OP_SBRAPOS || opcode == OP_SCBRAPOS) + add_jump(compiler, &emptymatch, CMP(SLJIT_C_EQUAL, TMP1, 0, STR_PTR, 0)); + + if (!zero) + { + if (framesize < 0) + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(stacksize - 1), SLJIT_IMM, 0); + else + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(0), SLJIT_IMM, 0); + } + } + + if (needs_control_head) + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), common->control_head_ptr, SLJIT_MEM1(STACK_TOP), STACK(stack)); + + JUMPTO(SLJIT_JUMP, loop); + flush_stubs(common); + + compile_backtrackingpath(common, backtrack->top); + if (SLJIT_UNLIKELY(sljit_get_compiler_error(compiler))) + return NULL; + set_jumps(backtrack->topbacktracks, LABEL()); + + if (framesize < 0) + { + if (offset != 0) + OP1(SLJIT_MOV, STR_PTR, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), cbraprivptr); + else + OP1(SLJIT_MOV, STR_PTR, 0, SLJIT_MEM1(STACK_TOP), STACK(0)); + } + else + { + if (offset != 0) + { + /* Last alternative. */ + if (*cc == OP_KETRPOS) + OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr); + OP1(SLJIT_MOV, STR_PTR, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), cbraprivptr); + } + else + { + OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr); + OP1(SLJIT_MOV, STR_PTR, 0, SLJIT_MEM1(TMP2), (framesize + 1) * sizeof(sljit_sw)); + } + } + + if (*cc == OP_KETRPOS) + break; + ccbegin = cc + 1 + LINK_SIZE; + } + +/* We don't have to restore the control head in case of a failed match. */ + +backtrack->topbacktracks = NULL; +if (!zero) + { + if (framesize < 0) + add_jump(compiler, &backtrack->topbacktracks, CMP(SLJIT_C_NOT_EQUAL, SLJIT_MEM1(STACK_TOP), STACK(stacksize - 1), SLJIT_IMM, 0)); + else /* TMP2 is set to [private_data_ptr] above. */ + add_jump(compiler, &backtrack->topbacktracks, CMP(SLJIT_C_NOT_EQUAL, SLJIT_MEM1(TMP2), (stacksize - 1) * sizeof(sljit_sw), SLJIT_IMM, 0)); + } + +/* None of them matched. */ +set_jumps(emptymatch, LABEL()); +count_match(common); +return cc + 1 + LINK_SIZE; +} + +static SLJIT_INLINE pcre_uchar *get_iterator_parameters(compiler_common *common, pcre_uchar *cc, pcre_uchar *opcode, pcre_uchar *type, int *max, int *min, pcre_uchar **end) +{ +int class_len; + +*opcode = *cc; +if (*opcode >= OP_STAR && *opcode <= OP_POSUPTO) + { + cc++; + *type = OP_CHAR; + } +else if (*opcode >= OP_STARI && *opcode <= OP_POSUPTOI) + { + cc++; + *type = OP_CHARI; + *opcode -= OP_STARI - OP_STAR; + } +else if (*opcode >= OP_NOTSTAR && *opcode <= OP_NOTPOSUPTO) + { + cc++; + *type = OP_NOT; + *opcode -= OP_NOTSTAR - OP_STAR; + } +else if (*opcode >= OP_NOTSTARI && *opcode <= OP_NOTPOSUPTOI) + { + cc++; + *type = OP_NOTI; + *opcode -= OP_NOTSTARI - OP_STAR; + } +else if (*opcode >= OP_TYPESTAR && *opcode <= OP_TYPEPOSUPTO) + { + cc++; + *opcode -= OP_TYPESTAR - OP_STAR; + *type = 0; + } +else + { + SLJIT_ASSERT(*opcode == OP_CLASS || *opcode == OP_NCLASS || *opcode == OP_XCLASS); + *type = *opcode; + cc++; + class_len = (*type < OP_XCLASS) ? (int)(1 + (32 / sizeof(pcre_uchar))) : GET(cc, 0); + *opcode = cc[class_len - 1]; + if (*opcode >= OP_CRSTAR && *opcode <= OP_CRMINQUERY) + { + *opcode -= OP_CRSTAR - OP_STAR; + if (end != NULL) + *end = cc + class_len; + } + else if (*opcode >= OP_CRPOSSTAR && *opcode <= OP_CRPOSQUERY) + { + *opcode -= OP_CRPOSSTAR - OP_POSSTAR; + if (end != NULL) + *end = cc + class_len; + } + else + { + SLJIT_ASSERT(*opcode == OP_CRRANGE || *opcode == OP_CRMINRANGE || *opcode == OP_CRPOSRANGE); + *max = GET2(cc, (class_len + IMM2_SIZE)); + *min = GET2(cc, class_len); + + if (*min == 0) + { + SLJIT_ASSERT(*max != 0); + *opcode = (*opcode == OP_CRRANGE) ? OP_UPTO : (*opcode == OP_CRMINRANGE ? OP_MINUPTO : OP_POSUPTO); + } + if (*max == *min) + *opcode = OP_EXACT; + + if (end != NULL) + *end = cc + class_len + 2 * IMM2_SIZE; + } + return cc; + } + +if (*opcode == OP_UPTO || *opcode == OP_MINUPTO || *opcode == OP_EXACT || *opcode == OP_POSUPTO) + { + *max = GET2(cc, 0); + cc += IMM2_SIZE; + } + +if (*type == 0) + { + *type = *cc; + if (end != NULL) + *end = next_opcode(common, cc); + cc++; + return cc; + } + +if (end != NULL) + { + *end = cc + 1; +#ifdef SUPPORT_UTF + if (common->utf && HAS_EXTRALEN(*cc)) *end += GET_EXTRALEN(*cc); +#endif + } +return cc; +} + +static pcre_uchar *compile_iterator_matchingpath(compiler_common *common, pcre_uchar *cc, backtrack_common *parent) +{ +DEFINE_COMPILER; +backtrack_common *backtrack; +pcre_uchar opcode; +pcre_uchar type; +int max = -1, min = -1; +pcre_uchar* end; +jump_list *nomatch = NULL; +struct sljit_jump *jump = NULL; +struct sljit_label *label; +int private_data_ptr = PRIVATE_DATA(cc); +int base = (private_data_ptr == 0) ? SLJIT_MEM1(STACK_TOP) : SLJIT_MEM1(SLJIT_LOCALS_REG); +int offset0 = (private_data_ptr == 0) ? STACK(0) : private_data_ptr; +int offset1 = (private_data_ptr == 0) ? STACK(1) : private_data_ptr + (int)sizeof(sljit_sw); +int tmp_base, tmp_offset; + +PUSH_BACKTRACK(sizeof(iterator_backtrack), cc, NULL); + +cc = get_iterator_parameters(common, cc, &opcode, &type, &max, &min, &end); + +switch(type) + { + case OP_NOT_DIGIT: + case OP_DIGIT: + case OP_NOT_WHITESPACE: + case OP_WHITESPACE: + case OP_NOT_WORDCHAR: + case OP_WORDCHAR: + case OP_ANY: + case OP_ALLANY: + case OP_ANYBYTE: + case OP_ANYNL: + case OP_NOT_HSPACE: + case OP_HSPACE: + case OP_NOT_VSPACE: + case OP_VSPACE: + case OP_CHAR: + case OP_CHARI: + case OP_NOT: + case OP_NOTI: + case OP_CLASS: + case OP_NCLASS: + tmp_base = TMP3; + tmp_offset = 0; + break; + + default: + SLJIT_ASSERT_STOP(); + /* Fall through. */ + + case OP_EXTUNI: + case OP_XCLASS: + case OP_NOTPROP: + case OP_PROP: + tmp_base = SLJIT_MEM1(SLJIT_LOCALS_REG); + tmp_offset = POSSESSIVE0; + break; + } + +switch(opcode) + { + case OP_STAR: + case OP_PLUS: + case OP_UPTO: + case OP_CRRANGE: + if (type == OP_ANYNL || type == OP_EXTUNI) + { + SLJIT_ASSERT(private_data_ptr == 0); + if (opcode == OP_STAR || opcode == OP_UPTO) + { + allocate_stack(common, 2); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(0), STR_PTR, 0); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(1), SLJIT_IMM, 0); + } + else + { + allocate_stack(common, 1); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(0), SLJIT_IMM, 0); + } + + if (opcode == OP_UPTO || opcode == OP_CRRANGE) + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), POSSESSIVE0, SLJIT_IMM, 0); + + label = LABEL(); + compile_char1_matchingpath(common, type, cc, &backtrack->topbacktracks); + if (opcode == OP_UPTO || opcode == OP_CRRANGE) + { + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), POSSESSIVE0); + OP2(SLJIT_ADD, TMP1, 0, TMP1, 0, SLJIT_IMM, 1); + if (opcode == OP_CRRANGE && min > 0) + CMPTO(SLJIT_C_LESS, TMP1, 0, SLJIT_IMM, min, label); + if (opcode == OP_UPTO || (opcode == OP_CRRANGE && max > 0)) + jump = CMP(SLJIT_C_GREATER_EQUAL, TMP1, 0, SLJIT_IMM, max); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), POSSESSIVE0, TMP1, 0); + } + + /* We cannot use TMP3 because of this allocate_stack. */ + allocate_stack(common, 1); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(0), STR_PTR, 0); + JUMPTO(SLJIT_JUMP, label); + if (jump != NULL) + JUMPHERE(jump); + } + else + { + if (opcode == OP_PLUS) + compile_char1_matchingpath(common, type, cc, &backtrack->topbacktracks); + if (private_data_ptr == 0) + allocate_stack(common, 2); + OP1(SLJIT_MOV, base, offset0, STR_PTR, 0); + if (opcode <= OP_PLUS) + OP1(SLJIT_MOV, base, offset1, STR_PTR, 0); + else + OP1(SLJIT_MOV, base, offset1, SLJIT_IMM, 1); + label = LABEL(); + compile_char1_matchingpath(common, type, cc, &nomatch); + OP1(SLJIT_MOV, base, offset0, STR_PTR, 0); + if (opcode <= OP_PLUS) + JUMPTO(SLJIT_JUMP, label); + else if (opcode == OP_CRRANGE && max == 0) + { + OP2(SLJIT_ADD, base, offset1, base, offset1, SLJIT_IMM, 1); + JUMPTO(SLJIT_JUMP, label); + } + else + { + OP1(SLJIT_MOV, TMP1, 0, base, offset1); + OP2(SLJIT_ADD, TMP1, 0, TMP1, 0, SLJIT_IMM, 1); + OP1(SLJIT_MOV, base, offset1, TMP1, 0); + CMPTO(SLJIT_C_LESS, TMP1, 0, SLJIT_IMM, max + 1, label); + } + set_jumps(nomatch, LABEL()); + if (opcode == OP_CRRANGE) + add_jump(compiler, &backtrack->topbacktracks, CMP(SLJIT_C_LESS, base, offset1, SLJIT_IMM, min + 1)); + OP1(SLJIT_MOV, STR_PTR, 0, base, offset0); + } + BACKTRACK_AS(iterator_backtrack)->matchingpath = LABEL(); + break; + + case OP_MINSTAR: + case OP_MINPLUS: + if (opcode == OP_MINPLUS) + compile_char1_matchingpath(common, type, cc, &backtrack->topbacktracks); + if (private_data_ptr == 0) + allocate_stack(common, 1); + OP1(SLJIT_MOV, base, offset0, STR_PTR, 0); + BACKTRACK_AS(iterator_backtrack)->matchingpath = LABEL(); + break; + + case OP_MINUPTO: + case OP_CRMINRANGE: + if (private_data_ptr == 0) + allocate_stack(common, 2); + OP1(SLJIT_MOV, base, offset0, STR_PTR, 0); + OP1(SLJIT_MOV, base, offset1, SLJIT_IMM, 1); + if (opcode == OP_CRMINRANGE) + add_jump(compiler, &backtrack->topbacktracks, JUMP(SLJIT_JUMP)); + BACKTRACK_AS(iterator_backtrack)->matchingpath = LABEL(); + break; + + case OP_QUERY: + case OP_MINQUERY: + if (private_data_ptr == 0) + allocate_stack(common, 1); + OP1(SLJIT_MOV, base, offset0, STR_PTR, 0); + if (opcode == OP_QUERY) + compile_char1_matchingpath(common, type, cc, &backtrack->topbacktracks); + BACKTRACK_AS(iterator_backtrack)->matchingpath = LABEL(); + break; + + case OP_EXACT: + OP1(SLJIT_MOV, tmp_base, tmp_offset, SLJIT_IMM, max); + label = LABEL(); + compile_char1_matchingpath(common, type, cc, &backtrack->topbacktracks); + OP2(SLJIT_SUB | SLJIT_SET_E, tmp_base, tmp_offset, tmp_base, tmp_offset, SLJIT_IMM, 1); + JUMPTO(SLJIT_C_NOT_ZERO, label); + break; + + case OP_POSSTAR: + case OP_POSPLUS: + case OP_POSUPTO: + if (opcode == OP_POSPLUS) + compile_char1_matchingpath(common, type, cc, &backtrack->topbacktracks); + if (opcode == OP_POSUPTO) + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), POSSESSIVE1, SLJIT_IMM, max); + OP1(SLJIT_MOV, tmp_base, tmp_offset, STR_PTR, 0); + label = LABEL(); + compile_char1_matchingpath(common, type, cc, &nomatch); + OP1(SLJIT_MOV, tmp_base, tmp_offset, STR_PTR, 0); + if (opcode != OP_POSUPTO) + JUMPTO(SLJIT_JUMP, label); + else + { + OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_MEM1(SLJIT_LOCALS_REG), POSSESSIVE1, SLJIT_MEM1(SLJIT_LOCALS_REG), POSSESSIVE1, SLJIT_IMM, 1); + JUMPTO(SLJIT_C_NOT_ZERO, label); + } + set_jumps(nomatch, LABEL()); + OP1(SLJIT_MOV, STR_PTR, 0, tmp_base, tmp_offset); + break; + + case OP_POSQUERY: + OP1(SLJIT_MOV, tmp_base, tmp_offset, STR_PTR, 0); + compile_char1_matchingpath(common, type, cc, &nomatch); + OP1(SLJIT_MOV, tmp_base, tmp_offset, STR_PTR, 0); + set_jumps(nomatch, LABEL()); + OP1(SLJIT_MOV, STR_PTR, 0, tmp_base, tmp_offset); + break; + + case OP_CRPOSRANGE: + /* Combination of OP_EXACT and OP_POSSTAR or OP_POSUPTO */ + OP1(SLJIT_MOV, tmp_base, tmp_offset, SLJIT_IMM, min); + label = LABEL(); + compile_char1_matchingpath(common, type, cc, &backtrack->topbacktracks); + OP2(SLJIT_SUB | SLJIT_SET_E, tmp_base, tmp_offset, tmp_base, tmp_offset, SLJIT_IMM, 1); + JUMPTO(SLJIT_C_NOT_ZERO, label); + + if (max != 0) + { + SLJIT_ASSERT(max - min > 0); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), POSSESSIVE1, SLJIT_IMM, max - min); + } + OP1(SLJIT_MOV, tmp_base, tmp_offset, STR_PTR, 0); + label = LABEL(); + compile_char1_matchingpath(common, type, cc, &nomatch); + OP1(SLJIT_MOV, tmp_base, tmp_offset, STR_PTR, 0); + if (max == 0) + JUMPTO(SLJIT_JUMP, label); + else + { + OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_MEM1(SLJIT_LOCALS_REG), POSSESSIVE1, SLJIT_MEM1(SLJIT_LOCALS_REG), POSSESSIVE1, SLJIT_IMM, 1); + JUMPTO(SLJIT_C_NOT_ZERO, label); + } + set_jumps(nomatch, LABEL()); + OP1(SLJIT_MOV, STR_PTR, 0, tmp_base, tmp_offset); + break; + + default: + SLJIT_ASSERT_STOP(); + break; + } + +count_match(common); +return end; +} + +static SLJIT_INLINE pcre_uchar *compile_fail_accept_matchingpath(compiler_common *common, pcre_uchar *cc, backtrack_common *parent) +{ +DEFINE_COMPILER; +backtrack_common *backtrack; + +PUSH_BACKTRACK(sizeof(backtrack_common), cc, NULL); + +if (*cc == OP_FAIL) + { + add_jump(compiler, &backtrack->topbacktracks, JUMP(SLJIT_JUMP)); + return cc + 1; + } + +if (*cc == OP_ASSERT_ACCEPT || common->currententry != NULL || !common->might_be_empty) + { + /* No need to check notempty conditions. */ + if (common->accept_label == NULL) + add_jump(compiler, &common->accept, JUMP(SLJIT_JUMP)); + else + JUMPTO(SLJIT_JUMP, common->accept_label); + return cc + 1; + } + +if (common->accept_label == NULL) + add_jump(compiler, &common->accept, CMP(SLJIT_C_NOT_EQUAL, STR_PTR, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(0))); +else + CMPTO(SLJIT_C_NOT_EQUAL, STR_PTR, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(0), common->accept_label); +OP1(SLJIT_MOV, TMP1, 0, ARGUMENTS, 0); +OP1(SLJIT_MOV_UB, TMP2, 0, SLJIT_MEM1(TMP1), SLJIT_OFFSETOF(jit_arguments, notempty)); +add_jump(compiler, &backtrack->topbacktracks, CMP(SLJIT_C_NOT_EQUAL, TMP2, 0, SLJIT_IMM, 0)); +OP1(SLJIT_MOV_UB, TMP2, 0, SLJIT_MEM1(TMP1), SLJIT_OFFSETOF(jit_arguments, notempty_atstart)); +if (common->accept_label == NULL) + add_jump(compiler, &common->accept, CMP(SLJIT_C_EQUAL, TMP2, 0, SLJIT_IMM, 0)); +else + CMPTO(SLJIT_C_EQUAL, TMP2, 0, SLJIT_IMM, 0, common->accept_label); +OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(TMP1), SLJIT_OFFSETOF(jit_arguments, str)); +if (common->accept_label == NULL) + add_jump(compiler, &common->accept, CMP(SLJIT_C_NOT_EQUAL, TMP2, 0, STR_PTR, 0)); +else + CMPTO(SLJIT_C_NOT_EQUAL, TMP2, 0, STR_PTR, 0, common->accept_label); +add_jump(compiler, &backtrack->topbacktracks, JUMP(SLJIT_JUMP)); +return cc + 1; +} + +static SLJIT_INLINE pcre_uchar *compile_close_matchingpath(compiler_common *common, pcre_uchar *cc) +{ +DEFINE_COMPILER; +int offset = GET2(cc, 1); +BOOL optimized_cbracket = common->optimized_cbracket[offset] != 0; + +/* Data will be discarded anyway... */ +if (common->currententry != NULL) + return cc + 1 + IMM2_SIZE; + +if (!optimized_cbracket) + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR_PRIV(offset)); +offset <<= 1; +OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(offset + 1), STR_PTR, 0); +if (!optimized_cbracket) + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(offset), TMP1, 0); +return cc + 1 + IMM2_SIZE; +} + +static SLJIT_INLINE pcre_uchar *compile_control_verb_matchingpath(compiler_common *common, pcre_uchar *cc, backtrack_common *parent) +{ +DEFINE_COMPILER; +backtrack_common *backtrack; +pcre_uchar opcode = *cc; +pcre_uchar *ccend = cc + 1; + +if (opcode == OP_PRUNE_ARG || opcode == OP_SKIP_ARG || opcode == OP_THEN_ARG) + ccend += 2 + cc[1]; + +PUSH_BACKTRACK(sizeof(backtrack_common), cc, NULL); + +if (opcode == OP_SKIP) + { + allocate_stack(common, 1); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(0), STR_PTR, 0); + return ccend; + } + +if (opcode == OP_PRUNE_ARG || opcode == OP_THEN_ARG) + { + OP1(SLJIT_MOV, TMP1, 0, ARGUMENTS, 0); + OP1(SLJIT_MOV, TMP2, 0, SLJIT_IMM, (sljit_sw)(cc + 2)); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), common->mark_ptr, TMP2, 0); + OP1(SLJIT_MOV, SLJIT_MEM1(TMP1), SLJIT_OFFSETOF(jit_arguments, mark_ptr), TMP2, 0); + } + +return ccend; +} + +static pcre_uchar then_trap_opcode[1] = { OP_THEN_TRAP }; + +static SLJIT_INLINE void compile_then_trap_matchingpath(compiler_common *common, pcre_uchar *cc, pcre_uchar *ccend, backtrack_common *parent) +{ +DEFINE_COMPILER; +backtrack_common *backtrack; +BOOL needs_control_head; +int size; + +PUSH_BACKTRACK_NOVALUE(sizeof(then_trap_backtrack), cc); +common->then_trap = BACKTRACK_AS(then_trap_backtrack); +BACKTRACK_AS(then_trap_backtrack)->common.cc = then_trap_opcode; +BACKTRACK_AS(then_trap_backtrack)->start = (sljit_sw)(cc - common->start); +BACKTRACK_AS(then_trap_backtrack)->framesize = get_framesize(common, cc, ccend, FALSE, &needs_control_head); + +size = BACKTRACK_AS(then_trap_backtrack)->framesize; +size = 3 + (size < 0 ? 0 : size); + +OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), common->control_head_ptr); +allocate_stack(common, size); +if (size > 3) + OP2(SLJIT_SUB, SLJIT_MEM1(SLJIT_LOCALS_REG), common->control_head_ptr, STACK_TOP, 0, SLJIT_IMM, (size - 3) * sizeof(sljit_sw)); +else + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), common->control_head_ptr, STACK_TOP, 0); +OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(size - 1), SLJIT_IMM, BACKTRACK_AS(then_trap_backtrack)->start); +OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(size - 2), SLJIT_IMM, type_then_trap); +OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(size - 3), TMP2, 0); + +size = BACKTRACK_AS(then_trap_backtrack)->framesize; +if (size >= 0) + init_frame(common, cc, ccend, size - 1, 0, FALSE); +} + +static void compile_matchingpath(compiler_common *common, pcre_uchar *cc, pcre_uchar *ccend, backtrack_common *parent) +{ +DEFINE_COMPILER; +backtrack_common *backtrack; +BOOL has_then_trap = FALSE; +then_trap_backtrack *save_then_trap = NULL; + +SLJIT_ASSERT(*ccend == OP_END || (*ccend >= OP_ALT && *ccend <= OP_KETRPOS)); + +if (common->has_then && common->then_offsets[cc - common->start] != 0) + { + SLJIT_ASSERT(*ccend != OP_END && common->control_head_ptr != 0); + has_then_trap = TRUE; + save_then_trap = common->then_trap; + /* Tail item on backtrack. */ + compile_then_trap_matchingpath(common, cc, ccend, parent); + } + +while (cc < ccend) + { + switch(*cc) + { + case OP_SOD: + case OP_SOM: + case OP_NOT_WORD_BOUNDARY: + case OP_WORD_BOUNDARY: + case OP_NOT_DIGIT: + case OP_DIGIT: + case OP_NOT_WHITESPACE: + case OP_WHITESPACE: + case OP_NOT_WORDCHAR: + case OP_WORDCHAR: + case OP_ANY: + case OP_ALLANY: + case OP_ANYBYTE: + case OP_NOTPROP: + case OP_PROP: + case OP_ANYNL: + case OP_NOT_HSPACE: + case OP_HSPACE: + case OP_NOT_VSPACE: + case OP_VSPACE: + case OP_EXTUNI: + case OP_EODN: + case OP_EOD: + case OP_CIRC: + case OP_CIRCM: + case OP_DOLL: + case OP_DOLLM: + case OP_NOT: + case OP_NOTI: + case OP_REVERSE: + cc = compile_char1_matchingpath(common, *cc, cc + 1, parent->top != NULL ? &parent->top->nextbacktracks : &parent->topbacktracks); + break; + + case OP_SET_SOM: + PUSH_BACKTRACK_NOVALUE(sizeof(backtrack_common), cc); + OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(0)); + allocate_stack(common, 1); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(0), STR_PTR, 0); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(0), TMP2, 0); + cc++; + break; + + case OP_CHAR: + case OP_CHARI: + if (common->mode == JIT_COMPILE) + cc = compile_charn_matchingpath(common, cc, ccend, parent->top != NULL ? &parent->top->nextbacktracks : &parent->topbacktracks); + else + cc = compile_char1_matchingpath(common, *cc, cc + 1, parent->top != NULL ? &parent->top->nextbacktracks : &parent->topbacktracks); + break; + + case OP_STAR: + case OP_MINSTAR: + case OP_PLUS: + case OP_MINPLUS: + case OP_QUERY: + case OP_MINQUERY: + case OP_UPTO: + case OP_MINUPTO: + case OP_EXACT: + case OP_POSSTAR: + case OP_POSPLUS: + case OP_POSQUERY: + case OP_POSUPTO: + case OP_STARI: + case OP_MINSTARI: + case OP_PLUSI: + case OP_MINPLUSI: + case OP_QUERYI: + case OP_MINQUERYI: + case OP_UPTOI: + case OP_MINUPTOI: + case OP_EXACTI: + case OP_POSSTARI: + case OP_POSPLUSI: + case OP_POSQUERYI: + case OP_POSUPTOI: + case OP_NOTSTAR: + case OP_NOTMINSTAR: + case OP_NOTPLUS: + case OP_NOTMINPLUS: + case OP_NOTQUERY: + case OP_NOTMINQUERY: + case OP_NOTUPTO: + case OP_NOTMINUPTO: + case OP_NOTEXACT: + case OP_NOTPOSSTAR: + case OP_NOTPOSPLUS: + case OP_NOTPOSQUERY: + case OP_NOTPOSUPTO: + case OP_NOTSTARI: + case OP_NOTMINSTARI: + case OP_NOTPLUSI: + case OP_NOTMINPLUSI: + case OP_NOTQUERYI: + case OP_NOTMINQUERYI: + case OP_NOTUPTOI: + case OP_NOTMINUPTOI: + case OP_NOTEXACTI: + case OP_NOTPOSSTARI: + case OP_NOTPOSPLUSI: + case OP_NOTPOSQUERYI: + case OP_NOTPOSUPTOI: + case OP_TYPESTAR: + case OP_TYPEMINSTAR: + case OP_TYPEPLUS: + case OP_TYPEMINPLUS: + case OP_TYPEQUERY: + case OP_TYPEMINQUERY: + case OP_TYPEUPTO: + case OP_TYPEMINUPTO: + case OP_TYPEEXACT: + case OP_TYPEPOSSTAR: + case OP_TYPEPOSPLUS: + case OP_TYPEPOSQUERY: + case OP_TYPEPOSUPTO: + cc = compile_iterator_matchingpath(common, cc, parent); + break; + + case OP_CLASS: + case OP_NCLASS: + if (cc[1 + (32 / sizeof(pcre_uchar))] >= OP_CRSTAR && cc[1 + (32 / sizeof(pcre_uchar))] <= OP_CRPOSRANGE) + cc = compile_iterator_matchingpath(common, cc, parent); + else + cc = compile_char1_matchingpath(common, *cc, cc + 1, parent->top != NULL ? &parent->top->nextbacktracks : &parent->topbacktracks); + break; + +#if defined SUPPORT_UTF || defined COMPILE_PCRE16 || defined COMPILE_PCRE32 + case OP_XCLASS: + if (*(cc + GET(cc, 1)) >= OP_CRSTAR && *(cc + GET(cc, 1)) <= OP_CRPOSRANGE) + cc = compile_iterator_matchingpath(common, cc, parent); + else + cc = compile_char1_matchingpath(common, *cc, cc + 1, parent->top != NULL ? &parent->top->nextbacktracks : &parent->topbacktracks); + break; +#endif + + case OP_REF: + case OP_REFI: + if (cc[1 + IMM2_SIZE] >= OP_CRSTAR && cc[1 + IMM2_SIZE] <= OP_CRPOSRANGE) + cc = compile_ref_iterator_matchingpath(common, cc, parent); + else + { + compile_ref_matchingpath(common, cc, parent->top != NULL ? &parent->top->nextbacktracks : &parent->topbacktracks, TRUE, FALSE); + cc += 1 + IMM2_SIZE; + } + break; + + case OP_DNREF: + case OP_DNREFI: + if (cc[1 + 2 * IMM2_SIZE] >= OP_CRSTAR && cc[1 + 2 * IMM2_SIZE] <= OP_CRPOSRANGE) + cc = compile_ref_iterator_matchingpath(common, cc, parent); + else + { + compile_dnref_search(common, cc, parent->top != NULL ? &parent->top->nextbacktracks : &parent->topbacktracks); + compile_ref_matchingpath(common, cc, parent->top != NULL ? &parent->top->nextbacktracks : &parent->topbacktracks, TRUE, FALSE); + cc += 1 + 2 * IMM2_SIZE; + } + break; + + case OP_RECURSE: + cc = compile_recurse_matchingpath(common, cc, parent); + break; + + case OP_CALLOUT: + cc = compile_callout_matchingpath(common, cc, parent); + break; + + case OP_ASSERT: + case OP_ASSERT_NOT: + case OP_ASSERTBACK: + case OP_ASSERTBACK_NOT: + PUSH_BACKTRACK_NOVALUE(sizeof(assert_backtrack), cc); + cc = compile_assert_matchingpath(common, cc, BACKTRACK_AS(assert_backtrack), FALSE); + break; + + case OP_BRAMINZERO: + PUSH_BACKTRACK_NOVALUE(sizeof(braminzero_backtrack), cc); + cc = bracketend(cc + 1); + if (*(cc - 1 - LINK_SIZE) != OP_KETRMIN) + { + allocate_stack(common, 1); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(0), STR_PTR, 0); + } + else + { + allocate_stack(common, 2); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(0), SLJIT_IMM, 0); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(1), STR_PTR, 0); + } + BACKTRACK_AS(braminzero_backtrack)->matchingpath = LABEL(); + if (cc[1] > OP_ASSERTBACK_NOT) + count_match(common); + break; + + case OP_ONCE: + case OP_ONCE_NC: + case OP_BRA: + case OP_CBRA: + case OP_COND: + case OP_SBRA: + case OP_SCBRA: + case OP_SCOND: + cc = compile_bracket_matchingpath(common, cc, parent); + break; + + case OP_BRAZERO: + if (cc[1] > OP_ASSERTBACK_NOT) + cc = compile_bracket_matchingpath(common, cc, parent); + else + { + PUSH_BACKTRACK_NOVALUE(sizeof(assert_backtrack), cc); + cc = compile_assert_matchingpath(common, cc, BACKTRACK_AS(assert_backtrack), FALSE); + } + break; + + case OP_BRAPOS: + case OP_CBRAPOS: + case OP_SBRAPOS: + case OP_SCBRAPOS: + case OP_BRAPOSZERO: + cc = compile_bracketpos_matchingpath(common, cc, parent); + break; + + case OP_MARK: + PUSH_BACKTRACK_NOVALUE(sizeof(backtrack_common), cc); + SLJIT_ASSERT(common->mark_ptr != 0); + OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), common->mark_ptr); + allocate_stack(common, common->has_skip_arg ? 5 : 1); + OP1(SLJIT_MOV, TMP1, 0, ARGUMENTS, 0); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(common->has_skip_arg ? 4 : 0), TMP2, 0); + OP1(SLJIT_MOV, TMP2, 0, SLJIT_IMM, (sljit_sw)(cc + 2)); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), common->mark_ptr, TMP2, 0); + OP1(SLJIT_MOV, SLJIT_MEM1(TMP1), SLJIT_OFFSETOF(jit_arguments, mark_ptr), TMP2, 0); + if (common->has_skip_arg) + { + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), common->control_head_ptr); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), common->control_head_ptr, STACK_TOP, 0); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(1), SLJIT_IMM, type_mark); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(2), SLJIT_IMM, (sljit_sw)(cc + 2)); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(3), STR_PTR, 0); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(0), TMP1, 0); + } + cc += 1 + 2 + cc[1]; + break; + + case OP_PRUNE: + case OP_PRUNE_ARG: + case OP_SKIP: + case OP_SKIP_ARG: + case OP_THEN: + case OP_THEN_ARG: + case OP_COMMIT: + cc = compile_control_verb_matchingpath(common, cc, parent); + break; + + case OP_FAIL: + case OP_ACCEPT: + case OP_ASSERT_ACCEPT: + cc = compile_fail_accept_matchingpath(common, cc, parent); + break; + + case OP_CLOSE: + cc = compile_close_matchingpath(common, cc); + break; + + case OP_SKIPZERO: + cc = bracketend(cc + 1); + break; + + default: + SLJIT_ASSERT_STOP(); + return; + } + if (cc == NULL) + return; + } + +if (has_then_trap) + { + /* Head item on backtrack. */ + PUSH_BACKTRACK_NOVALUE(sizeof(then_trap_backtrack), cc); + BACKTRACK_AS(then_trap_backtrack)->common.cc = then_trap_opcode; + BACKTRACK_AS(then_trap_backtrack)->then_trap = common->then_trap; + common->then_trap = save_then_trap; + } +SLJIT_ASSERT(cc == ccend); +} + +#undef PUSH_BACKTRACK +#undef PUSH_BACKTRACK_NOVALUE +#undef BACKTRACK_AS + +#define COMPILE_BACKTRACKINGPATH(current) \ + do \ + { \ + compile_backtrackingpath(common, (current)); \ + if (SLJIT_UNLIKELY(sljit_get_compiler_error(compiler))) \ + return; \ + } \ + while (0) + +#define CURRENT_AS(type) ((type *)current) + +static void compile_iterator_backtrackingpath(compiler_common *common, struct backtrack_common *current) +{ +DEFINE_COMPILER; +pcre_uchar *cc = current->cc; +pcre_uchar opcode; +pcre_uchar type; +int max = -1, min = -1; +struct sljit_label *label = NULL; +struct sljit_jump *jump = NULL; +jump_list *jumplist = NULL; +int private_data_ptr = PRIVATE_DATA(cc); +int base = (private_data_ptr == 0) ? SLJIT_MEM1(STACK_TOP) : SLJIT_MEM1(SLJIT_LOCALS_REG); +int offset0 = (private_data_ptr == 0) ? STACK(0) : private_data_ptr; +int offset1 = (private_data_ptr == 0) ? STACK(1) : private_data_ptr + (int)sizeof(sljit_sw); + +cc = get_iterator_parameters(common, cc, &opcode, &type, &max, &min, NULL); + +switch(opcode) + { + case OP_STAR: + case OP_PLUS: + case OP_UPTO: + case OP_CRRANGE: + if (type == OP_ANYNL || type == OP_EXTUNI) + { + SLJIT_ASSERT(private_data_ptr == 0); + set_jumps(current->topbacktracks, LABEL()); + OP1(SLJIT_MOV, STR_PTR, 0, SLJIT_MEM1(STACK_TOP), STACK(0)); + free_stack(common, 1); + CMPTO(SLJIT_C_NOT_EQUAL, STR_PTR, 0, SLJIT_IMM, 0, CURRENT_AS(iterator_backtrack)->matchingpath); + } + else + { + if (opcode == OP_UPTO) + min = 0; + if (opcode <= OP_PLUS) + { + OP1(SLJIT_MOV, STR_PTR, 0, base, offset0); + jump = CMP(SLJIT_C_LESS_EQUAL, STR_PTR, 0, base, offset1); + } + else + { + OP1(SLJIT_MOV, TMP1, 0, base, offset1); + OP1(SLJIT_MOV, STR_PTR, 0, base, offset0); + jump = CMP(SLJIT_C_LESS_EQUAL, TMP1, 0, SLJIT_IMM, min + 1); + OP2(SLJIT_SUB, base, offset1, TMP1, 0, SLJIT_IMM, 1); + } + skip_char_back(common); + OP1(SLJIT_MOV, base, offset0, STR_PTR, 0); + JUMPTO(SLJIT_JUMP, CURRENT_AS(iterator_backtrack)->matchingpath); + if (opcode == OP_CRRANGE) + set_jumps(current->topbacktracks, LABEL()); + JUMPHERE(jump); + if (private_data_ptr == 0) + free_stack(common, 2); + if (opcode == OP_PLUS) + set_jumps(current->topbacktracks, LABEL()); + } + break; + + case OP_MINSTAR: + case OP_MINPLUS: + OP1(SLJIT_MOV, STR_PTR, 0, base, offset0); + compile_char1_matchingpath(common, type, cc, &jumplist); + OP1(SLJIT_MOV, base, offset0, STR_PTR, 0); + JUMPTO(SLJIT_JUMP, CURRENT_AS(iterator_backtrack)->matchingpath); + set_jumps(jumplist, LABEL()); + if (private_data_ptr == 0) + free_stack(common, 1); + if (opcode == OP_MINPLUS) + set_jumps(current->topbacktracks, LABEL()); + break; + + case OP_MINUPTO: + case OP_CRMINRANGE: + if (opcode == OP_CRMINRANGE) + { + label = LABEL(); + set_jumps(current->topbacktracks, label); + } + OP1(SLJIT_MOV, STR_PTR, 0, base, offset0); + compile_char1_matchingpath(common, type, cc, &jumplist); + + OP1(SLJIT_MOV, TMP1, 0, base, offset1); + OP1(SLJIT_MOV, base, offset0, STR_PTR, 0); + OP2(SLJIT_ADD, TMP1, 0, TMP1, 0, SLJIT_IMM, 1); + OP1(SLJIT_MOV, base, offset1, TMP1, 0); + + if (opcode == OP_CRMINRANGE) + CMPTO(SLJIT_C_LESS, TMP1, 0, SLJIT_IMM, min + 1, label); + + if (opcode == OP_CRMINRANGE && max == 0) + JUMPTO(SLJIT_JUMP, CURRENT_AS(iterator_backtrack)->matchingpath); + else + CMPTO(SLJIT_C_LESS, TMP1, 0, SLJIT_IMM, max + 2, CURRENT_AS(iterator_backtrack)->matchingpath); + + set_jumps(jumplist, LABEL()); + if (private_data_ptr == 0) + free_stack(common, 2); + break; + + case OP_QUERY: + OP1(SLJIT_MOV, STR_PTR, 0, base, offset0); + OP1(SLJIT_MOV, base, offset0, SLJIT_IMM, 0); + CMPTO(SLJIT_C_NOT_EQUAL, STR_PTR, 0, SLJIT_IMM, 0, CURRENT_AS(iterator_backtrack)->matchingpath); + jump = JUMP(SLJIT_JUMP); + set_jumps(current->topbacktracks, LABEL()); + OP1(SLJIT_MOV, STR_PTR, 0, base, offset0); + OP1(SLJIT_MOV, base, offset0, SLJIT_IMM, 0); + JUMPTO(SLJIT_JUMP, CURRENT_AS(iterator_backtrack)->matchingpath); + JUMPHERE(jump); + if (private_data_ptr == 0) + free_stack(common, 1); + break; + + case OP_MINQUERY: + OP1(SLJIT_MOV, STR_PTR, 0, base, offset0); + OP1(SLJIT_MOV, base, offset0, SLJIT_IMM, 0); + jump = CMP(SLJIT_C_EQUAL, STR_PTR, 0, SLJIT_IMM, 0); + compile_char1_matchingpath(common, type, cc, &jumplist); + JUMPTO(SLJIT_JUMP, CURRENT_AS(iterator_backtrack)->matchingpath); + set_jumps(jumplist, LABEL()); + JUMPHERE(jump); + if (private_data_ptr == 0) + free_stack(common, 1); + break; + + case OP_EXACT: + case OP_POSPLUS: + case OP_CRPOSRANGE: + set_jumps(current->topbacktracks, LABEL()); + break; + + case OP_POSSTAR: + case OP_POSQUERY: + case OP_POSUPTO: + break; + + default: + SLJIT_ASSERT_STOP(); + break; + } +} + +static SLJIT_INLINE void compile_ref_iterator_backtrackingpath(compiler_common *common, struct backtrack_common *current) +{ +DEFINE_COMPILER; +pcre_uchar *cc = current->cc; +BOOL ref = (*cc == OP_REF || *cc == OP_REFI); +pcre_uchar type; + +type = cc[ref ? 1 + IMM2_SIZE : 1 + 2 * IMM2_SIZE]; + +if ((type & 0x1) == 0) + { + /* Maximize case. */ + set_jumps(current->topbacktracks, LABEL()); + OP1(SLJIT_MOV, STR_PTR, 0, SLJIT_MEM1(STACK_TOP), STACK(0)); + free_stack(common, 1); + CMPTO(SLJIT_C_NOT_EQUAL, STR_PTR, 0, SLJIT_IMM, 0, CURRENT_AS(iterator_backtrack)->matchingpath); + return; + } + +OP1(SLJIT_MOV, STR_PTR, 0, SLJIT_MEM1(STACK_TOP), STACK(0)); +CMPTO(SLJIT_C_NOT_EQUAL, STR_PTR, 0, SLJIT_IMM, 0, CURRENT_AS(iterator_backtrack)->matchingpath); +set_jumps(current->topbacktracks, LABEL()); +free_stack(common, ref ? 2 : 3); +} + +static SLJIT_INLINE void compile_recurse_backtrackingpath(compiler_common *common, struct backtrack_common *current) +{ +DEFINE_COMPILER; + +if (CURRENT_AS(recurse_backtrack)->inlined_pattern) + compile_backtrackingpath(common, current->top); +set_jumps(current->topbacktracks, LABEL()); +if (CURRENT_AS(recurse_backtrack)->inlined_pattern) + return; + +if (common->has_set_som && common->mark_ptr != 0) + { + OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(STACK_TOP), STACK(0)); + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(STACK_TOP), STACK(1)); + free_stack(common, 2); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(0), TMP2, 0); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), common->mark_ptr, TMP1, 0); + } +else if (common->has_set_som || common->mark_ptr != 0) + { + OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(STACK_TOP), STACK(0)); + free_stack(common, 1); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), common->has_set_som ? (int)(OVECTOR(0)) : common->mark_ptr, TMP2, 0); + } +} + +static void compile_assert_backtrackingpath(compiler_common *common, struct backtrack_common *current) +{ +DEFINE_COMPILER; +pcre_uchar *cc = current->cc; +pcre_uchar bra = OP_BRA; +struct sljit_jump *brajump = NULL; + +SLJIT_ASSERT(*cc != OP_BRAMINZERO); +if (*cc == OP_BRAZERO) + { + bra = *cc; + cc++; + } + +if (bra == OP_BRAZERO) + { + SLJIT_ASSERT(current->topbacktracks == NULL); + OP1(SLJIT_MOV, STR_PTR, 0, SLJIT_MEM1(STACK_TOP), STACK(0)); + } + +if (CURRENT_AS(assert_backtrack)->framesize < 0) + { + set_jumps(current->topbacktracks, LABEL()); + + if (bra == OP_BRAZERO) + { + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(0), SLJIT_IMM, 0); + CMPTO(SLJIT_C_NOT_EQUAL, STR_PTR, 0, SLJIT_IMM, 0, CURRENT_AS(assert_backtrack)->matchingpath); + free_stack(common, 1); + } + return; + } + +if (bra == OP_BRAZERO) + { + if (*cc == OP_ASSERT_NOT || *cc == OP_ASSERTBACK_NOT) + { + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(0), SLJIT_IMM, 0); + CMPTO(SLJIT_C_NOT_EQUAL, STR_PTR, 0, SLJIT_IMM, 0, CURRENT_AS(assert_backtrack)->matchingpath); + free_stack(common, 1); + return; + } + free_stack(common, 1); + brajump = CMP(SLJIT_C_EQUAL, STR_PTR, 0, SLJIT_IMM, 0); + } + +if (*cc == OP_ASSERT || *cc == OP_ASSERTBACK) + { + OP1(SLJIT_MOV, STACK_TOP, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), CURRENT_AS(assert_backtrack)->private_data_ptr); + add_jump(compiler, &common->revertframes, JUMP(SLJIT_FAST_CALL)); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), CURRENT_AS(assert_backtrack)->private_data_ptr, SLJIT_MEM1(STACK_TOP), CURRENT_AS(assert_backtrack)->framesize * sizeof(sljit_sw)); + + set_jumps(current->topbacktracks, LABEL()); + } +else + set_jumps(current->topbacktracks, LABEL()); + +if (bra == OP_BRAZERO) + { + /* We know there is enough place on the stack. */ + OP2(SLJIT_ADD, STACK_TOP, 0, STACK_TOP, 0, SLJIT_IMM, sizeof(sljit_sw)); + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(0), SLJIT_IMM, 0); + JUMPTO(SLJIT_JUMP, CURRENT_AS(assert_backtrack)->matchingpath); + JUMPHERE(brajump); + } +} + +static void compile_bracket_backtrackingpath(compiler_common *common, struct backtrack_common *current) +{ +DEFINE_COMPILER; +int opcode, stacksize, alt_count, alt_max; +int offset = 0; +int private_data_ptr = CURRENT_AS(bracket_backtrack)->private_data_ptr; +int repeat_ptr = 0, repeat_type = 0, repeat_count = 0; +pcre_uchar *cc = current->cc; +pcre_uchar *ccbegin; +pcre_uchar *ccprev; +pcre_uchar bra = OP_BRA; +pcre_uchar ket; +assert_backtrack *assert; +BOOL has_alternatives; +BOOL needs_control_head = FALSE; +struct sljit_jump *brazero = NULL; +struct sljit_jump *alt1 = NULL; +struct sljit_jump *alt2 = NULL; +struct sljit_jump *once = NULL; +struct sljit_jump *cond = NULL; +struct sljit_label *rmin_label = NULL; +struct sljit_label *exact_label = NULL; + +if (*cc == OP_BRAZERO || *cc == OP_BRAMINZERO) + { + bra = *cc; + cc++; + } + +opcode = *cc; +ccbegin = bracketend(cc) - 1 - LINK_SIZE; +ket = *ccbegin; +if (ket == OP_KET && PRIVATE_DATA(ccbegin) != 0) + { + repeat_ptr = PRIVATE_DATA(ccbegin); + repeat_type = PRIVATE_DATA(ccbegin + 2); + repeat_count = PRIVATE_DATA(ccbegin + 3); + SLJIT_ASSERT(repeat_type != 0 && repeat_count != 0); + if (repeat_type == OP_UPTO) + ket = OP_KETRMAX; + if (repeat_type == OP_MINUPTO) + ket = OP_KETRMIN; + } +ccbegin = cc; +cc += GET(cc, 1); +has_alternatives = *cc == OP_ALT; +if (SLJIT_UNLIKELY(opcode == OP_COND) || SLJIT_UNLIKELY(opcode == OP_SCOND)) + has_alternatives = (ccbegin[1 + LINK_SIZE] >= OP_ASSERT && ccbegin[1 + LINK_SIZE] <= OP_ASSERTBACK_NOT) || CURRENT_AS(bracket_backtrack)->u.condfailed != NULL; +if (opcode == OP_CBRA || opcode == OP_SCBRA) + offset = (GET2(ccbegin, 1 + LINK_SIZE)) << 1; +if (SLJIT_UNLIKELY(opcode == OP_COND) && (*cc == OP_KETRMAX || *cc == OP_KETRMIN)) + opcode = OP_SCOND; +if (SLJIT_UNLIKELY(opcode == OP_ONCE_NC)) + opcode = OP_ONCE; + +alt_max = has_alternatives ? no_alternatives(ccbegin) : 0; + +/* Decoding the needs_control_head in framesize. */ +if (opcode == OP_ONCE) + { + needs_control_head = (CURRENT_AS(bracket_backtrack)->u.framesize & 0x1) != 0; + CURRENT_AS(bracket_backtrack)->u.framesize >>= 1; + } + +if (ket != OP_KET && repeat_type != 0) + { + /* TMP1 is used in OP_KETRMIN below. */ + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(STACK_TOP), STACK(0)); + free_stack(common, 1); + if (repeat_type == OP_UPTO) + OP2(SLJIT_ADD, SLJIT_MEM1(SLJIT_LOCALS_REG), repeat_ptr, TMP1, 0, SLJIT_IMM, 1); + else + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), repeat_ptr, TMP1, 0); + } + +if (ket == OP_KETRMAX) + { + if (bra == OP_BRAZERO) + { + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(STACK_TOP), STACK(0)); + free_stack(common, 1); + brazero = CMP(SLJIT_C_EQUAL, TMP1, 0, SLJIT_IMM, 0); + } + } +else if (ket == OP_KETRMIN) + { + if (bra != OP_BRAMINZERO) + { + OP1(SLJIT_MOV, STR_PTR, 0, SLJIT_MEM1(STACK_TOP), STACK(0)); + if (repeat_type != 0) + { + /* TMP1 was set a few lines above. */ + CMPTO(SLJIT_C_NOT_EQUAL, TMP1, 0, SLJIT_IMM, 0, CURRENT_AS(bracket_backtrack)->recursive_matchingpath); + /* Drop STR_PTR for non-greedy plus quantifier. */ + if (opcode != OP_ONCE) + free_stack(common, 1); + } + else if (opcode >= OP_SBRA || opcode == OP_ONCE) + { + /* Checking zero-length iteration. */ + if (opcode != OP_ONCE || CURRENT_AS(bracket_backtrack)->u.framesize < 0) + CMPTO(SLJIT_C_NOT_EQUAL, STR_PTR, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr, CURRENT_AS(bracket_backtrack)->recursive_matchingpath); + else + { + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr); + CMPTO(SLJIT_C_NOT_EQUAL, STR_PTR, 0, SLJIT_MEM1(TMP1), (CURRENT_AS(bracket_backtrack)->u.framesize + 1) * sizeof(sljit_sw), CURRENT_AS(bracket_backtrack)->recursive_matchingpath); + } + /* Drop STR_PTR for non-greedy plus quantifier. */ + if (opcode != OP_ONCE) + free_stack(common, 1); + } + else + JUMPTO(SLJIT_JUMP, CURRENT_AS(bracket_backtrack)->recursive_matchingpath); + } + rmin_label = LABEL(); + if (repeat_type != 0) + OP2(SLJIT_ADD, SLJIT_MEM1(SLJIT_LOCALS_REG), repeat_ptr, SLJIT_MEM1(SLJIT_LOCALS_REG), repeat_ptr, SLJIT_IMM, 1); + } +else if (bra == OP_BRAZERO) + { + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(STACK_TOP), STACK(0)); + free_stack(common, 1); + brazero = CMP(SLJIT_C_NOT_EQUAL, TMP1, 0, SLJIT_IMM, 0); + } +else if (repeat_type == OP_EXACT) + { + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), repeat_ptr, SLJIT_IMM, 1); + exact_label = LABEL(); + } + +if (offset != 0) + { + if (common->capture_last_ptr != 0) + { + SLJIT_ASSERT(common->optimized_cbracket[offset >> 1] == 0); + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(STACK_TOP), STACK(0)); + OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(STACK_TOP), STACK(1)); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), common->capture_last_ptr, TMP1, 0); + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(STACK_TOP), STACK(2)); + free_stack(common, 3); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(offset), TMP2, 0); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(offset + 1), TMP1, 0); + } + else if (common->optimized_cbracket[offset >> 1] == 0) + { + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(STACK_TOP), STACK(0)); + OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(STACK_TOP), STACK(1)); + free_stack(common, 2); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(offset), TMP1, 0); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(offset + 1), TMP2, 0); + } + } + +if (SLJIT_UNLIKELY(opcode == OP_ONCE)) + { + if (CURRENT_AS(bracket_backtrack)->u.framesize >= 0) + { + OP1(SLJIT_MOV, STACK_TOP, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr); + add_jump(compiler, &common->revertframes, JUMP(SLJIT_FAST_CALL)); + } + once = JUMP(SLJIT_JUMP); + } +else if (SLJIT_UNLIKELY(opcode == OP_COND) || SLJIT_UNLIKELY(opcode == OP_SCOND)) + { + if (has_alternatives) + { + /* Always exactly one alternative. */ + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(STACK_TOP), STACK(0)); + free_stack(common, 1); + + alt_max = 2; + alt1 = CMP(SLJIT_C_EQUAL, TMP1, 0, SLJIT_IMM, sizeof(sljit_uw)); + } + } +else if (has_alternatives) + { + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(STACK_TOP), STACK(0)); + free_stack(common, 1); + + if (alt_max > 4) + { + /* Table jump if alt_max is greater than 4. */ + sljit_emit_ijump(compiler, SLJIT_JUMP, SLJIT_MEM1(TMP1), (sljit_sw)common->read_only_data_ptr); + add_label_addr(common); + } + else + { + if (alt_max == 4) + alt2 = CMP(SLJIT_C_GREATER_EQUAL, TMP1, 0, SLJIT_IMM, 2 * sizeof(sljit_uw)); + alt1 = CMP(SLJIT_C_GREATER_EQUAL, TMP1, 0, SLJIT_IMM, sizeof(sljit_uw)); + } + } + +COMPILE_BACKTRACKINGPATH(current->top); +if (current->topbacktracks) + set_jumps(current->topbacktracks, LABEL()); + +if (SLJIT_UNLIKELY(opcode == OP_COND) || SLJIT_UNLIKELY(opcode == OP_SCOND)) + { + /* Conditional block always has at most one alternative. */ + if (ccbegin[1 + LINK_SIZE] >= OP_ASSERT && ccbegin[1 + LINK_SIZE] <= OP_ASSERTBACK_NOT) + { + SLJIT_ASSERT(has_alternatives); + assert = CURRENT_AS(bracket_backtrack)->u.assert; + if (assert->framesize >= 0 && (ccbegin[1 + LINK_SIZE] == OP_ASSERT || ccbegin[1 + LINK_SIZE] == OP_ASSERTBACK)) + { + OP1(SLJIT_MOV, STACK_TOP, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), assert->private_data_ptr); + add_jump(compiler, &common->revertframes, JUMP(SLJIT_FAST_CALL)); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), assert->private_data_ptr, SLJIT_MEM1(STACK_TOP), assert->framesize * sizeof(sljit_sw)); + } + cond = JUMP(SLJIT_JUMP); + set_jumps(CURRENT_AS(bracket_backtrack)->u.assert->condfailed, LABEL()); + } + else if (CURRENT_AS(bracket_backtrack)->u.condfailed != NULL) + { + SLJIT_ASSERT(has_alternatives); + cond = JUMP(SLJIT_JUMP); + set_jumps(CURRENT_AS(bracket_backtrack)->u.condfailed, LABEL()); + } + else + SLJIT_ASSERT(!has_alternatives); + } + +if (has_alternatives) + { + alt_count = sizeof(sljit_uw); + do + { + current->top = NULL; + current->topbacktracks = NULL; + current->nextbacktracks = NULL; + /* Conditional blocks always have an additional alternative, even if it is empty. */ + if (*cc == OP_ALT) + { + ccprev = cc + 1 + LINK_SIZE; + cc += GET(cc, 1); + if (opcode != OP_COND && opcode != OP_SCOND) + { + if (opcode != OP_ONCE) + { + if (private_data_ptr != 0) + OP1(SLJIT_MOV, STR_PTR, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr); + else + OP1(SLJIT_MOV, STR_PTR, 0, SLJIT_MEM1(STACK_TOP), STACK(0)); + } + else + OP1(SLJIT_MOV, STR_PTR, 0, SLJIT_MEM1(STACK_TOP), STACK(needs_control_head ? 1 : 0)); + } + compile_matchingpath(common, ccprev, cc, current); + if (SLJIT_UNLIKELY(sljit_get_compiler_error(compiler))) + return; + } + + /* Instructions after the current alternative is successfully matched. */ + /* There is a similar code in compile_bracket_matchingpath. */ + if (opcode == OP_ONCE) + match_once_common(common, ket, CURRENT_AS(bracket_backtrack)->u.framesize, private_data_ptr, has_alternatives, needs_control_head); + + stacksize = 0; + if (repeat_type == OP_MINUPTO) + { + /* We need to preserve the counter. TMP2 will be used below. */ + OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), repeat_ptr); + stacksize++; + } + if (ket != OP_KET || bra != OP_BRA) + stacksize++; + if (offset != 0) + { + if (common->capture_last_ptr != 0) + stacksize++; + if (common->optimized_cbracket[offset >> 1] == 0) + stacksize += 2; + } + if (opcode != OP_ONCE) + stacksize++; + + if (stacksize > 0) + allocate_stack(common, stacksize); + + stacksize = 0; + if (repeat_type == OP_MINUPTO) + { + /* TMP2 was set above. */ + OP2(SLJIT_SUB, SLJIT_MEM1(STACK_TOP), STACK(stacksize), TMP2, 0, SLJIT_IMM, 1); + stacksize++; + } + + if (ket != OP_KET || bra != OP_BRA) + { + if (ket != OP_KET) + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(stacksize), STR_PTR, 0); + else + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(stacksize), SLJIT_IMM, 0); + stacksize++; + } + + if (offset != 0) + stacksize = match_capture_common(common, stacksize, offset, private_data_ptr); + + if (opcode != OP_ONCE) + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(stacksize), SLJIT_IMM, alt_count); + + if (offset != 0 && ket == OP_KETRMAX && common->optimized_cbracket[offset >> 1] != 0) + { + /* If ket is not OP_KETRMAX, this code path is executed after the jump to alternative_matchingpath. */ + SLJIT_ASSERT(private_data_ptr == OVECTOR(offset + 0)); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(offset + 1), STR_PTR, 0); + } + + JUMPTO(SLJIT_JUMP, CURRENT_AS(bracket_backtrack)->alternative_matchingpath); + + if (opcode != OP_ONCE) + { + if (alt_max > 4) + add_label_addr(common); + else + { + if (alt_count != 2 * sizeof(sljit_uw)) + { + JUMPHERE(alt1); + if (alt_max == 3 && alt_count == sizeof(sljit_uw)) + alt2 = CMP(SLJIT_C_GREATER_EQUAL, TMP1, 0, SLJIT_IMM, 2 * sizeof(sljit_uw)); + } + else + { + JUMPHERE(alt2); + if (alt_max == 4) + alt1 = CMP(SLJIT_C_GREATER_EQUAL, TMP1, 0, SLJIT_IMM, 3 * sizeof(sljit_uw)); + } + } + alt_count += sizeof(sljit_uw); + } + + COMPILE_BACKTRACKINGPATH(current->top); + if (current->topbacktracks) + set_jumps(current->topbacktracks, LABEL()); + SLJIT_ASSERT(!current->nextbacktracks); + } + while (*cc == OP_ALT); + + if (cond != NULL) + { + SLJIT_ASSERT(opcode == OP_COND || opcode == OP_SCOND); + assert = CURRENT_AS(bracket_backtrack)->u.assert; + if ((ccbegin[1 + LINK_SIZE] == OP_ASSERT_NOT || ccbegin[1 + LINK_SIZE] == OP_ASSERTBACK_NOT) && assert->framesize >= 0) + { + OP1(SLJIT_MOV, STACK_TOP, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), assert->private_data_ptr); + add_jump(compiler, &common->revertframes, JUMP(SLJIT_FAST_CALL)); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), assert->private_data_ptr, SLJIT_MEM1(STACK_TOP), assert->framesize * sizeof(sljit_sw)); + } + JUMPHERE(cond); + } + + /* Free the STR_PTR. */ + if (private_data_ptr == 0) + free_stack(common, 1); + } + +if (offset != 0) + { + /* Using both tmp register is better for instruction scheduling. */ + if (common->optimized_cbracket[offset >> 1] != 0) + { + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(STACK_TOP), STACK(0)); + OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(STACK_TOP), STACK(1)); + free_stack(common, 2); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(offset), TMP1, 0); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(offset + 1), TMP2, 0); + } + else + { + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(STACK_TOP), STACK(0)); + free_stack(common, 1); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr, TMP1, 0); + } + } +else if (opcode == OP_SBRA || opcode == OP_SCOND) + { + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr, SLJIT_MEM1(STACK_TOP), STACK(0)); + free_stack(common, 1); + } +else if (opcode == OP_ONCE) + { + cc = ccbegin + GET(ccbegin, 1); + stacksize = needs_control_head ? 1 : 0; + + if (CURRENT_AS(bracket_backtrack)->u.framesize >= 0) + { + /* Reset head and drop saved frame. */ + stacksize += CURRENT_AS(bracket_backtrack)->u.framesize + ((ket != OP_KET || *cc == OP_ALT) ? 2 : 1); + } + else if (ket == OP_KETRMAX || (*cc == OP_ALT && ket != OP_KETRMIN)) + { + /* The STR_PTR must be released. */ + stacksize++; + } + free_stack(common, stacksize); + + JUMPHERE(once); + /* Restore previous private_data_ptr */ + if (CURRENT_AS(bracket_backtrack)->u.framesize >= 0) + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr, SLJIT_MEM1(STACK_TOP), CURRENT_AS(bracket_backtrack)->u.framesize * sizeof(sljit_sw)); + else if (ket == OP_KETRMIN) + { + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(STACK_TOP), STACK(1)); + /* See the comment below. */ + free_stack(common, 2); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), private_data_ptr, TMP1, 0); + } + } + +if (repeat_type == OP_EXACT) + { + OP2(SLJIT_ADD, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), repeat_ptr, SLJIT_IMM, 1); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), repeat_ptr, TMP1, 0); + CMPTO(SLJIT_C_LESS_EQUAL, TMP1, 0, SLJIT_IMM, repeat_count, exact_label); + } +else if (ket == OP_KETRMAX) + { + OP1(SLJIT_MOV, STR_PTR, 0, SLJIT_MEM1(STACK_TOP), STACK(0)); + if (bra != OP_BRAZERO) + free_stack(common, 1); + + CMPTO(SLJIT_C_NOT_EQUAL, STR_PTR, 0, SLJIT_IMM, 0, CURRENT_AS(bracket_backtrack)->recursive_matchingpath); + if (bra == OP_BRAZERO) + { + OP1(SLJIT_MOV, STR_PTR, 0, SLJIT_MEM1(STACK_TOP), STACK(1)); + JUMPTO(SLJIT_JUMP, CURRENT_AS(bracket_backtrack)->zero_matchingpath); + JUMPHERE(brazero); + free_stack(common, 1); + } + } +else if (ket == OP_KETRMIN) + { + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(STACK_TOP), STACK(0)); + + /* OP_ONCE removes everything in case of a backtrack, so we don't + need to explicitly release the STR_PTR. The extra release would + affect badly the free_stack(2) above. */ + if (opcode != OP_ONCE) + free_stack(common, 1); + CMPTO(SLJIT_C_NOT_EQUAL, TMP1, 0, SLJIT_IMM, 0, rmin_label); + if (opcode == OP_ONCE) + free_stack(common, bra == OP_BRAMINZERO ? 2 : 1); + else if (bra == OP_BRAMINZERO) + free_stack(common, 1); + } +else if (bra == OP_BRAZERO) + { + OP1(SLJIT_MOV, STR_PTR, 0, SLJIT_MEM1(STACK_TOP), STACK(0)); + JUMPTO(SLJIT_JUMP, CURRENT_AS(bracket_backtrack)->zero_matchingpath); + JUMPHERE(brazero); + } +} + +static SLJIT_INLINE void compile_bracketpos_backtrackingpath(compiler_common *common, struct backtrack_common *current) +{ +DEFINE_COMPILER; +int offset; +struct sljit_jump *jump; + +if (CURRENT_AS(bracketpos_backtrack)->framesize < 0) + { + if (*current->cc == OP_CBRAPOS || *current->cc == OP_SCBRAPOS) + { + offset = (GET2(current->cc, 1 + LINK_SIZE)) << 1; + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(STACK_TOP), STACK(0)); + OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(STACK_TOP), STACK(1)); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(offset), TMP1, 0); + if (common->capture_last_ptr != 0) + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(STACK_TOP), STACK(2)); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(offset + 1), TMP2, 0); + if (common->capture_last_ptr != 0) + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), common->capture_last_ptr, TMP1, 0); + } + set_jumps(current->topbacktracks, LABEL()); + free_stack(common, CURRENT_AS(bracketpos_backtrack)->stacksize); + return; + } + +OP1(SLJIT_MOV, STACK_TOP, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), CURRENT_AS(bracketpos_backtrack)->private_data_ptr); +add_jump(compiler, &common->revertframes, JUMP(SLJIT_FAST_CALL)); + +if (current->topbacktracks) + { + jump = JUMP(SLJIT_JUMP); + set_jumps(current->topbacktracks, LABEL()); + /* Drop the stack frame. */ + free_stack(common, CURRENT_AS(bracketpos_backtrack)->stacksize); + JUMPHERE(jump); + } +OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), CURRENT_AS(bracketpos_backtrack)->private_data_ptr, SLJIT_MEM1(STACK_TOP), CURRENT_AS(bracketpos_backtrack)->framesize * sizeof(sljit_sw)); +} + +static SLJIT_INLINE void compile_braminzero_backtrackingpath(compiler_common *common, struct backtrack_common *current) +{ +assert_backtrack backtrack; + +current->top = NULL; +current->topbacktracks = NULL; +current->nextbacktracks = NULL; +if (current->cc[1] > OP_ASSERTBACK_NOT) + { + /* Manual call of compile_bracket_matchingpath and compile_bracket_backtrackingpath. */ + compile_bracket_matchingpath(common, current->cc, current); + compile_bracket_backtrackingpath(common, current->top); + } +else + { + memset(&backtrack, 0, sizeof(backtrack)); + backtrack.common.cc = current->cc; + backtrack.matchingpath = CURRENT_AS(braminzero_backtrack)->matchingpath; + /* Manual call of compile_assert_matchingpath. */ + compile_assert_matchingpath(common, current->cc, &backtrack, FALSE); + } +SLJIT_ASSERT(!current->nextbacktracks && !current->topbacktracks); +} + +static SLJIT_INLINE void compile_control_verb_backtrackingpath(compiler_common *common, struct backtrack_common *current) +{ +DEFINE_COMPILER; +pcre_uchar opcode = *current->cc; +struct sljit_label *loop; +struct sljit_jump *jump; + +if (opcode == OP_THEN || opcode == OP_THEN_ARG) + { + if (common->then_trap != NULL) + { + SLJIT_ASSERT(common->control_head_ptr != 0); + + OP1(SLJIT_MOV, STACK_TOP, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), common->control_head_ptr); + OP1(SLJIT_MOV, TMP1, 0, SLJIT_IMM, type_then_trap); + OP1(SLJIT_MOV, TMP2, 0, SLJIT_IMM, common->then_trap->start); + jump = JUMP(SLJIT_JUMP); + + loop = LABEL(); + OP1(SLJIT_MOV, STACK_TOP, 0, SLJIT_MEM1(STACK_TOP), -(int)sizeof(sljit_sw)); + JUMPHERE(jump); + CMPTO(SLJIT_C_NOT_EQUAL, SLJIT_MEM1(STACK_TOP), -(int)(2 * sizeof(sljit_sw)), TMP1, 0, loop); + CMPTO(SLJIT_C_NOT_EQUAL, SLJIT_MEM1(STACK_TOP), -(int)(3 * sizeof(sljit_sw)), TMP2, 0, loop); + add_jump(compiler, &common->then_trap->quit, JUMP(SLJIT_JUMP)); + return; + } + else if (common->positive_assert) + { + add_jump(compiler, &common->positive_assert_quit, JUMP(SLJIT_JUMP)); + return; + } + } + +if (common->local_exit) + { + if (common->quit_label == NULL) + add_jump(compiler, &common->quit, JUMP(SLJIT_JUMP)); + else + JUMPTO(SLJIT_JUMP, common->quit_label); + return; + } + +if (opcode == OP_SKIP_ARG) + { + SLJIT_ASSERT(common->control_head_ptr != 0); + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), common->control_head_ptr); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), LOCALS0, STACK_TOP, 0); + OP1(SLJIT_MOV, STACK_TOP, 0, SLJIT_IMM, (sljit_sw)(current->cc + 2)); + sljit_emit_ijump(compiler, SLJIT_CALL2, SLJIT_IMM, SLJIT_FUNC_OFFSET(do_search_mark)); + OP1(SLJIT_MOV, STACK_TOP, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), LOCALS0); + + OP1(SLJIT_MOV, STR_PTR, 0, TMP1, 0); + add_jump(compiler, &common->reset_match, CMP(SLJIT_C_NOT_EQUAL, STR_PTR, 0, SLJIT_IMM, -1)); + return; + } + +if (opcode == OP_SKIP) + OP1(SLJIT_MOV, STR_PTR, 0, SLJIT_MEM1(STACK_TOP), STACK(0)); +else + OP1(SLJIT_MOV, STR_PTR, 0, SLJIT_IMM, 0); +add_jump(compiler, &common->reset_match, JUMP(SLJIT_JUMP)); +} + +static SLJIT_INLINE void compile_then_trap_backtrackingpath(compiler_common *common, struct backtrack_common *current) +{ +DEFINE_COMPILER; +struct sljit_jump *jump; +int size; + +if (CURRENT_AS(then_trap_backtrack)->then_trap) + { + common->then_trap = CURRENT_AS(then_trap_backtrack)->then_trap; + return; + } + +size = CURRENT_AS(then_trap_backtrack)->framesize; +size = 3 + (size < 0 ? 0 : size); + +OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(STACK_TOP), STACK(size - 3)); +free_stack(common, size); +jump = JUMP(SLJIT_JUMP); + +set_jumps(CURRENT_AS(then_trap_backtrack)->quit, LABEL()); +/* STACK_TOP is set by THEN. */ +if (CURRENT_AS(then_trap_backtrack)->framesize >= 0) + add_jump(compiler, &common->revertframes, JUMP(SLJIT_FAST_CALL)); +OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(STACK_TOP), STACK(0)); +free_stack(common, 3); + +JUMPHERE(jump); +OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), common->control_head_ptr, TMP1, 0); +} + +static void compile_backtrackingpath(compiler_common *common, struct backtrack_common *current) +{ +DEFINE_COMPILER; +then_trap_backtrack *save_then_trap = common->then_trap; + +while (current) + { + if (current->nextbacktracks != NULL) + set_jumps(current->nextbacktracks, LABEL()); + switch(*current->cc) + { + case OP_SET_SOM: + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(STACK_TOP), STACK(0)); + free_stack(common, 1); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(0), TMP1, 0); + break; + + case OP_STAR: + case OP_MINSTAR: + case OP_PLUS: + case OP_MINPLUS: + case OP_QUERY: + case OP_MINQUERY: + case OP_UPTO: + case OP_MINUPTO: + case OP_EXACT: + case OP_POSSTAR: + case OP_POSPLUS: + case OP_POSQUERY: + case OP_POSUPTO: + case OP_STARI: + case OP_MINSTARI: + case OP_PLUSI: + case OP_MINPLUSI: + case OP_QUERYI: + case OP_MINQUERYI: + case OP_UPTOI: + case OP_MINUPTOI: + case OP_EXACTI: + case OP_POSSTARI: + case OP_POSPLUSI: + case OP_POSQUERYI: + case OP_POSUPTOI: + case OP_NOTSTAR: + case OP_NOTMINSTAR: + case OP_NOTPLUS: + case OP_NOTMINPLUS: + case OP_NOTQUERY: + case OP_NOTMINQUERY: + case OP_NOTUPTO: + case OP_NOTMINUPTO: + case OP_NOTEXACT: + case OP_NOTPOSSTAR: + case OP_NOTPOSPLUS: + case OP_NOTPOSQUERY: + case OP_NOTPOSUPTO: + case OP_NOTSTARI: + case OP_NOTMINSTARI: + case OP_NOTPLUSI: + case OP_NOTMINPLUSI: + case OP_NOTQUERYI: + case OP_NOTMINQUERYI: + case OP_NOTUPTOI: + case OP_NOTMINUPTOI: + case OP_NOTEXACTI: + case OP_NOTPOSSTARI: + case OP_NOTPOSPLUSI: + case OP_NOTPOSQUERYI: + case OP_NOTPOSUPTOI: + case OP_TYPESTAR: + case OP_TYPEMINSTAR: + case OP_TYPEPLUS: + case OP_TYPEMINPLUS: + case OP_TYPEQUERY: + case OP_TYPEMINQUERY: + case OP_TYPEUPTO: + case OP_TYPEMINUPTO: + case OP_TYPEEXACT: + case OP_TYPEPOSSTAR: + case OP_TYPEPOSPLUS: + case OP_TYPEPOSQUERY: + case OP_TYPEPOSUPTO: + case OP_CLASS: + case OP_NCLASS: +#if defined SUPPORT_UTF || !defined COMPILE_PCRE8 + case OP_XCLASS: +#endif + compile_iterator_backtrackingpath(common, current); + break; + + case OP_REF: + case OP_REFI: + case OP_DNREF: + case OP_DNREFI: + compile_ref_iterator_backtrackingpath(common, current); + break; + + case OP_RECURSE: + compile_recurse_backtrackingpath(common, current); + break; + + case OP_ASSERT: + case OP_ASSERT_NOT: + case OP_ASSERTBACK: + case OP_ASSERTBACK_NOT: + compile_assert_backtrackingpath(common, current); + break; + + case OP_ONCE: + case OP_ONCE_NC: + case OP_BRA: + case OP_CBRA: + case OP_COND: + case OP_SBRA: + case OP_SCBRA: + case OP_SCOND: + compile_bracket_backtrackingpath(common, current); + break; + + case OP_BRAZERO: + if (current->cc[1] > OP_ASSERTBACK_NOT) + compile_bracket_backtrackingpath(common, current); + else + compile_assert_backtrackingpath(common, current); + break; + + case OP_BRAPOS: + case OP_CBRAPOS: + case OP_SBRAPOS: + case OP_SCBRAPOS: + case OP_BRAPOSZERO: + compile_bracketpos_backtrackingpath(common, current); + break; + + case OP_BRAMINZERO: + compile_braminzero_backtrackingpath(common, current); + break; + + case OP_MARK: + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(STACK_TOP), STACK(common->has_skip_arg ? 4 : 0)); + if (common->has_skip_arg) + OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(STACK_TOP), STACK(0)); + free_stack(common, common->has_skip_arg ? 5 : 1); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), common->mark_ptr, TMP1, 0); + if (common->has_skip_arg) + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), common->control_head_ptr, TMP2, 0); + break; + + case OP_THEN: + case OP_THEN_ARG: + case OP_PRUNE: + case OP_PRUNE_ARG: + case OP_SKIP: + case OP_SKIP_ARG: + compile_control_verb_backtrackingpath(common, current); + break; + + case OP_COMMIT: + if (!common->local_exit) + OP1(SLJIT_MOV, SLJIT_RETURN_REG, 0, SLJIT_IMM, PCRE_ERROR_NOMATCH); + if (common->quit_label == NULL) + add_jump(compiler, &common->quit, JUMP(SLJIT_JUMP)); + else + JUMPTO(SLJIT_JUMP, common->quit_label); + break; + + case OP_CALLOUT: + case OP_FAIL: + case OP_ACCEPT: + case OP_ASSERT_ACCEPT: + set_jumps(current->topbacktracks, LABEL()); + break; + + case OP_THEN_TRAP: + /* A virtual opcode for then traps. */ + compile_then_trap_backtrackingpath(common, current); + break; + + default: + SLJIT_ASSERT_STOP(); + break; + } + current = current->prev; + } +common->then_trap = save_then_trap; +} + +static SLJIT_INLINE void compile_recurse(compiler_common *common) +{ +DEFINE_COMPILER; +pcre_uchar *cc = common->start + common->currententry->start; +pcre_uchar *ccbegin = cc + 1 + LINK_SIZE + (*cc == OP_BRA ? 0 : IMM2_SIZE); +pcre_uchar *ccend = bracketend(cc); +BOOL needs_control_head; +int framesize = get_framesize(common, cc, NULL, TRUE, &needs_control_head); +int private_data_size = get_private_data_copy_length(common, ccbegin, ccend, needs_control_head); +int alternativesize; +BOOL needs_frame; +backtrack_common altbacktrack; +struct sljit_jump *jump; + +/* Recurse captures then. */ +common->then_trap = NULL; + +SLJIT_ASSERT(*cc == OP_BRA || *cc == OP_CBRA || *cc == OP_CBRAPOS || *cc == OP_SCBRA || *cc == OP_SCBRAPOS); +needs_frame = framesize >= 0; +if (!needs_frame) + framesize = 0; +alternativesize = *(cc + GET(cc, 1)) == OP_ALT ? 1 : 0; + +SLJIT_ASSERT(common->currententry->entry == NULL && common->recursive_head_ptr != 0); +common->currententry->entry = LABEL(); +set_jumps(common->currententry->calls, common->currententry->entry); + +sljit_emit_fast_enter(compiler, TMP2, 0); +allocate_stack(common, private_data_size + framesize + alternativesize); +OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(private_data_size + framesize + alternativesize - 1), TMP2, 0); +copy_private_data(common, ccbegin, ccend, TRUE, private_data_size + framesize + alternativesize, framesize + alternativesize, needs_control_head); +if (needs_control_head) + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), common->control_head_ptr, SLJIT_IMM, 0); +OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), common->recursive_head_ptr, STACK_TOP, 0); +if (needs_frame) + init_frame(common, cc, NULL, framesize + alternativesize - 1, alternativesize, TRUE); + +if (alternativesize > 0) + OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(0), STR_PTR, 0); + +memset(&altbacktrack, 0, sizeof(backtrack_common)); +common->quit_label = NULL; +common->accept_label = NULL; +common->quit = NULL; +common->accept = NULL; +altbacktrack.cc = ccbegin; +cc += GET(cc, 1); +while (1) + { + altbacktrack.top = NULL; + altbacktrack.topbacktracks = NULL; + + if (altbacktrack.cc != ccbegin) + OP1(SLJIT_MOV, STR_PTR, 0, SLJIT_MEM1(STACK_TOP), STACK(0)); + + compile_matchingpath(common, altbacktrack.cc, cc, &altbacktrack); + if (SLJIT_UNLIKELY(sljit_get_compiler_error(compiler))) + return; + + add_jump(compiler, &common->accept, JUMP(SLJIT_JUMP)); + + compile_backtrackingpath(common, altbacktrack.top); + if (SLJIT_UNLIKELY(sljit_get_compiler_error(compiler))) + return; + set_jumps(altbacktrack.topbacktracks, LABEL()); + + if (*cc != OP_ALT) + break; + + altbacktrack.cc = cc + 1 + LINK_SIZE; + cc += GET(cc, 1); + } + +/* None of them matched. */ +OP1(SLJIT_MOV, TMP3, 0, SLJIT_IMM, 0); +jump = JUMP(SLJIT_JUMP); + +if (common->quit != NULL) + { + set_jumps(common->quit, LABEL()); + OP1(SLJIT_MOV, STACK_TOP, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), common->recursive_head_ptr); + if (needs_frame) + { + OP2(SLJIT_SUB, STACK_TOP, 0, STACK_TOP, 0, SLJIT_IMM, (framesize + alternativesize) * sizeof(sljit_sw)); + add_jump(compiler, &common->revertframes, JUMP(SLJIT_FAST_CALL)); + OP2(SLJIT_ADD, STACK_TOP, 0, STACK_TOP, 0, SLJIT_IMM, (framesize + alternativesize) * sizeof(sljit_sw)); + } + OP1(SLJIT_MOV, TMP3, 0, SLJIT_IMM, 0); + common->quit = NULL; + add_jump(compiler, &common->quit, JUMP(SLJIT_JUMP)); + } + +set_jumps(common->accept, LABEL()); +OP1(SLJIT_MOV, STACK_TOP, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), common->recursive_head_ptr); +if (needs_frame) + { + OP2(SLJIT_SUB, STACK_TOP, 0, STACK_TOP, 0, SLJIT_IMM, (framesize + alternativesize) * sizeof(sljit_sw)); + add_jump(compiler, &common->revertframes, JUMP(SLJIT_FAST_CALL)); + OP2(SLJIT_ADD, STACK_TOP, 0, STACK_TOP, 0, SLJIT_IMM, (framesize + alternativesize) * sizeof(sljit_sw)); + } +OP1(SLJIT_MOV, TMP3, 0, SLJIT_IMM, 1); + +JUMPHERE(jump); +if (common->quit != NULL) + set_jumps(common->quit, LABEL()); +copy_private_data(common, ccbegin, ccend, FALSE, private_data_size + framesize + alternativesize, framesize + alternativesize, needs_control_head); +free_stack(common, private_data_size + framesize + alternativesize); +if (needs_control_head) + { + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(STACK_TOP), 2 * sizeof(sljit_sw)); + OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(STACK_TOP), sizeof(sljit_sw)); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), common->recursive_head_ptr, TMP1, 0); + OP1(SLJIT_MOV, TMP1, 0, TMP3, 0); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), common->control_head_ptr, TMP2, 0); + } +else + { + OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(STACK_TOP), sizeof(sljit_sw)); + OP1(SLJIT_MOV, TMP1, 0, TMP3, 0); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), common->recursive_head_ptr, TMP2, 0); + } +sljit_emit_fast_return(compiler, SLJIT_MEM1(STACK_TOP), 0); +} + +#undef COMPILE_BACKTRACKINGPATH +#undef CURRENT_AS + +void +PRIV(jit_compile)(const REAL_PCRE *re, PUBL(extra) *extra, int mode) +{ +struct sljit_compiler *compiler; +backtrack_common rootbacktrack; +compiler_common common_data; +compiler_common *common = &common_data; +const pcre_uint8 *tables = re->tables; +pcre_study_data *study; +int private_data_size; +pcre_uchar *ccend; +executable_functions *functions; +void *executable_func; +sljit_uw executable_size; +sljit_uw total_length; +label_addr_list *label_addr; +struct sljit_label *mainloop_label = NULL; +struct sljit_label *continue_match_label; +struct sljit_label *empty_match_found_label = NULL; +struct sljit_label *empty_match_backtrack_label = NULL; +struct sljit_label *reset_match_label; +struct sljit_label *quit_label; +struct sljit_jump *jump; +struct sljit_jump *minlength_check_failed = NULL; +struct sljit_jump *reqbyte_notfound = NULL; +struct sljit_jump *empty_match = NULL; + +SLJIT_ASSERT((extra->flags & PCRE_EXTRA_STUDY_DATA) != 0); +study = extra->study_data; + +if (!tables) + tables = PRIV(default_tables); + +memset(&rootbacktrack, 0, sizeof(backtrack_common)); +memset(common, 0, sizeof(compiler_common)); +rootbacktrack.cc = (pcre_uchar *)re + re->name_table_offset + re->name_count * re->name_entry_size; + +common->start = rootbacktrack.cc; +common->read_only_data = NULL; +common->read_only_data_size = 0; +common->read_only_data_ptr = NULL; +common->fcc = tables + fcc_offset; +common->lcc = (sljit_sw)(tables + lcc_offset); +common->mode = mode; +common->might_be_empty = study->minlength == 0; +common->nltype = NLTYPE_FIXED; +switch(re->options & PCRE_NEWLINE_BITS) + { + case 0: + /* Compile-time default */ + switch(NEWLINE) + { + case -1: common->newline = (CHAR_CR << 8) | CHAR_NL; common->nltype = NLTYPE_ANY; break; + case -2: common->newline = (CHAR_CR << 8) | CHAR_NL; common->nltype = NLTYPE_ANYCRLF; break; + default: common->newline = NEWLINE; break; + } + break; + case PCRE_NEWLINE_CR: common->newline = CHAR_CR; break; + case PCRE_NEWLINE_LF: common->newline = CHAR_NL; break; + case PCRE_NEWLINE_CR+ + PCRE_NEWLINE_LF: common->newline = (CHAR_CR << 8) | CHAR_NL; break; + case PCRE_NEWLINE_ANY: common->newline = (CHAR_CR << 8) | CHAR_NL; common->nltype = NLTYPE_ANY; break; + case PCRE_NEWLINE_ANYCRLF: common->newline = (CHAR_CR << 8) | CHAR_NL; common->nltype = NLTYPE_ANYCRLF; break; + default: return; + } +common->nlmax = READ_CHAR_MAX; +common->nlmin = 0; +if ((re->options & PCRE_BSR_ANYCRLF) != 0) + common->bsr_nltype = NLTYPE_ANYCRLF; +else if ((re->options & PCRE_BSR_UNICODE) != 0) + common->bsr_nltype = NLTYPE_ANY; +else + { +#ifdef BSR_ANYCRLF + common->bsr_nltype = NLTYPE_ANYCRLF; +#else + common->bsr_nltype = NLTYPE_ANY; +#endif + } +common->bsr_nlmax = READ_CHAR_MAX; +common->bsr_nlmin = 0; +common->endonly = (re->options & PCRE_DOLLAR_ENDONLY) != 0; +common->ctypes = (sljit_sw)(tables + ctypes_offset); +common->name_table = ((pcre_uchar *)re) + re->name_table_offset; +common->name_count = re->name_count; +common->name_entry_size = re->name_entry_size; +common->jscript_compat = (re->options & PCRE_JAVASCRIPT_COMPAT) != 0; +#ifdef SUPPORT_UTF +/* PCRE_UTF[16|32] have the same value as PCRE_UTF8. */ +common->utf = (re->options & PCRE_UTF8) != 0; +#ifdef SUPPORT_UCP +common->use_ucp = (re->options & PCRE_UCP) != 0; +#endif +if (common->utf) + { + if (common->nltype == NLTYPE_ANY) + common->nlmax = 0x2029; + else if (common->nltype == NLTYPE_ANYCRLF) + common->nlmax = (CHAR_CR > CHAR_NL) ? CHAR_CR : CHAR_NL; + else + { + /* We only care about the first newline character. */ + common->nlmax = common->newline & 0xff; + } + + if (common->nltype == NLTYPE_FIXED) + common->nlmin = common->newline & 0xff; + else + common->nlmin = (CHAR_CR < CHAR_NL) ? CHAR_CR : CHAR_NL; + + if (common->bsr_nltype == NLTYPE_ANY) + common->bsr_nlmax = 0x2029; + else + common->bsr_nlmax = (CHAR_CR > CHAR_NL) ? CHAR_CR : CHAR_NL; + common->bsr_nlmin = (CHAR_CR < CHAR_NL) ? CHAR_CR : CHAR_NL; + } +#endif /* SUPPORT_UTF */ +ccend = bracketend(common->start); + +/* Calculate the local space size on the stack. */ +common->ovector_start = LIMIT_MATCH + sizeof(sljit_sw); +common->optimized_cbracket = (pcre_uint8 *)SLJIT_MALLOC(re->top_bracket + 1); +if (!common->optimized_cbracket) + return; +#if defined DEBUG_FORCE_UNOPTIMIZED_CBRAS && DEBUG_FORCE_UNOPTIMIZED_CBRAS == 1 +memset(common->optimized_cbracket, 0, re->top_bracket + 1); +#else +memset(common->optimized_cbracket, 1, re->top_bracket + 1); +#endif + +SLJIT_ASSERT(*common->start == OP_BRA && ccend[-(1 + LINK_SIZE)] == OP_KET); +#if defined DEBUG_FORCE_UNOPTIMIZED_CBRAS && DEBUG_FORCE_UNOPTIMIZED_CBRAS == 2 +common->capture_last_ptr = common->ovector_start; +common->ovector_start += sizeof(sljit_sw); +#endif +if (!check_opcode_types(common, common->start, ccend)) + { + SLJIT_FREE(common->optimized_cbracket); + return; + } + +/* Checking flags and updating ovector_start. */ +if (mode == JIT_COMPILE && (re->flags & PCRE_REQCHSET) != 0 && (re->options & PCRE_NO_START_OPTIMIZE) == 0) + { + common->req_char_ptr = common->ovector_start; + common->ovector_start += sizeof(sljit_sw); + } +if (mode != JIT_COMPILE) + { + common->start_used_ptr = common->ovector_start; + common->ovector_start += sizeof(sljit_sw); + if (mode == JIT_PARTIAL_SOFT_COMPILE) + { + common->hit_start = common->ovector_start; + common->ovector_start += 2 * sizeof(sljit_sw); + } + else + { + SLJIT_ASSERT(mode == JIT_PARTIAL_HARD_COMPILE); + common->needs_start_ptr = TRUE; + } + } +if ((re->options & PCRE_FIRSTLINE) != 0) + { + common->first_line_end = common->ovector_start; + common->ovector_start += sizeof(sljit_sw); + } +#if defined DEBUG_FORCE_CONTROL_HEAD && DEBUG_FORCE_CONTROL_HEAD +common->control_head_ptr = 1; +#endif +if (common->control_head_ptr != 0) + { + common->control_head_ptr = common->ovector_start; + common->ovector_start += sizeof(sljit_sw); + } +if (common->needs_start_ptr && common->has_set_som) + { + /* Saving the real start pointer is necessary. */ + common->start_ptr = common->ovector_start; + common->ovector_start += sizeof(sljit_sw); + } +else + common->needs_start_ptr = FALSE; + +/* Aligning ovector to even number of sljit words. */ +if ((common->ovector_start & sizeof(sljit_sw)) != 0) + common->ovector_start += sizeof(sljit_sw); + +if (common->start_ptr == 0) + common->start_ptr = OVECTOR(0); + +/* Capturing brackets cannot be optimized if callouts are allowed. */ +if (common->capture_last_ptr != 0) + memset(common->optimized_cbracket, 0, re->top_bracket + 1); + +SLJIT_ASSERT(!(common->req_char_ptr != 0 && common->start_used_ptr != 0)); +common->cbra_ptr = OVECTOR_START + (re->top_bracket + 1) * 2 * sizeof(sljit_sw); + +total_length = ccend - common->start; +common->private_data_ptrs = (sljit_si *)SLJIT_MALLOC(total_length * (sizeof(sljit_si) + (common->has_then ? 1 : 0))); +if (!common->private_data_ptrs) + { + SLJIT_FREE(common->optimized_cbracket); + return; + } +memset(common->private_data_ptrs, 0, total_length * sizeof(sljit_si)); + +private_data_size = common->cbra_ptr + (re->top_bracket + 1) * sizeof(sljit_sw); +set_private_data_ptrs(common, &private_data_size, ccend); +if (private_data_size > SLJIT_MAX_LOCAL_SIZE) + { + SLJIT_FREE(common->private_data_ptrs); + SLJIT_FREE(common->optimized_cbracket); + return; + } + +if (common->has_then) + { + common->then_offsets = (pcre_uint8 *)(common->private_data_ptrs + total_length); + memset(common->then_offsets, 0, total_length); + set_then_offsets(common, common->start, NULL); + } + +if (common->read_only_data_size > 0) + { + common->read_only_data = (sljit_uw *)SLJIT_MALLOC(common->read_only_data_size); + if (common->read_only_data == NULL) + { + SLJIT_FREE(common->optimized_cbracket); + SLJIT_FREE(common->private_data_ptrs); + return; + } + common->read_only_data_ptr = common->read_only_data; + } + +compiler = sljit_create_compiler(); +if (!compiler) + { + SLJIT_FREE(common->optimized_cbracket); + SLJIT_FREE(common->private_data_ptrs); + if (common->read_only_data) + SLJIT_FREE(common->read_only_data); + return; + } +common->compiler = compiler; + +/* Main pcre_jit_exec entry. */ +sljit_emit_enter(compiler, 1, 5, 5, private_data_size); + +/* Register init. */ +reset_ovector(common, (re->top_bracket + 1) * 2); +if (common->req_char_ptr != 0) + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), common->req_char_ptr, SLJIT_SCRATCH_REG1, 0); + +OP1(SLJIT_MOV, ARGUMENTS, 0, SLJIT_SAVED_REG1, 0); +OP1(SLJIT_MOV, TMP1, 0, SLJIT_SAVED_REG1, 0); +OP1(SLJIT_MOV, STR_PTR, 0, SLJIT_MEM1(TMP1), SLJIT_OFFSETOF(jit_arguments, str)); +OP1(SLJIT_MOV, STR_END, 0, SLJIT_MEM1(TMP1), SLJIT_OFFSETOF(jit_arguments, end)); +OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(TMP1), SLJIT_OFFSETOF(jit_arguments, stack)); +OP1(SLJIT_MOV_UI, TMP1, 0, SLJIT_MEM1(TMP1), SLJIT_OFFSETOF(jit_arguments, limit_match)); +OP1(SLJIT_MOV, STACK_TOP, 0, SLJIT_MEM1(TMP2), SLJIT_OFFSETOF(struct sljit_stack, base)); +OP1(SLJIT_MOV, STACK_LIMIT, 0, SLJIT_MEM1(TMP2), SLJIT_OFFSETOF(struct sljit_stack, limit)); +OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), LIMIT_MATCH, TMP1, 0); + +if (mode == JIT_PARTIAL_SOFT_COMPILE) + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), common->hit_start, SLJIT_IMM, -1); +if (common->mark_ptr != 0) + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), common->mark_ptr, SLJIT_IMM, 0); +if (common->control_head_ptr != 0) + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), common->control_head_ptr, SLJIT_IMM, 0); + +/* Main part of the matching */ +if ((re->options & PCRE_ANCHORED) == 0) + { + mainloop_label = mainloop_entry(common, (re->flags & PCRE_HASCRORLF) != 0, (re->options & PCRE_FIRSTLINE) != 0); + continue_match_label = LABEL(); + /* Forward search if possible. */ + if ((re->options & PCRE_NO_START_OPTIMIZE) == 0) + { + if (mode == JIT_COMPILE && fast_forward_first_n_chars(common, (re->options & PCRE_FIRSTLINE) != 0)) + { + /* If read_only_data is reallocated, we might have an allocation failure. */ + if (common->read_only_data_size > 0 && common->read_only_data == NULL) + { + sljit_free_compiler(compiler); + SLJIT_FREE(common->optimized_cbracket); + SLJIT_FREE(common->private_data_ptrs); + return; + } + } + else if ((re->flags & PCRE_FIRSTSET) != 0) + fast_forward_first_char(common, (pcre_uchar)re->first_char, (re->flags & PCRE_FCH_CASELESS) != 0, (re->options & PCRE_FIRSTLINE) != 0); + else if ((re->flags & PCRE_STARTLINE) != 0) + fast_forward_newline(common, (re->options & PCRE_FIRSTLINE) != 0); + else if ((re->flags & PCRE_STARTLINE) == 0 && study != NULL && (study->flags & PCRE_STUDY_MAPPED) != 0) + fast_forward_start_bits(common, study->start_bits, (re->options & PCRE_FIRSTLINE) != 0); + } + } +else + continue_match_label = LABEL(); + +if (mode == JIT_COMPILE && study->minlength > 0 && (re->options & PCRE_NO_START_OPTIMIZE) == 0) + { + OP1(SLJIT_MOV, SLJIT_RETURN_REG, 0, SLJIT_IMM, PCRE_ERROR_NOMATCH); + OP2(SLJIT_ADD, TMP2, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(study->minlength)); + minlength_check_failed = CMP(SLJIT_C_GREATER, TMP2, 0, STR_END, 0); + } +if (common->req_char_ptr != 0) + reqbyte_notfound = search_requested_char(common, (pcre_uchar)re->req_char, (re->flags & PCRE_RCH_CASELESS) != 0, (re->flags & PCRE_FIRSTSET) != 0); + +/* Store the current STR_PTR in OVECTOR(0). */ +OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(0), STR_PTR, 0); +/* Copy the limit of allowed recursions. */ +OP1(SLJIT_MOV, COUNT_MATCH, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), LIMIT_MATCH); +if (common->capture_last_ptr != 0) + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), common->capture_last_ptr, SLJIT_IMM, -1); + +if (common->needs_start_ptr) + { + SLJIT_ASSERT(common->start_ptr != OVECTOR(0)); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), common->start_ptr, STR_PTR, 0); + } +else + SLJIT_ASSERT(common->start_ptr == OVECTOR(0)); + +/* Copy the beginning of the string. */ +if (mode == JIT_PARTIAL_SOFT_COMPILE) + { + jump = CMP(SLJIT_C_NOT_EQUAL, SLJIT_MEM1(SLJIT_LOCALS_REG), common->hit_start, SLJIT_IMM, -1); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), common->start_used_ptr, STR_PTR, 0); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), common->hit_start + sizeof(sljit_sw), STR_PTR, 0); + JUMPHERE(jump); + } +else if (mode == JIT_PARTIAL_HARD_COMPILE) + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), common->start_used_ptr, STR_PTR, 0); + +compile_matchingpath(common, common->start, ccend, &rootbacktrack); +if (SLJIT_UNLIKELY(sljit_get_compiler_error(compiler))) + { + sljit_free_compiler(compiler); + SLJIT_FREE(common->optimized_cbracket); + SLJIT_FREE(common->private_data_ptrs); + if (common->read_only_data) + SLJIT_FREE(common->read_only_data); + return; + } + +if (common->might_be_empty) + { + empty_match = CMP(SLJIT_C_EQUAL, STR_PTR, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(0)); + empty_match_found_label = LABEL(); + } + +common->accept_label = LABEL(); +if (common->accept != NULL) + set_jumps(common->accept, common->accept_label); + +/* This means we have a match. Update the ovector. */ +copy_ovector(common, re->top_bracket + 1); +common->quit_label = common->forced_quit_label = LABEL(); +if (common->quit != NULL) + set_jumps(common->quit, common->quit_label); +if (common->forced_quit != NULL) + set_jumps(common->forced_quit, common->forced_quit_label); +if (minlength_check_failed != NULL) + SET_LABEL(minlength_check_failed, common->forced_quit_label); +sljit_emit_return(compiler, SLJIT_MOV, SLJIT_RETURN_REG, 0); + +if (mode != JIT_COMPILE) + { + common->partialmatchlabel = LABEL(); + set_jumps(common->partialmatch, common->partialmatchlabel); + return_with_partial_match(common, common->quit_label); + } + +if (common->might_be_empty) + empty_match_backtrack_label = LABEL(); +compile_backtrackingpath(common, rootbacktrack.top); +if (SLJIT_UNLIKELY(sljit_get_compiler_error(compiler))) + { + sljit_free_compiler(compiler); + SLJIT_FREE(common->optimized_cbracket); + SLJIT_FREE(common->private_data_ptrs); + if (common->read_only_data) + SLJIT_FREE(common->read_only_data); + return; + } + +SLJIT_ASSERT(rootbacktrack.prev == NULL); +reset_match_label = LABEL(); + +if (mode == JIT_PARTIAL_SOFT_COMPILE) + { + /* Update hit_start only in the first time. */ + jump = CMP(SLJIT_C_NOT_EQUAL, SLJIT_MEM1(SLJIT_LOCALS_REG), common->hit_start, SLJIT_IMM, 0); + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), common->start_used_ptr); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), common->start_used_ptr, SLJIT_IMM, -1); + OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), common->hit_start, TMP1, 0); + JUMPHERE(jump); + } + +/* Check we have remaining characters. */ +if ((re->options & PCRE_ANCHORED) == 0 && (re->options & PCRE_FIRSTLINE) != 0) + { + SLJIT_ASSERT(common->first_line_end != 0); + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), common->first_line_end); + } + +OP1(SLJIT_MOV, STR_PTR, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), common->start_ptr); + +if ((re->options & PCRE_ANCHORED) == 0) + { + if (common->ff_newline_shortcut != NULL) + { + if ((re->options & PCRE_FIRSTLINE) == 0) + CMPTO(SLJIT_C_LESS, STR_PTR, 0, STR_END, 0, common->ff_newline_shortcut); + /* There cannot be more newlines here. */ + } + else + { + if ((re->options & PCRE_FIRSTLINE) == 0) + CMPTO(SLJIT_C_LESS, STR_PTR, 0, STR_END, 0, mainloop_label); + else + CMPTO(SLJIT_C_LESS, STR_PTR, 0, TMP1, 0, mainloop_label); + } + } + +/* No more remaining characters. */ +if (reqbyte_notfound != NULL) + JUMPHERE(reqbyte_notfound); + +if (mode == JIT_PARTIAL_SOFT_COMPILE) + CMPTO(SLJIT_C_NOT_EQUAL, SLJIT_MEM1(SLJIT_LOCALS_REG), common->hit_start, SLJIT_IMM, -1, common->partialmatchlabel); + +OP1(SLJIT_MOV, SLJIT_RETURN_REG, 0, SLJIT_IMM, PCRE_ERROR_NOMATCH); +JUMPTO(SLJIT_JUMP, common->quit_label); + +flush_stubs(common); + +if (common->might_be_empty) + { + JUMPHERE(empty_match); + OP1(SLJIT_MOV, TMP1, 0, ARGUMENTS, 0); + OP1(SLJIT_MOV_UB, TMP2, 0, SLJIT_MEM1(TMP1), SLJIT_OFFSETOF(jit_arguments, notempty)); + CMPTO(SLJIT_C_NOT_EQUAL, TMP2, 0, SLJIT_IMM, 0, empty_match_backtrack_label); + OP1(SLJIT_MOV_UB, TMP2, 0, SLJIT_MEM1(TMP1), SLJIT_OFFSETOF(jit_arguments, notempty_atstart)); + CMPTO(SLJIT_C_EQUAL, TMP2, 0, SLJIT_IMM, 0, empty_match_found_label); + OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(TMP1), SLJIT_OFFSETOF(jit_arguments, str)); + CMPTO(SLJIT_C_NOT_EQUAL, TMP2, 0, STR_PTR, 0, empty_match_found_label); + JUMPTO(SLJIT_JUMP, empty_match_backtrack_label); + } + +common->currententry = common->entries; +common->local_exit = TRUE; +quit_label = common->quit_label; +while (common->currententry != NULL) + { + /* Might add new entries. */ + compile_recurse(common); + if (SLJIT_UNLIKELY(sljit_get_compiler_error(compiler))) + { + sljit_free_compiler(compiler); + SLJIT_FREE(common->optimized_cbracket); + SLJIT_FREE(common->private_data_ptrs); + if (common->read_only_data) + SLJIT_FREE(common->read_only_data); + return; + } + flush_stubs(common); + common->currententry = common->currententry->next; + } +common->local_exit = FALSE; +common->quit_label = quit_label; + +/* Allocating stack, returns with PCRE_ERROR_JIT_STACKLIMIT if fails. */ +/* This is a (really) rare case. */ +set_jumps(common->stackalloc, LABEL()); +/* RETURN_ADDR is not a saved register. */ +sljit_emit_fast_enter(compiler, SLJIT_MEM1(SLJIT_LOCALS_REG), LOCALS0); +OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), LOCALS1, TMP2, 0); +OP1(SLJIT_MOV, TMP1, 0, ARGUMENTS, 0); +OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(TMP1), SLJIT_OFFSETOF(jit_arguments, stack)); +OP1(SLJIT_MOV, SLJIT_MEM1(TMP1), SLJIT_OFFSETOF(struct sljit_stack, top), STACK_TOP, 0); +OP2(SLJIT_ADD, TMP2, 0, SLJIT_MEM1(TMP1), SLJIT_OFFSETOF(struct sljit_stack, limit), SLJIT_IMM, STACK_GROWTH_RATE); + +sljit_emit_ijump(compiler, SLJIT_CALL2, SLJIT_IMM, SLJIT_FUNC_OFFSET(sljit_stack_resize)); +jump = CMP(SLJIT_C_NOT_EQUAL, SLJIT_RETURN_REG, 0, SLJIT_IMM, 0); +OP1(SLJIT_MOV, TMP1, 0, ARGUMENTS, 0); +OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(TMP1), SLJIT_OFFSETOF(jit_arguments, stack)); +OP1(SLJIT_MOV, STACK_TOP, 0, SLJIT_MEM1(TMP1), SLJIT_OFFSETOF(struct sljit_stack, top)); +OP1(SLJIT_MOV, STACK_LIMIT, 0, SLJIT_MEM1(TMP1), SLJIT_OFFSETOF(struct sljit_stack, limit)); +OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), LOCALS1); +sljit_emit_fast_return(compiler, SLJIT_MEM1(SLJIT_LOCALS_REG), LOCALS0); + +/* Allocation failed. */ +JUMPHERE(jump); +/* We break the return address cache here, but this is a really rare case. */ +OP1(SLJIT_MOV, SLJIT_RETURN_REG, 0, SLJIT_IMM, PCRE_ERROR_JIT_STACKLIMIT); +JUMPTO(SLJIT_JUMP, common->quit_label); + +/* Call limit reached. */ +set_jumps(common->calllimit, LABEL()); +OP1(SLJIT_MOV, SLJIT_RETURN_REG, 0, SLJIT_IMM, PCRE_ERROR_MATCHLIMIT); +JUMPTO(SLJIT_JUMP, common->quit_label); + +if (common->revertframes != NULL) + { + set_jumps(common->revertframes, LABEL()); + do_revertframes(common); + } +if (common->wordboundary != NULL) + { + set_jumps(common->wordboundary, LABEL()); + check_wordboundary(common); + } +if (common->anynewline != NULL) + { + set_jumps(common->anynewline, LABEL()); + check_anynewline(common); + } +if (common->hspace != NULL) + { + set_jumps(common->hspace, LABEL()); + check_hspace(common); + } +if (common->vspace != NULL) + { + set_jumps(common->vspace, LABEL()); + check_vspace(common); + } +if (common->casefulcmp != NULL) + { + set_jumps(common->casefulcmp, LABEL()); + do_casefulcmp(common); + } +if (common->caselesscmp != NULL) + { + set_jumps(common->caselesscmp, LABEL()); + do_caselesscmp(common); + } +if (common->reset_match != NULL) + { + set_jumps(common->reset_match, LABEL()); + do_reset_match(common, (re->top_bracket + 1) * 2); + CMPTO(SLJIT_C_GREATER, STR_PTR, 0, TMP1, 0, continue_match_label); + OP1(SLJIT_MOV, STR_PTR, 0, TMP1, 0); + JUMPTO(SLJIT_JUMP, reset_match_label); + } +#ifdef SUPPORT_UTF +#ifdef COMPILE_PCRE8 +if (common->utfreadchar != NULL) + { + set_jumps(common->utfreadchar, LABEL()); + do_utfreadchar(common); + } +if (common->utfreadchar16 != NULL) + { + set_jumps(common->utfreadchar16, LABEL()); + do_utfreadchar16(common); + } +if (common->utfreadtype8 != NULL) + { + set_jumps(common->utfreadtype8, LABEL()); + do_utfreadtype8(common); + } +#endif /* COMPILE_PCRE8 */ +#endif /* SUPPORT_UTF */ +#ifdef SUPPORT_UCP +if (common->getucd != NULL) + { + set_jumps(common->getucd, LABEL()); + do_getucd(common); + } +#endif + +SLJIT_ASSERT(common->read_only_data + (common->read_only_data_size >> SLJIT_WORD_SHIFT) == common->read_only_data_ptr); +SLJIT_FREE(common->optimized_cbracket); +SLJIT_FREE(common->private_data_ptrs); + +executable_func = sljit_generate_code(compiler); +executable_size = sljit_get_generated_code_size(compiler); +label_addr = common->label_addrs; +while (label_addr != NULL) + { + *label_addr->addr = sljit_get_label_addr(label_addr->label); + label_addr = label_addr->next; + } +sljit_free_compiler(compiler); +if (executable_func == NULL) + { + if (common->read_only_data) + SLJIT_FREE(common->read_only_data); + return; + } + +/* Reuse the function descriptor if possible. */ +if ((extra->flags & PCRE_EXTRA_EXECUTABLE_JIT) != 0 && extra->executable_jit != NULL) + functions = (executable_functions *)extra->executable_jit; +else + { + /* Note: If your memory-checker has flagged the allocation below as a + * memory leak, it is probably because you either forgot to call + * pcre_free_study() (or pcre16_free_study()) on the pcre_extra (or + * pcre16_extra) object, or you called said function after having + * cleared the PCRE_EXTRA_EXECUTABLE_JIT bit from the "flags" field + * of the object. (The function will only free the JIT data if the + * bit remains set, as the bit indicates that the pointer to the data + * is valid.) + */ + functions = SLJIT_MALLOC(sizeof(executable_functions)); + if (functions == NULL) + { + /* This case is highly unlikely since we just recently + freed a lot of memory. Not impossible though. */ + sljit_free_code(executable_func); + if (common->read_only_data) + SLJIT_FREE(common->read_only_data); + return; + } + memset(functions, 0, sizeof(executable_functions)); + functions->top_bracket = (re->top_bracket + 1) * 2; + functions->limit_match = (re->flags & PCRE_MLSET) != 0 ? re->limit_match : 0; + extra->executable_jit = functions; + extra->flags |= PCRE_EXTRA_EXECUTABLE_JIT; + } + +functions->executable_funcs[mode] = executable_func; +functions->read_only_data[mode] = common->read_only_data; +functions->executable_sizes[mode] = executable_size; +} + +static int jit_machine_stack_exec(jit_arguments *arguments, void* executable_func) +{ +union { + void* executable_func; + jit_function call_executable_func; +} convert_executable_func; +pcre_uint8 local_space[MACHINE_STACK_SIZE]; +struct sljit_stack local_stack; + +local_stack.top = (sljit_sw)&local_space; +local_stack.base = local_stack.top; +local_stack.limit = local_stack.base + MACHINE_STACK_SIZE; +local_stack.max_limit = local_stack.limit; +arguments->stack = &local_stack; +convert_executable_func.executable_func = executable_func; +return convert_executable_func.call_executable_func(arguments); +} + +int +PRIV(jit_exec)(const PUBL(extra) *extra_data, const pcre_uchar *subject, + int length, int start_offset, int options, int *offsets, int offset_count) +{ +executable_functions *functions = (executable_functions *)extra_data->executable_jit; +union { + void* executable_func; + jit_function call_executable_func; +} convert_executable_func; +jit_arguments arguments; +int max_offset_count; +int retval; +int mode = JIT_COMPILE; + +if ((options & PCRE_PARTIAL_HARD) != 0) + mode = JIT_PARTIAL_HARD_COMPILE; +else if ((options & PCRE_PARTIAL_SOFT) != 0) + mode = JIT_PARTIAL_SOFT_COMPILE; + +if (functions->executable_funcs[mode] == NULL) + return PCRE_ERROR_JIT_BADOPTION; + +/* Sanity checks should be handled by pcre_exec. */ +arguments.str = subject + start_offset; +arguments.begin = subject; +arguments.end = subject + length; +arguments.mark_ptr = NULL; +/* JIT decreases this value less frequently than the interpreter. */ +arguments.limit_match = ((extra_data->flags & PCRE_EXTRA_MATCH_LIMIT) == 0) ? MATCH_LIMIT : (pcre_uint32)(extra_data->match_limit); +if (functions->limit_match != 0 && functions->limit_match < arguments.limit_match) + arguments.limit_match = functions->limit_match; +arguments.notbol = (options & PCRE_NOTBOL) != 0; +arguments.noteol = (options & PCRE_NOTEOL) != 0; +arguments.notempty = (options & PCRE_NOTEMPTY) != 0; +arguments.notempty_atstart = (options & PCRE_NOTEMPTY_ATSTART) != 0; +arguments.offsets = offsets; +arguments.callout_data = (extra_data->flags & PCRE_EXTRA_CALLOUT_DATA) != 0 ? extra_data->callout_data : NULL; +arguments.real_offset_count = offset_count; + +/* pcre_exec() rounds offset_count to a multiple of 3, and then uses only 2/3 of +the output vector for storing captured strings, with the remainder used as +workspace. We don't need the workspace here. For compatibility, we limit the +number of captured strings in the same way as pcre_exec(), so that the user +gets the same result with and without JIT. */ + +if (offset_count != 2) + offset_count = ((offset_count - (offset_count % 3)) * 2) / 3; +max_offset_count = functions->top_bracket; +if (offset_count > max_offset_count) + offset_count = max_offset_count; +arguments.offset_count = offset_count; + +if (functions->callback) + arguments.stack = (struct sljit_stack *)functions->callback(functions->userdata); +else + arguments.stack = (struct sljit_stack *)functions->userdata; + +if (arguments.stack == NULL) + retval = jit_machine_stack_exec(&arguments, functions->executable_funcs[mode]); +else + { + convert_executable_func.executable_func = functions->executable_funcs[mode]; + retval = convert_executable_func.call_executable_func(&arguments); + } + +if (retval * 2 > offset_count) + retval = 0; +if ((extra_data->flags & PCRE_EXTRA_MARK) != 0) + *(extra_data->mark) = arguments.mark_ptr; + +return retval; +} + +#if defined COMPILE_PCRE8 +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION +pcre_jit_exec(const pcre *argument_re, const pcre_extra *extra_data, + PCRE_SPTR subject, int length, int start_offset, int options, + int *offsets, int offset_count, pcre_jit_stack *stack) +#elif defined COMPILE_PCRE16 +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION +pcre16_jit_exec(const pcre16 *argument_re, const pcre16_extra *extra_data, + PCRE_SPTR16 subject, int length, int start_offset, int options, + int *offsets, int offset_count, pcre16_jit_stack *stack) +#elif defined COMPILE_PCRE32 +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION +pcre32_jit_exec(const pcre32 *argument_re, const pcre32_extra *extra_data, + PCRE_SPTR32 subject, int length, int start_offset, int options, + int *offsets, int offset_count, pcre32_jit_stack *stack) +#endif +{ +pcre_uchar *subject_ptr = (pcre_uchar *)subject; +executable_functions *functions = (executable_functions *)extra_data->executable_jit; +union { + void* executable_func; + jit_function call_executable_func; +} convert_executable_func; +jit_arguments arguments; +int max_offset_count; +int retval; +int mode = JIT_COMPILE; + +SLJIT_UNUSED_ARG(argument_re); + +/* Plausibility checks */ +if ((options & ~PUBLIC_JIT_EXEC_OPTIONS) != 0) return PCRE_ERROR_JIT_BADOPTION; + +if ((options & PCRE_PARTIAL_HARD) != 0) + mode = JIT_PARTIAL_HARD_COMPILE; +else if ((options & PCRE_PARTIAL_SOFT) != 0) + mode = JIT_PARTIAL_SOFT_COMPILE; + +if (functions->executable_funcs[mode] == NULL) + return PCRE_ERROR_JIT_BADOPTION; + +/* Sanity checks should be handled by pcre_exec. */ +arguments.stack = (struct sljit_stack *)stack; +arguments.str = subject_ptr + start_offset; +arguments.begin = subject_ptr; +arguments.end = subject_ptr + length; +arguments.mark_ptr = NULL; +/* JIT decreases this value less frequently than the interpreter. */ +arguments.limit_match = ((extra_data->flags & PCRE_EXTRA_MATCH_LIMIT) == 0) ? MATCH_LIMIT : (pcre_uint32)(extra_data->match_limit); +if (functions->limit_match != 0 && functions->limit_match < arguments.limit_match) + arguments.limit_match = functions->limit_match; +arguments.notbol = (options & PCRE_NOTBOL) != 0; +arguments.noteol = (options & PCRE_NOTEOL) != 0; +arguments.notempty = (options & PCRE_NOTEMPTY) != 0; +arguments.notempty_atstart = (options & PCRE_NOTEMPTY_ATSTART) != 0; +arguments.offsets = offsets; +arguments.callout_data = (extra_data->flags & PCRE_EXTRA_CALLOUT_DATA) != 0 ? extra_data->callout_data : NULL; +arguments.real_offset_count = offset_count; + +/* pcre_exec() rounds offset_count to a multiple of 3, and then uses only 2/3 of +the output vector for storing captured strings, with the remainder used as +workspace. We don't need the workspace here. For compatibility, we limit the +number of captured strings in the same way as pcre_exec(), so that the user +gets the same result with and without JIT. */ + +if (offset_count != 2) + offset_count = ((offset_count - (offset_count % 3)) * 2) / 3; +max_offset_count = functions->top_bracket; +if (offset_count > max_offset_count) + offset_count = max_offset_count; +arguments.offset_count = offset_count; + +convert_executable_func.executable_func = functions->executable_funcs[mode]; +retval = convert_executable_func.call_executable_func(&arguments); + +if (retval * 2 > offset_count) + retval = 0; +if ((extra_data->flags & PCRE_EXTRA_MARK) != 0) + *(extra_data->mark) = arguments.mark_ptr; + +return retval; +} + +void +PRIV(jit_free)(void *executable_funcs) +{ +int i; +executable_functions *functions = (executable_functions *)executable_funcs; +for (i = 0; i < JIT_NUMBER_OF_COMPILE_MODES; i++) + { + if (functions->executable_funcs[i] != NULL) + sljit_free_code(functions->executable_funcs[i]); + if (functions->read_only_data[i] != NULL) + SLJIT_FREE(functions->read_only_data[i]); + } +SLJIT_FREE(functions); +} + +int +PRIV(jit_get_size)(void *executable_funcs) +{ +int i; +sljit_uw size = 0; +sljit_uw *executable_sizes = ((executable_functions *)executable_funcs)->executable_sizes; +for (i = 0; i < JIT_NUMBER_OF_COMPILE_MODES; i++) + size += executable_sizes[i]; +return (int)size; +} + +const char* +PRIV(jit_get_target)(void) +{ +return sljit_get_platform_name(); +} + +#if defined COMPILE_PCRE8 +PCRE_EXP_DECL pcre_jit_stack * +pcre_jit_stack_alloc(int startsize, int maxsize) +#elif defined COMPILE_PCRE16 +PCRE_EXP_DECL pcre16_jit_stack * +pcre16_jit_stack_alloc(int startsize, int maxsize) +#elif defined COMPILE_PCRE32 +PCRE_EXP_DECL pcre32_jit_stack * +pcre32_jit_stack_alloc(int startsize, int maxsize) +#endif +{ +if (startsize < 1 || maxsize < 1) + return NULL; +if (startsize > maxsize) + startsize = maxsize; +startsize = (startsize + STACK_GROWTH_RATE - 1) & ~(STACK_GROWTH_RATE - 1); +maxsize = (maxsize + STACK_GROWTH_RATE - 1) & ~(STACK_GROWTH_RATE - 1); +return (PUBL(jit_stack)*)sljit_allocate_stack(startsize, maxsize); +} + +#if defined COMPILE_PCRE8 +PCRE_EXP_DECL void +pcre_jit_stack_free(pcre_jit_stack *stack) +#elif defined COMPILE_PCRE16 +PCRE_EXP_DECL void +pcre16_jit_stack_free(pcre16_jit_stack *stack) +#elif defined COMPILE_PCRE32 +PCRE_EXP_DECL void +pcre32_jit_stack_free(pcre32_jit_stack *stack) +#endif +{ +sljit_free_stack((struct sljit_stack *)stack); +} + +#if defined COMPILE_PCRE8 +PCRE_EXP_DECL void +pcre_assign_jit_stack(pcre_extra *extra, pcre_jit_callback callback, void *userdata) +#elif defined COMPILE_PCRE16 +PCRE_EXP_DECL void +pcre16_assign_jit_stack(pcre16_extra *extra, pcre16_jit_callback callback, void *userdata) +#elif defined COMPILE_PCRE32 +PCRE_EXP_DECL void +pcre32_assign_jit_stack(pcre32_extra *extra, pcre32_jit_callback callback, void *userdata) +#endif +{ +executable_functions *functions; +if (extra != NULL && + (extra->flags & PCRE_EXTRA_EXECUTABLE_JIT) != 0 && + extra->executable_jit != NULL) + { + functions = (executable_functions *)extra->executable_jit; + functions->callback = callback; + functions->userdata = userdata; + } +} + +#if defined COMPILE_PCRE8 +PCRE_EXP_DECL void +pcre_jit_free_unused_memory(void) +#elif defined COMPILE_PCRE16 +PCRE_EXP_DECL void +pcre16_jit_free_unused_memory(void) +#elif defined COMPILE_PCRE32 +PCRE_EXP_DECL void +pcre32_jit_free_unused_memory(void) +#endif +{ +sljit_free_unused_memory_exec(); +} + +#else /* SUPPORT_JIT */ + +/* These are dummy functions to avoid linking errors when JIT support is not +being compiled. */ + +#if defined COMPILE_PCRE8 +PCRE_EXP_DECL pcre_jit_stack * +pcre_jit_stack_alloc(int startsize, int maxsize) +#elif defined COMPILE_PCRE16 +PCRE_EXP_DECL pcre16_jit_stack * +pcre16_jit_stack_alloc(int startsize, int maxsize) +#elif defined COMPILE_PCRE32 +PCRE_EXP_DECL pcre32_jit_stack * +pcre32_jit_stack_alloc(int startsize, int maxsize) +#endif +{ +(void)startsize; +(void)maxsize; +return NULL; +} + +#if defined COMPILE_PCRE8 +PCRE_EXP_DECL void +pcre_jit_stack_free(pcre_jit_stack *stack) +#elif defined COMPILE_PCRE16 +PCRE_EXP_DECL void +pcre16_jit_stack_free(pcre16_jit_stack *stack) +#elif defined COMPILE_PCRE32 +PCRE_EXP_DECL void +pcre32_jit_stack_free(pcre32_jit_stack *stack) +#endif +{ +(void)stack; +} + +#if defined COMPILE_PCRE8 +PCRE_EXP_DECL void +pcre_assign_jit_stack(pcre_extra *extra, pcre_jit_callback callback, void *userdata) +#elif defined COMPILE_PCRE16 +PCRE_EXP_DECL void +pcre16_assign_jit_stack(pcre16_extra *extra, pcre16_jit_callback callback, void *userdata) +#elif defined COMPILE_PCRE32 +PCRE_EXP_DECL void +pcre32_assign_jit_stack(pcre32_extra *extra, pcre32_jit_callback callback, void *userdata) +#endif +{ +(void)extra; +(void)callback; +(void)userdata; +} + +#if defined COMPILE_PCRE8 +PCRE_EXP_DECL void +pcre_jit_free_unused_memory(void) +#elif defined COMPILE_PCRE16 +PCRE_EXP_DECL void +pcre16_jit_free_unused_memory(void) +#elif defined COMPILE_PCRE32 +PCRE_EXP_DECL void +pcre32_jit_free_unused_memory(void) +#endif +{ +} + +#endif + +/* End of pcre_jit_compile.c */ diff --git a/Foundation/src/pcre_maketables.c b/Foundation/src/pcre_maketables.c index b06e22c87..d86e391da 100644 --- a/Foundation/src/pcre_maketables.c +++ b/Foundation/src/pcre_maketables.c @@ -6,7 +6,7 @@ and semantics are as close as possible to those of the Perl 5 language. Written by Philip Hazel - Copyright (c) 1997-2008 University of Cambridge + Copyright (c) 1997-2012 University of Cambridge ----------------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without @@ -43,6 +43,7 @@ character tables for PCRE in the current locale. The file is compiled on its own as part of the PCRE library. However, it is also included in the compilation of dftables.c, in which case the macro DFTABLES is defined. */ +#pragma warning( disable : 4244) // conversion from 'int' to 'unsigned short', possible loss of data #ifndef DFTABLES # include "pcre_config.h" @@ -57,21 +58,29 @@ compilation of dftables.c, in which case the macro DFTABLES is defined. */ /* This function builds a set of character tables for use by PCRE and returns a pointer to them. They are build using the ctype functions, and consequently their contents will depend upon the current locale setting. When compiled as -part of the library, the store is obtained via pcre_malloc(), but when compiled -inside dftables, use malloc(). +part of the library, the store is obtained via PUBL(malloc)(), but when +compiled inside dftables, use malloc(). Arguments: none Returns: pointer to the contiguous block of data */ +#if defined COMPILE_PCRE8 const unsigned char * pcre_maketables(void) +#elif defined COMPILE_PCRE16 +const unsigned char * +pcre16_maketables(void) +#elif defined COMPILE_PCRE32 +const unsigned char * +pcre32_maketables(void) +#endif { unsigned char *yield, *p; int i; #ifndef DFTABLES -yield = (unsigned char*)(pcre_malloc)(tables_length); +yield = (unsigned char*)(PUBL(malloc))(tables_length); #else yield = (unsigned char*)malloc(tables_length); #endif @@ -88,13 +97,17 @@ for (i = 0; i < 256; i++) *p++ = tolower(i); for (i = 0; i < 256; i++) *p++ = islower(i)? toupper(i) : tolower(i); /* Then the character class tables. Don't try to be clever and save effort on -exclusive ones - in some locales things may be different. Note that the table -for "space" includes everything "isspace" gives, including VT in the default -locale. This makes it work for the POSIX class [:space:]. Note also that it is -possible for a character to be alnum or alpha without being lower or upper, -such as "male and female ordinals" (\xAA and \xBA) in the fr_FR locale (at -least under Debian Linux's locales as of 12/2005). So we must test for alnum -specially. */ +exclusive ones - in some locales things may be different. + +Note that the table for "space" includes everything "isspace" gives, including +VT in the default locale. This makes it work for the POSIX class [:space:]. +From release 8.34 is is also correct for Perl space, because Perl added VT at +release 5.18. + +Note also that it is possible for a character to be alnum or alpha without +being lower or upper, such as "male and female ordinals" (\xAA and \xBA) in the +fr_FR locale (at least under Debian Linux's locales as of 12/2005). So we must +test for alnum specially. */ memset(p, 0, cbit_length); for (i = 0; i < 256; i++) @@ -113,14 +126,15 @@ for (i = 0; i < 256; i++) } p += cbit_length; -/* Finally, the character type table. In this, we exclude VT from the white -space chars, because Perl doesn't recognize it as such for \s and for comments -within regexes. */ +/* Finally, the character type table. In this, we used to exclude VT from the +white space chars, because Perl didn't recognize it as such for \s and for +comments within regexes. However, Perl changed at release 5.18, so PCRE changed +at release 8.34. */ for (i = 0; i < 256; i++) { int x = 0; - if (i != 0x0b && isspace(i)) x += ctype_space; + if (isspace(i)) x += ctype_space; if (isalpha(i)) x += ctype_letter; if (isdigit(i)) x += ctype_digit; if (isxdigit(i)) x += ctype_xdigit; diff --git a/Foundation/src/pcre_newline.c b/Foundation/src/pcre_newline.c index 95e825f25..08933bfc7 100644 --- a/Foundation/src/pcre_newline.c +++ b/Foundation/src/pcre_newline.c @@ -6,7 +6,7 @@ and semantics are as close as possible to those of the Perl 5 language. Written by Philip Hazel - Copyright (c) 1997-2008 University of Cambridge + Copyright (c) 1997-2012 University of Cambridge ----------------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without @@ -64,23 +64,33 @@ Arguments: type the newline type endptr pointer to the end of the string lenptr where to return the length - utf8 TRUE if in utf8 mode + utf TRUE if in utf mode Returns: TRUE or FALSE */ BOOL -_pcre_is_newline(const uschar *ptr, int type, const uschar *endptr, - int *lenptr, BOOL utf8) +PRIV(is_newline)(PCRE_PUCHAR ptr, int type, PCRE_PUCHAR endptr, int *lenptr, + BOOL utf) { -int c; -if (utf8) { GETCHAR(c, ptr); } else c = *ptr; +pcre_uint32 c; +(void)utf; +#ifdef SUPPORT_UTF +if (utf) + { + GETCHAR(c, ptr); + } +else +#endif /* SUPPORT_UTF */ + c = *ptr; + +/* Note that this function is called only for ANY or ANYCRLF. */ if (type == NLTYPE_ANYCRLF) switch(c) { - case 0x000a: *lenptr = 1; return TRUE; /* LF */ - case 0x000d: *lenptr = (ptr < endptr - 1 && ptr[1] == 0x0a)? 2 : 1; - return TRUE; /* CR */ + case CHAR_LF: *lenptr = 1; return TRUE; + case CHAR_CR: *lenptr = (ptr < endptr - 1 && ptr[1] == CHAR_LF)? 2 : 1; + return TRUE; default: return FALSE; } @@ -88,14 +98,29 @@ if (type == NLTYPE_ANYCRLF) switch(c) else switch(c) { - case 0x000a: /* LF */ - case 0x000b: /* VT */ - case 0x000c: *lenptr = 1; return TRUE; /* FF */ - case 0x000d: *lenptr = (ptr < endptr - 1 && ptr[1] == 0x0a)? 2 : 1; - return TRUE; /* CR */ - case 0x0085: *lenptr = utf8? 2 : 1; return TRUE; /* NEL */ +#ifdef EBCDIC + case CHAR_NEL: +#endif + case CHAR_LF: + case CHAR_VT: + case CHAR_FF: *lenptr = 1; return TRUE; + + case CHAR_CR: + *lenptr = (ptr < endptr - 1 && ptr[1] == CHAR_LF)? 2 : 1; + return TRUE; + +#ifndef EBCDIC +#ifdef COMPILE_PCRE8 + case CHAR_NEL: *lenptr = utf? 2 : 1; return TRUE; case 0x2028: /* LS */ case 0x2029: *lenptr = 3; return TRUE; /* PS */ +#else /* COMPILE_PCRE16 || COMPILE_PCRE32 */ + case CHAR_NEL: + case 0x2028: /* LS */ + case 0x2029: *lenptr = 1; return TRUE; /* PS */ +#endif /* COMPILE_PCRE8 */ +#endif /* Not EBCDIC */ + default: return FALSE; } } @@ -114,46 +139,67 @@ Arguments: type the newline type startptr pointer to the start of the string lenptr where to return the length - utf8 TRUE if in utf8 mode + utf TRUE if in utf mode Returns: TRUE or FALSE */ BOOL -_pcre_was_newline(const uschar *ptr, int type, const uschar *startptr, - int *lenptr, BOOL utf8) +PRIV(was_newline)(PCRE_PUCHAR ptr, int type, PCRE_PUCHAR startptr, int *lenptr, + BOOL utf) { -int c; +pcre_uint32 c; +(void)utf; ptr--; -#ifdef SUPPORT_UTF8 -if (utf8) +#ifdef SUPPORT_UTF +if (utf) { BACKCHAR(ptr); GETCHAR(c, ptr); } -else c = *ptr; -#else /* no UTF-8 support */ -c = *ptr; -#endif /* SUPPORT_UTF8 */ +else +#endif /* SUPPORT_UTF */ + c = *ptr; + +/* Note that this function is called only for ANY or ANYCRLF. */ if (type == NLTYPE_ANYCRLF) switch(c) { - case 0x000a: *lenptr = (ptr > startptr && ptr[-1] == 0x0d)? 2 : 1; - return TRUE; /* LF */ - case 0x000d: *lenptr = 1; return TRUE; /* CR */ + case CHAR_LF: + *lenptr = (ptr > startptr && ptr[-1] == CHAR_CR)? 2 : 1; + return TRUE; + + case CHAR_CR: *lenptr = 1; return TRUE; default: return FALSE; } +/* NLTYPE_ANY */ + else switch(c) { - case 0x000a: *lenptr = (ptr > startptr && ptr[-1] == 0x0d)? 2 : 1; - return TRUE; /* LF */ - case 0x000b: /* VT */ - case 0x000c: /* FF */ - case 0x000d: *lenptr = 1; return TRUE; /* CR */ - case 0x0085: *lenptr = utf8? 2 : 1; return TRUE; /* NEL */ - case 0x2028: /* LS */ - case 0x2029: *lenptr = 3; return TRUE; /* PS */ + case CHAR_LF: + *lenptr = (ptr > startptr && ptr[-1] == CHAR_CR)? 2 : 1; + return TRUE; + +#ifdef EBCDIC + case CHAR_NEL: +#endif + case CHAR_VT: + case CHAR_FF: + case CHAR_CR: *lenptr = 1; return TRUE; + +#ifndef EBCDIC +#ifdef COMPILE_PCRE8 + case CHAR_NEL: *lenptr = utf? 2 : 1; return TRUE; + case 0x2028: /* LS */ + case 0x2029: *lenptr = 3; return TRUE; /* PS */ +#else /* COMPILE_PCRE16 || COMPILE_PCRE32 */ + case CHAR_NEL: + case 0x2028: /* LS */ + case 0x2029: *lenptr = 1; return TRUE; /* PS */ +#endif /* COMPILE_PCRE8 */ +#endif /* NotEBCDIC */ + default: return FALSE; } } diff --git a/Foundation/src/pcre_ord2utf8.c b/Foundation/src/pcre_ord2utf8.c index f4f1381a2..e69e7f835 100644 --- a/Foundation/src/pcre_ord2utf8.c +++ b/Foundation/src/pcre_ord2utf8.c @@ -6,7 +6,7 @@ and semantics are as close as possible to those of the Perl 5 language. Written by Philip Hazel - Copyright (c) 1997-2008 University of Cambridge + Copyright (c) 1997-2012 University of Cambridge ----------------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without @@ -37,47 +37,55 @@ POSSIBILITY OF SUCH DAMAGE. ----------------------------------------------------------------------------- */ +#pragma warning( disable : 4244) // conversion from 'int' to 'unsigned short', possible loss of data /* This file contains a private PCRE function that converts an ordinal character value into a UTF8 string. */ #include "pcre_config.h" -#include "pcre_internal.h" +#define COMPILE_PCRE8 +#include "pcre_internal.h" /************************************************* * Convert character value to UTF-8 * *************************************************/ -/* This function takes an integer value in the range 0 - 0x7fffffff -and encodes it as a UTF-8 character in 0 to 6 bytes. +/* This function takes an integer value in the range 0 - 0x10ffff +and encodes it as a UTF-8 character in 1 to 4 pcre_uchars. Arguments: cvalue the character value - buffer pointer to buffer for result - at least 6 bytes long + buffer pointer to buffer for result - at least 6 pcre_uchars long Returns: number of characters placed in the buffer */ +unsigned int -_pcre_ord2utf8(int cvalue, uschar *buffer) +PRIV(ord2utf)(pcre_uint32 cvalue, pcre_uchar *buffer) { -#ifdef SUPPORT_UTF8 +#ifdef SUPPORT_UTF + register int i, j; -for (i = 0; i < _pcre_utf8_table1_size; i++) - if (cvalue <= _pcre_utf8_table1[i]) break; + +for (i = 0; i < PRIV(utf8_table1_size); i++) + if ((int)cvalue <= PRIV(utf8_table1)[i]) break; buffer += i; for (j = i; j > 0; j--) { *buffer-- = 0x80 | (cvalue & 0x3f); cvalue >>= 6; } -*buffer = _pcre_utf8_table2[i] | cvalue; +*buffer = PRIV(utf8_table2)[i] | cvalue; return i + 1; + #else + (void)(cvalue); /* Keep compiler happy; this function won't ever be */ -(void)(buffer); /* called when SUPPORT_UTF8 is not defined. */ +(void)(buffer); /* called when SUPPORT_UTF is not defined. */ return 0; + #endif } diff --git a/Foundation/src/pcre_refcount.c b/Foundation/src/pcre_refcount.c new file mode 100644 index 000000000..e22afe6aa --- /dev/null +++ b/Foundation/src/pcre_refcount.c @@ -0,0 +1,90 @@ +/************************************************* +* Perl-Compatible Regular Expressions * +*************************************************/ + +/* PCRE is a library of functions to support regular expressions whose syntax +and semantics are as close as possible to those of the Perl 5 language. + + Written by Philip Hazel + Copyright (c) 1997-2012 University of Cambridge + +----------------------------------------------------------------------------- +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + * Neither the name of the University of Cambridge nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +----------------------------------------------------------------------------- +*/ + +#pragma warning( disable : 4244) // conversion from 'int' to 'unsigned short', possible loss of data + +/* This module contains the external function pcre_refcount(), which is an +auxiliary function that can be used to maintain a reference count in a compiled +pattern data block. This might be helpful in applications where the block is +shared by different users. */ + + +#include "pcre_config.h" +#include "pcre_internal.h" + + +/************************************************* +* Maintain reference count * +*************************************************/ + +/* The reference count is a 16-bit field, initialized to zero. It is not +possible to transfer a non-zero count from one host to a different host that +has a different byte order - though I can't see why anyone in their right mind +would ever want to do that! + +Arguments: + argument_re points to compiled code + adjust value to add to the count + +Returns: the (possibly updated) count value (a non-negative number), or + a negative error number +*/ + +#if defined COMPILE_PCRE8 +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION +pcre_refcount(pcre *argument_re, int adjust) +#elif defined COMPILE_PCRE16 +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION +pcre16_refcount(pcre16 *argument_re, int adjust) +#elif defined COMPILE_PCRE32 +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION +pcre32_refcount(pcre32 *argument_re, int adjust) +#endif +{ +REAL_PCRE *re = (REAL_PCRE *)argument_re; +if (re == NULL) return PCRE_ERROR_NULL; +if (re->magic_number != MAGIC_NUMBER) return PCRE_ERROR_BADMAGIC; +if ((re->flags & PCRE_MODE) == 0) return PCRE_ERROR_BADMODE; +re->ref_count = (-adjust > re->ref_count)? 0 : + (adjust + re->ref_count > 65535)? 65535 : + re->ref_count + adjust; +return re->ref_count; +} + +/* End of pcre_refcount.c */ diff --git a/Foundation/src/pcre_string_utils.c b/Foundation/src/pcre_string_utils.c new file mode 100644 index 000000000..089aa6222 --- /dev/null +++ b/Foundation/src/pcre_string_utils.c @@ -0,0 +1,207 @@ +/************************************************* +* Perl-Compatible Regular Expressions * +*************************************************/ + +/* PCRE is a library of functions to support regular expressions whose syntax +and semantics are as close as possible to those of the Perl 5 language. + + Written by Philip Hazel + Copyright (c) 1997-2014 University of Cambridge + +----------------------------------------------------------------------------- +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + * Neither the name of the University of Cambridge nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +----------------------------------------------------------------------------- +*/ + + +/* This module contains internal functions for comparing and finding the length +of strings for different data item sizes. */ + +#include "pcre_config.h" +#include "pcre_internal.h" + +#ifndef COMPILE_PCRE8 + +/************************************************* +* Compare string utilities * +*************************************************/ + +/* The following two functions compares two strings. Basically a strcmp +for non 8 bit characters. + +Arguments: + str1 first string + str2 second string + +Returns: 0 if both string are equal (like strcmp), 1 otherwise +*/ + +int +PRIV(strcmp_uc_uc)(const pcre_uchar *str1, const pcre_uchar *str2) +{ +pcre_uchar c1; +pcre_uchar c2; + +while (*str1 != '\0' || *str2 != '\0') + { + c1 = *str1++; + c2 = *str2++; + if (c1 != c2) + return ((c1 > c2) << 1) - 1; + } +/* Both length and characters must be equal. */ +return 0; +} + +#ifdef COMPILE_PCRE32 + +int +PRIV(strcmp_uc_uc_utf)(const pcre_uchar *str1, const pcre_uchar *str2) +{ +pcre_uchar c1; +pcre_uchar c2; + +while (*str1 != '\0' || *str2 != '\0') + { + c1 = UCHAR21INC(str1); + c2 = UCHAR21INC(str2); + if (c1 != c2) + return ((c1 > c2) << 1) - 1; + } +/* Both length and characters must be equal. */ +return 0; +} + +#endif /* COMPILE_PCRE32 */ + +int +PRIV(strcmp_uc_c8)(const pcre_uchar *str1, const char *str2) +{ +const pcre_uint8 *ustr2 = (pcre_uint8 *)str2; +pcre_uchar c1; +pcre_uchar c2; + +while (*str1 != '\0' || *ustr2 != '\0') + { + c1 = *str1++; + c2 = (pcre_uchar)*ustr2++; + if (c1 != c2) + return ((c1 > c2) << 1) - 1; + } +/* Both length and characters must be equal. */ +return 0; +} + +#ifdef COMPILE_PCRE32 + +int +PRIV(strcmp_uc_c8_utf)(const pcre_uchar *str1, const char *str2) +{ +const pcre_uint8 *ustr2 = (pcre_uint8 *)str2; +pcre_uchar c1; +pcre_uchar c2; + +while (*str1 != '\0' || *ustr2 != '\0') + { + c1 = UCHAR21INC(str1); + c2 = (pcre_uchar)*ustr2++; + if (c1 != c2) + return ((c1 > c2) << 1) - 1; + } +/* Both length and characters must be equal. */ +return 0; +} + +#endif /* COMPILE_PCRE32 */ + +/* The following two functions compares two, fixed length +strings. Basically an strncmp for non 8 bit characters. + +Arguments: + str1 first string + str2 second string + num size of the string + +Returns: 0 if both string are equal (like strcmp), 1 otherwise +*/ + +int +PRIV(strncmp_uc_uc)(const pcre_uchar *str1, const pcre_uchar *str2, unsigned int num) +{ +pcre_uchar c1; +pcre_uchar c2; + +while (num-- > 0) + { + c1 = *str1++; + c2 = *str2++; + if (c1 != c2) + return ((c1 > c2) << 1) - 1; + } +/* Both length and characters must be equal. */ +return 0; +} + +int +PRIV(strncmp_uc_c8)(const pcre_uchar *str1, const char *str2, unsigned int num) +{ +const pcre_uint8 *ustr2 = (pcre_uint8 *)str2; +pcre_uchar c1; +pcre_uchar c2; + +while (num-- > 0) + { + c1 = *str1++; + c2 = (pcre_uchar)*ustr2++; + if (c1 != c2) + return ((c1 > c2) << 1) - 1; + } +/* Both length and characters must be equal. */ +return 0; +} + +/* The following function returns with the length of +a zero terminated string. Basically an strlen for non 8 bit characters. + +Arguments: + str string + +Returns: length of the string +*/ + +unsigned int +PRIV(strlen_uc)(const pcre_uchar *str) +{ +unsigned int len = 0; +while (*str++ != 0) + len++; +return len; +} + +#endif /* !COMPILE_PCRE8 */ + +/* End of pcre_string_utils.c */ diff --git a/Foundation/src/pcre_study.c b/Foundation/src/pcre_study.c index 12ffee0ee..4db349809 100644 --- a/Foundation/src/pcre_study.c +++ b/Foundation/src/pcre_study.c @@ -6,7 +6,7 @@ and semantics are as close as possible to those of the Perl 5 language. Written by Philip Hazel - Copyright (c) 1997-2008 University of Cambridge + Copyright (c) 1997-2012 University of Cambridge ----------------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without @@ -37,42 +37,694 @@ POSSIBILITY OF SUCH DAMAGE. ----------------------------------------------------------------------------- */ +#pragma warning( disable : 4244) // conversion from 'int' to 'unsigned short', possible loss of data /* This module contains the external function pcre_study(), along with local supporting functions. */ - #include "pcre_config.h" #include "pcre_internal.h" +#define SET_BIT(c) start_bits[c/8] |= (1 << (c&7)) /* Returns from set_start_bits() */ -enum { SSB_FAIL, SSB_DONE, SSB_CONTINUE }; +enum { SSB_FAIL, SSB_DONE, SSB_CONTINUE, SSB_UNKNOWN }; + + + +/************************************************* +* Find the minimum subject length for a group * +*************************************************/ + +/* Scan a parenthesized group and compute the minimum length of subject that +is needed to match it. This is a lower bound; it does not mean there is a +string of that length that matches. In UTF8 mode, the result is in characters +rather than bytes. + +Arguments: + re compiled pattern block + code pointer to start of group (the bracket) + startcode pointer to start of the whole pattern's code + options the compiling options + int RECURSE depth + +Returns: the minimum length + -1 if \C in UTF-8 mode or (*ACCEPT) was encountered + -2 internal error (missing capturing bracket) + -3 internal error (opcode not listed) +*/ + +static int +find_minlength(const REAL_PCRE *re, const pcre_uchar *code, + const pcre_uchar *startcode, int options, int recurse_depth) +{ +int length = -1; +/* PCRE_UTF16 has the same value as PCRE_UTF8. */ +BOOL utf = (options & PCRE_UTF8) != 0; +BOOL had_recurse = FALSE; +register int branchlength = 0; +register pcre_uchar *cc = (pcre_uchar *)code + 1 + LINK_SIZE; + +if (*code == OP_CBRA || *code == OP_SCBRA || + *code == OP_CBRAPOS || *code == OP_SCBRAPOS) cc += IMM2_SIZE; + +/* Scan along the opcodes for this branch. If we get to the end of the +branch, check the length against that of the other branches. */ + +for (;;) + { + int d, min; + pcre_uchar *cs, *ce; + register pcre_uchar op = *cc; + + switch (op) + { + case OP_COND: + case OP_SCOND: + + /* If there is only one branch in a condition, the implied branch has zero + length, so we don't add anything. This covers the DEFINE "condition" + automatically. */ + + cs = cc + GET(cc, 1); + if (*cs != OP_ALT) + { + cc = cs + 1 + LINK_SIZE; + break; + } + + /* Otherwise we can fall through and treat it the same as any other + subpattern. */ + + case OP_CBRA: + case OP_SCBRA: + case OP_BRA: + case OP_SBRA: + case OP_CBRAPOS: + case OP_SCBRAPOS: + case OP_BRAPOS: + case OP_SBRAPOS: + case OP_ONCE: + case OP_ONCE_NC: + d = find_minlength(re, cc, startcode, options, recurse_depth); + if (d < 0) return d; + branchlength += d; + do cc += GET(cc, 1); while (*cc == OP_ALT); + cc += 1 + LINK_SIZE; + break; + + /* ACCEPT makes things far too complicated; we have to give up. */ + + case OP_ACCEPT: + case OP_ASSERT_ACCEPT: + return -1; + + /* Reached end of a branch; if it's a ket it is the end of a nested + call. If it's ALT it is an alternation in a nested call. If it is END it's + the end of the outer call. All can be handled by the same code. If an + ACCEPT was previously encountered, use the length that was in force at that + time, and pass back the shortest ACCEPT length. */ + + case OP_ALT: + case OP_KET: + case OP_KETRMAX: + case OP_KETRMIN: + case OP_KETRPOS: + case OP_END: + if (length < 0 || (!had_recurse && branchlength < length)) + length = branchlength; + if (op != OP_ALT) return length; + cc += 1 + LINK_SIZE; + branchlength = 0; + had_recurse = FALSE; + break; + + /* Skip over assertive subpatterns */ + + case OP_ASSERT: + case OP_ASSERT_NOT: + case OP_ASSERTBACK: + case OP_ASSERTBACK_NOT: + do cc += GET(cc, 1); while (*cc == OP_ALT); + /* Fall through */ + + /* Skip over things that don't match chars */ + + case OP_REVERSE: + case OP_CREF: + case OP_DNCREF: + case OP_RREF: + case OP_DNRREF: + case OP_DEF: + case OP_CALLOUT: + case OP_SOD: + case OP_SOM: + case OP_EOD: + case OP_EODN: + case OP_CIRC: + case OP_CIRCM: + case OP_DOLL: + case OP_DOLLM: + case OP_NOT_WORD_BOUNDARY: + case OP_WORD_BOUNDARY: + cc += PRIV(OP_lengths)[*cc]; + break; + + /* Skip over a subpattern that has a {0} or {0,x} quantifier */ + + case OP_BRAZERO: + case OP_BRAMINZERO: + case OP_BRAPOSZERO: + case OP_SKIPZERO: + cc += PRIV(OP_lengths)[*cc]; + do cc += GET(cc, 1); while (*cc == OP_ALT); + cc += 1 + LINK_SIZE; + break; + + /* Handle literal characters and + repetitions */ + + case OP_CHAR: + case OP_CHARI: + case OP_NOT: + case OP_NOTI: + case OP_PLUS: + case OP_PLUSI: + case OP_MINPLUS: + case OP_MINPLUSI: + case OP_POSPLUS: + case OP_POSPLUSI: + case OP_NOTPLUS: + case OP_NOTPLUSI: + case OP_NOTMINPLUS: + case OP_NOTMINPLUSI: + case OP_NOTPOSPLUS: + case OP_NOTPOSPLUSI: + branchlength++; + cc += 2; +#ifdef SUPPORT_UTF + if (utf && HAS_EXTRALEN(cc[-1])) cc += GET_EXTRALEN(cc[-1]); +#endif + break; + + case OP_TYPEPLUS: + case OP_TYPEMINPLUS: + case OP_TYPEPOSPLUS: + branchlength++; + cc += (cc[1] == OP_PROP || cc[1] == OP_NOTPROP)? 4 : 2; + break; + + /* Handle exact repetitions. The count is already in characters, but we + need to skip over a multibyte character in UTF8 mode. */ + + case OP_EXACT: + case OP_EXACTI: + case OP_NOTEXACT: + case OP_NOTEXACTI: + branchlength += GET2(cc,1); + cc += 2 + IMM2_SIZE; +#ifdef SUPPORT_UTF + if (utf && HAS_EXTRALEN(cc[-1])) cc += GET_EXTRALEN(cc[-1]); +#endif + break; + + case OP_TYPEEXACT: + branchlength += GET2(cc,1); + cc += 2 + IMM2_SIZE + ((cc[1 + IMM2_SIZE] == OP_PROP + || cc[1 + IMM2_SIZE] == OP_NOTPROP)? 2 : 0); + break; + + /* Handle single-char non-literal matchers */ + + case OP_PROP: + case OP_NOTPROP: + cc += 2; + /* Fall through */ + + case OP_NOT_DIGIT: + case OP_DIGIT: + case OP_NOT_WHITESPACE: + case OP_WHITESPACE: + case OP_NOT_WORDCHAR: + case OP_WORDCHAR: + case OP_ANY: + case OP_ALLANY: + case OP_EXTUNI: + case OP_HSPACE: + case OP_NOT_HSPACE: + case OP_VSPACE: + case OP_NOT_VSPACE: + branchlength++; + cc++; + break; + + /* "Any newline" might match two characters, but it also might match just + one. */ + + case OP_ANYNL: + branchlength += 1; + cc++; + break; + + /* The single-byte matcher means we can't proceed in UTF-8 mode. (In + non-UTF-8 mode \C will actually be turned into OP_ALLANY, so won't ever + appear, but leave the code, just in case.) */ + + case OP_ANYBYTE: +#ifdef SUPPORT_UTF + if (utf) return -1; +#endif + branchlength++; + cc++; + break; + + /* For repeated character types, we have to test for \p and \P, which have + an extra two bytes of parameters. */ + + case OP_TYPESTAR: + case OP_TYPEMINSTAR: + case OP_TYPEQUERY: + case OP_TYPEMINQUERY: + case OP_TYPEPOSSTAR: + case OP_TYPEPOSQUERY: + if (cc[1] == OP_PROP || cc[1] == OP_NOTPROP) cc += 2; + cc += PRIV(OP_lengths)[op]; + break; + + case OP_TYPEUPTO: + case OP_TYPEMINUPTO: + case OP_TYPEPOSUPTO: + if (cc[1 + IMM2_SIZE] == OP_PROP + || cc[1 + IMM2_SIZE] == OP_NOTPROP) cc += 2; + cc += PRIV(OP_lengths)[op]; + break; + + /* Check a class for variable quantification */ + + case OP_CLASS: + case OP_NCLASS: +#if defined SUPPORT_UTF || defined COMPILE_PCRE16 || defined COMPILE_PCRE32 + case OP_XCLASS: + /* The original code caused an unsigned overflow in 64 bit systems, + so now we use a conditional statement. */ + if (op == OP_XCLASS) + cc += GET(cc, 1); + else + cc += PRIV(OP_lengths)[OP_CLASS]; +#else + cc += PRIV(OP_lengths)[OP_CLASS]; +#endif + + switch (*cc) + { + case OP_CRPLUS: + case OP_CRMINPLUS: + case OP_CRPOSPLUS: + branchlength++; + /* Fall through */ + + case OP_CRSTAR: + case OP_CRMINSTAR: + case OP_CRQUERY: + case OP_CRMINQUERY: + case OP_CRPOSSTAR: + case OP_CRPOSQUERY: + cc++; + break; + + case OP_CRRANGE: + case OP_CRMINRANGE: + case OP_CRPOSRANGE: + branchlength += GET2(cc,1); + cc += 1 + 2 * IMM2_SIZE; + break; + + default: + branchlength++; + break; + } + break; + + /* Backreferences and subroutine calls are treated in the same way: we find + the minimum length for the subpattern. A recursion, however, causes an + a flag to be set that causes the length of this branch to be ignored. The + logic is that a recursion can only make sense if there is another + alternation that stops the recursing. That will provide the minimum length + (when no recursion happens). A backreference within the group that it is + referencing behaves in the same way. + + If PCRE_JAVASCRIPT_COMPAT is set, a backreference to an unset bracket + matches an empty string (by default it causes a matching failure), so in + that case we must set the minimum length to zero. */ + + case OP_DNREF: /* Duplicate named pattern back reference */ + case OP_DNREFI: + if ((options & PCRE_JAVASCRIPT_COMPAT) == 0) + { + int count = GET2(cc, 1+IMM2_SIZE); + pcre_uchar *slot = (pcre_uchar *)re + + re->name_table_offset + GET2(cc, 1) * re->name_entry_size; + d = INT_MAX; + while (count-- > 0) + { + ce = cs = (pcre_uchar *)PRIV(find_bracket)(startcode, utf, GET2(slot, 0)); + if (cs == NULL) return -2; + do ce += GET(ce, 1); while (*ce == OP_ALT); + if (cc > cs && cc < ce) + { + d = 0; + had_recurse = TRUE; + break; + } + else + { + int dd = find_minlength(re, cs, startcode, options, recurse_depth); + if (dd < d) d = dd; + } + slot += re->name_entry_size; + } + } + else d = 0; + cc += 1 + 2*IMM2_SIZE; + goto REPEAT_BACK_REFERENCE; + + case OP_REF: /* Single back reference */ + case OP_REFI: + if ((options & PCRE_JAVASCRIPT_COMPAT) == 0) + { + ce = cs = (pcre_uchar *)PRIV(find_bracket)(startcode, utf, GET2(cc, 1)); + if (cs == NULL) return -2; + do ce += GET(ce, 1); while (*ce == OP_ALT); + if (cc > cs && cc < ce) + { + d = 0; + had_recurse = TRUE; + } + else + { + d = find_minlength(re, cs, startcode, options, recurse_depth); + } + } + else d = 0; + cc += 1 + IMM2_SIZE; + + /* Handle repeated back references */ + + REPEAT_BACK_REFERENCE: + switch (*cc) + { + case OP_CRSTAR: + case OP_CRMINSTAR: + case OP_CRQUERY: + case OP_CRMINQUERY: + case OP_CRPOSSTAR: + case OP_CRPOSQUERY: + min = 0; + cc++; + break; + + case OP_CRPLUS: + case OP_CRMINPLUS: + case OP_CRPOSPLUS: + min = 1; + cc++; + break; + + case OP_CRRANGE: + case OP_CRMINRANGE: + case OP_CRPOSRANGE: + min = GET2(cc, 1); + cc += 1 + 2 * IMM2_SIZE; + break; + + default: + min = 1; + break; + } + + branchlength += min * d; + break; + + /* We can easily detect direct recursion, but not mutual recursion. This is + caught by a recursion depth count. */ + + case OP_RECURSE: + cs = ce = (pcre_uchar *)startcode + GET(cc, 1); + do ce += GET(ce, 1); while (*ce == OP_ALT); + if ((cc > cs && cc < ce) || recurse_depth > 10) + had_recurse = TRUE; + else + { + branchlength += find_minlength(re, cs, startcode, options, + recurse_depth + 1); + } + cc += 1 + LINK_SIZE; + break; + + /* Anything else does not or need not match a character. We can get the + item's length from the table, but for those that can match zero occurrences + of a character, we must take special action for UTF-8 characters. As it + happens, the "NOT" versions of these opcodes are used at present only for + ASCII characters, so they could be omitted from this list. However, in + future that may change, so we include them here so as not to leave a + gotcha for a future maintainer. */ + + case OP_UPTO: + case OP_UPTOI: + case OP_NOTUPTO: + case OP_NOTUPTOI: + case OP_MINUPTO: + case OP_MINUPTOI: + case OP_NOTMINUPTO: + case OP_NOTMINUPTOI: + case OP_POSUPTO: + case OP_POSUPTOI: + case OP_NOTPOSUPTO: + case OP_NOTPOSUPTOI: + + case OP_STAR: + case OP_STARI: + case OP_NOTSTAR: + case OP_NOTSTARI: + case OP_MINSTAR: + case OP_MINSTARI: + case OP_NOTMINSTAR: + case OP_NOTMINSTARI: + case OP_POSSTAR: + case OP_POSSTARI: + case OP_NOTPOSSTAR: + case OP_NOTPOSSTARI: + + case OP_QUERY: + case OP_QUERYI: + case OP_NOTQUERY: + case OP_NOTQUERYI: + case OP_MINQUERY: + case OP_MINQUERYI: + case OP_NOTMINQUERY: + case OP_NOTMINQUERYI: + case OP_POSQUERY: + case OP_POSQUERYI: + case OP_NOTPOSQUERY: + case OP_NOTPOSQUERYI: + + cc += PRIV(OP_lengths)[op]; +#ifdef SUPPORT_UTF + if (utf && HAS_EXTRALEN(cc[-1])) cc += GET_EXTRALEN(cc[-1]); +#endif + break; + + /* Skip these, but we need to add in the name length. */ + + case OP_MARK: + case OP_PRUNE_ARG: + case OP_SKIP_ARG: + case OP_THEN_ARG: + cc += PRIV(OP_lengths)[op] + cc[1]; + break; + + /* The remaining opcodes are just skipped over. */ + + case OP_CLOSE: + case OP_COMMIT: + case OP_FAIL: + case OP_PRUNE: + case OP_SET_SOM: + case OP_SKIP: + case OP_THEN: + cc += PRIV(OP_lengths)[op]; + break; + + /* This should not occur: we list all opcodes explicitly so that when + new ones get added they are properly considered. */ + + default: + return -3; + } + } +/* Control never gets here */ +} + /************************************************* * Set a bit and maybe its alternate case * *************************************************/ -/* Given a character, set its bit in the table, and also the bit for the other -version of a letter if we are caseless. +/* Given a character, set its first byte's bit in the table, and also the +corresponding bit for the other version of a letter if we are caseless. In +UTF-8 mode, for characters greater than 127, we can only do the caseless thing +when Unicode property support is available. Arguments: start_bits points to the bit map - c is the character + p points to the character caseless the caseless flag cd the block with char table pointers + utf TRUE for UTF-8 / UTF-16 / UTF-32 mode -Returns: nothing +Returns: pointer after the character +*/ + +static const pcre_uchar * +set_table_bit(pcre_uint8 *start_bits, const pcre_uchar *p, BOOL caseless, + compile_data *cd, BOOL utf) +{ +pcre_uint32 c = *p; + +#ifdef COMPILE_PCRE8 +SET_BIT(c); + +#ifdef SUPPORT_UTF +if (utf && c > 127) + { + GETCHARINC(c, p); +#ifdef SUPPORT_UCP + if (caseless) + { + pcre_uchar buff[6]; + c = UCD_OTHERCASE(c); + (void)PRIV(ord2utf)(c, buff); + SET_BIT(buff[0]); + } +#endif /* Not SUPPORT_UCP */ + return p; + } +#else /* Not SUPPORT_UTF */ +(void)(utf); /* Stops warning for unused parameter */ +#endif /* SUPPORT_UTF */ + +/* Not UTF-8 mode, or character is less than 127. */ + +if (caseless && (cd->ctypes[c] & ctype_letter) != 0) SET_BIT(cd->fcc[c]); +return p + 1; +#endif /* COMPILE_PCRE8 */ + +#if defined COMPILE_PCRE16 || defined COMPILE_PCRE32 +if (c > 0xff) + { + c = 0xff; + caseless = FALSE; + } +SET_BIT(c); + +#ifdef SUPPORT_UTF +if (utf && c > 127) + { + GETCHARINC(c, p); +#ifdef SUPPORT_UCP + if (caseless) + { + c = UCD_OTHERCASE(c); + if (c > 0xff) + c = 0xff; + SET_BIT(c); + } +#endif /* SUPPORT_UCP */ + return p; + } +#else /* Not SUPPORT_UTF */ +(void)(utf); /* Stops warning for unused parameter */ +#endif /* SUPPORT_UTF */ + +if (caseless && (cd->ctypes[c] & ctype_letter) != 0) SET_BIT(cd->fcc[c]); +return p + 1; +#endif +} + + + +/************************************************* +* Set bits for a positive character type * +*************************************************/ + +/* This function sets starting bits for a character type. In UTF-8 mode, we can +only do a direct setting for bytes less than 128, as otherwise there can be +confusion with bytes in the middle of UTF-8 characters. In a "traditional" +environment, the tables will only recognize ASCII characters anyway, but in at +least one Windows environment, some higher bytes bits were set in the tables. +So we deal with that case by considering the UTF-8 encoding. + +Arguments: + start_bits the starting bitmap + cbit type the type of character wanted + table_limit 32 for non-UTF-8; 16 for UTF-8 + cd the block with char table pointers + +Returns: nothing */ static void -set_bit(uschar *start_bits, unsigned int c, BOOL caseless, compile_data *cd) +set_type_bits(pcre_uint8 *start_bits, int cbit_type, unsigned int table_limit, + compile_data *cd) { -start_bits[c/8] |= (1 << (c&7)); -if (caseless && (cd->ctypes[c] & ctype_letter) != 0) - start_bits[cd->fcc[c]/8] |= (1 << (cd->fcc[c]&7)); +register pcre_uint32 c; +for (c = 0; c < table_limit; c++) start_bits[c] |= cd->cbits[c+cbit_type]; +#if defined SUPPORT_UTF && defined COMPILE_PCRE8 +if (table_limit == 32) return; +for (c = 128; c < 256; c++) + { + if ((cd->cbits[c/8] & (1 << (c&7))) != 0) + { + pcre_uchar buff[6]; + (void)PRIV(ord2utf)(c, buff); + SET_BIT(buff[0]); + } + } +#endif +} + + +/************************************************* +* Set bits for a negative character type * +*************************************************/ + +/* This function sets starting bits for a negative character type such as \D. +In UTF-8 mode, we can only do a direct setting for bytes less than 128, as +otherwise there can be confusion with bytes in the middle of UTF-8 characters. +Unlike in the positive case, where we can set appropriate starting bits for +specific high-valued UTF-8 characters, in this case we have to set the bits for +all high-valued characters. The lowest is 0xc2, but we overkill by starting at +0xc0 (192) for simplicity. + +Arguments: + start_bits the starting bitmap + cbit type the type of character wanted + table_limit 32 for non-UTF-8; 16 for UTF-8 + cd the block with char table pointers + +Returns: nothing +*/ + +static void +set_nottype_bits(pcre_uint8 *start_bits, int cbit_type, unsigned int table_limit, + compile_data *cd) +{ +register pcre_uint32 c; +for (c = 0; c < table_limit; c++) start_bits[c] |= ~cd->cbits[c+cbit_type]; +#if defined SUPPORT_UTF && defined COMPILE_PCRE8 +if (table_limit != 32) for (c = 24; c < 32; c++) start_bits[c] = 0xff; +#endif } @@ -92,21 +744,26 @@ function fails unless the result is SSB_DONE. Arguments: code points to an expression start_bits points to a 32-byte table, initialized to 0 - caseless the current state of the caseless flag - utf8 TRUE if in UTF-8 mode + utf TRUE if in UTF-8 / UTF-16 / UTF-32 mode cd the block with char table pointers Returns: SSB_FAIL => Failed to find any starting bytes SSB_DONE => Found mandatory starting bytes SSB_CONTINUE => Found optional starting bytes + SSB_UNKNOWN => Hit an unrecognized opcode */ static int -set_start_bits(const uschar *code, uschar *start_bits, BOOL caseless, - BOOL utf8, compile_data *cd) +set_start_bits(const pcre_uchar *code, pcre_uint8 *start_bits, BOOL utf, + compile_data *cd) { -register int c; +register pcre_uint32 c; int yield = SSB_DONE; +#if defined SUPPORT_UTF && defined COMPILE_PCRE8 +int table_limit = utf? 16:32; +#else +int table_limit = 32; +#endif #if 0 /* ========================================================================= */ @@ -127,19 +784,107 @@ volatile int dummy; do { - const uschar *tcode = code + (((int)*code == OP_CBRA)? 3:1) + LINK_SIZE; BOOL try_next = TRUE; + const pcre_uchar *tcode = code + 1 + LINK_SIZE; + + if (*code == OP_CBRA || *code == OP_SCBRA || + *code == OP_CBRAPOS || *code == OP_SCBRAPOS) tcode += IMM2_SIZE; while (try_next) /* Loop for items in this branch */ { int rc; + switch(*tcode) { - /* Fail if we reach something we don't understand */ + /* If we reach something we don't understand, it means a new opcode has + been created that hasn't been added to this code. Hopefully this problem + will be discovered during testing. */ default: + return SSB_UNKNOWN; + + /* Fail for a valid opcode that implies no starting bits. */ + + case OP_ACCEPT: + case OP_ASSERT_ACCEPT: + case OP_ALLANY: + case OP_ANY: + case OP_ANYBYTE: + case OP_CIRC: + case OP_CIRCM: + case OP_CLOSE: + case OP_COMMIT: + case OP_COND: + case OP_CREF: + case OP_DEF: + case OP_DNCREF: + case OP_DNREF: + case OP_DNREFI: + case OP_DNRREF: + case OP_DOLL: + case OP_DOLLM: + case OP_END: + case OP_EOD: + case OP_EODN: + case OP_EXTUNI: + case OP_FAIL: + case OP_MARK: + case OP_NOT: + case OP_NOTEXACT: + case OP_NOTEXACTI: + case OP_NOTI: + case OP_NOTMINPLUS: + case OP_NOTMINPLUSI: + case OP_NOTMINQUERY: + case OP_NOTMINQUERYI: + case OP_NOTMINSTAR: + case OP_NOTMINSTARI: + case OP_NOTMINUPTO: + case OP_NOTMINUPTOI: + case OP_NOTPLUS: + case OP_NOTPLUSI: + case OP_NOTPOSPLUS: + case OP_NOTPOSPLUSI: + case OP_NOTPOSQUERY: + case OP_NOTPOSQUERYI: + case OP_NOTPOSSTAR: + case OP_NOTPOSSTARI: + case OP_NOTPOSUPTO: + case OP_NOTPOSUPTOI: + case OP_NOTPROP: + case OP_NOTQUERY: + case OP_NOTQUERYI: + case OP_NOTSTAR: + case OP_NOTSTARI: + case OP_NOTUPTO: + case OP_NOTUPTOI: + case OP_NOT_HSPACE: + case OP_NOT_VSPACE: + case OP_PROP: + case OP_PRUNE: + case OP_PRUNE_ARG: + case OP_RECURSE: + case OP_REF: + case OP_REFI: + case OP_REVERSE: + case OP_RREF: + case OP_SCOND: + case OP_SET_SOM: + case OP_SKIP: + case OP_SKIP_ARG: + case OP_SOD: + case OP_SOM: + case OP_THEN: + case OP_THEN_ARG: return SSB_FAIL; + /* We can ignore word boundary tests. */ + + case OP_WORD_BOUNDARY: + case OP_NOT_WORD_BOUNDARY: + tcode++; + break; + /* If we hit a bracket or a positive lookahead assertion, recurse to set bits from within the subpattern. If it can't find anything, we have to give up. If it finds some mandatory character(s), we are done for this @@ -149,10 +894,15 @@ do case OP_SBRA: case OP_CBRA: case OP_SCBRA: + case OP_BRAPOS: + case OP_SBRAPOS: + case OP_CBRAPOS: + case OP_SCBRAPOS: case OP_ONCE: + case OP_ONCE_NC: case OP_ASSERT: - rc = set_start_bits(tcode, start_bits, caseless, utf8, cd); - if (rc == SSB_FAIL) return SSB_FAIL; + rc = set_start_bits(tcode, start_bits, utf, cd); + if (rc == SSB_FAIL || rc == SSB_UNKNOWN) return rc; if (rc == SSB_DONE) try_next = FALSE; else { do tcode += GET(tcode, 1); while (*tcode == OP_ALT); @@ -175,6 +925,7 @@ do case OP_KET: case OP_KETRMAX: case OP_KETRMIN: + case OP_KETRPOS: return SSB_CONTINUE; /* Skip over callout */ @@ -192,19 +943,13 @@ do tcode += 1 + LINK_SIZE; break; - /* Skip over an option setting, changing the caseless flag */ - - case OP_OPT: - caseless = (tcode[1] & PCRE_CASELESS) != 0; - tcode += 2; - break; - /* BRAZERO does the bracket, but carries on. */ case OP_BRAZERO: case OP_BRAMINZERO: - if (set_start_bits(++tcode, start_bits, caseless, utf8, cd) == SSB_FAIL) - return SSB_FAIL; + case OP_BRAPOSZERO: + rc = set_start_bits(++tcode, start_bits, utf, cd); + if (rc == SSB_FAIL || rc == SSB_UNKNOWN) return rc; /* ========================================================================= See the comment at the head of this function concerning the next line, which was an old fudge for the benefit of OS/2. @@ -230,12 +975,16 @@ do case OP_QUERY: case OP_MINQUERY: case OP_POSQUERY: - set_bit(start_bits, tcode[1], caseless, cd); - tcode += 2; -#ifdef SUPPORT_UTF8 - if (utf8 && tcode[-1] >= 0xc0) - tcode += _pcre_utf8_table4[tcode[-1] & 0x3f]; -#endif + tcode = set_table_bit(start_bits, tcode + 1, FALSE, cd, utf); + break; + + case OP_STARI: + case OP_MINSTARI: + case OP_POSSTARI: + case OP_QUERYI: + case OP_MINQUERYI: + case OP_POSQUERYI: + tcode = set_table_bit(start_bits, tcode + 1, TRUE, cd, utf); break; /* Single-char upto sets the bit and tries the next */ @@ -243,77 +992,145 @@ do case OP_UPTO: case OP_MINUPTO: case OP_POSUPTO: - set_bit(start_bits, tcode[3], caseless, cd); - tcode += 4; -#ifdef SUPPORT_UTF8 - if (utf8 && tcode[-1] >= 0xc0) - tcode += _pcre_utf8_table4[tcode[-1] & 0x3f]; -#endif + tcode = set_table_bit(start_bits, tcode + 1 + IMM2_SIZE, FALSE, cd, utf); + break; + + case OP_UPTOI: + case OP_MINUPTOI: + case OP_POSUPTOI: + tcode = set_table_bit(start_bits, tcode + 1 + IMM2_SIZE, TRUE, cd, utf); break; /* At least one single char sets the bit and stops */ - case OP_EXACT: /* Fall through */ - tcode += 2; - + case OP_EXACT: + tcode += IMM2_SIZE; + /* Fall through */ case OP_CHAR: - case OP_CHARNC: case OP_PLUS: case OP_MINPLUS: case OP_POSPLUS: - set_bit(start_bits, tcode[1], caseless, cd); + (void)set_table_bit(start_bits, tcode + 1, FALSE, cd, utf); try_next = FALSE; break; - /* Single character type sets the bits and stops */ + case OP_EXACTI: + tcode += IMM2_SIZE; + /* Fall through */ + case OP_CHARI: + case OP_PLUSI: + case OP_MINPLUSI: + case OP_POSPLUSI: + (void)set_table_bit(start_bits, tcode + 1, TRUE, cd, utf); + try_next = FALSE; + break; + + /* Special spacing and line-terminating items. These recognize specific + lists of characters. The difference between VSPACE and ANYNL is that the + latter can match the two-character CRLF sequence, but that is not + relevant for finding the first character, so their code here is + identical. */ + + case OP_HSPACE: + SET_BIT(CHAR_HT); + SET_BIT(CHAR_SPACE); +#ifdef SUPPORT_UTF + if (utf) + { +#ifdef COMPILE_PCRE8 + SET_BIT(0xC2); /* For U+00A0 */ + SET_BIT(0xE1); /* For U+1680, U+180E */ + SET_BIT(0xE2); /* For U+2000 - U+200A, U+202F, U+205F */ + SET_BIT(0xE3); /* For U+3000 */ +#elif defined COMPILE_PCRE16 || defined COMPILE_PCRE32 + SET_BIT(0xA0); + SET_BIT(0xFF); /* For characters > 255 */ +#endif /* COMPILE_PCRE[8|16|32] */ + } + else +#endif /* SUPPORT_UTF */ + { +#ifndef EBCDIC + SET_BIT(0xA0); +#endif /* Not EBCDIC */ +#if defined COMPILE_PCRE16 || defined COMPILE_PCRE32 + SET_BIT(0xFF); /* For characters > 255 */ +#endif /* COMPILE_PCRE[16|32] */ + } + try_next = FALSE; + break; + + case OP_ANYNL: + case OP_VSPACE: + SET_BIT(CHAR_LF); + SET_BIT(CHAR_VT); + SET_BIT(CHAR_FF); + SET_BIT(CHAR_CR); +#ifdef SUPPORT_UTF + if (utf) + { +#ifdef COMPILE_PCRE8 + SET_BIT(0xC2); /* For U+0085 */ + SET_BIT(0xE2); /* For U+2028, U+2029 */ +#elif defined COMPILE_PCRE16 || defined COMPILE_PCRE32 + SET_BIT(CHAR_NEL); + SET_BIT(0xFF); /* For characters > 255 */ +#endif /* COMPILE_PCRE[8|16|32] */ + } + else +#endif /* SUPPORT_UTF */ + { + SET_BIT(CHAR_NEL); +#if defined COMPILE_PCRE16 || defined COMPILE_PCRE32 + SET_BIT(0xFF); /* For characters > 255 */ +#endif + } + try_next = FALSE; + break; + + /* Single character types set the bits and stop. Note that if PCRE_UCP + is set, we do not see these op codes because \d etc are converted to + properties. Therefore, these apply in the case when only characters less + than 256 are recognized to match the types. */ case OP_NOT_DIGIT: - for (c = 0; c < 32; c++) - start_bits[c] |= ~cd->cbits[c+cbit_digit]; + set_nottype_bits(start_bits, cbit_digit, table_limit, cd); try_next = FALSE; break; case OP_DIGIT: - for (c = 0; c < 32; c++) - start_bits[c] |= cd->cbits[c+cbit_digit]; + set_type_bits(start_bits, cbit_digit, table_limit, cd); try_next = FALSE; break; /* The cbit_space table has vertical tab as whitespace; we have to - discard it. */ + ensure it is set as not whitespace. Luckily, the code value is the same + (0x0b) in ASCII and EBCDIC, so we can just adjust the appropriate bit. */ case OP_NOT_WHITESPACE: - for (c = 0; c < 32; c++) - { - int d = cd->cbits[c+cbit_space]; - if (c == 1) d &= ~0x08; - start_bits[c] |= ~d; - } + set_nottype_bits(start_bits, cbit_space, table_limit, cd); + start_bits[1] |= 0x08; try_next = FALSE; break; - /* The cbit_space table has vertical tab as whitespace; we have to - discard it. */ + /* The cbit_space table has vertical tab as whitespace; we have to not + set it from the table. Luckily, the code value is the same (0x0b) in + ASCII and EBCDIC, so we can just adjust the appropriate bit. */ case OP_WHITESPACE: - for (c = 0; c < 32; c++) - { - int d = cd->cbits[c+cbit_space]; - if (c == 1) d &= ~0x08; - start_bits[c] |= d; - } + c = start_bits[1]; /* Save in case it was already set */ + set_type_bits(start_bits, cbit_space, table_limit, cd); + start_bits[1] = (start_bits[1] & ~0x08) | c; try_next = FALSE; break; case OP_NOT_WORDCHAR: - for (c = 0; c < 32; c++) - start_bits[c] |= ~cd->cbits[c+cbit_word]; + set_nottype_bits(start_bits, cbit_word, table_limit, cd); try_next = FALSE; break; case OP_WORDCHAR: - for (c = 0; c < 32; c++) - start_bits[c] |= cd->cbits[c+cbit_word]; + set_type_bits(start_bits, cbit_word, table_limit, cd); try_next = FALSE; break; @@ -322,11 +1139,12 @@ do case OP_TYPEPLUS: case OP_TYPEMINPLUS: + case OP_TYPEPOSPLUS: tcode++; break; case OP_TYPEEXACT: - tcode += 3; + tcode += 1 + IMM2_SIZE; break; /* Zero or more repeats of character types set the bits and then @@ -335,7 +1153,7 @@ do case OP_TYPEUPTO: case OP_TYPEMINUPTO: case OP_TYPEPOSUPTO: - tcode += 2; /* Fall through */ + tcode += IMM2_SIZE; /* Fall through */ case OP_TYPESTAR: case OP_TYPEMINSTAR: @@ -345,52 +1163,82 @@ do case OP_TYPEPOSQUERY: switch(tcode[1]) { + default: case OP_ANY: case OP_ALLANY: return SSB_FAIL; + case OP_HSPACE: + SET_BIT(CHAR_HT); + SET_BIT(CHAR_SPACE); +#ifdef SUPPORT_UTF + if (utf) + { +#ifdef COMPILE_PCRE8 + SET_BIT(0xC2); /* For U+00A0 */ + SET_BIT(0xE1); /* For U+1680, U+180E */ + SET_BIT(0xE2); /* For U+2000 - U+200A, U+202F, U+205F */ + SET_BIT(0xE3); /* For U+3000 */ +#elif defined COMPILE_PCRE16 || defined COMPILE_PCRE32 + SET_BIT(0xA0); + SET_BIT(0xFF); /* For characters > 255 */ +#endif /* COMPILE_PCRE[8|16|32] */ + } + else +#endif /* SUPPORT_UTF */ +#ifndef EBCDIC + SET_BIT(0xA0); +#endif /* Not EBCDIC */ + break; + + case OP_ANYNL: + case OP_VSPACE: + SET_BIT(CHAR_LF); + SET_BIT(CHAR_VT); + SET_BIT(CHAR_FF); + SET_BIT(CHAR_CR); +#ifdef SUPPORT_UTF + if (utf) + { +#ifdef COMPILE_PCRE8 + SET_BIT(0xC2); /* For U+0085 */ + SET_BIT(0xE2); /* For U+2028, U+2029 */ +#elif defined COMPILE_PCRE16 || defined COMPILE_PCRE32 + SET_BIT(CHAR_NEL); + SET_BIT(0xFF); /* For characters > 255 */ +#endif /* COMPILE_PCRE16 */ + } + else +#endif /* SUPPORT_UTF */ + SET_BIT(CHAR_NEL); + break; + case OP_NOT_DIGIT: - for (c = 0; c < 32; c++) - start_bits[c] |= ~cd->cbits[c+cbit_digit]; + set_nottype_bits(start_bits, cbit_digit, table_limit, cd); break; case OP_DIGIT: - for (c = 0; c < 32; c++) - start_bits[c] |= cd->cbits[c+cbit_digit]; + set_type_bits(start_bits, cbit_digit, table_limit, cd); break; - /* The cbit_space table has vertical tab as whitespace; we have to - discard it. */ + /* The cbit_space table has vertical tab as whitespace; we no longer + have to play fancy tricks because Perl added VT to its whitespace at + release 5.18. PCRE added it at release 8.34. */ case OP_NOT_WHITESPACE: - for (c = 0; c < 32; c++) - { - int d = cd->cbits[c+cbit_space]; - if (c == 1) d &= ~0x08; - start_bits[c] |= ~d; - } + set_nottype_bits(start_bits, cbit_space, table_limit, cd); break; - /* The cbit_space table has vertical tab as whitespace; we have to - discard it. */ - case OP_WHITESPACE: - for (c = 0; c < 32; c++) - { - int d = cd->cbits[c+cbit_space]; - if (c == 1) d &= ~0x08; - start_bits[c] |= d; - } + set_type_bits(start_bits, cbit_space, table_limit, cd); break; case OP_NOT_WORDCHAR: - for (c = 0; c < 32; c++) - start_bits[c] |= ~cd->cbits[c+cbit_word]; + set_nottype_bits(start_bits, cbit_word, table_limit, cd); break; case OP_WORDCHAR: - for (c = 0; c < 32; c++) - start_bits[c] |= cd->cbits[c+cbit_word]; + set_type_bits(start_bits, cbit_word, table_limit, cd); break; } @@ -403,19 +1251,47 @@ do with a value >= 0xc4 is a potentially valid starter because it starts a character with a value > 255. */ +#if defined SUPPORT_UTF || !defined COMPILE_PCRE8 + case OP_XCLASS: + if ((tcode[1 + LINK_SIZE] & XCL_HASPROP) != 0) + return SSB_FAIL; + /* All bits are set. */ + if ((tcode[1 + LINK_SIZE] & XCL_MAP) == 0 && (tcode[1 + LINK_SIZE] & XCL_NOT) != 0) + return SSB_FAIL; +#endif + /* Fall through */ + case OP_NCLASS: -#ifdef SUPPORT_UTF8 - if (utf8) +#if defined SUPPORT_UTF && defined COMPILE_PCRE8 + if (utf) { start_bits[24] |= 0xf0; /* Bits for 0xc4 - 0xc8 */ memset(start_bits+25, 0xff, 7); /* Bits for 0xc9 - 0xff */ } +#endif +#if defined COMPILE_PCRE16 || defined COMPILE_PCRE32 + SET_BIT(0xFF); /* For characters > 255 */ #endif /* Fall through */ case OP_CLASS: { - tcode++; + pcre_uint8 *map; +#if defined SUPPORT_UTF || !defined COMPILE_PCRE8 + map = NULL; + if (*tcode == OP_XCLASS) + { + if ((tcode[1 + LINK_SIZE] & XCL_MAP) != 0) + map = (pcre_uint8 *)(tcode + 1 + LINK_SIZE + 1); + tcode += GET(tcode, 1); + } + else +#endif + { + tcode++; + map = (pcre_uint8 *)tcode; + tcode += 32 / sizeof(pcre_uchar); + } /* In UTF-8 mode, the bits in a bit map correspond to character values, not to byte values. However, the bit map we are constructing is @@ -423,44 +1299,50 @@ do value is > 127. In fact, there are only two possible starting bytes for characters in the range 128 - 255. */ -#ifdef SUPPORT_UTF8 - if (utf8) +#if defined SUPPORT_UTF || !defined COMPILE_PCRE8 + if (map != NULL) +#endif { - for (c = 0; c < 16; c++) start_bits[c] |= tcode[c]; - for (c = 128; c < 256; c++) +#if defined SUPPORT_UTF && defined COMPILE_PCRE8 + if (utf) { - if ((tcode[c/8] && (1 << (c&7))) != 0) + for (c = 0; c < 16; c++) start_bits[c] |= map[c]; + for (c = 128; c < 256; c++) { - int d = (c >> 6) | 0xc0; /* Set bit for this starter */ - start_bits[d/8] |= (1 << (d&7)); /* and then skip on to the */ - c = (c & 0xc0) + 0x40 - 1; /* next relevant character. */ + if ((map[c/8] && (1 << (c&7))) != 0) + { + int d = (c >> 6) | 0xc0; /* Set bit for this starter */ + start_bits[d/8] |= (1 << (d&7)); /* and then skip on to the */ + c = (c & 0xc0) + 0x40 - 1; /* next relevant character. */ + } } } + else +#endif + { + /* In non-UTF-8 mode, the two bit maps are completely compatible. */ + for (c = 0; c < 32; c++) start_bits[c] |= map[c]; + } } - /* In non-UTF-8 mode, the two bit maps are completely compatible. */ + /* Advance past the bit map, and act on what follows. For a zero + minimum repeat, continue; otherwise stop processing. */ - else -#endif - { - for (c = 0; c < 32; c++) start_bits[c] |= tcode[c]; - } - - /* Advance past the bit map, and act on what follows */ - - tcode += 32; switch (*tcode) { case OP_CRSTAR: case OP_CRMINSTAR: case OP_CRQUERY: case OP_CRMINQUERY: + case OP_CRPOSSTAR: + case OP_CRPOSQUERY: tcode++; break; case OP_CRRANGE: case OP_CRMINRANGE: - if (((tcode[1] << 8) + tcode[2]) == 0) tcode += 5; + case OP_CRPOSRANGE: + if (GET2(tcode, 1) == 0) tcode += 1 + 2 * IMM2_SIZE; else try_next = FALSE; break; @@ -482,12 +1364,14 @@ return yield; + + /************************************************* * Study a compiled expression * *************************************************/ /* This function is handed a compiled expression that it must study to produce -information that will speed up the matching. It returns a pcre_extra block +information that will speed up the matching. It returns a pcre[16]_extra block which then gets handed back to pcre_exec(). Arguments: @@ -496,21 +1380,32 @@ Arguments: errorptr points to where to place error messages; set NULL unless error -Returns: pointer to a pcre_extra block, with study_data filled in and the - appropriate flag set; +Returns: pointer to a pcre[16]_extra block, with study_data filled in and + the appropriate flags set; NULL on error or if no optimization possible */ +#if defined COMPILE_PCRE8 PCRE_EXP_DEFN pcre_extra * PCRE_CALL_CONVENTION pcre_study(const pcre *external_re, int options, const char **errorptr) +#elif defined COMPILE_PCRE16 +PCRE_EXP_DEFN pcre16_extra * PCRE_CALL_CONVENTION +pcre16_study(const pcre16 *external_re, int options, const char **errorptr) +#elif defined COMPILE_PCRE32 +PCRE_EXP_DEFN pcre32_extra * PCRE_CALL_CONVENTION +pcre32_study(const pcre32 *external_re, int options, const char **errorptr) +#endif { -uschar start_bits[32]; -pcre_extra *extra; +int min; +BOOL bits_set = FALSE; +pcre_uint8 start_bits[32]; +PUBL(extra) *extra = NULL; pcre_study_data *study; -const uschar *tables; -uschar *code; +const pcre_uint8 *tables; +pcre_uchar *code; compile_data compile_block; -const real_pcre *re = (const real_pcre *)external_re; +const REAL_PCRE *re = (const REAL_PCRE *)external_re; + *errorptr = NULL; @@ -520,66 +1415,209 @@ if (re == NULL || re->magic_number != MAGIC_NUMBER) return NULL; } +if ((re->flags & PCRE_MODE) == 0) + { +#if defined COMPILE_PCRE8 + *errorptr = "argument not compiled in 8 bit mode"; +#elif defined COMPILE_PCRE16 + *errorptr = "argument not compiled in 16 bit mode"; +#elif defined COMPILE_PCRE32 + *errorptr = "argument not compiled in 32 bit mode"; +#endif + return NULL; + } + if ((options & ~PUBLIC_STUDY_OPTIONS) != 0) { *errorptr = "unknown or incorrect option bit(s) set"; return NULL; } -code = (uschar *)re + re->name_table_offset + +code = (pcre_uchar *)re + re->name_table_offset + (re->name_count * re->name_entry_size); /* For an anchored pattern, or an unanchored pattern that has a first char, or -a multiline pattern that matches only at "line starts", no further processing -at present. */ +a multiline pattern that matches only at "line starts", there is no point in +seeking a list of starting bytes. */ -if ((re->options & PCRE_ANCHORED) != 0 || - (re->flags & (PCRE_FIRSTSET|PCRE_STARTLINE)) != 0) - return NULL; - -/* Set the character tables in the block that is passed around */ - -tables = re->tables; -if (tables == NULL) - (void)pcre_fullinfo(external_re, NULL, PCRE_INFO_DEFAULT_TABLES, - (void *)(&tables)); - -compile_block.lcc = tables + lcc_offset; -compile_block.fcc = tables + fcc_offset; -compile_block.cbits = tables + cbits_offset; -compile_block.ctypes = tables + ctypes_offset; - -/* See if we can find a fixed set of initial characters for the pattern. */ - -memset(start_bits, 0, 32 * sizeof(uschar)); -if (set_start_bits(code, start_bits, (re->options & PCRE_CASELESS) != 0, - (re->options & PCRE_UTF8) != 0, &compile_block) != SSB_DONE) return NULL; - -/* Get a pcre_extra block and a pcre_study_data block. The study data is put in -the latter, which is pointed to by the former, which may also get additional -data set later by the calling program. At the moment, the size of -pcre_study_data is fixed. We nevertheless save it in a field for returning via -the pcre_fullinfo() function so that if it becomes variable in the future, we -don't have to change that code. */ - -extra = (pcre_extra *)(pcre_malloc) - (sizeof(pcre_extra) + sizeof(pcre_study_data)); - -if (extra == NULL) +if ((re->options & PCRE_ANCHORED) == 0 && + (re->flags & (PCRE_FIRSTSET|PCRE_STARTLINE)) == 0) { - *errorptr = "failed to get memory"; - return NULL; + int rc; + + /* Set the character tables in the block that is passed around */ + + tables = re->tables; + +#if defined COMPILE_PCRE8 + if (tables == NULL) + (void)pcre_fullinfo(external_re, NULL, PCRE_INFO_DEFAULT_TABLES, + (void *)(&tables)); +#elif defined COMPILE_PCRE16 + if (tables == NULL) + (void)pcre16_fullinfo(external_re, NULL, PCRE_INFO_DEFAULT_TABLES, + (void *)(&tables)); +#elif defined COMPILE_PCRE32 + if (tables == NULL) + (void)pcre32_fullinfo(external_re, NULL, PCRE_INFO_DEFAULT_TABLES, + (void *)(&tables)); +#endif + + compile_block.lcc = tables + lcc_offset; + compile_block.fcc = tables + fcc_offset; + compile_block.cbits = tables + cbits_offset; + compile_block.ctypes = tables + ctypes_offset; + + /* See if we can find a fixed set of initial characters for the pattern. */ + + memset(start_bits, 0, 32 * sizeof(pcre_uint8)); + rc = set_start_bits(code, start_bits, (re->options & PCRE_UTF8) != 0, + &compile_block); + bits_set = rc == SSB_DONE; + if (rc == SSB_UNKNOWN) + { + *errorptr = "internal error: opcode not recognized"; + return NULL; + } } -study = (pcre_study_data *)((char *)extra + sizeof(pcre_extra)); -extra->flags = PCRE_EXTRA_STUDY_DATA; -extra->study_data = study; +/* Find the minimum length of subject string. */ -study->size = sizeof(pcre_study_data); -study->options = PCRE_STUDY_MAPPED; -memcpy(study->start_bits, start_bits, sizeof(start_bits)); +switch(min = find_minlength(re, code, code, re->options, 0)) + { + case -2: *errorptr = "internal error: missing capturing bracket"; return NULL; + case -3: *errorptr = "internal error: opcode not recognized"; return NULL; + default: break; + } + +/* If a set of starting bytes has been identified, or if the minimum length is +greater than zero, or if JIT optimization has been requested, or if +PCRE_STUDY_EXTRA_NEEDED is set, get a pcre[16]_extra block and a +pcre_study_data block. The study data is put in the latter, which is pointed to +by the former, which may also get additional data set later by the calling +program. At the moment, the size of pcre_study_data is fixed. We nevertheless +save it in a field for returning via the pcre_fullinfo() function so that if it +becomes variable in the future, we don't have to change that code. */ + +if (bits_set || min > 0 || (options & ( +#ifdef SUPPORT_JIT + PCRE_STUDY_JIT_COMPILE | PCRE_STUDY_JIT_PARTIAL_SOFT_COMPILE | + PCRE_STUDY_JIT_PARTIAL_HARD_COMPILE | +#endif + PCRE_STUDY_EXTRA_NEEDED)) != 0) + { + extra = (PUBL(extra) *)(PUBL(malloc)) + (sizeof(PUBL(extra)) + sizeof(pcre_study_data)); + if (extra == NULL) + { + *errorptr = "failed to get memory"; + return NULL; + } + + study = (pcre_study_data *)((char *)extra + sizeof(PUBL(extra))); + extra->flags = PCRE_EXTRA_STUDY_DATA; + extra->study_data = study; + + study->size = sizeof(pcre_study_data); + study->flags = 0; + + /* Set the start bits always, to avoid unset memory errors if the + study data is written to a file, but set the flag only if any of the bits + are set, to save time looking when none are. */ + + if (bits_set) + { + study->flags |= PCRE_STUDY_MAPPED; + memcpy(study->start_bits, start_bits, sizeof(start_bits)); + } + else memset(study->start_bits, 0, 32 * sizeof(pcre_uint8)); + +#ifdef PCRE_DEBUG + if (bits_set) + { + pcre_uint8 *ptr = start_bits; + int i; + + printf("Start bits:\n"); + for (i = 0; i < 32; i++) + printf("%3d: %02x%s", i * 8, *ptr++, ((i + 1) & 0x7) != 0? " " : "\n"); + } +#endif + + /* Always set the minlength value in the block, because the JIT compiler + makes use of it. However, don't set the bit unless the length is greater than + zero - the interpretive pcre_exec() and pcre_dfa_exec() needn't waste time + checking the zero case. */ + + if (min > 0) + { + study->flags |= PCRE_STUDY_MINLEN; + study->minlength = min; + } + else study->minlength = 0; + + /* If JIT support was compiled and requested, attempt the JIT compilation. + If no starting bytes were found, and the minimum length is zero, and JIT + compilation fails, abandon the extra block and return NULL, unless + PCRE_STUDY_EXTRA_NEEDED is set. */ + +#ifdef SUPPORT_JIT + extra->executable_jit = NULL; + if ((options & PCRE_STUDY_JIT_COMPILE) != 0) + PRIV(jit_compile)(re, extra, JIT_COMPILE); + if ((options & PCRE_STUDY_JIT_PARTIAL_SOFT_COMPILE) != 0) + PRIV(jit_compile)(re, extra, JIT_PARTIAL_SOFT_COMPILE); + if ((options & PCRE_STUDY_JIT_PARTIAL_HARD_COMPILE) != 0) + PRIV(jit_compile)(re, extra, JIT_PARTIAL_HARD_COMPILE); + + if (study->flags == 0 && (extra->flags & PCRE_EXTRA_EXECUTABLE_JIT) == 0 && + (options & PCRE_STUDY_EXTRA_NEEDED) == 0) + { +#if defined COMPILE_PCRE8 + pcre_free_study(extra); +#elif defined COMPILE_PCRE16 + pcre16_free_study(extra); +#elif defined COMPILE_PCRE32 + pcre32_free_study(extra); +#endif + extra = NULL; + } +#endif + } return extra; } + +/************************************************* +* Free the study data * +*************************************************/ + +/* This function frees the memory that was obtained by pcre_study(). + +Argument: a pointer to the pcre[16]_extra block +Returns: nothing +*/ + +#if defined COMPILE_PCRE8 +PCRE_EXP_DEFN void +pcre_free_study(pcre_extra *extra) +#elif defined COMPILE_PCRE16 +PCRE_EXP_DEFN void +pcre16_free_study(pcre16_extra *extra) +#elif defined COMPILE_PCRE32 +PCRE_EXP_DEFN void +pcre32_free_study(pcre32_extra *extra) +#endif +{ +if (extra == NULL) + return; +#ifdef SUPPORT_JIT +if ((extra->flags & PCRE_EXTRA_EXECUTABLE_JIT) != 0 && + extra->executable_jit != NULL) + PRIV(jit_free)(extra->executable_jit); +#endif +PUBL(free)(extra); +} + /* End of pcre_study.c */ diff --git a/Foundation/src/pcre_tables.c b/Foundation/src/pcre_tables.c index a21f3760c..50bce1732 100644 --- a/Foundation/src/pcre_tables.c +++ b/Foundation/src/pcre_tables.c @@ -6,7 +6,7 @@ and semantics are as close as possible to those of the Perl 5 language. Written by Philip Hazel - Copyright (c) 1997-2008 University of Cambridge + Copyright (c) 1997-2012 University of Cambridge ----------------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without @@ -37,21 +37,28 @@ POSSIBILITY OF SUCH DAMAGE. ----------------------------------------------------------------------------- */ +#ifndef PCRE_INCLUDED /* This module contains some fixed tables that are used by more than one of the PCRE code modules. The tables are also #included by the pcretest program, which uses macros to change their names from _pcre_xxx to xxxx, thereby avoiding name clashes with the library. */ - #include "pcre_config.h" #include "pcre_internal.h" +#endif /* PCRE_INCLUDED */ /* Table of sizes for the fixed-length opcodes. It's defined in a macro so that the definition is next to the definition of the opcodes in pcre_internal.h. */ -const uschar _pcre_OP_lengths[] = { OP_LENGTHS }; +const pcre_uint8 PRIV(OP_lengths)[] = { OP_LENGTHS }; + +/* Tables of horizontal and vertical whitespace characters, suitable for +adding to classes. */ + +const pcre_uint32 PRIV(hspace_list)[] = { HSPACE_LIST }; +const pcre_uint32 PRIV(vspace_list)[] = { VSPACE_LIST }; @@ -62,31 +69,38 @@ const uschar _pcre_OP_lengths[] = { OP_LENGTHS }; /* These are the breakpoints for different numbers of bytes in a UTF-8 character. */ -#ifdef SUPPORT_UTF8 +#if (defined SUPPORT_UTF && defined COMPILE_PCRE8) \ + || (defined PCRE_INCLUDED && (defined SUPPORT_PCRE16 || defined SUPPORT_PCRE32)) -const int _pcre_utf8_table1[] = +/* These tables are also required by pcretest in 16- or 32-bit mode. */ + +const int PRIV(utf8_table1)[] = { 0x7f, 0x7ff, 0xffff, 0x1fffff, 0x3ffffff, 0x7fffffff}; -const int _pcre_utf8_table1_size = sizeof(_pcre_utf8_table1)/sizeof(int); +const int PRIV(utf8_table1_size) = sizeof(PRIV(utf8_table1)) / sizeof(int); /* These are the indicator bits and the mask for the data bits to set in the first byte of a character, indexed by the number of additional bytes. */ -const int _pcre_utf8_table2[] = { 0, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc}; -const int _pcre_utf8_table3[] = { 0xff, 0x1f, 0x0f, 0x07, 0x03, 0x01}; +const int PRIV(utf8_table2)[] = { 0, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc}; +const int PRIV(utf8_table3)[] = { 0xff, 0x1f, 0x0f, 0x07, 0x03, 0x01}; /* Table of the number of extra bytes, indexed by the first byte masked with 0x3f. The highest number for a valid UTF-8 first byte is in fact 0x3d. */ -const uschar _pcre_utf8_table4[] = { +const pcre_uint8 PRIV(utf8_table4)[] = { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 3,3,3,3,3,3,3,3,4,4,4,4,5,5,5,5 }; +#endif /* (SUPPORT_UTF && COMPILE_PCRE8) || (PCRE_INCLUDED && SUPPORT_PCRE[16|32])*/ + +#ifdef SUPPORT_UTF + /* Table to translate from particular type value to the general value. */ -const int _pcre_ucp_gentype[] = { +const pcre_uint32 PRIV(ucp_gentype)[] = { ucp_C, ucp_C, ucp_C, ucp_C, ucp_C, /* Cc, Cf, Cn, Co, Cs */ ucp_L, ucp_L, ucp_L, ucp_L, ucp_L, /* Ll, Lu, Lm, Lo, Lt */ ucp_M, ucp_M, ucp_M, /* Mc, Me, Mn */ @@ -97,6 +111,81 @@ const int _pcre_ucp_gentype[] = { ucp_Z, ucp_Z, ucp_Z /* Zl, Zp, Zs */ }; +/* This table encodes the rules for finding the end of an extended grapheme +cluster. Every code point has a grapheme break property which is one of the +ucp_gbXX values defined in ucp.h. The 2-dimensional table is indexed by the +properties of two adjacent code points. The left property selects a word from +the table, and the right property selects a bit from that word like this: + + ucp_gbtable[left-property] & (1 << right-property) + +The value is non-zero if a grapheme break is NOT permitted between the relevant +two code points. The breaking rules are as follows: + +1. Break at the start and end of text (pretty obviously). + +2. Do not break between a CR and LF; otherwise, break before and after + controls. + +3. Do not break Hangul syllable sequences, the rules for which are: + + L may be followed by L, V, LV or LVT + LV or V may be followed by V or T + LVT or T may be followed by T + +4. Do not break before extending characters. + +The next two rules are only for extended grapheme clusters (but that's what we +are implementing). + +5. Do not break before SpacingMarks. + +6. Do not break after Prepend characters. + +7. Otherwise, break everywhere. +*/ + +const pcre_uint32 PRIV(ucp_gbtable[]) = { + (1<> 8); -return ((value & 0x000000ff) << 24) | - ((value & 0x0000ff00) << 8) | - ((value & 0x00ff0000) >> 8) | - ((value & 0xff000000) >> 24); -} - - - -/************************************************* -* Test for a byte-flipped compiled regex * -*************************************************/ - -/* This function is called from pcre_exec(), pcre_dfa_exec(), and also from -pcre_fullinfo(). Its job is to test whether the regex is byte-flipped - that -is, it was compiled on a system of opposite endianness. The function is called -only when the native MAGIC_NUMBER test fails. If the regex is indeed flipped, -we flip all the relevant values into a different data block, and return it. - -Arguments: - re points to the regex - study points to study data, or NULL - internal_re points to a new regex block - internal_study points to a new study block - -Returns: the new block if is is indeed a byte-flipped regex - NULL if it is not -*/ - -real_pcre * -_pcre_try_flipped(const real_pcre *re, real_pcre *internal_re, - const pcre_study_data *study, pcre_study_data *internal_study) -{ -if (byteflip(re->magic_number, sizeof(re->magic_number)) != MAGIC_NUMBER) - return NULL; - -*internal_re = *re; /* To copy other fields */ -internal_re->size = byteflip(re->size, sizeof(re->size)); -internal_re->options = byteflip(re->options, sizeof(re->options)); -internal_re->flags = (pcre_uint16)byteflip(re->flags, sizeof(re->flags)); -internal_re->top_bracket = - (pcre_uint16)byteflip(re->top_bracket, sizeof(re->top_bracket)); -internal_re->top_backref = - (pcre_uint16)byteflip(re->top_backref, sizeof(re->top_backref)); -internal_re->first_byte = - (pcre_uint16)byteflip(re->first_byte, sizeof(re->first_byte)); -internal_re->req_byte = - (pcre_uint16)byteflip(re->req_byte, sizeof(re->req_byte)); -internal_re->name_table_offset = - (pcre_uint16)byteflip(re->name_table_offset, sizeof(re->name_table_offset)); -internal_re->name_entry_size = - (pcre_uint16)byteflip(re->name_entry_size, sizeof(re->name_entry_size)); -internal_re->name_count = - (pcre_uint16)byteflip(re->name_count, sizeof(re->name_count)); - -if (study != NULL) - { - *internal_study = *study; /* To copy other fields */ - internal_study->size = byteflip(study->size, sizeof(study->size)); - internal_study->options = byteflip(study->options, sizeof(study->options)); - } - -return internal_re; -} - -/* End of pcre_tryflipped.c */ diff --git a/Foundation/src/pcre_ucd.c b/Foundation/src/pcre_ucd.c index 9bfa4a67b..ca845a27c 100644 --- a/Foundation/src/pcre_ucd.c +++ b/Foundation/src/pcre_ucd.c @@ -1,2608 +1,3294 @@ +/* This module is generated by the maint/MultiStage2.py script. +Do not modify it by hand. Instead modify the script and run it +to regenerate this code. + +As well as being part of the PCRE library, this module is #included +by the pcretest program, which redefines the PRIV macro to change +table names from _pcre_xxx to xxxx, thereby avoiding name clashes +with the library. At present, just one of these tables is actually +needed. */ + +#ifndef PCRE_INCLUDED + #include "pcre_config.h" #include "pcre_internal.h" +#endif /* PCRE_INCLUDED */ + /* Unicode character database. */ /* This file was autogenerated by the MultiStage2.py script. */ -/* Total size: 52808 bytes, block size: 128. */ -/* When recompiling tables with a new Unicode version, -please check types in the structure definition from pcre_internal.h: +/* Total size: 65688 bytes, block size: 128. */ + +/* The tables herein are needed only when UCP support is built +into PCRE. This module should not be referenced otherwise, so +it should not matter whether it is compiled or not. However +a comment was received about space saving - maybe the guy linked +all the modules rather than using a library - so we include a +condition to cut out the tables when not needed. But don't leave +a totally empty module because some compilers barf at that. +Instead, just supply small dummy tables. */ + +#ifndef SUPPORT_UCP +const ucd_record PRIV(ucd_records)[] = {{0,0,0,0,0 }}; +const pcre_uint8 PRIV(ucd_stage1)[] = {0}; +const pcre_uint16 PRIV(ucd_stage2)[] = {0}; +const pcre_uint32 PRIV(ucd_caseless_sets)[] = {0}; +#else + +/* When recompiling tables with a new Unicode version, please check the +types in this structure definition from pcre_internal.h (the actual +field names will be different): + typedef struct { -uschar property_0; -uschar property_1; -pcre_int32 property_2; -} ucd_record; */ +pcre_uint8 property_0; +pcre_uint8 property_1; +pcre_uint8 property_2; +pcre_uint8 property_3; +pcre_int32 property_4; +} ucd_record; +*/ -const ucd_record _pcre_ucd_records[] = { /* 3656 bytes, record size 8 */ - { 9, 0, 0, }, /* 0 */ - { 9, 29, 0, }, /* 1 */ - { 9, 21, 0, }, /* 2 */ - { 9, 23, 0, }, /* 3 */ - { 9, 22, 0, }, /* 4 */ - { 9, 18, 0, }, /* 5 */ - { 9, 25, 0, }, /* 6 */ - { 9, 17, 0, }, /* 7 */ - { 9, 13, 0, }, /* 8 */ - { 33, 9, 32, }, /* 9 */ - { 9, 24, 0, }, /* 10 */ - { 9, 16, 0, }, /* 11 */ - { 33, 5, -32, }, /* 12 */ - { 9, 26, 0, }, /* 13 */ - { 33, 5, 0, }, /* 14 */ - { 9, 20, 0, }, /* 15 */ - { 9, 1, 0, }, /* 16 */ - { 9, 15, 0, }, /* 17 */ - { 9, 5, 743, }, /* 18 */ - { 9, 19, 0, }, /* 19 */ - { 33, 5, 121, }, /* 20 */ - { 33, 9, 1, }, /* 21 */ - { 33, 5, -1, }, /* 22 */ - { 33, 9, -199, }, /* 23 */ - { 33, 5, -232, }, /* 24 */ - { 33, 9, -121, }, /* 25 */ - { 33, 5, -300, }, /* 26 */ - { 33, 5, 195, }, /* 27 */ - { 33, 9, 210, }, /* 28 */ - { 33, 9, 206, }, /* 29 */ - { 33, 9, 205, }, /* 30 */ - { 33, 9, 79, }, /* 31 */ - { 33, 9, 202, }, /* 32 */ - { 33, 9, 203, }, /* 33 */ - { 33, 9, 207, }, /* 34 */ - { 33, 5, 97, }, /* 35 */ - { 33, 9, 211, }, /* 36 */ - { 33, 9, 209, }, /* 37 */ - { 33, 5, 163, }, /* 38 */ - { 33, 9, 213, }, /* 39 */ - { 33, 5, 130, }, /* 40 */ - { 33, 9, 214, }, /* 41 */ - { 33, 9, 218, }, /* 42 */ - { 33, 9, 217, }, /* 43 */ - { 33, 9, 219, }, /* 44 */ - { 33, 7, 0, }, /* 45 */ - { 33, 5, 56, }, /* 46 */ - { 33, 9, 2, }, /* 47 */ - { 33, 8, -1, }, /* 48 */ - { 33, 5, -2, }, /* 49 */ - { 33, 5, -79, }, /* 50 */ - { 33, 9, -97, }, /* 51 */ - { 33, 9, -56, }, /* 52 */ - { 33, 9, -130, }, /* 53 */ - { 33, 9, 10795, }, /* 54 */ - { 33, 9, -163, }, /* 55 */ - { 33, 9, 10792, }, /* 56 */ - { 33, 9, -195, }, /* 57 */ - { 33, 9, 69, }, /* 58 */ - { 33, 9, 71, }, /* 59 */ - { 33, 5, 10783, }, /* 60 */ - { 33, 5, 10780, }, /* 61 */ - { 33, 5, -210, }, /* 62 */ - { 33, 5, -206, }, /* 63 */ - { 33, 5, -205, }, /* 64 */ - { 33, 5, -202, }, /* 65 */ - { 33, 5, -203, }, /* 66 */ - { 33, 5, -207, }, /* 67 */ - { 33, 5, -209, }, /* 68 */ - { 33, 5, -211, }, /* 69 */ - { 33, 5, 10743, }, /* 70 */ - { 33, 5, 10749, }, /* 71 */ - { 33, 5, -213, }, /* 72 */ - { 33, 5, -214, }, /* 73 */ - { 33, 5, 10727, }, /* 74 */ - { 33, 5, -218, }, /* 75 */ - { 33, 5, -69, }, /* 76 */ - { 33, 5, -217, }, /* 77 */ - { 33, 5, -71, }, /* 78 */ - { 33, 5, -219, }, /* 79 */ - { 33, 6, 0, }, /* 80 */ - { 9, 6, 0, }, /* 81 */ - { 27, 12, 0, }, /* 82 */ - { 27, 12, 84, }, /* 83 */ - { 19, 9, 1, }, /* 84 */ - { 19, 5, -1, }, /* 85 */ - { 19, 24, 0, }, /* 86 */ - { 9, 2, 0, }, /* 87 */ - { 19, 6, 0, }, /* 88 */ - { 19, 5, 130, }, /* 89 */ - { 19, 9, 38, }, /* 90 */ - { 19, 9, 37, }, /* 91 */ - { 19, 9, 64, }, /* 92 */ - { 19, 9, 63, }, /* 93 */ - { 19, 5, 0, }, /* 94 */ - { 19, 9, 32, }, /* 95 */ - { 19, 5, -38, }, /* 96 */ - { 19, 5, -37, }, /* 97 */ - { 19, 5, -32, }, /* 98 */ - { 19, 5, -31, }, /* 99 */ - { 19, 5, -64, }, /* 100 */ - { 19, 5, -63, }, /* 101 */ - { 19, 9, 8, }, /* 102 */ - { 19, 5, -62, }, /* 103 */ - { 19, 5, -57, }, /* 104 */ - { 19, 9, 0, }, /* 105 */ - { 19, 5, -47, }, /* 106 */ - { 19, 5, -54, }, /* 107 */ - { 19, 5, -8, }, /* 108 */ - { 10, 9, 1, }, /* 109 */ - { 10, 5, -1, }, /* 110 */ - { 19, 5, -86, }, /* 111 */ - { 19, 5, -80, }, /* 112 */ - { 19, 5, 7, }, /* 113 */ - { 19, 9, -60, }, /* 114 */ - { 19, 5, -96, }, /* 115 */ - { 19, 25, 0, }, /* 116 */ - { 19, 9, -7, }, /* 117 */ - { 19, 9, -130, }, /* 118 */ - { 12, 9, 80, }, /* 119 */ - { 12, 9, 32, }, /* 120 */ - { 12, 5, -32, }, /* 121 */ - { 12, 5, -80, }, /* 122 */ - { 12, 9, 1, }, /* 123 */ - { 12, 5, -1, }, /* 124 */ - { 12, 26, 0, }, /* 125 */ - { 12, 12, 0, }, /* 126 */ - { 12, 11, 0, }, /* 127 */ - { 12, 9, 15, }, /* 128 */ - { 12, 5, -15, }, /* 129 */ - { 1, 9, 48, }, /* 130 */ - { 1, 6, 0, }, /* 131 */ - { 1, 21, 0, }, /* 132 */ - { 1, 5, -48, }, /* 133 */ - { 1, 5, 0, }, /* 134 */ - { 1, 17, 0, }, /* 135 */ - { 25, 12, 0, }, /* 136 */ - { 25, 17, 0, }, /* 137 */ - { 25, 21, 0, }, /* 138 */ - { 25, 7, 0, }, /* 139 */ - { 0, 25, 0, }, /* 140 */ - { 0, 21, 0, }, /* 141 */ - { 0, 23, 0, }, /* 142 */ - { 0, 26, 0, }, /* 143 */ - { 0, 12, 0, }, /* 144 */ - { 0, 7, 0, }, /* 145 */ - { 0, 11, 0, }, /* 146 */ - { 0, 6, 0, }, /* 147 */ - { 0, 13, 0, }, /* 148 */ - { 49, 21, 0, }, /* 149 */ - { 49, 1, 0, }, /* 150 */ - { 49, 7, 0, }, /* 151 */ - { 49, 12, 0, }, /* 152 */ - { 55, 7, 0, }, /* 153 */ - { 55, 12, 0, }, /* 154 */ - { 63, 13, 0, }, /* 155 */ - { 63, 7, 0, }, /* 156 */ - { 63, 12, 0, }, /* 157 */ - { 63, 6, 0, }, /* 158 */ - { 63, 26, 0, }, /* 159 */ - { 63, 21, 0, }, /* 160 */ - { 14, 12, 0, }, /* 161 */ - { 14, 10, 0, }, /* 162 */ - { 14, 7, 0, }, /* 163 */ - { 14, 13, 0, }, /* 164 */ - { 14, 6, 0, }, /* 165 */ - { 2, 12, 0, }, /* 166 */ - { 2, 10, 0, }, /* 167 */ - { 2, 7, 0, }, /* 168 */ - { 2, 13, 0, }, /* 169 */ - { 2, 23, 0, }, /* 170 */ - { 2, 15, 0, }, /* 171 */ - { 2, 26, 0, }, /* 172 */ - { 21, 12, 0, }, /* 173 */ - { 21, 10, 0, }, /* 174 */ - { 21, 7, 0, }, /* 175 */ - { 21, 13, 0, }, /* 176 */ - { 20, 12, 0, }, /* 177 */ - { 20, 10, 0, }, /* 178 */ - { 20, 7, 0, }, /* 179 */ - { 20, 13, 0, }, /* 180 */ - { 20, 23, 0, }, /* 181 */ - { 43, 12, 0, }, /* 182 */ - { 43, 10, 0, }, /* 183 */ - { 43, 7, 0, }, /* 184 */ - { 43, 13, 0, }, /* 185 */ - { 43, 26, 0, }, /* 186 */ - { 53, 12, 0, }, /* 187 */ - { 53, 7, 0, }, /* 188 */ - { 53, 10, 0, }, /* 189 */ - { 53, 13, 0, }, /* 190 */ - { 53, 15, 0, }, /* 191 */ - { 53, 26, 0, }, /* 192 */ - { 53, 23, 0, }, /* 193 */ - { 54, 10, 0, }, /* 194 */ - { 54, 7, 0, }, /* 195 */ - { 54, 12, 0, }, /* 196 */ - { 54, 13, 0, }, /* 197 */ - { 54, 15, 0, }, /* 198 */ - { 54, 26, 0, }, /* 199 */ - { 28, 10, 0, }, /* 200 */ - { 28, 7, 0, }, /* 201 */ - { 28, 12, 0, }, /* 202 */ - { 28, 13, 0, }, /* 203 */ - { 36, 10, 0, }, /* 204 */ - { 36, 7, 0, }, /* 205 */ - { 36, 12, 0, }, /* 206 */ - { 36, 13, 0, }, /* 207 */ - { 36, 15, 0, }, /* 208 */ - { 36, 26, 0, }, /* 209 */ - { 47, 10, 0, }, /* 210 */ - { 47, 7, 0, }, /* 211 */ - { 47, 12, 0, }, /* 212 */ - { 47, 21, 0, }, /* 213 */ - { 56, 7, 0, }, /* 214 */ - { 56, 12, 0, }, /* 215 */ - { 56, 6, 0, }, /* 216 */ - { 56, 21, 0, }, /* 217 */ - { 56, 13, 0, }, /* 218 */ - { 32, 7, 0, }, /* 219 */ - { 32, 12, 0, }, /* 220 */ - { 32, 6, 0, }, /* 221 */ - { 32, 13, 0, }, /* 222 */ - { 57, 7, 0, }, /* 223 */ - { 57, 26, 0, }, /* 224 */ - { 57, 21, 0, }, /* 225 */ - { 57, 12, 0, }, /* 226 */ - { 57, 13, 0, }, /* 227 */ - { 57, 15, 0, }, /* 228 */ - { 57, 22, 0, }, /* 229 */ - { 57, 18, 0, }, /* 230 */ - { 57, 10, 0, }, /* 231 */ - { 38, 7, 0, }, /* 232 */ - { 38, 10, 0, }, /* 233 */ - { 38, 12, 0, }, /* 234 */ - { 38, 13, 0, }, /* 235 */ - { 38, 21, 0, }, /* 236 */ - { 38, 26, 0, }, /* 237 */ - { 16, 9, 7264, }, /* 238 */ - { 16, 7, 0, }, /* 239 */ - { 16, 6, 0, }, /* 240 */ - { 23, 7, 0, }, /* 241 */ - { 15, 7, 0, }, /* 242 */ - { 15, 12, 0, }, /* 243 */ - { 15, 26, 0, }, /* 244 */ - { 15, 21, 0, }, /* 245 */ - { 15, 15, 0, }, /* 246 */ - { 8, 7, 0, }, /* 247 */ - { 7, 7, 0, }, /* 248 */ - { 7, 21, 0, }, /* 249 */ - { 40, 29, 0, }, /* 250 */ - { 40, 7, 0, }, /* 251 */ - { 40, 22, 0, }, /* 252 */ - { 40, 18, 0, }, /* 253 */ - { 45, 7, 0, }, /* 254 */ - { 45, 14, 0, }, /* 255 */ - { 50, 7, 0, }, /* 256 */ - { 50, 12, 0, }, /* 257 */ - { 24, 7, 0, }, /* 258 */ - { 24, 12, 0, }, /* 259 */ - { 6, 7, 0, }, /* 260 */ - { 6, 12, 0, }, /* 261 */ - { 51, 7, 0, }, /* 262 */ - { 51, 12, 0, }, /* 263 */ - { 31, 7, 0, }, /* 264 */ - { 31, 1, 0, }, /* 265 */ - { 31, 10, 0, }, /* 266 */ - { 31, 12, 0, }, /* 267 */ - { 31, 21, 0, }, /* 268 */ - { 31, 6, 0, }, /* 269 */ - { 31, 23, 0, }, /* 270 */ - { 31, 13, 0, }, /* 271 */ - { 31, 15, 0, }, /* 272 */ - { 37, 21, 0, }, /* 273 */ - { 37, 17, 0, }, /* 274 */ - { 37, 12, 0, }, /* 275 */ - { 37, 29, 0, }, /* 276 */ - { 37, 13, 0, }, /* 277 */ - { 37, 7, 0, }, /* 278 */ - { 37, 6, 0, }, /* 279 */ - { 34, 7, 0, }, /* 280 */ - { 34, 12, 0, }, /* 281 */ - { 34, 10, 0, }, /* 282 */ - { 34, 26, 0, }, /* 283 */ - { 34, 21, 0, }, /* 284 */ - { 34, 13, 0, }, /* 285 */ - { 52, 7, 0, }, /* 286 */ - { 39, 7, 0, }, /* 287 */ - { 39, 10, 0, }, /* 288 */ - { 39, 13, 0, }, /* 289 */ - { 39, 21, 0, }, /* 290 */ - { 31, 26, 0, }, /* 291 */ - { 5, 7, 0, }, /* 292 */ - { 5, 12, 0, }, /* 293 */ - { 5, 10, 0, }, /* 294 */ - { 5, 21, 0, }, /* 295 */ - { 61, 12, 0, }, /* 296 */ - { 61, 10, 0, }, /* 297 */ - { 61, 7, 0, }, /* 298 */ - { 61, 13, 0, }, /* 299 */ - { 61, 21, 0, }, /* 300 */ - { 61, 26, 0, }, /* 301 */ - { 75, 12, 0, }, /* 302 */ - { 75, 10, 0, }, /* 303 */ - { 75, 7, 0, }, /* 304 */ - { 75, 13, 0, }, /* 305 */ - { 69, 7, 0, }, /* 306 */ - { 69, 10, 0, }, /* 307 */ - { 69, 12, 0, }, /* 308 */ - { 69, 21, 0, }, /* 309 */ - { 69, 13, 0, }, /* 310 */ - { 72, 13, 0, }, /* 311 */ - { 72, 7, 0, }, /* 312 */ - { 72, 6, 0, }, /* 313 */ - { 72, 21, 0, }, /* 314 */ - { 12, 5, 0, }, /* 315 */ - { 12, 6, 0, }, /* 316 */ - { 33, 5, 35332, }, /* 317 */ - { 33, 5, 3814, }, /* 318 */ - { 33, 5, -59, }, /* 319 */ - { 33, 9, -7615, }, /* 320 */ - { 19, 5, 8, }, /* 321 */ - { 19, 9, -8, }, /* 322 */ - { 19, 5, 74, }, /* 323 */ - { 19, 5, 86, }, /* 324 */ - { 19, 5, 100, }, /* 325 */ - { 19, 5, 128, }, /* 326 */ - { 19, 5, 112, }, /* 327 */ - { 19, 5, 126, }, /* 328 */ - { 19, 8, -8, }, /* 329 */ - { 19, 5, 9, }, /* 330 */ - { 19, 9, -74, }, /* 331 */ - { 19, 8, -9, }, /* 332 */ - { 19, 5, -7205, }, /* 333 */ - { 19, 9, -86, }, /* 334 */ - { 19, 9, -100, }, /* 335 */ - { 19, 9, -112, }, /* 336 */ - { 19, 9, -128, }, /* 337 */ - { 19, 9, -126, }, /* 338 */ - { 27, 1, 0, }, /* 339 */ - { 9, 27, 0, }, /* 340 */ - { 9, 28, 0, }, /* 341 */ - { 27, 11, 0, }, /* 342 */ - { 9, 9, 0, }, /* 343 */ - { 9, 5, 0, }, /* 344 */ - { 19, 9, -7517, }, /* 345 */ - { 33, 9, -8383, }, /* 346 */ - { 33, 9, -8262, }, /* 347 */ - { 33, 9, 28, }, /* 348 */ - { 9, 7, 0, }, /* 349 */ - { 33, 5, -28, }, /* 350 */ - { 33, 14, 16, }, /* 351 */ - { 33, 14, -16, }, /* 352 */ - { 33, 14, 0, }, /* 353 */ - { 9, 26, 26, }, /* 354 */ - { 9, 26, -26, }, /* 355 */ - { 4, 26, 0, }, /* 356 */ - { 17, 9, 48, }, /* 357 */ - { 17, 5, -48, }, /* 358 */ - { 33, 9, -10743, }, /* 359 */ - { 33, 9, -3814, }, /* 360 */ - { 33, 9, -10727, }, /* 361 */ - { 33, 5, -10795, }, /* 362 */ - { 33, 5, -10792, }, /* 363 */ - { 33, 9, -10780, }, /* 364 */ - { 33, 9, -10749, }, /* 365 */ - { 33, 9, -10783, }, /* 366 */ - { 10, 5, 0, }, /* 367 */ - { 10, 26, 0, }, /* 368 */ - { 10, 21, 0, }, /* 369 */ - { 10, 15, 0, }, /* 370 */ - { 16, 5, -7264, }, /* 371 */ - { 58, 7, 0, }, /* 372 */ - { 58, 6, 0, }, /* 373 */ - { 22, 26, 0, }, /* 374 */ - { 22, 6, 0, }, /* 375 */ - { 22, 14, 0, }, /* 376 */ - { 26, 7, 0, }, /* 377 */ - { 26, 6, 0, }, /* 378 */ - { 29, 7, 0, }, /* 379 */ - { 29, 6, 0, }, /* 380 */ - { 3, 7, 0, }, /* 381 */ - { 23, 26, 0, }, /* 382 */ - { 29, 26, 0, }, /* 383 */ - { 22, 7, 0, }, /* 384 */ - { 60, 7, 0, }, /* 385 */ - { 60, 6, 0, }, /* 386 */ - { 60, 26, 0, }, /* 387 */ - { 76, 7, 0, }, /* 388 */ - { 76, 6, 0, }, /* 389 */ - { 76, 21, 0, }, /* 390 */ - { 76, 13, 0, }, /* 391 */ - { 12, 7, 0, }, /* 392 */ - { 12, 21, 0, }, /* 393 */ - { 33, 9, -35332, }, /* 394 */ - { 48, 7, 0, }, /* 395 */ - { 48, 12, 0, }, /* 396 */ - { 48, 10, 0, }, /* 397 */ - { 48, 26, 0, }, /* 398 */ - { 64, 7, 0, }, /* 399 */ - { 64, 21, 0, }, /* 400 */ - { 74, 10, 0, }, /* 401 */ - { 74, 7, 0, }, /* 402 */ - { 74, 12, 0, }, /* 403 */ - { 74, 21, 0, }, /* 404 */ - { 74, 13, 0, }, /* 405 */ - { 68, 13, 0, }, /* 406 */ - { 68, 7, 0, }, /* 407 */ - { 68, 12, 0, }, /* 408 */ - { 68, 21, 0, }, /* 409 */ - { 73, 7, 0, }, /* 410 */ - { 73, 12, 0, }, /* 411 */ - { 73, 10, 0, }, /* 412 */ - { 73, 21, 0, }, /* 413 */ - { 67, 7, 0, }, /* 414 */ - { 67, 12, 0, }, /* 415 */ - { 67, 10, 0, }, /* 416 */ - { 67, 13, 0, }, /* 417 */ - { 67, 21, 0, }, /* 418 */ - { 9, 4, 0, }, /* 419 */ - { 9, 3, 0, }, /* 420 */ - { 25, 25, 0, }, /* 421 */ - { 35, 7, 0, }, /* 422 */ - { 19, 14, 0, }, /* 423 */ - { 19, 15, 0, }, /* 424 */ - { 19, 26, 0, }, /* 425 */ - { 70, 7, 0, }, /* 426 */ - { 66, 7, 0, }, /* 427 */ - { 41, 7, 0, }, /* 428 */ - { 41, 15, 0, }, /* 429 */ - { 18, 7, 0, }, /* 430 */ - { 18, 14, 0, }, /* 431 */ - { 59, 7, 0, }, /* 432 */ - { 59, 21, 0, }, /* 433 */ - { 42, 7, 0, }, /* 434 */ - { 42, 21, 0, }, /* 435 */ - { 42, 14, 0, }, /* 436 */ - { 13, 9, 40, }, /* 437 */ - { 13, 5, -40, }, /* 438 */ - { 46, 7, 0, }, /* 439 */ - { 44, 7, 0, }, /* 440 */ - { 44, 13, 0, }, /* 441 */ - { 11, 7, 0, }, /* 442 */ - { 65, 7, 0, }, /* 443 */ - { 65, 15, 0, }, /* 444 */ - { 65, 21, 0, }, /* 445 */ - { 71, 7, 0, }, /* 446 */ - { 71, 21, 0, }, /* 447 */ - { 30, 7, 0, }, /* 448 */ - { 30, 12, 0, }, /* 449 */ - { 30, 15, 0, }, /* 450 */ - { 30, 21, 0, }, /* 451 */ - { 62, 7, 0, }, /* 452 */ - { 62, 14, 0, }, /* 453 */ - { 62, 21, 0, }, /* 454 */ - { 9, 10, 0, }, /* 455 */ - { 19, 12, 0, }, /* 456 */ +const pcre_uint32 PRIV(ucd_caseless_sets)[] = { + NOTACHAR, + 0x0053, 0x0073, 0x017f, NOTACHAR, + 0x01c4, 0x01c5, 0x01c6, NOTACHAR, + 0x01c7, 0x01c8, 0x01c9, NOTACHAR, + 0x01ca, 0x01cb, 0x01cc, NOTACHAR, + 0x01f1, 0x01f2, 0x01f3, NOTACHAR, + 0x0345, 0x0399, 0x03b9, 0x1fbe, NOTACHAR, + 0x00b5, 0x039c, 0x03bc, NOTACHAR, + 0x03a3, 0x03c2, 0x03c3, NOTACHAR, + 0x0392, 0x03b2, 0x03d0, NOTACHAR, + 0x0398, 0x03b8, 0x03d1, 0x03f4, NOTACHAR, + 0x03a6, 0x03c6, 0x03d5, NOTACHAR, + 0x03a0, 0x03c0, 0x03d6, NOTACHAR, + 0x039a, 0x03ba, 0x03f0, NOTACHAR, + 0x03a1, 0x03c1, 0x03f1, NOTACHAR, + 0x0395, 0x03b5, 0x03f5, NOTACHAR, + 0x1e60, 0x1e61, 0x1e9b, NOTACHAR, + 0x03a9, 0x03c9, 0x2126, NOTACHAR, + 0x004b, 0x006b, 0x212a, NOTACHAR, + 0x00c5, 0x00e5, 0x212b, NOTACHAR, }; -const uschar _pcre_ucd_stage1[] = { /* 8704 bytes */ +/* When #included in pcretest, we don't need this large table. */ + +#ifndef PCRE_INCLUDED + +const ucd_record PRIV(ucd_records)[] = { /* 5016 bytes, record size 8 */ + { 9, 0, 2, 0, 0, }, /* 0 */ + { 9, 0, 1, 0, 0, }, /* 1 */ + { 9, 0, 0, 0, 0, }, /* 2 */ + { 9, 29, 12, 0, 0, }, /* 3 */ + { 9, 21, 12, 0, 0, }, /* 4 */ + { 9, 23, 12, 0, 0, }, /* 5 */ + { 9, 22, 12, 0, 0, }, /* 6 */ + { 9, 18, 12, 0, 0, }, /* 7 */ + { 9, 25, 12, 0, 0, }, /* 8 */ + { 9, 17, 12, 0, 0, }, /* 9 */ + { 9, 13, 12, 0, 0, }, /* 10 */ + { 33, 9, 12, 0, 32, }, /* 11 */ + { 33, 9, 12, 71, 32, }, /* 12 */ + { 33, 9, 12, 1, 32, }, /* 13 */ + { 9, 24, 12, 0, 0, }, /* 14 */ + { 9, 16, 12, 0, 0, }, /* 15 */ + { 33, 5, 12, 0, -32, }, /* 16 */ + { 33, 5, 12, 71, -32, }, /* 17 */ + { 33, 5, 12, 1, -32, }, /* 18 */ + { 9, 26, 12, 0, 0, }, /* 19 */ + { 33, 7, 12, 0, 0, }, /* 20 */ + { 9, 20, 12, 0, 0, }, /* 21 */ + { 9, 1, 2, 0, 0, }, /* 22 */ + { 9, 15, 12, 0, 0, }, /* 23 */ + { 9, 5, 12, 26, 775, }, /* 24 */ + { 9, 19, 12, 0, 0, }, /* 25 */ + { 33, 9, 12, 75, 32, }, /* 26 */ + { 33, 5, 12, 0, 7615, }, /* 27 */ + { 33, 5, 12, 75, -32, }, /* 28 */ + { 33, 5, 12, 0, 121, }, /* 29 */ + { 33, 9, 12, 0, 1, }, /* 30 */ + { 33, 5, 12, 0, -1, }, /* 31 */ + { 33, 9, 12, 0, 0, }, /* 32 */ + { 33, 5, 12, 0, 0, }, /* 33 */ + { 33, 9, 12, 0, -121, }, /* 34 */ + { 33, 5, 12, 1, -268, }, /* 35 */ + { 33, 5, 12, 0, 195, }, /* 36 */ + { 33, 9, 12, 0, 210, }, /* 37 */ + { 33, 9, 12, 0, 206, }, /* 38 */ + { 33, 9, 12, 0, 205, }, /* 39 */ + { 33, 9, 12, 0, 79, }, /* 40 */ + { 33, 9, 12, 0, 202, }, /* 41 */ + { 33, 9, 12, 0, 203, }, /* 42 */ + { 33, 9, 12, 0, 207, }, /* 43 */ + { 33, 5, 12, 0, 97, }, /* 44 */ + { 33, 9, 12, 0, 211, }, /* 45 */ + { 33, 9, 12, 0, 209, }, /* 46 */ + { 33, 5, 12, 0, 163, }, /* 47 */ + { 33, 9, 12, 0, 213, }, /* 48 */ + { 33, 5, 12, 0, 130, }, /* 49 */ + { 33, 9, 12, 0, 214, }, /* 50 */ + { 33, 9, 12, 0, 218, }, /* 51 */ + { 33, 9, 12, 0, 217, }, /* 52 */ + { 33, 9, 12, 0, 219, }, /* 53 */ + { 33, 5, 12, 0, 56, }, /* 54 */ + { 33, 9, 12, 5, 2, }, /* 55 */ + { 33, 8, 12, 5, 1, }, /* 56 */ + { 33, 5, 12, 5, -2, }, /* 57 */ + { 33, 9, 12, 9, 2, }, /* 58 */ + { 33, 8, 12, 9, 1, }, /* 59 */ + { 33, 5, 12, 9, -2, }, /* 60 */ + { 33, 9, 12, 13, 2, }, /* 61 */ + { 33, 8, 12, 13, 1, }, /* 62 */ + { 33, 5, 12, 13, -2, }, /* 63 */ + { 33, 5, 12, 0, -79, }, /* 64 */ + { 33, 9, 12, 17, 2, }, /* 65 */ + { 33, 8, 12, 17, 1, }, /* 66 */ + { 33, 5, 12, 17, -2, }, /* 67 */ + { 33, 9, 12, 0, -97, }, /* 68 */ + { 33, 9, 12, 0, -56, }, /* 69 */ + { 33, 9, 12, 0, -130, }, /* 70 */ + { 33, 9, 12, 0, 10795, }, /* 71 */ + { 33, 9, 12, 0, -163, }, /* 72 */ + { 33, 9, 12, 0, 10792, }, /* 73 */ + { 33, 5, 12, 0, 10815, }, /* 74 */ + { 33, 9, 12, 0, -195, }, /* 75 */ + { 33, 9, 12, 0, 69, }, /* 76 */ + { 33, 9, 12, 0, 71, }, /* 77 */ + { 33, 5, 12, 0, 10783, }, /* 78 */ + { 33, 5, 12, 0, 10780, }, /* 79 */ + { 33, 5, 12, 0, 10782, }, /* 80 */ + { 33, 5, 12, 0, -210, }, /* 81 */ + { 33, 5, 12, 0, -206, }, /* 82 */ + { 33, 5, 12, 0, -205, }, /* 83 */ + { 33, 5, 12, 0, -202, }, /* 84 */ + { 33, 5, 12, 0, -203, }, /* 85 */ + { 33, 5, 12, 0, -207, }, /* 86 */ + { 33, 5, 12, 0, 42280, }, /* 87 */ + { 33, 5, 12, 0, 42308, }, /* 88 */ + { 33, 5, 12, 0, -209, }, /* 89 */ + { 33, 5, 12, 0, -211, }, /* 90 */ + { 33, 5, 12, 0, 10743, }, /* 91 */ + { 33, 5, 12, 0, 10749, }, /* 92 */ + { 33, 5, 12, 0, -213, }, /* 93 */ + { 33, 5, 12, 0, -214, }, /* 94 */ + { 33, 5, 12, 0, 10727, }, /* 95 */ + { 33, 5, 12, 0, -218, }, /* 96 */ + { 33, 5, 12, 0, -69, }, /* 97 */ + { 33, 5, 12, 0, -217, }, /* 98 */ + { 33, 5, 12, 0, -71, }, /* 99 */ + { 33, 5, 12, 0, -219, }, /* 100 */ + { 33, 6, 12, 0, 0, }, /* 101 */ + { 9, 6, 12, 0, 0, }, /* 102 */ + { 3, 24, 12, 0, 0, }, /* 103 */ + { 27, 12, 3, 0, 0, }, /* 104 */ + { 27, 12, 3, 21, 116, }, /* 105 */ + { 19, 9, 12, 0, 1, }, /* 106 */ + { 19, 5, 12, 0, -1, }, /* 107 */ + { 19, 24, 12, 0, 0, }, /* 108 */ + { 9, 2, 12, 0, 0, }, /* 109 */ + { 19, 6, 12, 0, 0, }, /* 110 */ + { 19, 5, 12, 0, 130, }, /* 111 */ + { 19, 9, 12, 0, 38, }, /* 112 */ + { 19, 9, 12, 0, 37, }, /* 113 */ + { 19, 9, 12, 0, 64, }, /* 114 */ + { 19, 9, 12, 0, 63, }, /* 115 */ + { 19, 5, 12, 0, 0, }, /* 116 */ + { 19, 9, 12, 0, 32, }, /* 117 */ + { 19, 9, 12, 34, 32, }, /* 118 */ + { 19, 9, 12, 59, 32, }, /* 119 */ + { 19, 9, 12, 38, 32, }, /* 120 */ + { 19, 9, 12, 21, 32, }, /* 121 */ + { 19, 9, 12, 51, 32, }, /* 122 */ + { 19, 9, 12, 26, 32, }, /* 123 */ + { 19, 9, 12, 47, 32, }, /* 124 */ + { 19, 9, 12, 55, 32, }, /* 125 */ + { 19, 9, 12, 30, 32, }, /* 126 */ + { 19, 9, 12, 43, 32, }, /* 127 */ + { 19, 9, 12, 67, 32, }, /* 128 */ + { 19, 5, 12, 0, -38, }, /* 129 */ + { 19, 5, 12, 0, -37, }, /* 130 */ + { 19, 5, 12, 0, -32, }, /* 131 */ + { 19, 5, 12, 34, -32, }, /* 132 */ + { 19, 5, 12, 59, -32, }, /* 133 */ + { 19, 5, 12, 38, -32, }, /* 134 */ + { 19, 5, 12, 21, -116, }, /* 135 */ + { 19, 5, 12, 51, -32, }, /* 136 */ + { 19, 5, 12, 26, -775, }, /* 137 */ + { 19, 5, 12, 47, -32, }, /* 138 */ + { 19, 5, 12, 55, -32, }, /* 139 */ + { 19, 5, 12, 30, 1, }, /* 140 */ + { 19, 5, 12, 30, -32, }, /* 141 */ + { 19, 5, 12, 43, -32, }, /* 142 */ + { 19, 5, 12, 67, -32, }, /* 143 */ + { 19, 5, 12, 0, -64, }, /* 144 */ + { 19, 5, 12, 0, -63, }, /* 145 */ + { 19, 9, 12, 0, 8, }, /* 146 */ + { 19, 5, 12, 34, -30, }, /* 147 */ + { 19, 5, 12, 38, -25, }, /* 148 */ + { 19, 9, 12, 0, 0, }, /* 149 */ + { 19, 5, 12, 43, -15, }, /* 150 */ + { 19, 5, 12, 47, -22, }, /* 151 */ + { 19, 5, 12, 0, -8, }, /* 152 */ + { 10, 9, 12, 0, 1, }, /* 153 */ + { 10, 5, 12, 0, -1, }, /* 154 */ + { 19, 5, 12, 51, -54, }, /* 155 */ + { 19, 5, 12, 55, -48, }, /* 156 */ + { 19, 5, 12, 0, 7, }, /* 157 */ + { 19, 9, 12, 38, -60, }, /* 158 */ + { 19, 5, 12, 59, -64, }, /* 159 */ + { 19, 25, 12, 0, 0, }, /* 160 */ + { 19, 9, 12, 0, -7, }, /* 161 */ + { 19, 9, 12, 0, -130, }, /* 162 */ + { 12, 9, 12, 0, 80, }, /* 163 */ + { 12, 9, 12, 0, 32, }, /* 164 */ + { 12, 5, 12, 0, -32, }, /* 165 */ + { 12, 5, 12, 0, -80, }, /* 166 */ + { 12, 9, 12, 0, 1, }, /* 167 */ + { 12, 5, 12, 0, -1, }, /* 168 */ + { 12, 26, 12, 0, 0, }, /* 169 */ + { 12, 12, 3, 0, 0, }, /* 170 */ + { 12, 11, 3, 0, 0, }, /* 171 */ + { 12, 9, 12, 0, 15, }, /* 172 */ + { 12, 5, 12, 0, -15, }, /* 173 */ + { 1, 9, 12, 0, 48, }, /* 174 */ + { 1, 6, 12, 0, 0, }, /* 175 */ + { 1, 21, 12, 0, 0, }, /* 176 */ + { 1, 5, 12, 0, -48, }, /* 177 */ + { 1, 5, 12, 0, 0, }, /* 178 */ + { 1, 17, 12, 0, 0, }, /* 179 */ + { 1, 23, 12, 0, 0, }, /* 180 */ + { 25, 12, 3, 0, 0, }, /* 181 */ + { 25, 17, 12, 0, 0, }, /* 182 */ + { 25, 21, 12, 0, 0, }, /* 183 */ + { 25, 7, 12, 0, 0, }, /* 184 */ + { 0, 1, 2, 0, 0, }, /* 185 */ + { 0, 25, 12, 0, 0, }, /* 186 */ + { 0, 21, 12, 0, 0, }, /* 187 */ + { 0, 23, 12, 0, 0, }, /* 188 */ + { 0, 26, 12, 0, 0, }, /* 189 */ + { 0, 12, 3, 0, 0, }, /* 190 */ + { 0, 7, 12, 0, 0, }, /* 191 */ + { 0, 6, 12, 0, 0, }, /* 192 */ + { 0, 13, 12, 0, 0, }, /* 193 */ + { 49, 21, 12, 0, 0, }, /* 194 */ + { 49, 1, 2, 0, 0, }, /* 195 */ + { 49, 7, 12, 0, 0, }, /* 196 */ + { 49, 12, 3, 0, 0, }, /* 197 */ + { 55, 7, 12, 0, 0, }, /* 198 */ + { 55, 12, 3, 0, 0, }, /* 199 */ + { 63, 13, 12, 0, 0, }, /* 200 */ + { 63, 7, 12, 0, 0, }, /* 201 */ + { 63, 12, 3, 0, 0, }, /* 202 */ + { 63, 6, 12, 0, 0, }, /* 203 */ + { 63, 26, 12, 0, 0, }, /* 204 */ + { 63, 21, 12, 0, 0, }, /* 205 */ + { 89, 7, 12, 0, 0, }, /* 206 */ + { 89, 12, 3, 0, 0, }, /* 207 */ + { 89, 6, 12, 0, 0, }, /* 208 */ + { 89, 21, 12, 0, 0, }, /* 209 */ + { 94, 7, 12, 0, 0, }, /* 210 */ + { 94, 12, 3, 0, 0, }, /* 211 */ + { 94, 21, 12, 0, 0, }, /* 212 */ + { 14, 12, 3, 0, 0, }, /* 213 */ + { 14, 10, 5, 0, 0, }, /* 214 */ + { 14, 7, 12, 0, 0, }, /* 215 */ + { 14, 13, 12, 0, 0, }, /* 216 */ + { 14, 21, 12, 0, 0, }, /* 217 */ + { 14, 6, 12, 0, 0, }, /* 218 */ + { 2, 12, 3, 0, 0, }, /* 219 */ + { 2, 10, 5, 0, 0, }, /* 220 */ + { 2, 7, 12, 0, 0, }, /* 221 */ + { 2, 10, 3, 0, 0, }, /* 222 */ + { 2, 13, 12, 0, 0, }, /* 223 */ + { 2, 23, 12, 0, 0, }, /* 224 */ + { 2, 15, 12, 0, 0, }, /* 225 */ + { 2, 26, 12, 0, 0, }, /* 226 */ + { 21, 12, 3, 0, 0, }, /* 227 */ + { 21, 10, 5, 0, 0, }, /* 228 */ + { 21, 7, 12, 0, 0, }, /* 229 */ + { 21, 13, 12, 0, 0, }, /* 230 */ + { 20, 12, 3, 0, 0, }, /* 231 */ + { 20, 10, 5, 0, 0, }, /* 232 */ + { 20, 7, 12, 0, 0, }, /* 233 */ + { 20, 13, 12, 0, 0, }, /* 234 */ + { 20, 21, 12, 0, 0, }, /* 235 */ + { 20, 23, 12, 0, 0, }, /* 236 */ + { 43, 12, 3, 0, 0, }, /* 237 */ + { 43, 10, 5, 0, 0, }, /* 238 */ + { 43, 7, 12, 0, 0, }, /* 239 */ + { 43, 10, 3, 0, 0, }, /* 240 */ + { 43, 13, 12, 0, 0, }, /* 241 */ + { 43, 26, 12, 0, 0, }, /* 242 */ + { 43, 15, 12, 0, 0, }, /* 243 */ + { 53, 12, 3, 0, 0, }, /* 244 */ + { 53, 7, 12, 0, 0, }, /* 245 */ + { 53, 10, 3, 0, 0, }, /* 246 */ + { 53, 10, 5, 0, 0, }, /* 247 */ + { 53, 13, 12, 0, 0, }, /* 248 */ + { 53, 15, 12, 0, 0, }, /* 249 */ + { 53, 26, 12, 0, 0, }, /* 250 */ + { 53, 23, 12, 0, 0, }, /* 251 */ + { 54, 10, 5, 0, 0, }, /* 252 */ + { 54, 7, 12, 0, 0, }, /* 253 */ + { 54, 12, 3, 0, 0, }, /* 254 */ + { 54, 13, 12, 0, 0, }, /* 255 */ + { 54, 15, 12, 0, 0, }, /* 256 */ + { 54, 26, 12, 0, 0, }, /* 257 */ + { 28, 10, 5, 0, 0, }, /* 258 */ + { 28, 7, 12, 0, 0, }, /* 259 */ + { 28, 12, 3, 0, 0, }, /* 260 */ + { 28, 10, 3, 0, 0, }, /* 261 */ + { 28, 13, 12, 0, 0, }, /* 262 */ + { 36, 10, 5, 0, 0, }, /* 263 */ + { 36, 7, 12, 0, 0, }, /* 264 */ + { 36, 10, 3, 0, 0, }, /* 265 */ + { 36, 12, 3, 0, 0, }, /* 266 */ + { 36, 13, 12, 0, 0, }, /* 267 */ + { 36, 15, 12, 0, 0, }, /* 268 */ + { 36, 26, 12, 0, 0, }, /* 269 */ + { 47, 10, 5, 0, 0, }, /* 270 */ + { 47, 7, 12, 0, 0, }, /* 271 */ + { 47, 12, 3, 0, 0, }, /* 272 */ + { 47, 10, 3, 0, 0, }, /* 273 */ + { 47, 21, 12, 0, 0, }, /* 274 */ + { 56, 7, 12, 0, 0, }, /* 275 */ + { 56, 12, 3, 0, 0, }, /* 276 */ + { 56, 7, 5, 0, 0, }, /* 277 */ + { 56, 6, 12, 0, 0, }, /* 278 */ + { 56, 21, 12, 0, 0, }, /* 279 */ + { 56, 13, 12, 0, 0, }, /* 280 */ + { 32, 7, 12, 0, 0, }, /* 281 */ + { 32, 12, 3, 0, 0, }, /* 282 */ + { 32, 7, 5, 0, 0, }, /* 283 */ + { 32, 6, 12, 0, 0, }, /* 284 */ + { 32, 13, 12, 0, 0, }, /* 285 */ + { 57, 7, 12, 0, 0, }, /* 286 */ + { 57, 26, 12, 0, 0, }, /* 287 */ + { 57, 21, 12, 0, 0, }, /* 288 */ + { 57, 12, 3, 0, 0, }, /* 289 */ + { 57, 13, 12, 0, 0, }, /* 290 */ + { 57, 15, 12, 0, 0, }, /* 291 */ + { 57, 22, 12, 0, 0, }, /* 292 */ + { 57, 18, 12, 0, 0, }, /* 293 */ + { 57, 10, 5, 0, 0, }, /* 294 */ + { 38, 7, 12, 0, 0, }, /* 295 */ + { 38, 10, 12, 0, 0, }, /* 296 */ + { 38, 12, 3, 0, 0, }, /* 297 */ + { 38, 10, 5, 0, 0, }, /* 298 */ + { 38, 13, 12, 0, 0, }, /* 299 */ + { 38, 21, 12, 0, 0, }, /* 300 */ + { 38, 26, 12, 0, 0, }, /* 301 */ + { 16, 9, 12, 0, 7264, }, /* 302 */ + { 16, 7, 12, 0, 0, }, /* 303 */ + { 16, 6, 12, 0, 0, }, /* 304 */ + { 23, 7, 6, 0, 0, }, /* 305 */ + { 23, 7, 7, 0, 0, }, /* 306 */ + { 23, 7, 8, 0, 0, }, /* 307 */ + { 15, 7, 12, 0, 0, }, /* 308 */ + { 15, 12, 3, 0, 0, }, /* 309 */ + { 15, 21, 12, 0, 0, }, /* 310 */ + { 15, 15, 12, 0, 0, }, /* 311 */ + { 15, 26, 12, 0, 0, }, /* 312 */ + { 8, 7, 12, 0, 0, }, /* 313 */ + { 7, 17, 12, 0, 0, }, /* 314 */ + { 7, 7, 12, 0, 0, }, /* 315 */ + { 7, 21, 12, 0, 0, }, /* 316 */ + { 40, 29, 12, 0, 0, }, /* 317 */ + { 40, 7, 12, 0, 0, }, /* 318 */ + { 40, 22, 12, 0, 0, }, /* 319 */ + { 40, 18, 12, 0, 0, }, /* 320 */ + { 45, 7, 12, 0, 0, }, /* 321 */ + { 45, 14, 12, 0, 0, }, /* 322 */ + { 50, 7, 12, 0, 0, }, /* 323 */ + { 50, 12, 3, 0, 0, }, /* 324 */ + { 24, 7, 12, 0, 0, }, /* 325 */ + { 24, 12, 3, 0, 0, }, /* 326 */ + { 6, 7, 12, 0, 0, }, /* 327 */ + { 6, 12, 3, 0, 0, }, /* 328 */ + { 51, 7, 12, 0, 0, }, /* 329 */ + { 51, 12, 3, 0, 0, }, /* 330 */ + { 31, 7, 12, 0, 0, }, /* 331 */ + { 31, 12, 3, 0, 0, }, /* 332 */ + { 31, 10, 5, 0, 0, }, /* 333 */ + { 31, 21, 12, 0, 0, }, /* 334 */ + { 31, 6, 12, 0, 0, }, /* 335 */ + { 31, 23, 12, 0, 0, }, /* 336 */ + { 31, 13, 12, 0, 0, }, /* 337 */ + { 31, 15, 12, 0, 0, }, /* 338 */ + { 37, 21, 12, 0, 0, }, /* 339 */ + { 37, 17, 12, 0, 0, }, /* 340 */ + { 37, 12, 3, 0, 0, }, /* 341 */ + { 37, 1, 2, 0, 0, }, /* 342 */ + { 37, 13, 12, 0, 0, }, /* 343 */ + { 37, 7, 12, 0, 0, }, /* 344 */ + { 37, 6, 12, 0, 0, }, /* 345 */ + { 34, 7, 12, 0, 0, }, /* 346 */ + { 34, 12, 3, 0, 0, }, /* 347 */ + { 34, 10, 5, 0, 0, }, /* 348 */ + { 34, 26, 12, 0, 0, }, /* 349 */ + { 34, 21, 12, 0, 0, }, /* 350 */ + { 34, 13, 12, 0, 0, }, /* 351 */ + { 52, 7, 12, 0, 0, }, /* 352 */ + { 39, 7, 12, 0, 0, }, /* 353 */ + { 39, 10, 12, 0, 0, }, /* 354 */ + { 39, 10, 5, 0, 0, }, /* 355 */ + { 39, 13, 12, 0, 0, }, /* 356 */ + { 39, 15, 12, 0, 0, }, /* 357 */ + { 39, 26, 12, 0, 0, }, /* 358 */ + { 31, 26, 12, 0, 0, }, /* 359 */ + { 5, 7, 12, 0, 0, }, /* 360 */ + { 5, 12, 3, 0, 0, }, /* 361 */ + { 5, 10, 5, 0, 0, }, /* 362 */ + { 5, 21, 12, 0, 0, }, /* 363 */ + { 90, 7, 12, 0, 0, }, /* 364 */ + { 90, 10, 5, 0, 0, }, /* 365 */ + { 90, 12, 3, 0, 0, }, /* 366 */ + { 90, 10, 12, 0, 0, }, /* 367 */ + { 90, 13, 12, 0, 0, }, /* 368 */ + { 90, 21, 12, 0, 0, }, /* 369 */ + { 90, 6, 12, 0, 0, }, /* 370 */ + { 61, 12, 3, 0, 0, }, /* 371 */ + { 61, 10, 5, 0, 0, }, /* 372 */ + { 61, 7, 12, 0, 0, }, /* 373 */ + { 61, 13, 12, 0, 0, }, /* 374 */ + { 61, 21, 12, 0, 0, }, /* 375 */ + { 61, 26, 12, 0, 0, }, /* 376 */ + { 75, 12, 3, 0, 0, }, /* 377 */ + { 75, 10, 5, 0, 0, }, /* 378 */ + { 75, 7, 12, 0, 0, }, /* 379 */ + { 75, 13, 12, 0, 0, }, /* 380 */ + { 92, 7, 12, 0, 0, }, /* 381 */ + { 92, 12, 3, 0, 0, }, /* 382 */ + { 92, 10, 5, 0, 0, }, /* 383 */ + { 92, 21, 12, 0, 0, }, /* 384 */ + { 69, 7, 12, 0, 0, }, /* 385 */ + { 69, 10, 5, 0, 0, }, /* 386 */ + { 69, 12, 3, 0, 0, }, /* 387 */ + { 69, 21, 12, 0, 0, }, /* 388 */ + { 69, 13, 12, 0, 0, }, /* 389 */ + { 72, 13, 12, 0, 0, }, /* 390 */ + { 72, 7, 12, 0, 0, }, /* 391 */ + { 72, 6, 12, 0, 0, }, /* 392 */ + { 72, 21, 12, 0, 0, }, /* 393 */ + { 75, 21, 12, 0, 0, }, /* 394 */ + { 9, 10, 5, 0, 0, }, /* 395 */ + { 9, 7, 12, 0, 0, }, /* 396 */ + { 12, 5, 12, 0, 0, }, /* 397 */ + { 12, 6, 12, 0, 0, }, /* 398 */ + { 33, 5, 12, 0, 35332, }, /* 399 */ + { 33, 5, 12, 0, 3814, }, /* 400 */ + { 33, 9, 12, 63, 1, }, /* 401 */ + { 33, 5, 12, 63, -1, }, /* 402 */ + { 33, 5, 12, 63, -58, }, /* 403 */ + { 33, 9, 12, 0, -7615, }, /* 404 */ + { 19, 5, 12, 0, 8, }, /* 405 */ + { 19, 9, 12, 0, -8, }, /* 406 */ + { 19, 5, 12, 0, 74, }, /* 407 */ + { 19, 5, 12, 0, 86, }, /* 408 */ + { 19, 5, 12, 0, 100, }, /* 409 */ + { 19, 5, 12, 0, 128, }, /* 410 */ + { 19, 5, 12, 0, 112, }, /* 411 */ + { 19, 5, 12, 0, 126, }, /* 412 */ + { 19, 8, 12, 0, -8, }, /* 413 */ + { 19, 5, 12, 0, 9, }, /* 414 */ + { 19, 9, 12, 0, -74, }, /* 415 */ + { 19, 8, 12, 0, -9, }, /* 416 */ + { 19, 5, 12, 21, -7173, }, /* 417 */ + { 19, 9, 12, 0, -86, }, /* 418 */ + { 19, 9, 12, 0, -100, }, /* 419 */ + { 19, 9, 12, 0, -112, }, /* 420 */ + { 19, 9, 12, 0, -128, }, /* 421 */ + { 19, 9, 12, 0, -126, }, /* 422 */ + { 27, 1, 3, 0, 0, }, /* 423 */ + { 9, 27, 2, 0, 0, }, /* 424 */ + { 9, 28, 2, 0, 0, }, /* 425 */ + { 9, 2, 2, 0, 0, }, /* 426 */ + { 27, 11, 3, 0, 0, }, /* 427 */ + { 9, 9, 12, 0, 0, }, /* 428 */ + { 9, 5, 12, 0, 0, }, /* 429 */ + { 19, 9, 12, 67, -7517, }, /* 430 */ + { 33, 9, 12, 71, -8383, }, /* 431 */ + { 33, 9, 12, 75, -8262, }, /* 432 */ + { 33, 9, 12, 0, 28, }, /* 433 */ + { 33, 5, 12, 0, -28, }, /* 434 */ + { 33, 14, 12, 0, 16, }, /* 435 */ + { 33, 14, 12, 0, -16, }, /* 436 */ + { 33, 14, 12, 0, 0, }, /* 437 */ + { 9, 26, 12, 0, 26, }, /* 438 */ + { 9, 26, 12, 0, -26, }, /* 439 */ + { 4, 26, 12, 0, 0, }, /* 440 */ + { 17, 9, 12, 0, 48, }, /* 441 */ + { 17, 5, 12, 0, -48, }, /* 442 */ + { 33, 9, 12, 0, -10743, }, /* 443 */ + { 33, 9, 12, 0, -3814, }, /* 444 */ + { 33, 9, 12, 0, -10727, }, /* 445 */ + { 33, 5, 12, 0, -10795, }, /* 446 */ + { 33, 5, 12, 0, -10792, }, /* 447 */ + { 33, 9, 12, 0, -10780, }, /* 448 */ + { 33, 9, 12, 0, -10749, }, /* 449 */ + { 33, 9, 12, 0, -10783, }, /* 450 */ + { 33, 9, 12, 0, -10782, }, /* 451 */ + { 33, 9, 12, 0, -10815, }, /* 452 */ + { 10, 5, 12, 0, 0, }, /* 453 */ + { 10, 26, 12, 0, 0, }, /* 454 */ + { 10, 12, 3, 0, 0, }, /* 455 */ + { 10, 21, 12, 0, 0, }, /* 456 */ + { 10, 15, 12, 0, 0, }, /* 457 */ + { 16, 5, 12, 0, -7264, }, /* 458 */ + { 58, 7, 12, 0, 0, }, /* 459 */ + { 58, 6, 12, 0, 0, }, /* 460 */ + { 58, 21, 12, 0, 0, }, /* 461 */ + { 58, 12, 3, 0, 0, }, /* 462 */ + { 22, 26, 12, 0, 0, }, /* 463 */ + { 22, 6, 12, 0, 0, }, /* 464 */ + { 22, 14, 12, 0, 0, }, /* 465 */ + { 23, 10, 3, 0, 0, }, /* 466 */ + { 26, 7, 12, 0, 0, }, /* 467 */ + { 26, 6, 12, 0, 0, }, /* 468 */ + { 29, 7, 12, 0, 0, }, /* 469 */ + { 29, 6, 12, 0, 0, }, /* 470 */ + { 3, 7, 12, 0, 0, }, /* 471 */ + { 23, 7, 12, 0, 0, }, /* 472 */ + { 23, 26, 12, 0, 0, }, /* 473 */ + { 29, 26, 12, 0, 0, }, /* 474 */ + { 22, 7, 12, 0, 0, }, /* 475 */ + { 60, 7, 12, 0, 0, }, /* 476 */ + { 60, 6, 12, 0, 0, }, /* 477 */ + { 60, 26, 12, 0, 0, }, /* 478 */ + { 85, 7, 12, 0, 0, }, /* 479 */ + { 85, 6, 12, 0, 0, }, /* 480 */ + { 85, 21, 12, 0, 0, }, /* 481 */ + { 76, 7, 12, 0, 0, }, /* 482 */ + { 76, 6, 12, 0, 0, }, /* 483 */ + { 76, 21, 12, 0, 0, }, /* 484 */ + { 76, 13, 12, 0, 0, }, /* 485 */ + { 12, 7, 12, 0, 0, }, /* 486 */ + { 12, 21, 12, 0, 0, }, /* 487 */ + { 78, 7, 12, 0, 0, }, /* 488 */ + { 78, 14, 12, 0, 0, }, /* 489 */ + { 78, 12, 3, 0, 0, }, /* 490 */ + { 78, 21, 12, 0, 0, }, /* 491 */ + { 33, 9, 12, 0, -35332, }, /* 492 */ + { 33, 9, 12, 0, -42280, }, /* 493 */ + { 33, 9, 12, 0, -42308, }, /* 494 */ + { 48, 7, 12, 0, 0, }, /* 495 */ + { 48, 12, 3, 0, 0, }, /* 496 */ + { 48, 10, 5, 0, 0, }, /* 497 */ + { 48, 26, 12, 0, 0, }, /* 498 */ + { 64, 7, 12, 0, 0, }, /* 499 */ + { 64, 21, 12, 0, 0, }, /* 500 */ + { 74, 10, 5, 0, 0, }, /* 501 */ + { 74, 7, 12, 0, 0, }, /* 502 */ + { 74, 12, 3, 0, 0, }, /* 503 */ + { 74, 21, 12, 0, 0, }, /* 504 */ + { 74, 13, 12, 0, 0, }, /* 505 */ + { 68, 13, 12, 0, 0, }, /* 506 */ + { 68, 7, 12, 0, 0, }, /* 507 */ + { 68, 12, 3, 0, 0, }, /* 508 */ + { 68, 21, 12, 0, 0, }, /* 509 */ + { 73, 7, 12, 0, 0, }, /* 510 */ + { 73, 12, 3, 0, 0, }, /* 511 */ + { 73, 10, 5, 0, 0, }, /* 512 */ + { 73, 21, 12, 0, 0, }, /* 513 */ + { 83, 12, 3, 0, 0, }, /* 514 */ + { 83, 10, 5, 0, 0, }, /* 515 */ + { 83, 7, 12, 0, 0, }, /* 516 */ + { 83, 21, 12, 0, 0, }, /* 517 */ + { 83, 13, 12, 0, 0, }, /* 518 */ + { 67, 7, 12, 0, 0, }, /* 519 */ + { 67, 12, 3, 0, 0, }, /* 520 */ + { 67, 10, 5, 0, 0, }, /* 521 */ + { 67, 13, 12, 0, 0, }, /* 522 */ + { 67, 21, 12, 0, 0, }, /* 523 */ + { 38, 6, 12, 0, 0, }, /* 524 */ + { 91, 7, 12, 0, 0, }, /* 525 */ + { 91, 12, 3, 0, 0, }, /* 526 */ + { 91, 6, 12, 0, 0, }, /* 527 */ + { 91, 21, 12, 0, 0, }, /* 528 */ + { 86, 7, 12, 0, 0, }, /* 529 */ + { 86, 10, 5, 0, 0, }, /* 530 */ + { 86, 12, 3, 0, 0, }, /* 531 */ + { 86, 21, 12, 0, 0, }, /* 532 */ + { 86, 6, 12, 0, 0, }, /* 533 */ + { 86, 13, 12, 0, 0, }, /* 534 */ + { 23, 7, 9, 0, 0, }, /* 535 */ + { 23, 7, 10, 0, 0, }, /* 536 */ + { 9, 4, 2, 0, 0, }, /* 537 */ + { 9, 3, 12, 0, 0, }, /* 538 */ + { 25, 25, 12, 0, 0, }, /* 539 */ + { 0, 24, 12, 0, 0, }, /* 540 */ + { 9, 6, 3, 0, 0, }, /* 541 */ + { 35, 7, 12, 0, 0, }, /* 542 */ + { 19, 14, 12, 0, 0, }, /* 543 */ + { 19, 15, 12, 0, 0, }, /* 544 */ + { 19, 26, 12, 0, 0, }, /* 545 */ + { 70, 7, 12, 0, 0, }, /* 546 */ + { 66, 7, 12, 0, 0, }, /* 547 */ + { 41, 7, 12, 0, 0, }, /* 548 */ + { 41, 15, 12, 0, 0, }, /* 549 */ + { 18, 7, 12, 0, 0, }, /* 550 */ + { 18, 14, 12, 0, 0, }, /* 551 */ + { 59, 7, 12, 0, 0, }, /* 552 */ + { 59, 21, 12, 0, 0, }, /* 553 */ + { 42, 7, 12, 0, 0, }, /* 554 */ + { 42, 21, 12, 0, 0, }, /* 555 */ + { 42, 14, 12, 0, 0, }, /* 556 */ + { 13, 9, 12, 0, 40, }, /* 557 */ + { 13, 5, 12, 0, -40, }, /* 558 */ + { 46, 7, 12, 0, 0, }, /* 559 */ + { 44, 7, 12, 0, 0, }, /* 560 */ + { 44, 13, 12, 0, 0, }, /* 561 */ + { 11, 7, 12, 0, 0, }, /* 562 */ + { 80, 7, 12, 0, 0, }, /* 563 */ + { 80, 21, 12, 0, 0, }, /* 564 */ + { 80, 15, 12, 0, 0, }, /* 565 */ + { 65, 7, 12, 0, 0, }, /* 566 */ + { 65, 15, 12, 0, 0, }, /* 567 */ + { 65, 21, 12, 0, 0, }, /* 568 */ + { 71, 7, 12, 0, 0, }, /* 569 */ + { 71, 21, 12, 0, 0, }, /* 570 */ + { 97, 7, 12, 0, 0, }, /* 571 */ + { 96, 7, 12, 0, 0, }, /* 572 */ + { 30, 7, 12, 0, 0, }, /* 573 */ + { 30, 12, 3, 0, 0, }, /* 574 */ + { 30, 15, 12, 0, 0, }, /* 575 */ + { 30, 21, 12, 0, 0, }, /* 576 */ + { 87, 7, 12, 0, 0, }, /* 577 */ + { 87, 15, 12, 0, 0, }, /* 578 */ + { 87, 21, 12, 0, 0, }, /* 579 */ + { 77, 7, 12, 0, 0, }, /* 580 */ + { 77, 21, 12, 0, 0, }, /* 581 */ + { 82, 7, 12, 0, 0, }, /* 582 */ + { 82, 15, 12, 0, 0, }, /* 583 */ + { 81, 7, 12, 0, 0, }, /* 584 */ + { 81, 15, 12, 0, 0, }, /* 585 */ + { 88, 7, 12, 0, 0, }, /* 586 */ + { 0, 15, 12, 0, 0, }, /* 587 */ + { 93, 10, 5, 0, 0, }, /* 588 */ + { 93, 12, 3, 0, 0, }, /* 589 */ + { 93, 7, 12, 0, 0, }, /* 590 */ + { 93, 21, 12, 0, 0, }, /* 591 */ + { 93, 15, 12, 0, 0, }, /* 592 */ + { 93, 13, 12, 0, 0, }, /* 593 */ + { 84, 12, 3, 0, 0, }, /* 594 */ + { 84, 10, 5, 0, 0, }, /* 595 */ + { 84, 7, 12, 0, 0, }, /* 596 */ + { 84, 21, 12, 0, 0, }, /* 597 */ + { 84, 1, 2, 0, 0, }, /* 598 */ + { 100, 7, 12, 0, 0, }, /* 599 */ + { 100, 13, 12, 0, 0, }, /* 600 */ + { 95, 12, 3, 0, 0, }, /* 601 */ + { 95, 7, 12, 0, 0, }, /* 602 */ + { 95, 10, 5, 0, 0, }, /* 603 */ + { 95, 13, 12, 0, 0, }, /* 604 */ + { 95, 21, 12, 0, 0, }, /* 605 */ + { 99, 12, 3, 0, 0, }, /* 606 */ + { 99, 10, 5, 0, 0, }, /* 607 */ + { 99, 7, 12, 0, 0, }, /* 608 */ + { 99, 21, 12, 0, 0, }, /* 609 */ + { 99, 13, 12, 0, 0, }, /* 610 */ + { 101, 7, 12, 0, 0, }, /* 611 */ + { 101, 12, 3, 0, 0, }, /* 612 */ + { 101, 10, 5, 0, 0, }, /* 613 */ + { 101, 13, 12, 0, 0, }, /* 614 */ + { 62, 7, 12, 0, 0, }, /* 615 */ + { 62, 14, 12, 0, 0, }, /* 616 */ + { 62, 21, 12, 0, 0, }, /* 617 */ + { 79, 7, 12, 0, 0, }, /* 618 */ + { 98, 7, 12, 0, 0, }, /* 619 */ + { 98, 10, 5, 0, 0, }, /* 620 */ + { 98, 12, 3, 0, 0, }, /* 621 */ + { 98, 6, 12, 0, 0, }, /* 622 */ + { 9, 10, 3, 0, 0, }, /* 623 */ + { 19, 12, 3, 0, 0, }, /* 624 */ + { 9, 26, 11, 0, 0, }, /* 625 */ + { 26, 26, 12, 0, 0, }, /* 626 */ +}; + +const pcre_uint8 PRIV(ucd_stage1)[] = { /* 8704 bytes */ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, /* U+0000 */ - 16, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, /* U+0800 */ - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 40, 40, 41, 42, 43, 44, /* U+1000 */ - 45, 46, 47, 48, 49, 16, 50, 51, 52, 16, 53, 54, 55, 56, 57, 58, /* U+1800 */ - 59, 60, 61, 62, 63, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, /* U+2000 */ - 74, 74, 63, 75, 63, 63, 76, 16, 77, 78, 79, 80, 81, 82, 83, 84, /* U+2800 */ - 85, 86, 87, 88, 89, 90, 91, 68, 92, 92, 92, 92, 92, 92, 92, 92, /* U+3000 */ - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+3800 */ - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+4000 */ - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 93, 92, 92, 92, 92, /* U+4800 */ - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+5000 */ - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+5800 */ - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+6000 */ - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+6800 */ - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+7000 */ - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+7800 */ - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+8000 */ - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+8800 */ - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+9000 */ - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 94, /* U+9800 */ - 95, 96, 96, 96, 96, 96, 96, 96, 96, 97, 98, 98, 99,100,101,102, /* U+A000 */ -103,104,105, 16,106, 16, 16, 16,107,107,107,107,107,107,107,107, /* U+A800 */ -107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107, /* U+B000 */ -107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107, /* U+B800 */ -107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107, /* U+C000 */ -107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107, /* U+C800 */ -107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,108, /* U+D000 */ -109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, /* U+D800 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+E000 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+E800 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+F000 */ -110,110, 92, 92,111,112,113,114,115,115,116,117,118,119,120,121, /* U+F800 */ -122,123,124,125, 16,126,127,128,129,130, 16, 16, 16, 16, 16, 16, /* U+10000 */ -131, 16,132, 16,133, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+10800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+11000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+11800 */ -134,134,134,134,134,134,135, 16,136, 16, 16, 16, 16, 16, 16, 16, /* U+12000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+12800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+13000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+13800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+14000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+14800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+15000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+15800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+16000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+16800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+17000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+17800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+18000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+18800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+19000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+19800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+1A000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+1A800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+1B000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+1B800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+1C000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+1C800 */ - 68,137,138,139,140, 16,141, 16,142,143,144,145,146,147,148,149, /* U+1D000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+1D800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+1E000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+1E800 */ -150,151, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+1F000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+1F800 */ - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+20000 */ - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+20800 */ - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+21000 */ - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+21800 */ - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+22000 */ - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+22800 */ - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+23000 */ - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+23800 */ - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+24000 */ - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+24800 */ - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+25000 */ - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+25800 */ - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+26000 */ - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+26800 */ - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+27000 */ - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+27800 */ - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+28000 */ - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+28800 */ - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+29000 */ - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+29800 */ - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92,152, 16, 16, /* U+2A000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+2A800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+2B000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+2B800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+2C000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+2C800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+2D000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+2D800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+2E000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+2E800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+2F000 */ - 92, 92, 92, 92,153, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+2F800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+30000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+30800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+31000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+31800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+32000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+32800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+33000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+33800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+34000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+34800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+35000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+35800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+36000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+36800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+37000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+37800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+38000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+38800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+39000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+39800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+3A000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+3A800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+3B000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+3B800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+3C000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+3C800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+3D000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+3D800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+3E000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+3E800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+3F000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+3F800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+40000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+40800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+41000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+41800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+42000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+42800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+43000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+43800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+44000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+44800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+45000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+45800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+46000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+46800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+47000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+47800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+48000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+48800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+49000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+49800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+4A000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+4A800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+4B000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+4B800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+4C000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+4C800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+4D000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+4D800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+4E000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+4E800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+4F000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+4F800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+50000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+50800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+51000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+51800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+52000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+52800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+53000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+53800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+54000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+54800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+55000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+55800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+56000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+56800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+57000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+57800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+58000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+58800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+59000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+59800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+5A000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+5A800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+5B000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+5B800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+5C000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+5C800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+5D000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+5D800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+5E000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+5E800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+5F000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+5F800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+60000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+60800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+61000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+61800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+62000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+62800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+63000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+63800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+64000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+64800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+65000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+65800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+66000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+66800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+67000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+67800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+68000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+68800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+69000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+69800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+6A000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+6A800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+6B000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+6B800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+6C000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+6C800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+6D000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+6D800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+6E000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+6E800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+6F000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+6F800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+70000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+70800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+71000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+71800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+72000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+72800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+73000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+73800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+74000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+74800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+75000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+75800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+76000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+76800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+77000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+77800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+78000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+78800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+79000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+79800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+7A000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+7A800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+7B000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+7B800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+7C000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+7C800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+7D000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+7D800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+7E000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+7E800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+7F000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+7F800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+80000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+80800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+81000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+81800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+82000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+82800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+83000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+83800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+84000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+84800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+85000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+85800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+86000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+86800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+87000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+87800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+88000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+88800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+89000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+89800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+8A000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+8A800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+8B000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+8B800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+8C000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+8C800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+8D000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+8D800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+8E000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+8E800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+8F000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+8F800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+90000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+90800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+91000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+91800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+92000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+92800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+93000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+93800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+94000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+94800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+95000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+95800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+96000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+96800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+97000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+97800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+98000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+98800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+99000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+99800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+9A000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+9A800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+9B000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+9B800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+9C000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+9C800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+9D000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+9D800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+9E000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+9E800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+9F000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+9F800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A0000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A0800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A1000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A1800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A2000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A2800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A3000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A3800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A4000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A4800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A5000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A5800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A6000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A6800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A7000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A7800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A8000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A8800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A9000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A9800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+AA000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+AA800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+AB000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+AB800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+AC000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+AC800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+AD000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+AD800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+AE000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+AE800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+AF000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+AF800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B0000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B0800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B1000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B1800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B2000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B2800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B3000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B3800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B4000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B4800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B5000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B5800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B6000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B6800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B7000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B7800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B8000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B8800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B9000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B9800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+BA000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+BA800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+BB000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+BB800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+BC000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+BC800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+BD000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+BD800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+BE000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+BE800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+BF000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+BF800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C0000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C0800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C1000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C1800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C2000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C2800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C3000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C3800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C4000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C4800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C5000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C5800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C6000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C6800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C7000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C7800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C8000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C8800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C9000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C9800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+CA000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+CA800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+CB000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+CB800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+CC000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+CC800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+CD000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+CD800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+CE000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+CE800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+CF000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+CF800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D0000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D0800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D1000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D1800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D2000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D2800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D3000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D3800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D4000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D4800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D5000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D5800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D6000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D6800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D7000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D7800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D8000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D8800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D9000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D9800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+DA000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+DA800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+DB000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+DB800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+DC000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+DC800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+DD000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+DD800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+DE000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+DE800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+DF000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+DF800 */ -154, 16,155,156, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E0000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E0800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E1000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E1800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E2000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E2800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E3000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E3800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E4000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E4800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E5000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E5800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E6000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E6800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E7000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E7800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E8000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E8800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E9000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E9800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+EA000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+EA800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+EB000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+EB800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+EC000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+EC800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+ED000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+ED800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+EE000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+EE800 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+EF000 */ - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+EF800 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+F0000 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+F0800 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+F1000 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+F1800 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+F2000 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+F2800 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+F3000 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+F3800 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+F4000 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+F4800 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+F5000 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+F5800 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+F6000 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+F6800 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+F7000 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+F7800 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+F8000 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+F8800 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+F9000 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+F9800 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+FA000 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+FA800 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+FB000 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+FB800 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+FC000 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+FC800 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+FD000 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+FD800 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+FE000 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+FE800 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+FF000 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,157, /* U+FF800 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+100000 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+100800 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+101000 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+101800 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+102000 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+102800 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+103000 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+103800 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+104000 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+104800 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+105000 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+105800 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+106000 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+106800 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+107000 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+107800 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+108000 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+108800 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+109000 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+109800 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+10A000 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+10A800 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+10B000 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+10B800 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+10C000 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+10C800 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+10D000 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+10D800 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+10E000 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+10E800 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+10F000 */ -110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,157, /* U+10F800 */ + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, /* U+0800 */ + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 41, 41, 42, 43, 44, 45, /* U+1000 */ + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, /* U+1800 */ + 62, 63, 64, 65, 66, 66, 67, 68, 69, 70, 71, 72, 73, 71, 74, 75, /* U+2000 */ + 76, 76, 66, 77, 66, 66, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, /* U+2800 */ + 88, 89, 90, 91, 92, 93, 94, 71, 95, 95, 95, 95, 95, 95, 95, 95, /* U+3000 */ + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, /* U+3800 */ + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, /* U+4000 */ + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 96, 95, 95, 95, 95, /* U+4800 */ + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, /* U+5000 */ + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, /* U+5800 */ + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, /* U+6000 */ + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, /* U+6800 */ + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, /* U+7000 */ + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, /* U+7800 */ + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, /* U+8000 */ + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, /* U+8800 */ + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, /* U+9000 */ + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 97, /* U+9800 */ + 98, 99, 99, 99, 99, 99, 99, 99, 99,100,101,101,102,103,104,105, /* U+A000 */ +106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,114, /* U+A800 */ +115,116,117,118,119,120,114,115,116,117,118,119,120,114,115,116, /* U+B000 */ +117,118,119,120,114,115,116,117,118,119,120,114,115,116,117,118, /* U+B800 */ +119,120,114,115,116,117,118,119,120,114,115,116,117,118,119,120, /* U+C000 */ +114,115,116,117,118,119,120,114,115,116,117,118,119,120,114,115, /* U+C800 */ +116,117,118,119,120,114,115,116,117,118,119,120,114,115,116,121, /* U+D000 */ +122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122, /* U+D800 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+E000 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+E800 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+F000 */ +123,123, 95, 95,124,125,126,127,128,128,129,130,131,132,133,134, /* U+F800 */ +135,136,137,138, 79,139,140,141,142,143, 79, 79, 79, 79, 79, 79, /* U+10000 */ +144, 79,145,146,147, 79,148, 79,149, 79, 79, 79,150, 79, 79, 79, /* U+10800 */ +151,152,153,154, 79, 79, 79, 79, 79, 79, 79, 79, 79,155, 79, 79, /* U+11000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+11800 */ +156,156,156,156,156,156,157, 79,158, 79, 79, 79, 79, 79, 79, 79, /* U+12000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+12800 */ +159,159,159,159,159,159,159,159,160, 79, 79, 79, 79, 79, 79, 79, /* U+13000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+13800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+14000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+14800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+15000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+15800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+16000 */ +161,161,161,161,162, 79, 79, 79, 79, 79, 79, 79, 79, 79,163,164, /* U+16800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+17000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+17800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+18000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+18800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+19000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+19800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+1A000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+1A800 */ +165, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+1B000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+1B800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+1C000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+1C800 */ + 71,166,167,168,169, 79,170, 79,171,172,173,174,175,176,177,178, /* U+1D000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+1D800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+1E000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,179,180, 79, 79, /* U+1E800 */ +181,182,183,184,185, 79,186,187,188,189,190,191,192,193,194, 79, /* U+1F000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+1F800 */ + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, /* U+20000 */ + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, /* U+20800 */ + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, /* U+21000 */ + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, /* U+21800 */ + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, /* U+22000 */ + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, /* U+22800 */ + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, /* U+23000 */ + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, /* U+23800 */ + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, /* U+24000 */ + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, /* U+24800 */ + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, /* U+25000 */ + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, /* U+25800 */ + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, /* U+26000 */ + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, /* U+26800 */ + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, /* U+27000 */ + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, /* U+27800 */ + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, /* U+28000 */ + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, /* U+28800 */ + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, /* U+29000 */ + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, /* U+29800 */ + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95,195, 95, 95, /* U+2A000 */ + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, /* U+2A800 */ + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95,196, 95, /* U+2B000 */ +197, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+2B800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+2C000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+2C800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+2D000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+2D800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+2E000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+2E800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+2F000 */ + 95, 95, 95, 95,197, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+2F800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+30000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+30800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+31000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+31800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+32000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+32800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+33000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+33800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+34000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+34800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+35000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+35800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+36000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+36800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+37000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+37800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+38000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+38800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+39000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+39800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+3A000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+3A800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+3B000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+3B800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+3C000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+3C800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+3D000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+3D800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+3E000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+3E800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+3F000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+3F800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+40000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+40800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+41000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+41800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+42000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+42800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+43000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+43800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+44000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+44800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+45000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+45800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+46000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+46800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+47000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+47800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+48000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+48800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+49000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+49800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+4A000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+4A800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+4B000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+4B800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+4C000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+4C800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+4D000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+4D800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+4E000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+4E800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+4F000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+4F800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+50000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+50800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+51000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+51800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+52000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+52800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+53000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+53800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+54000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+54800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+55000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+55800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+56000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+56800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+57000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+57800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+58000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+58800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+59000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+59800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+5A000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+5A800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+5B000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+5B800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+5C000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+5C800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+5D000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+5D800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+5E000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+5E800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+5F000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+5F800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+60000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+60800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+61000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+61800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+62000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+62800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+63000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+63800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+64000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+64800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+65000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+65800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+66000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+66800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+67000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+67800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+68000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+68800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+69000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+69800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+6A000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+6A800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+6B000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+6B800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+6C000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+6C800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+6D000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+6D800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+6E000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+6E800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+6F000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+6F800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+70000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+70800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+71000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+71800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+72000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+72800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+73000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+73800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+74000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+74800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+75000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+75800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+76000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+76800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+77000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+77800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+78000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+78800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+79000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+79800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+7A000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+7A800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+7B000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+7B800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+7C000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+7C800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+7D000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+7D800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+7E000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+7E800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+7F000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+7F800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+80000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+80800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+81000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+81800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+82000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+82800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+83000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+83800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+84000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+84800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+85000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+85800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+86000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+86800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+87000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+87800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+88000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+88800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+89000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+89800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+8A000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+8A800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+8B000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+8B800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+8C000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+8C800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+8D000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+8D800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+8E000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+8E800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+8F000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+8F800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+90000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+90800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+91000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+91800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+92000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+92800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+93000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+93800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+94000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+94800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+95000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+95800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+96000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+96800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+97000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+97800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+98000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+98800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+99000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+99800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+9A000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+9A800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+9B000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+9B800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+9C000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+9C800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+9D000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+9D800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+9E000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+9E800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+9F000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+9F800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+A0000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+A0800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+A1000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+A1800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+A2000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+A2800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+A3000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+A3800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+A4000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+A4800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+A5000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+A5800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+A6000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+A6800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+A7000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+A7800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+A8000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+A8800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+A9000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+A9800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+AA000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+AA800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+AB000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+AB800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+AC000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+AC800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+AD000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+AD800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+AE000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+AE800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+AF000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+AF800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+B0000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+B0800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+B1000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+B1800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+B2000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+B2800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+B3000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+B3800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+B4000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+B4800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+B5000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+B5800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+B6000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+B6800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+B7000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+B7800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+B8000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+B8800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+B9000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+B9800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+BA000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+BA800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+BB000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+BB800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+BC000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+BC800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+BD000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+BD800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+BE000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+BE800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+BF000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+BF800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+C0000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+C0800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+C1000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+C1800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+C2000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+C2800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+C3000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+C3800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+C4000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+C4800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+C5000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+C5800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+C6000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+C6800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+C7000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+C7800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+C8000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+C8800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+C9000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+C9800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+CA000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+CA800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+CB000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+CB800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+CC000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+CC800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+CD000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+CD800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+CE000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+CE800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+CF000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+CF800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+D0000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+D0800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+D1000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+D1800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+D2000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+D2800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+D3000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+D3800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+D4000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+D4800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+D5000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+D5800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+D6000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+D6800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+D7000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+D7800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+D8000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+D8800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+D9000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+D9800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+DA000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+DA800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+DB000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+DB800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+DC000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+DC800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+DD000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+DD800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+DE000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+DE800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+DF000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+DF800 */ +198,199,200,201,199,199,199,199,199,199,199,199,199,199,199,199, /* U+E0000 */ +199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199, /* U+E0800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+E1000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+E1800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+E2000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+E2800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+E3000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+E3800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+E4000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+E4800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+E5000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+E5800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+E6000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+E6800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+E7000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+E7800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+E8000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+E8800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+E9000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+E9800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+EA000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+EA800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+EB000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+EB800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+EC000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+EC800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+ED000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+ED800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+EE000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+EE800 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+EF000 */ + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, /* U+EF800 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+F0000 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+F0800 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+F1000 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+F1800 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+F2000 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+F2800 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+F3000 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+F3800 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+F4000 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+F4800 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+F5000 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+F5800 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+F6000 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+F6800 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+F7000 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+F7800 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+F8000 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+F8800 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+F9000 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+F9800 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+FA000 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+FA800 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+FB000 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+FB800 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+FC000 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+FC800 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+FD000 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+FD800 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+FE000 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+FE800 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+FF000 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,202, /* U+FF800 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+100000 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+100800 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+101000 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+101800 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+102000 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+102800 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+103000 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+103800 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+104000 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+104800 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+105000 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+105800 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+106000 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+106800 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+107000 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+107800 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+108000 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+108800 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+109000 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+109800 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+10A000 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+10A800 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+10B000 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+10B800 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+10C000 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+10C800 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+10D000 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+10D800 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+10E000 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+10E800 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123, /* U+10F000 */ +123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,202, /* U+10F800 */ }; -const pcre_uint16 _pcre_ucd_stage2[] = { /* 40448 bytes, block = 128 */ +const pcre_uint16 PRIV(ucd_stage2)[] = { /* 51968 bytes, block = 128 */ /* block 0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 2, 2, 3, 2, 2, 2, 4, 5, 2, 6, 2, 7, 2, 2, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 2, 2, 6, 6, 6, 2, - 2, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 4, 2, 5, 10, 11, - 10, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 4, 6, 5, 6, 0, + 3, 4, 4, 4, 5, 4, 4, 4, 6, 7, 4, 8, 4, 9, 4, 4, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 4, 4, 8, 8, 8, 4, + 4, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 11, 11, 11, 11, + 11, 11, 11, 13, 11, 11, 11, 11, 11, 11, 11, 6, 4, 7, 14, 15, + 14, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 17, 16, 16, 16, 16, + 16, 16, 16, 18, 16, 16, 16, 16, 16, 16, 16, 6, 8, 7, 8, 0, /* block 1 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 3, 3, 3, 13, 13, 10, 13, 14, 15, 6, 16, 13, 10, - 13, 6, 17, 17, 10, 18, 13, 2, 10, 17, 14, 19, 17, 17, 17, 2, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 6, 9, 9, 9, 9, 9, 9, 9, 14, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 6, 12, 12, 12, 12, 12, 12, 12, 20, + 3, 4, 5, 5, 5, 5, 19, 4, 14, 19, 20, 21, 8, 22, 19, 14, + 19, 8, 23, 23, 14, 24, 4, 4, 14, 23, 20, 25, 23, 23, 23, 4, + 11, 11, 11, 11, 11, 26, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 8, 11, 11, 11, 11, 11, 11, 11, 27, + 16, 16, 16, 16, 16, 28, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 8, 16, 16, 16, 16, 16, 16, 16, 29, /* block 2 */ - 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, - 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, - 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, - 23, 24, 21, 22, 21, 22, 21, 22, 14, 21, 22, 21, 22, 21, 22, 21, - 22, 21, 22, 21, 22, 21, 22, 21, 22, 14, 21, 22, 21, 22, 21, 22, - 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, - 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, - 21, 22, 21, 22, 21, 22, 21, 22, 25, 21, 22, 21, 22, 21, 22, 26, + 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, + 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, + 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, + 32, 33, 30, 31, 30, 31, 30, 31, 33, 30, 31, 30, 31, 30, 31, 30, + 31, 30, 31, 30, 31, 30, 31, 30, 31, 33, 30, 31, 30, 31, 30, 31, + 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, + 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, + 30, 31, 30, 31, 30, 31, 30, 31, 34, 30, 31, 30, 31, 30, 31, 35, /* block 3 */ - 27, 28, 21, 22, 21, 22, 29, 21, 22, 30, 30, 21, 22, 14, 31, 32, - 33, 21, 22, 30, 34, 35, 36, 37, 21, 22, 38, 14, 36, 39, 40, 41, - 21, 22, 21, 22, 21, 22, 42, 21, 22, 42, 14, 14, 21, 22, 42, 21, - 22, 43, 43, 21, 22, 21, 22, 44, 21, 22, 14, 45, 21, 22, 14, 46, - 45, 45, 45, 45, 47, 48, 49, 47, 48, 49, 47, 48, 49, 21, 22, 21, - 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 50, 21, 22, - 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, - 14, 47, 48, 49, 21, 22, 51, 52, 21, 22, 21, 22, 21, 22, 21, 22, + 36, 37, 30, 31, 30, 31, 38, 30, 31, 39, 39, 30, 31, 33, 40, 41, + 42, 30, 31, 39, 43, 44, 45, 46, 30, 31, 47, 33, 45, 48, 49, 50, + 30, 31, 30, 31, 30, 31, 51, 30, 31, 51, 33, 33, 30, 31, 51, 30, + 31, 52, 52, 30, 31, 30, 31, 53, 30, 31, 33, 20, 30, 31, 33, 54, + 20, 20, 20, 20, 55, 56, 57, 58, 59, 60, 61, 62, 63, 30, 31, 30, + 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 64, 30, 31, + 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, + 33, 65, 66, 67, 30, 31, 68, 69, 30, 31, 30, 31, 30, 31, 30, 31, /* block 4 */ - 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, - 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, - 53, 14, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, - 21, 22, 21, 22, 14, 14, 14, 14, 14, 14, 54, 21, 22, 55, 56, 14, - 14, 21, 22, 57, 58, 59, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, - 60, 61, 14, 62, 63, 14, 64, 64, 14, 65, 14, 66, 14, 14, 14, 14, - 64, 14, 14, 67, 14, 14, 14, 14, 68, 69, 14, 70, 14, 14, 14, 69, - 14, 71, 72, 14, 14, 73, 14, 14, 14, 14, 14, 14, 14, 74, 14, 14, + 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, + 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, + 70, 33, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, + 30, 31, 30, 31, 33, 33, 33, 33, 33, 33, 71, 30, 31, 72, 73, 74, + 74, 30, 31, 75, 76, 77, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, + 78, 79, 80, 81, 82, 33, 83, 83, 33, 84, 33, 85, 33, 33, 33, 33, + 83, 33, 33, 86, 33, 87, 88, 33, 89, 90, 33, 91, 33, 33, 33, 90, + 33, 92, 93, 33, 33, 94, 33, 33, 33, 33, 33, 33, 33, 95, 33, 33, /* block 5 */ - 75, 14, 14, 75, 14, 14, 14, 14, 75, 76, 77, 77, 78, 14, 14, 14, - 14, 14, 79, 14, 45, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 96, 33, 33, 96, 33, 33, 33, 33, 96, 97, 98, 98, 99, 33, 33, 33, + 33, 33,100, 33, 20, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, + 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, +101,101,101,101,101,101,101,101,101,102,102,102,102,102,102,102, +102,102, 14, 14, 14, 14,102,102,102,102,102,102,102,102,102,102, +102,102, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, +101,101,101,101,101, 14, 14, 14, 14, 14,103,103,102, 14,102, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 80, 80, 80, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 10, 10, 10, 10, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 80, 80, 80, 80, 80, 10, 10, 10, 10, 10, 10, 10, 81, 10, 81, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, /* block 6 */ - 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 83, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 84, 85, 84, 85, 81, 86, 84, 85, 87, 87, 88, 89, 89, 89, 2, 87, +104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104, +104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104, +104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104, +104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104, +104,104,104,104,104,105,104,104,104,104,104,104,104,104,104,104, +104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104, +104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104, +106,107,106,107,102,108,106,107,109,109,110,111,111,111, 4,109, /* block 7 */ - 87, 87, 87, 87, 86, 10, 90, 2, 91, 91, 91, 87, 92, 87, 93, 93, - 94, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, - 95, 95, 87, 95, 95, 95, 95, 95, 95, 95, 95, 95, 96, 97, 97, 97, - 94, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, - 98, 98, 99, 98, 98, 98, 98, 98, 98, 98, 98, 98,100,101,101,102, -103,104,105,105,105,106,107,108, 84, 85, 84, 85, 84, 85, 84, 85, - 84, 85,109,110,109,110,109,110,109,110,109,110,109,110,109,110, -111,112,113, 94,114,115,116, 84, 85,117, 84, 85, 94,118,118,118, +109,109,109,109,108, 14,112, 4,113,113,113,109,114,109,115,115, +116,117,118,117,117,119,117,117,120,121,122,117,123,117,117,117, +124,125,109,126,117,117,127,117,117,128,117,117,129,130,130,130, +116,131,132,131,131,133,131,131,134,135,136,131,137,131,131,131, +138,139,140,141,131,131,142,131,131,143,131,131,144,145,145,146, +147,148,149,149,149,150,151,152,106,107,106,107,106,107,106,107, +106,107,153,154,153,154,153,154,153,154,153,154,153,154,153,154, +155,156,157,116,158,159,160,106,107,161,106,107,116,162,162,162, /* block 8 */ -119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119, -120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121, -121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121, -122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122, -123,124,123,124,123,124,123,124,123,124,123,124,123,124,123,124, -123,124,123,124,123,124,123,124,123,124,123,124,123,124,123,124, +163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163, +164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164, +164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164, +165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165, +165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165, +166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166, +167,168,167,168,167,168,167,168,167,168,167,168,167,168,167,168, +167,168,167,168,167,168,167,168,167,168,167,168,167,168,167,168, /* block 9 */ -123,124,125,126,126,126,126,126,127,127,123,124,123,124,123,124, -123,124,123,124,123,124,123,124,123,124,123,124,123,124,123,124, -123,124,123,124,123,124,123,124,123,124,123,124,123,124,123,124, -123,124,123,124,123,124,123,124,123,124,123,124,123,124,123,124, -128,123,124,123,124,123,124,123,124,123,124,123,124,123,124,129, -123,124,123,124,123,124,123,124,123,124,123,124,123,124,123,124, -123,124,123,124,123,124,123,124,123,124,123,124,123,124,123,124, -123,124,123,124,123,124,123,124,123,124,123,124,123,124,123,124, +167,168,169,170,170,104,104,170,171,171,167,168,167,168,167,168, +167,168,167,168,167,168,167,168,167,168,167,168,167,168,167,168, +167,168,167,168,167,168,167,168,167,168,167,168,167,168,167,168, +167,168,167,168,167,168,167,168,167,168,167,168,167,168,167,168, +172,167,168,167,168,167,168,167,168,167,168,167,168,167,168,173, +167,168,167,168,167,168,167,168,167,168,167,168,167,168,167,168, +167,168,167,168,167,168,167,168,167,168,167,168,167,168,167,168, +167,168,167,168,167,168,167,168,167,168,167,168,167,168,167,168, /* block 10 */ -123,124,123,124,123,124,123,124,123,124,123,124,123,124,123,124, -123,124,123,124,123,124,123,124,123,124,123,124,123,124,123,124, -123,124,123,124, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130, -130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130, -130,130,130,130,130,130,130, 87, 87,131,132,132,132,132,132,132, - 87,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133, -133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133, +167,168,167,168,167,168,167,168,167,168,167,168,167,168,167,168, +167,168,167,168,167,168,167,168,167,168,167,168,167,168,167,168, +167,168,167,168,167,168,167,168,109,109,109,109,109,109,109,109, +109,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174, +174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174, +174,174,174,174,174,174,174,109,109,175,176,176,176,176,176,176, +109,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177, +177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177, /* block 11 */ -133,133,133,133,133,133,133,134, 87, 2,135, 87, 87, 87, 87, 87, - 87,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136, -136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136, -136,136,136,136,136,136,136,136,136,136,136,136,136,136,137,136, -138,136,136,138,136,136,138,136, 87, 87, 87, 87, 87, 87, 87, 87, -139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139, -139,139,139,139,139,139,139,139,139,139,139, 87, 87, 87, 87, 87, -139,139,139,138,138, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +177,177,177,177,177,177,177,178,109, 4,179,109,109,109,109,180, +109,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181, +181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181, +181,181,181,181,181,181,181,181,181,181,181,181,181,181,182,181, +183,181,181,183,181,181,183,181,109,109,109,109,109,109,109,109, +184,184,184,184,184,184,184,184,184,184,184,184,184,184,184,184, +184,184,184,184,184,184,184,184,184,184,184,109,109,109,109,109, +184,184,184,183,183,109,109,109,109,109,109,109,109,109,109,109, /* block 12 */ - 16, 16, 16, 16, 87, 87,140,140,140,141,141,142, 2,141,143,143, -144,144,144,144,144,144,144,144,144,144,144, 2, 87, 87,141, 2, - 87,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, - 81,145,145,145,145,145,145,145,145,145,145, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82,144,144,144,144,144,144,144,144,144, 87, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,141,141,141,141,145,145, - 82,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +185,185,185,185,185,109,186,186,186,187,187,188, 4,187,189,189, +190,190,190,190,190,190,190,190,190,190,190, 4,185,109,187, 4, +191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, +191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, +102,191,191,191,191,191,191,191,191,191,191,104,104,104,104,104, +104,104,104,104,104,104,190,190,190,190,190,190,190,190,190,190, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,187,187,187,187,191,191, +104,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, /* block 13 */ -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,141,145,144,144,144,144,144,144,144, 16,146,144, -144,144,144,144,144,147,147,144,144,143,144,144,144,144,145,145, -148,148,148,148,148,148,148,148,148,148,145,145,145,143,143,145, +191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, +191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, +191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, +191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, +191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, +191,191,191,191,187,191,190,190,190,190,190,190,190, 22,189,190, +190,190,190,190,190,192,192,190,190,189,190,190,190,190,191,191, +193,193,193,193,193,193,193,193,193,193,191,191,191,189,189,191, /* block 14 */ -149,149,149,149,149,149,149,149,149,149,149,149,149,149, 87,150, -151,152,151,151,151,151,151,151,151,151,151,151,151,151,151,151, -151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151, -152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152, -152,152,152,152,152,152,152,152,152,152,152, 87, 87,151,151,151, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +194,194,194,194,194,194,194,194,194,194,194,194,194,194,109,195, +196,197,196,196,196,196,196,196,196,196,196,196,196,196,196,196, +196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196, +197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197, +197,197,197,197,197,197,197,197,197,197,197,109,109,196,196,196, +191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, +191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, +191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, /* block 15 */ -153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153, -153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153, -153,153,153,153,153,153,154,154,154,154,154,154,154,154,154,154, -154,153, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, -155,155,155,155,155,155,155,155,155,155,156,156,156,156,156,156, -156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156, -156,156,156,156,156,156,156,156,156,156,156,157,157,157,157,157, -157,157,157,157,158,158,159,160,160,160,158, 87, 87, 87, 87, 87, +198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198, +198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198, +198,198,198,198,198,198,199,199,199,199,199,199,199,199,199,199, +199,198,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +200,200,200,200,200,200,200,200,200,200,201,201,201,201,201,201, +201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201, +201,201,201,201,201,201,201,201,201,201,201,202,202,202,202,202, +202,202,202,202,203,203,204,205,205,205,203,109,109,109,109,109, /* block 16 */ - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206, +206,206,206,206,206,206,207,207,207,207,208,207,207,207,207,207, +207,207,207,207,208,207,207,207,208,207,207,207,207,207,109,109, +209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,109, +210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210, +210,210,210,210,210,210,210,210,210,211,211,211,109,109,212,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, /* block 17 */ - 87,161,161,162,163,163,163,163,163,163,163,163,163,163,163,163, -163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163, -163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163, -163,163,163,163,163,163,163,163,163,163, 87, 87,161,163,162,162, -162,161,161,161,161,161,161,161,161,162,162,162,162,161, 87, 87, -163, 82, 82,161,161, 87, 87, 87,163,163,163,163,163,163,163,163, -163,163,161,161, 2, 2,164,164,164,164,164,164,164,164,164,164, - 2,165,163, 87, 87, 87, 87, 87, 87, 87, 87,163,163,163,163,163, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +191,109,191,191,191,191,191,191,191,191,191,191,191,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,190,190,190,190,190,190,190,190,190,190,190,190, +190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,109, /* block 18 */ - 87,166,167,167, 87,168,168,168,168,168,168,168,168, 87, 87,168, -168, 87, 87,168,168,168,168,168,168,168,168,168,168,168,168,168, -168,168,168,168,168,168,168,168,168, 87,168,168,168,168,168,168, -168, 87,168, 87, 87, 87,168,168,168,168, 87, 87,166,168,167,167, -167,166,166,166,166, 87, 87,167,167, 87, 87,167,167,166,168, 87, - 87, 87, 87, 87, 87, 87, 87,167, 87, 87, 87, 87,168,168, 87,168, -168,168,166,166, 87, 87,169,169,169,169,169,169,169,169,169,169, -168,168,170,170,171,171,171,171,171,171,172, 87, 87, 87, 87, 87, +213,213,213,214,215,215,215,215,215,215,215,215,215,215,215,215, +215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215, +215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215, +215,215,215,215,215,215,215,215,215,215,213,214,213,215,214,214, +214,213,213,213,213,213,213,213,213,214,214,214,214,213,214,214, +215,104,104,213,213,213,213,213,215,215,215,215,215,215,215,215, +215,215,213,213, 4, 4,216,216,216,216,216,216,216,216,216,216, +217,218,215,215,215,215,215,215,109,215,215,215,215,215,215,215, /* block 19 */ - 87,173,173,174, 87,175,175,175,175,175,175, 87, 87, 87, 87,175, -175, 87, 87,175,175,175,175,175,175,175,175,175,175,175,175,175, -175,175,175,175,175,175,175,175,175, 87,175,175,175,175,175,175, -175, 87,175,175, 87,175,175, 87,175,175, 87, 87,173, 87,174,174, -174,173,173, 87, 87, 87, 87,173,173, 87, 87,173,173,173, 87, 87, - 87,173, 87, 87, 87, 87, 87, 87, 87,175,175,175,175, 87,175, 87, - 87, 87, 87, 87, 87, 87,176,176,176,176,176,176,176,176,176,176, -173,173,175,175,175,173, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +109,219,220,220,109,221,221,221,221,221,221,221,221,109,109,221, +221,109,109,221,221,221,221,221,221,221,221,221,221,221,221,221, +221,221,221,221,221,221,221,221,221,109,221,221,221,221,221,221, +221,109,221,109,109,109,221,221,221,221,109,109,219,221,222,220, +220,219,219,219,219,109,109,220,220,109,109,220,220,219,221,109, +109,109,109,109,109,109,109,222,109,109,109,109,221,221,109,221, +221,221,219,219,109,109,223,223,223,223,223,223,223,223,223,223, +221,221,224,224,225,225,225,225,225,225,226,224,109,109,109,109, /* block 20 */ - 87,177,177,178, 87,179,179,179,179,179,179,179,179,179, 87,179, -179,179, 87,179,179,179,179,179,179,179,179,179,179,179,179,179, -179,179,179,179,179,179,179,179,179, 87,179,179,179,179,179,179, -179, 87,179,179, 87,179,179,179,179,179, 87, 87,177,179,178,178, -178,177,177,177,177,177, 87,177,177,178, 87,178,178,177, 87, 87, -179, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, -179,179,177,177, 87, 87,180,180,180,180,180,180,180,180,180,180, - 87,181, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +109,227,227,228,109,229,229,229,229,229,229,109,109,109,109,229, +229,109,109,229,229,229,229,229,229,229,229,229,229,229,229,229, +229,229,229,229,229,229,229,229,229,109,229,229,229,229,229,229, +229,109,229,229,109,229,229,109,229,229,109,109,227,109,228,228, +228,227,227,109,109,109,109,227,227,109,109,227,227,227,109,109, +109,227,109,109,109,109,109,109,109,229,229,229,229,109,229,109, +109,109,109,109,109,109,230,230,230,230,230,230,230,230,230,230, +227,227,229,229,229,227,109,109,109,109,109,109,109,109,109,109, /* block 21 */ - 87,182,183,183, 87,184,184,184,184,184,184,184,184, 87, 87,184, -184, 87, 87,184,184,184,184,184,184,184,184,184,184,184,184,184, -184,184,184,184,184,184,184,184,184, 87,184,184,184,184,184,184, -184, 87,184,184, 87,184,184,184,184,184, 87, 87,182,184,183,182, -183,182,182,182,182, 87, 87,183,183, 87, 87,183,183,182, 87, 87, - 87, 87, 87, 87, 87, 87,182,183, 87, 87, 87, 87,184,184, 87,184, -184,184,182,182, 87, 87,185,185,185,185,185,185,185,185,185,185, -186,184, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +109,231,231,232,109,233,233,233,233,233,233,233,233,233,109,233, +233,233,109,233,233,233,233,233,233,233,233,233,233,233,233,233, +233,233,233,233,233,233,233,233,233,109,233,233,233,233,233,233, +233,109,233,233,109,233,233,233,233,233,109,109,231,233,232,232, +232,231,231,231,231,231,109,231,231,232,109,232,232,231,109,109, +233,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +233,233,231,231,109,109,234,234,234,234,234,234,234,234,234,234, +235,236,109,109,109,109,109,109,109,109,109,109,109,109,109,109, /* block 22 */ - 87, 87,187,188, 87,188,188,188,188,188,188, 87, 87, 87,188,188, -188, 87,188,188,188,188, 87, 87, 87,188,188, 87,188, 87,188,188, - 87, 87, 87,188,188, 87, 87, 87,188,188,188, 87, 87, 87,188,188, -188,188,188,188,188,188,188,188,188,188, 87, 87, 87, 87,189,189, -187,189,189, 87, 87, 87,189,189,189, 87,189,189,189,187, 87, 87, -188, 87, 87, 87, 87, 87, 87,189, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87,190,190,190,190,190,190,190,190,190,190, -191,191,191,192,192,192,192,192,192,193,192, 87, 87, 87, 87, 87, +109,237,238,238,109,239,239,239,239,239,239,239,239,109,109,239, +239,109,109,239,239,239,239,239,239,239,239,239,239,239,239,239, +239,239,239,239,239,239,239,239,239,109,239,239,239,239,239,239, +239,109,239,239,109,239,239,239,239,239,109,109,237,239,240,237, +238,237,237,237,237,109,109,238,238,109,109,238,238,237,109,109, +109,109,109,109,109,109,237,240,109,109,109,109,239,239,109,239, +239,239,237,237,109,109,241,241,241,241,241,241,241,241,241,241, +242,239,243,243,243,243,243,243,109,109,109,109,109,109,109,109, /* block 23 */ - 87,194,194,194, 87,195,195,195,195,195,195,195,195, 87,195,195, -195, 87,195,195,195,195,195,195,195,195,195,195,195,195,195,195, -195,195,195,195,195,195,195,195,195, 87,195,195,195,195,195,195, -195,195,195,195, 87,195,195,195,195,195, 87, 87, 87,195,196,196, -196,194,194,194,194, 87,196,196,196, 87,196,196,196,196, 87, 87, - 87, 87, 87, 87, 87,196,196, 87,195,195, 87, 87, 87, 87, 87, 87, -195,195,196,196, 87, 87,197,197,197,197,197,197,197,197,197,197, - 87, 87, 87, 87, 87, 87, 87, 87,198,198,198,198,198,198,198,199, +109,109,244,245,109,245,245,245,245,245,245,109,109,109,245,245, +245,109,245,245,245,245,109,109,109,245,245,109,245,109,245,245, +109,109,109,245,245,109,109,109,245,245,245,109,109,109,245,245, +245,245,245,245,245,245,245,245,245,245,109,109,109,109,246,247, +244,247,247,109,109,109,247,247,247,109,247,247,247,244,109,109, +245,109,109,109,109,109,109,246,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,248,248,248,248,248,248,248,248,248,248, +249,249,249,250,250,250,250,250,250,251,250,109,109,109,109,109, /* block 24 */ - 87, 87,200,200, 87,201,201,201,201,201,201,201,201, 87,201,201, -201, 87,201,201,201,201,201,201,201,201,201,201,201,201,201,201, -201,201,201,201,201,201,201,201,201, 87,201,201,201,201,201,201, -201,201,201,201, 87,201,201,201,201,201, 87, 87,202,201,200,202, -200,200,200,200,200, 87,202,200,200, 87,200,200,202,202, 87, 87, - 87, 87, 87, 87, 87,200,200, 87, 87, 87, 87, 87, 87, 87,201, 87, -201,201,202,202, 87, 87,203,203,203,203,203,203,203,203,203,203, - 87, 13, 13, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +109,252,252,252,109,253,253,253,253,253,253,253,253,109,253,253, +253,109,253,253,253,253,253,253,253,253,253,253,253,253,253,253, +253,253,253,253,253,253,253,253,253,109,253,253,253,253,253,253, +253,253,253,253,109,253,253,253,253,253,109,109,109,253,254,254, +254,252,252,252,252,109,254,254,254,109,254,254,254,254,109,109, +109,109,109,109,109,254,254,109,253,253,109,109,109,109,109,109, +253,253,254,254,109,109,255,255,255,255,255,255,255,255,255,255, +109,109,109,109,109,109,109,109,256,256,256,256,256,256,256,257, /* block 25 */ - 87, 87,204,204, 87,205,205,205,205,205,205,205,205, 87,205,205, -205, 87,205,205,205,205,205,205,205,205,205,205,205,205,205,205, -205,205,205,205,205,205,205,205,205, 87,205,205,205,205,205,205, -205,205,205,205,205,205,205,205,205,205, 87, 87, 87,205,204,204, -204,206,206,206,206, 87,204,204,204, 87,204,204,204,206, 87, 87, - 87, 87, 87, 87, 87, 87, 87,204, 87, 87, 87, 87, 87, 87, 87, 87, -205,205,206,206, 87, 87,207,207,207,207,207,207,207,207,207,207, -208,208,208,208,208,208, 87, 87, 87,209,205,205,205,205,205,205, +109,109,258,258,109,259,259,259,259,259,259,259,259,109,259,259, +259,109,259,259,259,259,259,259,259,259,259,259,259,259,259,259, +259,259,259,259,259,259,259,259,259,109,259,259,259,259,259,259, +259,259,259,259,109,259,259,259,259,259,109,109,260,259,258,260, +258,258,261,258,258,109,260,258,258,109,258,258,260,260,109,109, +109,109,109,109,109,261,261,109,109,109,109,109,109,109,259,109, +259,259,260,260,109,109,262,262,262,262,262,262,262,262,262,262, +109,259,259,109,109,109,109,109,109,109,109,109,109,109,109,109, /* block 26 */ - 87, 87,210,210, 87,211,211,211,211,211,211,211,211,211,211,211, -211,211,211,211,211,211,211, 87, 87, 87,211,211,211,211,211,211, -211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211, -211,211, 87,211,211,211,211,211,211,211,211,211, 87,211, 87, 87, -211,211,211,211,211,211,211, 87, 87, 87,212, 87, 87, 87, 87,210, -210,210,212,212,212, 87,212, 87,210,210,210,210,210,210,210,210, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87,210,210,213, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +109,109,263,263,109,264,264,264,264,264,264,264,264,109,264,264, +264,109,264,264,264,264,264,264,264,264,264,264,264,264,264,264, +264,264,264,264,264,264,264,264,264,264,264,264,264,264,264,264, +264,264,264,264,264,264,264,264,264,264,264,109,109,264,265,263, +263,266,266,266,266,109,263,263,263,109,263,263,263,266,264,109, +109,109,109,109,109,109,109,265,109,109,109,109,109,109,109,109, +264,264,266,266,109,109,267,267,267,267,267,267,267,267,267,267, +268,268,268,268,268,268,109,109,109,269,264,264,264,264,264,264, /* block 27 */ - 87,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214, -214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214, -214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214, -214,215,214,214,215,215,215,215,215,215,215, 87, 87, 87, 87, 3, -214,214,214,214,214,214,216,215,215,215,215,215,215,215,215,217, -218,218,218,218,218,218,218,218,218,218,217,217, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +109,109,270,270,109,271,271,271,271,271,271,271,271,271,271,271, +271,271,271,271,271,271,271,109,109,109,271,271,271,271,271,271, +271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271, +271,271,109,271,271,271,271,271,271,271,271,271,109,271,109,109, +271,271,271,271,271,271,271,109,109,109,272,109,109,109,109,273, +270,270,272,272,272,109,272,109,270,270,270,270,270,270,270,273, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,270,270,274,109,109,109,109,109,109,109,109,109,109,109, /* block 28 */ - 87,219,219, 87,219, 87, 87,219,219, 87,219, 87, 87,219, 87, 87, - 87, 87, 87, 87,219,219,219,219, 87,219,219,219,219,219,219,219, - 87,219,219,219, 87,219, 87,219, 87, 87,219,219, 87,219,219,219, -219,220,219,219,220,220,220,220,220,220, 87,220,220,219, 87, 87, -219,219,219,219,219, 87,221, 87,220,220,220,220,220,220, 87, 87, -222,222,222,222,222,222,222,222,222,222, 87, 87,219,219, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +109,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275, +275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275, +275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275, +275,276,275,277,276,276,276,276,276,276,276,109,109,109,109, 5, +275,275,275,275,275,275,278,276,276,276,276,276,276,276,276,279, +280,280,280,280,280,280,280,280,280,280,279,279,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, /* block 29 */ -223,224,224,224,225,225,225,225,225,225,225,225,225,225,225,225, -225,225,225,224,224,224,224,224,226,226,224,224,224,224,224,224, -227,227,227,227,227,227,227,227,227,227,228,228,228,228,228,228, -228,228,228,228,224,226,224,226,224,226,229,230,229,230,231,231, -223,223,223,223,223,223,223,223, 87,223,223,223,223,223,223,223, -223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223, -223,223,223,223,223,223,223,223,223,223,223,223,223, 87, 87, 87, - 87,226,226,226,226,226,226,226,226,226,226,226,226,226,226,231, +109,281,281,109,281,109,109,281,281,109,281,109,109,281,109,109, +109,109,109,109,281,281,281,281,109,281,281,281,281,281,281,281, +109,281,281,281,109,281,109,281,109,109,281,281,109,281,281,281, +281,282,281,283,282,282,282,282,282,282,109,282,282,281,109,109, +281,281,281,281,281,109,284,109,282,282,282,282,282,282,109,109, +285,285,285,285,285,285,285,285,285,285,109,109,281,281,281,281, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, /* block 30 */ -226,226,226,226,226,225,226,226,223,223,223,223, 87, 87, 87, 87, -226,226,226,226,226,226,226,226, 87,226,226,226,226,226,226,226, -226,226,226,226,226,226,226,226,226,226,226,226,226,226,226,226, -226,226,226,226,226,226,226,226,226,226,226,226,226, 87,224,224, -224,224,224,224,224,224,226,224,224,224,224,224,224, 87,224,224, -225,225,225,225,225, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +286,287,287,287,288,288,288,288,288,288,288,288,288,288,288,288, +288,288,288,287,288,287,287,287,289,289,287,287,287,287,287,287, +290,290,290,290,290,290,290,290,290,290,291,291,291,291,291,291, +291,291,291,291,287,289,287,289,287,289,292,293,292,293,294,294, +286,286,286,286,286,286,286,286,109,286,286,286,286,286,286,286, +286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286, +286,286,286,286,286,286,286,286,286,286,286,286,286,109,109,109, +109,289,289,289,289,289,289,289,289,289,289,289,289,289,289,294, /* block 31 */ -232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232, -232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232, -232,232,232,232,232,232,232,232,232,232,232,233,233,234,234,234, -234,233,234,234,234,234,234,234,233,234,234,233,233,234,234,232, -235,235,235,235,235,235,235,235,235,235,236,236,236,236,236,236, -232,232,232,232,232,232,233,233,234,234,232,232,232,232,234,234, -234,232,233,233,233,232,232,233,233,233,233,233,233,233,232,232, -232,234,234,234,234,232,232,232,232,232,232,232,232,232,232,232, +289,289,289,289,289,288,289,289,286,286,286,286,286,289,289,289, +289,289,289,289,289,289,289,289,109,289,289,289,289,289,289,289, +289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289, +289,289,289,289,289,289,289,289,289,289,289,289,289,109,287,287, +287,287,287,287,287,287,289,287,287,287,287,287,287,109,287,287, +288,288,288,288,288, 19, 19, 19, 19,288,288,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, /* block 32 */ -232,232,234,233,233,234,234,233,233,233,233,233,233,234,232,233, -235,235,235,235,235,235,235,235,235,235, 87, 87, 87, 87,237,237, -238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238, -238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238, -238,238,238,238,238,238, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, -239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239, -239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239, -239,239,239,239,239,239,239,239,239,239,239, 2,240, 87, 87, 87, +295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295, +295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295, +295,295,295,295,295,295,295,295,295,295,295,296,296,297,297,297, +297,298,297,297,297,297,297,297,296,297,297,298,298,297,297,295, +299,299,299,299,299,299,299,299,299,299,300,300,300,300,300,300, +295,295,295,295,295,295,298,298,297,297,295,295,295,295,297,297, +297,295,296,296,296,295,295,296,296,296,296,296,296,296,295,295, +295,297,297,297,297,295,295,295,295,295,295,295,295,295,295,295, /* block 33 */ -241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, -241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, -241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, -241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, -241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, -241,241,241,241,241,241,241,241,241,241, 87, 87, 87, 87, 87,241, -241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, -241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, +295,295,297,296,298,297,297,296,296,296,296,296,296,297,295,296, +299,299,299,299,299,299,299,299,299,299,296,296,296,297,301,301, +302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302, +302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302, +302,302,302,302,302,302,109,302,109,109,109,109,109,302,109,109, +303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303, +303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303, +303,303,303,303,303,303,303,303,303,303,303, 4,304,303,303,303, /* block 34 */ -241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, -241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, -241,241,241, 87, 87, 87, 87, 87,241,241,241,241,241,241,241,241, -241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, -241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, -241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, -241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, -241,241,241,241,241,241,241,241,241,241, 87, 87, 87, 87, 87, 87, +305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305, +305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305, +305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305, +305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305, +305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305, +305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305, +306,306,306,306,306,306,306,306,306,306,306,306,306,306,306,306, +306,306,306,306,306,306,306,306,306,306,306,306,306,306,306,306, /* block 35 */ -242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242, -242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242, -242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242, -242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242, -242,242,242,242,242,242,242,242,242, 87,242,242,242,242, 87, 87, -242,242,242,242,242,242,242, 87,242, 87,242,242,242,242, 87, 87, -242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242, -242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242, +306,306,306,306,306,306,306,306,306,306,306,306,306,306,306,306, +306,306,306,306,306,306,306,306,306,306,306,306,306,306,306,306, +306,306,306,306,306,306,306,306,307,307,307,307,307,307,307,307, +307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307, +307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307, +307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307, +307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307, +307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307, /* block 36 */ -242,242,242,242,242,242,242,242,242, 87,242,242,242,242, 87, 87, -242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242, -242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242, -242, 87,242,242,242,242, 87, 87,242,242,242,242,242,242,242, 87, -242, 87,242,242,242,242, 87, 87,242,242,242,242,242,242,242,242, -242,242,242,242,242,242,242, 87,242,242,242,242,242,242,242,242, -242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242, -242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242, +308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308, +308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308, +308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308, +308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308, +308,308,308,308,308,308,308,308,308,109,308,308,308,308,109,109, +308,308,308,308,308,308,308,109,308,109,308,308,308,308,109,109, +308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308, +308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308, /* block 37 */ -242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242, -242, 87,242,242,242,242, 87, 87,242,242,242,242,242,242,242,242, -242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242, -242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242, -242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242, -242,242,242,242,242,242,242,242,242,242,242, 87, 87, 87, 87,243, -244,245,245,245,245,245,245,245,245,246,246,246,246,246,246,246, -246,246,246,246,246,246,246,246,246,246,246,246,246, 87, 87, 87, +308,308,308,308,308,308,308,308,308,109,308,308,308,308,109,109, +308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308, +308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308, +308,109,308,308,308,308,109,109,308,308,308,308,308,308,308,109, +308,109,308,308,308,308,109,109,308,308,308,308,308,308,308,308, +308,308,308,308,308,308,308,109,308,308,308,308,308,308,308,308, +308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308, +308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308, /* block 38 */ -242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242, -244,244,244,244,244,244,244,244,244,244, 87, 87, 87, 87, 87, 87, -247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247, -247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247, -247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247, -247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247, -247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247, -247,247,247,247,247, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308, +308,109,308,308,308,308,109,109,308,308,308,308,308,308,308,308, +308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308, +308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308, +308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308, +308,308,308,308,308,308,308,308,308,308,308,109,109,309,309,309, +310,310,310,310,310,310,310,310,310,311,311,311,311,311,311,311, +311,311,311,311,311,311,311,311,311,311,311,311,311,109,109,109, /* block 39 */ - 87,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, -248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, -248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, -248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, -248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, -248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, -248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, -248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, +308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308, +312,312,312,312,312,312,312,312,312,312,109,109,109,109,109,109, +313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313, +313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313, +313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313, +313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313, +313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313, +313,313,313,313,313,109,109,109,109,109,109,109,109,109,109,109, /* block 40 */ -248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, -248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, -248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, -248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, -248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, -248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, -248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, -248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, +314,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315, +315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315, +315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315, +315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315, +315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315, +315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315, +315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315, +315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315, /* block 41 */ -248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, -248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, -248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, -248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, -248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, -248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, -248,248,248,248,248,248,248,248,248,248,248,248,248,249,249,248, -248,248,248,248,248,248,248, 87, 87, 87, 87, 87, 87, 87, 87, 87, +315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315, +315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315, +315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315, +315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315, +315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315, +315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315, +315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315, +315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315, /* block 42 */ -250,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251, -251,251,251,251,251,251,251,251,251,251,251,252,253, 87, 87, 87, -254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254, -254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254, -254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254, -254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254, -254,254,254,254,254,254,254,254,254,254,254, 2, 2, 2,255,255, -255, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315, +315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315, +315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315, +315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315, +315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315, +315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315, +315,315,315,315,315,315,315,315,315,315,315,315,315,316,316,315, +315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315, /* block 43 */ -256,256,256,256,256,256,256,256,256,256,256,256,256, 87,256,256, -256,256,257,257,257, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, -258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258, -258,258,259,259,259, 2, 2, 87, 87, 87, 87, 87, 87, 87, 87, 87, -260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260, -260,260,261,261, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, -262,262,262,262,262,262,262,262,262,262,262,262,262, 87,262,262, -262, 87,263,263, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +317,318,318,318,318,318,318,318,318,318,318,318,318,318,318,318, +318,318,318,318,318,318,318,318,318,318,318,319,320,109,109,109, +321,321,321,321,321,321,321,321,321,321,321,321,321,321,321,321, +321,321,321,321,321,321,321,321,321,321,321,321,321,321,321,321, +321,321,321,321,321,321,321,321,321,321,321,321,321,321,321,321, +321,321,321,321,321,321,321,321,321,321,321,321,321,321,321,321, +321,321,321,321,321,321,321,321,321,321,321, 4, 4, 4,322,322, +322,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, /* block 44 */ -264,264,264,264,264,264,264,264,264,264,264,264,264,264,264,264, -264,264,264,264,264,264,264,264,264,264,264,264,264,264,264,264, -264,264,264,264,264,264,264,264,264,264,264,264,264,264,264,264, -264,264,264,264,265,265,266,267,267,267,267,267,267,267,266,266, -266,266,266,266,266,266,267,266,266,267,267,267,267,267,267,267, -267,267,267,267,268,268,268,269,268,268,268,270,264,267, 87, 87, -271,271,271,271,271,271,271,271,271,271, 87, 87, 87, 87, 87, 87, -272,272,272,272,272,272,272,272,272,272, 87, 87, 87, 87, 87, 87, +323,323,323,323,323,323,323,323,323,323,323,323,323,109,323,323, +323,323,324,324,324,109,109,109,109,109,109,109,109,109,109,109, +325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325, +325,325,326,326,326, 4, 4,109,109,109,109,109,109,109,109,109, +327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327, +327,327,328,328,109,109,109,109,109,109,109,109,109,109,109,109, +329,329,329,329,329,329,329,329,329,329,329,329,329,109,329,329, +329,109,330,330,109,109,109,109,109,109,109,109,109,109,109,109, /* block 45 */ -273,273, 2, 2,273, 2,274,273,273,273,273,275,275,275,276, 87, -277,277,277,277,277,277,277,277,277,277, 87, 87, 87, 87, 87, 87, -278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278, -278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278, -278,278,278,279,278,278,278,278,278,278,278,278,278,278,278,278, -278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278, -278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278, -278,278,278,278,278,278,278,278, 87, 87, 87, 87, 87, 87, 87, 87, +331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331, +331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331, +331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331, +331,331,331,331,332,332,333,332,332,332,332,332,332,332,333,333, +333,333,333,333,333,333,332,333,333,332,332,332,332,332,332,332, +332,332,332,332,334,334,334,335,334,334,334,336,331,332,109,109, +337,337,337,337,337,337,337,337,337,337,109,109,109,109,109,109, +338,338,338,338,338,338,338,338,338,338,109,109,109,109,109,109, /* block 46 */ -278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278, -278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278, -278,278,278,278,278,278,278,278,278,275,278, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +339,339, 4, 4,339, 4,340,339,339,339,339,341,341,341,342,109, +343,343,343,343,343,343,343,343,343,343,109,109,109,109,109,109, +344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344, +344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344, +344,344,344,345,344,344,344,344,344,344,344,344,344,344,344,344, +344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344, +344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344, +344,344,344,344,344,344,344,344,109,109,109,109,109,109,109,109, /* block 47 */ -280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280, -280,280,280,280,280,280,280,280,280,280,280,280,280, 87, 87, 87, -281,281,281,282,282,282,282,281,281,282,282,282, 87, 87, 87, 87, -282,282,281,282,282,282,282,282,282,281,281,281, 87, 87, 87, 87, -283, 87, 87, 87,284,284,285,285,285,285,285,285,285,285,285,285, -286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286, -286,286,286,286,286,286,286,286,286,286,286,286,286,286, 87, 87, -286,286,286,286,286, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344, +344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344, +344,344,344,344,344,344,344,344,344,341,344,109,109,109,109,109, +315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315, +315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315, +315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315, +315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315, +315,315,315,315,315,315,109,109,109,109,109,109,109,109,109,109, /* block 48 */ -287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287, -287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287, -287,287,287,287,287,287,287,287,287,287, 87, 87, 87, 87, 87, 87, -288,288,288,288,288,288,288,288,288,288,288,288,288,288,288,288, -288,287,287,287,287,287,287,287,288,288, 87, 87, 87, 87, 87, 87, -289,289,289,289,289,289,289,289,289,289, 87, 87, 87, 87,290,290, -291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291, -291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291, +346,346,346,346,346,346,346,346,346,346,346,346,346,346,346,346, +346,346,346,346,346,346,346,346,346,346,346,346,346,109,109,109, +347,347,347,348,348,348,348,347,347,348,348,348,109,109,109,109, +348,348,347,348,348,348,348,348,348,347,347,347,109,109,109,109, +349,109,109,109,350,350,351,351,351,351,351,351,351,351,351,351, +352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352, +352,352,352,352,352,352,352,352,352,352,352,352,352,352,109,109, +352,352,352,352,352,109,109,109,109,109,109,109,109,109,109,109, /* block 49 */ -292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292, -292,292,292,292,292,292,292,293,293,294,294,294, 87, 87,295,295, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353, +353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353, +353,353,353,353,353,353,353,353,353,353,353,353,109,109,109,109, +354,354,354,354,354,355,355,355,354,354,355,354,354,354,354,354, +354,353,353,353,353,353,353,353,354,354,109,109,109,109,109,109, +356,356,356,356,356,356,356,356,356,356,357,109,109,109,358,358, +359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359, +359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359, /* block 50 */ -296,296,296,296,297,298,298,298,298,298,298,298,298,298,298,298, -298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298, -298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298, -298,298,298,298,296,297,296,296,296,296,296,297,296,297,297,297, -297,297,296,297,297,298,298,298,298,298,298,298, 87, 87, 87, 87, -299,299,299,299,299,299,299,299,299,299,300,300,300,300,300,300, -300,301,301,301,301,301,301,301,301,301,301,296,296,296,296,296, -296,296,296,296,301,301,301,301,301,301,301,301,301, 87, 87, 87, +360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360, +360,360,360,360,360,360,360,361,361,362,362,361,109,109,363,363, +364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364, +364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364, +364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364, +364,364,364,364,364,365,366,365,366,366,366,366,366,366,366,109, +366,367,366,367,367,366,366,366,366,366,366,366,366,365,365,365, +365,365,365,366,366,366,366,366,366,366,366,366,366,109,109,366, /* block 51 */ -302,302,303,304,304,304,304,304,304,304,304,304,304,304,304,304, -304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304, -304,303,302,302,302,302,303,303,302,302,303, 87, 87, 87,304,304, -305,305,305,305,305,305,305,305,305,305, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +368,368,368,368,368,368,368,368,368,368,109,109,109,109,109,109, +368,368,368,368,368,368,368,368,368,368,109,109,109,109,109,109, +369,369,369,369,369,369,369,370,369,369,369,369,369,369,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, /* block 52 */ -306,306,306,306,306,306,306,306,306,306,306,306,306,306,306,306, -306,306,306,306,306,306,306,306,306,306,306,306,306,306,306,306, -306,306,306,306,307,307,307,307,307,307,307,307,308,308,308,308, -308,308,308,308,307,307,308,308, 87, 87, 87,309,309,309,309,309, -310,310,310,310,310,310,310,310,310,310, 87, 87, 87,306,306,306, -311,311,311,311,311,311,311,311,311,311,312,312,312,312,312,312, -312,312,312,312,312,312,312,312,312,312,312,312,312,312,312,312, -312,312,312,312,312,312,312,312,313,313,313,313,313,313,314,314, +371,371,371,371,372,373,373,373,373,373,373,373,373,373,373,373, +373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373, +373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373, +373,373,373,373,371,372,371,371,371,371,371,372,371,372,372,372, +372,372,371,372,372,373,373,373,373,373,373,373,109,109,109,109, +374,374,374,374,374,374,374,374,374,374,375,375,375,375,375,375, +375,376,376,376,376,376,376,376,376,376,376,371,371,371,371,371, +371,371,371,371,376,376,376,376,376,376,376,376,376,109,109,109, /* block 53 */ - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 94, 94, 94, 94, 94,315, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 88, 88, 88, - 88, 88, 14, 14, 14, 14, 94, 94, 94, 94, 94, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14,316,317, 14, 14, 14,318, 14, 14, +377,377,378,379,379,379,379,379,379,379,379,379,379,379,379,379, +379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379, +379,378,377,377,377,377,378,378,377,377,378,377,378,378,379,379, +380,380,380,380,380,380,380,380,380,380,379,379,379,379,379,379, +381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381, +381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381, +381,381,381,381,381,381,382,383,382,382,383,383,383,382,383,382, +382,382,383,383,109,109,109,109,109,109,109,109,384,384,384,384, /* block 54 */ - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 88, - 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 82, 82, +385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385, +385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385, +385,385,385,385,386,386,386,386,386,386,386,386,387,387,387,387, +387,387,387,387,386,386,387,387,109,109,109,388,388,388,388,388, +389,389,389,389,389,389,389,389,389,389,109,109,109,385,385,385, +390,390,390,390,390,390,390,390,390,390,391,391,391,391,391,391, +391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,391, +391,391,391,391,391,391,391,391,392,392,392,392,392,392,393,393, /* block 55 */ - 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, - 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, - 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, - 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, - 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, - 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, - 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, - 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +394,394,394,394,394,394,394,394,109,109,109,109,109,109,109,109, +104,104,104, 4,104,104,104,104,104,104,104,104,104,104,104,104, +104,395,104,104,104,104,104,104,104,396,396,396,396,104,396,396, +396,396,395,395,104,396,396,109,109,109,109,109,109,109,109,109, /* block 56 */ - 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, - 21, 22, 21, 22, 21, 22, 14, 14, 14, 14, 14,319, 14, 14,320, 14, - 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, - 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, - 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, - 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, - 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, - 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, + 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, + 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, + 33, 33, 33, 33, 33, 33,116,116,116,116,116,397,101,101,101,101, +101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101, +101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101, +101,101,101,101,101,101,101,101,101,101,101,101,101,110,110,110, +110,110,101,101,101,101,110,110,110,110,110, 33, 33, 33, 33, 33, + 33, 33, 33, 33, 33, 33, 33, 33,398,399, 33, 33, 33,400, 33, 33, /* block 57 */ -321,321,321,321,321,321,321,321,322,322,322,322,322,322,322,322, -321,321,321,321,321,321, 87, 87,322,322,322,322,322,322, 87, 87, -321,321,321,321,321,321,321,321,322,322,322,322,322,322,322,322, -321,321,321,321,321,321,321,321,322,322,322,322,322,322,322,322, -321,321,321,321,321,321, 87, 87,322,322,322,322,322,322, 87, 87, - 94,321, 94,321, 94,321, 94,321, 87,322, 87,322, 87,322, 87,322, -321,321,321,321,321,321,321,321,322,322,322,322,322,322,322,322, -323,323,324,324,324,324,325,325,326,326,327,327,328,328, 87, 87, + 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, + 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,101,101,101,101,101, +101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101, +101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,110, +104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104, +104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104, +104,104,104,104,104,104,104,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,104,104,104,104, /* block 58 */ -321,321,321,321,321,321,321,321,329,329,329,329,329,329,329,329, -321,321,321,321,321,321,321,321,329,329,329,329,329,329,329,329, -321,321,321,321,321,321,321,321,329,329,329,329,329,329,329,329, -321,321, 94,330, 94, 87, 94, 94,322,322,331,331,332, 86,333, 86, - 86, 86, 94,330, 94, 87, 94, 94,334,334,334,334,332, 86, 86, 86, -321,321, 94, 94, 87, 87, 94, 94,322,322,335,335, 87, 86, 86, 86, -321,321, 94, 94, 94,113, 94, 94,322,322,336,336,117, 86, 86, 86, - 87, 87, 94,330, 94, 87, 94, 94,337,337,338,338,332, 86, 86, 87, + 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, + 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, + 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, + 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, + 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, + 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, +401,402, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, + 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, /* block 59 */ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16,339,339, 16, 16, - 7, 7, 7, 7, 7, 7, 2, 2, 15, 19, 4, 15, 15, 19, 4, 15, - 2, 2, 2, 2, 2, 2, 2, 2,340,341, 16, 16, 16, 16, 16, 1, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 15, 19, 2, 2, 2, 2, 11, - 11, 2, 2, 2, 6, 4, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 6, 2, 11, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, - 16, 16, 16, 16, 16, 87, 87, 87, 87, 87, 16, 16, 16, 16, 16, 16, - 17, 14, 87, 87, 17, 17, 17, 17, 17, 17, 6, 6, 6, 4, 5, 14, + 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, + 30, 31, 30, 31, 30, 31, 33, 33, 33, 33, 33,403, 33, 33,404, 33, + 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, + 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, + 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, + 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, + 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, + 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, /* block 60 */ - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 6, 6, 6, 4, 5, 87, - 80, 80, 80, 80, 80, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82,342,342,342, -342, 82,342,342,342, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 82, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +405,405,405,405,405,405,405,405,406,406,406,406,406,406,406,406, +405,405,405,405,405,405,109,109,406,406,406,406,406,406,109,109, +405,405,405,405,405,405,405,405,406,406,406,406,406,406,406,406, +405,405,405,405,405,405,405,405,406,406,406,406,406,406,406,406, +405,405,405,405,405,405,109,109,406,406,406,406,406,406,109,109, +116,405,116,405,116,405,116,405,109,406,109,406,109,406,109,406, +405,405,405,405,405,405,405,405,406,406,406,406,406,406,406,406, +407,407,408,408,408,408,409,409,410,410,411,411,412,412,109,109, /* block 61 */ - 13, 13,343, 13, 13, 13, 13,343, 13, 13,344,343,343,343,344,344, -343,343,343,344, 13,343, 13, 13, 13,343,343,343,343,343, 13, 13, - 13, 13, 13, 13,343, 13,345, 13,343, 13,346,347,343,343, 13,344, -343,343,348,343,344,349,349,349,349,344, 13, 13,344,344,343,343, - 6, 6, 6, 6, 6,343,344,344,344,344, 13, 6, 13, 13,350, 13, - 87, 87, 87, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, -351,351,351,351,351,351,351,351,351,351,351,351,351,351,351,351, -352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352, +405,405,405,405,405,405,405,405,413,413,413,413,413,413,413,413, +405,405,405,405,405,405,405,405,413,413,413,413,413,413,413,413, +405,405,405,405,405,405,405,405,413,413,413,413,413,413,413,413, +405,405,116,414,116,109,116,116,406,406,415,415,416,108,417,108, +108,108,116,414,116,109,116,116,418,418,418,418,416,108,108,108, +405,405,116,116,109,109,116,116,406,406,419,419,109,108,108,108, +405,405,116,116,116,157,116,116,406,406,420,420,161,108,108,108, +109,109,116,414,116,109,116,116,421,421,422,422,416,108,108,109, /* block 62 */ -353,353,353, 21, 22,353,353,353,353, 87, 87, 87, 87, 87, 87, 87, - 6, 6, 6, 6, 6, 13, 13, 13, 13, 13, 6, 6, 13, 13, 13, 13, - 6, 13, 13, 6, 13, 13, 6, 13, 13, 13, 13, 13, 13, 13, 6, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 6, 6, - 13, 13, 6, 13, 6, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 22,423,423, 22, 22, + 9, 9, 9, 9, 9, 9, 4, 4, 21, 25, 6, 21, 21, 25, 6, 21, + 4, 4, 4, 4, 4, 4, 4, 4,424,425, 22, 22, 22, 22, 22, 3, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 21, 25, 4, 4, 4, 4, 15, + 15, 4, 4, 4, 8, 6, 7, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 8, 4, 15, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, + 22, 22, 22, 22, 22,426, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 23,101,109,109, 23, 23, 23, 23, 23, 23, 8, 8, 8, 6, 7,101, /* block 63 */ - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 8, 8, 8, 6, 7,109, +101,101,101,101,101,101,101,101,101,101,101,101,101,109,109,109, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +104,104,104,104,104,104,104,104,104,104,104,104,104,427,427,427, +427,104,427,427,427,104,104,104,104,104,104,104,104,104,104,104, +104,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, /* block 64 */ - 13, 13, 13, 13, 13, 13, 13, 13, 6, 6, 6, 6, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 6, 6, 13, 13, 13, 13, 13, 13, 13, 4, 5, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 6, 13, 13, 13, + 19, 19,428, 19, 19, 19, 19,428, 19, 19,429,428,428,428,429,429, +428,428,428,429, 19,428, 19, 19, 8,428,428,428,428,428, 19, 19, + 19, 19, 19, 19,428, 19,430, 19,428, 19,431,432,428,428, 19,429, +428,428,433,428,429,396,396,396,396,429, 19, 19,429,429,428,428, + 8, 8, 8, 8, 8,428,429,429,429,429, 19, 8, 19, 19,434, 19, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, +435,435,435,435,435,435,435,435,435,435,435,435,435,435,435,435, +436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436, /* block 65 */ - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 6, 6, 6, 6, - 6, 6, 13, 13, 13, 13, 13, 13, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +437,437,437, 30, 31,437,437,437,437, 23,109,109,109,109,109,109, + 8, 8, 8, 8, 8, 19, 19, 19, 19, 19, 8, 8, 19, 19, 19, 19, + 8, 19, 19, 8, 19, 19, 8, 19, 19, 19, 19, 19, 19, 19, 8, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 8, 8, + 19, 19, 8, 19, 8, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, /* block 66 */ - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, /* block 67 */ - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13,354,354,354,354,354,354,354,354,354,354, -354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354, -355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,355, -355,355,355,355,355,355,355,355,355,355, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 19, 19, 19, 19, 19, 19, 19, 19, 6, 7, 6, 7, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 8, 8, 19, 19, 19, 19, 19, 19, 19, 6, 7, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 8, 19, 19, 19, /* block 68 */ - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 8, 8, 8, 8, + 8, 8, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19,109,109,109,109,109,109,109,109,109,109,109,109, /* block 69 */ - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 6, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 6, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 6, 6, 6, 6, 6, 6, 6, 6, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, /* block 70 */ - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 6, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19,438,438,438,438,438,438,438,438,438,438, +438,438,438,438,438,438,438,438,438,438,438,438,438,438,438,438, +439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439, +439,439,439,439,439,439,439,439,439,439, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, /* block 71 */ - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 87, 87, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 87, 87, 87, - 13, 13, 13, 13, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, /* block 72 */ - 87, 13, 13, 13, 13, 87, 13, 13, 13, 13, 87, 87, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 87, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 87, 13, 87, 13, - 13, 13, 13, 87, 87, 87, 13, 87, 13, 13, 13, 13, 13, 13, 13, 87, - 87, 13, 13, 13, 13, 13, 13, 13, 4, 5, 4, 5, 4, 5, 4, 5, - 4, 5, 4, 5, 4, 5, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 8, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 8, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 8, 8, 8, 8, 8, 8, 8, 8, /* block 73 */ - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 13, 87, 87, 87, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 87, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 87, - 6, 6, 6, 6, 6, 4, 5, 6, 6, 6, 6, 87, 6, 87, 87, 87, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 8, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, /* block 74 */ -356,356,356,356,356,356,356,356,356,356,356,356,356,356,356,356, -356,356,356,356,356,356,356,356,356,356,356,356,356,356,356,356, -356,356,356,356,356,356,356,356,356,356,356,356,356,356,356,356, -356,356,356,356,356,356,356,356,356,356,356,356,356,356,356,356, -356,356,356,356,356,356,356,356,356,356,356,356,356,356,356,356, -356,356,356,356,356,356,356,356,356,356,356,356,356,356,356,356, -356,356,356,356,356,356,356,356,356,356,356,356,356,356,356,356, -356,356,356,356,356,356,356,356,356,356,356,356,356,356,356,356, +109, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 6, 7, 6, 7, 6, 7, 6, 7, + 6, 7, 6, 7, 6, 7, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, /* block 75 */ - 6, 6, 6, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, - 5, 4, 5, 4, 5, 4, 5, 4, 5, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 4, 5, 4, 5, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 4, 5, 6, 6, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 8, 8, 8, 8, 8, 6, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, /* block 76 */ - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 13, 13, 6, 6, 6, 6, 6, 6, 87, 87, 87, - 13, 13, 13, 13, 13, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440, +440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440, +440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440, +440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440, +440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440, +440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440, +440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440, +440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440, /* block 77 */ -357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357, -357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357, -357,357,357,357,357,357,357,357,357,357,357,357,357,357,357, 87, -358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,358, -358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,358, -358,358,358,358,358,358,358,358,358,358,358,358,358,358,358, 87, - 21, 22,359,360,361,362,363, 21, 22, 21, 22, 21, 22,364,365,366, - 87, 14, 21, 22, 14, 21, 22, 14, 14, 14, 14, 14, 14, 80, 87, 87, + 8, 8, 8, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, + 7, 6, 7, 6, 7, 6, 7, 6, 7, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 6, 7, 6, 7, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 6, 7, 8, 8, /* block 78 */ -109,110,109,110,109,110,109,110,109,110,109,110,109,110,109,110, -109,110,109,110,109,110,109,110,109,110,109,110,109,110,109,110, -109,110,109,110,109,110,109,110,109,110,109,110,109,110,109,110, -109,110,109,110,109,110,109,110,109,110,109,110,109,110,109,110, -109,110,109,110,109,110,109,110,109,110,109,110,109,110,109,110, -109,110,109,110,109,110,109,110,109,110,109,110,109,110,109,110, -109,110,109,110,367,368,368,368,368,368,368, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87,369,369,369,369,370,369,369, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 19, 19, 8, 8, 8, 8, 8, 8,109,109,109, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, /* block 79 */ -371,371,371,371,371,371,371,371,371,371,371,371,371,371,371,371, -371,371,371,371,371,371,371,371,371,371,371,371,371,371,371,371, -371,371,371,371,371,371, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, -372,372,372,372,372,372,372,372,372,372,372,372,372,372,372,372, -372,372,372,372,372,372,372,372,372,372,372,372,372,372,372,372, -372,372,372,372,372,372,372,372,372,372,372,372,372,372,372,372, -372,372,372,372,372,372, 87, 87, 87, 87, 87, 87, 87, 87, 87,373, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, /* block 80 */ -242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242, -242,242,242,242,242,242,242, 87, 87, 87, 87, 87, 87, 87, 87, 87, -242,242,242,242,242,242,242, 87,242,242,242,242,242,242,242, 87, -242,242,242,242,242,242,242, 87,242,242,242,242,242,242,242, 87, -242,242,242,242,242,242,242, 87,242,242,242,242,242,242,242, 87, -242,242,242,242,242,242,242, 87,242,242,242,242,242,242,242, 87, -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, +441,441,441,441,441,441,441,441,441,441,441,441,441,441,441,441, +441,441,441,441,441,441,441,441,441,441,441,441,441,441,441,441, +441,441,441,441,441,441,441,441,441,441,441,441,441,441,441,109, +442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442, +442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442, +442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,109, + 30, 31,443,444,445,446,447, 30, 31, 30, 31, 30, 31,448,449,450, +451, 33, 30, 31, 33, 30, 31, 33, 33, 33, 33, 33,101,101,452,452, /* block 81 */ - 2, 2, 15, 19, 15, 19, 2, 2, 2, 15, 19, 2, 15, 19, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 7, 2, 2, 7, 2, 15, 19, 2, 2, - 15, 19, 4, 5, 4, 5, 4, 5, 4, 5, 2, 2, 2, 2, 2, 81, - 2, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +153,154,153,154,153,154,153,154,153,154,153,154,153,154,153,154, +153,154,153,154,153,154,153,154,153,154,153,154,153,154,153,154, +153,154,153,154,153,154,153,154,153,154,153,154,153,154,153,154, +153,154,153,154,153,154,153,154,153,154,153,154,153,154,153,154, +153,154,153,154,153,154,153,154,153,154,153,154,153,154,153,154, +153,154,153,154,153,154,153,154,153,154,153,154,153,154,153,154, +153,154,153,154,453,454,454,454,454,454,454,153,154,153,154,455, +455,455,153,154,109,109,109,109,109,456,456,456,456,457,456,456, /* block 82 */ -374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374, -374,374,374,374,374,374,374,374,374,374, 87,374,374,374,374,374, -374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374, -374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374, -374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374, -374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374, -374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374, -374,374,374,374, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458, +458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458, +458,458,458,458,458,458,109,458,109,109,109,109,109,458,109,109, +459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459, +459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459, +459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459, +459,459,459,459,459,459,459,459,109,109,109,109,109,109,109,460, +461,109,109,109,109,109,109,109,109,109,109,109,109,109,109,462, /* block 83 */ -374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374, -374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374, -374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374, -374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374, -374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374, -374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374, -374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374, -374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374, +308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308, +308,308,308,308,308,308,308,109,109,109,109,109,109,109,109,109, +308,308,308,308,308,308,308,109,308,308,308,308,308,308,308,109, +308,308,308,308,308,308,308,109,308,308,308,308,308,308,308,109, +308,308,308,308,308,308,308,109,308,308,308,308,308,308,308,109, +308,308,308,308,308,308,308,109,308,308,308,308,308,308,308,109, +170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170, +170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170, /* block 84 */ -374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374, -374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374, -374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374, -374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374, -374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374, -374,374,374,374,374,374, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 87, 87, 87, 87, + 4, 4, 21, 25, 21, 25, 4, 4, 4, 21, 25, 4, 21, 25, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 9, 4, 4, 9, 4, 21, 25, 4, 4, + 21, 25, 6, 7, 6, 7, 6, 7, 6, 7, 4, 4, 4, 4, 4,102, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 9, 9,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, /* block 85 */ - 1, 2, 2, 2, 13,375,349,376, 4, 5, 4, 5, 4, 5, 4, 5, - 4, 5, 13, 13, 4, 5, 4, 5, 4, 5, 4, 5, 7, 4, 5, 5, - 13,376,376,376,376,376,376,376,376,376, 82, 82, 82, 82, 82, 82, - 7, 81, 81, 81, 81, 81, 13, 13,376,376,376,375,349, 2, 13, 13, - 87,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377, -377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377, -377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377, -377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377, +463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463, +463,463,463,463,463,463,463,463,463,463,109,463,463,463,463,463, +463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463, +463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463, +463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463, +463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463, +463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463, +463,463,463,463,109,109,109,109,109,109,109,109,109,109,109,109, /* block 86 */ -377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377, -377,377,377,377,377,377,377, 87, 87, 82, 82, 10, 10,378,378,377, - 7,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379, -379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379, -379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379, -379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379, -379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379, -379,379,379,379,379,379,379,379,379,379,379, 2, 81,380,380,379, +463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463, +463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463, +463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463, +463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463, +463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463, +463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463, +463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463, +463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463, /* block 87 */ - 87, 87, 87, 87, 87,381,381,381,381,381,381,381,381,381,381,381, -381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381, -381,381,381,381,381,381,381,381,381,381,381,381,381,381, 87, 87, - 87,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, -241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, -241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, -241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, -241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, +463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463, +463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463, +463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463, +463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463, +463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463, +463,463,463,463,463,463,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,109,109,109,109, /* block 88 */ -241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, 87, - 13, 13, 17, 17, 17, 17, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, -381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381, -381,381,381,381,381,381,381,381, 87, 87, 87, 87, 87, 87, 87, 87, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, -379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379, + 3, 4, 4, 4, 19,464,396,465, 6, 7, 6, 7, 6, 7, 6, 7, + 6, 7, 19, 19, 6, 7, 6, 7, 6, 7, 6, 7, 9, 6, 7, 7, + 19,465,465,465,465,465,465,465,465,465,104,104,104,104,466,466, + 9,102,102,102,102,102, 19, 19,465,465,465,464,396, 4, 19, 19, +109,467,467,467,467,467,467,467,467,467,467,467,467,467,467,467, +467,467,467,467,467,467,467,467,467,467,467,467,467,467,467,467, +467,467,467,467,467,467,467,467,467,467,467,467,467,467,467,467, +467,467,467,467,467,467,467,467,467,467,467,467,467,467,467,467, /* block 89 */ -382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382, -382,382,382,382,382,382,382,382,382,382,382,382,382,382,382, 87, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 13, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, -382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382, -382,382,382,382,382,382,382,382,382,382,382,382,382,382,382, 13, +467,467,467,467,467,467,467,467,467,467,467,467,467,467,467,467, +467,467,467,467,467,467,467,109,109,104,104, 14, 14,468,468,467, + 9,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469, +469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469, +469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469, +469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469, +469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469, +469,469,469,469,469,469,469,469,469,469,469, 4,102,470,470,469, /* block 90 */ - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, -383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383, -383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383, -383,383,383,383,383,383,383,383,383,383,383,383,383,383,383, 87, +109,109,109,109,109,471,471,471,471,471,471,471,471,471,471,471, +471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471, +471,471,471,471,471,471,471,471,471,471,471,471,471,471,109,109, +109,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472, +472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472, +472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472, +472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472, +472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472, /* block 91 */ -383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383, -383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383, -383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383, -383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383, -383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383, -383,383,383,383,383,383,383,383, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, +472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,109, + 19, 19, 23, 23, 23, 23, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, +471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471, +471,471,471,471,471,471,471,471,471,471,471,109,109,109,109,109, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19,109,109,109,109,109,109,109,109,109,109,109,109, +469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469, /* block 92 */ -384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, -384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, -384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, -384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, -384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, -384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, -384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, -384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, +473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473, +473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,109, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 23, 23, 23, 23, 23, 23, 23, 23, + 19, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, +473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473, +473,473,473,473,473,473,473,473,473,473,473,473,473,473,473, 19, /* block 93 */ -384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, -384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, -384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, -384,384,384,384,384,384, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, +474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474, +474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474, +474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,109, /* block 94 */ -384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, -384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, -384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, -384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, -384,384,384,384, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474, +474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474, +474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474, +474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474, +474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474, +474,474,474,474,474,474,474,474, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, /* block 95 */ -385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385, -385,385,385,385,385,386,385,385,385,385,385,385,385,385,385,385, -385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385, -385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385, -385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385, -385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385, -385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385, -385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385, +475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475, +475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475, +475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475, +475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475, +475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475, +475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475, +475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475, +475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475, /* block 96 */ -385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385, -385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385, -385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385, -385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385, -385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385, -385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385, -385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385, -385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385, +475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475, +475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475, +475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475, +475,475,475,475,475,475,109,109,109,109,109,109,109,109,109,109, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, /* block 97 */ -385,385,385,385,385,385,385,385,385,385,385,385,385, 87, 87, 87, -387,387,387,387,387,387,387,387,387,387,387,387,387,387,387,387, -387,387,387,387,387,387,387,387,387,387,387,387,387,387,387,387, -387,387,387,387,387,387,387,387,387,387,387,387,387,387,387,387, -387,387,387,387,387,387,387, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475, +475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475, +475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475, +475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475, +475,475,475,475,475,475,475,475,475,475,475,475,475,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, /* block 98 */ -388,388,388,388,388,388,388,388,388,388,388,388,388,388,388,388, -388,388,388,388,388,388,388,388,388,388,388,388,388,388,388,388, -388,388,388,388,388,388,388,388,388,388,388,388,388,388,388,388, -388,388,388,388,388,388,388,388,388,388,388,388,388,388,388,388, -388,388,388,388,388,388,388,388,388,388,388,388,388,388,388,388, -388,388,388,388,388,388,388,388,388,388,388,388,388,388,388,388, -388,388,388,388,388,388,388,388,388,388,388,388,388,388,388,388, -388,388,388,388,388,388,388,388,388,388,388,388,388,388,388,388, +476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476, +476,476,476,476,476,477,476,476,476,476,476,476,476,476,476,476, +476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476, +476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476, +476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476, +476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476, +476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476, +476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476, /* block 99 */ -388,388,388,388,388,388,388,388,388,388,388,388,389,390,390,390, -388,388,388,388,388,388,388,388,388,388,388,388,388,388,388,388, -391,391,391,391,391,391,391,391,391,391,388,388, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, -123,124,123,124,123,124,123,124,123,124,123,124,123,124,123,124, -123,124,123,124,123,124,123,124,123,124,123,124,123,124,123,124, - 87, 87,123,124,123,124,123,124,123,124,123,124,123,124,392,126, -127,127,127,393, 87, 87, 87, 87, 87, 87, 87, 87,126,126,393,316, +476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476, +476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476, +476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476, +476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476, +476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476, +476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476, +476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476, +476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476, /* block 100 */ -123,124,123,124,123,124,123,124,123,124,123,124,123,124,123,124, -123,124,123,124,123,124,123,124, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +476,476,476,476,476,476,476,476,476,476,476,476,476,109,109,109, +478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478, +478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478, +478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478, +478,478,478,478,478,478,478,109,109,109,109,109,109,109,109,109, +479,479,479,479,479,479,479,479,479,479,479,479,479,479,479,479, +479,479,479,479,479,479,479,479,479,479,479,479,479,479,479,479, +479,479,479,479,479,479,479,479,480,480,480,480,480,480,481,481, /* block 101 */ - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 10, 10, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, - 14, 14, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, - 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, - 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, - 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, - 80, 14, 14, 14, 14, 14, 14, 14, 14, 21, 22, 21, 22,394, 21, 22, +482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482, +482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482, +482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482, +482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482, +482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482, +482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482, +482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482, +482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482, /* block 102 */ - 21, 22, 21, 22, 21, 22, 21, 22, 81, 10, 10, 21, 22, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 45, 45, 45, 45, 45, +482,482,482,482,482,482,482,482,482,482,482,482,483,484,484,484, +482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482, +485,485,485,485,485,485,485,485,485,485,482,482,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +167,168,167,168,167,168,167,168,167,168,167,168,167,168,167,168, +167,168,167,168,167,168,167,168,167,168,167,168,167,168,167,168, +167,168,167,168,167,168,167,168,167,168,167,168,167,168,486,170, +171,171,171,487,170,170,170,170,170,170,170,170,170,170,487,398, /* block 103 */ -395,395,396,395,395,395,396,395,395,395,395,396,395,395,395,395, -395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395, -395,395,395,397,397,396,396,397,398,398,398,398, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, -399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399, -399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399, -399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399, -399,399,399,399,400,400,400,400, 87, 87, 87, 87, 87, 87, 87, 87, +167,168,167,168,167,168,167,168,167,168,167,168,167,168,167,168, +167,168,167,168,167,168,167,168,109,109,109,109,109,109,109,170, +488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488, +488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488, +488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488, +488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488, +488,488,488,488,488,488,489,489,489,489,489,489,489,489,489,489, +490,490,491,491,491,491,491,491,109,109,109,109,109,109,109,109, /* block 104 */ -401,401,402,402,402,402,402,402,402,402,402,402,402,402,402,402, -402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402, -402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402, -402,402,402,402,401,401,401,401,401,401,401,401,401,401,401,401, -401,401,401,401,403, 87, 87, 87, 87, 87, 87, 87, 87, 87,404,404, -405,405,405,405,405,405,405,405,405,405, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14,102,102,102,102,102,102,102,102,102, + 14, 14, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, + 33, 33, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, + 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, + 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, + 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, +101, 33, 33, 33, 33, 33, 33, 33, 33, 30, 31, 30, 31,492, 30, 31, /* block 105 */ -406,406,406,406,406,406,406,406,406,406,407,407,407,407,407,407, -407,407,407,407,407,407,407,407,407,407,407,407,407,407,407,407, -407,407,407,407,407,407,408,408,408,408,408,408,408,408,409,409, -410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410, -410,410,410,410,410,410,410,411,411,411,411,411,411,411,411,411, -411,411,412,412, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87,413, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 30, 31, 30, 31, 30, 31, 30, 31,102, 14, 14, 30, 31,493, 33,109, + 30, 31, 30, 31,109,109,109,109,109,109,109,109,109,109,109,109, + 30, 31, 30, 31, 30, 31, 30, 31, 30, 31,494,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,101,101, 33, 20, 20, 20, 20, 20, /* block 106 */ -414,414,414,414,414,414,414,414,414,414,414,414,414,414,414,414, -414,414,414,414,414,414,414,414,414,414,414,414,414,414,414,414, -414,414,414,414,414,414,414,414,414,415,415,415,415,415,415,416, -416,415,415,416,416,415,415, 87, 87, 87, 87, 87, 87, 87, 87, 87, -414,414,414,415,414,414,414,414,414,414,414,414,415,416, 87, 87, -417,417,417,417,417,417,417,417,417,417, 87, 87,418,418,418,418, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +495,495,496,495,495,495,496,495,495,495,495,496,495,495,495,495, +495,495,495,495,495,495,495,495,495,495,495,495,495,495,495,495, +495,495,495,497,497,496,496,497,498,498,498,498,109,109,109,109, + 23, 23, 23, 23, 23, 23, 19, 19, 5, 19,109,109,109,109,109,109, +499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499, +499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499, +499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499, +499,499,499,499,500,500,500,500,109,109,109,109,109,109,109,109, /* block 107 */ -241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, -241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, -241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, -241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, -241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, -241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, -241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, -241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, +501,501,502,502,502,502,502,502,502,502,502,502,502,502,502,502, +502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502, +502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502, +502,502,502,502,501,501,501,501,501,501,501,501,501,501,501,501, +501,501,501,501,503,109,109,109,109,109,109,109,109,109,504,504, +505,505,505,505,505,505,505,505,505,505,109,109,109,109,109,109, +213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213, +213,213,215,215,215,215,215,215,217,217,217,215,109,109,109,109, /* block 108 */ -241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, -241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, -241,241,241,241, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +506,506,506,506,506,506,506,506,506,506,507,507,507,507,507,507, +507,507,507,507,507,507,507,507,507,507,507,507,507,507,507,507, +507,507,507,507,507,507,508,508,508,508,508,508,508,508,509,509, +510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510, +510,510,510,510,510,510,510,511,511,511,511,511,511,511,511,511, +511,511,512,512,109,109,109,109,109,109,109,109,109,109,109,513, +305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305, +305,305,305,305,305,305,305,305,305,305,305,305,305,109,109,109, /* block 109 */ -419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419, -419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419, -419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419, -419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419, -419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419, -419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419, -419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419, -419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419, +514,514,514,515,516,516,516,516,516,516,516,516,516,516,516,516, +516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516, +516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516, +516,516,516,514,515,515,514,514,514,514,515,515,514,515,515,515, +515,517,517,517,517,517,517,517,517,517,517,517,517,517,109,102, +518,518,518,518,518,518,518,518,518,518,109,109,109,109,517,517, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, /* block 110 */ -420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420, -420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420, -420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420, -420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420, -420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420, -420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420, -420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420, -420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420, +519,519,519,519,519,519,519,519,519,519,519,519,519,519,519,519, +519,519,519,519,519,519,519,519,519,519,519,519,519,519,519,519, +519,519,519,519,519,519,519,519,519,520,520,520,520,520,520,521, +521,520,520,521,521,520,520,109,109,109,109,109,109,109,109,109, +519,519,519,520,519,519,519,519,519,519,519,519,520,521,109,109, +522,522,522,522,522,522,522,522,522,522,109,109,523,523,523,523, +295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295, +524,295,295,295,295,295,295,301,301,301,295,296,109,109,109,109, /* block 111 */ -384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, -384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, -384,384,384,384,384,384,384,384,384,384,384,384,384,384, 87, 87, -384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, -384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, -384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, -384,384,384,384,384,384,384,384,384,384,384, 87, 87, 87, 87, 87, -384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, +525,525,525,525,525,525,525,525,525,525,525,525,525,525,525,525, +525,525,525,525,525,525,525,525,525,525,525,525,525,525,525,525, +525,525,525,525,525,525,525,525,525,525,525,525,525,525,525,525, +526,525,526,526,526,525,525,526,526,525,525,525,525,525,526,526, +525,526,525,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,525,525,527,528,528, +529,529,529,529,529,529,529,529,529,529,529,530,531,531,530,530, +532,532,529,533,533,530,531,109,109,109,109,109,109,109,109,109, /* block 112 */ -384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, -384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, -384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, -384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, -384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, -384,384,384,384,384,384,384,384,384,384, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +109,308,308,308,308,308,308,109,109,308,308,308,308,308,308,109, +109,308,308,308,308,308,308,109,109,109,109,109,109,109,109,109, +308,308,308,308,308,308,308,109,308,308,308,308,308,308,308,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, /* block 113 */ - 14, 14, 14, 14, 14, 14, 14, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87,134,134,134,134,134, 87, 87, 87, 87, 87,139,136,139, -139,139,139,139,139,139,139,139,139,421,139,139,139,139,139,139, -139,139,139,139,139,139,139, 87,139,139,139,139,139, 87,139, 87, -139,139, 87,139,139, 87,139,139,139,139,139,139,139,139,139,139, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529, +529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529, +529,529,529,530,530,531,530,530,531,530,530,532,530,531,109,109, +534,534,534,534,534,534,534,534,534,534,109,109,109,109,109,109, /* block 114 */ -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +535,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536, +536,536,536,536,536,536,536,536,536,536,536,536,535,536,536,536, +536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536, +536,536,536,536,536,536,536,536,535,536,536,536,536,536,536,536, +536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536, +536,536,536,536,535,536,536,536,536,536,536,536,536,536,536,536, +536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536, +535,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536, /* block 115 */ -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +536,536,536,536,536,536,536,536,536,536,536,536,535,536,536,536, +536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536, +536,536,536,536,536,536,536,536,535,536,536,536,536,536,536,536, +536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536, +536,536,536,536,535,536,536,536,536,536,536,536,536,536,536,536, +536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536, +535,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536, +536,536,536,536,536,536,536,536,536,536,536,536,535,536,536,536, /* block 116 */ -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145, 4, 5, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536, +536,536,536,536,536,536,536,536,535,536,536,536,536,536,536,536, +536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536, +536,536,536,536,535,536,536,536,536,536,536,536,536,536,536,536, +536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536, +535,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536, +536,536,536,536,536,536,536,536,536,536,536,536,535,536,536,536, +536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536, /* block 117 */ -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, - 87, 87,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, -145,145,145,145,145,145,145,145,145,145,145,145,142, 13, 87, 87, +536,536,536,536,536,536,536,536,535,536,536,536,536,536,536,536, +536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536, +536,536,536,536,535,536,536,536,536,536,536,536,536,536,536,536, +536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536, +535,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536, +536,536,536,536,536,536,536,536,536,536,536,536,535,536,536,536, +536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536, +536,536,536,536,536,536,536,536,535,536,536,536,536,536,536,536, /* block 118 */ - 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 2, 2, 2, 2, 2, 2, 2, 4, 5, 2, 87, 87, 87, 87, 87, 87, - 82, 82, 82, 82, 82, 82, 82, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 2, 7, 7, 11, 11, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, - 5, 4, 5, 4, 5, 2, 2, 4, 5, 2, 2, 2, 2, 11, 11, 11, - 2, 2, 2, 87, 2, 2, 2, 2, 7, 4, 5, 4, 5, 4, 5, 2, - 2, 2, 6, 7, 6, 6, 6, 87, 2, 3, 2, 2, 87, 87, 87, 87, -145,145,145,145,145, 87,145,145,145,145,145,145,145,145,145,145, +536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536, +536,536,536,536,535,536,536,536,536,536,536,536,536,536,536,536, +536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536, +535,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536, +536,536,536,536,536,536,536,536,536,536,536,536,535,536,536,536, +536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536, +536,536,536,536,536,536,536,536,535,536,536,536,536,536,536,536, +536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536, /* block 119 */ -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145, 87, 87, 16, +536,536,536,536,535,536,536,536,536,536,536,536,536,536,536,536, +536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536, +535,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536, +536,536,536,536,536,536,536,536,536,536,536,536,535,536,536,536, +536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536, +536,536,536,536,536,536,536,536,535,536,536,536,536,536,536,536, +536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536, +536,536,536,536,535,536,536,536,536,536,536,536,536,536,536,536, /* block 120 */ - 87, 2, 2, 2, 3, 2, 2, 2, 4, 5, 2, 6, 2, 7, 2, 2, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 2, 2, 6, 6, 6, 2, - 2, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 4, 2, 5, 10, 11, - 10, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 4, 6, 5, 6, 4, - 5, 2, 4, 5, 2, 2,379,379,379,379,379,379,379,379,379,379, - 81,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379, +536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536, +535,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536, +536,536,536,536,536,536,536,536,536,536,536,536,535,536,536,536, +536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536, +536,536,536,536,536,536,536,536,535,536,536,536,536,536,536,536, +536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536, +536,536,536,536,535,536,536,536,536,536,536,536,536,536,536,536, +536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536, /* block 121 */ -379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379, -379,379,379,379,379,379,379,379,379,379,379,379,379,379, 81, 81, -241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, -241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, 87, - 87, 87,241,241,241,241,241,241, 87, 87,241,241,241,241,241,241, - 87, 87,241,241,241,241,241,241, 87, 87,241,241,241, 87, 87, 87, - 3, 3, 6, 10, 13, 3, 3, 87, 13, 6, 6, 6, 6, 13, 13, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 16, 16, 16, 13, 13, 87, 87, +536,536,536,536,536,536,536,536,535,536,536,536,536,536,536,536, +536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536, +536,536,536,536,109,109,109,109,109,109,109,109,109,109,109,109, +306,306,306,306,306,306,306,306,306,306,306,306,306,306,306,306, +306,306,306,306,306,306,306,109,109,109,109,307,307,307,307,307, +307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307, +307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307, +307,307,307,307,307,307,307,307,307,307,307,307,109,109,109,109, /* block 122 */ -422,422,422,422,422,422,422,422,422,422,422,422, 87,422,422,422, -422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422, -422,422,422,422,422,422,422, 87,422,422,422,422,422,422,422,422, -422,422,422,422,422,422,422,422,422,422,422, 87,422,422, 87,422, -422,422,422,422,422,422,422,422,422,422,422,422,422,422, 87, 87, -422,422,422,422,422,422,422,422,422,422,422,422,422,422, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537, +537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537, +537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537, +537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537, +537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537, +537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537, +537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537, +537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537, /* block 123 */ -422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422, -422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422, -422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422, -422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422, -422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422, -422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422, -422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422, -422,422,422,422,422,422,422,422,422,422,422, 87, 87, 87, 87, 87, +538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538, +538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538, +538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538, +538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538, +538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538, +538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538, +538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538, +538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538, /* block 124 */ - 2, 2, 13, 87, 87, 87, 87, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 87, 87, 87, 13, 13, 13, 13, 13, 13, 13, 13, 13, -423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423, -423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423, -423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423, -423,423,423,423,423,424,424,424,424,425,425,425,425,425,425,425, +475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475, +475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475, +475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475, +475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475, +475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475, +475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475, +475,475,475,475,475,475,475,475,475,475,475,475,475,475,109,109, +475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475, /* block 125 */ -425,425,425,425,425,425,425,425,425,425,424, 87, 87, 87, 87, 87, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 82, 87, 87, +475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475, +475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475, +475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475, +475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475, +475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475, +475,475,475,475,475,475,475,475,475,475,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, /* block 126 */ -426,426,426,426,426,426,426,426,426,426,426,426,426,426,426,426, -426,426,426,426,426,426,426,426,426,426,426,426,426, 87, 87, 87, -427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427, -427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427, -427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427, -427, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 33, 33, 33, 33, 33, 33, 33,109,109,109,109,109,109,109,109,109, +109,109,109,178,178,178,178,178,109,109,109,109,109,184,181,184, +184,184,184,184,184,184,184,184,184,539,184,184,184,184,184,184, +184,184,184,184,184,184,184,109,184,184,184,184,184,109,184,109, +184,184,109,184,184,109,184,184,184,184,184,184,184,184,184,184, +191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, +191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, +191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, /* block 127 */ -428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428, -428,428,428,428,428,428,428,428,428,428,428,428,428,428,428, 87, -429,429,429,429, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, -430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430, -430,431,430,430,430,430,430,430,430,430,431, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, +191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, +191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, +191,191,540,540,540,540,540,540,540,540,540,540,540,540,540,540, +540,540,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,191,191,191,191,191,191,191,191,191,191,191,191,191, +191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, +191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, /* block 128 */ -432,432,432,432,432,432,432,432,432,432,432,432,432,432,432,432, -432,432,432,432,432,432,432,432,432,432,432,432,432,432, 87,433, -434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434, -434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434, -434,434,434,434, 87, 87, 87, 87,434,434,434,434,434,434,434,434, -435,436,436,436,436,436, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, +191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, +191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, +191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, +191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, +191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, +191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, +191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, /* block 129 */ -437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437, -437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437, -437,437,437,437,437,437,437,437,438,438,438,438,438,438,438,438, -438,438,438,438,438,438,438,438,438,438,438,438,438,438,438,438, -438,438,438,438,438,438,438,438,438,438,438,438,438,438,438,438, -439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439, -439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439, -439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439, +191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, +191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, +191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, +191,191,191,191,191,191,191,191,191,191,191,191,191,191, 6, 7, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, +191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, +191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, /* block 130 */ -440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440, -440,440,440,440,440,440,440,440,440,440,440,440,440,440, 87, 87, -441,441,441,441,441,441,441,441,441,441, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, +109,109,191,191,191,191,191,191,191,191,191,191,191,191,191,191, +191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, +191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, +191,191,191,191,191,191,191,191,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +191,191,191,191,191,191,191,191,191,191,191,191,188, 19,109,109, /* block 131 */ -442,442,442,442,442,442, 87, 87,442, 87,442,442,442,442,442,442, -442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442, -442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442, -442,442,442,442,442,442, 87,442,442, 87, 87, 87,442, 87, 87,442, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104, + 4, 4, 4, 4, 4, 4, 4, 6, 7, 4,109,109,109,109,109,109, +104,104,104,104,104,104,104,109,109,109,109,109,109,109,109,109, + 4, 9, 9, 15, 15, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, + 7, 6, 7, 6, 7, 4, 4, 6, 7, 4, 4, 4, 4, 15, 15, 15, + 4, 4, 4,109, 4, 4, 4, 4, 9, 6, 7, 6, 7, 6, 7, 4, + 4, 4, 8, 9, 8, 8, 8,109, 4, 5, 4, 4,109,109,109,109, +191,191,191,191,191,109,191,191,191,191,191,191,191,191,191,191, /* block 132 */ -443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443, -443,443,443,443,443,443,444,444,444,444, 87, 87, 87, 87, 87,445, -446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446, -446,446,446,446,446,446,446,446,446,446, 87, 87, 87, 87, 87,447, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, +191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, +191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, +191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, +191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, +191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, +191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, +191,191,191,191,191,191,191,191,191,191,191,191,191,109,109, 22, /* block 133 */ -448,449,449,449, 87,449,449, 87, 87, 87, 87, 87,449,449,449,449, -448,448,448,448, 87,448,448,448, 87,448,448,448,448,448,448,448, -448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448, -448,448,448,448, 87, 87, 87, 87,449,449,449, 87, 87, 87, 87,449, -450,450,450,450,450,450,450,450, 87, 87, 87, 87, 87, 87, 87, 87, -451,451,451,451,451,451,451,451,451, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +109, 4, 4, 4, 5, 4, 4, 4, 6, 7, 4, 8, 4, 9, 4, 4, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 4, 4, 8, 8, 8, 4, + 4, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 6, 4, 7, 14, 15, + 14, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 6, 8, 7, 8, 6, + 7, 4, 6, 7, 4, 4,469,469,469,469,469,469,469,469,469,469, +102,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469, /* block 134 */ -452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452, -452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452, -452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452, -452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452, -452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452, -452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452, -452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452, -452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452, +469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469, +469,469,469,469,469,469,469,469,469,469,469,469,469,469,541,541, +472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472, +472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,109, +109,109,472,472,472,472,472,472,109,109,472,472,472,472,472,472, +109,109,472,472,472,472,472,472,109,109,472,472,472,109,109,109, + 5, 5, 8, 14, 19, 5, 5,109, 19, 8, 8, 8, 8, 19, 19,109, +426,426,426,426,426,426,426,426,426, 22, 22, 22, 19, 19,109,109, /* block 135 */ -452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452, -452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452, -452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452, -452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452, -452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452, -452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452, -452,452,452,452,452,452,452,452,452,452,452,452,452,452,452, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +542,542,542,542,542,542,542,542,542,542,542,542,109,542,542,542, +542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542, +542,542,542,542,542,542,542,109,542,542,542,542,542,542,542,542, +542,542,542,542,542,542,542,542,542,542,542,109,542,542,109,542, +542,542,542,542,542,542,542,542,542,542,542,542,542,542,109,109, +542,542,542,542,542,542,542,542,542,542,542,542,542,542,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, /* block 136 */ -453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453, -453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453, -453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453, -453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453, -453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453, -453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453, -453,453,453, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, -454,454,454,454, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542, +542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542, +542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542, +542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542, +542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542, +542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542, +542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542, +542,542,542,542,542,542,542,542,542,542,542,109,109,109,109,109, /* block 137 */ - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 4, 4, 4,109,109,109,109, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23,109,109,109, 19, 19, 19, 19, 19, 19, 19, 19, 19, +543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543, +543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543, +543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543, +543,543,543,543,543,544,544,544,544,545,545,545,545,545,545,545, /* block 138 */ - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 87, 87, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13,455,455, 82, 82, 82, 13, 13, 13,455,455,455, -455,455,455, 16, 16, 16, 16, 16, 16, 16, 16, 82, 82, 82, 82, 82, +545,545,545,545,545,545,545,545,545,545,544,109,109,109,109,109, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,104,109,109, /* block 139 */ - 82, 82, 82, 13, 13, 82, 82, 82, 82, 82, 82, 82, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 82, 82, 82, 82, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546, +546,546,546,546,546,546,546,546,546,546,546,546,546,109,109,109, +547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547, +547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547, +547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547, +547,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, /* block 140 */ -425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425, -425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425, -425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425, -425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425, -425,425,456,456,456,425, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548, +548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,109, +549,549,549,549,109,109,109,109,109,109,109,109,109,109,109,109, +550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550, +550,551,550,550,550,550,550,550,550,550,551,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, /* block 141 */ - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552, +552,552,552,552,552,552,552,552,552,552,552,552,552,552,109,553, +554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554, +554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554, +554,554,554,554,109,109,109,109,554,554,554,554,554,554,554,554, +555,556,556,556,556,556,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, /* block 142 */ -343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343, -343,343,343,343,343,343,343,343,343,343,344,344,344,344,344,344, -344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344, -344,344,344,344,343,343,343,343,343,343,343,343,343,343,343,343, -343,343,343,343,343,343,343,343,343,343,343,343,343,343,344,344, -344,344,344,344,344, 87,344,344,344,344,344,344,344,344,344,344, -344,344,344,344,344,344,344,344,343,343,343,343,343,343,343,343, -343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343, +557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557, +557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557, +557,557,557,557,557,557,557,557,558,558,558,558,558,558,558,558, +558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558, +558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558, +559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559, +559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559, +559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559, /* block 143 */ -343,343,344,344,344,344,344,344,344,344,344,344,344,344,344,344, -344,344,344,344,344,344,344,344,344,344,344,344,343, 87,343,343, - 87, 87,343, 87, 87,343,343, 87, 87,343,343,343,343, 87,343,343, -343,343,343,343,343,343,344,344,344,344, 87,344, 87,344,344,344, -344,344,344,344, 87,344,344,344,344,344,344,344,344,344,344,344, -343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343, -343,343,343,343,343,343,343,343,343,343,344,344,344,344,344,344, -344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344, +560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560, +560,560,560,560,560,560,560,560,560,560,560,560,560,560,109,109, +561,561,561,561,561,561,561,561,561,561,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, /* block 144 */ -344,344,344,344,343,343, 87,343,343,343,343, 87, 87,343,343,343, -343,343,343,343,343, 87,343,343,343,343,343,343,343, 87,344,344, -344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344, -344,344,344,344,344,344,344,344,343,343, 87,343,343,343,343, 87, -343,343,343,343,343, 87,343, 87, 87, 87,343,343,343,343,343,343, -343, 87,344,344,344,344,344,344,344,344,344,344,344,344,344,344, -344,344,344,344,344,344,344,344,344,344,344,344,343,343,343,343, -343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343, +562,562,562,562,562,562,109,109,562,109,562,562,562,562,562,562, +562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562, +562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562, +562,562,562,562,562,562,109,562,562,109,109,109,562,109,109,562, +563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563, +563,563,563,563,563,563,109,564,565,565,565,565,565,565,565,565, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, /* block 145 */ -343,343,343,343,343,343,344,344,344,344,344,344,344,344,344,344, -344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344, -343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343, -343,343,343,343,343,343,343,343,343,343,344,344,344,344,344,344, -344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344, -344,344,344,344,343,343,343,343,343,343,343,343,343,343,343,343, -343,343,343,343,343,343,343,343,343,343,343,343,343,343,344,344, -344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344, +566,566,566,566,566,566,566,566,566,566,566,566,566,566,566,566, +566,566,566,566,566,566,567,567,567,567,567,567,109,109,109,568, +569,569,569,569,569,569,569,569,569,569,569,569,569,569,569,569, +569,569,569,569,569,569,569,569,569,569,109,109,109,109,109,570, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, /* block 146 */ -344,344,344,344,344,344,344,344,343,343,343,343,343,343,343,343, -343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343, -343,343,344,344,344,344,344,344,344,344,344,344,344,344,344,344, -344,344,344,344,344,344,344,344,344,344,344,344,343,343,343,343, -343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343, -343,343,343,343,343,343,344,344,344,344,344,344,344,344,344,344, -344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344, -343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343, +571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571, +571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571, +572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572, +572,572,572,572,572,572,572,572,109,109,109,109,109,109,572,572, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, /* block 147 */ -343,343,343,343,343,343,343,343,343,343,344,344,344,344,344,344, -344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344, -344,344,344,344,344,344, 87, 87,343,343,343,343,343,343,343,343, -343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343, -343, 6,344,344,344,344,344,344,344,344,344,344,344,344,344,344, -344,344,344,344,344,344,344,344,344,344,344, 6,344,344,344,344, -344,344,343,343,343,343,343,343,343,343,343,343,343,343,343,343, -343,343,343,343,343,343,343,343,343,343,343, 6,344,344,344,344, +573,574,574,574,109,574,574,109,109,109,109,109,574,574,574,574, +573,573,573,573,109,573,573,573,109,573,573,573,573,573,573,573, +573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573, +573,573,573,573,109,109,109,109,574,574,574,109,109,109,109,574, +575,575,575,575,575,575,575,575,109,109,109,109,109,109,109,109, +576,576,576,576,576,576,576,576,576,109,109,109,109,109,109,109, +577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577, +577,577,577,577,577,577,577,577,577,577,577,577,577,578,578,579, /* block 148 */ -344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344, -344,344,344,344,344, 6,344,344,344,344,344,344,343,343,343,343, -343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343, -343,343,343,343,343, 6,344,344,344,344,344,344,344,344,344,344, -344,344,344,344,344,344,344,344,344,344,344,344,344,344,344, 6, -344,344,344,344,344,344,343,343,343,343,343,343,343,343,343,343, -343,343,343,343,343,343,343,343,343,343,343,343,343,343,343, 6, -344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344, +580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580, +580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580, +580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580, +580,580,580,580,580,580,109,109,109,581,581,581,581,581,581,581, +582,582,582,582,582,582,582,582,582,582,582,582,582,582,582,582, +582,582,582,582,582,582,109,109,583,583,583,583,583,583,583,583, +584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584, +584,584,584,109,109,109,109,109,585,585,585,585,585,585,585,585, /* block 149 */ -344,344,344,344,344,344,344,344,344, 6,344,344,344,344,344,344, -343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343, -343,343,343,343,343,343,343,343,343, 6,344,344,344,344,344,344, -344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344, -344,344,344, 6,344,344,344,344,344,344,343,344, 87, 87, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, +586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, +586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, +586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, +586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, +586,586,586,586,586,586,586,586,586,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, /* block 150 */ - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 87, 87, 87, 87, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587, +587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,109, /* block 151 */ - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +588,589,588,590,590,590,590,590,590,590,590,590,590,590,590,590, +590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590, +590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590, +590,590,590,590,590,590,590,590,589,589,589,589,589,589,589,589, +589,589,589,589,589,589,589,591,591,591,591,591,591,591,109,109, +109,109,592,592,592,592,592,592,592,592,592,592,592,592,592,592, +592,592,592,592,592,592,593,593,593,593,593,593,593,593,593,593, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, /* block 152 */ -384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, -384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, -384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, -384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, -384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, -384,384,384,384,384,384,384, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +594,594,595,596,596,596,596,596,596,596,596,596,596,596,596,596, +596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596, +596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596, +595,595,595,594,594,594,594,595,595,594,594,597,597,598,597,597, +597,597,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599, +599,599,599,599,599,599,599,599,599,109,109,109,109,109,109,109, +600,600,600,600,600,600,600,600,600,600,109,109,109,109,109,109, /* block 153 */ -384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, -384,384,384,384,384,384,384,384,384,384,384,384,384,384, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +601,601,601,602,602,602,602,602,602,602,602,602,602,602,602,602, +602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602, +602,602,602,602,602,602,602,601,601,601,601,601,603,601,601,601, +601,601,601,601,601,109,604,604,604,604,604,604,604,604,604,604, +605,605,605,605,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, /* block 154 */ - 87, 16, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, +606,606,607,608,608,608,608,608,608,608,608,608,608,608,608,608, +608,608,608,608,608,608,608,608,608,608,608,608,608,608,608,608, +608,608,608,608,608,608,608,608,608,608,608,608,608,608,608,608, +608,608,608,607,607,607,606,606,606,606,606,606,606,606,606,607, +607,608,608,608,608,609,609,609,609,109,109,109,109,109,109,109, +610,610,610,610,610,610,610,610,610,610,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, /* block 155 */ - 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, +611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611, +611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611, +611,611,611,611,611,611,611,611,611,611,611,612,613,612,613,613, +612,612,612,612,612,612,613,612,109,109,109,109,109,109,109,109, +614,614,614,614,614,614,614,614,614,614,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, /* block 156 */ - 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615, +615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615, +615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615, +615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615, +615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615, +615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615, +615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615, +615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615, /* block 157 */ -420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420, -420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420, -420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420, -420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420, -420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420, -420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420, -420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420, -420,420,420,420,420,420,420,420,420,420,420,420,420,420, 87, 87, +615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615, +615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615, +615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615, +615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615, +615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615, +615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615, +615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, + +/* block 158 */ +616,616,616,616,616,616,616,616,616,616,616,616,616,616,616,616, +616,616,616,616,616,616,616,616,616,616,616,616,616,616,616,616, +616,616,616,616,616,616,616,616,616,616,616,616,616,616,616,616, +616,616,616,616,616,616,616,616,616,616,616,616,616,616,616,616, +616,616,616,616,616,616,616,616,616,616,616,616,616,616,616,616, +616,616,616,616,616,616,616,616,616,616,616,616,616,616,616,616, +616,616,616,109,109,109,109,109,109,109,109,109,109,109,109,109, +617,617,617,617,109,109,109,109,109,109,109,109,109,109,109,109, + +/* block 159 */ +618,618,618,618,618,618,618,618,618,618,618,618,618,618,618,618, +618,618,618,618,618,618,618,618,618,618,618,618,618,618,618,618, +618,618,618,618,618,618,618,618,618,618,618,618,618,618,618,618, +618,618,618,618,618,618,618,618,618,618,618,618,618,618,618,618, +618,618,618,618,618,618,618,618,618,618,618,618,618,618,618,618, +618,618,618,618,618,618,618,618,618,618,618,618,618,618,618,618, +618,618,618,618,618,618,618,618,618,618,618,618,618,618,618,618, +618,618,618,618,618,618,618,618,618,618,618,618,618,618,618,618, + +/* block 160 */ +618,618,618,618,618,618,618,618,618,618,618,618,618,618,618,618, +618,618,618,618,618,618,618,618,618,618,618,618,618,618,618,618, +618,618,618,618,618,618,618,618,618,618,618,618,618,618,618,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, + +/* block 161 */ +488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488, +488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488, +488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488, +488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488, +488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488, +488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488, +488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488, +488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488, + +/* block 162 */ +488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488, +488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488, +488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488, +488,488,488,488,488,488,488,488,488,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, + +/* block 163 */ +619,619,619,619,619,619,619,619,619,619,619,619,619,619,619,619, +619,619,619,619,619,619,619,619,619,619,619,619,619,619,619,619, +619,619,619,619,619,619,619,619,619,619,619,619,619,619,619,619, +619,619,619,619,619,619,619,619,619,619,619,619,619,619,619,619, +619,619,619,619,619,109,109,109,109,109,109,109,109,109,109,109, +619,620,620,620,620,620,620,620,620,620,620,620,620,620,620,620, +620,620,620,620,620,620,620,620,620,620,620,620,620,620,620,620, +620,620,620,620,620,620,620,620,620,620,620,620,620,620,620,109, + +/* block 164 */ +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,621, +621,621,621,622,622,622,622,622,622,622,622,622,622,622,622,622, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, + +/* block 165 */ +469,467,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, + +/* block 166 */ + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19,109,109,109,109,109,109,109,109,109,109, + +/* block 167 */ + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19,109,109, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19,623,395,104,104,104, 19, 19, 19,395,623,623, +623,623,623, 22, 22, 22, 22, 22, 22, 22, 22,104,104,104,104,104, + +/* block 168 */ +104,104,104, 19, 19,104,104,104,104,104,104,104, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,104,104,104,104, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, + +/* block 169 */ +545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545, +545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545, +545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545, +545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545, +545,545,624,624,624,545,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, + +/* block 170 */ + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19,109,109,109,109,109,109,109,109,109, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23,109,109,109,109,109,109,109,109,109,109,109,109,109,109, + +/* block 171 */ +428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428, +428,428,428,428,428,428,428,428,428,428,429,429,429,429,429,429, +429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429, +429,429,429,429,428,428,428,428,428,428,428,428,428,428,428,428, +428,428,428,428,428,428,428,428,428,428,428,428,428,428,429,429, +429,429,429,429,429,109,429,429,429,429,429,429,429,429,429,429, +429,429,429,429,429,429,429,429,428,428,428,428,428,428,428,428, +428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428, + +/* block 172 */ +428,428,429,429,429,429,429,429,429,429,429,429,429,429,429,429, +429,429,429,429,429,429,429,429,429,429,429,429,428,109,428,428, +109,109,428,109,109,428,428,109,109,428,428,428,428,109,428,428, +428,428,428,428,428,428,429,429,429,429,109,429,109,429,429,429, +429,429,429,429,109,429,429,429,429,429,429,429,429,429,429,429, +428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428, +428,428,428,428,428,428,428,428,428,428,429,429,429,429,429,429, +429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429, + +/* block 173 */ +429,429,429,429,428,428,109,428,428,428,428,109,109,428,428,428, +428,428,428,428,428,109,428,428,428,428,428,428,428,109,429,429, +429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429, +429,429,429,429,429,429,429,429,428,428,109,428,428,428,428,109, +428,428,428,428,428,109,428,109,109,109,428,428,428,428,428,428, +428,109,429,429,429,429,429,429,429,429,429,429,429,429,429,429, +429,429,429,429,429,429,429,429,429,429,429,429,428,428,428,428, +428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428, + +/* block 174 */ +428,428,428,428,428,428,429,429,429,429,429,429,429,429,429,429, +429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429, +428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428, +428,428,428,428,428,428,428,428,428,428,429,429,429,429,429,429, +429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429, +429,429,429,429,428,428,428,428,428,428,428,428,428,428,428,428, +428,428,428,428,428,428,428,428,428,428,428,428,428,428,429,429, +429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429, + +/* block 175 */ +429,429,429,429,429,429,429,429,428,428,428,428,428,428,428,428, +428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428, +428,428,429,429,429,429,429,429,429,429,429,429,429,429,429,429, +429,429,429,429,429,429,429,429,429,429,429,429,428,428,428,428, +428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428, +428,428,428,428,428,428,429,429,429,429,429,429,429,429,429,429, +429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429, +428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428, + +/* block 176 */ +428,428,428,428,428,428,428,428,428,428,429,429,429,429,429,429, +429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429, +429,429,429,429,429,429,109,109,428,428,428,428,428,428,428,428, +428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428, +428, 8,429,429,429,429,429,429,429,429,429,429,429,429,429,429, +429,429,429,429,429,429,429,429,429,429,429, 8,429,429,429,429, +429,429,428,428,428,428,428,428,428,428,428,428,428,428,428,428, +428,428,428,428,428,428,428,428,428,428,428, 8,429,429,429,429, + +/* block 177 */ +429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429, +429,429,429,429,429, 8,429,429,429,429,429,429,428,428,428,428, +428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428, +428,428,428,428,428, 8,429,429,429,429,429,429,429,429,429,429, +429,429,429,429,429,429,429,429,429,429,429,429,429,429,429, 8, +429,429,429,429,429,429,428,428,428,428,428,428,428,428,428,428, +428,428,428,428,428,428,428,428,428,428,428,428,428,428,428, 8, +429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429, + +/* block 178 */ +429,429,429,429,429,429,429,429,429, 8,429,429,429,429,429,429, +428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428, +428,428,428,428,428,428,428,428,428, 8,429,429,429,429,429,429, +429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429, +429,429,429, 8,429,429,429,429,429,429,428,429,109,109, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + +/* block 179 */ +191,191,191,191,109,191,191,191,191,191,191,191,191,191,191,191, +191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, +109,191,191,109,191,109,109,191,109,191,191,191,191,191,191,191, +191,191,191,109,191,191,191,191,109,191,109,191,109,109,109,109, +109,109,191,109,109,109,109,191,109,191,109,191,109,191,191,191, +109,191,191,109,191,109,109,191,109,191,109,191,109,191,109,191, +109,191,191,109,191,109,109,191,191,191,191,109,191,191,191,191, +191,191,191,109,191,191,191,191,109,191,191,191,191,109,191,109, + +/* block 180 */ +191,191,191,191,191,191,191,191,191,191,109,191,191,191,191,191, +191,191,191,191,191,191,191,191,191,191,191,191,109,109,109,109, +109,191,191,191,109,191,191,191,191,191,109,191,191,191,191,191, +191,191,191,191,191,191,191,191,191,191,191,191,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +186,186,109,109,109,109,109,109,109,109,109,109,109,109,109,109, + +/* block 181 */ + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,109,109,109,109, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + +/* block 182 */ + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19,109,109,109,109,109,109,109,109,109,109,109,109, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,109, +109, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,109, +109, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, +109, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, + +/* block 183 */ + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,109,109,109,109,109, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,109, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,109,109,109,109, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + +/* block 184 */ + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,625,625,625,625,625,625,625,625,625,625, +625,625,625,625,625,625,625,625,625,625,625,625,625,625,625,625, + +/* block 185 */ +626, 19, 19,109,109,109,109,109,109,109,109,109,109,109,109,109, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,109,109,109,109,109, + 19, 19, 19, 19, 19, 19, 19, 19, 19,109,109,109,109,109,109,109, + 19, 19,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, + +/* block 186 */ + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, + 19, 19, 19, 19, 19, 19,109, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,109,109,109, + +/* block 187 */ + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19,109,109,109,109,109,109,109,109,109,109,109,109, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19,109, 19, 19, 19, 19, 19,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, + +/* block 188 */ + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,109, + 19,109, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + +/* block 189 */ + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19,109, 19, 19, 19, 19,109,109,109, + +/* block 190 */ + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,109,109, + 19, 19, 19, 19,109,109,109,109,109,109,109,109,109,109,109,109, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, + +/* block 191 */ +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109, 19, 19, 19, 19, 19, + +/* block 192 */ + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19,109,109,109,109, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, + +/* block 193 */ + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, + +/* block 194 */ + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19,109,109,109,109,109,109,109,109,109,109,109,109, + +/* block 195 */ +475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475, +475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475, +475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475, +475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475, +475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475, +475,475,475,475,475,475,475,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, + +/* block 196 */ +475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475, +475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475, +475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475, +475,475,475,475,475,109,109,109,109,109,109,109,109,109,109,109, +475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475, +475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475, +475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475, +475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475, + +/* block 197 */ +475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475, +475,475,475,475,475,475,475,475,475,475,475,475,475,475,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, + +/* block 198 */ +426, 22,426,426,426,426,426,426,426,426,426,426,426,426,426,426, +426,426,426,426,426,426,426,426,426,426,426,426,426,426,426,426, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + +/* block 199 */ +426,426,426,426,426,426,426,426,426,426,426,426,426,426,426,426, +426,426,426,426,426,426,426,426,426,426,426,426,426,426,426,426, +426,426,426,426,426,426,426,426,426,426,426,426,426,426,426,426, +426,426,426,426,426,426,426,426,426,426,426,426,426,426,426,426, +426,426,426,426,426,426,426,426,426,426,426,426,426,426,426,426, +426,426,426,426,426,426,426,426,426,426,426,426,426,426,426,426, +426,426,426,426,426,426,426,426,426,426,426,426,426,426,426,426, +426,426,426,426,426,426,426,426,426,426,426,426,426,426,426,426, + +/* block 200 */ +104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104, +104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104, +104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104, +104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104, +104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104, +104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104, +104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104, +104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104, + +/* block 201 */ +104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104, +104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104, +104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104, +104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104, +104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104, +104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104, +104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104, +426,426,426,426,426,426,426,426,426,426,426,426,426,426,426,426, + +/* block 202 */ +538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538, +538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538, +538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538, +538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538, +538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538, +538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538, +538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538, +538,538,538,538,538,538,538,538,538,538,538,538,538,538,109,109, }; #if UCD_BLOCK_SIZE != 128 #error Please correct UCD_BLOCK_SIZE in pcre_internal.h #endif +#endif /* SUPPORT_UCP */ + +#endif /* PCRE_INCLUDED */ diff --git a/Foundation/src/pcre_valid_utf8.c b/Foundation/src/pcre_valid_utf8.c index aab69bf94..68bc50e14 100644 --- a/Foundation/src/pcre_valid_utf8.c +++ b/Foundation/src/pcre_valid_utf8.c @@ -6,7 +6,7 @@ and semantics are as close as possible to those of the Perl 5 language. Written by Philip Hazel - Copyright (c) 1997-2008 University of Cambridge + Copyright (c) 1997-2013 University of Cambridge ----------------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without @@ -51,112 +51,248 @@ strings. */ *************************************************/ /* This function is called (optionally) at the start of compile or match, to -validate that a supposed UTF-8 string is actually valid. The early check means +check that a supposed UTF-8 string is actually valid. The early check means that subsequent code can assume it is dealing with a valid string. The check -can be turned off for maximum performance, but the consequences of supplying -an invalid string are then undefined. +can be turned off for maximum performance, but the consequences of supplying an +invalid string are then undefined. Originally, this function checked according to RFC 2279, allowing for values in the range 0 to 0x7fffffff, up to 6 bytes long, but ensuring that they were in the canonical format. Once somebody had pointed out RFC 3629 to me (it obsoletes 2279), additional restrictions were applied. The values are now limited to be between 0 and 0x0010ffff, no more than 4 bytes long, and the -subrange 0xd000 to 0xdfff is excluded. +subrange 0xd000 to 0xdfff is excluded. However, the format of 5-byte and 6-byte +characters is still checked. + +From release 8.13 more information about the details of the error are passed +back in the returned value: + +PCRE_UTF8_ERR0 No error +PCRE_UTF8_ERR1 Missing 1 byte at the end of the string +PCRE_UTF8_ERR2 Missing 2 bytes at the end of the string +PCRE_UTF8_ERR3 Missing 3 bytes at the end of the string +PCRE_UTF8_ERR4 Missing 4 bytes at the end of the string +PCRE_UTF8_ERR5 Missing 5 bytes at the end of the string +PCRE_UTF8_ERR6 2nd-byte's two top bits are not 0x80 +PCRE_UTF8_ERR7 3rd-byte's two top bits are not 0x80 +PCRE_UTF8_ERR8 4th-byte's two top bits are not 0x80 +PCRE_UTF8_ERR9 5th-byte's two top bits are not 0x80 +PCRE_UTF8_ERR10 6th-byte's two top bits are not 0x80 +PCRE_UTF8_ERR11 5-byte character is not permitted by RFC 3629 +PCRE_UTF8_ERR12 6-byte character is not permitted by RFC 3629 +PCRE_UTF8_ERR13 4-byte character with value > 0x10ffff is not permitted +PCRE_UTF8_ERR14 3-byte character with value 0xd000-0xdfff is not permitted +PCRE_UTF8_ERR15 Overlong 2-byte sequence +PCRE_UTF8_ERR16 Overlong 3-byte sequence +PCRE_UTF8_ERR17 Overlong 4-byte sequence +PCRE_UTF8_ERR18 Overlong 5-byte sequence (won't ever occur) +PCRE_UTF8_ERR19 Overlong 6-byte sequence (won't ever occur) +PCRE_UTF8_ERR20 Isolated 0x80 byte (not within UTF-8 character) +PCRE_UTF8_ERR21 Byte with the illegal value 0xfe or 0xff +PCRE_UTF8_ERR22 Unused (was non-character) Arguments: string points to the string length length of string, or -1 if the string is zero-terminated + errp pointer to an error position offset variable -Returns: < 0 if the string is a valid UTF-8 string - >= 0 otherwise; the value is the offset of the bad byte +Returns: = 0 if the string is a valid UTF-8 string + > 0 otherwise, setting the offset of the bad character */ int -_pcre_valid_utf8(const uschar *string, int length) +PRIV(valid_utf)(PCRE_PUCHAR string, int length, int *erroroffset) { -#ifdef SUPPORT_UTF8 -register const uschar *p; +#ifdef SUPPORT_UTF +register PCRE_PUCHAR p; if (length < 0) { for (p = string; *p != 0; p++); - length = p - string; + length = (int)(p - string); } for (p = string; length-- > 0; p++) { - register int ab; - register int c = *p; - if (c < 128) continue; - if (c < 0xc0) return p - string; - ab = _pcre_utf8_table4[c & 0x3f]; /* Number of additional bytes */ - if (length < ab || ab > 3) return p - string; - length -= ab; + register pcre_uchar ab, c, d; + + c = *p; + if (c < 128) continue; /* ASCII character */ + + if (c < 0xc0) /* Isolated 10xx xxxx byte */ + { + *erroroffset = (int)(p - string); + return PCRE_UTF8_ERR20; + } + + if (c >= 0xfe) /* Invalid 0xfe or 0xff bytes */ + { + *erroroffset = (int)(p - string); + return PCRE_UTF8_ERR21; + } + + ab = PRIV(utf8_table4)[c & 0x3f]; /* Number of additional bytes */ + if (length < ab) + { + *erroroffset = (int)(p - string); /* Missing bytes */ + return ab - length; /* Codes ERR1 to ERR5 */ + } + length -= ab; /* Length remaining */ /* Check top bits in the second byte */ - if ((*(++p) & 0xc0) != 0x80) return p - string; - /* Check for overlong sequences for each different length, and for the - excluded range 0xd000 to 0xdfff. */ + if (((d = *(++p)) & 0xc0) != 0x80) + { + *erroroffset = (int)(p - string) - 1; + return PCRE_UTF8_ERR6; + } + + /* For each length, check that the remaining bytes start with the 0x80 bit + set and not the 0x40 bit. Then check for an overlong sequence, and for the + excluded range 0xd800 to 0xdfff. */ switch (ab) { - /* Check for xx00 000x (overlong sequence) */ + /* 2-byte character. No further bytes to check for 0x80. Check first byte + for for xx00 000x (overlong sequence). */ - case 1: - if ((c & 0x3e) == 0) return p - string; - continue; /* We know there aren't any more bytes to check */ + case 1: if ((c & 0x3e) == 0) + { + *erroroffset = (int)(p - string) - 1; + return PCRE_UTF8_ERR15; + } + break; - /* Check for 1110 0000, xx0x xxxx (overlong sequence) or - 1110 1101, 1010 xxxx (0xd000 - 0xdfff) */ + /* 3-byte character. Check third byte for 0x80. Then check first 2 bytes + for 1110 0000, xx0x xxxx (overlong sequence) or + 1110 1101, 1010 xxxx (0xd800 - 0xdfff) */ case 2: - if ((c == 0xe0 && (*p & 0x20) == 0) || - (c == 0xed && *p >= 0xa0)) - return p - string; + if ((*(++p) & 0xc0) != 0x80) /* Third byte */ + { + *erroroffset = (int)(p - string) - 2; + return PCRE_UTF8_ERR7; + } + if (c == 0xe0 && (d & 0x20) == 0) + { + *erroroffset = (int)(p - string) - 2; + return PCRE_UTF8_ERR16; + } + if (c == 0xed && d >= 0xa0) + { + *erroroffset = (int)(p - string) - 2; + return PCRE_UTF8_ERR14; + } break; - /* Check for 1111 0000, xx00 xxxx (overlong sequence) or - greater than 0x0010ffff (f4 8f bf bf) */ + /* 4-byte character. Check 3rd and 4th bytes for 0x80. Then check first 2 + bytes for for 1111 0000, xx00 xxxx (overlong sequence), then check for a + character greater than 0x0010ffff (f4 8f bf bf) */ case 3: - if ((c == 0xf0 && (*p & 0x30) == 0) || - (c > 0xf4 ) || - (c == 0xf4 && *p > 0x8f)) - return p - string; + if ((*(++p) & 0xc0) != 0x80) /* Third byte */ + { + *erroroffset = (int)(p - string) - 2; + return PCRE_UTF8_ERR7; + } + if ((*(++p) & 0xc0) != 0x80) /* Fourth byte */ + { + *erroroffset = (int)(p - string) - 3; + return PCRE_UTF8_ERR8; + } + if (c == 0xf0 && (d & 0x30) == 0) + { + *erroroffset = (int)(p - string) - 3; + return PCRE_UTF8_ERR17; + } + if (c > 0xf4 || (c == 0xf4 && d > 0x8f)) + { + *erroroffset = (int)(p - string) - 3; + return PCRE_UTF8_ERR13; + } break; -#if 0 - /* These cases can no longer occur, as we restrict to a maximum of four - bytes nowadays. Leave the code here in case we ever want to add an option - for longer sequences. */ + /* 5-byte and 6-byte characters are not allowed by RFC 3629, and will be + rejected by the length test below. However, we do the appropriate tests + here so that overlong sequences get diagnosed, and also in case there is + ever an option for handling these larger code points. */ + + /* 5-byte character. Check 3rd, 4th, and 5th bytes for 0x80. Then check for + 1111 1000, xx00 0xxx */ - /* Check for 1111 1000, xx00 0xxx */ case 4: - if (c == 0xf8 && (*p & 0x38) == 0) return p - string; + if ((*(++p) & 0xc0) != 0x80) /* Third byte */ + { + *erroroffset = (int)(p - string) - 2; + return PCRE_UTF8_ERR7; + } + if ((*(++p) & 0xc0) != 0x80) /* Fourth byte */ + { + *erroroffset = (int)(p - string) - 3; + return PCRE_UTF8_ERR8; + } + if ((*(++p) & 0xc0) != 0x80) /* Fifth byte */ + { + *erroroffset = (int)(p - string) - 4; + return PCRE_UTF8_ERR9; + } + if (c == 0xf8 && (d & 0x38) == 0) + { + *erroroffset = (int)(p - string) - 4; + return PCRE_UTF8_ERR18; + } break; - /* Check for leading 0xfe or 0xff, and then for 1111 1100, xx00 00xx */ + /* 6-byte character. Check 3rd-6th bytes for 0x80. Then check for + 1111 1100, xx00 00xx. */ + case 5: - if (c == 0xfe || c == 0xff || - (c == 0xfc && (*p & 0x3c) == 0)) return p - string; + if ((*(++p) & 0xc0) != 0x80) /* Third byte */ + { + *erroroffset = (int)(p - string) - 2; + return PCRE_UTF8_ERR7; + } + if ((*(++p) & 0xc0) != 0x80) /* Fourth byte */ + { + *erroroffset = (int)(p - string) - 3; + return PCRE_UTF8_ERR8; + } + if ((*(++p) & 0xc0) != 0x80) /* Fifth byte */ + { + *erroroffset = (int)(p - string) - 4; + return PCRE_UTF8_ERR9; + } + if ((*(++p) & 0xc0) != 0x80) /* Sixth byte */ + { + *erroroffset = (int)(p - string) - 5; + return PCRE_UTF8_ERR10; + } + if (c == 0xfc && (d & 0x3c) == 0) + { + *erroroffset = (int)(p - string) - 5; + return PCRE_UTF8_ERR19; + } break; -#endif - } - /* Check for valid bytes after the 2nd, if any; all must start 10 */ - while (--ab > 0) + /* Character is valid under RFC 2279, but 4-byte and 5-byte characters are + excluded by RFC 3629. The pointer p is currently at the last byte of the + character. */ + + if (ab > 3) { - if ((*(++p) & 0xc0) != 0x80) return p - string; + *erroroffset = (int)(p - string) - ab; + return (ab == 4)? PCRE_UTF8_ERR11 : PCRE_UTF8_ERR12; } } -#else + +#else /* Not SUPPORT_UTF */ (void)(string); /* Keep picky compilers happy */ (void)(length); +(void)(erroroffset); #endif -return -1; +return PCRE_UTF8_ERR0; /* This indicates success */ } /* End of pcre_valid_utf8.c */ diff --git a/Foundation/src/pcre_version.c b/Foundation/src/pcre_version.c new file mode 100644 index 000000000..b48b2ee20 --- /dev/null +++ b/Foundation/src/pcre_version.c @@ -0,0 +1,94 @@ +/************************************************* +* Perl-Compatible Regular Expressions * +*************************************************/ + +/* PCRE is a library of functions to support regular expressions whose syntax +and semantics are as close as possible to those of the Perl 5 language. + + Written by Philip Hazel + Copyright (c) 1997-2012 University of Cambridge + +----------------------------------------------------------------------------- +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + * Neither the name of the University of Cambridge nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +----------------------------------------------------------------------------- +*/ + + +/* This module contains the external function pcre_version(), which returns a +string that identifies the PCRE version that is in use. */ + +#include "pcre_config.h" +#include "pcre_internal.h" + + +/************************************************* +* Return version string * +*************************************************/ + +/* These macros are the standard way of turning unquoted text into C strings. +They allow macros like PCRE_MAJOR to be defined without quotes, which is +convenient for user programs that want to test its value. */ + +#define STRING(a) # a +#define XSTRING(s) STRING(s) + +/* A problem turned up with PCRE_PRERELEASE, which is defined empty for +production releases. Originally, it was used naively in this code: + + return XSTRING(PCRE_MAJOR) + "." XSTRING(PCRE_MINOR) + XSTRING(PCRE_PRERELEASE) + " " XSTRING(PCRE_DATE); + +However, when PCRE_PRERELEASE is empty, this leads to an attempted expansion of +STRING(). The C standard states: "If (before argument substitution) any +argument consists of no preprocessing tokens, the behavior is undefined." It +turns out the gcc treats this case as a single empty string - which is what we +really want - but Visual C grumbles about the lack of an argument for the +macro. Unfortunately, both are within their rights. To cope with both ways of +handling this, I had resort to some messy hackery that does a test at run time. +I could find no way of detecting that a macro is defined as an empty string at +pre-processor time. This hack uses a standard trick for avoiding calling +the STRING macro with an empty argument when doing the test. */ + +#if defined COMPILE_PCRE8 +PCRE_EXP_DEFN const char * PCRE_CALL_CONVENTION +pcre_version(void) +#elif defined COMPILE_PCRE16 +PCRE_EXP_DEFN const char * PCRE_CALL_CONVENTION +pcre16_version(void) +#elif defined COMPILE_PCRE32 +PCRE_EXP_DEFN const char * PCRE_CALL_CONVENTION +pcre32_version(void) +#endif +{ +return (XSTRING(Z PCRE_PRERELEASE)[1] == 0)? + XSTRING(PCRE_MAJOR.PCRE_MINOR PCRE_DATE) : + XSTRING(PCRE_MAJOR.PCRE_MINOR) XSTRING(PCRE_PRERELEASE PCRE_DATE); +} + +/* End of pcre_version.c */ diff --git a/Foundation/src/pcre_xclass.c b/Foundation/src/pcre_xclass.c index 2a602e4b9..2bc8ea6d1 100644 --- a/Foundation/src/pcre_xclass.c +++ b/Foundation/src/pcre_xclass.c @@ -6,7 +6,7 @@ and semantics are as close as possible to those of the Perl 5 language. Written by Philip Hazel - Copyright (c) 1997-2008 University of Cambridge + Copyright (c) 1997-2013 University of Cambridge ----------------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without @@ -39,9 +39,7 @@ POSSIBILITY OF SUCH DAMAGE. /* This module contains an internal function that is used to match an extended -class (one that contains characters whose values are > 255). It is used by both -pcre_exec() and pcre_def_exec(). */ - +class. It is used by both pcre_exec() and pcre_def_exec(). */ #include "pcre_config.h" #include "pcre_internal.h" @@ -52,7 +50,7 @@ pcre_exec() and pcre_def_exec(). */ *************************************************/ /* This function is called to match a character against an extended class that -might contain values > 255. +might contain values > 255 and/or Unicode properties. Arguments: c the character @@ -62,68 +60,190 @@ Returns: TRUE if character matches, else FALSE */ BOOL -_pcre_xclass(int c, const uschar *data) +PRIV(xclass)(pcre_uint32 c, const pcre_uchar *data, BOOL utf) { -int t; +pcre_uchar t; BOOL negated = (*data & XCL_NOT) != 0; +(void)utf; +#ifdef COMPILE_PCRE8 +/* In 8 bit mode, this must always be TRUE. Help the compiler to know that. */ +utf = TRUE; +#endif + /* Character values < 256 are matched against a bitmap, if one is present. If not, we still carry on, because there may be ranges that start below 256 in the additional data. */ if (c < 256) { - if ((*data & XCL_MAP) != 0 && (data[1 + c/8] & (1 << (c&7))) != 0) - return !negated; /* char found */ + if ((*data & XCL_HASPROP) == 0) + { + if ((*data & XCL_MAP) == 0) return negated; + return (((pcre_uint8 *)(data + 1))[c/8] & (1 << (c&7))) != 0; + } + if ((*data & XCL_MAP) != 0 && + (((pcre_uint8 *)(data + 1))[c/8] & (1 << (c&7))) != 0) + return !negated; /* char found */ } /* First skip the bit map if present. Then match against the list of Unicode properties or large chars or ranges that end with a large char. We won't ever encounter XCL_PROP or XCL_NOTPROP when UCP support is not compiled. */ -if ((*data++ & XCL_MAP) != 0) data += 32; +if ((*data++ & XCL_MAP) != 0) data += 32 / sizeof(pcre_uchar); while ((t = *data++) != XCL_END) { - int x, y; + pcre_uint32 x, y; if (t == XCL_SINGLE) { - GETCHARINC(x, data); +#ifdef SUPPORT_UTF + if (utf) + { + GETCHARINC(x, data); /* macro generates multiple statements */ + } + else +#endif + x = *data++; if (c == x) return !negated; } else if (t == XCL_RANGE) { - GETCHARINC(x, data); - GETCHARINC(y, data); +#ifdef SUPPORT_UTF + if (utf) + { + GETCHARINC(x, data); /* macro generates multiple statements */ + GETCHARINC(y, data); /* macro generates multiple statements */ + } + else +#endif + { + x = *data++; + y = *data++; + } if (c >= x && c <= y) return !negated; } #ifdef SUPPORT_UCP else /* XCL_PROP & XCL_NOTPROP */ { - const ucd_record * prop = GET_UCD(c); + const ucd_record *prop = GET_UCD(c); + BOOL isprop = t == XCL_PROP; switch(*data) { case PT_ANY: - if (t == XCL_PROP) return !negated; + if (isprop) return !negated; break; case PT_LAMP: - if ((prop->chartype == ucp_Lu || prop->chartype == ucp_Ll || prop->chartype == ucp_Lt) == - (t == XCL_PROP)) return !negated; + if ((prop->chartype == ucp_Lu || prop->chartype == ucp_Ll || + prop->chartype == ucp_Lt) == isprop) return !negated; break; case PT_GC: - if ((data[1] == _pcre_ucp_gentype[prop->chartype]) == (t == XCL_PROP)) return !negated; + if ((data[1] == PRIV(ucp_gentype)[prop->chartype]) == isprop) + return !negated; break; case PT_PC: - if ((data[1] == prop->chartype) == (t == XCL_PROP)) return !negated; + if ((data[1] == prop->chartype) == isprop) return !negated; break; case PT_SC: - if ((data[1] == prop->script) == (t == XCL_PROP)) return !negated; + if ((data[1] == prop->script) == isprop) return !negated; + break; + + case PT_ALNUM: + if ((PRIV(ucp_gentype)[prop->chartype] == ucp_L || + PRIV(ucp_gentype)[prop->chartype] == ucp_N) == isprop) + return !negated; + break; + + /* Perl space used to exclude VT, but from Perl 5.18 it is included, + which means that Perl space and POSIX space are now identical. PCRE + was changed at release 8.34. */ + + case PT_SPACE: /* Perl space */ + case PT_PXSPACE: /* POSIX space */ + switch(c) + { + HSPACE_CASES: + VSPACE_CASES: + if (isprop) return !negated; + break; + + default: + if ((PRIV(ucp_gentype)[prop->chartype] == ucp_Z) == isprop) + return !negated; + break; + } + break; + + case PT_WORD: + if ((PRIV(ucp_gentype)[prop->chartype] == ucp_L || + PRIV(ucp_gentype)[prop->chartype] == ucp_N || c == CHAR_UNDERSCORE) + == isprop) + return !negated; + break; + + case PT_UCNC: + if (c < 0xa0) + { + if ((c == CHAR_DOLLAR_SIGN || c == CHAR_COMMERCIAL_AT || + c == CHAR_GRAVE_ACCENT) == isprop) + return !negated; + } + else + { + if ((c < 0xd800 || c > 0xdfff) == isprop) + return !negated; + } + break; + + /* The following three properties can occur only in an XCLASS, as there + is no \p or \P coding for them. */ + + /* Graphic character. Implement this as not Z (space or separator) and + not C (other), except for Cf (format) with a few exceptions. This seems + to be what Perl does. The exceptional characters are: + + U+061C Arabic Letter Mark + U+180E Mongolian Vowel Separator + U+2066 - U+2069 Various "isolate"s + */ + + case PT_PXGRAPH: + if ((PRIV(ucp_gentype)[prop->chartype] != ucp_Z && + (PRIV(ucp_gentype)[prop->chartype] != ucp_C || + (prop->chartype == ucp_Cf && + c != 0x061c && c != 0x180e && (c < 0x2066 || c > 0x2069)) + )) == isprop) + return !negated; + break; + + /* Printable character: same as graphic, with the addition of Zs, i.e. + not Zl and not Zp, and U+180E. */ + + case PT_PXPRINT: + if ((prop->chartype != ucp_Zl && + prop->chartype != ucp_Zp && + (PRIV(ucp_gentype)[prop->chartype] != ucp_C || + (prop->chartype == ucp_Cf && + c != 0x061c && (c < 0x2066 || c > 0x2069)) + )) == isprop) + return !negated; + break; + + /* Punctuation: all Unicode punctuation, plus ASCII characters that + Unicode treats as symbols rather than punctuation, for Perl + compatibility (these are $+<=>^`|~). */ + + case PT_PXPUNCT: + if ((PRIV(ucp_gentype)[prop->chartype] == ucp_P || + (c < 256 && PRIV(ucp_gentype)[prop->chartype] == ucp_S)) == isprop) + return !negated; break; /* This should never occur, but compilers may mutter if there is no diff --git a/Foundation/src/trees.c b/Foundation/src/trees.c index 1fd7759ef..480303d9f 100644 --- a/Foundation/src/trees.c +++ b/Foundation/src/trees.c @@ -36,7 +36,7 @@ #include "deflate.h" -#ifdef DEBUG +#ifdef ZLIB_DEBUG # include #endif @@ -159,7 +159,7 @@ local void copy_block OF((deflate_state *s, charf *buf, unsigned len, local void gen_trees_header OF((void)); #endif -#ifndef DEBUG +#ifndef ZLIB_DEBUG # define send_code(s, c, tree) send_bits(s, tree[c].Code, tree[c].Len) /* Send a code of the given tree. c and tree must not have side effects */ @@ -182,7 +182,7 @@ local void gen_trees_header OF((void)); * Send a value on a given number of bits. * IN assertion: length <= 16 and value fits in length bits. */ -#ifdef DEBUG +#ifdef ZLIB_DEBUG local void send_bits OF((deflate_state *s, int value, int length)); local void send_bits(s, value, length) @@ -394,7 +394,7 @@ void ZLIB_INTERNAL _tr_init(s) s->bi_buf = 0; s->bi_valid = 0; -#ifdef DEBUG +#ifdef ZLIB_DEBUG s->compressed_len = 0L; s->bits_sent = 0L; #endif @@ -869,7 +869,7 @@ void ZLIB_INTERNAL _tr_stored_block(s, buf, stored_len, last) int last; /* one if this is the last block for a file */ { send_bits(s, (STORED_BLOCK<<1)+last, 3); /* send block type */ -#ifdef DEBUG +#ifdef ZLIB_DEBUG s->compressed_len = (s->compressed_len + 3 + 7) & (ulg)~7L; s->compressed_len += (stored_len + 4) << 3; #endif @@ -894,7 +894,7 @@ void ZLIB_INTERNAL _tr_align(s) { send_bits(s, STATIC_TREES<<1, 3); send_code(s, END_BLOCK, static_ltree); -#ifdef DEBUG +#ifdef ZLIB_DEBUG s->compressed_len += 10L; /* 3 for block type, 7 for EOB */ #endif bi_flush(s); @@ -974,7 +974,7 @@ void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last) send_bits(s, (STATIC_TREES<<1)+last, 3); compress_block(s, (const ct_data *)static_ltree, (const ct_data *)static_dtree); -#ifdef DEBUG +#ifdef ZLIB_DEBUG s->compressed_len += 3 + s->static_len; #endif } else { @@ -983,7 +983,7 @@ void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last) max_blindex+1); compress_block(s, (const ct_data *)s->dyn_ltree, (const ct_data *)s->dyn_dtree); -#ifdef DEBUG +#ifdef ZLIB_DEBUG s->compressed_len += 3 + s->opt_len; #endif } @@ -995,7 +995,7 @@ void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last) if (last) { bi_windup(s); -#ifdef DEBUG +#ifdef ZLIB_DEBUG s->compressed_len += 7; /* align on byte boundary */ #endif } @@ -1193,7 +1193,7 @@ local void bi_windup(s) } s->bi_buf = 0; s->bi_valid = 0; -#ifdef DEBUG +#ifdef ZLIB_DEBUG s->bits_sent = (s->bits_sent+7) & ~7; #endif } @@ -1213,11 +1213,11 @@ local void copy_block(s, buf, len, header) if (header) { put_short(s, (ush)len); put_short(s, (ush)~len); -#ifdef DEBUG +#ifdef ZLIB_DEBUG s->bits_sent += 2*16; #endif } -#ifdef DEBUG +#ifdef ZLIB_DEBUG s->bits_sent += (ulg)len<<3; #endif while (len--) { diff --git a/Foundation/src/ucp.h b/Foundation/src/ucp.h index 1968e4765..d8b34bfcc 100644 --- a/Foundation/src/ucp.h +++ b/Foundation/src/ucp.h @@ -6,9 +6,15 @@ #define _UCP_H /* This file contains definitions of the property values that are returned by -the function _pcre_ucp_findprop(). New values that are added for new releases -of Unicode should always be at the end of each enum, for backwards -compatibility. */ +the UCD access macros. New values that are added for new releases of Unicode +should always be at the end of each enum, for backwards compatibility. + +IMPORTANT: Note also that the specific numeric values of the enums have to be +the same as the values that are generated by the maint/MultiStage2.py script, +where the equivalent property descriptive names are listed in vectors. + +ALSO: The specific values of the first two enums are assumed for the table +called catposstab in pcre_compile.c. */ /* These are the general character categories. */ @@ -22,7 +28,7 @@ enum { ucp_Z /* Separator */ }; -/* These are the particular character types. */ +/* These are the particular character categories. */ enum { ucp_Cc, /* Control */ @@ -57,6 +63,26 @@ enum { ucp_Zs /* Space separator */ }; +/* These are grapheme break properties. Note that the code for processing them +assumes that the values are less than 16. If more values are added that take +the number to 16 or more, the code will have to be rewritten. */ + +enum { + ucp_gbCR, /* 0 */ + ucp_gbLF, /* 1 */ + ucp_gbControl, /* 2 */ + ucp_gbExtend, /* 3 */ + ucp_gbPrepend, /* 4 */ + ucp_gbSpacingMark, /* 5 */ + ucp_gbL, /* 6 Hangul syllable type L */ + ucp_gbV, /* 7 Hangul syllable type V */ + ucp_gbT, /* 8 Hangul syllable type T */ + ucp_gbLV, /* 9 Hangul syllable type LV */ + ucp_gbLVT, /* 10 Hangul syllable type LVT */ + ucp_gbRegionalIndicator, /* 11 */ + ucp_gbOther /* 12 */ +}; + /* These are the script identifications. */ enum { @@ -138,7 +164,35 @@ enum { ucp_Rejang, ucp_Saurashtra, ucp_Sundanese, - ucp_Vai + ucp_Vai, + /* New for Unicode 5.2: */ + ucp_Avestan, + ucp_Bamum, + ucp_Egyptian_Hieroglyphs, + ucp_Imperial_Aramaic, + ucp_Inscriptional_Pahlavi, + ucp_Inscriptional_Parthian, + ucp_Javanese, + ucp_Kaithi, + ucp_Lisu, + ucp_Meetei_Mayek, + ucp_Old_South_Arabian, + ucp_Old_Turkic, + ucp_Samaritan, + ucp_Tai_Tham, + ucp_Tai_Viet, + /* New for Unicode 6.0.0: */ + ucp_Batak, + ucp_Brahmi, + ucp_Mandaic, + /* New for Unicode 6.1.0: */ + ucp_Chakma, + ucp_Meroitic_Cursive, + ucp_Meroitic_Hieroglyphs, + ucp_Miao, + ucp_Sharada, + ucp_Sora_Sompeng, + ucp_Takri }; #endif diff --git a/Foundation/src/zutil.c b/Foundation/src/zutil.c index ea7930a20..083c9f58c 100644 --- a/Foundation/src/zutil.c +++ b/Foundation/src/zutil.c @@ -61,7 +61,7 @@ uLong ZEXPORT zlibCompileFlags() case 8: flags += 2 << 6; break; default: flags += 3 << 6; } -#ifdef DEBUG +#ifdef ZLIB_DEBUG flags += 1 << 8; #endif #if defined(ASMV) || defined(ASMINF) @@ -115,7 +115,7 @@ uLong ZEXPORT zlibCompileFlags() return flags; } -#ifdef DEBUG +#ifdef ZLIB_DEBUG # ifndef verbose # define verbose 0 diff --git a/Foundation/src/zutil.h b/Foundation/src/zutil.h index 3be77f5f1..dd28aa337 100644 --- a/Foundation/src/zutil.h +++ b/Foundation/src/zutil.h @@ -216,7 +216,7 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ #endif /* Diagnostic functions */ -#ifdef DEBUG +#ifdef ZLIB_DEBUG # include extern int ZLIB_INTERNAL z_verbose; extern void ZLIB_INTERNAL z_error OF((char *m)); diff --git a/Foundation/testsuite/TestApp_CE_vs90.vcproj b/Foundation/testsuite/TestApp_CE_vs90.vcproj index 12ee674d6..d19a822d3 100644 --- a/Foundation/testsuite/TestApp_CE_vs90.vcproj +++ b/Foundation/testsuite/TestApp_CE_vs90.vcproj @@ -18,8 +18,8 @@ <_ProjectFileVersion>10.0.30319.1 - bin\TestApp\$(Platform)\ + bin\$(Platform)\ obj\TestApp\$(Platform)\$(Configuration)\ true - bin\TestApp\$(Platform)\ + bin\$(Platform)\ obj\TestApp\$(Platform)\$(Configuration)\ false - bin\TestApp\$(Platform)\static_md\ + bin\$(Platform)\static_md\ obj\TestApp\$(Platform)\$(Configuration)\ false - bin\TestApp\$(Platform)\static_md\ + bin\$(Platform)\static_md\ obj\TestApp\$(Platform)\$(Configuration)\ true - bin\TestApp\$(Platform)\static_mt\ + bin\$(Platform)\static_mt\ obj\TestApp\$(Platform)\$(Configuration)\ true - bin\TestApp\$(Platform)\static_mt\ + bin\$(Platform)\static_mt\ obj\TestApp\$(Platform)\$(Configuration)\ false TestApp diff --git a/Foundation/testsuite/TestApp_WEC2013_vs120.vcxproj b/Foundation/testsuite/TestApp_WEC2013_vs120.vcxproj index e8ec9974e..7dec1f844 100644 --- a/Foundation/testsuite/TestApp_WEC2013_vs120.vcxproj +++ b/Foundation/testsuite/TestApp_WEC2013_vs120.vcxproj @@ -90,22 +90,22 @@ <_ProjectFileVersion>10.0.30319.1 - bin\TestApp\$(Platform)\ + bin\$(Platform)\ obj\TestApp\$(Platform)\$(Configuration)\ true - bin\TestApp\$(Platform)\ + bin\$(Platform)\ obj\TestApp\$(Platform)\$(Configuration)\ false - bin\TestApp\$(Platform)\static_md\ + bin\$(Platform)\static_md\ obj\TestApp\$(Platform)\$(Configuration)\ false - bin\TestApp\$(Platform)\static_md\ + bin\$(Platform)\static_md\ obj\TestApp\$(Platform)\$(Configuration)\ true - bin\TestApp\$(Platform)\static_mt\ + bin\$(Platform)\static_mt\ obj\TestApp\$(Platform)\$(Configuration)\ true - bin\TestApp\$(Platform)\static_mt\ + bin\$(Platform)\static_mt\ obj\TestApp\$(Platform)\$(Configuration)\ false TestApp diff --git a/Foundation/testsuite/TestApp_vs100.vcxproj b/Foundation/testsuite/TestApp_vs100.vcxproj index 84f79234c..a1d7bf855 100644 --- a/Foundation/testsuite/TestApp_vs100.vcxproj +++ b/Foundation/testsuite/TestApp_vs100.vcxproj @@ -94,22 +94,22 @@ <_ProjectFileVersion>10.0.30319.1 bin\ - obj\$(Configuration)\ + obj\TestApp\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TestApp\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestApp\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestApp\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestApp\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestApp\$(Configuration)\ false TestApp TestAppd diff --git a/Foundation/testsuite/TestApp_vs110.vcxproj b/Foundation/testsuite/TestApp_vs110.vcxproj index 3a0f1e1e3..7a9f1b4e6 100644 --- a/Foundation/testsuite/TestApp_vs110.vcxproj +++ b/Foundation/testsuite/TestApp_vs110.vcxproj @@ -100,22 +100,22 @@ <_ProjectFileVersion>10.0.30319.1 bin\ - obj\$(Configuration)\ + obj\TestApp\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TestApp\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestApp\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestApp\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestApp\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestApp\$(Configuration)\ false TestApp TestAppd diff --git a/Foundation/testsuite/TestApp_vs120.vcxproj b/Foundation/testsuite/TestApp_vs120.vcxproj index d19b44e37..6d24e5b74 100644 --- a/Foundation/testsuite/TestApp_vs120.vcxproj +++ b/Foundation/testsuite/TestApp_vs120.vcxproj @@ -100,22 +100,22 @@ <_ProjectFileVersion>10.0.30319.1 bin\ - obj\$(Configuration)\ + obj\TestApp\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TestApp\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestApp\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestApp\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestApp\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestApp\$(Configuration)\ false TestApp TestAppd diff --git a/Foundation/testsuite/TestApp_vs71.vcproj b/Foundation/testsuite/TestApp_vs71.vcproj index d37d093fd..41e6e904f 100644 --- a/Foundation/testsuite/TestApp_vs71.vcproj +++ b/Foundation/testsuite/TestApp_vs71.vcproj @@ -12,8 +12,8 @@ @@ -70,8 +70,8 @@ @@ -133,8 +133,8 @@ @@ -191,8 +191,8 @@ @@ -254,8 +254,8 @@ @@ -312,8 +312,8 @@ diff --git a/Foundation/testsuite/TestApp_vs80.vcproj b/Foundation/testsuite/TestApp_vs80.vcproj index dc697ada1..f94fb3409 100644 --- a/Foundation/testsuite/TestApp_vs80.vcproj +++ b/Foundation/testsuite/TestApp_vs80.vcproj @@ -17,8 +17,8 @@ <_ProjectFileVersion>10.0.30319.1 bin64\ - obj64\$(Configuration)\ + obj64\TestApp\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TestApp\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestApp\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestApp\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestApp\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestApp\$(Configuration)\ false TestAppd TestAppd diff --git a/Foundation/testsuite/TestApp_x64_vs110.vcxproj b/Foundation/testsuite/TestApp_x64_vs110.vcxproj index f430a8388..879d5ff7f 100644 --- a/Foundation/testsuite/TestApp_x64_vs110.vcxproj +++ b/Foundation/testsuite/TestApp_x64_vs110.vcxproj @@ -100,22 +100,22 @@ <_ProjectFileVersion>10.0.30319.1 bin64\ - obj64\$(Configuration)\ + obj64\TestApp\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TestApp\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestApp\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestApp\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestApp\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestApp\$(Configuration)\ false TestAppd TestAppd diff --git a/Foundation/testsuite/TestApp_x64_vs120.vcxproj b/Foundation/testsuite/TestApp_x64_vs120.vcxproj index ef28a4a8c..24b02cdbe 100644 --- a/Foundation/testsuite/TestApp_x64_vs120.vcxproj +++ b/Foundation/testsuite/TestApp_x64_vs120.vcxproj @@ -100,22 +100,22 @@ <_ProjectFileVersion>10.0.30319.1 bin64\ - obj64\$(Configuration)\ + obj64\TestApp\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TestApp\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestApp\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestApp\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestApp\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestApp\$(Configuration)\ false TestAppd TestAppd diff --git a/Foundation/testsuite/TestApp_x64_vs90.vcproj b/Foundation/testsuite/TestApp_x64_vs90.vcproj index 61207c330..2988eb30c 100644 --- a/Foundation/testsuite/TestApp_x64_vs90.vcproj +++ b/Foundation/testsuite/TestApp_x64_vs90.vcproj @@ -18,8 +18,8 @@ @@ -108,8 +108,8 @@ @@ -204,8 +204,8 @@ @@ -296,8 +296,8 @@ @@ -394,8 +394,8 @@ @@ -486,8 +486,8 @@ diff --git a/Foundation/testsuite/TestLibrary_WEC2013_vs110.vcxproj b/Foundation/testsuite/TestLibrary_WEC2013_vs110.vcxproj index a8bb0d80c..b38819fb3 100644 --- a/Foundation/testsuite/TestLibrary_WEC2013_vs110.vcxproj +++ b/Foundation/testsuite/TestLibrary_WEC2013_vs110.vcxproj @@ -42,11 +42,11 @@ <_ProjectFileVersion>10.0.30319.1 - bin\TestLibrary\$(Platform)\ + bin\$(Platform)\ obj\TestLibrary\$(Platform)\$(Configuration)\ true true - bin\TestLibrary\$(Platform)\ + bin\$(Platform)\ obj\TestLibrary\$(Platform)\$(Configuration)\ true false diff --git a/Foundation/testsuite/TestLibrary_WEC2013_vs120.vcxproj b/Foundation/testsuite/TestLibrary_WEC2013_vs120.vcxproj index cef024626..872e6fa34 100644 --- a/Foundation/testsuite/TestLibrary_WEC2013_vs120.vcxproj +++ b/Foundation/testsuite/TestLibrary_WEC2013_vs120.vcxproj @@ -42,11 +42,11 @@ <_ProjectFileVersion>10.0.30319.1 - bin\TestLibrary\$(Platform)\ + bin\$(Platform)\ obj\TestLibrary\$(Platform)\$(Configuration)\ true true - bin\TestLibrary\$(Platform)\ + bin\$(Platform)\ obj\TestLibrary\$(Platform)\$(Configuration)\ true false diff --git a/Foundation/testsuite/TestLibrary_vs100.vcxproj b/Foundation/testsuite/TestLibrary_vs100.vcxproj index 2ae938cc5..f6a6d4752 100644 --- a/Foundation/testsuite/TestLibrary_vs100.vcxproj +++ b/Foundation/testsuite/TestLibrary_vs100.vcxproj @@ -37,11 +37,11 @@ <_ProjectFileVersion>10.0.30319.1 bin\ - obj\$(Configuration)\ + obj\TestLibrary\$(Configuration)\ true true bin\ - obj\$(Configuration)\ + obj\TestLibrary\$(Configuration)\ true false TestLibrary diff --git a/Foundation/testsuite/TestLibrary_vs110.vcxproj b/Foundation/testsuite/TestLibrary_vs110.vcxproj index 5c86d4bff..544480a64 100644 --- a/Foundation/testsuite/TestLibrary_vs110.vcxproj +++ b/Foundation/testsuite/TestLibrary_vs110.vcxproj @@ -39,11 +39,11 @@ <_ProjectFileVersion>10.0.30319.1 bin\ - obj\$(Configuration)\ + obj\TestLibrary\$(Configuration)\ true true bin\ - obj\$(Configuration)\ + obj\TestLibrary\$(Configuration)\ true false TestLibrary diff --git a/Foundation/testsuite/TestLibrary_vs120.vcxproj b/Foundation/testsuite/TestLibrary_vs120.vcxproj index f78ffbe7c..4fae8f959 100644 --- a/Foundation/testsuite/TestLibrary_vs120.vcxproj +++ b/Foundation/testsuite/TestLibrary_vs120.vcxproj @@ -39,11 +39,11 @@ <_ProjectFileVersion>10.0.30319.1 bin\ - obj\$(Configuration)\ + obj\TestLibrary\$(Configuration)\ true true bin\ - obj\$(Configuration)\ + obj\TestLibrary\$(Configuration)\ true false TestLibrary diff --git a/Foundation/testsuite/TestLibrary_vs71.vcproj b/Foundation/testsuite/TestLibrary_vs71.vcproj index 795c736f6..182d494ae 100644 --- a/Foundation/testsuite/TestLibrary_vs71.vcproj +++ b/Foundation/testsuite/TestLibrary_vs71.vcproj @@ -12,8 +12,8 @@ @@ -104,8 +104,8 @@ diff --git a/Foundation/testsuite/TestLibrary_vs90.vcproj b/Foundation/testsuite/TestLibrary_vs90.vcproj index 4165b032a..f96093da9 100644 --- a/Foundation/testsuite/TestLibrary_vs90.vcproj +++ b/Foundation/testsuite/TestLibrary_vs90.vcproj @@ -17,8 +17,8 @@ @@ -101,8 +101,8 @@ diff --git a/Foundation/testsuite/TestLibrary_x64_vs100.vcxproj b/Foundation/testsuite/TestLibrary_x64_vs100.vcxproj index 8ab0988a6..4e0debe78 100644 --- a/Foundation/testsuite/TestLibrary_x64_vs100.vcxproj +++ b/Foundation/testsuite/TestLibrary_x64_vs100.vcxproj @@ -37,11 +37,11 @@ <_ProjectFileVersion>10.0.30319.1 bin64\ - obj64\$(Configuration)\ + obj64\TestLibrary\$(Configuration)\ true true bin64\ - obj64\$(Configuration)\ + obj64\TestLibrary\$(Configuration)\ true false TestLibraryd diff --git a/Foundation/testsuite/TestLibrary_x64_vs110.vcxproj b/Foundation/testsuite/TestLibrary_x64_vs110.vcxproj index c7b7b53ef..67a0c9722 100644 --- a/Foundation/testsuite/TestLibrary_x64_vs110.vcxproj +++ b/Foundation/testsuite/TestLibrary_x64_vs110.vcxproj @@ -39,11 +39,11 @@ <_ProjectFileVersion>10.0.30319.1 bin64\ - obj64\$(Configuration)\ + obj64\TestLibrary\$(Configuration)\ true true bin64\ - obj64\$(Configuration)\ + obj64\TestLibrary\$(Configuration)\ true false TestLibraryd diff --git a/Foundation/testsuite/TestLibrary_x64_vs120.vcxproj b/Foundation/testsuite/TestLibrary_x64_vs120.vcxproj index 0d0d2ba63..9273693aa 100644 --- a/Foundation/testsuite/TestLibrary_x64_vs120.vcxproj +++ b/Foundation/testsuite/TestLibrary_x64_vs120.vcxproj @@ -39,11 +39,11 @@ <_ProjectFileVersion>10.0.30319.1 bin64\ - obj64\$(Configuration)\ + obj64\TestLibrary\$(Configuration)\ true true bin64\ - obj64\$(Configuration)\ + obj64\TestLibrary\$(Configuration)\ true false TestLibraryd diff --git a/Foundation/testsuite/TestLibrary_x64_vs90.vcproj b/Foundation/testsuite/TestLibrary_x64_vs90.vcproj index e7648c571..e49b97113 100644 --- a/Foundation/testsuite/TestLibrary_x64_vs90.vcproj +++ b/Foundation/testsuite/TestLibrary_x64_vs90.vcproj @@ -17,8 +17,8 @@ @@ -100,8 +100,8 @@ diff --git a/Foundation/testsuite/TestSuite_CE_vs90.vcproj b/Foundation/testsuite/TestSuite_CE_vs90.vcproj index 9574a7552..ec965cc18 100644 --- a/Foundation/testsuite/TestSuite_CE_vs90.vcproj +++ b/Foundation/testsuite/TestSuite_CE_vs90.vcproj @@ -18,8 +18,8 @@ <_ProjectFileVersion>10.0.30319.1 bin\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false TestSuited TestSuited diff --git a/Foundation/testsuite/TestSuite_WEC2013_vs120.vcxproj b/Foundation/testsuite/TestSuite_WEC2013_vs120.vcxproj index 560d6cbe6..bf0f80d9c 100644 --- a/Foundation/testsuite/TestSuite_WEC2013_vs120.vcxproj +++ b/Foundation/testsuite/TestSuite_WEC2013_vs120.vcxproj @@ -91,22 +91,22 @@ <_ProjectFileVersion>10.0.30319.1 bin\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false TestSuited TestSuited @@ -115,6 +115,9 @@ TestSuite TestSuite + + Storage_Card\ + Disabled diff --git a/Foundation/testsuite/TestSuite_vs100.vcxproj b/Foundation/testsuite/TestSuite_vs100.vcxproj index 67b1946bf..5c00215c6 100644 --- a/Foundation/testsuite/TestSuite_vs100.vcxproj +++ b/Foundation/testsuite/TestSuite_vs100.vcxproj @@ -87,22 +87,22 @@ <_ProjectFileVersion>10.0.30319.1 bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false TestSuited TestSuited diff --git a/Foundation/testsuite/TestSuite_vs110.vcxproj b/Foundation/testsuite/TestSuite_vs110.vcxproj index 2e575559e..12af3746f 100644 --- a/Foundation/testsuite/TestSuite_vs110.vcxproj +++ b/Foundation/testsuite/TestSuite_vs110.vcxproj @@ -93,22 +93,22 @@ <_ProjectFileVersion>10.0.30319.1 bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false TestSuited TestSuited diff --git a/Foundation/testsuite/TestSuite_vs120.vcxproj b/Foundation/testsuite/TestSuite_vs120.vcxproj index 5aaf9f870..7b9b07f68 100644 --- a/Foundation/testsuite/TestSuite_vs120.vcxproj +++ b/Foundation/testsuite/TestSuite_vs120.vcxproj @@ -93,22 +93,22 @@ <_ProjectFileVersion>10.0.30319.1 bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false TestSuited TestSuited diff --git a/Foundation/testsuite/TestSuite_vs71.vcproj b/Foundation/testsuite/TestSuite_vs71.vcproj index dddcc36db..c9c589105 100644 --- a/Foundation/testsuite/TestSuite_vs71.vcproj +++ b/Foundation/testsuite/TestSuite_vs71.vcproj @@ -12,8 +12,8 @@ @@ -72,8 +72,8 @@ @@ -137,8 +137,8 @@ @@ -197,8 +197,8 @@ @@ -262,8 +262,8 @@ @@ -323,8 +323,8 @@ diff --git a/Foundation/testsuite/TestSuite_vs80.vcproj b/Foundation/testsuite/TestSuite_vs80.vcproj index f530a6376..369511176 100644 --- a/Foundation/testsuite/TestSuite_vs80.vcproj +++ b/Foundation/testsuite/TestSuite_vs80.vcproj @@ -17,8 +17,8 @@ <_ProjectFileVersion>10.0.30319.1 bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false TestSuited TestSuited diff --git a/Foundation/testsuite/TestSuite_x64_vs110.vcxproj b/Foundation/testsuite/TestSuite_x64_vs110.vcxproj index ac687f7f4..d6f2f49bc 100644 --- a/Foundation/testsuite/TestSuite_x64_vs110.vcxproj +++ b/Foundation/testsuite/TestSuite_x64_vs110.vcxproj @@ -93,22 +93,22 @@ <_ProjectFileVersion>10.0.30319.1 bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false TestSuited TestSuited diff --git a/Foundation/testsuite/TestSuite_x64_vs120.vcxproj b/Foundation/testsuite/TestSuite_x64_vs120.vcxproj index 14a296c9c..af0a446fa 100644 --- a/Foundation/testsuite/TestSuite_x64_vs120.vcxproj +++ b/Foundation/testsuite/TestSuite_x64_vs120.vcxproj @@ -93,22 +93,22 @@ <_ProjectFileVersion>10.0.30319.1 bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false TestSuited TestSuited diff --git a/Foundation/testsuite/TestSuite_x64_vs90.vcproj b/Foundation/testsuite/TestSuite_x64_vs90.vcproj index b3732cbba..704ac1cf2 100644 --- a/Foundation/testsuite/TestSuite_x64_vs90.vcproj +++ b/Foundation/testsuite/TestSuite_x64_vs90.vcproj @@ -17,8 +17,8 @@ f(20); Buffer b(10); @@ -842,7 +870,34 @@ void CoreTest::testFIFOBufferInt() assert (16 == f[1]); assert (17 == f[2]); assert (18 == f[3]); - assert (19 == f[4]); + assert(19 == f[4]); + + f.drain(9); + assert(10 == f.size()); + assert(0 == f.used()); + assert(10 == f.available()); + + const int e[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 }; + f.copy(&e[0], 10); + assert(10 == f.size()); + assert(10 == f.used()); + assert(0 == f.available()); + f.drain(1); + f.write(e, 1); + assert(10 == f.size()); + assert(10 == f.used()); + assert(0 == f.available()); + + assert(f[0] == 2); + assert(f[1] == 3); + assert(f[2] == 4); + assert(f[3] == 5); + assert(f[4] == 6); + assert(f[5] == 7); + assert(f[6] == 8); + assert(f[7] == 9); + assert(f[8] == 0); + assert(f[9] == 1); f.resize(3, false); assert (3 == f.size()); diff --git a/Foundation/testsuite/src/ProcessTest.cpp b/Foundation/testsuite/src/ProcessTest.cpp index b133dfe5f..3ea533fb0 100644 --- a/Foundation/testsuite/src/ProcessTest.cpp +++ b/Foundation/testsuite/src/ProcessTest.cpp @@ -93,37 +93,6 @@ void ProcessTest::testLaunchRedirectIn() } -void ProcessTest::testIsRunning() -{ - std::string name("TestApp"); - std::string cmd; -#if defined(_DEBUG) - name += "d"; -#endif - -#if defined(POCO_OS_FAMILY_UNIX) - cmd = "./"; - cmd += name; -#else - cmd = name; -#endif - - std::vector args; - args.push_back("-count"); - Pipe inPipe; - ProcessHandle ph = Process::launch(cmd, args, &inPipe, 0, 0); - Process::PID id = ph.id(); - assert (Process::isRunning(ph)); - assert (Process::isRunning(id)); - PipeOutputStream ostr(inPipe); - ostr << std::string(100, 'x'); - ostr.close(); - int rc = ph.wait(); - assert (!Process::isRunning(ph)); - assert (!Process::isRunning(id)); -} - - void ProcessTest::testLaunchRedirectOut() { #if !defined(_WIN32_WCE) @@ -188,6 +157,39 @@ void ProcessTest::testLaunchEnv() } +void ProcessTest::testIsRunning() +{ +#if !defined(_WIN32_WCE) + std::string name("TestApp"); + std::string cmd; +#if defined(_DEBUG) + name += "d"; +#endif + +#if defined(POCO_OS_FAMILY_UNIX) + cmd = "./"; + cmd += name; +#else + cmd = name; +#endif + + std::vector args; + args.push_back("-count"); + Pipe inPipe; + ProcessHandle ph = Process::launch(cmd, args, &inPipe, 0, 0); + Process::PID id = ph.id(); + assert (Process::isRunning(ph)); + assert (Process::isRunning(id)); + PipeOutputStream ostr(inPipe); + ostr << std::string(100, 'x'); + ostr.close(); + int rc = ph.wait(); + assert (!Process::isRunning(ph)); + assert (!Process::isRunning(id)); +#endif // !defined(_WIN32_WCE) +} + + void ProcessTest::setUp() { } diff --git a/Foundation/testsuite/src/StringTest.cpp b/Foundation/testsuite/src/StringTest.cpp index 9d4d86a46..a317c5413 100644 --- a/Foundation/testsuite/src/StringTest.cpp +++ b/Foundation/testsuite/src/StringTest.cpp @@ -594,6 +594,10 @@ void StringTest::testStringToDouble() assert(strToDouble(format("12%c3456789012345678901234567890", ds), result, ds, ts)); assertEqualDelta(12.34, result, 0.01); + assert(strToDouble("1234345", result, ds, ts)); + assertEqualDelta(1234345, result, 0.00000001); + assert(strToDouble(format("1%c234%c345", ts, ts), result, ds, ts)); + assertEqualDelta(1234345, result, 0.00000001); assert(strToDouble(format("1%c234%c3456789012345678901234567890", ts, ds), result, ds, ts)); assertEqualDelta(1234.3456789, result, 0.00000001); assert(strToDouble(format("12%c345%c3456789012345678901234567890", ts, ds), result, ds, ts)); @@ -992,6 +996,11 @@ void StringTest::testFloatToString() assert (doubleToStr(str, val, 2, 22, ',') == "-10,372,157,551,632.90"); assert (doubleToStr(str, val, 2, 22, '.', ',') == "-10.372.157.551.632,90"); assert (doubleToStr(str, val, 2, 22, ' ', ',') == "-10 372 157 551 632,90"); + + int ival = 1234567890; + assert(doubleToStr(str, ival, 1, 15, ',') == "1,234,567,890.0"); + ival = -123456789; + assert(doubleToStr(str, ival, 1, 14, ',') == "-123,456,789.0"); } diff --git a/Foundation/testsuite/src/URITest.cpp b/Foundation/testsuite/src/URITest.cpp index 382455f36..709a60f5c 100644 --- a/Foundation/testsuite/src/URITest.cpp +++ b/Foundation/testsuite/src/URITest.cpp @@ -14,9 +14,11 @@ #include "CppUnit/TestCaller.h" #include "CppUnit/TestSuite.h" #include "Poco/URI.h" +#include "Poco/Path.h" using Poco::URI; +using Poco::Path; URITest::URITest(const std::string& name): CppUnit::TestCase(name) @@ -774,6 +776,22 @@ void URITest::testEncodeDecode() } +void URITest::testFromPath() +{ + Path path1("/var/www/site/index.html", Path::PATH_UNIX); + URI uri1(path1); + assert (uri1.toString() == "file:///var/www/site/index.html"); + + Path path2("/var/www/site/with space.html", Path::PATH_UNIX); + URI uri2(path2); + assert (uri2.toString() == "file:///var/www/site/with%20space.html"); + + Path path3("c:\\www\\index.html", Path::PATH_WINDOWS); + URI uri3(path3); + assert (uri3.toString() == "file:///c:/www/index.html"); +} + + void URITest::setUp() { } @@ -797,6 +815,7 @@ CppUnit::Test* URITest::suite() CppUnit_addTest(pSuite, URITest, testSwap); CppUnit_addTest(pSuite, URITest, testEncodeDecode); CppUnit_addTest(pSuite, URITest, testOther); + CppUnit_addTest(pSuite, URITest, testFromPath); return pSuite; } diff --git a/Foundation/testsuite/src/URITest.h b/Foundation/testsuite/src/URITest.h index 94bb29741..a0cbc4784 100644 --- a/Foundation/testsuite/src/URITest.h +++ b/Foundation/testsuite/src/URITest.h @@ -35,6 +35,7 @@ public: void testSwap(); void testEncodeDecode(); void testOther(); + void testFromPath(); void setUp(); void tearDown(); diff --git a/JSON/JSON_CE_vs90.vcproj b/JSON/JSON_CE_vs90.vcproj index 790c83040..266a2b96e 100644 --- a/JSON/JSON_CE_vs90.vcproj +++ b/JSON/JSON_CE_vs90.vcproj @@ -44,7 +44,8 @@ DebugInformationFormat="3" DisableSpecificWarnings="4800;" CompileForArchitecture="2" - InterworkCalls="false"/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> ..\bin\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\JSON\$(Platform)\$(Configuration)\ true true ..\bin\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\JSON\$(Platform)\$(Configuration)\ false true ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\JSON\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\JSON\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\JSON\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\JSON\$(Platform)\$(Configuration)\ diff --git a/JSON/JSON_WEC2013_vs110.vcxproj.filters b/JSON/JSON_WEC2013_vs110.vcxproj.filters index 2804833ec..6b8cbe692 100644 --- a/JSON/JSON_WEC2013_vs110.vcxproj.filters +++ b/JSON/JSON_WEC2013_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {dfcabf6f-94dc-449e-9593-79d51e277482} + {794391f1-89a5-4a02-9d43-2344dcf0256b} - {b6a8b505-ea9f-4137-a9a0-ea0e4d85abf8} + {262db57a-73f1-4a65-b2b8-095980dde4e9} diff --git a/JSON/JSON_WEC2013_vs120.vcxproj b/JSON/JSON_WEC2013_vs120.vcxproj index 89df2cc90..9c8ce9f3e 100644 --- a/JSON/JSON_WEC2013_vs120.vcxproj +++ b/JSON/JSON_WEC2013_vs120.vcxproj @@ -98,31 +98,31 @@ ..\bin\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\JSON\$(Platform)\$(Configuration)\ true true ..\bin\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\JSON\$(Platform)\$(Configuration)\ false true ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\JSON\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\JSON\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\JSON\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\JSON\$(Platform)\$(Configuration)\ diff --git a/JSON/JSON_WEC2013_vs120.vcxproj.filters b/JSON/JSON_WEC2013_vs120.vcxproj.filters index 66e910398..5dff0812c 100644 --- a/JSON/JSON_WEC2013_vs120.vcxproj.filters +++ b/JSON/JSON_WEC2013_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {33f622a6-c066-4eca-afb7-af178bc840a8} + {87ea1bc7-2d79-46f8-a792-42d6e1e94553} - {cd0c396e-fa03-45f7-a6c1-10c9a996a37c} + {47eb4c8d-3435-426f-b50d-1c754ce65e75} diff --git a/JSON/JSON_vs100.vcxproj b/JSON/JSON_vs100.vcxproj index 08ff799e5..76152d821 100644 --- a/JSON/JSON_vs100.vcxproj +++ b/JSON/JSON_vs100.vcxproj @@ -81,19 +81,19 @@ <_ProjectFileVersion>10.0.40219.1 ..\bin\ - obj\$(Configuration)\ + obj\JSON\$(Configuration)\ true ..\bin\ - obj\$(Configuration)\ + obj\JSON\$(Configuration)\ false ..\lib\ - obj\$(Configuration)\ + obj\JSON\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\JSON\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\JSON\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\JSON\$(Configuration)\ PocoJSONd PocoJSONmdd PocoJSONmtd @@ -119,6 +119,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) @@ -130,6 +131,7 @@ Console ..\lib\PocoJSONd.lib MachineX86 + %(AdditionalOptions) @@ -152,6 +154,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) @@ -164,6 +167,7 @@ true ..\lib\PocoJSON.lib MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib\PocoJSONmtd.lib @@ -210,6 +215,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib\PocoJSONmt.lib @@ -234,6 +240,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib\PocoJSONmdd.lib @@ -260,6 +267,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) diff --git a/JSON/JSON_vs100.vcxproj.filters b/JSON/JSON_vs100.vcxproj.filters index 22904fa00..c24afc8f4 100644 --- a/JSON/JSON_vs100.vcxproj.filters +++ b/JSON/JSON_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {dd559b4a-8469-4796-bdbf-5708f68a6bd4} + {1a7d6505-eda6-491e-8dbc-c0da59e82c2c} - {bfc9a21a-0b9e-41a5-91d2-a57343199157} + {79e12fdd-383a-4b5d-8827-3af94583dcfa} diff --git a/JSON/JSON_vs110.vcxproj b/JSON/JSON_vs110.vcxproj index 08e2ad59c..191907ec3 100644 --- a/JSON/JSON_vs110.vcxproj +++ b/JSON/JSON_vs110.vcxproj @@ -95,29 +95,29 @@ ..\bin\ - obj\$(Configuration)\ + obj\JSON\$(Configuration)\ true ..\bin\ - obj\$(Configuration)\ + obj\JSON\$(Configuration)\ false ..\lib\ - obj\$(Configuration)\ + obj\JSON\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\JSON\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\JSON\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\JSON\$(Configuration)\ diff --git a/JSON/JSON_vs110.vcxproj.filters b/JSON/JSON_vs110.vcxproj.filters index f768f52ba..17d4e7ac5 100644 --- a/JSON/JSON_vs110.vcxproj.filters +++ b/JSON/JSON_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {0088b6cb-46bf-473d-8ef4-3e95becbb39e} + {93e508b9-76c4-483f-af9e-ccba3a886719} - {dfe09d58-556a-4dd9-9667-bb22b1c47c09} + {e53a218c-c7dc-4c19-9f36-f2f722c65b2e} diff --git a/JSON/JSON_vs120.vcxproj b/JSON/JSON_vs120.vcxproj index ab10465e0..8aa8480c5 100644 --- a/JSON/JSON_vs120.vcxproj +++ b/JSON/JSON_vs120.vcxproj @@ -95,29 +95,29 @@ ..\bin\ - obj\$(Configuration)\ + obj\JSON\$(Configuration)\ true ..\bin\ - obj\$(Configuration)\ + obj\JSON\$(Configuration)\ false ..\lib\ - obj\$(Configuration)\ + obj\JSON\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\JSON\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\JSON\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\JSON\$(Configuration)\ diff --git a/JSON/JSON_vs120.vcxproj.filters b/JSON/JSON_vs120.vcxproj.filters index 3825ca39f..b2db7968f 100644 --- a/JSON/JSON_vs120.vcxproj.filters +++ b/JSON/JSON_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {ad2ecd08-20f8-463d-970a-98c55a824535} + {73cde406-b45b-48c1-948b-4a1e46304dc7} - {2b9826b5-5c72-45fe-888e-3996b44d3931} + {4be3ac24-1ef9-4652-b32c-85c5d4d7feee} diff --git a/JSON/JSON_vs71.vcproj b/JSON/JSON_vs71.vcproj index 0a656c045..003a23bf5 100644 --- a/JSON/JSON_vs71.vcproj +++ b/JSON/JSON_vs71.vcproj @@ -37,7 +37,8 @@ Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" CompileAs="0" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> @@ -274,7 +280,8 @@ Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" CompileAs="0" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> diff --git a/JSON/JSON_vs80.vcproj b/JSON/JSON_vs80.vcproj index 51d250fcb..f832778ca 100644 --- a/JSON/JSON_vs80.vcproj +++ b/JSON/JSON_vs80.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="4" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 ..\bin64\ - obj64\$(Configuration)\ + obj64\JSON\$(Configuration)\ true ..\bin64\ - obj64\$(Configuration)\ + obj64\JSON\$(Configuration)\ false ..\lib64\ - obj64\$(Configuration)\ + obj64\JSON\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\JSON\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\JSON\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\JSON\$(Configuration)\ PocoJSON64d PocoJSONmdd PocoJSONmtd @@ -119,6 +119,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) @@ -130,6 +131,7 @@ Console ..\lib64\PocoJSONd.lib MachineX64 + %(AdditionalOptions) @@ -152,6 +154,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) @@ -164,6 +167,7 @@ true ..\lib64\PocoJSON.lib MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib64\PocoJSONmtd.lib @@ -210,6 +215,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib64\PocoJSONmt.lib @@ -234,6 +240,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib64\PocoJSONmdd.lib @@ -259,6 +266,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib64\PocoJSONmd.lib diff --git a/JSON/JSON_x64_vs100.vcxproj.filters b/JSON/JSON_x64_vs100.vcxproj.filters index b03434dc9..0dbbf7a88 100644 --- a/JSON/JSON_x64_vs100.vcxproj.filters +++ b/JSON/JSON_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {3a2b1554-bc65-452b-ac8c-4ccb5971e100} + {ae3420a7-18da-4c15-83de-7ea30f78525e} - {e67bafca-0784-40ac-bf9c-8c579b5a6732} + {ce4d137b-7d1a-4078-aa66-10ed2bf16dd2} diff --git a/JSON/JSON_x64_vs110.vcxproj b/JSON/JSON_x64_vs110.vcxproj index 4b2156290..d9568c5ba 100644 --- a/JSON/JSON_x64_vs110.vcxproj +++ b/JSON/JSON_x64_vs110.vcxproj @@ -95,29 +95,29 @@ ..\bin64\ - obj64\$(Configuration)\ + obj64\JSON\$(Configuration)\ true ..\bin64\ - obj64\$(Configuration)\ + obj64\JSON\$(Configuration)\ false ..\lib64\ - obj64\$(Configuration)\ + obj64\JSON\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\JSON\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\JSON\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\JSON\$(Configuration)\ diff --git a/JSON/JSON_x64_vs110.vcxproj.filters b/JSON/JSON_x64_vs110.vcxproj.filters index 5b55380fc..f0f76bbcd 100644 --- a/JSON/JSON_x64_vs110.vcxproj.filters +++ b/JSON/JSON_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {aab49947-2628-47bf-8302-df26f5c282e5} + {76684f7e-713e-404a-81b5-4b95dfeea891} - {1247d8aa-5094-49f9-a010-d8be12392dcf} + {cc3a9a27-27cf-421b-a33d-2487f4949697} diff --git a/JSON/JSON_x64_vs120.vcxproj b/JSON/JSON_x64_vs120.vcxproj index 8ab7526f1..115ac9c5c 100644 --- a/JSON/JSON_x64_vs120.vcxproj +++ b/JSON/JSON_x64_vs120.vcxproj @@ -95,29 +95,29 @@ ..\bin64\ - obj64\$(Configuration)\ + obj64\JSON\$(Configuration)\ true ..\bin64\ - obj64\$(Configuration)\ + obj64\JSON\$(Configuration)\ false ..\lib64\ - obj64\$(Configuration)\ + obj64\JSON\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\JSON\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\JSON\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\JSON\$(Configuration)\ diff --git a/JSON/JSON_x64_vs120.vcxproj.filters b/JSON/JSON_x64_vs120.vcxproj.filters index 0d79a920a..05c3a1355 100644 --- a/JSON/JSON_x64_vs120.vcxproj.filters +++ b/JSON/JSON_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {b0956208-a7b6-4d3e-aebe-e426a56642eb} + {28e75718-dfcf-4998-ae87-2e9120126a03} - {7d2e9892-0a88-4f01-8b31-d32193685a03} + {b29987d2-d9f6-4ebc-a2f5-2d61ade4839a} diff --git a/JSON/JSON_x64_vs90.vcproj b/JSON/JSON_x64_vs90.vcproj index 18b85acf0..088d4b544 100644 --- a/JSON/JSON_x64_vs90.vcproj +++ b/JSON/JSON_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\Benchmark\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\Benchmark\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\Benchmark\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\Benchmark\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\Benchmark\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\Benchmark\$(Platform)\$(Configuration)\ false diff --git a/JSON/samples/Benchmark/Benchmark_WEC2013_vs110.vcxproj.filters b/JSON/samples/Benchmark/Benchmark_WEC2013_vs110.vcxproj.filters index 5b698e42e..c3ffc5add 100644 --- a/JSON/samples/Benchmark/Benchmark_WEC2013_vs110.vcxproj.filters +++ b/JSON/samples/Benchmark/Benchmark_WEC2013_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {4d757c63-6a9d-4b84-b36b-f818d8e2c937} + {ff7539bf-429f-4b55-8e6c-5356f2ba66b0} - {e0e3e590-f5dd-4c41-99d4-fc5c6b29f89c} + {aa46a498-35ce-4da6-a025-eb6a6197185c} diff --git a/JSON/samples/Benchmark/Benchmark_WEC2013_vs120.vcxproj b/JSON/samples/Benchmark/Benchmark_WEC2013_vs120.vcxproj index 3d2f20408..6389753fa 100644 --- a/JSON/samples/Benchmark/Benchmark_WEC2013_vs120.vcxproj +++ b/JSON/samples/Benchmark/Benchmark_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\Benchmark\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\Benchmark\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\Benchmark\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\Benchmark\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\Benchmark\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\Benchmark\$(Platform)\$(Configuration)\ false diff --git a/JSON/samples/Benchmark/Benchmark_WEC2013_vs120.vcxproj.filters b/JSON/samples/Benchmark/Benchmark_WEC2013_vs120.vcxproj.filters index 5311b1d18..8ee28ba29 100644 --- a/JSON/samples/Benchmark/Benchmark_WEC2013_vs120.vcxproj.filters +++ b/JSON/samples/Benchmark/Benchmark_WEC2013_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {c1425053-e2d8-4c88-be42-2171466d1e2d} + {ca178d90-b41e-4064-8910-8b2168683fe4} - {013371ca-a78c-4100-a2a8-872d359d59fa} + {d216b7d9-e038-4057-9db9-6849af50e4e7} diff --git a/JSON/samples/Benchmark/Benchmark_vs100.vcxproj b/JSON/samples/Benchmark/Benchmark_vs100.vcxproj index 075154567..d05ee3235 100644 --- a/JSON/samples/Benchmark/Benchmark_vs100.vcxproj +++ b/JSON/samples/Benchmark/Benchmark_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\Benchmark\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\Benchmark\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\Benchmark\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\Benchmark\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\Benchmark\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\Benchmark\$(Configuration)\ false Benchmarkd Benchmarkd @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\Benchmarkd.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\Benchmarkd.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\Benchmarkd.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/JSON/samples/Benchmark/Benchmark_vs100.vcxproj.filters b/JSON/samples/Benchmark/Benchmark_vs100.vcxproj.filters index ca20d9faf..4c287cc5f 100644 --- a/JSON/samples/Benchmark/Benchmark_vs100.vcxproj.filters +++ b/JSON/samples/Benchmark/Benchmark_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {05e1b715-a51f-4422-9db5-0fda928e05cd} + {7e523047-91fc-4b66-a39e-57dfab1e8c8e} - {3216c131-2d81-48b8-81b2-3fd53343cc20} + {26a38572-8fc9-4bc7-b8f1-83f69719b73b} diff --git a/JSON/samples/Benchmark/Benchmark_vs110.vcxproj b/JSON/samples/Benchmark/Benchmark_vs110.vcxproj index 20723ac67..b27138167 100644 --- a/JSON/samples/Benchmark/Benchmark_vs110.vcxproj +++ b/JSON/samples/Benchmark/Benchmark_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\Benchmark\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\Benchmark\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\Benchmark\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\Benchmark\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\Benchmark\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\Benchmark\$(Configuration)\ false diff --git a/JSON/samples/Benchmark/Benchmark_vs110.vcxproj.filters b/JSON/samples/Benchmark/Benchmark_vs110.vcxproj.filters index 7f865ae86..767ca69ee 100644 --- a/JSON/samples/Benchmark/Benchmark_vs110.vcxproj.filters +++ b/JSON/samples/Benchmark/Benchmark_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {a005d5d9-0c5e-43aa-8df4-4130bc2992c2} + {06711f21-6e3f-404f-9b19-689c8e699bd4} - {eed4b041-0858-4357-a759-8fa63db41470} + {535da039-e77b-4709-9704-2df731b9a11d} diff --git a/JSON/samples/Benchmark/Benchmark_vs120.vcxproj b/JSON/samples/Benchmark/Benchmark_vs120.vcxproj index 7b46df819..06472bfa5 100644 --- a/JSON/samples/Benchmark/Benchmark_vs120.vcxproj +++ b/JSON/samples/Benchmark/Benchmark_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\Benchmark\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\Benchmark\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\Benchmark\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\Benchmark\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\Benchmark\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\Benchmark\$(Configuration)\ false diff --git a/JSON/samples/Benchmark/Benchmark_vs120.vcxproj.filters b/JSON/samples/Benchmark/Benchmark_vs120.vcxproj.filters index 940bb6629..9746de399 100644 --- a/JSON/samples/Benchmark/Benchmark_vs120.vcxproj.filters +++ b/JSON/samples/Benchmark/Benchmark_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {1d6a0e04-8357-4a5a-8503-bca01ad3a26d} + {bb2f4335-13b5-4e70-b295-eb96192530ad} - {3cdcb38e-d1dd-4575-8426-7f3c1651db6b} + {224416ec-9942-4742-9cde-f1a80c9fafcc} diff --git a/JSON/samples/Benchmark/Benchmark_vs71.vcproj b/JSON/samples/Benchmark/Benchmark_vs71.vcproj index 17f561a68..ac8f8203b 100644 --- a/JSON/samples/Benchmark/Benchmark_vs71.vcproj +++ b/JSON/samples/Benchmark/Benchmark_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\Benchmark\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\Benchmark\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Benchmark\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Benchmark\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\Benchmark\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\Benchmark\$(Configuration)\ false Benchmarkd Benchmarkd @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\Benchmarkd.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\Benchmarkd.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\Benchmarkd.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/JSON/samples/Benchmark/Benchmark_x64_vs100.vcxproj.filters b/JSON/samples/Benchmark/Benchmark_x64_vs100.vcxproj.filters index a5faf97bc..0bfc3d8bc 100644 --- a/JSON/samples/Benchmark/Benchmark_x64_vs100.vcxproj.filters +++ b/JSON/samples/Benchmark/Benchmark_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {854ed207-c22a-4de6-9556-66cc29432cfb} + {b5bc2333-1896-42fa-a197-c399ed9f2f22} - {bfd87585-d6c1-4cdb-afb7-a2e634ade5bf} + {e85abe49-8d1f-472c-a9f0-e0ac0afc87f9} diff --git a/JSON/samples/Benchmark/Benchmark_x64_vs110.vcxproj b/JSON/samples/Benchmark/Benchmark_x64_vs110.vcxproj index 5937c60ef..4fe4e0172 100644 --- a/JSON/samples/Benchmark/Benchmark_x64_vs110.vcxproj +++ b/JSON/samples/Benchmark/Benchmark_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\Benchmark\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\Benchmark\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Benchmark\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Benchmark\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\Benchmark\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\Benchmark\$(Configuration)\ false diff --git a/JSON/samples/Benchmark/Benchmark_x64_vs110.vcxproj.filters b/JSON/samples/Benchmark/Benchmark_x64_vs110.vcxproj.filters index fbeb3687f..5e598cd03 100644 --- a/JSON/samples/Benchmark/Benchmark_x64_vs110.vcxproj.filters +++ b/JSON/samples/Benchmark/Benchmark_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {63d39a77-2ecc-4732-ad21-40d7b44cc978} + {037a2936-d11b-4161-bdce-dce1c0151e30} - {6a937745-b46c-4766-af5e-64f566dcf745} + {73d1a7ec-26c7-4a7b-b774-412c6a7f1c57} diff --git a/JSON/samples/Benchmark/Benchmark_x64_vs120.vcxproj b/JSON/samples/Benchmark/Benchmark_x64_vs120.vcxproj index 5032e049c..2ee54e7f9 100644 --- a/JSON/samples/Benchmark/Benchmark_x64_vs120.vcxproj +++ b/JSON/samples/Benchmark/Benchmark_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\Benchmark\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\Benchmark\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Benchmark\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Benchmark\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\Benchmark\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\Benchmark\$(Configuration)\ false diff --git a/JSON/samples/Benchmark/Benchmark_x64_vs120.vcxproj.filters b/JSON/samples/Benchmark/Benchmark_x64_vs120.vcxproj.filters index aa30e4312..d6ee7f092 100644 --- a/JSON/samples/Benchmark/Benchmark_x64_vs120.vcxproj.filters +++ b/JSON/samples/Benchmark/Benchmark_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {9a488e94-28aa-4ab9-992f-b0d64277dbbf} + {080b39ea-b980-4c7d-8d69-5d474a8baf8f} - {90a1c2bd-79d1-43eb-accf-d2949f30b5b0} + {85a6cf2c-7d01-404c-8598-b013cae12008} diff --git a/JSON/samples/Benchmark/Benchmark_x64_vs90.vcproj b/JSON/samples/Benchmark/Benchmark_x64_vs90.vcproj index 1d44876f9..fd760ae22 100644 --- a/JSON/samples/Benchmark/Benchmark_x64_vs90.vcproj +++ b/JSON/samples/Benchmark/Benchmark_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> (); - formatString(value, out); + out << any.convert(); } else { - out << any.convert(); + std::string value = any.convert(); + formatString(value, out); } } diff --git a/JSON/testsuite/TestSuite_CE_vs90.vcproj b/JSON/testsuite/TestSuite_CE_vs90.vcproj index ca2dc8b8e..3eb4b736b 100644 --- a/JSON/testsuite/TestSuite_CE_vs90.vcproj +++ b/JSON/testsuite/TestSuite_CE_vs90.vcproj @@ -46,7 +46,8 @@ CompileAs="0" DisableSpecificWarnings="4800;" CompileForArchitecture="2" - InterworkCalls="false"/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false diff --git a/JSON/testsuite/TestSuite_WEC2013_vs110.vcxproj.filters b/JSON/testsuite/TestSuite_WEC2013_vs110.vcxproj.filters index 744da828a..31597a1ab 100644 --- a/JSON/testsuite/TestSuite_WEC2013_vs110.vcxproj.filters +++ b/JSON/testsuite/TestSuite_WEC2013_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {a2e51080-6696-4167-8440-3c8e65b60246} + {5694ff2e-0fe3-49ec-9fad-14895c127661} - {a4f44c39-c4e8-4660-8860-196a0eef3e75} + {ad5aaefd-a094-4078-b93f-7a8bc36c0821} diff --git a/JSON/testsuite/TestSuite_WEC2013_vs120.vcxproj b/JSON/testsuite/TestSuite_WEC2013_vs120.vcxproj index eaf03d8ed..34e12f6e2 100644 --- a/JSON/testsuite/TestSuite_WEC2013_vs120.vcxproj +++ b/JSON/testsuite/TestSuite_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false diff --git a/JSON/testsuite/TestSuite_WEC2013_vs120.vcxproj.filters b/JSON/testsuite/TestSuite_WEC2013_vs120.vcxproj.filters index 49b3c8c0a..58ace4fbf 100644 --- a/JSON/testsuite/TestSuite_WEC2013_vs120.vcxproj.filters +++ b/JSON/testsuite/TestSuite_WEC2013_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {b6ea56dc-6609-4017-a0e8-c52b5634e967} + {f82b031d-938f-41c0-b3f5-d342685691c0} - {07ce5c12-3a05-48af-9b89-bf837164ead5} + {d1a68ce6-a47e-4392-bf3b-98f7b4e9f5c5} diff --git a/JSON/testsuite/TestSuite_vs100.vcxproj b/JSON/testsuite/TestSuite_vs100.vcxproj index 6e32028b3..9b7740521 100644 --- a/JSON/testsuite/TestSuite_vs100.vcxproj +++ b/JSON/testsuite/TestSuite_vs100.vcxproj @@ -87,22 +87,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false TestSuited TestSuited @@ -129,6 +129,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitd.lib;WinTestRunnerd.lib;%(AdditionalDependencies) @@ -139,6 +140,7 @@ bin\TestSuited.pdb Windows MachineX86 + %(AdditionalOptions) @@ -161,6 +163,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnit.lib;WinTestRunner.lib;%(AdditionalDependencies) @@ -171,6 +174,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -191,6 +195,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmtd.lib;WinTestRunnermtd.lib;iphlpapi.lib;winmm.lib;nafxcwd.lib;libcmtd.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -202,6 +207,7 @@ bin\static_mt\TestSuited.pdb Windows MachineX86 + %(AdditionalOptions) @@ -224,6 +230,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmt.lib;WinTestRunnermt.lib;iphlpapi.lib;winmm.lib;nafxcw.lib;libcmt.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -235,6 +242,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -255,6 +263,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmdd.lib;WinTestRunnermdd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -265,6 +274,7 @@ bin\static_md\TestSuited.pdb Windows MachineX86 + %(AdditionalOptions) @@ -287,6 +297,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmd.lib;WinTestRunnermd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -297,6 +308,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/JSON/testsuite/TestSuite_vs100.vcxproj.filters b/JSON/testsuite/TestSuite_vs100.vcxproj.filters index 3b417f5e2..806ffc8b2 100644 --- a/JSON/testsuite/TestSuite_vs100.vcxproj.filters +++ b/JSON/testsuite/TestSuite_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {b02953fa-ea82-4b1e-b1d6-aa76792928f6} + {dc7f4b47-86cc-493b-95dc-49f89b5507e6} - {597bec18-4126-440a-87a2-529490e8421a} + {ed19d78e-25d6-4915-9b55-8e26224aec37} diff --git a/JSON/testsuite/TestSuite_vs110.vcxproj b/JSON/testsuite/TestSuite_vs110.vcxproj index 40c3e9eb8..330f2d750 100644 --- a/JSON/testsuite/TestSuite_vs110.vcxproj +++ b/JSON/testsuite/TestSuite_vs110.vcxproj @@ -101,32 +101,32 @@ bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false diff --git a/JSON/testsuite/TestSuite_vs110.vcxproj.filters b/JSON/testsuite/TestSuite_vs110.vcxproj.filters index 0d5b9d52e..c4ef7c220 100644 --- a/JSON/testsuite/TestSuite_vs110.vcxproj.filters +++ b/JSON/testsuite/TestSuite_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {75351898-6213-499f-acec-af030b64bca4} + {e574c014-63af-41b7-9c0e-44f08e2ae78a} - {73884cb3-7265-4936-ae26-cb4ac4181db6} + {484e6885-c548-4cd2-86e3-449e35c20c31} diff --git a/JSON/testsuite/TestSuite_vs120.vcxproj b/JSON/testsuite/TestSuite_vs120.vcxproj index 826375268..55c45a79d 100644 --- a/JSON/testsuite/TestSuite_vs120.vcxproj +++ b/JSON/testsuite/TestSuite_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false diff --git a/JSON/testsuite/TestSuite_vs120.vcxproj.filters b/JSON/testsuite/TestSuite_vs120.vcxproj.filters index 236ca4389..0fe54ca56 100644 --- a/JSON/testsuite/TestSuite_vs120.vcxproj.filters +++ b/JSON/testsuite/TestSuite_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {ef696e87-bb6b-4508-89b3-e03f411897e9} + {c62803f4-2946-4781-af9f-05605c9278d8} - {de9fe0ee-f790-4c22-9c5f-034223d0758b} + {41828305-c037-480c-b8d0-246c3ae2ac75} diff --git a/JSON/testsuite/TestSuite_vs71.vcproj b/JSON/testsuite/TestSuite_vs71.vcproj index 5e537b481..7f06849d5 100644 --- a/JSON/testsuite/TestSuite_vs71.vcproj +++ b/JSON/testsuite/TestSuite_vs71.vcproj @@ -37,7 +37,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false TestSuited TestSuited @@ -129,6 +129,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitd.lib;WinTestRunnerd.lib;%(AdditionalDependencies) @@ -139,6 +140,7 @@ bin64\TestSuited.pdb Windows MachineX64 + %(AdditionalOptions) @@ -161,6 +163,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnit.lib;WinTestRunner.lib;%(AdditionalDependencies) @@ -171,6 +174,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -191,6 +195,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmtd.lib;WinTestRunnermtd.lib;iphlpapi.lib;winmm.lib;nafxcwd.lib;libcmtd.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -202,6 +207,7 @@ bin64\static_mt\TestSuited.pdb Windows MachineX64 + %(AdditionalOptions) @@ -224,6 +230,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmt.lib;WinTestRunnermt.lib;iphlpapi.lib;winmm.lib;nafxcw.lib;libcmt.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -235,6 +242,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -255,6 +263,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmdd.lib;WinTestRunnermdd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -265,6 +274,7 @@ bin64\static_md\TestSuited.pdb Windows MachineX64 + %(AdditionalOptions) @@ -287,6 +297,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmd.lib;WinTestRunnermd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -297,6 +308,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/JSON/testsuite/TestSuite_x64_vs100.vcxproj.filters b/JSON/testsuite/TestSuite_x64_vs100.vcxproj.filters index 7706a9ca9..f6a04aa71 100644 --- a/JSON/testsuite/TestSuite_x64_vs100.vcxproj.filters +++ b/JSON/testsuite/TestSuite_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {62430645-b830-4c34-9c52-67c2ae622e36} + {20f106ca-635b-4881-b011-be322c27f317} - {71d75e9c-92e4-481e-8928-1bdbc0f01a76} + {ed9b7856-158b-4918-919b-2b0fca77cd2c} diff --git a/JSON/testsuite/TestSuite_x64_vs110.vcxproj b/JSON/testsuite/TestSuite_x64_vs110.vcxproj index 1bde1cbde..2cc19165b 100644 --- a/JSON/testsuite/TestSuite_x64_vs110.vcxproj +++ b/JSON/testsuite/TestSuite_x64_vs110.vcxproj @@ -101,32 +101,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false diff --git a/JSON/testsuite/TestSuite_x64_vs110.vcxproj.filters b/JSON/testsuite/TestSuite_x64_vs110.vcxproj.filters index d3526417a..131956c8c 100644 --- a/JSON/testsuite/TestSuite_x64_vs110.vcxproj.filters +++ b/JSON/testsuite/TestSuite_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {9fb5562b-3441-4404-a946-dfd292197aed} + {c3d331f1-b61c-4d7c-96f3-ed6b257b2f4c} - {ebf2a7a4-52bd-4d4a-be44-b5e737135c19} + {efbd6508-ec50-46d3-9ef3-b3db919112db} diff --git a/JSON/testsuite/TestSuite_x64_vs120.vcxproj b/JSON/testsuite/TestSuite_x64_vs120.vcxproj index 4a4ab8034..5b75ea3dd 100644 --- a/JSON/testsuite/TestSuite_x64_vs120.vcxproj +++ b/JSON/testsuite/TestSuite_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false diff --git a/JSON/testsuite/TestSuite_x64_vs120.vcxproj.filters b/JSON/testsuite/TestSuite_x64_vs120.vcxproj.filters index 421cfe93e..8c62574e2 100644 --- a/JSON/testsuite/TestSuite_x64_vs120.vcxproj.filters +++ b/JSON/testsuite/TestSuite_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {d0e9f921-ffe4-43ce-b494-46a124137e8e} + {3aab84ad-1376-443c-8c6c-1266debb45a8} - {878014c8-f2df-465c-ad4e-d335865f685c} + {06dde2e5-c7d3-4002-a7ea-400111196447} diff --git a/JSON/testsuite/TestSuite_x64_vs90.vcproj b/JSON/testsuite/TestSuite_x64_vs90.vcproj index cb4dcda14..a9aa66077 100644 --- a/JSON/testsuite/TestSuite_x64_vs90.vcproj +++ b/JSON/testsuite/TestSuite_x64_vs90.vcproj @@ -47,7 +47,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> (); - Var test = object->get("test"); - assert(test.isInteger()); - int value = test; - assert(value == 1969); - - DynamicStruct ds = *object; - assert (!ds["test"].isEmpty()); - assert (ds["test"].isNumeric()); - assert (ds["test"] == 1969); - - const DynamicStruct& rds = *object; - assert (!rds["test"].isEmpty()); - assert (rds["test"].isNumeric()); - assert (rds["test"] == 1969); + testNumber(1969); + testNumber(-1969); + testNumber(1969.5); + testNumber(-1969.5); } diff --git a/JSON/testsuite/src/JSONTest.h b/JSON/testsuite/src/JSONTest.h index a3640a537..e705bf4bb 100644 --- a/JSON/testsuite/src/JSONTest.h +++ b/JSON/testsuite/src/JSONTest.h @@ -18,6 +18,15 @@ #include "Poco/JSON/JSON.h" #include "CppUnit/TestCase.h" +#include "Poco/JSON/Object.h" +#include "Poco/JSON/Parser.h" +#include "Poco/JSON/Query.h" +#include "Poco/JSON/JSONException.h" +#include "Poco/JSON/Stringifier.h" +#include "Poco/JSON/ParseHandler.h" +#include "Poco/JSON/PrintHandler.h" +#include "Poco/JSON/Template.h" +#include class JSONTest: public CppUnit::TestCase @@ -76,6 +85,44 @@ public: private: std::string getTestFilesPath(const std::string& type); + + template + void testNumber(T number) + { + std::ostringstream os; + os << "{ \"test\" : " << number << " }"; + std::string json = os.str(); + Poco::JSON::Parser parser; + Poco::Dynamic::Var result; + + try + { + result = parser.parse(json); + } + catch (Poco::JSON::JSONException& jsone) + { + std::cout << jsone.message() << std::endl; + assert(false); + } + + assert(result.type() == typeid(Poco::JSON::Object::Ptr)); + + Poco::JSON::Object::Ptr object = result.extract(); + Poco::Dynamic::Var test = object->get("test"); + assert(test.isNumeric()); + T value = test; + assert(value == number); + + Poco::DynamicStruct ds = *object; + assert(!ds["test"].isEmpty()); + assert(ds["test"].isNumeric()); + assert(ds["test"] == number); + + const Poco::DynamicStruct& rds = *object; + assert(!rds["test"].isEmpty()); + assert(rds["test"].isNumeric()); + assert(rds["test"] == number); + } }; diff --git a/MongoDB/MongoDB_vs100.vcxproj b/MongoDB/MongoDB_vs100.vcxproj index 0f2f61262..c77894e3b 100644 --- a/MongoDB/MongoDB_vs100.vcxproj +++ b/MongoDB/MongoDB_vs100.vcxproj @@ -81,19 +81,19 @@ <_ProjectFileVersion>10.0.40219.1 ..\bin\ - obj\$(Configuration)\ + obj\MongoDB\$(Configuration)\ true ..\bin\ - obj\$(Configuration)\ + obj\MongoDB\$(Configuration)\ false ..\lib\ - obj\$(Configuration)\ + obj\MongoDB\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\MongoDB\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\MongoDB\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\MongoDB\$(Configuration)\ PocoMongoDBd PocoMongoDBmdd PocoMongoDBmtd @@ -119,6 +119,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) @@ -130,6 +131,7 @@ Console ..\lib\PocoMongoDBd.lib MachineX86 + %(AdditionalOptions) @@ -152,6 +154,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) @@ -164,6 +167,7 @@ true ..\lib\PocoMongoDB.lib MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib\PocoMongoDBmtd.lib @@ -210,6 +215,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib\PocoMongoDBmt.lib @@ -234,6 +240,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib\PocoMongoDBmdd.lib @@ -260,6 +267,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) diff --git a/MongoDB/MongoDB_vs100.vcxproj.filters b/MongoDB/MongoDB_vs100.vcxproj.filters index 88260b1f2..a0c83a27a 100644 --- a/MongoDB/MongoDB_vs100.vcxproj.filters +++ b/MongoDB/MongoDB_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {a24c7488-c2d7-4e11-b73b-d5d3ec6f9baf} + {77e520ac-2616-4dff-95c5-23e0b7936fd1} - {53818498-67ba-4499-a2a9-d1b76e175d35} + {b2302996-c570-4c5e-9ca3-62e463d1b28c} diff --git a/MongoDB/MongoDB_vs110.vcxproj b/MongoDB/MongoDB_vs110.vcxproj index 3fb401d20..8847a1c10 100644 --- a/MongoDB/MongoDB_vs110.vcxproj +++ b/MongoDB/MongoDB_vs110.vcxproj @@ -95,29 +95,29 @@ ..\bin\ - obj\$(Configuration)\ + obj\MongoDB\$(Configuration)\ true ..\bin\ - obj\$(Configuration)\ + obj\MongoDB\$(Configuration)\ false ..\lib\ - obj\$(Configuration)\ + obj\MongoDB\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\MongoDB\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\MongoDB\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\MongoDB\$(Configuration)\ diff --git a/MongoDB/MongoDB_vs110.vcxproj.filters b/MongoDB/MongoDB_vs110.vcxproj.filters index 90b3f75d9..dbbdd6610 100644 --- a/MongoDB/MongoDB_vs110.vcxproj.filters +++ b/MongoDB/MongoDB_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {8101ead2-5917-41f1-b397-8935dc482733} + {c199f0d6-c82c-4f32-a18b-049b4f6af63f} - {0391e9bd-dc4b-4e45-b57c-e592b695b693} + {f26a3616-8423-4e23-a3f6-0f8526b7ba76} diff --git a/MongoDB/MongoDB_vs120.vcxproj b/MongoDB/MongoDB_vs120.vcxproj index 7b326ecb9..ced91f585 100644 --- a/MongoDB/MongoDB_vs120.vcxproj +++ b/MongoDB/MongoDB_vs120.vcxproj @@ -95,29 +95,29 @@ ..\bin\ - obj\$(Configuration)\ + obj\MongoDB\$(Configuration)\ true ..\bin\ - obj\$(Configuration)\ + obj\MongoDB\$(Configuration)\ false ..\lib\ - obj\$(Configuration)\ + obj\MongoDB\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\MongoDB\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\MongoDB\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\MongoDB\$(Configuration)\ diff --git a/MongoDB/MongoDB_vs120.vcxproj.filters b/MongoDB/MongoDB_vs120.vcxproj.filters index 3fba7eb42..fbf7cbe65 100644 --- a/MongoDB/MongoDB_vs120.vcxproj.filters +++ b/MongoDB/MongoDB_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {63f8870a-f001-418a-a0a3-aa75e61b09a3} + {ebb68883-f0d3-4159-8d6b-12284d5468ad} - {9979f004-97ec-47af-bfeb-0c7e1c9ae4f4} + {c8173600-b4da-4b5c-8cd6-8e368ed6df16} diff --git a/MongoDB/MongoDB_vs71.vcproj b/MongoDB/MongoDB_vs71.vcproj index 0a3e4b9c7..742f7687e 100644 --- a/MongoDB/MongoDB_vs71.vcproj +++ b/MongoDB/MongoDB_vs71.vcproj @@ -37,7 +37,8 @@ Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" CompileAs="0" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> @@ -274,7 +280,8 @@ Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" CompileAs="0" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> diff --git a/MongoDB/MongoDB_vs80.vcproj b/MongoDB/MongoDB_vs80.vcproj index bab9b6449..402038ba3 100644 --- a/MongoDB/MongoDB_vs80.vcproj +++ b/MongoDB/MongoDB_vs80.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="4" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 ..\bin64\ - obj64\$(Configuration)\ + obj64\MongoDB\$(Configuration)\ true ..\bin64\ - obj64\$(Configuration)\ + obj64\MongoDB\$(Configuration)\ false ..\lib64\ - obj64\$(Configuration)\ + obj64\MongoDB\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\MongoDB\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\MongoDB\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\MongoDB\$(Configuration)\ PocoMongoDB64d PocoMongoDBmdd PocoMongoDBmtd @@ -119,6 +119,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) @@ -130,6 +131,7 @@ Console ..\lib64\PocoMongoDBd.lib MachineX64 + %(AdditionalOptions) @@ -152,6 +154,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) @@ -164,6 +167,7 @@ true ..\lib64\PocoMongoDB.lib MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib64\PocoMongoDBmtd.lib @@ -210,6 +215,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib64\PocoMongoDBmt.lib @@ -234,6 +240,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib64\PocoMongoDBmdd.lib @@ -259,6 +266,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib64\PocoMongoDBmd.lib diff --git a/MongoDB/MongoDB_x64_vs100.vcxproj.filters b/MongoDB/MongoDB_x64_vs100.vcxproj.filters index 32c660420..d2c11ab08 100644 --- a/MongoDB/MongoDB_x64_vs100.vcxproj.filters +++ b/MongoDB/MongoDB_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {ea993335-5394-4a53-8fb9-e172ba9385bc} + {3d540e6e-2952-4869-be89-9c7d5f8e5db5} - {ec871827-d0fa-4da1-8a71-b079d984938c} + {32560059-b419-4161-b69f-838c691e0af8} diff --git a/MongoDB/MongoDB_x64_vs110.vcxproj b/MongoDB/MongoDB_x64_vs110.vcxproj index a4d19a99a..98dbc72d0 100644 --- a/MongoDB/MongoDB_x64_vs110.vcxproj +++ b/MongoDB/MongoDB_x64_vs110.vcxproj @@ -95,29 +95,29 @@ ..\bin64\ - obj64\$(Configuration)\ + obj64\MongoDB\$(Configuration)\ true ..\bin64\ - obj64\$(Configuration)\ + obj64\MongoDB\$(Configuration)\ false ..\lib64\ - obj64\$(Configuration)\ + obj64\MongoDB\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\MongoDB\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\MongoDB\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\MongoDB\$(Configuration)\ diff --git a/MongoDB/MongoDB_x64_vs110.vcxproj.filters b/MongoDB/MongoDB_x64_vs110.vcxproj.filters index 107e93faa..c9996a214 100644 --- a/MongoDB/MongoDB_x64_vs110.vcxproj.filters +++ b/MongoDB/MongoDB_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {70bc357a-aada-47cf-b4ad-ebe10bb55777} + {e9af904e-90f2-4e8d-a196-542517ea4c14} - {5a85b9b6-000c-46cb-83bc-9bd27c41aabf} + {26b3c87b-d71e-4ba0-a2d0-9e0dc18b7850} diff --git a/MongoDB/MongoDB_x64_vs120.vcxproj b/MongoDB/MongoDB_x64_vs120.vcxproj index 6c0d79cda..fb89d047c 100644 --- a/MongoDB/MongoDB_x64_vs120.vcxproj +++ b/MongoDB/MongoDB_x64_vs120.vcxproj @@ -95,29 +95,29 @@ ..\bin64\ - obj64\$(Configuration)\ + obj64\MongoDB\$(Configuration)\ true ..\bin64\ - obj64\$(Configuration)\ + obj64\MongoDB\$(Configuration)\ false ..\lib64\ - obj64\$(Configuration)\ + obj64\MongoDB\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\MongoDB\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\MongoDB\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\MongoDB\$(Configuration)\ diff --git a/MongoDB/MongoDB_x64_vs120.vcxproj.filters b/MongoDB/MongoDB_x64_vs120.vcxproj.filters index 47757b879..5b7cbbcfa 100644 --- a/MongoDB/MongoDB_x64_vs120.vcxproj.filters +++ b/MongoDB/MongoDB_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {f88ed53f-264f-40e4-aac7-7d4630cae8d1} + {1b565dc6-555f-4f22-a251-1e391227fe91} - {371079f1-812b-49c0-bac5-d8c1e0ebbd6f} + {bb5b17da-16a3-49d1-a4e8-280c39105f17} diff --git a/MongoDB/MongoDB_x64_vs90.vcproj b/MongoDB/MongoDB_x64_vs90.vcproj index 5cad100f1..1f2c93d4f 100644 --- a/MongoDB/MongoDB_x64_vs90.vcproj +++ b/MongoDB/MongoDB_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\SQLToMongo\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\SQLToMongo\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\SQLToMongo\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\SQLToMongo\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\SQLToMongo\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\SQLToMongo\$(Configuration)\ false SQLToMongod SQLToMongod @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\SQLToMongod.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\SQLToMongod.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\SQLToMongod.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/MongoDB/samples/SQLToMongo/SQLToMongo_vs100.vcxproj.filters b/MongoDB/samples/SQLToMongo/SQLToMongo_vs100.vcxproj.filters index b119d2f65..441d23b63 100644 --- a/MongoDB/samples/SQLToMongo/SQLToMongo_vs100.vcxproj.filters +++ b/MongoDB/samples/SQLToMongo/SQLToMongo_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {4245f99a-11f3-4aba-91c7-116a78c82b76} + {28f0681a-fdc4-4ca7-9699-e551e5e82ce7} - {b6a88229-1a23-4866-8365-12777585c1b3} + {cc359884-bd21-4c12-9463-a1e5fd48828b} diff --git a/MongoDB/samples/SQLToMongo/SQLToMongo_vs110.vcxproj b/MongoDB/samples/SQLToMongo/SQLToMongo_vs110.vcxproj index ad8b1d6cf..c2900467e 100644 --- a/MongoDB/samples/SQLToMongo/SQLToMongo_vs110.vcxproj +++ b/MongoDB/samples/SQLToMongo/SQLToMongo_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\SQLToMongo\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\SQLToMongo\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\SQLToMongo\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\SQLToMongo\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\SQLToMongo\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\SQLToMongo\$(Configuration)\ false diff --git a/MongoDB/samples/SQLToMongo/SQLToMongo_vs110.vcxproj.filters b/MongoDB/samples/SQLToMongo/SQLToMongo_vs110.vcxproj.filters index b3c015b34..9afbe66b9 100644 --- a/MongoDB/samples/SQLToMongo/SQLToMongo_vs110.vcxproj.filters +++ b/MongoDB/samples/SQLToMongo/SQLToMongo_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {4c038010-8d8b-4103-b4a2-a555a5feeef6} + {dd19197c-6fcb-447a-80ed-b172091a8bf3} - {bf22b72a-1910-42c8-beb7-9a3e18d68149} + {6091997b-5b03-4c66-8d76-cfad0c301f53} diff --git a/MongoDB/samples/SQLToMongo/SQLToMongo_vs120.vcxproj b/MongoDB/samples/SQLToMongo/SQLToMongo_vs120.vcxproj index 2f1f8f7dc..8addd8879 100644 --- a/MongoDB/samples/SQLToMongo/SQLToMongo_vs120.vcxproj +++ b/MongoDB/samples/SQLToMongo/SQLToMongo_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\SQLToMongo\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\SQLToMongo\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\SQLToMongo\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\SQLToMongo\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\SQLToMongo\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\SQLToMongo\$(Configuration)\ false diff --git a/MongoDB/samples/SQLToMongo/SQLToMongo_vs120.vcxproj.filters b/MongoDB/samples/SQLToMongo/SQLToMongo_vs120.vcxproj.filters index 4d7268064..1457cf966 100644 --- a/MongoDB/samples/SQLToMongo/SQLToMongo_vs120.vcxproj.filters +++ b/MongoDB/samples/SQLToMongo/SQLToMongo_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {857f1e17-1485-4502-8209-4287fba34bec} + {6207bf45-b71f-454f-b37a-8d0a6806db66} - {0b0083ed-36de-4062-a00e-1691e5b4f9f4} + {ab255e3d-1633-4f15-93b1-3a4fd4771f36} diff --git a/MongoDB/samples/SQLToMongo/SQLToMongo_vs71.vcproj b/MongoDB/samples/SQLToMongo/SQLToMongo_vs71.vcproj index 6e893798d..e5cd3f67a 100644 --- a/MongoDB/samples/SQLToMongo/SQLToMongo_vs71.vcproj +++ b/MongoDB/samples/SQLToMongo/SQLToMongo_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\SQLToMongo\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\SQLToMongo\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\SQLToMongo\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\SQLToMongo\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\SQLToMongo\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\SQLToMongo\$(Configuration)\ false SQLToMongod SQLToMongod @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\SQLToMongod.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\SQLToMongod.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\SQLToMongod.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/MongoDB/samples/SQLToMongo/SQLToMongo_x64_vs100.vcxproj.filters b/MongoDB/samples/SQLToMongo/SQLToMongo_x64_vs100.vcxproj.filters index 27bcd00f4..0be32a626 100644 --- a/MongoDB/samples/SQLToMongo/SQLToMongo_x64_vs100.vcxproj.filters +++ b/MongoDB/samples/SQLToMongo/SQLToMongo_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {1e30397f-248c-48a1-a051-dd8706976368} + {a85a2a93-74d6-4f9d-ad16-295707565005} - {2205c141-dbea-4677-a3e4-98de4b0621bf} + {4785e67c-9362-4961-9768-424f06daea32} diff --git a/MongoDB/samples/SQLToMongo/SQLToMongo_x64_vs110.vcxproj b/MongoDB/samples/SQLToMongo/SQLToMongo_x64_vs110.vcxproj index e6576ff11..e8de284f3 100644 --- a/MongoDB/samples/SQLToMongo/SQLToMongo_x64_vs110.vcxproj +++ b/MongoDB/samples/SQLToMongo/SQLToMongo_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\SQLToMongo\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\SQLToMongo\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\SQLToMongo\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\SQLToMongo\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\SQLToMongo\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\SQLToMongo\$(Configuration)\ false diff --git a/MongoDB/samples/SQLToMongo/SQLToMongo_x64_vs110.vcxproj.filters b/MongoDB/samples/SQLToMongo/SQLToMongo_x64_vs110.vcxproj.filters index 4cbb9cb87..9dcbdce0f 100644 --- a/MongoDB/samples/SQLToMongo/SQLToMongo_x64_vs110.vcxproj.filters +++ b/MongoDB/samples/SQLToMongo/SQLToMongo_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {eeb09b6c-1d62-4201-9206-45e27ffdff9e} + {3c55263c-63f3-4a73-ad3f-853d9420ec9f} - {f140d96a-b2dc-497c-996e-bdee9b8b645f} + {a317fe4a-6f87-478d-a20e-965c9d690d09} diff --git a/MongoDB/samples/SQLToMongo/SQLToMongo_x64_vs120.vcxproj b/MongoDB/samples/SQLToMongo/SQLToMongo_x64_vs120.vcxproj index 9508cc852..4a909ecc2 100644 --- a/MongoDB/samples/SQLToMongo/SQLToMongo_x64_vs120.vcxproj +++ b/MongoDB/samples/SQLToMongo/SQLToMongo_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\SQLToMongo\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\SQLToMongo\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\SQLToMongo\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\SQLToMongo\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\SQLToMongo\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\SQLToMongo\$(Configuration)\ false diff --git a/MongoDB/samples/SQLToMongo/SQLToMongo_x64_vs120.vcxproj.filters b/MongoDB/samples/SQLToMongo/SQLToMongo_x64_vs120.vcxproj.filters index 0a2669024..1a700a4ba 100644 --- a/MongoDB/samples/SQLToMongo/SQLToMongo_x64_vs120.vcxproj.filters +++ b/MongoDB/samples/SQLToMongo/SQLToMongo_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {7629b1c9-6506-46aa-9925-75e4ddeff91d} + {b89b01c5-41de-4602-b9c7-c4a308a6e58e} - {77205d54-a8e1-4aa7-9f71-2be9b25fb9de} + {640cdc96-4d0a-4ea8-8049-2de73ee0b4df} diff --git a/MongoDB/samples/SQLToMongo/SQLToMongo_x64_vs90.vcproj b/MongoDB/samples/SQLToMongo/SQLToMongo_x64_vs90.vcproj index d24794302..30c1b828a 100644 --- a/MongoDB/samples/SQLToMongo/SQLToMongo_x64_vs90.vcproj +++ b/MongoDB/samples/SQLToMongo/SQLToMongo_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false TestSuited TestSuited @@ -129,6 +129,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitd.lib;WinTestRunnerd.lib;%(AdditionalDependencies) @@ -139,6 +140,7 @@ bin\TestSuited.pdb Windows MachineX86 + %(AdditionalOptions) @@ -161,6 +163,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnit.lib;WinTestRunner.lib;%(AdditionalDependencies) @@ -171,6 +174,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -191,6 +195,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmtd.lib;WinTestRunnermtd.lib;iphlpapi.lib;winmm.lib;nafxcwd.lib;libcmtd.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -202,6 +207,7 @@ bin\static_mt\TestSuited.pdb Windows MachineX86 + %(AdditionalOptions) @@ -224,6 +230,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmt.lib;WinTestRunnermt.lib;iphlpapi.lib;winmm.lib;nafxcw.lib;libcmt.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -235,6 +242,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -255,6 +263,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmdd.lib;WinTestRunnermdd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -265,6 +274,7 @@ bin\static_md\TestSuited.pdb Windows MachineX86 + %(AdditionalOptions) @@ -287,6 +297,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmd.lib;WinTestRunnermd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -297,6 +308,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/MongoDB/testsuite/TestSuite_vs100.vcxproj.filters b/MongoDB/testsuite/TestSuite_vs100.vcxproj.filters index e2a0d4010..83e8c7655 100644 --- a/MongoDB/testsuite/TestSuite_vs100.vcxproj.filters +++ b/MongoDB/testsuite/TestSuite_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {cf9d72d9-d3a9-41d2-97fe-da7ac70e704f} + {9327dc95-6886-4b87-86fb-433f055b37aa} - {b50ee78f-dd9a-419a-bf2e-f5536ea597d8} + {a3bcc76e-3766-4334-90ff-3a5a1cc912dc} diff --git a/MongoDB/testsuite/TestSuite_vs110.vcxproj b/MongoDB/testsuite/TestSuite_vs110.vcxproj index cc2d68706..08491fad4 100644 --- a/MongoDB/testsuite/TestSuite_vs110.vcxproj +++ b/MongoDB/testsuite/TestSuite_vs110.vcxproj @@ -101,32 +101,32 @@ bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false diff --git a/MongoDB/testsuite/TestSuite_vs110.vcxproj.filters b/MongoDB/testsuite/TestSuite_vs110.vcxproj.filters index 69f34866a..004e42083 100644 --- a/MongoDB/testsuite/TestSuite_vs110.vcxproj.filters +++ b/MongoDB/testsuite/TestSuite_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {b0fb6af8-f968-45bc-9e77-b66e0e513d10} + {68f33d7a-be8e-4ea7-a3d2-d62c9a5d547e} - {73df8966-c459-42f0-b747-65b7c8d3e367} + {66d1cff6-f615-45ca-96c9-6b219b9d1f1a} diff --git a/MongoDB/testsuite/TestSuite_vs120.vcxproj b/MongoDB/testsuite/TestSuite_vs120.vcxproj index 672c5607a..00e6f8272 100644 --- a/MongoDB/testsuite/TestSuite_vs120.vcxproj +++ b/MongoDB/testsuite/TestSuite_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false diff --git a/MongoDB/testsuite/TestSuite_vs120.vcxproj.filters b/MongoDB/testsuite/TestSuite_vs120.vcxproj.filters index 0c2db8d77..48777bff2 100644 --- a/MongoDB/testsuite/TestSuite_vs120.vcxproj.filters +++ b/MongoDB/testsuite/TestSuite_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {65bc9f31-fd0b-4959-8cd7-4cac4cd77350} + {e8318931-3e65-4483-b480-15bc5c6e8dd1} - {4cc7eb2b-f711-4fee-a295-bd2f116cf95e} + {a1c8fa74-f569-492c-a128-f93119a07918} diff --git a/MongoDB/testsuite/TestSuite_vs71.vcproj b/MongoDB/testsuite/TestSuite_vs71.vcproj index 1b24e9470..ffca6b2dd 100644 --- a/MongoDB/testsuite/TestSuite_vs71.vcproj +++ b/MongoDB/testsuite/TestSuite_vs71.vcproj @@ -37,7 +37,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false TestSuited TestSuited @@ -129,6 +129,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitd.lib;WinTestRunnerd.lib;%(AdditionalDependencies) @@ -139,6 +140,7 @@ bin64\TestSuited.pdb Windows MachineX64 + %(AdditionalOptions) @@ -161,6 +163,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnit.lib;WinTestRunner.lib;%(AdditionalDependencies) @@ -171,6 +174,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -191,6 +195,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmtd.lib;WinTestRunnermtd.lib;iphlpapi.lib;winmm.lib;nafxcwd.lib;libcmtd.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -202,6 +207,7 @@ bin64\static_mt\TestSuited.pdb Windows MachineX64 + %(AdditionalOptions) @@ -224,6 +230,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmt.lib;WinTestRunnermt.lib;iphlpapi.lib;winmm.lib;nafxcw.lib;libcmt.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -235,6 +242,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -255,6 +263,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmdd.lib;WinTestRunnermdd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -265,6 +274,7 @@ bin64\static_md\TestSuited.pdb Windows MachineX64 + %(AdditionalOptions) @@ -287,6 +297,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmd.lib;WinTestRunnermd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -297,6 +308,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/MongoDB/testsuite/TestSuite_x64_vs100.vcxproj.filters b/MongoDB/testsuite/TestSuite_x64_vs100.vcxproj.filters index 72044e95f..224e5f609 100644 --- a/MongoDB/testsuite/TestSuite_x64_vs100.vcxproj.filters +++ b/MongoDB/testsuite/TestSuite_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {1904e5d6-4676-4c7e-a6f1-63810514ae62} + {e9949696-f7ad-4fb0-a438-e9ce6da32864} - {9be090bd-793a-4542-a879-318a5bc33bbd} + {06b26970-e76b-426f-b441-001db1cf37e3} diff --git a/MongoDB/testsuite/TestSuite_x64_vs110.vcxproj b/MongoDB/testsuite/TestSuite_x64_vs110.vcxproj index b9b5b12fe..0104e5e2e 100644 --- a/MongoDB/testsuite/TestSuite_x64_vs110.vcxproj +++ b/MongoDB/testsuite/TestSuite_x64_vs110.vcxproj @@ -101,32 +101,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false diff --git a/MongoDB/testsuite/TestSuite_x64_vs110.vcxproj.filters b/MongoDB/testsuite/TestSuite_x64_vs110.vcxproj.filters index 73b8406ea..bd8741dcb 100644 --- a/MongoDB/testsuite/TestSuite_x64_vs110.vcxproj.filters +++ b/MongoDB/testsuite/TestSuite_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {cc99fde2-de4a-4860-a99d-20476f77c6cf} + {c3ae06cb-72ce-4b20-91db-f084c714f8cf} - {adf91777-08f8-4cf5-84f6-444f6dd8dbb0} + {ad992662-161c-44f0-a6c9-f884c6c285a5} diff --git a/MongoDB/testsuite/TestSuite_x64_vs120.vcxproj b/MongoDB/testsuite/TestSuite_x64_vs120.vcxproj index cc30c1069..18e1c5b41 100644 --- a/MongoDB/testsuite/TestSuite_x64_vs120.vcxproj +++ b/MongoDB/testsuite/TestSuite_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false diff --git a/MongoDB/testsuite/TestSuite_x64_vs120.vcxproj.filters b/MongoDB/testsuite/TestSuite_x64_vs120.vcxproj.filters index 18659ccfb..b2a912dd3 100644 --- a/MongoDB/testsuite/TestSuite_x64_vs120.vcxproj.filters +++ b/MongoDB/testsuite/TestSuite_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {32ea65c4-cb7d-457b-b289-e42551439926} + {c292978e-7b1a-4947-9621-b4cc5df3a87b} - {27e66e46-0461-437a-8717-87dde8bd5918} + {4d33e7c9-0c03-4163-9bb7-3c14284284a9} diff --git a/MongoDB/testsuite/TestSuite_x64_vs90.vcproj b/MongoDB/testsuite/TestSuite_x64_vs90.vcproj index 9ff81afcc..aecd375bd 100644 --- a/MongoDB/testsuite/TestSuite_x64_vs90.vcproj +++ b/MongoDB/testsuite/TestSuite_x64_vs90.vcproj @@ -47,7 +47,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> ..\bin\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Net\$(Platform)\$(Configuration)\ true true ..\bin\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Net\$(Platform)\$(Configuration)\ false true ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Net\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Net\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Net\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Net\$(Platform)\$(Configuration)\ diff --git a/Net/Net_WEC2013_vs110.vcxproj.filters b/Net/Net_WEC2013_vs110.vcxproj.filters index ff44bb776..17b92d61c 100644 --- a/Net/Net_WEC2013_vs110.vcxproj.filters +++ b/Net/Net_WEC2013_vs110.vcxproj.filters @@ -2,139 +2,139 @@ - {14aec283-7ff4-4efb-9f81-3420ab775e3c} + {c5903a6c-8e48-4644-9f2c-d424d8e165cc} - {c2d100ce-eb72-4c06-bb12-e565f4897cbd} + {8200782f-111b-415f-94fc-3d3b4304a80b} - {b33527d9-8e86-432d-bb0f-86eb1bb2c35e} + {feb34fc5-8d83-4f9a-ab52-081e99ec8960} - {bd76363d-cb8c-4b72-aefe-673066f957d1} + {d862efd8-2dd5-48a9-9c45-ff0cd439ec40} - {52f57056-64b6-4701-9ce7-27544cf708f1} + {a244fc56-e260-470e-b2a4-cab7da3c0808} - {554ed281-1bdc-4842-9a86-964a1e82c4e1} + {dd12a8f7-f4b9-4733-81ea-8f0bdb59b44d} - {aa1cac08-334e-44ab-8ab0-92c26384648c} + {8153fb51-c507-46bf-8dae-8f3ef42eb35d} - {6b7232a9-cf64-4161-bba6-5249774b928f} + {252a929e-1da1-49ae-b2d5-4713b6c03632} - {4b5bf70d-92da-40a5-8eca-0a1d2045dd6f} + {77ba251d-ce7d-42c3-9b40-149fef4a837d} - {323b204f-c3c6-401c-9417-128f0db4754e} + {f9c5703d-3cb6-401a-839a-f7ac6b83360a} - {5a364297-48e8-4741-83c6-cecc41f2bfb8} + {739c28cb-20bc-423c-86fc-20eaa859cdf6} - {d11b9384-75a7-4009-8fdb-43e1052d3d51} + {b63a2dfb-ae99-487a-8362-e4880b0555c5} - {c618ead8-59a0-4a7e-98af-bb3347ef2636} + {81df8653-4e2d-4bc2-a6ec-8daedb0ab17e} - {63edd2a7-3dc3-489d-ba29-e02b104df71d} + {3705a943-1838-4a44-b5b0-b9abac417b4e} - {6d3a6069-37c3-429b-bbb0-73160054d193} + {90a9f28f-355d-4cef-84de-64437ae18375} - {b942f118-d065-4c0e-9f23-ae066c00fb4d} + {bb9531b4-6901-4f7d-9609-8f01214d7545} - {ae858c60-46e6-4a61-b9a1-fe61146609c9} + {eb561a4c-c14f-444b-bec2-99e770a501e5} - {98093087-8998-491e-8013-7cb4c7d9e7f5} + {30eb8b20-cb65-497d-8357-2e1abdf7b5ee} - {bcadeca8-82eb-4d1d-b48e-2a29fb328b5b} + {5f77dbeb-f7b8-4d26-8a19-0d9107073151} - {5684a188-249f-4fe9-89fc-ad555334867b} + {fbe689c4-5443-48f6-ad57-afe26ee4e979} - {310dc949-f275-44db-a2bb-3b5052ee1330} + {eaf9cbbe-8ebd-45eb-af83-af4c12e26b36} - {ffd629df-10e2-42e7-99f6-a824a952cc93} + {e9cdd43a-dd7d-4682-967d-3c89bd7118b5} - {bc6735f8-45ac-412c-ac70-73901e04e676} + {a42a1546-112b-42f4-9401-8b21ad52a5e8} - {f1de02f7-07df-4b9b-afe3-61fbdb3e1920} + {b22b2350-f3a2-4c3c-9085-1f66161a80e0} - {9c927ae0-0600-472c-9d69-58faa87503b7} + {706db337-7dad-4e3a-890d-620f862d7471} - {5ac39e79-1c72-44e3-afef-a414298f8855} + {a31923e9-825e-4c5b-8455-5a3c4c960b70} - {781af335-85a6-402e-bebc-4ef140150a13} + {63a06007-e121-4ea5-9b40-9126d59a760a} - {d5c1067e-f8bf-4980-b4ba-1c405f1bf954} + {15d62f8e-e448-499b-8584-2ae19cbe2c39} - {f160eb45-29a5-42a2-9854-dc0aa804be98} + {383b014d-dbbe-482e-b278-f56a1eb46c1f} - {f028f30a-b838-4379-98d3-58c24b2cda1b} + {d10bfa1b-d858-496a-a1dd-059aca60a960} - {f15dae81-6d71-4d44-8d77-22f62e2ad6d4} + {915639e2-b424-41f0-8853-b15861068a9b} - {fabd148d-4686-4056-b7ba-ed65f4e0c36e} + {840ae175-7d75-4bdc-9760-2c8b136f899e} - {0511c8d5-11ee-4570-af10-4d1c2e42cd52} + {954b0030-4236-4a1a-ad62-a535c8a8974f} - {61996bdf-4574-4f03-a127-0f30b95221e2} + {4a07c293-5039-4180-98c3-3b95ce34e410} - {24dba10a-82a3-418a-80fb-3ca2e0cfdd1b} + {2b29289f-c77b-41f0-a8bd-955a3cf2a5e4} - {02e2d08f-f75b-4476-a3e0-682c6d267cf3} + {efe0118e-f8ea-4e7f-8f93-d5176eb34fe0} - {b26d82c0-d35b-4df5-b40f-2a8a9bc89646} + {bde6d18e-3aec-44b8-a7ef-e08ba7bac1e8} - {f6dcdeaa-47a2-4a5f-a3af-cb62e7f19e7d} + {091ff77c-d66c-42b8-a013-40952350e53c} - {89725839-1149-4efd-89be-a14ef6a274bf} + {23c79763-9906-4d0e-8898-e1cf2e694f69} - {15e1419e-557b-46ee-b77a-e6325c737c34} + {796e3d54-f706-4cfd-8485-9c1e5aa182c7} - {9e39bb30-ab26-418d-8a16-fb61d6754f65} + {a570f081-73e3-4cd5-9ec3-c929b90f31ce} - {9c2b5a00-a3dd-4942-9aeb-a27c726c6b00} + {e1afe942-3011-4416-b045-7098c4f09126} - {039e718b-12e9-4a53-aa83-68e2c40954b6} + {3b5725f7-7429-4668-986c-bfd1cfd55156} - {98587191-10da-4e10-9985-7e2a3088bbb3} + {e62071a7-a945-44f9-bc78-518e97639f0e} - {f86fa534-af29-4476-a5c3-c35b269ae784} + {bf26761c-3072-4c06-9b6c-10133ffa34cb} diff --git a/Net/Net_WEC2013_vs120.vcxproj b/Net/Net_WEC2013_vs120.vcxproj index b2ad1a4bc..4f14005ef 100644 --- a/Net/Net_WEC2013_vs120.vcxproj +++ b/Net/Net_WEC2013_vs120.vcxproj @@ -98,31 +98,31 @@ ..\bin\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Net\$(Platform)\$(Configuration)\ true true ..\bin\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Net\$(Platform)\$(Configuration)\ false true ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Net\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Net\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Net\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Net\$(Platform)\$(Configuration)\ diff --git a/Net/Net_WEC2013_vs120.vcxproj.filters b/Net/Net_WEC2013_vs120.vcxproj.filters index e7a74409c..1748e159c 100644 --- a/Net/Net_WEC2013_vs120.vcxproj.filters +++ b/Net/Net_WEC2013_vs120.vcxproj.filters @@ -2,139 +2,139 @@ - {bf9f29b9-804d-49cb-9a99-5f31e028981a} + {1bd8f372-4a06-4215-b913-d7b3c22b886e} - {1792f4f6-86a1-4007-98d2-5e933bdde49c} + {10c5b3f9-e0da-4e57-81b3-8f65c56ad594} - {1400cabb-26e7-4ff0-9955-2bedf59536a3} + {7486bc28-20a7-48a6-8de0-cfc881229e82} - {778ade7c-0ec1-4ef5-8a83-59272f6ebecb} + {0489e47a-4820-4a1f-9c39-71ee4f7cd308} - {caf40d07-c461-45af-94ac-eda3ea6ab770} + {745ae453-9273-4eb0-8c76-ef84a122308f} - {0605b92c-16d5-4bed-ad91-e7e24b86520d} + {f7843494-4608-4d75-86c1-9d436e26df29} - {79e7b5da-9ae0-4d6b-906b-c2f24ec6a22b} + {83119330-c2fe-4051-b894-206c0dbd1609} - {0119db4a-db97-4696-8bf9-e3f8da6ec978} + {418ef227-6d88-4bb1-bca5-84446baa8118} - {ae994d19-cf02-4d30-bb43-8534ea781a8c} + {bcd55f4a-3efb-41e8-b614-fa7d2240f1a2} - {96594e22-c49d-4a35-8bb9-96b73dcd4205} + {4e6d5b73-57a0-4306-9b99-cc5c4e6096db} - {69a2122a-c429-4e11-aca7-4fba5bf2dfb0} + {1320ffd7-f156-48ce-b720-f60c7f46d726} - {83fd7a22-03d8-480a-8251-dea0938f8fef} + {0100127a-2734-4485-983d-2301e64bd562} - {33d188e3-4712-408d-bba1-59ba0c8a6bcb} + {cef17310-bcee-4d27-9d5a-4b1b067aac43} - {ab41a442-560c-4bfa-ac86-15063efae6d7} + {ead9324b-e69f-47c0-a7cd-836dcbe5f127} - {129bab3c-93c1-4013-b1d4-6e2640859cd5} + {820160f8-6e19-491e-a55b-bd5d9ff71c60} - {bfd84ff4-daf9-43f7-92ce-12665aa56605} + {0f530a09-6c04-4b46-8015-d016b5e98fe0} - {f84a7047-4636-4c59-83bd-1926c35e5333} + {bded0c21-897b-42ba-8575-2d567933eccb} - {aad396ce-9ae0-486d-ae6c-9c4fab52a981} + {2ebcc81f-0b0e-4388-939c-6abcc707bc0d} - {f3833ae1-4729-4c94-882c-0b3d1606ad52} + {1dbbacde-8628-4a0f-a838-59d873d9133a} - {6c52bcb2-72a4-4b54-8462-e3dc8bd9e6dd} + {27c236f4-edb0-4024-82eb-327a52d7670b} - {0b717d33-c7f6-48e4-b763-11d4ec1fe081} + {e11a6b88-fb75-4483-8080-299a5c66deed} - {c3deabc1-9664-4b74-92ee-2fcc9d343f80} + {87810ce2-7362-4686-a125-3607f2c75f0e} - {23183ec3-b996-485b-a60d-ef0cbe994d1b} + {84b99672-ee76-4e02-b925-290659e38fdb} - {e7d1dae0-05d7-4763-bd99-6dbfcbd58973} + {81c35217-67c7-48c4-a5fa-42c8bf4de16b} - {c5fb0ea6-14ca-4999-84fb-4203665941be} + {61e05400-d7ba-4f4c-aac7-59efa7acd541} - {2295b953-95aa-444f-9f0d-ea8e96902af1} + {3e0d064b-141c-424c-a167-10641ce48860} - {2bac65a8-2a3e-47b5-9b31-fd914c15e245} + {10be7076-2962-405e-ad29-412633063655} - {9a40c4ef-0fc7-44f5-b1cb-191603b22164} + {5c405085-17e4-4cf0-b7df-9d46c5a29954} - {406a422d-767d-4dff-af7d-a19a445420c8} + {85942ad9-a45c-4a23-a54a-b0603ed5c40b} - {d2766e5d-d49e-4e66-8837-42ff71846cf0} + {ca98bbc6-24f3-4c02-99c5-f008c5662b2f} - {7758cec7-41c7-4696-a771-62b9d26973d8} + {4e2cf42e-bca1-4216-b718-e6e9211487e6} - {dc3842a1-b720-4bbb-b790-b5fbd762f598} + {f1446fea-99da-4760-ac5d-4ae62f3e42dc} - {a6c67f36-4030-46fb-b6d2-e95cc64105b0} + {2b430714-9761-4d20-9e70-45569377a10d} - {8c4dc3c2-03a6-472a-a7b3-3ef37f0254db} + {df7dca54-0c19-45ce-89c8-12ba9afd7e5c} - {a0e88c29-40c5-4892-bf81-0f3f508b98be} + {72100236-f75d-4bb0-bbe5-2de2269d0819} - {1942cd00-bb89-45fc-bb62-85a3bfce3636} + {eaf72227-78ac-4435-88e6-d59722ae71b1} - {b2566ce2-a053-4dd0-af0a-56f406e68f57} + {5ba657ed-3e9b-434a-808a-a9f9e039b430} - {025b1948-021f-478d-9698-a20bef07c3a8} + {994f69bd-37f2-4bd7-b0dd-17ad994cf08f} - {53bc5ee1-73d1-42d1-9ac7-ed3e84c6ed3c} + {7d368f1c-74c9-467b-80b0-128cd5f66f76} - {356861d8-3b6c-4b6e-8b02-b3b978ff16f3} + {8e87c63e-9e10-4c09-a34a-44a9c630de83} - {c2fd889d-2eeb-4424-b3fa-15ddc334ad38} + {b3d5faf2-95ec-4b26-a5af-4cbf560e49e9} - {8cfa9a91-d9f8-4598-bc4a-723731e9cd6e} + {391a67c5-9b1b-402c-ab56-7a56bc035987} - {60945282-3aa9-43ad-8a1a-365ac9bb3f8f} + {de335503-a61f-48c3-980c-a70541e94b2f} - {4a6b8e72-fb7b-4289-8d44-8248a187dd16} + {efeb9d69-a7ed-4631-806e-a2c4a30fe4b2} - {afbf1fcd-17b2-4f71-b1e8-06998421b642} + {d1c02a2a-2799-4726-880e-7c548ca4c575} diff --git a/Net/Net_vs100.vcxproj b/Net/Net_vs100.vcxproj index 91d565b96..6f0d53fa0 100644 --- a/Net/Net_vs100.vcxproj +++ b/Net/Net_vs100.vcxproj @@ -81,19 +81,19 @@ <_ProjectFileVersion>10.0.40219.1 ..\bin\ - obj\$(Configuration)\ + obj\Net\$(Configuration)\ true ..\bin\ - obj\$(Configuration)\ + obj\Net\$(Configuration)\ false ..\lib\ - obj\$(Configuration)\ + obj\Net\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Net\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Net\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Net\$(Configuration)\ PocoNetd PocoNetmdd PocoNetmtd diff --git a/Net/Net_vs100.vcxproj.filters b/Net/Net_vs100.vcxproj.filters index c166d82ab..8ea917c5a 100644 --- a/Net/Net_vs100.vcxproj.filters +++ b/Net/Net_vs100.vcxproj.filters @@ -2,139 +2,139 @@ - {3faeeac7-6dbb-4e28-82da-d3f8ca810ff0} + {868afd7b-9ddc-4099-b7d2-9422051a121d} - {c0ff83aa-e870-4522-8173-6543c2c1a955} + {78b3c0fc-d752-48f5-a83a-c476145d29cb} - {2285ffec-5f56-496c-9bbe-1ec1877e64a5} + {f376f6e5-5c36-407f-8a1e-ee199e006221} - {2754b11a-56ca-44c6-bb1f-3af8aaf04d53} + {4166578b-0db6-4181-97dd-7928827643d8} - {01a6454d-f0a1-4a16-a5b6-915a1b6c9d97} + {b11b34d9-48fb-4635-976c-7b1e2f601e5a} - {aad4b3fa-2d92-46e1-8f75-7c98712dfd8a} + {8e596142-b445-4a03-b2a0-636629fa7b3c} - {65fd9a0f-c124-4c75-8cd7-bbda6cd4d936} + {690b97b4-9a6d-4abc-bd10-36dcc425095e} - {f174f985-c147-4c41-b8af-dc349b2ce5ae} + {8958f03a-b070-41fc-9923-3bc00af399d4} - {c32612a5-8bff-4320-83f9-9ebfa020a128} + {64e16e38-054f-49d0-9321-3489c6ca977a} - {13bbfd3b-e6d9-490b-8e68-1074ae8878ae} + {247797c4-8afb-4499-84b1-1dd8437cacb1} - {1707d3e1-0ad4-4136-99a4-34df505b6aef} + {ed02b09b-30ad-4eea-bb95-b8e753f91623} - {1ded03f1-0d2d-4b4b-bf9e-324e53e674af} + {7f152f99-9399-4b1d-a80f-39df188952b0} - {547a106e-fe37-4c2e-b227-1eb51325596c} + {a9f3be6e-2ee0-4e5e-9d76-cbf6ab7ff7e7} - {86aa99d7-487a-47ed-b1d0-19c9459b18e6} + {2fe8f637-1419-4d6b-842a-307b45ab73f1} - {5dfe4076-3aa8-4ede-9ef8-87cf84bb6d3d} + {e5a62fdb-becc-4c39-aaaa-106e79ab5e5a} - {465ec6bc-9210-4245-82b0-97dccbd0d1aa} + {a5048a86-ad4a-452e-9409-c1de45c6272e} - {bcc0569e-0c27-425a-a837-d9d7fe901553} + {ce27c701-96b3-48ea-9ce4-41a03ac25477} - {eff8fe48-41e7-4969-88f3-8009bb81fc89} + {3898a8a4-5ee7-4b34-a0e3-7f1d62aa0bf4} - {1a326f54-901d-4dba-bc76-6bdc9edfa144} + {448680fc-cbe0-463c-bcef-67061553b960} - {87922337-ffa6-4348-972e-07ed33616906} + {ff8d7576-47da-4843-a614-074b69cbdc81} - {034f9977-4003-4ec3-826b-b39c49f2bfa5} + {bbc32086-7f39-4a2a-b3c9-fd54ad5739ac} - {b014abff-b300-4503-bbd2-f842ca6d5465} + {136d29f6-2556-4333-bd33-c33c5493c2ec} - {8fe1d7f4-6aa0-40c9-84a1-832778b88982} + {b4c5f603-37ba-46f5-b135-20c9b9485acf} - {5cdface9-6c8c-49bd-b9c5-18163eded745} + {fddcdb59-5692-4401-8711-a1f5aaed0eed} - {2e096fb4-af27-4fab-9ea6-4db04eb67d8d} + {9ff78a10-c12f-494f-ba04-e36e038f2f5a} - {c1911cd9-eee8-491a-9d04-f94217de95f7} + {1330f6ba-4ae2-4e43-baef-a7503d518730} - {aac0e9bf-1a10-4078-8e1f-1f7f000f43ca} + {b95728ac-29e2-48b7-b291-3f8127ec18b1} - {91986bae-908f-4d46-97e9-8ef13ad41f89} + {da5918ef-f976-4f88-8fd9-ee788c14385d} - {3f07622a-9481-4c40-be77-348cd1f1bf17} + {0fbcfaec-bcc2-4074-b6e5-5c21d88ac55b} - {1509bc83-502b-4d67-a308-3d239a811410} + {7c1d8e92-8c42-41e2-9709-4025acbba345} - {ccf88456-697b-4d70-97db-d06fe3c4f674} + {705b2179-605d-431d-8e05-2a44ad4ebc18} - {c0110802-085e-446a-889f-f44ddd3509d7} + {600d7055-3dfc-4734-8220-64fc8010ac05} - {0f4fedcc-d579-4f06-957f-f41338e8504e} + {cffa8a67-e06e-4071-a594-20240fc8f7d2} - {9b204259-96cf-45a9-b3cf-35819de930c8} + {b771108e-60ef-4320-88b1-bf4f7c521245} - {24023f67-6d21-42a8-89c4-6f6f5abf4f59} + {670c47c7-dca3-498d-9f66-016fd8944a44} - {32cef24e-e499-4f14-a870-76f229fd0062} + {a34fbe55-2594-4c26-b717-84e062fed982} - {68029fdf-7518-42a2-915a-98627f2da600} + {d4bfa61b-e7d9-4101-8c33-6bbfe0f1518c} - {68c55bea-e6a3-42b1-ad56-69d3c31938fd} + {8caa48b2-fa82-4a2f-b8d6-febe1e8caca5} - {5e4dadea-83f5-4fa9-b2ed-9e73853930aa} + {9682b5f6-9208-4678-b3d5-a0a3064aa7a8} - {17c8cfa6-d431-4e42-8c73-2b186cd267f7} + {35ac4b7f-89ac-4e41-88f2-da0d28ccb386} - {29f55cc6-4c0f-4a03-aab9-736f0720e66a} + {a7875e68-cd65-4cd9-a5dd-6dcd7ad65329} - {c896ce9a-cdbc-493c-80de-32bc44d0cd1f} + {18077d14-f8e6-4d73-a9d8-85be79311339} - {ddd3660f-296a-4d05-bbb1-2925d5bcc704} + {e21a67b9-af67-4586-91e6-4ec7cf89a331} - {8f716034-d24f-43ef-a50b-fb722d02f7f3} + {a6ae8f68-e668-4e2f-9ef0-621a6d08c3b1} - {aec27efb-2416-4163-80f0-0d5ba376d7e4} + {0787ec62-4f72-4cee-bc0c-9d9ead93915d} diff --git a/Net/Net_vs110.vcxproj b/Net/Net_vs110.vcxproj index 5a05baf50..ac8a4214d 100644 --- a/Net/Net_vs110.vcxproj +++ b/Net/Net_vs110.vcxproj @@ -95,29 +95,29 @@ ..\bin\ - obj\$(Configuration)\ + obj\Net\$(Configuration)\ true ..\bin\ - obj\$(Configuration)\ + obj\Net\$(Configuration)\ false ..\lib\ - obj\$(Configuration)\ + obj\Net\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Net\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Net\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Net\$(Configuration)\ diff --git a/Net/Net_vs110.vcxproj.filters b/Net/Net_vs110.vcxproj.filters index 71c6d7ba3..738135cbf 100644 --- a/Net/Net_vs110.vcxproj.filters +++ b/Net/Net_vs110.vcxproj.filters @@ -2,139 +2,139 @@ - {94bc8b12-842d-4e55-bcc4-5c7e3a2dfe70} + {a3af4ef1-6f1f-4019-ad03-cf603baab7be} - {48f82ead-b800-44b0-8e1e-1ee4c128fe2f} + {1ff07142-2c75-4bc0-908c-7727b56857c0} - {ac27bda7-075d-4b75-a6a2-4e6e5c28fa76} + {75142fb5-987b-4a1e-970f-44f8418cd327} - {f32c8f66-88f1-4b4f-8693-1c78e9b8bfd0} + {9185cc10-b1f3-4afd-a30a-ee2e33dd994e} - {248ab3e9-6a8a-46b0-937e-4d9e36b5b0f7} + {68a3746d-7c99-46e3-8fcc-7febcd8ef76d} - {195a7671-b24e-4f2f-ba09-a5bc32027ec0} + {3e131394-38a4-4ab3-9f82-917e1e898dd7} - {fa319dc2-d2c4-4932-802c-8e8aa1f3aa40} + {c0c86510-f1d6-47d4-88f3-63b69421df47} - {3747e209-dc15-43e8-8d7d-83112ff2c64c} + {a05a6147-f3e2-4bab-843d-0546b67bc609} - {ca1a5a4c-fa26-4d1f-928c-afd010316606} + {b341409b-1308-4718-8aef-0c6608e490d7} - {573cced0-afe0-4360-b371-5f6038c922e0} + {e852c0fb-8235-4c78-b8f6-6262cbb7eeaa} - {f130cf90-f064-49b7-ab97-654fd4824217} + {454e3956-e034-4ed7-91fa-550fbe58f498} - {7440359c-8642-45dd-b460-b38c919233ed} + {e75fee2e-d917-41fb-81b1-f5e6bcee24aa} - {4fe38773-171d-4343-9eea-99a9b56efd65} + {b56bf35d-6b29-4cdb-8dd0-942cc3280473} - {0c25702f-285a-4ca6-8d07-ac588a72ec6d} + {0c6f8de2-2013-4d9c-addd-ce6deb21a621} - {8801550c-efea-4650-8c54-c193becf816a} + {3ab705c9-5cb2-452a-a125-dba390cdb8c2} - {ded77143-eddf-4c98-8b92-670d2aaf32ba} + {23c39bf2-b3cc-45a0-a0cf-7942fa542a11} - {ebd7751b-680a-4fcb-adc3-cdee68bc5af5} + {573e3c60-e30b-4d30-af54-1f400ed01c6e} - {3f293abf-6132-46af-bd32-58620604baae} + {24346e33-f2d8-42d8-949b-8d1711e34991} - {4b622fc6-ab83-45f4-bf18-44d9f2a99ad4} + {9cb400c4-43da-4a01-a032-e91e9bc0977b} - {7c821706-00b5-4bf9-a032-4a2ed9edafdb} + {4823497f-32f7-41f8-a498-994684ea66e2} - {75465328-9751-49f1-8473-af5455532cd6} + {072b1028-3a4a-4fb3-9186-708558a8bec9} - {860da874-bf1b-4499-989b-0f0793e386ff} + {49f5cca8-1352-4e05-8fad-54a36924e4e3} - {a169cf4c-df11-4162-8afc-46d579c0f8b4} + {de2e3f31-772d-4cb7-b169-570f3a14660e} - {36251e50-f85e-4e10-a4d6-a0982d939e43} + {42f5d684-ab7f-4aee-b5c1-7dea079afceb} - {99a71257-4c73-4d13-8d45-44c9232b5a6d} + {af8d3698-7ef7-463a-84a8-dcde9f4d7c7b} - {ec6b0d92-393f-4aa3-acbd-cd9f8ad99ca2} + {fe614a37-e433-4891-9d80-7b6f6d105a9e} - {3f00e37a-7f05-429a-b5cd-afcb9ed7079a} + {dfd3d0c5-c585-400b-a344-ad738cd294ad} - {47aaf606-c705-41f9-9d7d-1f085f3e323b} + {7f8da00b-7e85-4734-9ebc-afa23d9369e8} - {6ef62c8d-d0af-4bc9-887e-ddf329e3450e} + {2959d58a-f846-4834-974b-5207c26fb542} - {51ed5aca-1e09-4a9f-b37d-62d3c9bcea2c} + {4cf57737-d60f-4177-b083-9f00cb6686ea} - {b325febe-fb66-40b6-bfd9-ac8b0cfbcae3} + {c40c0ee3-5034-413b-9cc7-f527a1c0b883} - {2be1eb81-9f40-4954-a0fe-ed638e04dc14} + {945d0d89-13f8-4040-b7a2-7c1cb08fd753} - {57f384c8-5556-49a1-bdff-9c8428e9e48e} + {5239666a-427a-4b69-9c39-b9e1e27d4e9c} - {cbbfaa90-62cf-4053-8fd8-411428a32c80} + {88971214-062e-4ada-a985-1914c32b15da} - {07d212e1-2f2f-42e2-b857-f1ab4994a44a} + {7f363464-ac5c-4123-b334-e913b859e3e4} - {f786fda2-b2f1-4ed5-955b-43464b2a263a} + {95390bb3-6322-4cda-9075-d0627d95cb0a} - {13736faa-2272-4f9b-a4d0-fac2303564f0} + {852964e1-041b-4b64-9db6-fb81057fb14b} - {77deb1b1-2cea-4a41-9f62-e42cb21f51f4} + {80e88a16-3aea-4b06-8183-43fec4beff5c} - {bbf51640-bf5e-4745-9acf-917473cf2619} + {0b4ea484-3ef7-48f4-9229-292f458537b8} - {56a52865-7293-488d-bcdc-15bd38f7d7d7} + {94aa65ed-d92b-4a34-9609-c102f1ec3b63} - {ddeef394-ed8f-492e-8aba-303938220fc7} + {2480d750-27fc-4eff-a166-adf56d3ea8e7} - {b7eadfb2-9ed1-47a9-b2d0-a5f33c850e69} + {ecd50d25-a2c6-40f1-87c4-fdf20ee6979e} - {bf26605d-7d66-4eed-8a24-e639d0d776d4} + {887d54f6-df14-4bbe-a03c-2ea5b551bacb} - {0844955e-5232-44e3-b713-896fa381be47} + {756a9c38-5858-4121-a4d1-5c706d75616a} - {e7d9f7b5-8f31-4e30-a3b5-0a7dd57e0771} + {19d603a5-204f-41cf-a757-d28e910e34a1} diff --git a/Net/Net_vs120.vcxproj b/Net/Net_vs120.vcxproj index b314c4e7b..1dcc0ffe3 100644 --- a/Net/Net_vs120.vcxproj +++ b/Net/Net_vs120.vcxproj @@ -95,29 +95,29 @@ ..\bin\ - obj\$(Configuration)\ + obj\Net\$(Configuration)\ true ..\bin\ - obj\$(Configuration)\ + obj\Net\$(Configuration)\ false ..\lib\ - obj\$(Configuration)\ + obj\Net\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Net\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Net\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Net\$(Configuration)\ diff --git a/Net/Net_vs120.vcxproj.filters b/Net/Net_vs120.vcxproj.filters index 8d46210f6..17cd45508 100644 --- a/Net/Net_vs120.vcxproj.filters +++ b/Net/Net_vs120.vcxproj.filters @@ -2,139 +2,139 @@ - {d9e77a6a-6c8a-4ce7-9602-5764c73e0067} + {89dfa39e-ad24-46ea-86c9-f789630396dd} - {3072fb36-2c25-4222-af44-ba473b403e50} + {a56cf516-c6be-43e7-85d7-25b0f3592e15} - {67e3ff45-3fa0-4fa7-b64f-912adc9b9ce0} + {f06b35d1-85d7-4f62-9e90-3cb8196459a4} - {6c33263d-de8f-4031-85c2-830b79b3ea60} + {4fda8f2b-2126-448b-943f-e91be8da76e8} - {d19f7947-b981-43e2-8dfe-42c7b8c3d89c} + {5ef4f74a-7a37-4736-8699-fe7a2c448d94} - {b9a3dbb1-2a0f-4d57-bc5c-3b94f2b52cae} + {29fd6308-9867-4e03-9116-d2ad61f2044d} - {0d0eb0d8-a8f6-471e-b15c-79f8e30f7ef2} + {f3bf89e7-ed18-430a-b682-4d7dd0e6cb0c} - {124ec3f6-41de-4437-82c0-8df9b54eb486} + {9d4e0317-69cf-4449-b4d8-5e821eaad176} - {e047e1a0-3dc1-4d29-8ec3-83955c396cdf} + {d3ef5ee1-0fa6-4a4a-8545-ebd2bcadc918} - {3b863df5-6a5f-4f5b-9568-e25a02ef8a7f} + {35b0c849-2665-41a1-8ac2-1a6b57aaaa49} - {3b9bcb31-ea3c-44e3-88b1-51129fc09695} + {570791b7-f6d0-4b76-a631-ee9afe3e0033} - {1dc60178-904a-49b0-9360-e5e3f11d7320} + {7b36ffec-98b6-464e-a41b-499958aa350c} - {445e4c2c-2caf-44e5-812d-94731c2db896} + {b9fab3e9-bc08-4edd-a621-095627ac25d7} - {c63f1fc6-00e3-43a9-a0db-57bd39aa65b5} + {2f4619a7-ca7a-4ff9-b130-5d7efb12d61f} - {ec3c669b-9366-4833-b11b-35fc81e1fdc8} + {7e2e0c29-96f0-4e01-8e25-50ecac3304f6} - {775d1277-b1dd-41e7-8959-b0ca7983056f} + {a44e7f01-d170-4f6e-a48e-8087b693f66e} - {fd6ddb47-8e05-4940-9cbb-1b7110a14149} + {8648d7c5-91da-4f15-959f-00c70ab0d886} - {70d4565f-0d8a-48ed-b7c8-47b139099feb} + {e691f99c-9535-4bb2-a511-cd3369a7c4d4} - {82f8c401-314e-4433-ab8f-c4047b879b51} + {39158408-141f-49b0-a948-abb40921ec55} - {b3adc177-dc70-41de-b3cc-c678251a5977} + {390c8e67-a893-4a2a-a663-01ff271fa94d} - {8bf68101-dd57-43cf-a0a9-5b508a122953} + {90db6b5f-da58-4130-80eb-915f56caf31b} - {d9306a4c-de19-4b0d-9ccf-7ebd7b003140} + {f5a79864-21ff-46ff-a51e-b9816672ba63} - {a862219f-989d-4098-b856-3f79c9f4b8a5} + {2c553354-e4d1-42d1-b61e-50806a67969d} - {e162d08c-0d52-45a7-acb7-c62de4390174} + {dd584b28-3bfe-473a-90e0-3af9be253312} - {7fcc6978-cda7-4ab9-b992-dcf2cc66adba} + {681d4815-663b-49cf-a52b-08413da0b8da} - {fa016bd8-809c-4709-a296-716412607825} + {d62aff28-7886-4935-836c-38e21ec280f0} - {15e88db6-db36-450d-84f8-d229f30ef768} + {31103b5d-344c-4c16-abfb-d930a36cffd7} - {fd949ba0-7ca1-4af5-b639-3e5e888e988e} + {279e2d67-1ece-4531-97f1-a2376302151e} - {4c1ae7cf-da7e-45e1-8a41-d571638b0f65} + {414e932f-0230-4488-9534-c126f0a7df92} - {b166ec49-f88c-4595-916b-934c6d5b4159} + {2c9ab677-6961-43c8-a0ce-b24336092f74} - {595b92af-8592-4162-9bd9-83e540109251} + {28d11e96-e676-412f-958f-75d39a089b69} - {55cc3b24-68db-4125-aa81-30586fdff1e6} + {909109ac-7394-4346-8016-3bcbace65eab} - {cfefeaaa-28a1-4922-b2c9-57a87df98199} + {f23c7a2a-67ec-45b5-b05b-049d69f18164} - {392624cc-d785-45dc-b4a2-f80bf763b8e3} + {d2970aed-fb39-48d8-8afd-727216457982} - {660b6c6e-626b-4e60-8b8d-7c974f9e7e96} + {2aad1647-ca99-4897-915e-eb64993cad6b} - {29b37313-e700-4c0c-a74b-3cd8b00eb176} + {4582cba3-5a99-4b1d-a651-e9df1afaadec} - {608628d9-0399-4df1-85a5-ca6b470f1833} + {9df8ff4b-e5f7-481e-9686-fe108208bf5e} - {8055bfb0-ac74-4ee0-8da5-141d0541fa6f} + {c0f83b5e-c2f2-44a2-810d-363842ef0598} - {13561411-3c72-4095-8838-141e71391c90} + {c6739a2a-c3d5-42ed-b304-d62e10b63034} - {6b9af553-a067-4a92-a1b9-9de859c237de} + {bc2d78a7-970e-4f8b-8a5d-2c293434bb7c} - {c60004f9-1796-4573-81dc-395be64327ef} + {96b695bb-bc21-4a6b-815b-67070e178941} - {2f01177a-4fd2-4a3a-a9eb-eacebd07a2f4} + {c530a5f0-e938-4622-b8af-09d3ae12ccc9} - {5c30b598-e097-4d8c-bc31-e466cd49384e} + {f53517f1-ab79-406d-9225-e21233b52c1e} - {b19b5710-b243-483a-a0a6-f287f7fec7be} + {30ce306d-e65b-47ae-8874-dcf40f07970b} - {fb78ddda-1c2b-4f42-9932-c5364edc702d} + {eefbc204-bc81-415e-b3a3-31aec354b648} diff --git a/Net/Net_x64_vs100.vcxproj b/Net/Net_x64_vs100.vcxproj index 61be39dc1..9b81813a2 100644 --- a/Net/Net_x64_vs100.vcxproj +++ b/Net/Net_x64_vs100.vcxproj @@ -81,19 +81,19 @@ <_ProjectFileVersion>10.0.40219.1 ..\bin64\ - obj64\$(Configuration)\ + obj64\Net\$(Configuration)\ true ..\bin64\ - obj64\$(Configuration)\ + obj64\Net\$(Configuration)\ false ..\lib64\ - obj64\$(Configuration)\ + obj64\Net\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Net\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Net\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Net\$(Configuration)\ PocoNet64d PocoNetmdd PocoNetmtd diff --git a/Net/Net_x64_vs100.vcxproj.filters b/Net/Net_x64_vs100.vcxproj.filters index 5a37ceb95..e17509b86 100644 --- a/Net/Net_x64_vs100.vcxproj.filters +++ b/Net/Net_x64_vs100.vcxproj.filters @@ -2,139 +2,139 @@ - {9758a553-641c-4325-ad21-f22cb087fa17} + {8e3d69e2-e6fb-4342-a548-76a4208c4c52} - {de0d5167-86f7-4614-81e9-439689e04125} + {b8eaea0c-f111-4370-b0b5-2392f64789ff} - {551a82c7-f681-4241-9a50-d3ea1b33c00c} + {5cddac8c-cf82-4ccc-9376-2aedf97126b1} - {a1b61fef-9442-4b16-9982-65d3afea2d5a} + {b809ef86-991a-49ec-b0d4-31920f023353} - {1522d4e1-9cdf-4c9d-9157-db7e690b033b} + {c5005892-f777-4680-a595-e6c0cf6a6556} - {28167d4b-868e-4a84-a027-85b40afbbf12} + {6c12f3a1-32ec-4cde-be86-1a1758af9e36} - {f47a4ed7-06dd-4c41-8fe8-46ae0bbdc508} + {90a5ec99-de61-45ac-8df5-464b6f3f55e2} - {22571d0e-1298-4f30-956c-6bb6cb2cc15d} + {02fc3b1b-7f49-4dd4-865c-48e727e4dea9} - {fa39ebb6-0fdc-4aef-b6fa-e93f64625c17} + {c159daf2-91e7-4ddd-b9c1-410a330e065d} - {f7f60e6c-9743-4056-b173-285208024c15} + {63524e47-ab28-45a9-a7c6-a1d625a31a94} - {b03de4e3-3a9d-4ba3-8353-5fee41f79798} + {ce030e8e-ab33-4a72-9d7d-238fd5626d70} - {9890bd5c-f95a-4c30-8f29-860adb2cf6e8} + {023a942d-5392-4906-911a-646466af90a1} - {3d685f78-9976-49a0-a0df-aa63aaa6e637} + {9e7643ad-914c-4993-9d6c-7285746d6941} - {e0cd97fa-aec4-41b9-af04-c4819cb5898a} + {7f990c8c-a319-4296-bc0a-638bfb5a5874} - {ad923405-95d4-4efc-b046-576c75736bca} + {4015d430-f282-42fc-b527-37b4e7876773} - {98e355f9-4573-405e-a7b8-b01fe8b92afe} + {7f51a35c-b758-42a2-81f9-6c5867371319} - {79723e1c-beb3-412f-9100-a8e64ca6daae} + {e17e8d3a-5d4f-4a05-b48e-a5bd720f4f15} - {9ff72959-28df-4ed5-bd7d-a1c3491a956c} + {9e7f1497-e359-4de1-a646-41c230bdd934} - {5050d0dc-e0ca-4ca6-99a2-cf9edf002645} + {1001c202-18e1-4527-901a-490056b7d062} - {3c8ed476-84e0-4ed5-b250-39579953eadd} + {db1fec5a-6f39-4911-80d7-d4c80fd6e4e5} - {b28f7e59-4113-4efc-8e3d-b1bdd538c95b} + {74d3c551-5751-4275-b352-fecb4b654e2f} - {33afdd14-1b99-4add-a598-0e50278e5426} + {48d9cbbb-5706-4e22-8d38-fc613de77d27} - {99db43aa-9d05-46d7-a463-849466735d7d} + {d576555e-2400-4972-81dc-a37494442d2d} - {37c8e621-3ba0-4315-b90d-3843afc17b8f} + {0ebe2556-1333-448c-8405-3eaf24ac4595} - {3f1bc5f8-6743-4f69-be0f-f6a0d61cbe2f} + {ec35dc9e-bb87-480a-895a-d736402c77b5} - {a8f04eed-9498-4cfe-8a54-5faeb741a0f8} + {8c2f48b3-210e-4fe4-8df1-3cddadb00c10} - {00808d76-1b2b-40d3-94ea-a561f126788b} + {d562603f-ac84-4a0a-987c-6209a8b7f2f0} - {1cb79d6c-80c6-4ae2-9de5-f1b49aea716f} + {45af0262-1f04-4711-a9b2-d2157e5c6de4} - {8e31358c-3d7d-4c61-b5d6-afe5b667934e} + {4a9e8c9e-98ee-4786-9551-4de7380346fa} - {a36ac539-0751-4a73-8d50-b5a966f1bd09} + {359dbb68-a896-4ea2-a2d8-704660c9dfc9} - {eefde8d3-504d-4b15-9eab-06fb1d127dfd} + {f3da7cc6-9c3c-45a7-8875-714df53001c1} - {b3e90411-80bf-47a2-a625-7bbb03f07624} + {e9141d26-ed7e-448a-83a3-44eb355ab332} - {2168bc76-70b9-4086-94d7-4978d630dccb} + {39bbdf81-b2a5-43bf-848b-0f9cd971fa8e} - {4f1d4134-b52f-4af0-ab55-7b167d705322} + {ccfae288-932d-4df4-9242-c6624ae873ad} - {71302c2c-d59e-4ce8-99f0-ba7fdf40f437} + {3d9c8d6b-43b5-4b4e-89aa-22f93bc3be6b} - {ca5c5950-0f05-4f46-a9fc-2fcfafc3e79a} + {0023c2ce-68d8-45b0-ae82-7b1ee5aa7663} - {d84576f4-5d21-4019-90f5-2e96ecd1c570} + {0bd54d17-d778-4aaa-a715-4a708ffb2337} - {3f60fe07-6a44-45b8-a84a-cfc048601a2c} + {a78d68b6-fcd3-470e-bbaf-b8ccfae9ce0a} - {90f692e2-4643-4fbf-b432-b9379ea2ce7c} + {8b3d99b1-15f9-46aa-a045-3162f98185b3} - {7719f7dd-c0f0-4a7f-a8c9-30e60caf252c} + {68d93f08-e6e3-411d-b51f-c96104db387f} - {57ca2e84-90ec-40fc-9e20-ee48d63e5a65} + {4351dba7-7a0f-4a17-98c6-7f5e0191f49c} - {5676cfed-4b8c-4a10-9a9d-b71246261746} + {57e8ddec-29c4-43ee-a420-b0ac73335153} - {e886a01c-a2a2-43f2-be67-5a9a7cf60ae6} + {12f50834-a755-416e-b3c3-7529c4577b2f} - {6a4c12cd-5e0a-4222-8258-1353b7f51208} + {cdfa453e-df49-4e05-982f-2f17efa5fe33} - {25c2dd6a-0af6-41b6-82de-57fd3eb74f70} + {5aeb733f-114c-4a71-8616-54c487d193b4} diff --git a/Net/Net_x64_vs110.vcxproj b/Net/Net_x64_vs110.vcxproj index e1794a67f..3c59767de 100644 --- a/Net/Net_x64_vs110.vcxproj +++ b/Net/Net_x64_vs110.vcxproj @@ -95,29 +95,29 @@ ..\bin64\ - obj64\$(Configuration)\ + obj64\Net\$(Configuration)\ true ..\bin64\ - obj64\$(Configuration)\ + obj64\Net\$(Configuration)\ false ..\lib64\ - obj64\$(Configuration)\ + obj64\Net\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Net\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Net\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Net\$(Configuration)\ diff --git a/Net/Net_x64_vs110.vcxproj.filters b/Net/Net_x64_vs110.vcxproj.filters index 10f5be6a7..cbf951991 100644 --- a/Net/Net_x64_vs110.vcxproj.filters +++ b/Net/Net_x64_vs110.vcxproj.filters @@ -2,139 +2,139 @@ - {838696d4-2602-4b1e-9a6d-c490c64076d9} + {e08e44b4-9dec-4cb6-9204-ccdc38834b75} - {ff7b307f-189c-4bc0-989e-2dc6d056065b} + {d384df7b-2a2f-4251-8fb0-2d52a264187c} - {ebc1703b-217d-4b11-b255-4d8afc883073} + {b99299de-9786-4de4-b161-dd6281eff07a} - {7c86d2ac-c886-47e3-82ec-8c2140237ebb} + {6fdfaade-d5d8-4d21-99b5-65cf3094e1ee} - {e7d96130-70f6-48c3-8559-a2328e99cc93} + {fd4621e4-cc12-4e60-a9cb-b35d51d2b688} - {b2a438b9-3402-4fad-8026-12786ed374bf} + {8be2664c-7fd9-4554-8fd8-2663f0b697fd} - {3fe7ed8b-510b-42e7-b2b7-a71f93c4515f} + {8fae8720-c87a-4715-af8f-9eed22ff2222} - {b06ef126-9212-4292-baaf-5f74020debd4} + {60e42c48-f36b-4a4d-9a02-a17f7ed02a5d} - {8a8d1427-10c3-4004-b98a-9b7de23df2de} + {382f1c20-cd9d-4eb7-8ebc-ab25adf00811} - {58568a3c-7e06-416e-a862-7373ccd12e90} + {3e3a2e1b-9e00-4c7c-9908-663ca50ff3e0} - {64da6dfa-6476-45c2-8b00-93b55cce448f} + {584d2538-45c0-4492-bc47-a376286a835a} - {9ce74fdd-ae35-46eb-964a-ffb2d13f36dd} + {e05f00e4-651e-4472-a2f2-b7a2e5d80ef6} - {de552b1f-10c1-43a0-8f60-349d809c456e} + {387fdb73-e79e-4062-9a6a-4bb0b0ff9bb6} - {28051f00-6565-445a-b5e0-e076d9a8123b} + {1acfaba3-e89b-420c-99ea-09f50f568039} - {a8178c34-e7e4-4521-8753-8d149843838a} + {b303a7c0-baaf-44c6-8012-b076ef9071a5} - {55499165-146f-4a8e-9735-e96c6889cd2d} + {464b2df0-d7f1-4456-be1f-70a8fd5f0847} - {a66d89c2-ddec-4afe-a77a-ba563bfa8858} + {af432d68-324c-472f-9bd8-bc7743356505} - {815a8813-2d21-4516-96b7-7257102ac2ab} + {9d693794-b193-41f2-9948-6ddde571830d} - {83270b2d-2bac-4da4-b9fc-92973305e725} + {c1cf6cec-300b-4735-8eeb-351c371cef69} - {bf7ff224-4956-46dc-8e9f-cea02ec6ad1d} + {0b87b631-0302-4d2d-b269-a5e6c10092d9} - {fb59b902-9c27-44e5-98b1-8603bac62fdb} + {500c8154-3f86-467a-a176-56b00036634c} - {6e2edf47-ca0f-468a-8d82-292a5d3a3920} + {41dfd08a-40f1-4375-90e7-9ed4f6053584} - {4384c5d3-5940-4613-b276-bb8d57549537} + {c198e1d9-6477-49da-af2a-050ac5a108d3} - {f3e9a286-69b9-426c-8948-22c5bf167cc2} + {068c3124-2108-43f2-9141-7a582ef0cefb} - {dbd21340-efd0-4a3b-aeb5-d2396f447fd3} + {63ab2416-6ce9-4038-9531-1efe3bf57a65} - {4c42138d-5680-478e-adf3-0b8a7ea0872d} + {6477027b-a9ec-4c44-85ec-17395759a843} - {87384dde-e2bf-443e-a697-28675578fa0b} + {a2ddff38-4bcb-4420-90ca-4a7df791973d} - {3152bc60-eb59-4f50-90a5-6d6df0a887fe} + {4ea53f8e-ae8a-40aa-97ea-a7635d44b2c9} - {0a0d5674-862f-405c-a6bd-62b776277c63} + {48b3bff1-486a-477c-b039-c3f129239359} - {0941350c-d9bf-43f0-a777-90a754f051e4} + {a5dec7c3-d553-4e65-98ae-7099630cf8c2} - {3358f6e3-283b-4a29-8236-ebda939b24a3} + {2e41bfe4-defc-4e08-aebf-59bc3f726d1f} - {2d3f0a45-7e0c-4947-9d25-eafcd25a1b05} + {b5c10625-5be1-4d82-b18b-d4427e0db3ad} - {73890df9-9301-4ce6-b553-a00b24d2aca2} + {5e3e4153-dbd4-421e-80d8-0a36f80b745d} - {ba7827dd-aeaf-42a0-88be-fed90a96bf86} + {0a0e56d0-f5db-4a6b-b9f3-af6aa63aa4ee} - {57e164c0-7892-4fc0-89f2-3d1aaa30a34c} + {2245d37e-d376-4be0-94ce-505a4cb45972} - {2cade14c-174d-4ee9-bc2b-a21ebf9f378e} + {3cd5e464-0ef2-4804-812c-3501fee0948f} - {78fc6cdf-d9c2-4173-bde3-0d4c7d41d0be} + {80548011-9377-4157-b6e6-e7e6b34560e0} - {f50c5222-9a30-46f2-b8e7-c03d5a7cfcd6} + {9b504655-465f-4539-87a9-4f9b8a64e35d} - {6ce13df0-72d3-415f-839d-324c0ccc45d0} + {4c98bd72-536b-42b7-981a-b9cc2159d116} - {0a047f78-5141-4107-ab4a-ba50513b73fc} + {bcd7c17b-156e-4da1-bd17-085986baf014} - {33da778f-1c66-43d5-917a-c49f1ef3c4a3} + {61f7bb72-fe65-48b9-9933-53e9c810d7d1} - {b3bd2c2b-b8cf-475e-9367-c6fe316bdf90} + {0eeec5eb-646b-4aad-a63c-4a8bc7cea9f9} - {9d75a037-5037-4957-8e83-2ba2284dd16b} + {eeea8a4f-6f5e-4517-8ac9-7534474ebc2b} - {6cfd57d9-00aa-4b31-ae6e-85a138472320} + {45320c9b-7dea-4e4d-a4d0-02de98c9e38f} - {19f9628d-1cd3-4ee0-a699-adf101dfd085} + {c9cf3a12-3044-459e-bfcb-578999fee2e7} diff --git a/Net/Net_x64_vs120.vcxproj b/Net/Net_x64_vs120.vcxproj index a2ffcb143..456da4a52 100644 --- a/Net/Net_x64_vs120.vcxproj +++ b/Net/Net_x64_vs120.vcxproj @@ -95,29 +95,29 @@ ..\bin64\ - obj64\$(Configuration)\ + obj64\Net\$(Configuration)\ true ..\bin64\ - obj64\$(Configuration)\ + obj64\Net\$(Configuration)\ false ..\lib64\ - obj64\$(Configuration)\ + obj64\Net\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Net\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Net\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Net\$(Configuration)\ diff --git a/Net/Net_x64_vs120.vcxproj.filters b/Net/Net_x64_vs120.vcxproj.filters index 4404041db..b599a85f3 100644 --- a/Net/Net_x64_vs120.vcxproj.filters +++ b/Net/Net_x64_vs120.vcxproj.filters @@ -2,139 +2,139 @@ - {6f22c924-435c-40df-a921-15a98a3e5a6f} + {748b70d8-8d1f-4d4a-8030-4db4de82959c} - {1fb6e9df-1c7a-4a7b-8f64-49a33a8f3015} + {f938698e-2091-4c7d-86fb-a270ea4dca1b} - {47e99f78-1cd9-4a99-a9fe-3192432c5910} + {865c5f06-57a4-4cbb-8dc1-fae5f4e03b9f} - {656779cf-c929-4eb3-8a9b-e03a3aaae707} + {3ca197ab-8a07-4ec5-843e-e71361b0d374} - {4df04b92-d44f-4774-b866-05c47049809d} + {70fbd523-176b-45ce-9d6b-d3209ea4cf38} - {600d1b6b-e677-4bc5-8b2f-71a6d2c741df} + {bcbcec0d-8320-4a40-bc07-45b07457a956} - {33f70409-cd9a-4ebe-8397-c73ed5d88258} + {72c8a630-ae81-41e1-a06f-ec9bfb71da3e} - {df3a785a-6603-423d-8f19-a0b350d06069} + {8de4887d-12cc-49f4-a746-88990a02bc00} - {c20ae836-d1a7-42de-b685-9f00003ba874} + {97181ae3-a577-422a-8d8d-182f82db1342} - {a2f01010-c63e-417e-a7b5-dd433b66f010} + {75d12a04-aa53-4907-9360-809682adbca5} - {bd0a7cc4-02f8-44ff-aec0-16c2ff9b3ba1} + {5ba5dde3-896d-4a3e-8ef7-83b8adcfadd5} - {3d6d5cf5-dffb-4692-87ab-1d4b6ebf8044} + {efeec3b4-5769-4ea5-9bed-d48d65c761ff} - {ae409abd-48d4-437b-b3e5-184125f4c2f3} + {197fbe09-5b0e-4b05-b0b9-acd3bf8c38c6} - {0c2c4999-63c8-41f7-ab6a-db617dd025fc} + {067ee135-4cb2-4f86-9625-5d3d7440f4e0} - {18d3d4fb-2f68-403b-8d11-bd00f16d0f2b} + {f1b5945c-e137-47a1-b1e7-c4a0b92daeaa} - {b2286d12-a087-44f1-a178-18aac7e89519} + {33a78b95-ff6d-4597-a94e-ae61e52e0885} - {f4ac6e1a-5ad5-409a-9046-0ba6cbed3ec2} + {2adc4b30-fc61-40b9-a43f-5a7721b32e5e} - {00b06905-8b30-4bc1-9d56-0102845670fd} + {04e57c25-a378-4689-8d5b-2f99ba8d28fa} - {d664095c-ea51-4a98-bcd9-97fb4b1f87f0} + {f364fcab-b7ab-4d8b-ad5b-db828e7515ef} - {328c6950-3fa4-43cc-a4ac-dc2677ba33e6} + {14953248-c3d6-4e3d-bd32-fa4006de441a} - {6b906aa1-13ed-4c2c-9252-b7d1ce00d2c5} + {cfe325e8-5db2-4c88-bd77-22b780e4f528} - {4b349eaa-4fad-4d1d-97bb-3593f325f27c} + {9d0a4350-3844-4736-ba04-7b5b293d7202} - {5932b24b-c374-451d-9b53-4649b5bace94} + {8ac00aab-efd2-4041-b8d6-8ae2bebbf170} - {dbf3d2e7-0d7d-43cc-93d4-898338c7c530} + {05a9b623-bb78-48e3-9400-a0a0c53c0805} - {09c98232-2ece-4f0d-8bcb-6eb0d126e93f} + {323d6671-9450-46ec-a48b-321d11c885d7} - {f570c8a5-7506-4609-9038-09ba505e2330} + {8ad0d983-56fc-49e1-a9da-b1bfccd3b727} - {ace6418b-a795-4172-90ca-80cf6c8e400a} + {37adb4e7-70bb-4faa-8c57-5fb243d6ad5c} - {bbfed021-1c7f-42ea-b884-6766b0ca46a6} + {32b17b88-c2f8-4b67-ab9d-1cd7a4615c37} - {eebccbb6-63c8-4a4f-bcef-2d72b434c9cd} + {0ae04f74-17ee-4820-814a-f3a0ee2d0bf0} - {845b37b5-44ea-44c7-a207-b2a3005fda00} + {58b177ba-e816-40af-9a0c-50f61d488990} - {46fac7ac-15f9-4e16-ba23-ebcfabd69b8a} + {60010d16-ae04-4391-8493-ee5cf7088e02} - {2c918403-61b8-4980-b7c5-7a5ba2ae256f} + {73977b18-4da5-4aa8-b173-76806dec58d8} - {e3c011a8-d842-4fba-929b-ae7ebce2c75e} + {a4971a6e-ebbc-4b4d-aa76-596dad4094ff} - {b25f2cca-3cd2-4284-a075-5e914a0a8c1c} + {ae2ef237-a13e-4a63-b293-b3b9d4c3b8fc} - {30529929-d308-4d76-a4d3-bd59fd80ffe8} + {7a3df994-da53-4ec9-abdd-dbfacd1b50b2} - {1c38f519-cb02-4a6f-90f8-8c46f4c81e78} + {f45d9993-e067-4486-9aaa-6c2efa0d5494} - {9ff25a92-9cfe-4913-8d2e-9426161e239d} + {5a758c0b-8661-4b1f-8571-7db0981fbacb} - {4b151ce4-abd1-4860-9464-5a23562f1b4d} + {90719a77-3c4e-465e-a9e3-71ba8877f090} - {e3e9e200-02bd-4ae3-b0f0-024cc93928e2} + {5480a2ae-3c99-43da-8328-b7c97b809f67} - {6a0ff65a-0cfa-4d9d-b4d5-b9ed4e5ac5e7} + {df65186b-ae80-48b5-90e0-417ef741dd76} - {451d034a-fde3-4cbc-96a8-7f83e1d844c7} + {710be0b9-197e-4733-af41-c8d137ee396b} - {783159aa-fb4a-41d1-a3bf-4e9264077462} + {a08c1cf1-573a-44c8-875c-c71ca92948ee} - {6f877834-edf4-46ed-8966-2d02834927ba} + {d3c58ac2-0f37-4307-b2a1-b42b7b1663db} - {1ab97349-855e-4d79-b2ac-dced53a01a21} + {110d889c-a3cf-4c40-b1d7-bb1cddb0e339} - {e6addc21-7b13-4c11-b88d-b0db5645db70} + {247dd0dc-eb53-48b3-8638-04181cadba27} diff --git a/Net/include/Poco/Net/HTTPCookie.h b/Net/include/Poco/Net/HTTPCookie.h index ceca6a0b9..8a859be9b 100644 --- a/Net/include/Poco/Net/HTTPCookie.h +++ b/Net/include/Poco/Net/HTTPCookie.h @@ -141,8 +141,10 @@ public: /// Sets the maximum age in seconds for /// the cookie. /// - /// A value of -1 causes the cookie to - /// never expire on the client. + /// A value of -1 (default) causes the cookie + /// to become a session cookie, which will + /// be deleted when the browser window + /// is closed. /// /// A value of 0 deletes the cookie on /// the client. diff --git a/Net/include/Poco/Net/HTTPSession.h b/Net/include/Poco/Net/HTTPSession.h index 6df4eefa1..0b01c2ca8 100644 --- a/Net/include/Poco/Net/HTTPSession.h +++ b/Net/include/Poco/Net/HTTPSession.h @@ -164,7 +164,10 @@ protected: void setException(const Poco::Exception& exc); /// Stores a clone of the exception. - + + void clearException(); + /// Clears the stored exception. + private: enum { diff --git a/Net/include/Poco/Net/ParallelSocketAcceptor.h b/Net/include/Poco/Net/ParallelSocketAcceptor.h index 44938b987..bd986716c 100644 --- a/Net/include/Poco/Net/ParallelSocketAcceptor.h +++ b/Net/include/Poco/Net/ParallelSocketAcceptor.h @@ -87,7 +87,14 @@ public: virtual ~ParallelSocketAcceptor() /// Destroys the ParallelSocketAcceptor. { - unregisterAcceptor(); + try + { + unregisterAcceptor(); + } + catch (...) + { + poco_unexpected(); + } } virtual void registerAcceptor(SocketReactor& reactor) diff --git a/Net/include/Poco/Net/ParallelSocketReactor.h b/Net/include/Poco/Net/ParallelSocketReactor.h index c89d68d9a..f17bddf70 100644 --- a/Net/include/Poco/Net/ParallelSocketReactor.h +++ b/Net/include/Poco/Net/ParallelSocketReactor.h @@ -63,8 +63,15 @@ public: ~ParallelSocketReactor() { - this->stop(); - _thread.join(); + try + { + this->stop(); + _thread.join(); + } + catch (...) + { + poco_unexpected(); + } } protected: diff --git a/Net/include/Poco/Net/SocketAcceptor.h b/Net/include/Poco/Net/SocketAcceptor.h index f15068e67..6d625f865 100644 --- a/Net/include/Poco/Net/SocketAcceptor.h +++ b/Net/include/Poco/Net/SocketAcceptor.h @@ -88,7 +88,14 @@ public: virtual ~SocketAcceptor() /// Destroys the SocketAcceptor. { - unregisterAcceptor(); + try + { + unregisterAcceptor(); + } + catch (...) + { + poco_unexpected(); + } } virtual void registerAcceptor(SocketReactor& reactor) diff --git a/Net/include/Poco/Net/SocketConnector.h b/Net/include/Poco/Net/SocketConnector.h index ae106f638..86e261cf8 100644 --- a/Net/include/Poco/Net/SocketConnector.h +++ b/Net/include/Poco/Net/SocketConnector.h @@ -92,7 +92,14 @@ public: virtual ~SocketConnector() /// Destroys the SocketConnector. { - unregisterConnector(); + try + { + unregisterConnector(); + } + catch (...) + { + poco_unexpected(); + } } virtual void registerConnector(SocketReactor& reactor) diff --git a/Net/include/Poco/Net/WebSocket.h b/Net/include/Poco/Net/WebSocket.h index 7139e69d8..173eae683 100644 --- a/Net/include/Poco/Net/WebSocket.h +++ b/Net/include/Poco/Net/WebSocket.h @@ -76,7 +76,8 @@ public: FRAME_OP_CLOSE = 0x08, /// Close connection. FRAME_OP_PING = 0x09, /// Ping frame. FRAME_OP_PONG = 0x0a, /// Pong frame. - FRAME_OP_BITMASK = 0x0f /// Bit mask for opcodes. + FRAME_OP_BITMASK = 0x0f, /// Bit mask for opcodes. + FRAME_OP_SETRAW = 0x100 /// Set raw flags (for use with sendBytes() and FRAME_OP_CONT). }; enum SendFlags diff --git a/Net/samples/EchoServer/EchoServer_CE_vs90.vcproj b/Net/samples/EchoServer/EchoServer_CE_vs90.vcproj index b192dcde3..6d3463c13 100644 --- a/Net/samples/EchoServer/EchoServer_CE_vs90.vcproj +++ b/Net/samples/EchoServer/EchoServer_CE_vs90.vcproj @@ -46,7 +46,8 @@ CompileAs="0" DisableSpecificWarnings="4800;" CompileForArchitecture="2" - InterworkCalls="false"/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\EchoServer\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\EchoServer\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\EchoServer\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\EchoServer\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\EchoServer\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\EchoServer\$(Platform)\$(Configuration)\ false diff --git a/Net/samples/EchoServer/EchoServer_WEC2013_vs110.vcxproj.filters b/Net/samples/EchoServer/EchoServer_WEC2013_vs110.vcxproj.filters index 3172f21f2..e36010bd6 100644 --- a/Net/samples/EchoServer/EchoServer_WEC2013_vs110.vcxproj.filters +++ b/Net/samples/EchoServer/EchoServer_WEC2013_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {db08b3fc-e20c-4c75-ae86-54a52592bdad} + {d201f209-3ba5-44c2-a47a-2e0b36f7e1cd} - {326895b3-19cf-4d7c-bfce-5ec89595551c} + {34ded536-102e-4a49-9e05-fb33c2924ff2} diff --git a/Net/samples/EchoServer/EchoServer_WEC2013_vs120.vcxproj b/Net/samples/EchoServer/EchoServer_WEC2013_vs120.vcxproj index 58740bce0..c5fe4a601 100644 --- a/Net/samples/EchoServer/EchoServer_WEC2013_vs120.vcxproj +++ b/Net/samples/EchoServer/EchoServer_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\EchoServer\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\EchoServer\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\EchoServer\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\EchoServer\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\EchoServer\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\EchoServer\$(Platform)\$(Configuration)\ false diff --git a/Net/samples/EchoServer/EchoServer_WEC2013_vs120.vcxproj.filters b/Net/samples/EchoServer/EchoServer_WEC2013_vs120.vcxproj.filters index 9cf526c55..fd5b14e50 100644 --- a/Net/samples/EchoServer/EchoServer_WEC2013_vs120.vcxproj.filters +++ b/Net/samples/EchoServer/EchoServer_WEC2013_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {4f1f84ab-1a2e-4d90-926a-cfd74c158be8} + {3788cd32-0012-4590-a618-dd4017b4aae3} - {21d440e6-f4f9-40f2-8e4e-ba64c28503c4} + {ad39981b-d9dc-4771-88a4-0bf9d96fdfa3} diff --git a/Net/samples/EchoServer/EchoServer_vs100.vcxproj b/Net/samples/EchoServer/EchoServer_vs100.vcxproj index b76367539..0a9fe777a 100644 --- a/Net/samples/EchoServer/EchoServer_vs100.vcxproj +++ b/Net/samples/EchoServer/EchoServer_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\EchoServer\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\EchoServer\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\EchoServer\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\EchoServer\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\EchoServer\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\EchoServer\$(Configuration)\ false EchoServerd EchoServerd @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\EchoServerd.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\EchoServerd.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\EchoServerd.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Net/samples/EchoServer/EchoServer_vs100.vcxproj.filters b/Net/samples/EchoServer/EchoServer_vs100.vcxproj.filters index 0e1c27d3c..07b03c92b 100644 --- a/Net/samples/EchoServer/EchoServer_vs100.vcxproj.filters +++ b/Net/samples/EchoServer/EchoServer_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {df327556-587b-4265-827d-8be2f869b4af} + {31d42bea-67fa-4afd-be20-5ff0a8e2ed86} - {82daa0ae-c6d1-4aa7-a4df-c096f7b0ff49} + {850657a4-ee9c-4fb0-8871-5c791dc6a83d} diff --git a/Net/samples/EchoServer/EchoServer_vs110.vcxproj b/Net/samples/EchoServer/EchoServer_vs110.vcxproj index b78f2fbe9..ca2a0dbe4 100644 --- a/Net/samples/EchoServer/EchoServer_vs110.vcxproj +++ b/Net/samples/EchoServer/EchoServer_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\EchoServer\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\EchoServer\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\EchoServer\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\EchoServer\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\EchoServer\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\EchoServer\$(Configuration)\ false diff --git a/Net/samples/EchoServer/EchoServer_vs110.vcxproj.filters b/Net/samples/EchoServer/EchoServer_vs110.vcxproj.filters index 2079b9014..f573affb1 100644 --- a/Net/samples/EchoServer/EchoServer_vs110.vcxproj.filters +++ b/Net/samples/EchoServer/EchoServer_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {1d96c4ec-c1fd-4d3c-adee-6ae1890d21e4} + {6d0e5189-86a8-4fd3-9dc7-0de65bfda424} - {ef6c4345-dd4a-482b-8860-2b16dd854b60} + {281964e7-6470-4edb-8a85-317d5d93f4a6} diff --git a/Net/samples/EchoServer/EchoServer_vs120.vcxproj b/Net/samples/EchoServer/EchoServer_vs120.vcxproj index f56f80119..a062c5ac8 100644 --- a/Net/samples/EchoServer/EchoServer_vs120.vcxproj +++ b/Net/samples/EchoServer/EchoServer_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\EchoServer\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\EchoServer\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\EchoServer\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\EchoServer\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\EchoServer\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\EchoServer\$(Configuration)\ false diff --git a/Net/samples/EchoServer/EchoServer_vs120.vcxproj.filters b/Net/samples/EchoServer/EchoServer_vs120.vcxproj.filters index eabf78a1d..53c0d6db6 100644 --- a/Net/samples/EchoServer/EchoServer_vs120.vcxproj.filters +++ b/Net/samples/EchoServer/EchoServer_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {106db82a-fc83-4c2a-a976-1de996ccf659} + {8254cecd-b00c-4f57-8165-e168a045523b} - {e0a45a6d-92c5-4c72-a591-8c9a3479ad8f} + {e44262e0-a342-471f-99bd-3ad98c86792a} diff --git a/Net/samples/EchoServer/EchoServer_vs71.vcproj b/Net/samples/EchoServer/EchoServer_vs71.vcproj index 6e1588ed1..ec1bbbaf6 100644 --- a/Net/samples/EchoServer/EchoServer_vs71.vcproj +++ b/Net/samples/EchoServer/EchoServer_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\EchoServer\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\EchoServer\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\EchoServer\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\EchoServer\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\EchoServer\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\EchoServer\$(Configuration)\ false EchoServerd EchoServerd @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\EchoServerd.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\EchoServerd.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\EchoServerd.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Net/samples/EchoServer/EchoServer_x64_vs100.vcxproj.filters b/Net/samples/EchoServer/EchoServer_x64_vs100.vcxproj.filters index 9fce060d9..03e322429 100644 --- a/Net/samples/EchoServer/EchoServer_x64_vs100.vcxproj.filters +++ b/Net/samples/EchoServer/EchoServer_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {7b819d00-56d5-46b6-aaf1-1e9a623cf8e0} + {64181125-2f3c-4a4c-8912-c5a35ff1145f} - {19dd9832-e211-4d4f-a72b-5b5883cb4379} + {a02628e4-f65a-4e8a-aac4-ec89256330b7} diff --git a/Net/samples/EchoServer/EchoServer_x64_vs110.vcxproj b/Net/samples/EchoServer/EchoServer_x64_vs110.vcxproj index 3a10c9007..7bd3ca765 100644 --- a/Net/samples/EchoServer/EchoServer_x64_vs110.vcxproj +++ b/Net/samples/EchoServer/EchoServer_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\EchoServer\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\EchoServer\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\EchoServer\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\EchoServer\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\EchoServer\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\EchoServer\$(Configuration)\ false diff --git a/Net/samples/EchoServer/EchoServer_x64_vs110.vcxproj.filters b/Net/samples/EchoServer/EchoServer_x64_vs110.vcxproj.filters index 0d9ca5f5c..6cae7573d 100644 --- a/Net/samples/EchoServer/EchoServer_x64_vs110.vcxproj.filters +++ b/Net/samples/EchoServer/EchoServer_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {6ea28075-9f38-4b15-8a0b-6731c7020023} + {fadb8fcb-4109-4be4-9c84-0b0811805a07} - {44b413a3-d19c-4a21-a1d8-9aa2b135384f} + {9e330d2e-ca75-4162-9e8e-fe2a13ead3fe} diff --git a/Net/samples/EchoServer/EchoServer_x64_vs120.vcxproj b/Net/samples/EchoServer/EchoServer_x64_vs120.vcxproj index 6aaca946e..d5a438138 100644 --- a/Net/samples/EchoServer/EchoServer_x64_vs120.vcxproj +++ b/Net/samples/EchoServer/EchoServer_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\EchoServer\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\EchoServer\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\EchoServer\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\EchoServer\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\EchoServer\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\EchoServer\$(Configuration)\ false diff --git a/Net/samples/EchoServer/EchoServer_x64_vs120.vcxproj.filters b/Net/samples/EchoServer/EchoServer_x64_vs120.vcxproj.filters index e9a81c2d1..a459117cf 100644 --- a/Net/samples/EchoServer/EchoServer_x64_vs120.vcxproj.filters +++ b/Net/samples/EchoServer/EchoServer_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {21f9037d-f1fb-49a9-a5fd-d7e011ef82ec} + {925c5da4-923b-4bcf-92b6-e65c1d3a2f18} - {6c88367b-a94b-4e5e-911a-cd87e06188ca} + {7d558b41-c189-48ea-b46e-620fefbcb37e} diff --git a/Net/samples/EchoServer/EchoServer_x64_vs90.vcproj b/Net/samples/EchoServer/EchoServer_x64_vs90.vcproj index ae4dd88a0..3c3a43971 100644 --- a/Net/samples/EchoServer/EchoServer_x64_vs90.vcproj +++ b/Net/samples/EchoServer/EchoServer_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\HTTPFormServer\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\HTTPFormServer\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\HTTPFormServer\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\HTTPFormServer\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\HTTPFormServer\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\HTTPFormServer\$(Platform)\$(Configuration)\ false diff --git a/Net/samples/HTTPFormServer/HTTPFormServer_WEC2013_vs110.vcxproj.filters b/Net/samples/HTTPFormServer/HTTPFormServer_WEC2013_vs110.vcxproj.filters index 9e35efbda..b95007259 100644 --- a/Net/samples/HTTPFormServer/HTTPFormServer_WEC2013_vs110.vcxproj.filters +++ b/Net/samples/HTTPFormServer/HTTPFormServer_WEC2013_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {a60e575f-f2e6-4d85-8c2f-2010f721df38} + {26886d96-ca9a-4faa-b6bf-a2515f174cdf} - {25bbd696-6c36-4576-8bb9-34889aaed53a} + {8f57d90a-7514-46a9-9d33-890c20daab51} diff --git a/Net/samples/HTTPFormServer/HTTPFormServer_WEC2013_vs120.vcxproj b/Net/samples/HTTPFormServer/HTTPFormServer_WEC2013_vs120.vcxproj index 0539f57c7..6ae1e872e 100644 --- a/Net/samples/HTTPFormServer/HTTPFormServer_WEC2013_vs120.vcxproj +++ b/Net/samples/HTTPFormServer/HTTPFormServer_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\HTTPFormServer\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\HTTPFormServer\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\HTTPFormServer\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\HTTPFormServer\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\HTTPFormServer\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\HTTPFormServer\$(Platform)\$(Configuration)\ false diff --git a/Net/samples/HTTPFormServer/HTTPFormServer_WEC2013_vs120.vcxproj.filters b/Net/samples/HTTPFormServer/HTTPFormServer_WEC2013_vs120.vcxproj.filters index 7cc258e30..fd241b1d6 100644 --- a/Net/samples/HTTPFormServer/HTTPFormServer_WEC2013_vs120.vcxproj.filters +++ b/Net/samples/HTTPFormServer/HTTPFormServer_WEC2013_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {6f651c07-4a0e-4181-806b-4757ef898de9} + {95b08cf2-6fd9-4ba5-8ae1-28ad1f2ab000} - {eac725ed-4b90-4eb6-9e73-05bfa5f52482} + {427157f8-52cc-46de-8680-3dddb5d0e647} diff --git a/Net/samples/HTTPFormServer/HTTPFormServer_vs100.vcxproj b/Net/samples/HTTPFormServer/HTTPFormServer_vs100.vcxproj index 68911d78f..9d2bdb6a3 100644 --- a/Net/samples/HTTPFormServer/HTTPFormServer_vs100.vcxproj +++ b/Net/samples/HTTPFormServer/HTTPFormServer_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\HTTPFormServer\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\HTTPFormServer\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\HTTPFormServer\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\HTTPFormServer\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\HTTPFormServer\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\HTTPFormServer\$(Configuration)\ false HTTPFormServerd HTTPFormServerd @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\HTTPFormServerd.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\HTTPFormServerd.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\HTTPFormServerd.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Net/samples/HTTPFormServer/HTTPFormServer_vs100.vcxproj.filters b/Net/samples/HTTPFormServer/HTTPFormServer_vs100.vcxproj.filters index dc2dc53b5..84b3af87e 100644 --- a/Net/samples/HTTPFormServer/HTTPFormServer_vs100.vcxproj.filters +++ b/Net/samples/HTTPFormServer/HTTPFormServer_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {430dad15-3155-4145-ae6c-26b6b15dbe20} + {6792c677-eb11-49b7-b7f0-8a29a4e913df} - {cf11a0c3-f77e-4f20-ad43-af003ea836dd} + {516f668f-d166-4646-b300-5f53467df37b} diff --git a/Net/samples/HTTPFormServer/HTTPFormServer_vs110.vcxproj b/Net/samples/HTTPFormServer/HTTPFormServer_vs110.vcxproj index 190d857cc..cfd6eaf8a 100644 --- a/Net/samples/HTTPFormServer/HTTPFormServer_vs110.vcxproj +++ b/Net/samples/HTTPFormServer/HTTPFormServer_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\HTTPFormServer\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\HTTPFormServer\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\HTTPFormServer\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\HTTPFormServer\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\HTTPFormServer\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\HTTPFormServer\$(Configuration)\ false diff --git a/Net/samples/HTTPFormServer/HTTPFormServer_vs110.vcxproj.filters b/Net/samples/HTTPFormServer/HTTPFormServer_vs110.vcxproj.filters index 757b153e5..7f148e015 100644 --- a/Net/samples/HTTPFormServer/HTTPFormServer_vs110.vcxproj.filters +++ b/Net/samples/HTTPFormServer/HTTPFormServer_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {5174bc5e-39d0-48b3-857b-9f2f1011b1bb} + {45010d93-929a-49eb-966a-6327c0a26590} - {179781f8-1185-408c-9467-29468d663069} + {73903d72-9d9f-4740-bfba-87ee1e7f5808} diff --git a/Net/samples/HTTPFormServer/HTTPFormServer_vs120.vcxproj b/Net/samples/HTTPFormServer/HTTPFormServer_vs120.vcxproj index 9a93073b6..a11396646 100644 --- a/Net/samples/HTTPFormServer/HTTPFormServer_vs120.vcxproj +++ b/Net/samples/HTTPFormServer/HTTPFormServer_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\HTTPFormServer\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\HTTPFormServer\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\HTTPFormServer\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\HTTPFormServer\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\HTTPFormServer\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\HTTPFormServer\$(Configuration)\ false diff --git a/Net/samples/HTTPFormServer/HTTPFormServer_vs120.vcxproj.filters b/Net/samples/HTTPFormServer/HTTPFormServer_vs120.vcxproj.filters index da65d4c79..f35c065ef 100644 --- a/Net/samples/HTTPFormServer/HTTPFormServer_vs120.vcxproj.filters +++ b/Net/samples/HTTPFormServer/HTTPFormServer_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {ec9a9ac0-9827-44f6-bd58-57eaad6f01f9} + {c6ff42da-9417-412b-b90f-8112c3438dbe} - {1bcb024d-561a-4172-84bc-42574bc3f8fb} + {bc4611ee-6da5-45c2-a0cf-f33c9104be3f} diff --git a/Net/samples/HTTPFormServer/HTTPFormServer_vs71.vcproj b/Net/samples/HTTPFormServer/HTTPFormServer_vs71.vcproj index 0e3730e65..ad3cf6798 100644 --- a/Net/samples/HTTPFormServer/HTTPFormServer_vs71.vcproj +++ b/Net/samples/HTTPFormServer/HTTPFormServer_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\HTTPFormServer\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\HTTPFormServer\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\HTTPFormServer\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\HTTPFormServer\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\HTTPFormServer\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\HTTPFormServer\$(Configuration)\ false HTTPFormServerd HTTPFormServerd @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\HTTPFormServerd.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\HTTPFormServerd.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\HTTPFormServerd.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Net/samples/HTTPFormServer/HTTPFormServer_x64_vs100.vcxproj.filters b/Net/samples/HTTPFormServer/HTTPFormServer_x64_vs100.vcxproj.filters index 8abc744b2..3bd4fa15e 100644 --- a/Net/samples/HTTPFormServer/HTTPFormServer_x64_vs100.vcxproj.filters +++ b/Net/samples/HTTPFormServer/HTTPFormServer_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {21fc7af6-438c-4400-ba82-2c4b2b6707df} + {fc3bd176-6079-4605-9605-e4461eb9ce1b} - {3d65a4d7-3465-48b5-82c1-75f15a0bbbbb} + {89d9fb2e-9065-454b-b12f-dca66e927ec6} diff --git a/Net/samples/HTTPFormServer/HTTPFormServer_x64_vs110.vcxproj b/Net/samples/HTTPFormServer/HTTPFormServer_x64_vs110.vcxproj index 7b8c11a6c..9e0cbdf1b 100644 --- a/Net/samples/HTTPFormServer/HTTPFormServer_x64_vs110.vcxproj +++ b/Net/samples/HTTPFormServer/HTTPFormServer_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\HTTPFormServer\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\HTTPFormServer\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\HTTPFormServer\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\HTTPFormServer\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\HTTPFormServer\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\HTTPFormServer\$(Configuration)\ false diff --git a/Net/samples/HTTPFormServer/HTTPFormServer_x64_vs110.vcxproj.filters b/Net/samples/HTTPFormServer/HTTPFormServer_x64_vs110.vcxproj.filters index 72a38b274..36fc7d7a4 100644 --- a/Net/samples/HTTPFormServer/HTTPFormServer_x64_vs110.vcxproj.filters +++ b/Net/samples/HTTPFormServer/HTTPFormServer_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {c4d9f92c-7d08-41e0-9756-2be424cbb5c3} + {e66a30b6-0c06-4411-a0bb-8d31eac6b3b7} - {7386a300-5e18-4daa-bb7e-d76a1f814fa6} + {c1e5ecaa-a035-4a68-aca0-2d3923b14032} diff --git a/Net/samples/HTTPFormServer/HTTPFormServer_x64_vs120.vcxproj b/Net/samples/HTTPFormServer/HTTPFormServer_x64_vs120.vcxproj index 7e76be2e0..f9d898902 100644 --- a/Net/samples/HTTPFormServer/HTTPFormServer_x64_vs120.vcxproj +++ b/Net/samples/HTTPFormServer/HTTPFormServer_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\HTTPFormServer\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\HTTPFormServer\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\HTTPFormServer\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\HTTPFormServer\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\HTTPFormServer\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\HTTPFormServer\$(Configuration)\ false diff --git a/Net/samples/HTTPFormServer/HTTPFormServer_x64_vs120.vcxproj.filters b/Net/samples/HTTPFormServer/HTTPFormServer_x64_vs120.vcxproj.filters index 015d266b1..e3491d2b4 100644 --- a/Net/samples/HTTPFormServer/HTTPFormServer_x64_vs120.vcxproj.filters +++ b/Net/samples/HTTPFormServer/HTTPFormServer_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {b3876dbb-b398-489c-8231-896743317614} + {9347723f-a410-478c-b437-cb2c1075a438} - {18caacd7-3638-476d-8a53-5f56c7d2034b} + {1e0b24f5-a084-4383-9ee0-a16d01248d05} diff --git a/Net/samples/HTTPFormServer/HTTPFormServer_x64_vs90.vcproj b/Net/samples/HTTPFormServer/HTTPFormServer_x64_vs90.vcproj index d47097b2d..c5409d241 100644 --- a/Net/samples/HTTPFormServer/HTTPFormServer_x64_vs90.vcproj +++ b/Net/samples/HTTPFormServer/HTTPFormServer_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\HTTPLoadTest\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\HTTPLoadTest\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\HTTPLoadTest\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\HTTPLoadTest\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\HTTPLoadTest\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\HTTPLoadTest\$(Platform)\$(Configuration)\ false diff --git a/Net/samples/HTTPLoadTest/HTTPLoadTest_WEC2013_vs110.vcxproj.filters b/Net/samples/HTTPLoadTest/HTTPLoadTest_WEC2013_vs110.vcxproj.filters index 7138d64f6..c70151a14 100644 --- a/Net/samples/HTTPLoadTest/HTTPLoadTest_WEC2013_vs110.vcxproj.filters +++ b/Net/samples/HTTPLoadTest/HTTPLoadTest_WEC2013_vs110.vcxproj.filters @@ -2,7 +2,7 @@ - {98cf3f05-1feb-4fd3-bcdd-db577ef08027} + {dedd9a7e-1db8-4329-b34a-49a9ee63aa6d} diff --git a/Net/samples/HTTPLoadTest/HTTPLoadTest_WEC2013_vs120.vcxproj b/Net/samples/HTTPLoadTest/HTTPLoadTest_WEC2013_vs120.vcxproj index 6f74efa24..d8e6d96f9 100644 --- a/Net/samples/HTTPLoadTest/HTTPLoadTest_WEC2013_vs120.vcxproj +++ b/Net/samples/HTTPLoadTest/HTTPLoadTest_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\HTTPLoadTest\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\HTTPLoadTest\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\HTTPLoadTest\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\HTTPLoadTest\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\HTTPLoadTest\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\HTTPLoadTest\$(Platform)\$(Configuration)\ false diff --git a/Net/samples/HTTPLoadTest/HTTPLoadTest_WEC2013_vs120.vcxproj.filters b/Net/samples/HTTPLoadTest/HTTPLoadTest_WEC2013_vs120.vcxproj.filters index bf1be4442..58cca2a35 100644 --- a/Net/samples/HTTPLoadTest/HTTPLoadTest_WEC2013_vs120.vcxproj.filters +++ b/Net/samples/HTTPLoadTest/HTTPLoadTest_WEC2013_vs120.vcxproj.filters @@ -2,7 +2,7 @@ - {d7ad5dce-d385-4cae-8b9d-3a9c925365ce} + {bb26f6a6-ba3d-41a4-8efa-db220c26e53c} diff --git a/Net/samples/HTTPLoadTest/HTTPLoadTest_vs100.vcxproj b/Net/samples/HTTPLoadTest/HTTPLoadTest_vs100.vcxproj index 79a4b4311..08e164985 100644 --- a/Net/samples/HTTPLoadTest/HTTPLoadTest_vs100.vcxproj +++ b/Net/samples/HTTPLoadTest/HTTPLoadTest_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\HTTPLoadTest\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\HTTPLoadTest\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\HTTPLoadTest\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\HTTPLoadTest\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\HTTPLoadTest\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\HTTPLoadTest\$(Configuration)\ false HTTPLoadTestd HTTPLoadTestd @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\HTTPLoadTestd.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\HTTPLoadTestd.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\HTTPLoadTestd.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Net/samples/HTTPLoadTest/HTTPLoadTest_vs100.vcxproj.filters b/Net/samples/HTTPLoadTest/HTTPLoadTest_vs100.vcxproj.filters index 61a30fcb5..bce08f8b3 100644 --- a/Net/samples/HTTPLoadTest/HTTPLoadTest_vs100.vcxproj.filters +++ b/Net/samples/HTTPLoadTest/HTTPLoadTest_vs100.vcxproj.filters @@ -2,7 +2,7 @@ - {71520969-bc29-4179-832e-838667d8ae6c} + {99af6a7b-c925-4180-be23-9f9826159f0e} diff --git a/Net/samples/HTTPLoadTest/HTTPLoadTest_vs110.vcxproj b/Net/samples/HTTPLoadTest/HTTPLoadTest_vs110.vcxproj index a6cb61d23..7b9d00f10 100644 --- a/Net/samples/HTTPLoadTest/HTTPLoadTest_vs110.vcxproj +++ b/Net/samples/HTTPLoadTest/HTTPLoadTest_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\HTTPLoadTest\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\HTTPLoadTest\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\HTTPLoadTest\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\HTTPLoadTest\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\HTTPLoadTest\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\HTTPLoadTest\$(Configuration)\ false diff --git a/Net/samples/HTTPLoadTest/HTTPLoadTest_vs110.vcxproj.filters b/Net/samples/HTTPLoadTest/HTTPLoadTest_vs110.vcxproj.filters index deeb341b2..b6fd9da94 100644 --- a/Net/samples/HTTPLoadTest/HTTPLoadTest_vs110.vcxproj.filters +++ b/Net/samples/HTTPLoadTest/HTTPLoadTest_vs110.vcxproj.filters @@ -2,7 +2,7 @@ - {308a0f00-c74f-4954-9313-bafbe9304828} + {c07f2727-023e-449f-b2b1-13af1958d54b} diff --git a/Net/samples/HTTPLoadTest/HTTPLoadTest_vs120.vcxproj b/Net/samples/HTTPLoadTest/HTTPLoadTest_vs120.vcxproj index d95f3bc09..2b7f0d2b2 100644 --- a/Net/samples/HTTPLoadTest/HTTPLoadTest_vs120.vcxproj +++ b/Net/samples/HTTPLoadTest/HTTPLoadTest_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\HTTPLoadTest\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\HTTPLoadTest\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\HTTPLoadTest\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\HTTPLoadTest\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\HTTPLoadTest\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\HTTPLoadTest\$(Configuration)\ false diff --git a/Net/samples/HTTPLoadTest/HTTPLoadTest_vs120.vcxproj.filters b/Net/samples/HTTPLoadTest/HTTPLoadTest_vs120.vcxproj.filters index 52ffc3e10..588a36835 100644 --- a/Net/samples/HTTPLoadTest/HTTPLoadTest_vs120.vcxproj.filters +++ b/Net/samples/HTTPLoadTest/HTTPLoadTest_vs120.vcxproj.filters @@ -2,7 +2,7 @@ - {f19d832c-9375-48fa-9155-ecccc0151c0e} + {f2e52933-74e8-43b1-8f33-fbf3c43e4372} diff --git a/Net/samples/HTTPLoadTest/HTTPLoadTest_vs71.vcproj b/Net/samples/HTTPLoadTest/HTTPLoadTest_vs71.vcproj index fb8aef40a..4cfda5212 100644 --- a/Net/samples/HTTPLoadTest/HTTPLoadTest_vs71.vcproj +++ b/Net/samples/HTTPLoadTest/HTTPLoadTest_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\HTTPLoadTest\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\HTTPLoadTest\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\HTTPLoadTest\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\HTTPLoadTest\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\HTTPLoadTest\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\HTTPLoadTest\$(Configuration)\ false HTTPLoadTestd HTTPLoadTestd @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\HTTPLoadTestd.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\HTTPLoadTestd.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\HTTPLoadTestd.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Net/samples/HTTPLoadTest/HTTPLoadTest_x64_vs100.vcxproj.filters b/Net/samples/HTTPLoadTest/HTTPLoadTest_x64_vs100.vcxproj.filters index 49440935c..d8b47eef1 100644 --- a/Net/samples/HTTPLoadTest/HTTPLoadTest_x64_vs100.vcxproj.filters +++ b/Net/samples/HTTPLoadTest/HTTPLoadTest_x64_vs100.vcxproj.filters @@ -2,7 +2,7 @@ - {8f6482fa-b5e0-4808-80c4-40e9fb709141} + {389b1773-be7d-4a2d-a67b-527122a81c89} diff --git a/Net/samples/HTTPLoadTest/HTTPLoadTest_x64_vs110.vcxproj b/Net/samples/HTTPLoadTest/HTTPLoadTest_x64_vs110.vcxproj index 04aaef9c0..28743e740 100644 --- a/Net/samples/HTTPLoadTest/HTTPLoadTest_x64_vs110.vcxproj +++ b/Net/samples/HTTPLoadTest/HTTPLoadTest_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\HTTPLoadTest\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\HTTPLoadTest\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\HTTPLoadTest\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\HTTPLoadTest\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\HTTPLoadTest\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\HTTPLoadTest\$(Configuration)\ false diff --git a/Net/samples/HTTPLoadTest/HTTPLoadTest_x64_vs110.vcxproj.filters b/Net/samples/HTTPLoadTest/HTTPLoadTest_x64_vs110.vcxproj.filters index bae6d626f..dd1117a5c 100644 --- a/Net/samples/HTTPLoadTest/HTTPLoadTest_x64_vs110.vcxproj.filters +++ b/Net/samples/HTTPLoadTest/HTTPLoadTest_x64_vs110.vcxproj.filters @@ -2,7 +2,7 @@ - {3a85b18d-17ec-458f-a357-74867204870e} + {37f064c4-2ef5-43d2-a264-7ae5866b1b35} diff --git a/Net/samples/HTTPLoadTest/HTTPLoadTest_x64_vs120.vcxproj b/Net/samples/HTTPLoadTest/HTTPLoadTest_x64_vs120.vcxproj index 54bba75c1..be71bae28 100644 --- a/Net/samples/HTTPLoadTest/HTTPLoadTest_x64_vs120.vcxproj +++ b/Net/samples/HTTPLoadTest/HTTPLoadTest_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\HTTPLoadTest\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\HTTPLoadTest\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\HTTPLoadTest\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\HTTPLoadTest\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\HTTPLoadTest\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\HTTPLoadTest\$(Configuration)\ false diff --git a/Net/samples/HTTPLoadTest/HTTPLoadTest_x64_vs120.vcxproj.filters b/Net/samples/HTTPLoadTest/HTTPLoadTest_x64_vs120.vcxproj.filters index c5e6b151e..eb4b78469 100644 --- a/Net/samples/HTTPLoadTest/HTTPLoadTest_x64_vs120.vcxproj.filters +++ b/Net/samples/HTTPLoadTest/HTTPLoadTest_x64_vs120.vcxproj.filters @@ -2,7 +2,7 @@ - {1322680d-4d2c-4dbc-be22-521881938e62} + {a6c2ad73-cb1f-453f-8eb3-56aa02f8900c} diff --git a/Net/samples/HTTPLoadTest/HTTPLoadTest_x64_vs90.vcproj b/Net/samples/HTTPLoadTest/HTTPLoadTest_x64_vs90.vcproj index f2b264715..985267f90 100644 --- a/Net/samples/HTTPLoadTest/HTTPLoadTest_x64_vs90.vcproj +++ b/Net/samples/HTTPLoadTest/HTTPLoadTest_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\HTTPTimeServer\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\HTTPTimeServer\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\HTTPTimeServer\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\HTTPTimeServer\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\HTTPTimeServer\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\HTTPTimeServer\$(Platform)\$(Configuration)\ false diff --git a/Net/samples/HTTPTimeServer/HTTPTimeServer_WEC2013_vs110.vcxproj.filters b/Net/samples/HTTPTimeServer/HTTPTimeServer_WEC2013_vs110.vcxproj.filters index 050f1e7d2..8d4f222dc 100644 --- a/Net/samples/HTTPTimeServer/HTTPTimeServer_WEC2013_vs110.vcxproj.filters +++ b/Net/samples/HTTPTimeServer/HTTPTimeServer_WEC2013_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {5901f061-086d-47f4-967d-8f52ac072c08} + {9bd27cf5-c957-4e1e-a5d8-d52fbe405328} - {53ab72cc-1ced-483a-b0b8-51978945527c} + {f136a61b-aeab-4d1e-93c3-5d45aa2044e0} diff --git a/Net/samples/HTTPTimeServer/HTTPTimeServer_WEC2013_vs120.vcxproj b/Net/samples/HTTPTimeServer/HTTPTimeServer_WEC2013_vs120.vcxproj index 3f447627d..f064750b9 100644 --- a/Net/samples/HTTPTimeServer/HTTPTimeServer_WEC2013_vs120.vcxproj +++ b/Net/samples/HTTPTimeServer/HTTPTimeServer_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\HTTPTimeServer\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\HTTPTimeServer\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\HTTPTimeServer\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\HTTPTimeServer\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\HTTPTimeServer\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\HTTPTimeServer\$(Platform)\$(Configuration)\ false diff --git a/Net/samples/HTTPTimeServer/HTTPTimeServer_WEC2013_vs120.vcxproj.filters b/Net/samples/HTTPTimeServer/HTTPTimeServer_WEC2013_vs120.vcxproj.filters index 0b7296c16..3bddd76ee 100644 --- a/Net/samples/HTTPTimeServer/HTTPTimeServer_WEC2013_vs120.vcxproj.filters +++ b/Net/samples/HTTPTimeServer/HTTPTimeServer_WEC2013_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {4ddec3bf-1b26-47ec-ab1f-5b3b2ed5f4b8} + {3f8f35af-4729-499e-94a9-389612674462} - {9c373164-ba6e-4f45-ae4c-f3140e5be890} + {41239007-7244-4773-86b9-bdebe64e2dcf} diff --git a/Net/samples/HTTPTimeServer/HTTPTimeServer_vs100.vcxproj b/Net/samples/HTTPTimeServer/HTTPTimeServer_vs100.vcxproj index 526743941..c648d2cd6 100644 --- a/Net/samples/HTTPTimeServer/HTTPTimeServer_vs100.vcxproj +++ b/Net/samples/HTTPTimeServer/HTTPTimeServer_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\HTTPTimeServer\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\HTTPTimeServer\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\HTTPTimeServer\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\HTTPTimeServer\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\HTTPTimeServer\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\HTTPTimeServer\$(Configuration)\ false HTTPTimeServerd HTTPTimeServerd @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\HTTPTimeServerd.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\HTTPTimeServerd.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\HTTPTimeServerd.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Net/samples/HTTPTimeServer/HTTPTimeServer_vs100.vcxproj.filters b/Net/samples/HTTPTimeServer/HTTPTimeServer_vs100.vcxproj.filters index dc1850b99..fe138f27d 100644 --- a/Net/samples/HTTPTimeServer/HTTPTimeServer_vs100.vcxproj.filters +++ b/Net/samples/HTTPTimeServer/HTTPTimeServer_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {efe2662e-c4b6-411a-aa17-4023865b035e} + {28367a8a-c9b2-49bc-9518-ae3fd5f8857c} - {70ca819c-c79b-426f-87ef-4b4f1cb09e21} + {51c663a0-3dbc-47ba-a9e9-cbd7262f3c93} diff --git a/Net/samples/HTTPTimeServer/HTTPTimeServer_vs110.vcxproj b/Net/samples/HTTPTimeServer/HTTPTimeServer_vs110.vcxproj index 9a3334087..0b521ecaa 100644 --- a/Net/samples/HTTPTimeServer/HTTPTimeServer_vs110.vcxproj +++ b/Net/samples/HTTPTimeServer/HTTPTimeServer_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\HTTPTimeServer\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\HTTPTimeServer\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\HTTPTimeServer\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\HTTPTimeServer\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\HTTPTimeServer\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\HTTPTimeServer\$(Configuration)\ false diff --git a/Net/samples/HTTPTimeServer/HTTPTimeServer_vs110.vcxproj.filters b/Net/samples/HTTPTimeServer/HTTPTimeServer_vs110.vcxproj.filters index 497ab41a5..9655775b7 100644 --- a/Net/samples/HTTPTimeServer/HTTPTimeServer_vs110.vcxproj.filters +++ b/Net/samples/HTTPTimeServer/HTTPTimeServer_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {6b166c91-f58a-482e-af26-c58069306cf2} + {3ceee1ce-b028-465c-820b-e552744c8eab} - {6e74d547-3de4-4717-8b73-a2fa02e537fb} + {f6f88ae8-5963-49a5-9d6a-5f14a3731200} diff --git a/Net/samples/HTTPTimeServer/HTTPTimeServer_vs120.vcxproj b/Net/samples/HTTPTimeServer/HTTPTimeServer_vs120.vcxproj index f6a7e48c8..6dc5a4728 100644 --- a/Net/samples/HTTPTimeServer/HTTPTimeServer_vs120.vcxproj +++ b/Net/samples/HTTPTimeServer/HTTPTimeServer_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\HTTPTimeServer\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\HTTPTimeServer\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\HTTPTimeServer\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\HTTPTimeServer\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\HTTPTimeServer\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\HTTPTimeServer\$(Configuration)\ false diff --git a/Net/samples/HTTPTimeServer/HTTPTimeServer_vs120.vcxproj.filters b/Net/samples/HTTPTimeServer/HTTPTimeServer_vs120.vcxproj.filters index 7ba7a0504..a9c1b88de 100644 --- a/Net/samples/HTTPTimeServer/HTTPTimeServer_vs120.vcxproj.filters +++ b/Net/samples/HTTPTimeServer/HTTPTimeServer_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {35397c61-998b-40a1-9bbf-7f49f13b6ad3} + {12c2b95e-96ba-43fd-b158-d730d2557829} - {781559aa-0292-401d-893f-42d97723d114} + {bb7591b2-38e5-45ea-a726-cdc41e79934c} diff --git a/Net/samples/HTTPTimeServer/HTTPTimeServer_vs71.vcproj b/Net/samples/HTTPTimeServer/HTTPTimeServer_vs71.vcproj index 0371ccc21..8ef6ddb3f 100644 --- a/Net/samples/HTTPTimeServer/HTTPTimeServer_vs71.vcproj +++ b/Net/samples/HTTPTimeServer/HTTPTimeServer_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\HTTPTimeServer\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\HTTPTimeServer\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\HTTPTimeServer\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\HTTPTimeServer\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\HTTPTimeServer\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\HTTPTimeServer\$(Configuration)\ false HTTPTimeServerd HTTPTimeServerd @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\HTTPTimeServerd.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\HTTPTimeServerd.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\HTTPTimeServerd.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Net/samples/HTTPTimeServer/HTTPTimeServer_x64_vs100.vcxproj.filters b/Net/samples/HTTPTimeServer/HTTPTimeServer_x64_vs100.vcxproj.filters index e30d7e988..233263bf5 100644 --- a/Net/samples/HTTPTimeServer/HTTPTimeServer_x64_vs100.vcxproj.filters +++ b/Net/samples/HTTPTimeServer/HTTPTimeServer_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {7be3d4ee-ec30-485a-a7a9-5c6588de325c} + {b51512b9-0c7e-4734-8823-eb607eee1c73} - {9fa24df9-40ec-4a96-b363-a3a8b37e5125} + {edf31ce3-f63d-430a-bde7-2024edc81b8f} diff --git a/Net/samples/HTTPTimeServer/HTTPTimeServer_x64_vs110.vcxproj b/Net/samples/HTTPTimeServer/HTTPTimeServer_x64_vs110.vcxproj index 31cbdc253..7339ef122 100644 --- a/Net/samples/HTTPTimeServer/HTTPTimeServer_x64_vs110.vcxproj +++ b/Net/samples/HTTPTimeServer/HTTPTimeServer_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\HTTPTimeServer\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\HTTPTimeServer\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\HTTPTimeServer\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\HTTPTimeServer\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\HTTPTimeServer\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\HTTPTimeServer\$(Configuration)\ false diff --git a/Net/samples/HTTPTimeServer/HTTPTimeServer_x64_vs110.vcxproj.filters b/Net/samples/HTTPTimeServer/HTTPTimeServer_x64_vs110.vcxproj.filters index c4bac5b2d..b12796ceb 100644 --- a/Net/samples/HTTPTimeServer/HTTPTimeServer_x64_vs110.vcxproj.filters +++ b/Net/samples/HTTPTimeServer/HTTPTimeServer_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {15b05321-5d0d-4b61-8327-af421727aff4} + {25448f40-ea30-4c9d-9ee3-761a04c3c52a} - {85bc5b40-580f-4d67-875f-fd3967df71bd} + {db367175-fff5-46ba-a254-1a8545a87b70} diff --git a/Net/samples/HTTPTimeServer/HTTPTimeServer_x64_vs120.vcxproj b/Net/samples/HTTPTimeServer/HTTPTimeServer_x64_vs120.vcxproj index bec9670be..701ee65cf 100644 --- a/Net/samples/HTTPTimeServer/HTTPTimeServer_x64_vs120.vcxproj +++ b/Net/samples/HTTPTimeServer/HTTPTimeServer_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\HTTPTimeServer\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\HTTPTimeServer\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\HTTPTimeServer\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\HTTPTimeServer\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\HTTPTimeServer\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\HTTPTimeServer\$(Configuration)\ false diff --git a/Net/samples/HTTPTimeServer/HTTPTimeServer_x64_vs120.vcxproj.filters b/Net/samples/HTTPTimeServer/HTTPTimeServer_x64_vs120.vcxproj.filters index 92054b64d..a0150eccd 100644 --- a/Net/samples/HTTPTimeServer/HTTPTimeServer_x64_vs120.vcxproj.filters +++ b/Net/samples/HTTPTimeServer/HTTPTimeServer_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {f7bc5d1f-dab0-4a80-b14a-5957f1e82fa8} + {1b262af3-30cc-447e-a4ea-fde00a731f9c} - {daedcc82-8f12-4100-91d1-9b441852854e} + {e34c0aff-8040-49ef-987f-0780e4b6921c} diff --git a/Net/samples/HTTPTimeServer/HTTPTimeServer_x64_vs90.vcproj b/Net/samples/HTTPTimeServer/HTTPTimeServer_x64_vs90.vcproj index c5412bf36..1c04991f7 100644 --- a/Net/samples/HTTPTimeServer/HTTPTimeServer_x64_vs90.vcproj +++ b/Net/samples/HTTPTimeServer/HTTPTimeServer_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\Mail\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\Mail\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\Mail\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\Mail\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\Mail\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\Mail\$(Platform)\$(Configuration)\ false diff --git a/Net/samples/Mail/Mail_WEC2013_vs110.vcxproj.filters b/Net/samples/Mail/Mail_WEC2013_vs110.vcxproj.filters index 64f6d56a8..e18271faa 100644 --- a/Net/samples/Mail/Mail_WEC2013_vs110.vcxproj.filters +++ b/Net/samples/Mail/Mail_WEC2013_vs110.vcxproj.filters @@ -2,7 +2,7 @@ - {8ec2703c-d891-4c19-a166-550a96f6e93c} + {336f2c50-111f-4224-9893-ad54dd5cae66} diff --git a/Net/samples/Mail/Mail_WEC2013_vs120.vcxproj b/Net/samples/Mail/Mail_WEC2013_vs120.vcxproj index 51f0524e2..309c34930 100644 --- a/Net/samples/Mail/Mail_WEC2013_vs120.vcxproj +++ b/Net/samples/Mail/Mail_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\Mail\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\Mail\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\Mail\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\Mail\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\Mail\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\Mail\$(Platform)\$(Configuration)\ false diff --git a/Net/samples/Mail/Mail_WEC2013_vs120.vcxproj.filters b/Net/samples/Mail/Mail_WEC2013_vs120.vcxproj.filters index 3e3cf986b..253085fcd 100644 --- a/Net/samples/Mail/Mail_WEC2013_vs120.vcxproj.filters +++ b/Net/samples/Mail/Mail_WEC2013_vs120.vcxproj.filters @@ -2,7 +2,7 @@ - {3f9e6682-c873-4d75-9457-4cf5bf072d83} + {b87f8ce6-23cb-4222-92e5-fc97de2ca87a} diff --git a/Net/samples/Mail/Mail_vs100.vcxproj b/Net/samples/Mail/Mail_vs100.vcxproj index 4e11ac8c3..e89dda30b 100644 --- a/Net/samples/Mail/Mail_vs100.vcxproj +++ b/Net/samples/Mail/Mail_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\Mail\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\Mail\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\Mail\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\Mail\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\Mail\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\Mail\$(Configuration)\ false Maild Maild @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\Maild.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\Maild.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\Maild.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Net/samples/Mail/Mail_vs100.vcxproj.filters b/Net/samples/Mail/Mail_vs100.vcxproj.filters index 1d57a0dbf..655782823 100644 --- a/Net/samples/Mail/Mail_vs100.vcxproj.filters +++ b/Net/samples/Mail/Mail_vs100.vcxproj.filters @@ -2,7 +2,7 @@ - {3256d7f3-7466-4b26-adc1-a3dc8a00d11f} + {50747925-42cb-498e-bbe5-1fc15f49d445} diff --git a/Net/samples/Mail/Mail_vs110.vcxproj b/Net/samples/Mail/Mail_vs110.vcxproj index 31131aa62..9e21d273a 100644 --- a/Net/samples/Mail/Mail_vs110.vcxproj +++ b/Net/samples/Mail/Mail_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\Mail\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\Mail\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\Mail\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\Mail\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\Mail\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\Mail\$(Configuration)\ false diff --git a/Net/samples/Mail/Mail_vs110.vcxproj.filters b/Net/samples/Mail/Mail_vs110.vcxproj.filters index ec7bb81f8..f868244d8 100644 --- a/Net/samples/Mail/Mail_vs110.vcxproj.filters +++ b/Net/samples/Mail/Mail_vs110.vcxproj.filters @@ -2,7 +2,7 @@ - {e9bbd4f3-6354-4170-89d8-5eec59bb6464} + {79285396-9bf5-469b-b5a2-f4ae75005b4e} diff --git a/Net/samples/Mail/Mail_vs120.vcxproj b/Net/samples/Mail/Mail_vs120.vcxproj index 16b695b07..4e7af5d91 100644 --- a/Net/samples/Mail/Mail_vs120.vcxproj +++ b/Net/samples/Mail/Mail_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\Mail\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\Mail\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\Mail\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\Mail\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\Mail\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\Mail\$(Configuration)\ false diff --git a/Net/samples/Mail/Mail_vs120.vcxproj.filters b/Net/samples/Mail/Mail_vs120.vcxproj.filters index 5cbb81ae9..51aeda27a 100644 --- a/Net/samples/Mail/Mail_vs120.vcxproj.filters +++ b/Net/samples/Mail/Mail_vs120.vcxproj.filters @@ -2,7 +2,7 @@ - {58ffab70-8ee7-4f6e-beaf-bccb0e7c0ace} + {209721f4-6ce2-4de2-a69d-30fd52cb1287} diff --git a/Net/samples/Mail/Mail_vs71.vcproj b/Net/samples/Mail/Mail_vs71.vcproj index c128a0cba..a9db27848 100644 --- a/Net/samples/Mail/Mail_vs71.vcproj +++ b/Net/samples/Mail/Mail_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\Mail\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\Mail\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Mail\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Mail\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\Mail\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\Mail\$(Configuration)\ false Maild Maild @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\Maild.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\Maild.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\Maild.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Net/samples/Mail/Mail_x64_vs100.vcxproj.filters b/Net/samples/Mail/Mail_x64_vs100.vcxproj.filters index 8b1ad29ba..55eae6505 100644 --- a/Net/samples/Mail/Mail_x64_vs100.vcxproj.filters +++ b/Net/samples/Mail/Mail_x64_vs100.vcxproj.filters @@ -2,7 +2,7 @@ - {a213cd9e-da4b-4074-90f0-e2a039d02bc8} + {85b86a7a-edb5-4642-bc03-3417ca999d3b} diff --git a/Net/samples/Mail/Mail_x64_vs110.vcxproj b/Net/samples/Mail/Mail_x64_vs110.vcxproj index db1ef87ab..da9a8ba72 100644 --- a/Net/samples/Mail/Mail_x64_vs110.vcxproj +++ b/Net/samples/Mail/Mail_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\Mail\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\Mail\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Mail\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Mail\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\Mail\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\Mail\$(Configuration)\ false diff --git a/Net/samples/Mail/Mail_x64_vs110.vcxproj.filters b/Net/samples/Mail/Mail_x64_vs110.vcxproj.filters index 82ca2d912..ebe1822ec 100644 --- a/Net/samples/Mail/Mail_x64_vs110.vcxproj.filters +++ b/Net/samples/Mail/Mail_x64_vs110.vcxproj.filters @@ -2,7 +2,7 @@ - {71bf917a-e8ad-41e5-8303-3d3db67d1abd} + {9871b38c-5d93-417c-b4f5-8d02483a8bc1} diff --git a/Net/samples/Mail/Mail_x64_vs120.vcxproj b/Net/samples/Mail/Mail_x64_vs120.vcxproj index 7c100d406..3e7821b17 100644 --- a/Net/samples/Mail/Mail_x64_vs120.vcxproj +++ b/Net/samples/Mail/Mail_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\Mail\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\Mail\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Mail\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Mail\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\Mail\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\Mail\$(Configuration)\ false diff --git a/Net/samples/Mail/Mail_x64_vs120.vcxproj.filters b/Net/samples/Mail/Mail_x64_vs120.vcxproj.filters index 5b13e2d70..27757605c 100644 --- a/Net/samples/Mail/Mail_x64_vs120.vcxproj.filters +++ b/Net/samples/Mail/Mail_x64_vs120.vcxproj.filters @@ -2,7 +2,7 @@ - {eb44889e-06e4-4be4-81d9-89748a07a5ea} + {85d3c9bb-f9ba-4cf5-bbcd-e4e491ce4dbe} diff --git a/Net/samples/Mail/Mail_x64_vs90.vcproj b/Net/samples/Mail/Mail_x64_vs90.vcproj index 88d60123a..e1e06fa29 100644 --- a/Net/samples/Mail/Mail_x64_vs90.vcproj +++ b/Net/samples/Mail/Mail_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\Ping\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\Ping\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\Ping\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\Ping\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\Ping\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\Ping\$(Platform)\$(Configuration)\ false diff --git a/Net/samples/Ping/Ping_WEC2013_vs110.vcxproj.filters b/Net/samples/Ping/Ping_WEC2013_vs110.vcxproj.filters index 17a7288a2..ea264d38c 100644 --- a/Net/samples/Ping/Ping_WEC2013_vs110.vcxproj.filters +++ b/Net/samples/Ping/Ping_WEC2013_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {07c14ccf-9fb6-4322-9ef4-d4c65dc817bf} + {11aae7b1-71db-4894-a613-4adab81ffae5} - {bbd48983-c4eb-424d-b129-8bd5891a76b7} + {b56039b4-b57e-4b0f-b694-8418a08a5aca} diff --git a/Net/samples/Ping/Ping_WEC2013_vs120.vcxproj b/Net/samples/Ping/Ping_WEC2013_vs120.vcxproj index c13857fad..df4df862d 100644 --- a/Net/samples/Ping/Ping_WEC2013_vs120.vcxproj +++ b/Net/samples/Ping/Ping_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\Ping\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\Ping\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\Ping\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\Ping\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\Ping\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\Ping\$(Platform)\$(Configuration)\ false diff --git a/Net/samples/Ping/Ping_WEC2013_vs120.vcxproj.filters b/Net/samples/Ping/Ping_WEC2013_vs120.vcxproj.filters index 6419976f6..4f8a9c9fc 100644 --- a/Net/samples/Ping/Ping_WEC2013_vs120.vcxproj.filters +++ b/Net/samples/Ping/Ping_WEC2013_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {81079640-4dc2-4faf-a6ca-ccc0d0763622} + {f7d5b9ce-fc20-41f1-9e59-984cb02153d5} - {185b7b04-dab7-4777-8999-47f47d23844f} + {511c4041-5b1b-4edb-9b13-80e1afb84b69} diff --git a/Net/samples/Ping/Ping_vs100.vcxproj b/Net/samples/Ping/Ping_vs100.vcxproj index 13a78ed80..ed5bae7cc 100644 --- a/Net/samples/Ping/Ping_vs100.vcxproj +++ b/Net/samples/Ping/Ping_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\Ping\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\Ping\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\Ping\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\Ping\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\Ping\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\Ping\$(Configuration)\ false Pingd Pingd @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\Pingd.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\Pingd.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\Pingd.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Net/samples/Ping/Ping_vs100.vcxproj.filters b/Net/samples/Ping/Ping_vs100.vcxproj.filters index d434075e2..5a5b688c2 100644 --- a/Net/samples/Ping/Ping_vs100.vcxproj.filters +++ b/Net/samples/Ping/Ping_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {f4dcb088-1968-469e-a37b-f92df9eb1538} + {9dd75325-9242-40a7-8618-c61c86e278b8} - {65372518-4ad7-4856-9ca6-ca9c14b45b7f} + {f75b3698-855c-4e80-a3dd-77d7bab35c14} diff --git a/Net/samples/Ping/Ping_vs110.vcxproj b/Net/samples/Ping/Ping_vs110.vcxproj index 2f79d1e7b..0385170cc 100644 --- a/Net/samples/Ping/Ping_vs110.vcxproj +++ b/Net/samples/Ping/Ping_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\Ping\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\Ping\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\Ping\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\Ping\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\Ping\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\Ping\$(Configuration)\ false diff --git a/Net/samples/Ping/Ping_vs110.vcxproj.filters b/Net/samples/Ping/Ping_vs110.vcxproj.filters index 19521ec46..ae782416a 100644 --- a/Net/samples/Ping/Ping_vs110.vcxproj.filters +++ b/Net/samples/Ping/Ping_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {4faaa0ad-460b-4112-a7f9-d6919334fb83} + {a992a85f-21f7-438e-a089-675fce145532} - {1515ea1d-f860-478c-a9c8-1f5163602a2d} + {10565d62-dc77-4f74-b243-16c3a9fcf3f1} diff --git a/Net/samples/Ping/Ping_vs120.vcxproj b/Net/samples/Ping/Ping_vs120.vcxproj index a4b348454..214707467 100644 --- a/Net/samples/Ping/Ping_vs120.vcxproj +++ b/Net/samples/Ping/Ping_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\Ping\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\Ping\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\Ping\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\Ping\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\Ping\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\Ping\$(Configuration)\ false diff --git a/Net/samples/Ping/Ping_vs120.vcxproj.filters b/Net/samples/Ping/Ping_vs120.vcxproj.filters index 4ce10002b..91d6978e2 100644 --- a/Net/samples/Ping/Ping_vs120.vcxproj.filters +++ b/Net/samples/Ping/Ping_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {02071f01-858d-4570-bb31-eeb1c7315749} + {2429d13f-ab8e-457a-983e-e6064c5c80a4} - {4e66a1aa-115f-4f4e-8ba0-5dca1eca5f85} + {7f0a54a2-3ac9-4601-aecc-f83aac9ac36b} diff --git a/Net/samples/Ping/Ping_vs71.vcproj b/Net/samples/Ping/Ping_vs71.vcproj index 68e9a2c4b..47dc18ac8 100644 --- a/Net/samples/Ping/Ping_vs71.vcproj +++ b/Net/samples/Ping/Ping_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\Ping\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\Ping\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Ping\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Ping\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\Ping\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\Ping\$(Configuration)\ false Pingd Pingd @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\Pingd.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\Pingd.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\Pingd.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Net/samples/Ping/Ping_x64_vs100.vcxproj.filters b/Net/samples/Ping/Ping_x64_vs100.vcxproj.filters index a7faf23b6..228716ef6 100644 --- a/Net/samples/Ping/Ping_x64_vs100.vcxproj.filters +++ b/Net/samples/Ping/Ping_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {a3dcdfc0-a40a-4162-9fa8-8a1157d4340d} + {fc8583d2-9567-4ebb-9fef-9a4dbcb38781} - {705f9387-02b0-4733-8774-9a1be622d060} + {525b2315-8da4-4dda-82e4-e6dc51668504} diff --git a/Net/samples/Ping/Ping_x64_vs110.vcxproj b/Net/samples/Ping/Ping_x64_vs110.vcxproj index ef6c11ad6..13eb50fd9 100644 --- a/Net/samples/Ping/Ping_x64_vs110.vcxproj +++ b/Net/samples/Ping/Ping_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\Ping\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\Ping\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Ping\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Ping\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\Ping\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\Ping\$(Configuration)\ false diff --git a/Net/samples/Ping/Ping_x64_vs110.vcxproj.filters b/Net/samples/Ping/Ping_x64_vs110.vcxproj.filters index b9dab9762..61893e91b 100644 --- a/Net/samples/Ping/Ping_x64_vs110.vcxproj.filters +++ b/Net/samples/Ping/Ping_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {e92f937f-0aec-4b3a-a262-9c7396e1eaaa} + {765ebbf1-a6bd-4f27-90ce-fdbd69bf4d4f} - {e2761ddf-3da7-4902-9aeb-c6db2ad73911} + {4e86b9f9-8823-464a-9c40-1dcaa470977f} diff --git a/Net/samples/Ping/Ping_x64_vs120.vcxproj b/Net/samples/Ping/Ping_x64_vs120.vcxproj index dad547517..bdf1a261c 100644 --- a/Net/samples/Ping/Ping_x64_vs120.vcxproj +++ b/Net/samples/Ping/Ping_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\Ping\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\Ping\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Ping\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Ping\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\Ping\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\Ping\$(Configuration)\ false diff --git a/Net/samples/Ping/Ping_x64_vs120.vcxproj.filters b/Net/samples/Ping/Ping_x64_vs120.vcxproj.filters index 9979b466e..c474f8d6c 100644 --- a/Net/samples/Ping/Ping_x64_vs120.vcxproj.filters +++ b/Net/samples/Ping/Ping_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {72ed0466-70ca-4a08-aee9-7356f2c39d61} + {634daab5-22d4-458b-9f64-1554f0f55aa4} - {765887e2-74d8-476d-93f5-9ab0c5d0be61} + {ea899ff8-e901-4af7-b653-57eda5bc5503} diff --git a/Net/samples/Ping/Ping_x64_vs90.vcproj b/Net/samples/Ping/Ping_x64_vs90.vcproj index b8422eeca..66405e903 100644 --- a/Net/samples/Ping/Ping_x64_vs90.vcproj +++ b/Net/samples/Ping/Ping_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\SMTPLogger\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\SMTPLogger\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\SMTPLogger\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\SMTPLogger\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\SMTPLogger\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\SMTPLogger\$(Platform)\$(Configuration)\ false diff --git a/Net/samples/SMTPLogger/SMTPLogger_WEC2013_vs110.vcxproj.filters b/Net/samples/SMTPLogger/SMTPLogger_WEC2013_vs110.vcxproj.filters index 596c3bac3..00dd14959 100644 --- a/Net/samples/SMTPLogger/SMTPLogger_WEC2013_vs110.vcxproj.filters +++ b/Net/samples/SMTPLogger/SMTPLogger_WEC2013_vs110.vcxproj.filters @@ -2,7 +2,7 @@ - {d2016d17-1a23-4942-8666-7e99808b1957} + {93e19f66-b20f-45d0-960f-c4adf01ea04c} diff --git a/Net/samples/SMTPLogger/SMTPLogger_WEC2013_vs120.vcxproj b/Net/samples/SMTPLogger/SMTPLogger_WEC2013_vs120.vcxproj index 033d5255d..70b18fd0e 100644 --- a/Net/samples/SMTPLogger/SMTPLogger_WEC2013_vs120.vcxproj +++ b/Net/samples/SMTPLogger/SMTPLogger_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\SMTPLogger\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\SMTPLogger\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\SMTPLogger\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\SMTPLogger\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\SMTPLogger\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\SMTPLogger\$(Platform)\$(Configuration)\ false diff --git a/Net/samples/SMTPLogger/SMTPLogger_WEC2013_vs120.vcxproj.filters b/Net/samples/SMTPLogger/SMTPLogger_WEC2013_vs120.vcxproj.filters index 86eb589b3..dc0f5af0f 100644 --- a/Net/samples/SMTPLogger/SMTPLogger_WEC2013_vs120.vcxproj.filters +++ b/Net/samples/SMTPLogger/SMTPLogger_WEC2013_vs120.vcxproj.filters @@ -2,7 +2,7 @@ - {147980f4-8da6-4229-8d4f-e954834d1fb3} + {f7d4362a-3742-491c-ba0f-c94552db643c} diff --git a/Net/samples/SMTPLogger/SMTPLogger_vs100.vcxproj b/Net/samples/SMTPLogger/SMTPLogger_vs100.vcxproj index 783bcc106..b45b355b6 100644 --- a/Net/samples/SMTPLogger/SMTPLogger_vs100.vcxproj +++ b/Net/samples/SMTPLogger/SMTPLogger_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\SMTPLogger\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\SMTPLogger\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\SMTPLogger\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\SMTPLogger\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\SMTPLogger\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\SMTPLogger\$(Configuration)\ false SMTPLoggerd SMTPLoggerd @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\SMTPLoggerd.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\SMTPLoggerd.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\SMTPLoggerd.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Net/samples/SMTPLogger/SMTPLogger_vs100.vcxproj.filters b/Net/samples/SMTPLogger/SMTPLogger_vs100.vcxproj.filters index 3531fcf10..ea0560ba9 100644 --- a/Net/samples/SMTPLogger/SMTPLogger_vs100.vcxproj.filters +++ b/Net/samples/SMTPLogger/SMTPLogger_vs100.vcxproj.filters @@ -2,7 +2,7 @@ - {36c14540-8484-434f-afa6-e22a95abad92} + {0366b30e-efd0-472c-a3cf-d62a558b6850} diff --git a/Net/samples/SMTPLogger/SMTPLogger_vs110.vcxproj b/Net/samples/SMTPLogger/SMTPLogger_vs110.vcxproj index e5c4e1e39..c90ff5157 100644 --- a/Net/samples/SMTPLogger/SMTPLogger_vs110.vcxproj +++ b/Net/samples/SMTPLogger/SMTPLogger_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\SMTPLogger\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\SMTPLogger\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\SMTPLogger\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\SMTPLogger\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\SMTPLogger\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\SMTPLogger\$(Configuration)\ false diff --git a/Net/samples/SMTPLogger/SMTPLogger_vs110.vcxproj.filters b/Net/samples/SMTPLogger/SMTPLogger_vs110.vcxproj.filters index 83b97a700..6a9f413fe 100644 --- a/Net/samples/SMTPLogger/SMTPLogger_vs110.vcxproj.filters +++ b/Net/samples/SMTPLogger/SMTPLogger_vs110.vcxproj.filters @@ -2,7 +2,7 @@ - {5f1b8352-3c84-459d-acae-868d416aa2c0} + {b43cc1ce-bf01-4094-894b-6379c83fd5f8} diff --git a/Net/samples/SMTPLogger/SMTPLogger_vs120.vcxproj b/Net/samples/SMTPLogger/SMTPLogger_vs120.vcxproj index a76739bbd..3cbc3bdcb 100644 --- a/Net/samples/SMTPLogger/SMTPLogger_vs120.vcxproj +++ b/Net/samples/SMTPLogger/SMTPLogger_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\SMTPLogger\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\SMTPLogger\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\SMTPLogger\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\SMTPLogger\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\SMTPLogger\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\SMTPLogger\$(Configuration)\ false diff --git a/Net/samples/SMTPLogger/SMTPLogger_vs120.vcxproj.filters b/Net/samples/SMTPLogger/SMTPLogger_vs120.vcxproj.filters index 7800a5021..4bb36be70 100644 --- a/Net/samples/SMTPLogger/SMTPLogger_vs120.vcxproj.filters +++ b/Net/samples/SMTPLogger/SMTPLogger_vs120.vcxproj.filters @@ -2,7 +2,7 @@ - {9c534998-3de9-4809-bc19-077452b0cb42} + {f1f15980-2132-4252-9ecd-4079b7d52eb6} diff --git a/Net/samples/SMTPLogger/SMTPLogger_vs71.vcproj b/Net/samples/SMTPLogger/SMTPLogger_vs71.vcproj index 101d7750e..246cdf3eb 100644 --- a/Net/samples/SMTPLogger/SMTPLogger_vs71.vcproj +++ b/Net/samples/SMTPLogger/SMTPLogger_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\SMTPLogger\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\SMTPLogger\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\SMTPLogger\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\SMTPLogger\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\SMTPLogger\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\SMTPLogger\$(Configuration)\ false SMTPLoggerd SMTPLoggerd @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\SMTPLoggerd.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\SMTPLoggerd.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\SMTPLoggerd.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Net/samples/SMTPLogger/SMTPLogger_x64_vs100.vcxproj.filters b/Net/samples/SMTPLogger/SMTPLogger_x64_vs100.vcxproj.filters index a920bcec9..5a66af9fd 100644 --- a/Net/samples/SMTPLogger/SMTPLogger_x64_vs100.vcxproj.filters +++ b/Net/samples/SMTPLogger/SMTPLogger_x64_vs100.vcxproj.filters @@ -2,7 +2,7 @@ - {093f77db-4c24-4181-bd6d-00f03a85a949} + {bba709b8-bc29-4f5d-be40-9d1250e64001} diff --git a/Net/samples/SMTPLogger/SMTPLogger_x64_vs110.vcxproj b/Net/samples/SMTPLogger/SMTPLogger_x64_vs110.vcxproj index bbe92ae99..8df4ebda8 100644 --- a/Net/samples/SMTPLogger/SMTPLogger_x64_vs110.vcxproj +++ b/Net/samples/SMTPLogger/SMTPLogger_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\SMTPLogger\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\SMTPLogger\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\SMTPLogger\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\SMTPLogger\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\SMTPLogger\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\SMTPLogger\$(Configuration)\ false diff --git a/Net/samples/SMTPLogger/SMTPLogger_x64_vs110.vcxproj.filters b/Net/samples/SMTPLogger/SMTPLogger_x64_vs110.vcxproj.filters index 2ed22f801..3a1349132 100644 --- a/Net/samples/SMTPLogger/SMTPLogger_x64_vs110.vcxproj.filters +++ b/Net/samples/SMTPLogger/SMTPLogger_x64_vs110.vcxproj.filters @@ -2,7 +2,7 @@ - {bc29dcbf-aeea-4061-913a-6dea249cc2d8} + {a47663fc-a288-4989-a0dc-31325efc6db6} diff --git a/Net/samples/SMTPLogger/SMTPLogger_x64_vs120.vcxproj b/Net/samples/SMTPLogger/SMTPLogger_x64_vs120.vcxproj index 0af1b7099..04fb9104d 100644 --- a/Net/samples/SMTPLogger/SMTPLogger_x64_vs120.vcxproj +++ b/Net/samples/SMTPLogger/SMTPLogger_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\SMTPLogger\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\SMTPLogger\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\SMTPLogger\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\SMTPLogger\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\SMTPLogger\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\SMTPLogger\$(Configuration)\ false diff --git a/Net/samples/SMTPLogger/SMTPLogger_x64_vs120.vcxproj.filters b/Net/samples/SMTPLogger/SMTPLogger_x64_vs120.vcxproj.filters index d2219d266..74b5afc7c 100644 --- a/Net/samples/SMTPLogger/SMTPLogger_x64_vs120.vcxproj.filters +++ b/Net/samples/SMTPLogger/SMTPLogger_x64_vs120.vcxproj.filters @@ -2,7 +2,7 @@ - {a1723a54-3449-4028-92f7-c8f065cb9646} + {9794d6fd-801c-4d5b-972c-762cdce25e53} diff --git a/Net/samples/SMTPLogger/SMTPLogger_x64_vs90.vcproj b/Net/samples/SMTPLogger/SMTPLogger_x64_vs90.vcproj index 559b4dea4..134a64cdc 100644 --- a/Net/samples/SMTPLogger/SMTPLogger_x64_vs90.vcproj +++ b/Net/samples/SMTPLogger/SMTPLogger_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\TimeServer\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\TimeServer\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\TimeServer\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\TimeServer\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\TimeServer\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\TimeServer\$(Platform)\$(Configuration)\ false diff --git a/Net/samples/TimeServer/TimeServer_WEC2013_vs110.vcxproj.filters b/Net/samples/TimeServer/TimeServer_WEC2013_vs110.vcxproj.filters index ed7bdbe0c..c8e6e03d5 100644 --- a/Net/samples/TimeServer/TimeServer_WEC2013_vs110.vcxproj.filters +++ b/Net/samples/TimeServer/TimeServer_WEC2013_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {fa603f5d-5164-4fdc-85f8-a467f7ff2ec9} + {bceb5332-7ade-4009-a911-ccd45340ac10} - {cba56c99-3cb0-4d6b-b201-f05e116f8a9b} + {4adb54ca-c4aa-48fb-9e2b-a9420318efc3} diff --git a/Net/samples/TimeServer/TimeServer_WEC2013_vs120.vcxproj b/Net/samples/TimeServer/TimeServer_WEC2013_vs120.vcxproj index 4fe99b796..b56ae09de 100644 --- a/Net/samples/TimeServer/TimeServer_WEC2013_vs120.vcxproj +++ b/Net/samples/TimeServer/TimeServer_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\TimeServer\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\TimeServer\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\TimeServer\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\TimeServer\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\TimeServer\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\TimeServer\$(Platform)\$(Configuration)\ false diff --git a/Net/samples/TimeServer/TimeServer_WEC2013_vs120.vcxproj.filters b/Net/samples/TimeServer/TimeServer_WEC2013_vs120.vcxproj.filters index 4c27172b1..72bd00396 100644 --- a/Net/samples/TimeServer/TimeServer_WEC2013_vs120.vcxproj.filters +++ b/Net/samples/TimeServer/TimeServer_WEC2013_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {6a5a731f-4c43-4fec-973d-7f3472f6daec} + {d51eec9c-e7a4-4d02-80da-b08cd3a6e252} - {405f4c66-a698-4a37-8a17-e0389bcfda02} + {0afa753c-3868-4128-a39d-b4f7a5d93ea4} diff --git a/Net/samples/TimeServer/TimeServer_vs100.vcxproj b/Net/samples/TimeServer/TimeServer_vs100.vcxproj index 6ae37eef7..79e9afe00 100644 --- a/Net/samples/TimeServer/TimeServer_vs100.vcxproj +++ b/Net/samples/TimeServer/TimeServer_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\TimeServer\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TimeServer\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TimeServer\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TimeServer\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TimeServer\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TimeServer\$(Configuration)\ false TimeServerd TimeServerd @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\TimeServerd.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\TimeServerd.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\TimeServerd.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Net/samples/TimeServer/TimeServer_vs100.vcxproj.filters b/Net/samples/TimeServer/TimeServer_vs100.vcxproj.filters index 9a5b94a07..001e19479 100644 --- a/Net/samples/TimeServer/TimeServer_vs100.vcxproj.filters +++ b/Net/samples/TimeServer/TimeServer_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {f85aae10-2b6c-45cd-8dc5-33a2e91cbdc8} + {60629e22-99b5-408f-a9b2-bceb3c3c845f} - {ecd37d03-834b-40ff-9b06-5d9cffa76786} + {9f96f8c5-f207-4780-8ea4-8e0471414618} diff --git a/Net/samples/TimeServer/TimeServer_vs110.vcxproj b/Net/samples/TimeServer/TimeServer_vs110.vcxproj index 9d98ed503..6ed9cc614 100644 --- a/Net/samples/TimeServer/TimeServer_vs110.vcxproj +++ b/Net/samples/TimeServer/TimeServer_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\TimeServer\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TimeServer\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TimeServer\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TimeServer\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TimeServer\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TimeServer\$(Configuration)\ false diff --git a/Net/samples/TimeServer/TimeServer_vs110.vcxproj.filters b/Net/samples/TimeServer/TimeServer_vs110.vcxproj.filters index f9116a73e..f592fab57 100644 --- a/Net/samples/TimeServer/TimeServer_vs110.vcxproj.filters +++ b/Net/samples/TimeServer/TimeServer_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {2cbf55b0-88cf-430d-9d97-db93853c7e8f} + {27732eb0-1b12-467b-beaf-a59e9e357de2} - {4e80cf20-6769-49b9-a548-d6d84d0a5490} + {4ad320ec-7f1d-405b-97cc-532039832d67} diff --git a/Net/samples/TimeServer/TimeServer_vs120.vcxproj b/Net/samples/TimeServer/TimeServer_vs120.vcxproj index 051426108..e4e966cae 100644 --- a/Net/samples/TimeServer/TimeServer_vs120.vcxproj +++ b/Net/samples/TimeServer/TimeServer_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\TimeServer\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TimeServer\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TimeServer\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TimeServer\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TimeServer\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TimeServer\$(Configuration)\ false diff --git a/Net/samples/TimeServer/TimeServer_vs120.vcxproj.filters b/Net/samples/TimeServer/TimeServer_vs120.vcxproj.filters index e9a485794..8ab1f3630 100644 --- a/Net/samples/TimeServer/TimeServer_vs120.vcxproj.filters +++ b/Net/samples/TimeServer/TimeServer_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {de7bbfa9-4ad2-4e0d-8696-6c2a47bbbd67} + {14656ced-2129-403c-801f-b42eccefae5d} - {d28054d8-2480-4c8d-93ed-e47790d6faeb} + {3a1e1b5e-564c-485e-852e-b46ea1104374} diff --git a/Net/samples/TimeServer/TimeServer_vs71.vcproj b/Net/samples/TimeServer/TimeServer_vs71.vcproj index 79167b711..85f03f841 100644 --- a/Net/samples/TimeServer/TimeServer_vs71.vcproj +++ b/Net/samples/TimeServer/TimeServer_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\TimeServer\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TimeServer\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TimeServer\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TimeServer\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TimeServer\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TimeServer\$(Configuration)\ false TimeServerd TimeServerd @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\TimeServerd.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\TimeServerd.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\TimeServerd.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Net/samples/TimeServer/TimeServer_x64_vs100.vcxproj.filters b/Net/samples/TimeServer/TimeServer_x64_vs100.vcxproj.filters index 74f94e3c1..596e365df 100644 --- a/Net/samples/TimeServer/TimeServer_x64_vs100.vcxproj.filters +++ b/Net/samples/TimeServer/TimeServer_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {4df8ab36-aee6-42ae-a31f-1c03aa0540ab} + {6ff682f6-9465-4c4e-a6f3-4ee92af016a4} - {7e566768-a50f-434a-a179-656eec5e323f} + {a823a680-3007-4f0b-a3f6-ee5a8f8535a5} diff --git a/Net/samples/TimeServer/TimeServer_x64_vs110.vcxproj b/Net/samples/TimeServer/TimeServer_x64_vs110.vcxproj index 2de5928c8..124f4cdf8 100644 --- a/Net/samples/TimeServer/TimeServer_x64_vs110.vcxproj +++ b/Net/samples/TimeServer/TimeServer_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\TimeServer\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TimeServer\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TimeServer\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TimeServer\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TimeServer\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TimeServer\$(Configuration)\ false diff --git a/Net/samples/TimeServer/TimeServer_x64_vs110.vcxproj.filters b/Net/samples/TimeServer/TimeServer_x64_vs110.vcxproj.filters index 054293329..e524171e8 100644 --- a/Net/samples/TimeServer/TimeServer_x64_vs110.vcxproj.filters +++ b/Net/samples/TimeServer/TimeServer_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {e85f597b-d1ab-4dc6-a118-e8c2102bc0f9} + {99de3802-89e2-4619-aafe-081d79246a37} - {e5847111-79d8-4011-b21d-5926755ab871} + {57356025-264b-4103-98d7-0d85c7666375} diff --git a/Net/samples/TimeServer/TimeServer_x64_vs120.vcxproj b/Net/samples/TimeServer/TimeServer_x64_vs120.vcxproj index ea2f3f01e..8f3da4ebf 100644 --- a/Net/samples/TimeServer/TimeServer_x64_vs120.vcxproj +++ b/Net/samples/TimeServer/TimeServer_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\TimeServer\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TimeServer\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TimeServer\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TimeServer\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TimeServer\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TimeServer\$(Configuration)\ false diff --git a/Net/samples/TimeServer/TimeServer_x64_vs120.vcxproj.filters b/Net/samples/TimeServer/TimeServer_x64_vs120.vcxproj.filters index 767a67a98..d1d05bb7e 100644 --- a/Net/samples/TimeServer/TimeServer_x64_vs120.vcxproj.filters +++ b/Net/samples/TimeServer/TimeServer_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {6c6df3b8-21d4-4959-ae03-f8f6da015ccf} + {c4682309-5b97-4ae6-b4f0-a6b33c3b92f4} - {1c64b1b9-fac1-42d6-9c54-59659547d8af} + {8506f43c-0766-4b71-be2b-095b734e61c1} diff --git a/Net/samples/TimeServer/TimeServer_x64_vs90.vcproj b/Net/samples/TimeServer/TimeServer_x64_vs90.vcproj index 0e06a654a..3de868a09 100644 --- a/Net/samples/TimeServer/TimeServer_x64_vs90.vcproj +++ b/Net/samples/TimeServer/TimeServer_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\TwitterClient\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\TwitterClient\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\TwitterClient\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\TwitterClient\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\TwitterClient\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\TwitterClient\$(Platform)\$(Configuration)\ false diff --git a/Net/samples/TwitterClient/TwitterClient_WEC2013_vs110.vcxproj.filters b/Net/samples/TwitterClient/TwitterClient_WEC2013_vs110.vcxproj.filters index b99dec278..0e3bf1267 100644 --- a/Net/samples/TwitterClient/TwitterClient_WEC2013_vs110.vcxproj.filters +++ b/Net/samples/TwitterClient/TwitterClient_WEC2013_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {49eb9ac2-68f0-4c9f-a468-5e404b4a6977} + {b5474087-a2a1-4e71-9626-29efe9ee5bf2} - {78ee8e60-95d7-4232-bd59-ac9f6478ad3f} + {624057d4-59aa-4ebe-9e39-cdd607b3034a} diff --git a/Net/samples/TwitterClient/TwitterClient_WEC2013_vs120.vcxproj b/Net/samples/TwitterClient/TwitterClient_WEC2013_vs120.vcxproj index d13225dcf..a003ad6c4 100644 --- a/Net/samples/TwitterClient/TwitterClient_WEC2013_vs120.vcxproj +++ b/Net/samples/TwitterClient/TwitterClient_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\TwitterClient\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\TwitterClient\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\TwitterClient\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\TwitterClient\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\TwitterClient\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\TwitterClient\$(Platform)\$(Configuration)\ false diff --git a/Net/samples/TwitterClient/TwitterClient_WEC2013_vs120.vcxproj.filters b/Net/samples/TwitterClient/TwitterClient_WEC2013_vs120.vcxproj.filters index 55e82e9f5..8002ae987 100644 --- a/Net/samples/TwitterClient/TwitterClient_WEC2013_vs120.vcxproj.filters +++ b/Net/samples/TwitterClient/TwitterClient_WEC2013_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {11282ac2-cf70-41a8-90c4-b7f30693024a} + {442351cf-69e4-4f22-a338-008f2fb9e7c6} - {f633fbac-eca9-4d3b-90bf-421cb9ea3735} + {ffa2790a-bb33-4361-b112-9e4c9295a9f7} diff --git a/Net/samples/TwitterClient/TwitterClient_vs100.vcxproj b/Net/samples/TwitterClient/TwitterClient_vs100.vcxproj index 6a8c72f37..d1fc6400c 100644 --- a/Net/samples/TwitterClient/TwitterClient_vs100.vcxproj +++ b/Net/samples/TwitterClient/TwitterClient_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\TwitterClient\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TwitterClient\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TwitterClient\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TwitterClient\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TwitterClient\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TwitterClient\$(Configuration)\ false TwitterClientd TwitterClientd @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\TwitterClientd.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\TwitterClientd.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\TwitterClientd.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Net/samples/TwitterClient/TwitterClient_vs100.vcxproj.filters b/Net/samples/TwitterClient/TwitterClient_vs100.vcxproj.filters index 65a7c95a8..995884176 100644 --- a/Net/samples/TwitterClient/TwitterClient_vs100.vcxproj.filters +++ b/Net/samples/TwitterClient/TwitterClient_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {879e4fb3-b03f-4a92-8a68-249776893e66} + {8c3d76b4-4019-4fe0-b228-e1d37f43840e} - {61343da3-8077-4e14-b5ae-b948d0611c51} + {6d65ed68-8842-46a7-8d3e-6dbfe10cac0c} diff --git a/Net/samples/TwitterClient/TwitterClient_vs110.vcxproj b/Net/samples/TwitterClient/TwitterClient_vs110.vcxproj index c92918181..00c3db2ee 100644 --- a/Net/samples/TwitterClient/TwitterClient_vs110.vcxproj +++ b/Net/samples/TwitterClient/TwitterClient_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\TwitterClient\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TwitterClient\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TwitterClient\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TwitterClient\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TwitterClient\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TwitterClient\$(Configuration)\ false diff --git a/Net/samples/TwitterClient/TwitterClient_vs110.vcxproj.filters b/Net/samples/TwitterClient/TwitterClient_vs110.vcxproj.filters index 4a6e25faa..11e27cc26 100644 --- a/Net/samples/TwitterClient/TwitterClient_vs110.vcxproj.filters +++ b/Net/samples/TwitterClient/TwitterClient_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {2c35fc71-21f6-428f-9c83-bc6bf954f179} + {93d8883d-4191-4c49-93ac-86eb0dce6fe7} - {6278ab0d-9a9d-4256-b911-6639beb7217d} + {5ef67436-af14-46c9-adb5-a2dee8151237} diff --git a/Net/samples/TwitterClient/TwitterClient_vs120.vcxproj b/Net/samples/TwitterClient/TwitterClient_vs120.vcxproj index bb71eae25..95d62966c 100644 --- a/Net/samples/TwitterClient/TwitterClient_vs120.vcxproj +++ b/Net/samples/TwitterClient/TwitterClient_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\TwitterClient\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TwitterClient\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TwitterClient\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TwitterClient\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TwitterClient\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TwitterClient\$(Configuration)\ false diff --git a/Net/samples/TwitterClient/TwitterClient_vs120.vcxproj.filters b/Net/samples/TwitterClient/TwitterClient_vs120.vcxproj.filters index 4ebe7961f..b51e1d25c 100644 --- a/Net/samples/TwitterClient/TwitterClient_vs120.vcxproj.filters +++ b/Net/samples/TwitterClient/TwitterClient_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {317d71a7-3688-4830-bdfd-327d7db7fa62} + {d3ee1c1e-12ea-4a81-9069-9fd705ac0311} - {326c5a29-b15e-4e11-8325-8a80dfbbecb0} + {66fae26b-7f05-4353-818b-eb3eb3bf2cf4} diff --git a/Net/samples/TwitterClient/TwitterClient_vs71.vcproj b/Net/samples/TwitterClient/TwitterClient_vs71.vcproj index a979a2072..add463f69 100644 --- a/Net/samples/TwitterClient/TwitterClient_vs71.vcproj +++ b/Net/samples/TwitterClient/TwitterClient_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\TwitterClient\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TwitterClient\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TwitterClient\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TwitterClient\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TwitterClient\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TwitterClient\$(Configuration)\ false TwitterClientd TwitterClientd @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\TwitterClientd.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\TwitterClientd.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\TwitterClientd.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Net/samples/TwitterClient/TwitterClient_x64_vs100.vcxproj.filters b/Net/samples/TwitterClient/TwitterClient_x64_vs100.vcxproj.filters index 51785c092..5611bffea 100644 --- a/Net/samples/TwitterClient/TwitterClient_x64_vs100.vcxproj.filters +++ b/Net/samples/TwitterClient/TwitterClient_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {3c7ebd27-db1e-488f-9e31-3df43020775a} + {502e5089-9f4d-422f-8253-3b420f499915} - {493db3b2-3210-4161-8b91-6fca1c7376e2} + {e356359a-d0dd-4b18-93cc-f1d5a9b936cd} diff --git a/Net/samples/TwitterClient/TwitterClient_x64_vs110.vcxproj b/Net/samples/TwitterClient/TwitterClient_x64_vs110.vcxproj index c8631f917..7fd0d7326 100644 --- a/Net/samples/TwitterClient/TwitterClient_x64_vs110.vcxproj +++ b/Net/samples/TwitterClient/TwitterClient_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\TwitterClient\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TwitterClient\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TwitterClient\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TwitterClient\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TwitterClient\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TwitterClient\$(Configuration)\ false diff --git a/Net/samples/TwitterClient/TwitterClient_x64_vs110.vcxproj.filters b/Net/samples/TwitterClient/TwitterClient_x64_vs110.vcxproj.filters index f88388a6a..aefd9d8fd 100644 --- a/Net/samples/TwitterClient/TwitterClient_x64_vs110.vcxproj.filters +++ b/Net/samples/TwitterClient/TwitterClient_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {7482354d-e974-4653-98b1-d24cc99b7159} + {c0e473ca-f598-4411-b27c-0b748ec14f98} - {935418f7-349c-4f48-9746-6b50ee895558} + {d19c11e0-d273-4b4a-9677-f455830ac33d} diff --git a/Net/samples/TwitterClient/TwitterClient_x64_vs120.vcxproj b/Net/samples/TwitterClient/TwitterClient_x64_vs120.vcxproj index 82878679d..5a397bd9f 100644 --- a/Net/samples/TwitterClient/TwitterClient_x64_vs120.vcxproj +++ b/Net/samples/TwitterClient/TwitterClient_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\TwitterClient\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TwitterClient\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TwitterClient\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TwitterClient\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TwitterClient\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TwitterClient\$(Configuration)\ false diff --git a/Net/samples/TwitterClient/TwitterClient_x64_vs120.vcxproj.filters b/Net/samples/TwitterClient/TwitterClient_x64_vs120.vcxproj.filters index 6daad28c8..d35612d9d 100644 --- a/Net/samples/TwitterClient/TwitterClient_x64_vs120.vcxproj.filters +++ b/Net/samples/TwitterClient/TwitterClient_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {6f55b003-ee1b-4fbf-b7aa-b4775083678a} + {2fc87553-1f46-40fe-b480-6e0e818f153b} - {14c4fcfd-07b9-41d1-935d-081c8058d7e0} + {71b7207b-5e72-4c82-93d1-6151ce1426d6} diff --git a/Net/samples/TwitterClient/TwitterClient_x64_vs90.vcproj b/Net/samples/TwitterClient/TwitterClient_x64_vs90.vcproj index 3b3a21638..bdbb91b03 100644 --- a/Net/samples/TwitterClient/TwitterClient_x64_vs90.vcproj +++ b/Net/samples/TwitterClient/TwitterClient_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\WebSocketServer\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\WebSocketServer\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\WebSocketServer\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\WebSocketServer\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\WebSocketServer\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\WebSocketServer\$(Platform)\$(Configuration)\ false diff --git a/Net/samples/WebSocketServer/WebSocketServer_WEC2013_vs110.vcxproj.filters b/Net/samples/WebSocketServer/WebSocketServer_WEC2013_vs110.vcxproj.filters index 35aba0f98..a2bb347bd 100644 --- a/Net/samples/WebSocketServer/WebSocketServer_WEC2013_vs110.vcxproj.filters +++ b/Net/samples/WebSocketServer/WebSocketServer_WEC2013_vs110.vcxproj.filters @@ -2,7 +2,7 @@ - {ad0bd060-6daa-438a-9365-cf97922937b8} + {4d7fe185-b2d5-4ee3-845d-58600fa6b66e} diff --git a/Net/samples/WebSocketServer/WebSocketServer_WEC2013_vs120.vcxproj b/Net/samples/WebSocketServer/WebSocketServer_WEC2013_vs120.vcxproj index 229d60c6e..43a449d67 100644 --- a/Net/samples/WebSocketServer/WebSocketServer_WEC2013_vs120.vcxproj +++ b/Net/samples/WebSocketServer/WebSocketServer_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\WebSocketServer\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\WebSocketServer\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\WebSocketServer\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\WebSocketServer\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\WebSocketServer\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\WebSocketServer\$(Platform)\$(Configuration)\ false diff --git a/Net/samples/WebSocketServer/WebSocketServer_WEC2013_vs120.vcxproj.filters b/Net/samples/WebSocketServer/WebSocketServer_WEC2013_vs120.vcxproj.filters index 8b5eeb91f..e2484c948 100644 --- a/Net/samples/WebSocketServer/WebSocketServer_WEC2013_vs120.vcxproj.filters +++ b/Net/samples/WebSocketServer/WebSocketServer_WEC2013_vs120.vcxproj.filters @@ -2,7 +2,7 @@ - {36f8bb67-4667-498e-b243-94486ad42cd6} + {dc4942c9-4ef0-4543-832d-3212e1d286da} diff --git a/Net/samples/WebSocketServer/WebSocketServer_vs100.vcxproj b/Net/samples/WebSocketServer/WebSocketServer_vs100.vcxproj index 6e8174fd0..24b3d02a8 100644 --- a/Net/samples/WebSocketServer/WebSocketServer_vs100.vcxproj +++ b/Net/samples/WebSocketServer/WebSocketServer_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\WebSocketServer\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\WebSocketServer\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\WebSocketServer\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\WebSocketServer\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\WebSocketServer\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\WebSocketServer\$(Configuration)\ false WebSocketServerd WebSocketServerd @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\WebSocketServerd.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\WebSocketServerd.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\WebSocketServerd.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Net/samples/WebSocketServer/WebSocketServer_vs100.vcxproj.filters b/Net/samples/WebSocketServer/WebSocketServer_vs100.vcxproj.filters index 4fb98d74b..5ef146dfe 100644 --- a/Net/samples/WebSocketServer/WebSocketServer_vs100.vcxproj.filters +++ b/Net/samples/WebSocketServer/WebSocketServer_vs100.vcxproj.filters @@ -2,7 +2,7 @@ - {8c495bd2-37c0-4c8a-972e-804ed4f202a3} + {a41b5009-e219-4cb5-bc4f-e57eb1140b51} diff --git a/Net/samples/WebSocketServer/WebSocketServer_vs110.vcxproj b/Net/samples/WebSocketServer/WebSocketServer_vs110.vcxproj index 1d13c773e..826c9d218 100644 --- a/Net/samples/WebSocketServer/WebSocketServer_vs110.vcxproj +++ b/Net/samples/WebSocketServer/WebSocketServer_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\WebSocketServer\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\WebSocketServer\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\WebSocketServer\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\WebSocketServer\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\WebSocketServer\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\WebSocketServer\$(Configuration)\ false diff --git a/Net/samples/WebSocketServer/WebSocketServer_vs110.vcxproj.filters b/Net/samples/WebSocketServer/WebSocketServer_vs110.vcxproj.filters index ccc2dbe5a..72b866f0d 100644 --- a/Net/samples/WebSocketServer/WebSocketServer_vs110.vcxproj.filters +++ b/Net/samples/WebSocketServer/WebSocketServer_vs110.vcxproj.filters @@ -2,7 +2,7 @@ - {b5d9f0ef-9140-4d03-bbc8-997bd962e97b} + {c62cc0e5-18d4-4122-b598-59a877fef10c} diff --git a/Net/samples/WebSocketServer/WebSocketServer_vs120.vcxproj b/Net/samples/WebSocketServer/WebSocketServer_vs120.vcxproj index c9bddddc5..232a25a45 100644 --- a/Net/samples/WebSocketServer/WebSocketServer_vs120.vcxproj +++ b/Net/samples/WebSocketServer/WebSocketServer_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\WebSocketServer\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\WebSocketServer\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\WebSocketServer\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\WebSocketServer\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\WebSocketServer\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\WebSocketServer\$(Configuration)\ false diff --git a/Net/samples/WebSocketServer/WebSocketServer_vs120.vcxproj.filters b/Net/samples/WebSocketServer/WebSocketServer_vs120.vcxproj.filters index 97f61c6ab..4e722f95d 100644 --- a/Net/samples/WebSocketServer/WebSocketServer_vs120.vcxproj.filters +++ b/Net/samples/WebSocketServer/WebSocketServer_vs120.vcxproj.filters @@ -2,7 +2,7 @@ - {06dcf332-a3f4-435b-98ec-aaec172509ab} + {9a9fac47-86d3-433a-8f13-3785daa4140e} diff --git a/Net/samples/WebSocketServer/WebSocketServer_vs71.vcproj b/Net/samples/WebSocketServer/WebSocketServer_vs71.vcproj index 74597395f..d65f36d26 100644 --- a/Net/samples/WebSocketServer/WebSocketServer_vs71.vcproj +++ b/Net/samples/WebSocketServer/WebSocketServer_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\WebSocketServer\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\WebSocketServer\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\WebSocketServer\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\WebSocketServer\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\WebSocketServer\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\WebSocketServer\$(Configuration)\ false WebSocketServerd WebSocketServerd @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\WebSocketServerd.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\WebSocketServerd.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\WebSocketServerd.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Net/samples/WebSocketServer/WebSocketServer_x64_vs100.vcxproj.filters b/Net/samples/WebSocketServer/WebSocketServer_x64_vs100.vcxproj.filters index 7f216fd26..ce2200487 100644 --- a/Net/samples/WebSocketServer/WebSocketServer_x64_vs100.vcxproj.filters +++ b/Net/samples/WebSocketServer/WebSocketServer_x64_vs100.vcxproj.filters @@ -2,7 +2,7 @@ - {c9d3deee-507f-42de-aa6a-5b08fd4c89b2} + {55a498f9-08c1-4255-8139-79fde815d0c0} diff --git a/Net/samples/WebSocketServer/WebSocketServer_x64_vs110.vcxproj b/Net/samples/WebSocketServer/WebSocketServer_x64_vs110.vcxproj index d2beb2df9..00bfae0db 100644 --- a/Net/samples/WebSocketServer/WebSocketServer_x64_vs110.vcxproj +++ b/Net/samples/WebSocketServer/WebSocketServer_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\WebSocketServer\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\WebSocketServer\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\WebSocketServer\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\WebSocketServer\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\WebSocketServer\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\WebSocketServer\$(Configuration)\ false diff --git a/Net/samples/WebSocketServer/WebSocketServer_x64_vs110.vcxproj.filters b/Net/samples/WebSocketServer/WebSocketServer_x64_vs110.vcxproj.filters index a1b347bd1..c373b8cba 100644 --- a/Net/samples/WebSocketServer/WebSocketServer_x64_vs110.vcxproj.filters +++ b/Net/samples/WebSocketServer/WebSocketServer_x64_vs110.vcxproj.filters @@ -2,7 +2,7 @@ - {c5ad79c0-666c-470a-8a4d-ea34c54b870e} + {2e107aff-45e1-4484-aae8-19d3b67af83a} diff --git a/Net/samples/WebSocketServer/WebSocketServer_x64_vs120.vcxproj b/Net/samples/WebSocketServer/WebSocketServer_x64_vs120.vcxproj index 9f02fe70f..426986897 100644 --- a/Net/samples/WebSocketServer/WebSocketServer_x64_vs120.vcxproj +++ b/Net/samples/WebSocketServer/WebSocketServer_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\WebSocketServer\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\WebSocketServer\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\WebSocketServer\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\WebSocketServer\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\WebSocketServer\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\WebSocketServer\$(Configuration)\ false diff --git a/Net/samples/WebSocketServer/WebSocketServer_x64_vs120.vcxproj.filters b/Net/samples/WebSocketServer/WebSocketServer_x64_vs120.vcxproj.filters index fb42dd955..7a33da3f5 100644 --- a/Net/samples/WebSocketServer/WebSocketServer_x64_vs120.vcxproj.filters +++ b/Net/samples/WebSocketServer/WebSocketServer_x64_vs120.vcxproj.filters @@ -2,7 +2,7 @@ - {6dfeda22-21c3-4e22-9096-1dc5f8b7aece} + {a2999d8e-048d-4e7a-8c68-646334775f25} diff --git a/Net/samples/WebSocketServer/WebSocketServer_x64_vs90.vcproj b/Net/samples/WebSocketServer/WebSocketServer_x64_vs90.vcproj index 380513108..acf95f602 100644 --- a/Net/samples/WebSocketServer/WebSocketServer_x64_vs90.vcproj +++ b/Net/samples/WebSocketServer/WebSocketServer_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> first + ": " + it->second); } - if (request.getURI() == "/ws") + if(request.find("Upgrade") != request.end() && request["Upgrade"] == "websocket") return new WebSocketRequestHandler; else return new PageRequestHandler; diff --git a/Net/samples/dict/dict_CE_vs90.vcproj b/Net/samples/dict/dict_CE_vs90.vcproj index 675a87ee9..7844a14c7 100644 --- a/Net/samples/dict/dict_CE_vs90.vcproj +++ b/Net/samples/dict/dict_CE_vs90.vcproj @@ -46,7 +46,8 @@ CompileAs="0" DisableSpecificWarnings="4800;" CompileForArchitecture="2" - InterworkCalls="false"/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\dict\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\dict\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\dict\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\dict\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\dict\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\dict\$(Platform)\$(Configuration)\ false diff --git a/Net/samples/dict/dict_WEC2013_vs110.vcxproj.filters b/Net/samples/dict/dict_WEC2013_vs110.vcxproj.filters index f681a2ed9..13862bf1a 100644 --- a/Net/samples/dict/dict_WEC2013_vs110.vcxproj.filters +++ b/Net/samples/dict/dict_WEC2013_vs110.vcxproj.filters @@ -2,7 +2,7 @@ - {a549738c-2e06-47e5-acec-c64dceaf3908} + {360930c6-7179-4aa5-bde1-9789f4778b57} diff --git a/Net/samples/dict/dict_WEC2013_vs120.vcxproj b/Net/samples/dict/dict_WEC2013_vs120.vcxproj index 0108be8fd..0038ddb26 100644 --- a/Net/samples/dict/dict_WEC2013_vs120.vcxproj +++ b/Net/samples/dict/dict_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\dict\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\dict\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\dict\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\dict\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\dict\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\dict\$(Platform)\$(Configuration)\ false diff --git a/Net/samples/dict/dict_WEC2013_vs120.vcxproj.filters b/Net/samples/dict/dict_WEC2013_vs120.vcxproj.filters index d0b8648be..cd9e25c30 100644 --- a/Net/samples/dict/dict_WEC2013_vs120.vcxproj.filters +++ b/Net/samples/dict/dict_WEC2013_vs120.vcxproj.filters @@ -2,7 +2,7 @@ - {c622939f-c1f1-4432-b126-f7ce970d1af9} + {ceae292c-f506-45aa-95da-ad32cd14fc24} diff --git a/Net/samples/dict/dict_vs100.vcxproj b/Net/samples/dict/dict_vs100.vcxproj index 2a22ae7cb..6f7e79048 100644 --- a/Net/samples/dict/dict_vs100.vcxproj +++ b/Net/samples/dict/dict_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\dict\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\dict\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\dict\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\dict\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\dict\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\dict\$(Configuration)\ false dictd dictd @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\dictd.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\dictd.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\dictd.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Net/samples/dict/dict_vs100.vcxproj.filters b/Net/samples/dict/dict_vs100.vcxproj.filters index 563b86aba..f1790de96 100644 --- a/Net/samples/dict/dict_vs100.vcxproj.filters +++ b/Net/samples/dict/dict_vs100.vcxproj.filters @@ -2,7 +2,7 @@ - {e28023ca-b695-47b8-8227-90bbe9e39cd1} + {5a152d65-2cdd-4c3e-b193-25ce7dd29a6e} diff --git a/Net/samples/dict/dict_vs110.vcxproj b/Net/samples/dict/dict_vs110.vcxproj index 5ff5229ae..67dd683ae 100644 --- a/Net/samples/dict/dict_vs110.vcxproj +++ b/Net/samples/dict/dict_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\dict\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\dict\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\dict\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\dict\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\dict\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\dict\$(Configuration)\ false diff --git a/Net/samples/dict/dict_vs110.vcxproj.filters b/Net/samples/dict/dict_vs110.vcxproj.filters index 17a488bb5..1e9185e5e 100644 --- a/Net/samples/dict/dict_vs110.vcxproj.filters +++ b/Net/samples/dict/dict_vs110.vcxproj.filters @@ -2,7 +2,7 @@ - {524fe814-d4c9-4b34-bada-3d6704eca30f} + {4cd31d61-50bb-4db6-9177-d97af74164e6} diff --git a/Net/samples/dict/dict_vs120.vcxproj b/Net/samples/dict/dict_vs120.vcxproj index 0388bcc11..8914c1daf 100644 --- a/Net/samples/dict/dict_vs120.vcxproj +++ b/Net/samples/dict/dict_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\dict\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\dict\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\dict\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\dict\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\dict\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\dict\$(Configuration)\ false diff --git a/Net/samples/dict/dict_vs120.vcxproj.filters b/Net/samples/dict/dict_vs120.vcxproj.filters index 31496c77f..9865bba5c 100644 --- a/Net/samples/dict/dict_vs120.vcxproj.filters +++ b/Net/samples/dict/dict_vs120.vcxproj.filters @@ -2,7 +2,7 @@ - {88d85e3e-879d-485f-9542-89c519ed745a} + {be0e5d69-8361-4e84-9683-a0d3a3c2423b} diff --git a/Net/samples/dict/dict_vs71.vcproj b/Net/samples/dict/dict_vs71.vcproj index 49df72143..53c889806 100644 --- a/Net/samples/dict/dict_vs71.vcproj +++ b/Net/samples/dict/dict_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\dict\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\dict\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\dict\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\dict\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\dict\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\dict\$(Configuration)\ false dictd dictd @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\dictd.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\dictd.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\dictd.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Net/samples/dict/dict_x64_vs100.vcxproj.filters b/Net/samples/dict/dict_x64_vs100.vcxproj.filters index 64679124f..833f2f85b 100644 --- a/Net/samples/dict/dict_x64_vs100.vcxproj.filters +++ b/Net/samples/dict/dict_x64_vs100.vcxproj.filters @@ -2,7 +2,7 @@ - {eb9e9b13-b976-4b8b-93ab-d9bf2561115e} + {e34a724f-fbe7-4aa2-b782-73acdda50944} diff --git a/Net/samples/dict/dict_x64_vs110.vcxproj b/Net/samples/dict/dict_x64_vs110.vcxproj index 5c4414091..ccd006e46 100644 --- a/Net/samples/dict/dict_x64_vs110.vcxproj +++ b/Net/samples/dict/dict_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\dict\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\dict\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\dict\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\dict\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\dict\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\dict\$(Configuration)\ false diff --git a/Net/samples/dict/dict_x64_vs110.vcxproj.filters b/Net/samples/dict/dict_x64_vs110.vcxproj.filters index 02d8cfb7b..462511d6b 100644 --- a/Net/samples/dict/dict_x64_vs110.vcxproj.filters +++ b/Net/samples/dict/dict_x64_vs110.vcxproj.filters @@ -2,7 +2,7 @@ - {81ba0039-a580-4559-b5a3-af87989855da} + {ea8c81ca-3ce4-45a7-9b85-690e59b9fdb8} diff --git a/Net/samples/dict/dict_x64_vs120.vcxproj b/Net/samples/dict/dict_x64_vs120.vcxproj index 217a25410..2866d0887 100644 --- a/Net/samples/dict/dict_x64_vs120.vcxproj +++ b/Net/samples/dict/dict_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\dict\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\dict\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\dict\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\dict\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\dict\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\dict\$(Configuration)\ false diff --git a/Net/samples/dict/dict_x64_vs120.vcxproj.filters b/Net/samples/dict/dict_x64_vs120.vcxproj.filters index d34aa4088..abdb71a3d 100644 --- a/Net/samples/dict/dict_x64_vs120.vcxproj.filters +++ b/Net/samples/dict/dict_x64_vs120.vcxproj.filters @@ -2,7 +2,7 @@ - {193500ff-f590-41b4-b019-dcb45b6854be} + {5a9662ba-9887-4bd6-b97f-5b2de82684a0} diff --git a/Net/samples/dict/dict_x64_vs90.vcproj b/Net/samples/dict/dict_x64_vs90.vcproj index ae01e8e7d..dbbc98641 100644 --- a/Net/samples/dict/dict_x64_vs90.vcproj +++ b/Net/samples/dict/dict_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\download\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\download\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\download\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\download\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\download\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\download\$(Platform)\$(Configuration)\ false diff --git a/Net/samples/download/download_WEC2013_vs110.vcxproj.filters b/Net/samples/download/download_WEC2013_vs110.vcxproj.filters index 4b135320d..7f76ecb63 100644 --- a/Net/samples/download/download_WEC2013_vs110.vcxproj.filters +++ b/Net/samples/download/download_WEC2013_vs110.vcxproj.filters @@ -2,7 +2,7 @@ - {4f2bca9e-13e9-4d18-a114-af69ce317483} + {4944e4db-1087-439d-8366-e81a9d557f6e} diff --git a/Net/samples/download/download_WEC2013_vs120.vcxproj b/Net/samples/download/download_WEC2013_vs120.vcxproj index cacd8f7b3..1ccda7b05 100644 --- a/Net/samples/download/download_WEC2013_vs120.vcxproj +++ b/Net/samples/download/download_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\download\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\download\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\download\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\download\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\download\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\download\$(Platform)\$(Configuration)\ false diff --git a/Net/samples/download/download_WEC2013_vs120.vcxproj.filters b/Net/samples/download/download_WEC2013_vs120.vcxproj.filters index 1592208b5..41da1f86e 100644 --- a/Net/samples/download/download_WEC2013_vs120.vcxproj.filters +++ b/Net/samples/download/download_WEC2013_vs120.vcxproj.filters @@ -2,7 +2,7 @@ - {af22bd43-09e6-4d70-8189-2635943bfaab} + {08b1dcfc-4f6b-406c-b920-edc927eb6b73} diff --git a/Net/samples/download/download_vs100.vcxproj b/Net/samples/download/download_vs100.vcxproj index defab2e1f..8380c610d 100644 --- a/Net/samples/download/download_vs100.vcxproj +++ b/Net/samples/download/download_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\download\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\download\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\download\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\download\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\download\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\download\$(Configuration)\ false downloadd downloadd @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\downloadd.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\downloadd.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\downloadd.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Net/samples/download/download_vs100.vcxproj.filters b/Net/samples/download/download_vs100.vcxproj.filters index d0afd687d..a0e16aea0 100644 --- a/Net/samples/download/download_vs100.vcxproj.filters +++ b/Net/samples/download/download_vs100.vcxproj.filters @@ -2,7 +2,7 @@ - {f0f39a2a-9e9c-4fbc-879b-5d2fbe251901} + {00466f0c-85f9-4b9b-a1fc-c65278c19536} diff --git a/Net/samples/download/download_vs110.vcxproj b/Net/samples/download/download_vs110.vcxproj index 0d5c7f846..8b657ce1c 100644 --- a/Net/samples/download/download_vs110.vcxproj +++ b/Net/samples/download/download_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\download\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\download\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\download\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\download\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\download\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\download\$(Configuration)\ false diff --git a/Net/samples/download/download_vs110.vcxproj.filters b/Net/samples/download/download_vs110.vcxproj.filters index 486692062..e1bb22da6 100644 --- a/Net/samples/download/download_vs110.vcxproj.filters +++ b/Net/samples/download/download_vs110.vcxproj.filters @@ -2,7 +2,7 @@ - {a1ed6e63-140b-4a1a-9342-65a422a8ffca} + {dc9ef0e6-0bf6-4a26-90be-3bd7e7c69231} diff --git a/Net/samples/download/download_vs120.vcxproj b/Net/samples/download/download_vs120.vcxproj index ff4618989..233c64519 100644 --- a/Net/samples/download/download_vs120.vcxproj +++ b/Net/samples/download/download_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\download\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\download\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\download\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\download\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\download\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\download\$(Configuration)\ false diff --git a/Net/samples/download/download_vs120.vcxproj.filters b/Net/samples/download/download_vs120.vcxproj.filters index 417eb4a68..edc96d1f4 100644 --- a/Net/samples/download/download_vs120.vcxproj.filters +++ b/Net/samples/download/download_vs120.vcxproj.filters @@ -2,7 +2,7 @@ - {f42bbdab-fe0a-45fc-b8a7-bfe35719e17c} + {f6f027ed-ac25-4bea-9034-867d1a3b4916} diff --git a/Net/samples/download/download_vs71.vcproj b/Net/samples/download/download_vs71.vcproj index e2d3c37d9..22e65e115 100644 --- a/Net/samples/download/download_vs71.vcproj +++ b/Net/samples/download/download_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\download\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\download\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\download\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\download\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\download\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\download\$(Configuration)\ false downloadd downloadd @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\downloadd.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\downloadd.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\downloadd.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Net/samples/download/download_x64_vs100.vcxproj.filters b/Net/samples/download/download_x64_vs100.vcxproj.filters index c1373339c..180ba652a 100644 --- a/Net/samples/download/download_x64_vs100.vcxproj.filters +++ b/Net/samples/download/download_x64_vs100.vcxproj.filters @@ -2,7 +2,7 @@ - {60418249-53be-415c-ba3d-f65d02d38276} + {10da1420-a4ef-40dd-a657-1ed1b4e9be11} diff --git a/Net/samples/download/download_x64_vs110.vcxproj b/Net/samples/download/download_x64_vs110.vcxproj index 40e42be4a..a850d8a5e 100644 --- a/Net/samples/download/download_x64_vs110.vcxproj +++ b/Net/samples/download/download_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\download\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\download\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\download\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\download\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\download\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\download\$(Configuration)\ false diff --git a/Net/samples/download/download_x64_vs110.vcxproj.filters b/Net/samples/download/download_x64_vs110.vcxproj.filters index a4a04c085..2afb6a01f 100644 --- a/Net/samples/download/download_x64_vs110.vcxproj.filters +++ b/Net/samples/download/download_x64_vs110.vcxproj.filters @@ -2,7 +2,7 @@ - {58be2dfb-cbee-4496-b20e-df3949bc7460} + {0bd58868-1221-4bed-8ce8-b86e7863dd6f} diff --git a/Net/samples/download/download_x64_vs120.vcxproj b/Net/samples/download/download_x64_vs120.vcxproj index a7c929cdd..f4311e6c7 100644 --- a/Net/samples/download/download_x64_vs120.vcxproj +++ b/Net/samples/download/download_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\download\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\download\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\download\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\download\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\download\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\download\$(Configuration)\ false diff --git a/Net/samples/download/download_x64_vs120.vcxproj.filters b/Net/samples/download/download_x64_vs120.vcxproj.filters index 05afc3a5c..23d0d4a2a 100644 --- a/Net/samples/download/download_x64_vs120.vcxproj.filters +++ b/Net/samples/download/download_x64_vs120.vcxproj.filters @@ -2,7 +2,7 @@ - {d06a354c-73b6-46c8-b3a2-2006ee588a7e} + {a3c39dc0-088c-46fd-899d-5bfcfa14c7d1} diff --git a/Net/samples/download/download_x64_vs90.vcproj b/Net/samples/download/download_x64_vs90.vcproj index dc0cfb9b8..d797b87d3 100644 --- a/Net/samples/download/download_x64_vs90.vcproj +++ b/Net/samples/download/download_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\httpget\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\httpget\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\httpget\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\httpget\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\httpget\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\httpget\$(Platform)\$(Configuration)\ false diff --git a/Net/samples/httpget/httpget_WEC2013_vs110.vcxproj.filters b/Net/samples/httpget/httpget_WEC2013_vs110.vcxproj.filters index ced6edbe6..b2c6edfb2 100644 --- a/Net/samples/httpget/httpget_WEC2013_vs110.vcxproj.filters +++ b/Net/samples/httpget/httpget_WEC2013_vs110.vcxproj.filters @@ -2,7 +2,7 @@ - {7a0b8766-7a49-4db3-87d8-18200ed94a30} + {629435b5-0327-4524-9acb-0e2292303f5b} diff --git a/Net/samples/httpget/httpget_WEC2013_vs120.vcxproj b/Net/samples/httpget/httpget_WEC2013_vs120.vcxproj index 66381aafe..9e047eb7d 100644 --- a/Net/samples/httpget/httpget_WEC2013_vs120.vcxproj +++ b/Net/samples/httpget/httpget_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\httpget\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\httpget\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\httpget\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\httpget\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\httpget\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\httpget\$(Platform)\$(Configuration)\ false diff --git a/Net/samples/httpget/httpget_WEC2013_vs120.vcxproj.filters b/Net/samples/httpget/httpget_WEC2013_vs120.vcxproj.filters index dea73e97f..477076d5a 100644 --- a/Net/samples/httpget/httpget_WEC2013_vs120.vcxproj.filters +++ b/Net/samples/httpget/httpget_WEC2013_vs120.vcxproj.filters @@ -2,7 +2,7 @@ - {4c6e9e97-49ed-4268-a877-72afc361365e} + {18974a4e-73bb-4d2d-8d43-a894906c45d9} diff --git a/Net/samples/httpget/httpget_vs100.vcxproj b/Net/samples/httpget/httpget_vs100.vcxproj index 954abeab1..b0e03663c 100644 --- a/Net/samples/httpget/httpget_vs100.vcxproj +++ b/Net/samples/httpget/httpget_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\httpget\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\httpget\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\httpget\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\httpget\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\httpget\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\httpget\$(Configuration)\ false httpgetd httpgetd @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\httpgetd.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\httpgetd.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\httpgetd.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Net/samples/httpget/httpget_vs100.vcxproj.filters b/Net/samples/httpget/httpget_vs100.vcxproj.filters index 3a443edde..af5bb9faf 100644 --- a/Net/samples/httpget/httpget_vs100.vcxproj.filters +++ b/Net/samples/httpget/httpget_vs100.vcxproj.filters @@ -2,7 +2,7 @@ - {8932d7f0-a75f-441a-82c4-e9f530fba44b} + {129317b1-4855-4d88-ba2a-1faf70a6b293} diff --git a/Net/samples/httpget/httpget_vs110.vcxproj b/Net/samples/httpget/httpget_vs110.vcxproj index 8845adafc..1acb75e9b 100644 --- a/Net/samples/httpget/httpget_vs110.vcxproj +++ b/Net/samples/httpget/httpget_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\httpget\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\httpget\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\httpget\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\httpget\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\httpget\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\httpget\$(Configuration)\ false diff --git a/Net/samples/httpget/httpget_vs110.vcxproj.filters b/Net/samples/httpget/httpget_vs110.vcxproj.filters index 9ce4ff18a..5a928b32f 100644 --- a/Net/samples/httpget/httpget_vs110.vcxproj.filters +++ b/Net/samples/httpget/httpget_vs110.vcxproj.filters @@ -2,7 +2,7 @@ - {f1fec6b9-fbe7-4e77-96bf-fac5f2d40c4f} + {b03eb989-b28c-4c2b-8dc6-efbc5d31ea5d} diff --git a/Net/samples/httpget/httpget_vs120.vcxproj b/Net/samples/httpget/httpget_vs120.vcxproj index e832b1d7b..4aef68626 100644 --- a/Net/samples/httpget/httpget_vs120.vcxproj +++ b/Net/samples/httpget/httpget_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\httpget\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\httpget\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\httpget\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\httpget\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\httpget\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\httpget\$(Configuration)\ false diff --git a/Net/samples/httpget/httpget_vs120.vcxproj.filters b/Net/samples/httpget/httpget_vs120.vcxproj.filters index d34a1eeac..4ef811ee6 100644 --- a/Net/samples/httpget/httpget_vs120.vcxproj.filters +++ b/Net/samples/httpget/httpget_vs120.vcxproj.filters @@ -2,7 +2,7 @@ - {a15eb87f-da85-409f-adeb-bdec6cb935db} + {365ff2b7-fc3b-4227-bf15-df86d3e5e6f7} diff --git a/Net/samples/httpget/httpget_vs71.vcproj b/Net/samples/httpget/httpget_vs71.vcproj index 07e61264f..69bfd8c28 100644 --- a/Net/samples/httpget/httpget_vs71.vcproj +++ b/Net/samples/httpget/httpget_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\httpget\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\httpget\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\httpget\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\httpget\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\httpget\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\httpget\$(Configuration)\ false httpgetd httpgetd @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\httpgetd.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\httpgetd.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\httpgetd.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Net/samples/httpget/httpget_x64_vs100.vcxproj.filters b/Net/samples/httpget/httpget_x64_vs100.vcxproj.filters index 6de1296a4..49239db0b 100644 --- a/Net/samples/httpget/httpget_x64_vs100.vcxproj.filters +++ b/Net/samples/httpget/httpget_x64_vs100.vcxproj.filters @@ -2,7 +2,7 @@ - {495633af-d0f4-49b0-9e21-69941aefd729} + {88f7de05-54f5-432f-8bc8-858932615c76} diff --git a/Net/samples/httpget/httpget_x64_vs110.vcxproj b/Net/samples/httpget/httpget_x64_vs110.vcxproj index f31033fbc..2e3d3f75d 100644 --- a/Net/samples/httpget/httpget_x64_vs110.vcxproj +++ b/Net/samples/httpget/httpget_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\httpget\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\httpget\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\httpget\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\httpget\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\httpget\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\httpget\$(Configuration)\ false diff --git a/Net/samples/httpget/httpget_x64_vs110.vcxproj.filters b/Net/samples/httpget/httpget_x64_vs110.vcxproj.filters index d6f784d4a..b8acc4708 100644 --- a/Net/samples/httpget/httpget_x64_vs110.vcxproj.filters +++ b/Net/samples/httpget/httpget_x64_vs110.vcxproj.filters @@ -2,7 +2,7 @@ - {bd5c24d0-7205-4c96-8382-d9b3ef6ea82c} + {c901bc15-2f6f-43ca-875f-acc388520cb1} diff --git a/Net/samples/httpget/httpget_x64_vs120.vcxproj b/Net/samples/httpget/httpget_x64_vs120.vcxproj index 925d10923..7e51c0bba 100644 --- a/Net/samples/httpget/httpget_x64_vs120.vcxproj +++ b/Net/samples/httpget/httpget_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\httpget\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\httpget\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\httpget\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\httpget\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\httpget\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\httpget\$(Configuration)\ false diff --git a/Net/samples/httpget/httpget_x64_vs120.vcxproj.filters b/Net/samples/httpget/httpget_x64_vs120.vcxproj.filters index d27131f6b..fbe4e8ce5 100644 --- a/Net/samples/httpget/httpget_x64_vs120.vcxproj.filters +++ b/Net/samples/httpget/httpget_x64_vs120.vcxproj.filters @@ -2,7 +2,7 @@ - {115ad6de-2e66-4100-a1a8-9babd3475013} + {505d9e70-f25d-4cfa-8973-1183b071479c} diff --git a/Net/samples/httpget/httpget_x64_vs90.vcproj b/Net/samples/httpget/httpget_x64_vs90.vcproj index 13c55bac0..86bb3f750 100644 --- a/Net/samples/httpget/httpget_x64_vs90.vcproj +++ b/Net/samples/httpget/httpget_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> @@ -46,7 +46,8 @@ CompileAs="0" DisableSpecificWarnings="4800;" CompileForArchitecture="2" - InterworkCalls="false"/> + InterworkCalls="false" + AdditionalOptions=""/> @@ -118,7 +119,8 @@ CompileAs="0" DisableSpecificWarnings="4800;" CompileForArchitecture="2" - InterworkCalls="false"/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> @@ -266,7 +269,8 @@ CompileAs="0" DisableSpecificWarnings="4800" CompileForArchitecture="2" - InterworkCalls="false"/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> @@ -414,7 +419,8 @@ CompileAs="0" DisableSpecificWarnings="4800" CompileForArchitecture="2" - InterworkCalls="false"/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\ifconfig\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\ifconfig\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\ifconfig\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\ifconfig\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\ifconfig\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\ifconfig\$(Platform)\$(Configuration)\ false diff --git a/Net/samples/ifconfig/ifconfig_WEC2013_vs110.vcxproj.filters b/Net/samples/ifconfig/ifconfig_WEC2013_vs110.vcxproj.filters index 2f6b6249d..8f0bf37ce 100644 --- a/Net/samples/ifconfig/ifconfig_WEC2013_vs110.vcxproj.filters +++ b/Net/samples/ifconfig/ifconfig_WEC2013_vs110.vcxproj.filters @@ -2,7 +2,7 @@ - {4e5fdb6d-b814-468e-aed3-6541b69a8848} + {26872efc-f3b2-4a05-94cc-a5be0aa84950} diff --git a/Net/samples/ifconfig/ifconfig_WEC2013_vs120.vcxproj b/Net/samples/ifconfig/ifconfig_WEC2013_vs120.vcxproj index 5e9d43c58..23cf4d618 100644 --- a/Net/samples/ifconfig/ifconfig_WEC2013_vs120.vcxproj +++ b/Net/samples/ifconfig/ifconfig_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\ifconfig\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\ifconfig\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\ifconfig\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\ifconfig\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\ifconfig\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\ifconfig\$(Platform)\$(Configuration)\ false diff --git a/Net/samples/ifconfig/ifconfig_WEC2013_vs120.vcxproj.filters b/Net/samples/ifconfig/ifconfig_WEC2013_vs120.vcxproj.filters index e5a3281ef..cf8cc0481 100644 --- a/Net/samples/ifconfig/ifconfig_WEC2013_vs120.vcxproj.filters +++ b/Net/samples/ifconfig/ifconfig_WEC2013_vs120.vcxproj.filters @@ -2,7 +2,7 @@ - {f1427275-1141-4f01-ae26-147e4e887a4f} + {8b2921a8-6562-4d9d-8524-b8404a6ed56a} diff --git a/Net/samples/ifconfig/ifconfig_vs100.vcxproj b/Net/samples/ifconfig/ifconfig_vs100.vcxproj index 52b9b2bbf..1f92f1fe1 100644 --- a/Net/samples/ifconfig/ifconfig_vs100.vcxproj +++ b/Net/samples/ifconfig/ifconfig_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\ifconfig\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\ifconfig\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\ifconfig\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\ifconfig\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\ifconfig\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\ifconfig\$(Configuration)\ false ifconfigd ifconfigd @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\ifconfigd.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\ifconfigd.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\ifconfigd.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Net/samples/ifconfig/ifconfig_vs100.vcxproj.filters b/Net/samples/ifconfig/ifconfig_vs100.vcxproj.filters index 674d01216..dfc2f35eb 100644 --- a/Net/samples/ifconfig/ifconfig_vs100.vcxproj.filters +++ b/Net/samples/ifconfig/ifconfig_vs100.vcxproj.filters @@ -2,7 +2,7 @@ - {9372a30a-38b8-46e6-aca7-499b59663538} + {d0867478-bf89-4626-b0f2-a977b80b9a29} diff --git a/Net/samples/ifconfig/ifconfig_vs110.vcxproj b/Net/samples/ifconfig/ifconfig_vs110.vcxproj index 40e81d210..e068dad19 100644 --- a/Net/samples/ifconfig/ifconfig_vs110.vcxproj +++ b/Net/samples/ifconfig/ifconfig_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\ifconfig\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\ifconfig\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\ifconfig\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\ifconfig\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\ifconfig\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\ifconfig\$(Configuration)\ false diff --git a/Net/samples/ifconfig/ifconfig_vs110.vcxproj.filters b/Net/samples/ifconfig/ifconfig_vs110.vcxproj.filters index 50633f0ce..776942cc7 100644 --- a/Net/samples/ifconfig/ifconfig_vs110.vcxproj.filters +++ b/Net/samples/ifconfig/ifconfig_vs110.vcxproj.filters @@ -2,7 +2,7 @@ - {f75b5556-9c2d-4648-8a05-3cab075c9588} + {f6da86ac-5442-4a73-bbc7-2ef1cae91fed} diff --git a/Net/samples/ifconfig/ifconfig_vs120.vcxproj b/Net/samples/ifconfig/ifconfig_vs120.vcxproj index 90c3ca011..ba37d014c 100644 --- a/Net/samples/ifconfig/ifconfig_vs120.vcxproj +++ b/Net/samples/ifconfig/ifconfig_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\ifconfig\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\ifconfig\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\ifconfig\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\ifconfig\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\ifconfig\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\ifconfig\$(Configuration)\ false diff --git a/Net/samples/ifconfig/ifconfig_vs120.vcxproj.filters b/Net/samples/ifconfig/ifconfig_vs120.vcxproj.filters index f68b87a72..a82045b76 100644 --- a/Net/samples/ifconfig/ifconfig_vs120.vcxproj.filters +++ b/Net/samples/ifconfig/ifconfig_vs120.vcxproj.filters @@ -2,7 +2,7 @@ - {5a5e2d59-5602-4724-be9b-1ee2a3ed7b7e} + {61670767-6b93-4e25-960d-e14973fa8212} diff --git a/Net/samples/ifconfig/ifconfig_vs71.vcproj b/Net/samples/ifconfig/ifconfig_vs71.vcproj index 2322219f6..8d33b0ccc 100644 --- a/Net/samples/ifconfig/ifconfig_vs71.vcproj +++ b/Net/samples/ifconfig/ifconfig_vs71.vcproj @@ -3,7 +3,7 @@ Name="ifconfig" Version="7.10" ProjectType="Visual C++" - ProjectGUID="{D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}" + ProjectGUID="{BD3A18C6-22B6-3B10-913B-7A84D1845CA3}" RootNamespace="ifconfig" Keyword="Win32Proj"> @@ -36,19 +36,21 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="4" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="4" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\ifconfig\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\ifconfig\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\ifconfig\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\ifconfig\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\ifconfig\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\ifconfig\$(Configuration)\ false ifconfigd ifconfigd @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\ifconfigd.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\ifconfigd.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\ifconfigd.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Net/samples/ifconfig/ifconfig_x64_vs100.vcxproj.filters b/Net/samples/ifconfig/ifconfig_x64_vs100.vcxproj.filters index 2098ffd0e..ab8071434 100644 --- a/Net/samples/ifconfig/ifconfig_x64_vs100.vcxproj.filters +++ b/Net/samples/ifconfig/ifconfig_x64_vs100.vcxproj.filters @@ -2,7 +2,7 @@ - {7e844382-d130-4d74-b17e-799841244de8} + {ce149ef1-7c24-434b-b5e0-c8ce8c94343a} diff --git a/Net/samples/ifconfig/ifconfig_x64_vs110.vcxproj b/Net/samples/ifconfig/ifconfig_x64_vs110.vcxproj index 476965f95..56bf5568b 100644 --- a/Net/samples/ifconfig/ifconfig_x64_vs110.vcxproj +++ b/Net/samples/ifconfig/ifconfig_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\ifconfig\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\ifconfig\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\ifconfig\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\ifconfig\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\ifconfig\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\ifconfig\$(Configuration)\ false diff --git a/Net/samples/ifconfig/ifconfig_x64_vs110.vcxproj.filters b/Net/samples/ifconfig/ifconfig_x64_vs110.vcxproj.filters index 0ca8f5be8..87597cde4 100644 --- a/Net/samples/ifconfig/ifconfig_x64_vs110.vcxproj.filters +++ b/Net/samples/ifconfig/ifconfig_x64_vs110.vcxproj.filters @@ -2,7 +2,7 @@ - {9019c2fa-1e16-436d-92a0-a7f2c2d0cd52} + {69cbc90c-2622-4eec-b219-8f2ba0855ad5} diff --git a/Net/samples/ifconfig/ifconfig_x64_vs120.vcxproj b/Net/samples/ifconfig/ifconfig_x64_vs120.vcxproj index a4c2ede9f..4301d2b54 100644 --- a/Net/samples/ifconfig/ifconfig_x64_vs120.vcxproj +++ b/Net/samples/ifconfig/ifconfig_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\ifconfig\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\ifconfig\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\ifconfig\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\ifconfig\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\ifconfig\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\ifconfig\$(Configuration)\ false diff --git a/Net/samples/ifconfig/ifconfig_x64_vs120.vcxproj.filters b/Net/samples/ifconfig/ifconfig_x64_vs120.vcxproj.filters index 440a7e909..f3a54321b 100644 --- a/Net/samples/ifconfig/ifconfig_x64_vs120.vcxproj.filters +++ b/Net/samples/ifconfig/ifconfig_x64_vs120.vcxproj.filters @@ -2,7 +2,7 @@ - {24cec580-e870-4c5c-a7e9-030bad585fd4} + {f8544c46-c377-4b14-8d4e-d64a4749dc7d} diff --git a/Net/samples/ifconfig/ifconfig_x64_vs90.vcproj b/Net/samples/ifconfig/ifconfig_x64_vs90.vcproj index 275624ce9..d27328ecf 100644 --- a/Net/samples/ifconfig/ifconfig_x64_vs90.vcproj +++ b/Net/samples/ifconfig/ifconfig_x64_vs90.vcproj @@ -3,7 +3,7 @@ Name="ifconfig" Version="9.00" ProjectType="Visual C++" - ProjectGUID="{D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}" + ProjectGUID="{BD3A18C6-22B6-3B10-913B-7A84D1845CA3}" RootNamespace="ifconfig" Keyword="Win32Proj"> @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> setReceiveTimeout(_timeout); - } +} FTPClientSession::~FTPClientSession() +{ + try { - try { close(); } - catch (...) { } + close(); + } + catch (...) + { + } } @@ -126,7 +131,9 @@ void FTPClientSession::open(const std::string& host, _host = host; _port = port; if (!username.empty()) + { login(username, password); + } else { _pControlSocket = new DialogSocket(SocketAddress(_host, _port)); @@ -168,12 +175,12 @@ void FTPClientSession::login(const std::string& username, const std::string& pas void FTPClientSession::logout() - { +{ if (!isOpen()) throw FTPException("Connection is closed."); if (_isLoggedIn) - { + { try { endTransfer(); } catch (...) { } std::string response; diff --git a/Net/src/HTMLForm.cpp b/Net/src/HTMLForm.cpp index 7b9e4f008..92943092d 100644 --- a/Net/src/HTMLForm.cpp +++ b/Net/src/HTMLForm.cpp @@ -400,7 +400,7 @@ void HTMLForm::writeMultipart(std::ostream& ostr) // count only, don't move stream position std::streamsize partlen = ita->pSource->getContentLength(); if (partlen != PartSource::UNKNOWN_CONTENT_LENGTH) - costr->addChars(partlen); + costr->addChars(static_cast(partlen)); else costr->setIsValid(false); } diff --git a/Net/src/HTTPChunkedStream.cpp b/Net/src/HTTPChunkedStream.cpp index 55b334d8c..8c0b0ff48 100644 --- a/Net/src/HTTPChunkedStream.cpp +++ b/Net/src/HTTPChunkedStream.cpp @@ -161,7 +161,14 @@ void* HTTPChunkedInputStream::operator new(std::size_t size) void HTTPChunkedInputStream::operator delete(void* ptr) { - _pool.release(ptr); + try + { + _pool.release(ptr); + } + catch (...) + { + poco_unexpected(); + } } @@ -193,7 +200,14 @@ void* HTTPChunkedOutputStream::operator new(std::size_t size) void HTTPChunkedOutputStream::operator delete(void* ptr) { - _pool.release(ptr); + try + { + _pool.release(ptr); + } + catch (...) + { + poco_unexpected(); + } } diff --git a/Net/src/HTTPClientSession.cpp b/Net/src/HTTPClientSession.cpp index d9ebe481c..5e4d28d07 100644 --- a/Net/src/HTTPClientSession.cpp +++ b/Net/src/HTTPClientSession.cpp @@ -163,6 +163,7 @@ void HTTPClientSession::setKeepAliveTimeout(const Poco::Timespan& timeout) std::ostream& HTTPClientSession::sendRequest(HTTPRequest& request) { + clearException(); _pResponseStream = 0; bool keepAlive = getKeepAlive(); @@ -229,6 +230,7 @@ std::ostream& HTTPClientSession::sendRequest(HTTPRequest& request) std::istream& HTTPClientSession::receiveResponse(HTTPResponse& response) { _pRequestStream = 0; + if (networkException()) networkException()->rethrow(); do { diff --git a/Net/src/HTTPFixedLengthStream.cpp b/Net/src/HTTPFixedLengthStream.cpp index a1a586363..e00d3011b 100644 --- a/Net/src/HTTPFixedLengthStream.cpp +++ b/Net/src/HTTPFixedLengthStream.cpp @@ -130,7 +130,14 @@ void* HTTPFixedLengthInputStream::operator new(std::size_t size) void HTTPFixedLengthInputStream::operator delete(void* ptr) { - _pool.release(ptr); + try + { + _pool.release(ptr); + } + catch (...) + { + poco_unexpected(); + } } @@ -162,7 +169,14 @@ void* HTTPFixedLengthOutputStream::operator new(std::size_t size) void HTTPFixedLengthOutputStream::operator delete(void* ptr) { - _pool.release(ptr); + try + { + _pool.release(ptr); + } + catch (...) + { + poco_unexpected(); + } } diff --git a/Net/src/HTTPHeaderStream.cpp b/Net/src/HTTPHeaderStream.cpp index 45b06bd14..c72994377 100644 --- a/Net/src/HTTPHeaderStream.cpp +++ b/Net/src/HTTPHeaderStream.cpp @@ -127,7 +127,14 @@ void* HTTPHeaderInputStream::operator new(std::size_t size) void HTTPHeaderInputStream::operator delete(void* ptr) { - _pool.release(ptr); + try + { + _pool.release(ptr); + } + catch (...) + { + poco_unexpected(); + } } @@ -159,7 +166,14 @@ void* HTTPHeaderOutputStream::operator new(std::size_t size) void HTTPHeaderOutputStream::operator delete(void* ptr) { - _pool.release(ptr); + try + { + _pool.release(ptr); + } + catch (...) + { + poco_unexpected(); + } } diff --git a/Net/src/HTTPRequest.cpp b/Net/src/HTTPRequest.cpp index cab75c8c6..ac568f94c 100644 --- a/Net/src/HTTPRequest.cpp +++ b/Net/src/HTTPRequest.cpp @@ -209,6 +209,8 @@ void HTTPRequest::read(std::istream& istr) uri.reserve(64); version.reserve(16); int ch = istr.get(); + if (istr.bad()) throw NetException("Network failure while reading HTTP request header"); + if (istr.bad()) throw NetException("Error reading HTTP request header"); if (ch == eof) throw NoMessageException(); while (Poco::Ascii::isSpace(ch)) ch = istr.get(); if (ch == eof) throw MessageException("No HTTP request header"); diff --git a/Net/src/HTTPServerConnection.cpp b/Net/src/HTTPServerConnection.cpp index 30d65d292..970e881c5 100644 --- a/Net/src/HTTPServerConnection.cpp +++ b/Net/src/HTTPServerConnection.cpp @@ -45,7 +45,14 @@ HTTPServerConnection::HTTPServerConnection(const StreamSocket& socket, HTTPServe HTTPServerConnection::~HTTPServerConnection() { - _pFactory->serverStopped -= Poco::delegate(this, &HTTPServerConnection::onServerStopped); + try + { + _pFactory->serverStopped -= Poco::delegate(this, &HTTPServerConnection::onServerStopped); + } + catch (...) + { + poco_unexpected(); + } } @@ -106,6 +113,14 @@ void HTTPServerConnection::run() { sendErrorResponse(session, HTTPResponse::HTTP_BAD_REQUEST); } + catch (Poco::Exception&) + { + if (session.networkException()) + { + session.networkException()->rethrow(); + } + else throw; + } } } diff --git a/Net/src/HTTPSession.cpp b/Net/src/HTTPSession.cpp index c38d8d038..030ec7246 100644 --- a/Net/src/HTTPSession.cpp +++ b/Net/src/HTTPSession.cpp @@ -64,7 +64,14 @@ HTTPSession::HTTPSession(const StreamSocket& socket, bool keepAlive): HTTPSession::~HTTPSession() { - if (_pBuffer) HTTPBufferAllocator::deallocate(_pBuffer, HTTPBufferAllocator::BUFFER_SIZE); + try + { + if (_pBuffer) HTTPBufferAllocator::deallocate(_pBuffer, HTTPBufferAllocator::BUFFER_SIZE); + } + catch (...) + { + poco_unexpected(); + } try { close(); @@ -203,6 +210,13 @@ void HTTPSession::setException(const Poco::Exception& exc) } +void HTTPSession::clearException() +{ + delete _pException; + _pException = 0; +} + + StreamSocket HTTPSession::detachSocket() { StreamSocket oldSocket(_socket); diff --git a/Net/src/HTTPStream.cpp b/Net/src/HTTPStream.cpp index 10c79acf0..55a106683 100644 --- a/Net/src/HTTPStream.cpp +++ b/Net/src/HTTPStream.cpp @@ -121,7 +121,14 @@ void* HTTPInputStream::operator new(std::size_t size) void HTTPInputStream::operator delete(void* ptr) { - _pool.release(ptr); + try + { + _pool.release(ptr); + } + catch (...) + { + poco_unexpected(); + } } @@ -153,7 +160,14 @@ void* HTTPOutputStream::operator new(std::size_t size) void HTTPOutputStream::operator delete(void* ptr) { - _pool.release(ptr); + try + { + _pool.release(ptr); + } + catch (...) + { + poco_unexpected(); + } } diff --git a/Net/src/IPAddress.cpp b/Net/src/IPAddress.cpp index 9a856b97f..30e509002 100644 --- a/Net/src/IPAddress.cpp +++ b/Net/src/IPAddress.cpp @@ -97,7 +97,7 @@ IPAddress::IPAddress(const std::string& addr) IPv6AddressImpl addr6(IPv6AddressImpl::parse(addr)); if (addr6 != IPv6AddressImpl()) { - newIPv6(addr6.addr()); + newIPv6(addr6.addr(), addr6.scope()); return; } #endif @@ -159,16 +159,19 @@ IPAddress::IPAddress(unsigned prefix, Family family) { if (prefix <= 32) newIPv4(prefix); + else + throw Poco::InvalidArgumentException("Invalid prefix length passed to IPAddress()"); } #if defined(POCO_HAVE_IPv6) else if (family == IPv6) { if (prefix <= 128) newIPv6(prefix); + else + throw Poco::InvalidArgumentException("Invalid prefix length passed to IPAddress()"); } #endif else throw Poco::InvalidArgumentException("Invalid or unsupported address family passed to IPAddress()"); - if (!pImpl()) throw Poco::InvalidArgumentException("Invalid prefix length passed to IPAddress()"); } diff --git a/Net/src/IPAddressImpl.cpp b/Net/src/IPAddressImpl.cpp index d0a293687..b237711b5 100644 --- a/Net/src/IPAddressImpl.cpp +++ b/Net/src/IPAddressImpl.cpp @@ -56,6 +56,7 @@ namespace Poco { namespace Net { namespace Impl { + // // IPAddressImpl // @@ -75,6 +76,7 @@ IPAddressImpl::~IPAddressImpl() // IPv4AddressImpl // + IPv4AddressImpl::IPv4AddressImpl() { std::memset(&_addr, 0, sizeof(_addr)); @@ -348,11 +350,13 @@ IPv6AddressImpl::IPv6AddressImpl(): _scope(0) std::memset(&_addr, 0, sizeof(_addr)); } + IPv6AddressImpl::IPv6AddressImpl(const void* addr): _scope(0) { std::memcpy(&_addr, addr, sizeof(_addr)); } + IPv6AddressImpl::IPv6AddressImpl(const void* addr, Poco::UInt32 scope): _scope(scope) { std::memcpy(&_addr, addr, sizeof(_addr)); @@ -396,10 +400,11 @@ IPv6AddressImpl::IPv6AddressImpl(unsigned prefix): #endif } + std::string IPv6AddressImpl::toString() const { const UInt16* words = reinterpret_cast(&_addr); - if (isIPv4Compatible() || isIPv4Mapped()) + if ((isIPv4Compatible() && !isLoopback()) || isIPv4Mapped()) { std::string result; result.reserve(24); @@ -460,26 +465,31 @@ std::string IPv6AddressImpl::toString() const } } + poco_socklen_t IPv6AddressImpl::length() const { return sizeof(_addr); } + const void* IPv6AddressImpl::addr() const { return &_addr; } + IPAddressImpl::Family IPv6AddressImpl::family() const { return IPAddressImpl::IPv6; } + int IPv6AddressImpl::af() const { return AF_INET6; } + unsigned IPv6AddressImpl::prefixLength() const { unsigned bits = 0; @@ -510,6 +520,7 @@ Poco::UInt32 IPv6AddressImpl::scope() const return _scope; } + bool IPv6AddressImpl::isWildcard() const { const UInt16* words = reinterpret_cast(&_addr); @@ -517,11 +528,13 @@ bool IPv6AddressImpl::isWildcard() const words[4] == 0 && words[5] == 0 && words[6] == 0 && words[7] == 0; } + bool IPv6AddressImpl::isBroadcast() const { return false; } + bool IPv6AddressImpl::isLoopback() const { const UInt16* words = reinterpret_cast(&_addr); @@ -529,72 +542,84 @@ bool IPv6AddressImpl::isLoopback() const words[4] == 0 && words[5] == 0 && words[6] == 0 && ntohs(words[7]) == 0x0001; } + bool IPv6AddressImpl::isMulticast() const { const UInt16* words = reinterpret_cast(&_addr); return (ntohs(words[0]) & 0xFFE0) == 0xFF00; } - + + bool IPv6AddressImpl::isLinkLocal() const { const UInt16* words = reinterpret_cast(&_addr); return (ntohs(words[0]) & 0xFFE0) == 0xFE80; } + bool IPv6AddressImpl::isSiteLocal() const { const UInt16* words = reinterpret_cast(&_addr); return ((ntohs(words[0]) & 0xFFE0) == 0xFEC0) || ((ntohs(words[0]) & 0xFF00) == 0xFC00); } + bool IPv6AddressImpl::isIPv4Compatible() const { const UInt16* words = reinterpret_cast(&_addr); return words[0] == 0 && words[1] == 0 && words[2] == 0 && words[3] == 0 && words[4] == 0 && words[5] == 0; } + bool IPv6AddressImpl::isIPv4Mapped() const { const UInt16* words = reinterpret_cast(&_addr); return words[0] == 0 && words[1] == 0 && words[2] == 0 && words[3] == 0 && words[4] == 0 && ntohs(words[5]) == 0xFFFF; } + bool IPv6AddressImpl::isWellKnownMC() const { const UInt16* words = reinterpret_cast(&_addr); return (ntohs(words[0]) & 0xFFF0) == 0xFF00; } + bool IPv6AddressImpl::isNodeLocalMC() const { const UInt16* words = reinterpret_cast(&_addr); return (ntohs(words[0]) & 0xFFEF) == 0xFF01; } + bool IPv6AddressImpl::isLinkLocalMC() const { const UInt16* words = reinterpret_cast(&_addr); return (ntohs(words[0]) & 0xFFEF) == 0xFF02; } + bool IPv6AddressImpl::isSiteLocalMC() const { const UInt16* words = reinterpret_cast(&_addr); return (ntohs(words[0]) & 0xFFEF) == 0xFF05; } + bool IPv6AddressImpl::isOrgLocalMC() const { const UInt16* words = reinterpret_cast(&_addr); return (ntohs(words[0]) & 0xFFEF) == 0xFF08; } + bool IPv6AddressImpl::isGlobalMC() const { const UInt16* words = reinterpret_cast(&_addr); return (ntohs(words[0]) & 0xFFEF) == 0xFF0F; } + IPv6AddressImpl IPv6AddressImpl::parse(const std::string& addr) { if (addr.empty()) return IPv6AddressImpl(); @@ -637,16 +662,19 @@ IPv6AddressImpl IPv6AddressImpl::parse(const std::string& addr) #endif } + void IPv6AddressImpl::mask(const IPAddressImpl* pMask, const IPAddressImpl* pSet) { throw Poco::NotImplementedException("mask() is only supported for IPv4 addresses"); } + IPAddressImpl* IPv6AddressImpl::clone() const { return new IPv6AddressImpl(&_addr, _scope); } + IPv6AddressImpl IPv6AddressImpl::operator & (const IPv6AddressImpl& addr) const { IPv6AddressImpl result(&_addr); @@ -668,6 +696,7 @@ IPv6AddressImpl IPv6AddressImpl::operator & (const IPv6AddressImpl& addr) const return result; } + IPv6AddressImpl IPv6AddressImpl::operator | (const IPv6AddressImpl& addr) const { IPv6AddressImpl result(&_addr); @@ -689,6 +718,7 @@ IPv6AddressImpl IPv6AddressImpl::operator | (const IPv6AddressImpl& addr) const return result; } + IPv6AddressImpl IPv6AddressImpl::operator ^ (const IPv6AddressImpl& addr) const { IPv6AddressImpl result(&_addr); @@ -710,6 +740,7 @@ IPv6AddressImpl IPv6AddressImpl::operator ^ (const IPv6AddressImpl& addr) const return result; } + IPv6AddressImpl IPv6AddressImpl::operator ~ () const { IPv6AddressImpl result(&_addr); diff --git a/Net/src/MultipartReader.cpp b/Net/src/MultipartReader.cpp index dcfa3a8f6..1ee9a98e5 100644 --- a/Net/src/MultipartReader.cpp +++ b/Net/src/MultipartReader.cpp @@ -131,7 +131,13 @@ MultipartIOS::MultipartIOS(std::istream& istr, const std::string& boundary): MultipartIOS::~MultipartIOS() { - _buf.sync(); + try + { + _buf.sync(); + } + catch (...) + { + } } diff --git a/Net/src/Net.cpp b/Net/src/Net.cpp index 5f93a6e4d..2b58ef837 100644 --- a/Net/src/Net.cpp +++ b/Net/src/Net.cpp @@ -62,7 +62,14 @@ void Net_API uninitializeNetwork() ~NetworkInitializer() /// Calls Poco::Net::uninitializeNetwork(); { - Poco::Net::uninitializeNetwork(); + try + { + Poco::Net::uninitializeNetwork(); + } + catch (...) + { + poco_unexpected(); + } } }; diff --git a/Net/src/NetworkInterface.cpp b/Net/src/NetworkInterface.cpp index 7270eb5d1..bc5221340 100644 --- a/Net/src/NetworkInterface.cpp +++ b/Net/src/NetworkInterface.cpp @@ -151,13 +151,20 @@ private: NetworkInterface::MACAddress _macAddress; - friend NetworkInterface::Map NetworkInterface::map(bool, bool); + friend class NetworkInterface; }; NetworkInterfaceImpl::NetworkInterfaceImpl(unsigned index): _index(index), - _mtu(0) + _broadcast(false), + _loopback(false), + _multicast(false), + _pointToPoint(false), + _up(false), + _running(false), + _mtu(0), + _type(NetworkInterface::NI_TYPE_OTHER) { } @@ -173,7 +180,8 @@ NetworkInterfaceImpl::NetworkInterfaceImpl(const std::string& name, const std::s _pointToPoint(false), _up(false), _running(false), - _mtu(0) + _mtu(0), + _type(NetworkInterface::NI_TYPE_OTHER) { _addressList.push_back(AddressTuple(address, IPAddress(), IPAddress())); setPhyParams(); @@ -192,7 +200,8 @@ NetworkInterfaceImpl::NetworkInterfaceImpl(const std::string& name, const std::s _pointToPoint(false), _up(false), _running(false), - _mtu(0) + _mtu(0), + _type(NetworkInterface::NI_TYPE_OTHER) { setPhyParams(); if (pMACAddress) setMACAddress(*pMACAddress); @@ -430,6 +439,7 @@ inline bool NetworkInterfaceImpl::up() const #if defined(POCO_OS_FAMILY_WINDOWS) + void NetworkInterfaceImpl::setFlags(DWORD flags, DWORD iftype) { _running = _up = false; @@ -453,13 +463,16 @@ void NetworkInterfaceImpl::setFlags(DWORD flags, DWORD iftype) _multicast = true; } + void NetworkInterfaceImpl::setRunning(bool running) { _running = running; } + #else + void NetworkInterfaceImpl::setFlags(short flags) { #ifdef POCO_OS_FAMILY_UNIX @@ -472,6 +485,7 @@ void NetworkInterfaceImpl::setFlags(short flags) #endif } + #endif @@ -525,8 +539,6 @@ inline void NetworkInterfaceImpl::addAddress(const IPAddress& addr) inline void NetworkInterfaceImpl::setMACAddress(const NetworkInterface::MACAddress& addr) { - - _macAddress = addr; } @@ -534,8 +546,7 @@ inline void NetworkInterfaceImpl::setMACAddress(const NetworkInterface::MACAddre inline void NetworkInterfaceImpl::setMACAddress(const void *addr, std::size_t len) { _macAddress.clear(); - for (unsigned i = 0; i < len; ++i) - _macAddress.push_back(((unsigned char *)addr)[i]); + _macAddress.insert(_macAddress.end(), static_cast(addr), static_cast(addr) + len); } @@ -719,11 +730,13 @@ unsigned NetworkInterface::mtu() const return _pImpl->mtu(); } + NetworkInterface::Type NetworkInterface::type() const { return _pImpl->type(); } + bool NetworkInterface::supportsIP() const { return _pImpl->supportsIPv4() || _pImpl->supportsIPv6(); @@ -760,7 +773,6 @@ bool NetworkInterface::isLoopback() const } - bool NetworkInterface::isPointToPoint() const { return _pImpl->pointToPoint(); @@ -874,13 +886,24 @@ NetworkInterface::List NetworkInterface::list(bool ipOnly, bool upOnly) IPAddress mask = ipIt->get(); NetworkInterface ni; if (mask.isWildcard()) + { ni = NetworkInterface(name, displayName, adapterName, addr, index, &mac); + } else { IPAddress broadcast = ipIt->get(); ni = NetworkInterface(name, displayName, adapterName, addr, mask, broadcast, index, &mac); } + ni._pImpl->_broadcast = it->second._pImpl->_broadcast; + ni._pImpl->_loopback = it->second._pImpl->_loopback; + ni._pImpl->_multicast = it->second._pImpl->_multicast; + ni._pImpl->_pointToPoint = it->second._pImpl->_pointToPoint; + ni._pImpl->_up = it->second._pImpl->_up; + ni._pImpl->_running = it->second._pImpl->_running; + ni._pImpl->_mtu = it->second._pImpl->_mtu; + ni._pImpl->_type = it->second._pImpl->_type; + list.push_back(ni); } } @@ -975,6 +998,7 @@ IPAddress subnetMaskForInterface(const std::string& name, bool isLoopback) } else { +#if !defined(_WIN32_WCE) std::string subKey("SYSTEM\\CurrentControlSet\\services\\Tcpip\\Parameters\\Interfaces\\"); subKey += name; std::string netmask; @@ -1012,6 +1036,9 @@ IPAddress subnetMaskForInterface(const std::string& name, bool isLoopback) #endif RegCloseKey(hKey); return IPAddress::parse(netmask); +#else + return IPAddress(); +#endif // !defined(_WIN32_WCE) } } @@ -1054,7 +1081,8 @@ NetworkInterface::Map NetworkInterface::map(bool ipOnly, bool upOnly) throw SystemException(format("An error occurred while trying to obtain list of network interfaces: [%s]", Error::getMessage(dwRetVal))); else break; - } while ((ERROR_BUFFER_OVERFLOW == dwRetVal) && (++iterations <= 2)); + } + while ((ERROR_BUFFER_OVERFLOW == dwRetVal) && (++iterations <= 2)); poco_assert (NO_ERROR == dwRetVal); for (; pAddress; pAddress = pAddress->Next) @@ -1069,12 +1097,24 @@ NetworkInterface::Map NetworkInterface::map(bool ipOnly, bool upOnly) ifIndex = pAddress->Ipv6IfIndex; #elif (_WIN32_WINNT >= 0x0501) && (NTDDI_VERSION >= 0x05010100) // Win XP SP1 #if defined (IP_ADAPTER_IPV6_ENABLED) // Vista - if ((pAddress->Flags & IP_ADAPTER_IPV6_ENABLED) && - (osvi.dwMajorVersion >= 5) && - (osvi.dwMinorVersion >= 1) && - (osvi.dwBuildNumber >=1)) + if(osvi.dwMajorVersion>=6)//vista { - ifIndex = pAddress->Ipv6IfIndex; + if ((pAddress->Flags & IP_ADAPTER_IPV6_ENABLED) && + (osvi.dwMajorVersion >= 5) && + (osvi.dwMinorVersion >= 1) && + (osvi.dwBuildNumber >=1)) + { + ifIndex = pAddress->Ipv6IfIndex; + } + } + else + { + if ((osvi.dwMajorVersion >= 5) && + (osvi.dwMinorVersion >= 1) && + (osvi.dwBuildNumber >= 1)) + { + ifIndex = pAddress->Ipv6IfIndex; + } } #else // !defined(IP_ADAPTER_IPV6_ENABLED) if ((osvi.dwMajorVersion >= 5) && @@ -1088,7 +1128,14 @@ NetworkInterface::Map NetworkInterface::map(bool ipOnly, bool upOnly) #endif // POCO_HAVE_IPv6 #if defined (IP_ADAPTER_IPV4_ENABLED) - if (pAddress->Flags & IP_ADAPTER_IPV4_ENABLED) + if(osvi.dwMajorVersion>=6) + {//vista + if (pAddress->Flags & IP_ADAPTER_IPV4_ENABLED) + { + ifIndex = pAddress->IfIndex; + } + } + else { ifIndex = pAddress->IfIndex; } @@ -1156,38 +1203,49 @@ NetworkInterface::Map NetworkInterface::map(bool ipOnly, bool upOnly) // On Windows, a valid broadcast address will be all 1's (== address | ~subnetMask); additionaly, on pre-Vista versions of // OS, master address structure does not contain member for prefix length; we go an extra mile here in order to make sure // we reflect the actual values held by system and protect against misconfiguration (e.g. bad DHCP config entry) -#if defined(_WIN32_WCE) ULONG prefixLength = 0; +#if defined(_WIN32_WCE) + #if _WIN32_WCE >= 0x0800 + prefixLength = pUniAddr->OnLinkPrefixLength; + broadcastAddress = getBroadcastAddress(pAddress->FirstPrefix, address); + #else broadcastAddress = getBroadcastAddress(pAddress->FirstPrefix, address, &prefixLength); + #endif // if previous call did not do it, make last-ditch attempt for prefix and broadcast if (prefixLength == 0 && pAddress->FirstPrefix) prefixLength = pAddress->FirstPrefix->PrefixLength; poco_assert (prefixLength <= 32); if (broadcastAddress.isWildcard()) { - IPAddress mask ((unsigned) prefixLength, IPAddress::IPv4); + IPAddress mask(static_cast(prefixLength), IPAddress::IPv4); IPAddress host(mask & address); broadcastAddress = host | ~mask; } #elif (_WIN32_WINNT >= 0x0501) && (NTDDI_VERSION >= 0x05010100) // Win XP SP1 #if (_WIN32_WINNT >= 0x0600) // Vista and newer - UINT8 prefixLength = pUniAddr->OnLinkPrefixLength; - broadcastAddress = getBroadcastAddress(pAddress->FirstPrefix, address); - #else // _WIN32_WINNT < 0x0600 - ULONG prefixLength = 0; + if (osvi.dwMajorVersion >= 6) + { + prefixLength = pUniAddr->OnLinkPrefixLength; + broadcastAddress = getBroadcastAddress(pAddress->FirstPrefix, address); + } + else + { + broadcastAddress = getBroadcastAddress(pAddress->FirstPrefix, address, &prefixLength); + } + #else broadcastAddress = getBroadcastAddress(pAddress->FirstPrefix, address, &prefixLength); + #endif poco_assert (prefixLength <= 32); if (broadcastAddress.isWildcard()) { - IPAddress mask ((unsigned) prefixLength, IPAddress::IPv4); + IPAddress mask(static_cast(prefixLength), IPAddress::IPv4); IPAddress host(mask & address); broadcastAddress = host | ~mask; } - #endif // _WIN32_WINNT >= 0x0600 #endif // (_WIN32_WINNT >= 0x0501) && (NTDDI_VERSION >= 0x05010100) if (prefixLength) { - subnetMask = IPAddress(prefixLength, IPAddress::IPv4); + subnetMask = IPAddress(static_cast(prefixLength), IPAddress::IPv4); } else // if all of the above fails, look up the subnet mask in the registry { @@ -1202,8 +1260,11 @@ NetworkInterface::Map NetworkInterface::map(bool ipOnly, bool upOnly) ifIt->second.addAddress(address, subnetMask, broadcastAddress); } else + { ifIt->second.addAddress(address); - } break; + } + } + break; #if defined(POCO_HAVE_IPv6) case AF_INET6: ifIt->second.addAddress(address); diff --git a/Net/src/PartStore.cpp b/Net/src/PartStore.cpp index 3bf1201cf..0ad723d9b 100644 --- a/Net/src/PartStore.cpp +++ b/Net/src/PartStore.cpp @@ -24,7 +24,10 @@ namespace Poco { namespace Net { -/// PartStore +// +// PartStore +// + PartStore::PartStore(const std::string& mediaType): PartSource(mediaType) { @@ -36,7 +39,10 @@ PartStore::~PartStore() } -/// FilePartStore +// +// FilePartStore +// + FilePartStore::FilePartStore(const std::string& content, const std::string& mediaType, const std::string& filename): PartStore(mediaType), @@ -56,7 +62,7 @@ FilePartStore::~FilePartStore() _fstr.close(); File(_path).remove(); } - catch (Exception&) + catch (...) { } } diff --git a/Net/src/RemoteSyslogChannel.cpp b/Net/src/RemoteSyslogChannel.cpp index cfabe7349..f082e6921 100644 --- a/Net/src/RemoteSyslogChannel.cpp +++ b/Net/src/RemoteSyslogChannel.cpp @@ -61,7 +61,14 @@ RemoteSyslogChannel::RemoteSyslogChannel(const std::string& address, const std:: RemoteSyslogChannel::~RemoteSyslogChannel() { - close(); + try + { + close(); + } + catch (...) + { + poco_unexpected(); + } } diff --git a/Net/src/SMTPChannel.cpp b/Net/src/SMTPChannel.cpp index ee4d6517a..991465f32 100644 --- a/Net/src/SMTPChannel.cpp +++ b/Net/src/SMTPChannel.cpp @@ -69,7 +69,14 @@ SMTPChannel::SMTPChannel(const std::string& mailhost, const std::string& sender, SMTPChannel::~SMTPChannel() { - close(); + try + { + close(); + } + catch (...) + { + poco_unexpected(); + } } diff --git a/Net/src/SocketImpl.cpp b/Net/src/SocketImpl.cpp index ac49a2c35..1a98a85ea 100644 --- a/Net/src/SocketImpl.cpp +++ b/Net/src/SocketImpl.cpp @@ -32,6 +32,7 @@ #include #endif + using Poco::IOException; using Poco::TimeoutException; using Poco::InvalidArgumentException; diff --git a/Net/src/StreamSocket.cpp b/Net/src/StreamSocket.cpp index 3e6833faa..8ff4b3921 100644 --- a/Net/src/StreamSocket.cpp +++ b/Net/src/StreamSocket.cpp @@ -17,10 +17,13 @@ #include "Poco/Net/StreamSocket.h" #include "Poco/Net/StreamSocketImpl.h" #include "Poco/FIFOBuffer.h" +#include "Poco/Mutex.h" #include "Poco/Exception.h" using Poco::InvalidArgumentException; +using Poco::Mutex; +using Poco::ScopedLock; namespace Poco { @@ -116,7 +119,9 @@ int StreamSocket::sendBytes(const void* buffer, int length, int flags) int StreamSocket::sendBytes(FIFOBuffer& fifoBuf) { - int ret = impl()->sendBytes(&fifoBuf.buffer()[0], (int) fifoBuf.used()); + ScopedLock l(fifoBuf.mutex()); + + int ret = impl()->sendBytes(fifoBuf.begin(), (int) fifoBuf.used()); if (ret > 0) fifoBuf.drain(ret); return ret; } @@ -130,7 +135,9 @@ int StreamSocket::receiveBytes(void* buffer, int length, int flags) int StreamSocket::receiveBytes(FIFOBuffer& fifoBuf) { - int ret = impl()->receiveBytes(fifoBuf.next(), (int) fifoBuf.available()); + ScopedLock l(fifoBuf.mutex()); + + int ret = impl()->receiveBytes(fifoBuf.next(), (int)fifoBuf.available()); if (ret > 0) fifoBuf.advance(ret); return ret; } diff --git a/Net/src/TCPServer.cpp b/Net/src/TCPServer.cpp index 431bdb9bb..1619ca0ef 100644 --- a/Net/src/TCPServer.cpp +++ b/Net/src/TCPServer.cpp @@ -72,8 +72,15 @@ TCPServer::TCPServer(TCPServerConnectionFactory::Ptr pFactory, Poco::ThreadPool& TCPServer::~TCPServer() { - stop(); - _pDispatcher->release(); + try + { + stop(); + _pDispatcher->release(); + } + catch (...) + { + poco_unexpected(); + } } @@ -177,9 +184,18 @@ int TCPServer::refusedConnections() const std::string TCPServer::threadName(const ServerSocket& socket) { +#if _WIN32_WCE == 0x0800 + // Workaround for WEC2013: only the first call to getsockname() + // succeeds. To mitigate the impact of this bug, do not call + // socket.address(), which calls getsockname(), here. + std::string name("TCPServer"); + #pragma message("Using WEC2013 getsockname() workaround in TCPServer::threadName(). Remove when no longer needed.") +#else std::string name("TCPServer: "); name.append(socket.address().toString()); +#endif return name; + } diff --git a/Net/src/WebSocket.cpp b/Net/src/WebSocket.cpp index 8e4a3ddfc..5950a6a9d 100644 --- a/Net/src/WebSocket.cpp +++ b/Net/src/WebSocket.cpp @@ -101,6 +101,7 @@ void WebSocket::shutdown(Poco::UInt16 statusCode, const std::string& statusMessa int WebSocket::sendFrame(const void* buffer, int length, int flags) { + flags |= FRAME_OP_SETRAW; return static_cast(impl())->sendBytes(buffer, length, flags); } diff --git a/Net/src/WebSocketImpl.cpp b/Net/src/WebSocketImpl.cpp index b2dbc64ab..4ed6354d6 100644 --- a/Net/src/WebSocketImpl.cpp +++ b/Net/src/WebSocketImpl.cpp @@ -23,7 +23,7 @@ #include "Poco/MemoryStream.h" #include "Poco/Format.h" #include -#include + namespace Poco { namespace Net { @@ -42,8 +42,15 @@ WebSocketImpl::WebSocketImpl(StreamSocketImpl* pStreamSocketImpl, bool mustMaskP WebSocketImpl::~WebSocketImpl() { - _pStreamSocketImpl->release(); - reset(); + try + { + _pStreamSocketImpl->release(); + reset(); + } + catch (...) + { + poco_unexpected(); + } } @@ -54,6 +61,7 @@ int WebSocketImpl::sendBytes(const void* buffer, int length, int flags) Poco::BinaryWriter writer(ostr, Poco::BinaryWriter::NETWORK_BYTE_ORDER); if (flags == 0) flags = WebSocket::FRAME_BINARY; + flags &= 0xff; writer << static_cast(flags); Poco::UInt8 lengthByte(0); if (_mustMaskPayload) diff --git a/Net/testsuite/TestSuite_WEC2013_vs110.vcxproj b/Net/testsuite/TestSuite_WEC2013_vs110.vcxproj index 47a8a4d29..b0876af42 100644 --- a/Net/testsuite/TestSuite_WEC2013_vs110.vcxproj +++ b/Net/testsuite/TestSuite_WEC2013_vs110.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false diff --git a/Net/testsuite/TestSuite_WEC2013_vs110.vcxproj.filters b/Net/testsuite/TestSuite_WEC2013_vs110.vcxproj.filters index 0fb95937a..17d428391 100644 --- a/Net/testsuite/TestSuite_WEC2013_vs110.vcxproj.filters +++ b/Net/testsuite/TestSuite_WEC2013_vs110.vcxproj.filters @@ -2,154 +2,154 @@ - {0259106c-5e01-4a56-acec-9ac0be770abb} + {686392ac-5b73-4f61-828b-2757431259e2} - {40aa4506-8f18-4c59-b716-6d0a6c7bba5a} + {00a2a9c4-2c45-45d4-8d05-95a7d9a141a9} - {f057a48b-1deb-4e89-b409-89a515875a68} + {0c6ea42d-2752-4367-8590-6f4165148ecd} - {f03c72e2-114f-408c-bb62-4ec88176a94a} + {185648ee-bfd4-494a-bfdd-57bf1d881323} - {8b479440-d079-40d2-8e77-e32af9e3ee69} + {f51f8d1e-df45-4510-97c8-5281b48bb441} - {121f2cd4-42a0-48ff-9c62-7444b90750b2} + {3f6667bd-cf83-44f4-9bf7-20171623f19d} - {2b46ebf0-9ad3-4296-9cd7-47deff8baa3d} + {5d439061-40d4-43c6-a8ed-22c3c4d690a6} - {241b0592-9482-4338-8169-1ea35016622f} + {7ae235c5-5891-40e3-a3f0-5f442e5cb56e} - {2c9dba2b-ba71-41d9-b117-5cdd26847743} + {a66ba89e-2e0b-4c7f-afc1-7383ecbeaad0} - {fbe26358-64d8-4719-81be-eb353c06c276} + {c8105844-50dd-4bb3-8528-e8d97ecddf19} - {54dd5658-397a-4208-b362-46ba814e7348} + {bd3e9226-c715-4747-806c-fb02d4a6cb3a} - {0215e78f-b182-4489-ac4b-2113310d0f13} + {563ed0ed-459d-4c22-aa12-91a29e497a4c} - {6c37c60a-bf63-4a10-a7b2-8a18dd358d50} + {7ab4648c-a176-4acf-9c42-787af9ec8f42} - {2e7837de-e3d3-4016-ba9a-a6e16576ad58} + {996f708f-e31b-4477-92ab-0fd871796ba0} - {951181e5-693f-4c33-a416-c38af61b6f83} + {3e2b8de3-af93-4186-b0bf-9e0969a5662d} - {321de3cf-9fe5-4f34-b408-a3d88320b7fc} + {6428664b-276c-4cd5-aefa-c572938492ea} - {0b014e8c-90a5-4492-b35a-0a2be738f2c8} + {e9bc4f89-4606-422e-9e81-03093a4eb43e} - {0d1cea17-31d6-4fc7-8411-cf3405f88201} + {ed703f45-16f7-43d7-b44d-765948722082} - {3061698b-4e9b-44da-afb1-cd6b94ada414} + {5c835c13-d1e1-4668-8f6f-c410e30c889c} - {656141ee-55a9-4133-8209-62421ac3bdfb} + {fcd184b2-1296-4790-845e-4f3dc2cd3a2e} - {9663030d-576e-43da-bbe3-7ac23f28e555} + {c0ce67b7-e72a-40ad-8537-2e9034755fec} - {2da34b52-47aa-4c83-aa21-c1d0324e3dd8} + {74fa69fc-a1c9-403a-ae9d-1690caed93f3} - {776e476f-bf07-4625-b505-471dca1caa9c} + {caf3e2d9-1825-4cf2-b30e-b10f07735f16} - {a04c780c-63f1-45a1-8b6a-d75a5f8c93a6} + {96ca91e6-bff6-49cf-ab82-2b09815346d3} - {84e4e5c7-8d31-46c7-8f21-940dca7e4dc2} + {7370234a-13aa-4161-8133-d0e41c284085} - {75dc5390-9ef8-4b25-b87d-dd50c159c698} + {d7d57527-1a91-4ec3-bcad-e268944b9e6c} - {8386977d-a4f2-45f5-89b1-8a870539d4cc} + {be189aca-e774-4637-a67b-9c8ef69b3613} - {19783bf2-8601-4332-a7a6-32156abdc452} + {96457215-f952-4f6f-9b12-a74a6a350cc6} - {af9b1b81-505f-447d-b2b2-e91dd562f21a} + {ab04c4f2-8b57-475d-acfb-64a0ebd1b2ff} - {9f6d8e42-47fd-4a5a-ba5e-aad2a52eeb06} + {988ab614-fdcb-4852-9957-6615e83b8295} - {f5ae7c09-fbcd-4159-b828-df5b78b6d498} + {1e2ff033-4d89-44ea-945a-ef2869a549f5} - {e6255570-412c-4234-863d-35da9666ef69} + {8da2702f-09cf-4052-801b-7ecdd6168a43} - {eb062e39-3753-4b35-9d99-b1e201c44ce0} + {7b5c33a2-aec2-488d-ae8d-89a12801b1b6} - {685d99a1-edd7-465c-8de3-6f21e59cf268} + {a0f32b3e-46cb-4825-a073-df773b728fd6} - {86c1f371-109a-4bcf-b812-d4687b80ed29} + {ffbbc606-5de0-4f0a-9829-74bfd11eb60b} - {9dc220dc-bf5e-480f-aefc-46ae6353960d} + {1d58b254-90de-4715-b33a-128d033f5336} - {c4dfce7c-1c41-490e-b043-04796cd3753e} + {22a3942d-6948-4be2-94fd-0dfedc2b7c82} - {ca184f52-45db-40ee-95d2-8f2ff360d254} + {458742cc-e064-4983-aff3-dcc8979b85c1} - {9c789f21-a8e6-4412-a4a1-45e84e3e6505} + {f83b745a-8ddf-43fd-b0a4-2259e5104da6} - {fd0bd733-eab9-4679-ad28-7e257f4c31a0} + {e321f502-bad8-4e01-bde0-57ba4f487774} - {7c1dac67-0447-4183-8f93-3f44663662f6} + {64e6c7d6-e380-4c9f-b7f9-c8aba948ac10} - {627e88ff-cb10-4d02-9f22-0f1a656b3371} + {8f141371-fb8e-4b39-bf51-2efed37a5ed9} - {102fd8b9-312c-46af-a578-65ce240b769a} + {c6e2d2da-02e0-4e90-b253-e9193d8ad5cb} - {db8e9936-cccb-4987-8343-b4cc5e8cd153} + {be9d2d9b-da87-444a-9eb5-034a3ff5a42d} - {6e99c547-d3a9-4dd8-8d55-3a69eaf6f1aa} + {dffd2025-69ca-4850-a2de-f5d012c1ecc7} - {a2b3b19c-a725-4cb8-9d18-66167be643e6} + {5660e5f6-9a66-4d7c-a23c-1f3772ce140c} - {381ed717-f15c-48d9-8031-055d51c06fcb} + {6134f9bb-bfa5-437b-90cb-d5492b4a1222} - {130015ee-7fb7-4641-a21f-db8b710ddd70} + {65452f8d-802b-41ce-9d19-20d1dfb1c391} - {1ca27cf0-5d86-49cc-9d96-d488d7c37d13} + {2830b90b-7846-46f1-b76a-dccfe9541f77} - {fafdf346-4bba-4308-85a7-cccfff3a48f8} + {4994d211-ca8b-4252-b8c5-17e6b1738148} diff --git a/Net/testsuite/TestSuite_WEC2013_vs120.vcxproj b/Net/testsuite/TestSuite_WEC2013_vs120.vcxproj index 4c426b498..1d94dfb25 100644 --- a/Net/testsuite/TestSuite_WEC2013_vs120.vcxproj +++ b/Net/testsuite/TestSuite_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false diff --git a/Net/testsuite/TestSuite_WEC2013_vs120.vcxproj.filters b/Net/testsuite/TestSuite_WEC2013_vs120.vcxproj.filters index 62933c59e..f6a9fba48 100644 --- a/Net/testsuite/TestSuite_WEC2013_vs120.vcxproj.filters +++ b/Net/testsuite/TestSuite_WEC2013_vs120.vcxproj.filters @@ -2,154 +2,154 @@ - {06da2c81-2444-47a4-a36b-cfde8674a946} + {9c28c7cb-d3b6-4f27-a6d6-48ebab42dc8c} - {904d4365-2464-4422-9190-be16fa583821} + {cbd28011-235d-4528-8af9-fcbf7a24de11} - {e1ab9c57-930f-4f37-b3f7-87ba57b07478} + {25b58175-9a9c-4ae4-92a0-ded234aa5173} - {9bafd342-eb57-44f2-86a9-e7088a268a20} + {d6c548e9-4954-4927-8a0b-e32abad65075} - {a0c03ab8-83c9-408d-92a9-1b40edd54065} + {b7ab26bd-c75d-4727-9b73-10e618ea2a47} - {3a0c44ad-2321-4148-b2a2-6d76411a12f5} + {d65c458c-e60a-4614-9314-b18c401c4150} - {d9f528ae-2359-4c58-aa1f-fa8b33153102} + {d1d21b95-cc94-4240-8058-f5517400ae2d} - {0398e365-ce2c-4d85-a225-d13f200ed810} + {e5c3baa9-81c1-425e-9564-799d1e0f3847} - {7733fd96-706b-480b-8c32-4c91b02478a8} + {19e58bd8-c637-41a1-8755-32a8b47a4294} - {6315ef52-55ca-41b1-bc4c-0b13a72f6e37} + {703de9e5-c997-438c-b486-f8cb2c16c41f} - {ba688e21-5246-4a46-a10a-2a410b3dc359} + {5fcce864-91c0-445c-ade4-24b867be48df} - {be5a4c1f-c1ef-42d9-bf87-a1918b31165b} + {451bc5a3-537d-4d9d-afc5-5a612cc2252a} - {e34ce314-2053-4882-9e1c-a5882d4cd5af} + {ee81089d-db20-4904-9a3e-593c8ff9cb03} - {52e48b7b-18be-42c8-89ad-ee741f5ec46c} + {1a0eaef2-630b-4774-b9a9-1a58838b827c} - {ec25d3be-9e9b-47ba-ae45-0ed1ec700599} + {46b2b599-16b0-4c5b-8b1f-abfd6dbc7832} - {3cfef20d-2de8-4e52-a400-f8c7c5256d35} + {a21f40b9-953e-4bb3-9783-924909cbb6d6} - {abc887d2-b4ef-47e4-b77d-74f5c866cd08} + {691611fe-e0aa-411b-9ccf-00ac0ba27bf6} - {074e16c1-02b8-4e8c-9d73-f5ba55e1359d} + {1f3671fb-bc14-4571-9329-7ea710c4e681} - {034e1341-ea31-4bff-b0ea-d0e2dff7315f} + {f69dfe3d-650b-4317-b391-a8bcde36bbe4} - {5f254097-3b84-44a1-8d06-883b7426f968} + {df068bd7-8093-4cc5-9db3-72365e587152} - {7ecee604-df3f-409d-82a6-1f4f40750370} + {7c0d39ed-7c6b-437b-949d-ad1f5428e4c2} - {a4acb716-a2a7-4203-bfeb-a1bb6a8afab0} + {eb0bd197-15f8-475b-ac5f-cfc6b0c75e92} - {0d148aee-0d5d-4d29-87d9-1ac1935fdb3e} + {5c00d788-0642-4de5-ab0f-83b1be2b675f} - {72cdd8f6-4d93-43e7-95a2-3886b58461e3} + {52c3d517-73f7-4e4d-ab1c-3bcfa44a89cd} - {2a8f7b37-25f2-4592-b9a0-4f802746e4e8} + {5bb37ddb-f3f7-4786-83e5-1ce009198754} - {c0eef7f6-af98-461b-aa58-c929ca682e90} + {ce08125b-1be6-4631-aba5-cdeb44308436} - {bc6b32ae-8871-4f77-9c9d-4e5b5f51839e} + {8613611a-b99d-4b52-871b-ca023ea95e96} - {417f44ef-8521-4e04-b22a-a5433b73b3bd} + {101deb25-da77-4b78-967b-292ada2709b2} - {7cd19e72-6c18-40a9-aed5-c9f0d9839663} + {9122e20d-73ea-416a-80a1-ded475d158a9} - {f7a50ead-909f-4aad-abba-c87b0fa1d531} + {643945f8-e9c5-4a4c-adc4-eaf75b6ca069} - {f82cc4b0-650a-4c17-b428-399092db5273} + {4d6d1f7c-2c67-49d2-b559-79bc6f50471a} - {8de79c4d-a3fc-4de9-832a-7c517a6787b3} + {5f661718-77c3-4452-a5df-da80fd1e6d0c} - {6898804c-cb79-4621-87cd-0ee23379f74f} + {894dbf1f-9605-42d9-885a-bb2cd23e17cd} - {72f6d034-9ba4-4eda-995c-9f414de68625} + {030d9c38-dee7-4089-92db-497f0c8629bb} - {defa92d7-c8a9-42d2-be11-28a54bcb02d4} + {c0f08fa3-dc02-449d-9172-f1b26b6d7ee7} - {da893248-62ac-4036-b8d9-02e63fe4e8b8} + {e7fa24db-1b7d-46e0-b9a6-527a85a6ea81} - {95f3353e-7eab-4ff7-80ab-68b0fbb55c15} + {4c517396-b24a-41b8-a4df-d2b6ac5f9bc1} - {9d7a71c8-ebdb-467e-b848-d2ab83461305} + {df6111db-b7e0-4aba-9e56-9b6ad999f416} - {925dc894-a882-4885-875b-d33f75e3eab1} + {6017ffd9-fe72-4fbf-b076-f186a18708ca} - {b2127ff7-373a-4f1e-b0e9-13b012f08d9b} + {8214187f-6c2c-497c-848f-eead15ccfd09} - {924bf0d9-92ea-43cb-b7e6-fee58e74d2a7} + {207d8b27-e6bf-476f-b94f-92bb9931d296} - {51a29d4d-1ae0-487a-921f-61f1c6d61b71} + {d06b49a4-25b0-4f87-b5d1-f988f8c2db5a} - {ca22c04c-086c-4b12-99e0-35fc6ce53581} + {f288c515-062f-4819-962c-dd5e2360893d} - {0a17cf03-4efc-4bdd-a98d-9b52c9307bfa} + {25856364-b6a1-4aea-ab32-601c7afc50df} - {55511c7d-dd2a-4a82-bf9a-903624cfa7f4} + {f9b99370-27d2-45fb-b4f5-31cd4f9e272b} - {445b875a-9a24-414c-ae72-abcbcb1891d4} + {ac595e19-59f6-4ef8-acc0-01be31a39e80} - {a6b97c93-ec3d-46fe-a1ce-c2bc70df1efa} + {16b13a17-8b25-48db-a5a0-c0a6eed3f6cb} - {03aee07d-0230-48c1-8edd-06497f8b80d9} + {981fb239-64b1-4c5c-9cd1-01e2f57cba2e} - {de20f6a7-3aa5-434a-8134-28276ce9698d} + {6b97c67a-1df8-46ad-b899-765881bf9e3f} - {6e984be0-472c-47dd-bfb0-db40c10e2dc8} + {00d20e48-2aca-4556-9f65-9186b18d50a6} diff --git a/Net/testsuite/TestSuite_vs100.vcxproj b/Net/testsuite/TestSuite_vs100.vcxproj index fb136f15f..4adfe0ced 100644 --- a/Net/testsuite/TestSuite_vs100.vcxproj +++ b/Net/testsuite/TestSuite_vs100.vcxproj @@ -87,22 +87,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false TestSuited TestSuited diff --git a/Net/testsuite/TestSuite_vs100.vcxproj.filters b/Net/testsuite/TestSuite_vs100.vcxproj.filters index e7879b41e..1b60e8e4b 100644 --- a/Net/testsuite/TestSuite_vs100.vcxproj.filters +++ b/Net/testsuite/TestSuite_vs100.vcxproj.filters @@ -2,154 +2,154 @@ - {b209bcf6-9c5b-46a2-a117-aaf86b632b83} + {9a50e11c-540c-49cb-9d0c-12bbeb25e111} - {332da708-b6b5-499f-91b2-c6e0f5425635} + {820d50aa-729c-4013-9096-92f4622b2480} - {c665298d-899b-4007-9d6c-bfc5f7e3c108} + {76548a4b-3072-4a10-aae7-fce8fb10ab30} - {3c9f8602-e925-49fe-b383-c96206744288} + {83992b21-601d-4bca-b48f-bd598a293816} - {445daf5c-1e38-4d27-9183-356ccc31940c} + {e0bdfc54-cf41-4c4b-bc7d-2eb5b15c8f13} - {5d39f665-0455-4ccc-985b-b903f6963e39} + {c5e0fcc9-ca66-43db-892c-942ff451bab8} - {8349447e-d067-4a45-96cb-a06ef2113624} + {a8dbe607-951c-44f8-8606-a82d5d79a6e0} - {add53e82-ec69-4ebc-a06a-b11d06a12793} + {a43f4600-6b9f-4987-a650-db03bc55d8f5} - {c5427197-7fe8-489c-a5a2-5e944a6b1f6f} + {6cd7195b-47c6-477b-b9f2-77b29f3919a7} - {77d89dab-a25c-4da9-8156-eb32fd6366c2} + {1a2730e6-e0e7-4aef-bd4b-9aa36543c346} - {443ccc3d-695a-4c79-95c6-63d8f6f8b0e7} + {71825b00-548e-44d7-8a8e-2e191586f417} - {1a387f09-a438-41b0-ba04-86fa6034f995} + {5b0c71fc-8595-48cb-baa8-d1cafb23a524} - {00918c57-6700-4e4a-b1a7-e05828280e44} + {7b42738b-62e0-4cdd-bad1-7b477b1479a9} - {36a93f0d-48b7-4df3-bfb3-c4c9d45fb90e} + {a6d26d0e-a9b4-4473-95af-dcc2d81e222c} - {6ef2aa44-e4c2-4922-b6f1-93c28c9cf646} + {b3e8032f-04a7-45d8-9d7d-ae66d7352806} - {2eee8d9c-40cc-4248-b69b-83f5df238635} + {4e65da6e-fc61-472b-bedc-05a37d585ac1} - {2baa2850-67ed-497e-831a-fe5f01988714} + {3b879808-d820-4e96-bf17-b3eb7d8cff74} - {a4fc3e9c-fef2-4527-a74e-924c53969828} + {e1b5d3f9-19e1-4408-b5be-d97ff2327b46} - {d4f7043b-9841-4056-8945-c2e34cfbb0e0} + {d2e0ac7a-7702-4d4c-9042-bdde1230a871} - {a3d12ae7-5287-414b-a3db-700cdda59a3b} + {c73e9c10-05fe-4a36-9310-72c78101d79a} - {2e0c8ff4-33e5-4114-ba3f-c849d14fc7ba} + {060a32a4-41dd-4390-8029-c3512beb8d59} - {cb80c299-7a88-4500-9c35-2ce3eabc848e} + {1ca7b386-4779-4062-8c0f-039b215fa056} - {e28ef22a-4ffd-452b-ab1d-c0496eee81c1} + {09af9ea9-b301-4b97-beef-9e20848a2360} - {913c9644-9cb8-41cb-9b4c-4b00d57a6a25} + {0f5abe8e-1cde-4716-9033-f163d382376d} - {b00c7e42-9f47-4834-8b79-a91ad49962fc} + {1f9b3099-2231-47d3-a01c-132e8ad5ee18} - {c956cb50-bfa0-43e6-b3cc-6c4836d6239c} + {173385f9-64b6-497f-8697-3442003a2ae4} - {9115eae1-cbe5-4a41-a2d3-def94a13ef3a} + {02ee7cbe-b63f-4bbd-a914-767362fc9d93} - {46cc41e6-824a-4afd-82de-dfbf4fa43318} + {be2060cc-3cec-451d-a997-ba2e2eb2780c} - {17d73fc1-ac76-4fbd-a4e6-5b08b3c98fca} + {a9a6de8e-9e42-46ba-b9a1-2ecab3c80d26} - {20c78958-3b70-487f-b76d-ff0c4cd49d18} + {3147d536-ca3e-44bb-b77b-67679df0d96a} - {1d097648-232e-48b9-ae3e-ee3ecff29ab1} + {ba48c2b6-6111-4867-8012-4e7313853358} - {d1410854-2b6e-46ee-8440-6f151bcf8edf} + {9eef763d-e964-46ac-8242-c6f127679b8a} - {2b0db702-05da-4696-864c-404c0eb44f9d} + {9b901a3d-a199-4e1f-a37b-9bb8d314d59f} - {cc8930f7-d224-408c-a285-f2c14e964a41} + {775b3148-d751-4c09-8abe-565f9d698d27} - {89089900-5665-4cb2-98c3-8c37c251b730} + {844fbad1-8325-4152-b70a-194201d5da7b} - {68cc2c32-2b3f-4b15-86c0-5c0f229ff278} + {93c394d4-a83c-4b10-a464-ecd4b99381d1} - {0b6b4467-f289-40de-ad75-d3c4b777fc34} + {2d7590c9-ef3e-4ec1-8c30-ee856f3a4234} - {f5142cc0-e96e-4ad5-a5ee-6aa72f2d80d0} + {953712b2-da85-4388-9e23-387b8c0dad59} - {23f3c5ae-f20d-4a95-964d-5d19e17f9a6e} + {88ef3eb6-3451-4a0f-a2c3-f549f0719299} - {ab6a10a6-4257-4918-a4f2-a2209458a8ec} + {3b2fc5b5-5706-4848-98de-5c511fa09c84} - {ec9ba36d-69c6-4682-9ce4-4c814322b028} + {f84fb19e-4903-4a05-a37f-59f651b837ee} - {ac62fce1-d599-48df-b1c7-25e50917bab4} + {b04ba3ff-a5b0-4014-8528-7bd734461b66} - {5c03dc2e-506f-4709-9d80-8d376dcf69e4} + {a00ec248-8472-4ab4-8218-2bc404a3e020} - {8d2fbf3a-7560-4df2-a3cd-4a89950371a8} + {499f95cb-20f7-4cf0-8a2d-87133196ef5f} - {f2a24afb-084a-444e-861b-1857a280e407} + {91b1d423-f266-4cfa-b4ae-2ac1d810d522} - {6e7be011-10df-4956-9a7a-126519ebead5} + {27ee8a65-e8e8-4677-b48a-64307b4f48ee} - {5c324a9d-e7d7-4a82-a517-2f373ba70dd8} + {eda3ae82-c164-4009-b6f9-4ac3f79730c6} - {9e39cc31-d376-4893-b835-2e523411eab4} + {d4f262d0-bcca-42a1-a989-9d976f51405e} - {4fa5bbb8-92f1-49eb-acfe-5fb76bbef45b} + {8d571989-9770-4c2d-979a-1799313f0da2} - {296cb3da-7056-45f1-bfea-21e14172bd09} + {295de34e-fd03-4560-8200-4c5eb330aecf} diff --git a/Net/testsuite/TestSuite_vs110.vcxproj b/Net/testsuite/TestSuite_vs110.vcxproj index 3336630ff..0eb7800b3 100644 --- a/Net/testsuite/TestSuite_vs110.vcxproj +++ b/Net/testsuite/TestSuite_vs110.vcxproj @@ -101,32 +101,32 @@ bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false diff --git a/Net/testsuite/TestSuite_vs110.vcxproj.filters b/Net/testsuite/TestSuite_vs110.vcxproj.filters index 8fe7de005..9f9dea0ad 100644 --- a/Net/testsuite/TestSuite_vs110.vcxproj.filters +++ b/Net/testsuite/TestSuite_vs110.vcxproj.filters @@ -2,154 +2,154 @@ - {2c32fecb-7239-4957-8aaa-b834eb2f8794} + {4a80adc5-9c8c-4d20-b3d3-b5e6b0fc807a} - {04e34e6e-5f67-4393-bab8-b243a54bbaf6} + {94a48f8b-e566-471c-bea6-606913a53b51} - {3bf36bc5-7b8a-4ab6-8a77-e45708f10966} + {cfe6f3cb-b76d-49bf-8dcb-d6e508344436} - {c84e4d9a-c74e-4f8a-ae7d-aa0ebc3c2de9} + {71cd4b18-a3d2-4ccb-aa97-d54498864672} - {14ffd51d-6a23-49f9-95c6-a747b5ebc013} + {0d719cca-68e3-4618-af06-6a44b5ece555} - {af7cbe00-ee28-4c7c-931c-377e4994c803} + {913d58c2-0917-4939-8839-c431ca5cc1f2} - {af6f6a62-370a-4da3-9481-148d32c4cc79} + {979717f4-4e3e-4dc0-a75a-94444c54ad7e} - {d3afc68f-e3ff-42b4-beaf-79748bc29ac6} + {982278a6-3951-4905-861e-607937426826} - {bf9b9ba3-af31-4381-b906-df88b047ed7d} + {9cd455a6-dd78-4168-988f-b246bacbe638} - {acee7ecf-8203-414c-9b3e-230ee8cc3635} + {9c4a8b7e-3ed6-4176-bbf9-949566b6e77a} - {d26f7527-2340-4626-99f3-f46c655498db} + {fc45428f-6084-4eff-8852-515bb7552795} - {181112c0-b3c5-4ea6-9696-df2f108111fd} + {3ce9506f-6962-4b08-b5d3-b458080b5cd7} - {c6a723ce-0c96-45c2-becd-4d17f2b647d6} + {c48e07b6-bd38-496e-9e31-f2e4b620d01e} - {d570d521-5290-4413-b7e5-0d19a4e4c56f} + {51e85b46-4412-4c78-a61e-feea17f55954} - {645161bf-8088-450a-af29-a7e96881f83f} + {c36151b6-5080-4f74-bf2b-08dbcd244eeb} - {56e38078-15ea-431b-9303-ed12e236b610} + {56e8c1ba-d822-4a9f-a8f8-be74153eef2e} - {ab51025c-43a4-4ec0-91b7-e387f8f8c14f} + {81df1e63-83e6-4ef9-a96a-a01c529837e9} - {8794954e-2e87-402e-bb35-1627cb0ae03a} + {502c5ea5-45e6-48b4-8686-cc5bcef589f7} - {7321dba9-2dc0-4442-b7c9-6b0173623712} + {91d346ea-90c4-4190-823f-270cd62a2d0a} - {f7a36446-9d16-43a2-b5e2-1ef5a8016bc4} + {3aaa55ae-fa2a-4030-834e-3bfa352feb76} - {a85e2259-a96c-4f91-9dda-c1fe3080373f} + {dd85a9dd-aca7-4828-93e7-d4dae7366665} - {45a11a9a-71f9-48b9-9323-24e6d3963769} + {223aad8c-7fd0-4d28-a8fd-476f99a4fa3d} - {f5688f2c-3539-4af1-a953-88689bf22bc8} + {faf00e83-ae1a-477b-b837-5c8e48853867} - {1272cc74-8f24-40c3-b2f6-13d858ec1b2a} + {26202fc6-57c7-437c-9cc9-bfc395998e45} - {4336e863-6ad4-44bb-b579-47684698aaf9} + {60e2e03e-0976-466b-a964-0947fc55d5a2} - {da7da9c9-fc06-4c4f-a066-c0b1099b248c} + {fa49b1d5-d920-4c3f-bde2-9714630919ec} - {df91cf9f-807b-4d37-9658-74526dc64823} + {b8c8d0bb-ddc8-48ff-aac5-b5b51c3abd5f} - {a7c02c7c-faba-45ed-b5bc-025ff0d080d0} + {0eba10db-a0c1-4796-8ddd-0d2ba4f02e14} - {bed1c63e-5f3f-4a1d-bcb8-a827ab14dbc8} + {69c2e16d-f44a-492b-997f-ba9e49401afe} - {75a179f6-2cae-4272-812c-1c69719090e8} + {a8918d9e-69cd-4711-a55e-b514c3ebc26b} - {f42c8b4d-abcd-40f0-8bf7-e40b6a544681} + {ccbd3706-4599-4552-b216-72743f1b1c54} - {a483b719-aa66-4ef3-bf66-95db80680e1f} + {52149dec-3326-4f95-b6e6-27f94d9e77dc} - {578e96d2-ac86-482e-93e3-58e5f2d766e2} + {983594f2-eff6-451f-ad59-c02d8c61c81c} - {b0578663-a0a5-46f0-8839-fd1e417db876} + {21c74b41-d60c-4d3e-96db-39cb4eda3209} - {89ef296b-259c-4833-b9ed-83577d161598} + {6a625282-e426-4478-939a-e0ae1001c917} - {c1ea6e92-3b63-4950-a1b8-579b1902f1d9} + {d4c99584-0860-452c-a0c9-83f47ebfe176} - {3cd77fe2-f01f-4f66-bf84-41b219aaae6d} + {4f1f0904-196d-4b99-a654-f1acd0c78e8d} - {e041a820-d536-4d58-bf8f-5c96bc3d054e} + {b904ba9e-d112-487c-a531-32bd39930d29} - {f5e9cbdf-b072-4c56-8b29-91d68150c6f0} + {76a0f9e7-560d-497a-9435-57da79e2d415} - {2b3f1b43-63ce-47ba-b94e-031c2a93c402} + {ec35a06a-bd1f-47e2-9526-ef82df731f7f} - {0d5b9db5-44a4-4b45-b7fb-565ab83372b4} + {a70a7e8e-79a1-4b68-aa47-d47a200b2cb0} - {9d9086d5-e1ff-4200-8e72-8fccfd06c8dc} + {63cd5e95-9588-47cf-a214-01a2bbc7921a} - {670cd778-ee21-426f-a6d7-d8d03e804bdd} + {8ac8d822-a889-439f-b62d-38adc4a77930} - {a159850f-3823-4980-aae8-4c7c029c68db} + {a18d2f9d-ac94-4e4e-99a7-8cff5ab9bfeb} - {75cdfb69-75d0-4310-86b9-8bfe15a9f87c} + {1d625583-2070-41b9-870b-03e2b1638761} - {d6d1b665-bcc6-4c9c-a52c-691b98b96fa4} + {d35e6090-77ae-4b7a-af9d-0b0a3e70d47e} - {9a013980-ac97-4cf4-8f8b-ac7b73f45308} + {dc56ccae-f81b-4596-83cd-0843132572be} - {632034d6-d0c1-44c5-8190-3110f0bc9c27} + {424e29e6-5c40-4e4f-90bb-44ae4e991f6b} - {23b71932-bf0c-46a3-99e8-5984bc47cc1b} + {8fab31fa-8723-47a1-8c08-d10a343e968f} - {6f8bcd3f-a7ee-43f8-a5e4-993206126422} + {b25b0039-18db-4c6b-8920-e621a10e066b} diff --git a/Net/testsuite/TestSuite_vs120.vcxproj b/Net/testsuite/TestSuite_vs120.vcxproj index 3f7b30fb9..bcc0a0f52 100644 --- a/Net/testsuite/TestSuite_vs120.vcxproj +++ b/Net/testsuite/TestSuite_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false diff --git a/Net/testsuite/TestSuite_vs120.vcxproj.filters b/Net/testsuite/TestSuite_vs120.vcxproj.filters index ce0710267..072b98fc8 100644 --- a/Net/testsuite/TestSuite_vs120.vcxproj.filters +++ b/Net/testsuite/TestSuite_vs120.vcxproj.filters @@ -2,154 +2,154 @@ - {75ae8376-ff7f-4d5b-b13d-7fad3876ae93} + {eb29abc6-954f-4f5c-ae5c-28e971a816c3} - {c6a1ff56-0679-4c5d-aa55-120a321b5290} + {92e9d299-ad7a-4c79-91e6-d3ace39185ec} - {de43b7cf-5c07-41ee-bc0b-e1de08ebb732} + {4c4cd2c7-d90d-4c46-bcae-ac6a4dec4a05} - {dde8d5aa-3a7e-43f0-8d17-654554282faf} + {c686a819-9ee4-4a44-9ef8-2cbc866aad69} - {c13edbaf-6fac-48f1-8bc9-cc2b65320de4} + {3a021b37-e4c9-42ef-bb7f-95442137b99d} - {f9b92eef-f1c3-4cfc-a79a-912495491944} + {6d7c3bd1-96b7-4c4d-8b53-1dbb35d0464f} - {58d81305-b898-4204-802b-116041519cf1} + {39e9334d-b014-42f3-97e3-a50675e527b4} - {7f2b898c-7485-42bf-9e98-cbebdd549419} + {8466d157-d3ea-4f4e-a995-c95c98ccdd7a} - {7baf5f48-95dc-4128-a959-514e2e441279} + {d0bee9cd-86dc-4950-bfd8-0e2d2a3d6d22} - {d4d190ba-9b65-4b82-9a39-68a01c28ebea} + {00582f90-c49f-4b79-a359-2cce9f8434a7} - {8f88f81d-e244-4719-966d-b27aa76f50e3} + {057ddf4d-e7db-42b6-9c19-c1361ab01511} - {a5458db3-d6ca-4fa1-811a-34324be6d5af} + {2aec132a-12bb-45e6-a09f-d06508c6b180} - {fb77579b-173c-48a6-9307-664bf568ab01} + {05afca58-9cdb-495e-85f6-97694cfd974e} - {352605a3-5c0c-4228-a851-8de5a71f6211} + {03b62852-bb8c-4a09-ba78-c5a2255cd013} - {fbe5bb08-9d6a-4224-bba0-43573623710f} + {4af4d3b3-27dc-4f30-8551-27040b80e5fd} - {68294107-ef58-4f17-914b-0214e2e8b2f4} + {82fa0956-f742-47ab-bcc7-dde850e5ec8e} - {dfa45411-db95-4d57-b1e2-7bb67daaec88} + {9547f14a-e614-4e25-8ed4-44f4848b6141} - {6a60b0e6-6149-4c4b-84eb-76b09d07735c} + {cf8212da-43b6-4261-8985-b86498d8f44c} - {081716a0-cb96-4590-aa06-5eeb3bb5a597} + {8f7f6d27-1c38-4d47-bddb-c79a6efc3a9c} - {07add94f-eac6-41a9-a6cc-d514068b2673} + {4543fb06-d773-43d3-8a11-fa9f88379959} - {ae1accfc-142e-46e9-9c21-0959d8d7c842} + {513a26e2-f692-405e-9424-043b383846bd} - {a3a344c4-50aa-4fd1-9430-90da139f3533} + {6a6563d4-5e1b-4005-9388-6068d7cbe4d7} - {a9905ea1-31af-4e84-879f-029a7f286df4} + {5d029742-7fe7-450b-8724-7bb99585afce} - {ff80bd51-d9fd-42b8-b6c7-db532efe8ebc} + {3cbced9d-21b2-4812-ae22-3957e5bfdd3b} - {79c7c786-9af0-45da-b5e6-2307ce083742} + {4f82a46d-06ee-43f6-aeeb-fa22884c193b} - {0fcea3a8-f4c8-4dc2-822c-00b7bb41457e} + {41a488cc-c6ae-43b2-925d-40c726e45ad6} - {dc0be8a7-da95-4f4e-b8f3-c9705e024191} + {41b45f7b-3cb2-4a8d-be3e-a770095d1f26} - {18be4b47-84ec-42b8-a329-869113a61872} + {d4e1489d-2e7d-4e29-a6f4-7d51b6c04656} - {b0f80f38-fabc-4d50-802f-a47f1aa32035} + {d7af8e2c-4d0f-46c9-942b-b5a1a5f116aa} - {ae80b070-acb7-4834-a2ac-9dee80e43cfe} + {62815b2d-5bd7-43a4-b4e6-0858fbf4c750} - {adea963b-16c3-47f0-8427-256b13df7808} + {fa894ac5-0703-4e04-838a-08abfe94254f} - {719b01b9-bdb2-40a6-91a5-55b0ff86e45b} + {450d7ab3-a161-4af1-934b-ce9fce3d4d9b} - {55f9576e-9849-45fb-9a4d-b07c992da50b} + {b5865eed-f609-47f0-b024-bfe7437f65f2} - {eea02289-a993-4513-b9cf-aeb58ec5e451} + {2afce342-9a0d-451f-8ea7-7ac089b4c961} - {7ba900b2-29cb-408f-845f-8bac678dc406} + {d9f61034-48e9-49eb-bc1c-2716c94d5cde} - {c0c3ace6-003e-42b6-9a80-445d20e6809d} + {4d25640d-b6c9-4dc6-a550-05b217dc6682} - {f6116fb7-42ec-4c7b-aad8-6ecd7568d0e2} + {323b9fda-23a2-425e-b421-58b5b13149c8} - {28867bf8-c611-47e2-bab8-75ec8d385bbd} + {0e46cb38-08b8-4602-ac94-253a8b2d6dca} - {309975f1-aa11-43d9-a8e6-b675ef16f520} + {cf48d5b3-b34b-4df2-a1a9-4dc3a2780df9} - {60e8f3f6-9d58-4b62-a185-d2d8d15bd1b7} + {65b4dd75-68b2-4a07-8aae-5cc309360ad4} - {06a9cdcc-1768-4af4-98b9-ac9ffaa5187f} + {073ca7f6-696c-4750-985d-b2d42fa3f125} - {8f5b7041-8f5e-4783-9e68-d6cc7ad771c1} + {5a8c4b18-ad81-4539-8155-915d2869f6c7} - {31823d93-16f4-417a-ae6d-8e7eeef9dc0b} + {ef490991-8e3c-4e06-b46f-30013c3fe1c0} - {edccca15-dbae-450b-903e-68e9a2154692} + {0353c06a-d8ac-454c-a9d2-fdc3d5529d24} - {01bef90b-7062-4153-ac35-a68effed8982} + {1c71a26a-4f4e-4a38-90b9-18ac0c83ba42} - {5dc64e11-210c-456a-b90c-992ba35ef9dc} + {0fde6531-47e5-4f91-b062-73afea789db0} - {b27dcf26-7b7f-4076-8511-2ee074090320} + {9fe340db-fe17-452d-b05b-ed37c389596b} - {0a87098e-df58-41bb-bcc4-18755cd2fa9d} + {305cac84-1642-4a40-b491-8d3aeb41f686} - {99bdce9f-4232-427f-bc56-e98a9d480d60} + {428e7233-99d0-49ce-bbfe-ca72a44e0793} - {658e8387-d219-4333-bb0b-21ea231dbaa4} + {bf525da9-4301-45b1-9387-7818b4c1f815} diff --git a/Net/testsuite/TestSuite_x64_vs100.vcxproj b/Net/testsuite/TestSuite_x64_vs100.vcxproj index 3be0ed35c..3b1d10d37 100644 --- a/Net/testsuite/TestSuite_x64_vs100.vcxproj +++ b/Net/testsuite/TestSuite_x64_vs100.vcxproj @@ -87,22 +87,22 @@ <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false TestSuited TestSuited diff --git a/Net/testsuite/TestSuite_x64_vs100.vcxproj.filters b/Net/testsuite/TestSuite_x64_vs100.vcxproj.filters index 49f26d421..d93007978 100644 --- a/Net/testsuite/TestSuite_x64_vs100.vcxproj.filters +++ b/Net/testsuite/TestSuite_x64_vs100.vcxproj.filters @@ -2,154 +2,154 @@ - {9ce44db3-16eb-48c2-b93a-2efe2c902726} + {33c101dc-28e6-4ad0-a271-926d2b4cc214} - {b855e62e-896b-4f4f-9b79-53fd2cf45547} + {88aaeefd-875a-4cab-b16f-df8d85f19f90} - {b1899a02-0d44-4525-9759-2bc1e60c054b} + {e7370b38-8d57-4000-ad46-fe733e41cd82} - {da4f1243-a3b7-41f4-bebf-ee737afa4da8} + {32d9eb9d-de2f-4dc9-b549-5a7ce8b2aac4} - {a8796946-3605-42f9-9ac7-8c355c29b509} + {ae71062b-0865-4c90-bb64-a62c4aa07d08} - {e1dbd172-29b6-4d1c-b406-56cb92307892} + {82abb76e-ca47-445c-a5ce-aa575fdc0900} - {266aa668-a294-43e7-bd8a-a2c572445da6} + {199f9014-2d42-4eb4-b2d0-ebddf65d0c35} - {5f50dca1-2cc2-4ef4-b4c7-ad5a0359cb03} + {c61e6c55-eb0a-4657-937f-e7fd701af451} - {98d28c44-d255-4fb1-860e-2f0e6010b36f} + {e6ad5333-cd16-4d1c-9712-b68f873ce932} - {dd93869c-0f89-4855-8474-5c692c80c782} + {f6ed60b6-e4cc-401c-b25f-e1632f8a796f} - {9175b6f8-83b0-44c6-9ae5-983afacb86c5} + {83267cb5-e2fc-4ac0-b6d7-b01d8c70dd1f} - {527d5dd4-711d-4621-b609-da6df2dc3f8f} + {579d0f31-7455-4ca4-ba90-0d28948674d6} - {82bc69f6-c6d7-4e9e-b5cc-54400df59edb} + {9d5308f5-5ca3-4673-874a-1683f7301ea4} - {bfd3bcbf-737e-4b1b-9937-f35c3a03e495} + {b2e62d78-ec4f-41b0-842e-03a5cfb61717} - {c94b0ed4-3b06-4f90-a49c-a88fd6324c9a} + {f7beca02-b4b0-41e1-9556-262e904182ab} - {986a2eab-d77c-4a50-9313-f654303a4f13} + {8a3ce086-e4fc-4fd4-901e-f6a3fdd0eedc} - {1537797e-440e-4fe3-a1a4-245b829be97e} + {3da16e79-5a85-4c73-8fae-e77d8030a7ff} - {d81cb26e-200e-4720-8786-ff90a42b96c1} + {cabb4268-0cea-4d7d-8758-5c866586abce} - {8b3bbae4-99f9-4ced-bdba-405c43fae2e5} + {ae45038a-30f6-4cee-ad4d-528bb724f802} - {def56afc-04f2-407b-a917-825e2a4a50d5} + {649efe75-fbf6-4cb5-a786-a1e6916b4837} - {c70d7070-5f41-418f-ae8b-053117cf44b3} + {68d8cd60-19f1-4d13-bc54-b880dc0da840} - {49e05f55-6c1c-44bd-a019-561b905c41b7} + {1273008b-1251-4834-9a65-91b8b1b6c844} - {f99fb68d-d40d-44f1-a78f-05b8c243d6a5} + {c6f3d4c1-fcef-486d-95cc-0ab07a02099b} - {bba75eb5-45b0-4346-8523-3f18f4920f70} + {f6fbdd41-13c1-474e-8dec-12bde845e8ca} - {74bdd7ec-9b7b-46bd-a025-05d05932d019} + {12d7a633-411f-4821-ab72-43dfa7086d4e} - {7227c34e-cebb-479b-b747-f8ee78e193c9} + {7e8101c4-38a9-4c0f-a638-0d7f0940339f} - {0ede5367-38c8-484a-a237-1b52c991c868} + {9518dff9-6040-49af-9b6e-89ed1cb904b3} - {9a263beb-7d44-48ea-ae1b-f7ef0bea6140} + {8d8f6a4c-1f74-4509-87f8-58ff6a741998} - {375ea2a2-6a93-4829-90c1-a7c086658d3a} + {65859da6-5dbf-419a-b19d-da2dbe1b5e5c} - {054187dd-3649-492a-962f-2e1ee14677ec} + {1bda2546-bc6f-48cd-ad15-5f27e88563dd} - {ad7d8803-491d-4dd0-bcd5-104b20368e04} + {63b1e6f1-f780-4ea1-95fc-6ee8d2ae0ba8} - {74dab080-ed83-4b39-a7e7-c97d3edfd470} + {227e0d74-e6b9-4a40-91da-42c78dcc786b} - {9f48c069-beb9-445a-b1e8-a3e3706b2207} + {70cbbf35-2664-40f8-bd85-6b3a1f5ff982} - {7c455898-8acf-489a-857d-e41672d33a19} + {e409ecc8-3f6a-46f5-80ab-65ceaff3b399} - {fb2839ca-9137-4c7a-a3f8-0e52f0926af8} + {e324fb54-4555-4998-a373-093fe5833979} - {5eda18a4-8403-48e4-819d-5d80b2b1996d} + {77299e22-1ebb-445e-b132-7f7e181a6e63} - {f9e14c9c-9ec8-4e09-9176-042a7e1dacda} + {70f43f03-d2fa-4176-bbe6-be1f246072a9} - {d364aa89-cf9c-4f91-bf27-aac2346bf12f} + {149de86b-2156-4136-8542-d9d6ee6a48c4} - {f4596a0c-e103-4489-9f61-4805979f91c4} + {b45f1026-7c36-4bd6-af63-4a4f8d75c0a1} - {36c50674-92a7-485f-8c1c-d330fe8cd772} + {0dfa6e9d-2aa1-44b2-bbb5-de5d7ffa30a3} - {36feb0c0-a7a1-49d3-b68b-202d0d53e3a0} + {5bfebdb5-0ac7-4f3e-a2b4-daddf7f0850f} - {edc04a65-0c0a-4aaf-a4af-86ae5a1da383} + {b672a540-e209-42aa-b79e-d369cd50a3cf} - {5e46774c-ca4d-4239-857a-610c048f47ad} + {ae7eebfc-14d9-4943-9daf-76bb3219c058} - {01dacc7a-c10a-4edb-9373-be122fafebf6} + {c90924c7-9a6e-4da6-a3bb-fa4248697509} - {9fc1607c-3cbd-47a5-ad57-a81622aed4a5} + {64f2b664-5b2c-4011-9903-29d8dd3cec46} - {e9480615-143a-4578-8e0e-df74f583ad7f} + {4acba6a7-92d6-4965-ae07-06e2156827a2} - {7357f29d-311d-41a8-98ad-4a5b2ce5e42b} + {eab20730-aaaf-4ce3-807c-e17fe1e1a11f} - {ba8e4793-a73b-44d0-8232-d75e41cc82b2} + {5cf55f2b-7808-46af-88d7-0c175914720f} - {ced74d42-b742-4fe7-8f23-2ce5e71b39ba} + {4b45590d-6097-4c03-ab83-8a103a825d95} - {fa23d546-11fc-4a61-abb8-0d1823989e6c} + {2def153f-9d56-4b2e-b4c1-4dc62618598a} diff --git a/Net/testsuite/TestSuite_x64_vs110.vcxproj b/Net/testsuite/TestSuite_x64_vs110.vcxproj index ce503219b..4ad3d1094 100644 --- a/Net/testsuite/TestSuite_x64_vs110.vcxproj +++ b/Net/testsuite/TestSuite_x64_vs110.vcxproj @@ -101,32 +101,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false diff --git a/Net/testsuite/TestSuite_x64_vs110.vcxproj.filters b/Net/testsuite/TestSuite_x64_vs110.vcxproj.filters index 693c946e9..70e81e871 100644 --- a/Net/testsuite/TestSuite_x64_vs110.vcxproj.filters +++ b/Net/testsuite/TestSuite_x64_vs110.vcxproj.filters @@ -2,154 +2,154 @@ - {323125fc-60f3-48ea-9023-f84d1e9cbd9f} + {037f65ff-7307-4faf-826d-34a0aa886ad6} - {1033f731-1c8e-47f8-8e22-2e7f1e634b65} + {d65c6014-0d08-46f5-a1b6-df4e6d284899} - {e3598a62-cb8b-4bb3-86ad-d2e0eff1005d} + {1c201b71-4a7b-4c84-8ea8-47fc00e830de} - {a3c94e44-9c9e-491b-96b8-263a943b4963} + {b1504c1b-bb23-402a-8b6f-4e95e1df1782} - {7207efe0-03a7-46df-be2d-7ed091b8896f} + {95bba649-4f03-4789-8437-39d340f739ff} - {2f39c4c1-375b-4d89-a063-bbd3984b6964} + {7d5d1e54-8316-4516-b679-721aa5e94054} - {69668f18-a9ff-4dcb-b650-758335381c2f} + {ecc16bb0-03fe-454c-b8e3-6329242d1482} - {38a449df-76fc-430e-bb27-fb57c880299f} + {142b00ed-ad45-40e6-b525-fe785ebf7be4} - {0e673115-b703-4481-a7dd-0799e8d63201} + {09076b28-1a9c-4a4b-a8d3-1e0319ce54a0} - {1d8303b9-3f5c-4097-af59-87131c2be2d0} + {4710d782-d7a0-4944-8dd3-31f737b0ad81} - {519332d3-e231-413b-9dc9-d49cfaae2a52} + {2d2f5164-837f-4dfe-afb1-31ea3197671c} - {f62dd041-6dd7-4692-bcbf-5545a5b94b48} + {0322eb71-e1ab-4b52-9a44-039d2baa1054} - {e21242c5-fd82-4754-a714-ad19627f718f} + {7e53a2da-182e-415c-847b-7c9d26aa87b3} - {ab7062d5-8dc8-4b5b-9370-f1b10266d9ae} + {74de4d90-3d79-4978-bcad-dbc89a19339f} - {1427366d-8aee-4fdf-9c75-86a2176d8a4e} + {93157bc3-0f93-4781-891b-cca686733c11} - {07046ea5-13b1-4911-a3e6-d2d3e8d6ad65} + {9c85643c-db21-4a28-a012-cd58c98e0994} - {3627426d-5aff-4981-bb19-b4cb48ede1cf} + {7a39e67c-97a6-4c6a-86c8-79e65dc0dea0} - {cdd72910-7c9d-4fec-a3f7-1067ddc1c88b} + {4ef668e2-3bea-4903-9944-28af4b144bf2} - {e4f0f5cc-815b-441d-aa20-7773fa51c235} + {4870644d-f716-4367-abcf-b7f0adffb762} - {759a2ee3-ead0-4d94-b8a7-9d097caa80fa} + {19de5849-a929-4d51-ac64-78f478533aa9} - {9af96bc4-8aa5-4016-9239-27f2f0b8a4b7} + {03a3e53e-fec9-4a62-a37e-ca091fbb656e} - {12f34dc0-66a6-4528-94d8-fa4417feca03} + {cff0f735-f09e-4744-a9d0-7ef5df15502d} - {590fc3c5-5516-4b92-8f62-53b13d8374c3} + {0f4a004a-b601-44f1-8fcd-3f3b8cffe82a} - {23c54886-2b07-4f08-8951-fc8c62198a3d} + {343f8c23-7a19-4e57-852a-a04fc6f3b6e8} - {072050d3-e6fa-4e5a-b00c-c891548b0400} + {77a7042d-00af-4aa0-9993-6696f9dd9d28} - {3cdf1750-9008-4d5d-88ee-a4d53da1cd6a} + {d351424f-5c2c-48dc-a727-520872a89008} - {8525a0de-9eb2-49f7-b300-e76f38d0dbe5} + {8af6b5a8-6985-4243-9882-4fe52ec5710f} - {10d71d48-acfe-43a2-9e6f-fdfb4cfd5490} + {afb0db5c-cf7f-46b7-b87d-139299a153d5} - {a6b79c8c-e9a5-4567-8815-7075cccade2d} + {cb9fb41d-3e24-4a38-8767-600dcf01c4b6} - {fcba0ac5-424f-4520-ae9e-567d3f7bc3d0} + {036cf810-9be2-4e3f-b3c8-6b8961b53fd6} - {8663e6a6-f502-47c8-afa4-8c669ee1e837} + {f1eb248f-72fd-4626-a945-fff60a64b481} - {4f5ae923-e30b-400d-8699-0e292eb427e9} + {a135934e-b840-4afe-b0e2-e5784c02fdff} - {dbcb744b-7fd9-4a2f-8fb6-67372a22ccd8} + {4e63e501-1b85-4aee-93e2-d030c4c24d05} - {41c12977-374e-4c6b-9a2e-7eb6a0c2e502} + {7951dde7-b5e9-482c-a8d6-69f459eb6799} - {2c54a0ae-f68a-4f5b-8dab-2f668698785e} + {eb42b26c-4191-4a1a-8032-0c24dcb16276} - {84b72e01-b35a-4c97-8731-8e5e6c1cf38a} + {d3508005-61a1-4436-a735-95624ae915b8} - {90628df7-cb5f-4020-ba67-b8d2c1ff6766} + {4a312890-3311-4766-8e88-0d3446fb91a5} - {fc6b9390-785d-4560-97da-2173afebd796} + {ada3be0d-12aa-40ba-abb8-93933d58ae72} - {7303365c-2b96-462b-b2e7-cf84920542e0} + {e3aa9bfd-70ee-4202-90a4-011e27772248} - {9167d8b9-0e55-4f04-8b36-0439f17fc759} + {5c78e0c9-250b-4ec7-9029-f9b0d15c316a} - {28f80f75-13ab-4c34-8a88-e989660b19fe} + {db4260dd-e71f-402c-853a-ed2789f28b73} - {4a8e0c3c-9969-4139-8655-114076517eff} + {cf8286bc-6d94-4bb9-9d66-0ae9f50b8310} - {a770886f-fe97-4005-b72c-0da310bb209b} + {e3242d8d-02b7-4a45-aaad-d0e8753ebd0c} - {a3432f4f-8649-4760-b96c-994750f75bca} + {2082027b-c21d-4ccf-9023-2a570cc7d683} - {ba4fc529-9e12-4d17-b039-afb0c273e3cc} + {926cdc38-7782-4c77-be10-7638e7bbef25} - {86a11b48-e855-4430-a8b0-4971be592494} + {b2f07879-f2a7-4a2e-bd58-16c7af786f70} - {60e38d34-1931-42cb-b7b7-7209df92a179} + {8c737785-88b3-4435-a120-10da770d8b57} - {83e6a339-a355-4f54-aa96-0330253dac45} + {7fdb1591-8e0c-4ca3-b463-8676e2ee9932} - {3a4756ad-8475-4fad-aef4-d27642a7eec6} + {1b16df8a-6d57-4cff-94b7-be697662b735} - {c32afbd8-2973-46bd-8c18-717122f48225} + {4c0332e5-8e86-4645-b4b5-bab72d091b2f} diff --git a/Net/testsuite/TestSuite_x64_vs120.vcxproj b/Net/testsuite/TestSuite_x64_vs120.vcxproj index c7d550399..33ce7eebf 100644 --- a/Net/testsuite/TestSuite_x64_vs120.vcxproj +++ b/Net/testsuite/TestSuite_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false diff --git a/Net/testsuite/TestSuite_x64_vs120.vcxproj.filters b/Net/testsuite/TestSuite_x64_vs120.vcxproj.filters index 72b25f846..95519dac2 100644 --- a/Net/testsuite/TestSuite_x64_vs120.vcxproj.filters +++ b/Net/testsuite/TestSuite_x64_vs120.vcxproj.filters @@ -2,154 +2,154 @@ - {9164f38a-a572-4fd2-b85d-912a16f419cc} + {12bc37eb-4afc-4aad-a5ec-b6bf45a971e4} - {3475fc32-3549-460a-90a7-13356b06f3fe} + {b2e7150b-a2be-4096-847e-e0a5e5420e47} - {51c5f4cc-4909-43f8-9deb-898e95c631bd} + {1222c9cb-54dd-4a75-bc9b-2ec8ef9ee1a7} - {90310041-fc14-4fa3-a879-5c4b6546f385} + {597d35d2-8b53-44a9-a8c3-0f2e2f298d9d} - {3cdc01c8-1199-4c6b-ae26-df40dab67729} + {23cf5efa-62da-44a6-bf8f-8407dd4de96d} - {122c023d-1e0c-4f4f-9c2a-fa662f0f370b} + {0b041bfc-f92f-458f-8ca2-d5903c716b81} - {c45a9b9d-d2e2-4ee0-bf93-417ded5c7b2a} + {c24a0349-4f45-4562-bcdf-a8c98af202c4} - {1bc819bb-5d6c-4101-99cc-4f01ed1c583a} + {be3b6ae9-2f3b-4937-b214-5900d93e609a} - {ebde2e8a-9915-44d5-af8b-e1920ecf8ac9} + {aba262e4-2f60-401d-a171-b2c72bd3423f} - {7858c6ae-42e0-44eb-a858-c8585e0fce44} + {3a81378d-b9d1-4de5-a6bb-e45827f4e112} - {cc89f69e-54ae-43f9-95fb-e685a4b35078} + {443e750b-431c-4907-a2c3-959fc4d35af9} - {8708eaa3-34b9-4d8d-ab98-a5e0ea3953aa} + {295fb993-fa6f-405c-be2f-7477c19b3957} - {31aa6552-56df-49c8-a746-66e06fdc0430} + {bbd5e4d5-99ab-4e49-a5ea-10a2e8f3ec2d} - {ddb82001-2c25-4862-be62-7413805a3c91} + {f411587a-1c7e-44d7-8408-b7872aa68f35} - {02edbcae-7ea1-4619-a936-7f37f1014a51} + {df69947b-fba1-45a2-b511-49663f5aae10} - {0e04c573-32ae-4e8e-afe3-d2df8b39e0f2} + {a9965623-f733-4ce6-953a-13793db95ca8} - {85c0e04f-7546-46c7-a226-d253beed20c2} + {6fadc25a-39a6-40a9-9744-5f4fe153d9fe} - {6968dc0e-c223-4357-923f-d7c8e328d94c} + {b6110e96-5705-4a36-9982-265597a417b8} - {ba1fd008-78f4-40ed-a5ad-9d47848801d3} + {c8ec07ea-a83d-46b7-a6c6-06a199dcfe76} - {d76a1d7c-7324-448c-a172-42fd4513123a} + {eb952dfa-a10b-437b-873e-fe021a7b7002} - {8312c706-e88a-4f13-a88b-84884e9c9f28} + {222c30d6-3798-48d8-b96c-23c85612dcf9} - {d3f7c582-a49a-4b81-b721-ccfbe65f1211} + {1950bb2f-ecdd-472c-b8d6-6cdd272f8cd4} - {cdb621d8-ca18-4776-83c5-741bceeed685} + {5a9c4f8a-9c67-42b6-92e7-038fe81c85a2} - {60b4d981-3abb-4a38-aced-c0c33ed5fbcc} + {37a3fa42-8fda-4bc4-b19a-8ad4b7e61f14} - {36e5db4c-47cb-45df-8341-7f09f6211428} + {0833d9a9-d2d4-4eef-bef4-2643b5222e5d} - {10409488-d59f-4433-bde8-91acffead8b8} + {bb347695-2f03-43e4-8a79-dfbf91414eed} - {ff66926b-f47b-4fb4-9a1b-6cf6e8645c40} + {379591a0-dcb8-4e8f-b03b-2206b73f7ef1} - {0261da82-ade1-4070-9157-b31c8ab79f7f} + {4920dcc1-5b06-4f5e-916d-dbca95ac9ca6} - {ee1e6447-37da-4430-831e-502de66e4e90} + {d3afb0bb-8d3a-4241-be5b-26a8e58aefcc} - {a4f793eb-54c0-4b84-ac2d-6d50c1ed0753} + {6bc0f644-82dd-4a8f-a341-48c824bb8483} - {c6cad07c-887c-4b05-a09c-47eab01249b4} + {fbaca3e4-b265-4445-ba18-29a3da019ad2} - {4b6a1591-6c2b-4280-95d6-856ce7126052} + {12c75943-bce7-4073-b5fc-1e4d6fa35ed2} - {117c7fe1-d940-4244-8adf-06c239575e94} + {9884ca35-b766-4921-802e-258d3db7e5a0} - {003c683e-fe96-41ab-ac9a-bff01004e54f} + {351d9485-49c0-4440-8a4b-3b22c69b59d7} - {34e0ec39-e3a0-4a8c-802d-3d1ba1291d86} + {3b5e0616-31e4-4751-b324-e6e9e252753b} - {07b02909-6b7a-4956-b925-6678a8c73970} + {45fdab23-7176-418c-b1fd-602796f0993c} - {f6afa626-78e2-45e4-b849-aa56793bed94} + {60573dfe-6869-445d-9a4b-7b449ef8ad6e} - {ea48b9e4-e62e-438f-aecd-cbee672afbaa} + {cf45eaf7-3f2e-4d26-ba00-c5adb94e47b5} - {965822b3-c227-420c-8ac8-c6e9ed0e29a2} + {b43e10f2-858a-4420-848a-21c01655ee80} - {2d9d2a57-e59b-4d90-ae92-93c144ad479e} + {6df194e9-232f-43e8-827c-d3bd43468f0c} - {1566dfa1-5ff1-4e73-b72d-b3cd9eb473cb} + {f4ad80f0-e5c3-4876-be1d-789e6972d73f} - {93c32083-fcc3-40ac-be17-8d6b877f69ce} + {f19263ca-7b6c-4d2b-b22b-c7e84fbe5bf5} - {25185bb9-d52d-436a-880f-7dd0b3eeea68} + {95e1c26b-462f-4cd6-adaf-daa1d16085cd} - {3f1197ed-6220-4475-8bee-5e45709a6c69} + {e51810a9-25b6-454d-9f92-f554a1e9d657} - {f008d8f3-079c-4ae7-a55f-9bf967e2aa1a} + {faa972ef-3774-489e-826a-8f4dbdac1cce} - {bcdfab22-ed4b-4ddc-93d9-35286b106364} + {a110f5a7-1def-4c41-b652-fcc798266177} - {a150df58-bb68-4380-92ec-46fb0f95224b} + {46233ff0-0703-4d85-8c2a-3a72fa32eb46} - {6d73b3df-e2bf-4a03-af37-a4b6967f7487} + {bf079626-de93-490a-8bbb-180f06c1f048} - {c6ec4c47-e524-4f79-86c9-7539d6db5a50} + {e17854c2-232d-46b4-9005-f0bac70548b8} - {5b1cde7e-8630-4704-9d97-1f6be6500a57} + {b1de33f6-936e-42f2-b774-ceb6e3a53463} diff --git a/Net/testsuite/src/FTPClientSessionTest.cpp b/Net/testsuite/src/FTPClientSessionTest.cpp index a73c597e0..c3ef9f46d 100644 --- a/Net/testsuite/src/FTPClientSessionTest.cpp +++ b/Net/testsuite/src/FTPClientSessionTest.cpp @@ -124,7 +124,8 @@ void FTPClientSessionTest::testLogin2() server.addResponse("331 Password required"); server.addResponse("230 Welcome"); server.addResponse("200 Type set to I"); - FTPClientSession session("localhost", server.port(), "user", "password"); + Poco::UInt16 serverPort = server.port(); + FTPClientSession session("localhost", serverPort, "user", "password"); assert (session.isOpen()); assert (session.isLoggedIn()); server.addResponse("221 Good Bye"); @@ -138,7 +139,7 @@ void FTPClientSessionTest::testLogin2() server.addResponse("331 Password required"); server.addResponse("230 Welcome"); server.addResponse("200 Type set to I"); - session.open("localhost", server.port(), "user", "password"); + session.open("localhost", serverPort, "user", "password"); assert (session.isOpen()); assert (session.isLoggedIn()); server.addResponse("221 Good Bye"); @@ -451,9 +452,10 @@ void FTPClientSessionTest::testDownloadPASV() server.addResponse("500 EPSV not understood"); DialogServer dataServer(false); + Poco::UInt16 dataServerPort = dataServer.port(); dataServer.addResponse("This is some data"); std::ostringstream pasv; - pasv << "227 Entering Passive Mode (127,0,0,1," << (dataServer.port()/256) << "," << (dataServer.port() % 256) << ")"; + pasv << "227 Entering Passive Mode (127,0,0,1," << (dataServerPort/256) << "," << (dataServerPort % 256) << ")"; server.addResponse(pasv.str()); server.addResponse("150 sending data\r\n226 Transfer complete"); diff --git a/Net/testsuite/src/IPAddressTest.cpp b/Net/testsuite/src/IPAddressTest.cpp index 984ffdfb0..8f122dc6e 100644 --- a/Net/testsuite/src/IPAddressTest.cpp +++ b/Net/testsuite/src/IPAddressTest.cpp @@ -58,6 +58,10 @@ void IPAddressTest::testStringConv() void IPAddressTest::testStringConv6() { #ifdef POCO_HAVE_IPv6 + IPAddress ia0("::1"); + assert (ia0.family() == IPAddress::IPv6); + assert (ia0.toString() == "::1"); + IPAddress ia1("1080:0:0:0:8:600:200a:425c"); assert (ia1.family() == IPAddress::IPv6); assert (ia1.toString() == "1080::8:600:200a:425c"); diff --git a/Net/testsuite/src/NetworkInterfaceTest.cpp b/Net/testsuite/src/NetworkInterfaceTest.cpp index 863ae0c55..840d8d0d2 100644 --- a/Net/testsuite/src/NetworkInterfaceTest.cpp +++ b/Net/testsuite/src/NetworkInterfaceTest.cpp @@ -50,7 +50,7 @@ void NetworkInterfaceTest::testMap() std::cout << "Index: " << it->second.index() << std::endl; std::cout << "Name: " << it->second.name() << std::endl; std::cout << "DisplayName: " << it->second.displayName() << std::endl; - std::cout << "Status: " << (it->second.isUp() ? "Up" : "Down") << std::endl; + std::cout << "Status: " << (it->second.isUp() ? "Up" : "Down") << std::endl; NetworkInterface::MACAddress mac(it->second.macAddress()); if (!mac.empty() && (it->second.type() != NetworkInterface::NI_TYPE_SOFTWARE_LOOPBACK)) @@ -88,7 +88,7 @@ void NetworkInterfaceTest::testList() std::cout << "Index: " << it->index() << std::endl; std::cout << "Name: " << it->name() << std::endl; std::cout << "DisplayName: " << it->displayName() << std::endl; - std::cout << "Status: " << (it->isUp() ? "Up" : "Down") << std::endl; + std::cout << "Status: " << (it->isUp() ? "Up" : "Down") << std::endl; NetworkInterface::MACAddress mac(it->macAddress()); if (!mac.empty() && (it->type() != NetworkInterface::NI_TYPE_SOFTWARE_LOOPBACK)) diff --git a/Net/testsuite/src/TCPServerTest.cpp b/Net/testsuite/src/TCPServerTest.cpp index ebd66fbe0..d0d8c49b4 100644 --- a/Net/testsuite/src/TCPServerTest.cpp +++ b/Net/testsuite/src/TCPServerTest.cpp @@ -97,7 +97,7 @@ void TCPServerTest::testOneConnection() assert (srv.queuedConnections() == 0); assert (srv.totalConnections() == 1); ss1.close(); - Thread::sleep(300); + Thread::sleep(1000); assert (srv.currentConnections() == 0); } @@ -132,14 +132,14 @@ void TCPServerTest::testTwoConnections() assert (srv.queuedConnections() == 0); assert (srv.totalConnections() == 2); ss1.close(); - Thread::sleep(300); + Thread::sleep(1000); assert (srv.currentConnections() == 1); assert (srv.currentThreads() == 1); assert (srv.queuedConnections() == 0); assert (srv.totalConnections() == 2); ss2.close(); - Thread::sleep(300); + Thread::sleep(1000); assert (srv.currentConnections() == 0); } @@ -200,28 +200,28 @@ void TCPServerTest::testMultiConnections() assert (srv.queuedConnections() == 2); ss1.close(); - Thread::sleep(300); + Thread::sleep(2000); assert (srv.currentConnections() == 4); assert (srv.currentThreads() == 4); assert (srv.queuedConnections() == 1); assert (srv.totalConnections() == 5); ss2.close(); - Thread::sleep(300); + Thread::sleep(2000); assert (srv.currentConnections() == 4); assert (srv.currentThreads() == 4); assert (srv.queuedConnections() == 0); assert (srv.totalConnections() == 6); ss3.close(); - Thread::sleep(300); + Thread::sleep(2000); assert (srv.currentConnections() == 3); assert (srv.currentThreads() == 3); assert (srv.queuedConnections() == 0); assert (srv.totalConnections() == 6); ss4.close(); - Thread::sleep(300); + Thread::sleep(2000); assert (srv.currentConnections() == 2); assert (srv.currentThreads() == 2); assert (srv.queuedConnections() == 0); @@ -229,7 +229,7 @@ void TCPServerTest::testMultiConnections() ss5.close(); ss6.close(); - Thread::sleep(300); + Thread::sleep(1000); assert (srv.currentConnections() == 0); } diff --git a/NetSSL_OpenSSL/NetSSL_OpenSSL_CE_vs90.vcproj b/NetSSL_OpenSSL/NetSSL_OpenSSL_CE_vs90.vcproj index f936f88ac..7864c443a 100644 --- a/NetSSL_OpenSSL/NetSSL_OpenSSL_CE_vs90.vcproj +++ b/NetSSL_OpenSSL/NetSSL_OpenSSL_CE_vs90.vcproj @@ -44,7 +44,8 @@ DebugInformationFormat="3" DisableSpecificWarnings="4800;" CompileForArchitecture="2" - InterworkCalls="false"/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + + + + debug_shared + SDK_AM335X_SK_WEC2013_V300 + + + debug_static_md + SDK_AM335X_SK_WEC2013_V300 + + + debug_static_mt + SDK_AM335X_SK_WEC2013_V300 + + + release_shared + SDK_AM335X_SK_WEC2013_V300 + + + release_static_md + SDK_AM335X_SK_WEC2013_V300 + + + release_static_mt + SDK_AM335X_SK_WEC2013_V300 + + + + NetSSL_OpenSSL + {5AECC55E-A469-11DA-8DA6-005056C00008} + en-US + 11.0 + true + SDK_AM335X_SK_WEC2013_V300 + CE800 + + + + StaticLibrary + Unicode + CE800 + + + StaticLibrary + Unicode + CE800 + + + StaticLibrary + Unicode + CE800 + + + StaticLibrary + Unicode + CE800 + + + DynamicLibrary + Unicode + CE800 + + + DynamicLibrary + Unicode + CE800 + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>11.0.61030.0 + PocoNetSSLd + PocoNetSSLmdd + PocoNetSSLmtd + PocoNetSSL + PocoNetSSLmd + PocoNetSSLmt + + + ..\bin\$(Platform)\ + obj\NetSSL_OpenSSL\$(Platform)\$(Configuration)\ + true + true + + + ..\bin\$(Platform)\ + obj\NetSSL_OpenSSL\$(Platform)\$(Configuration)\ + false + true + + + ..\lib\$(Platform)\ + obj\NetSSL_OpenSSL\$(Platform)\$(Configuration)\ + + + ..\lib\$(Platform)\ + obj\NetSSL_OpenSSL\$(Platform)\$(Configuration)\ + + + ..\lib\$(Platform)\ + obj\NetSSL_OpenSSL\$(Platform)\$(Configuration)\ + + + ..\lib\$(Platform)\ + obj\NetSSL_OpenSSL\$(Platform)\$(Configuration)\ + + + + Disabled + .\include;..\Foundation\include;..\Net\include;..\Util\include;..\Crypto\include;%(AdditionalIncludeDirectories) + _DEBUG;$(ProjectName)_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;NetSSL_EXPORTS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebugDLL + true + true + Level3 + ProgramDatabase + + + libeay32.lib;ssleay32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + ..\bin\$(Platform)\PocoNetSSLd.dll + ..\lib\$(Platform);%(AdditionalLibraryDirectories) + true + ..\bin\$(Platform)\PocoNetSSLd.pdb + + + ..\lib\$(Platform)\PocoNetSSLd.lib + WindowsCE + + + + + Disabled + true + Speed + .\include;..\Foundation\include;..\Net\include;..\Util\include;..\Crypto\include;%(AdditionalIncludeDirectories) + NDEBUG;$(ProjectName)_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;NetSSL_EXPORTS;%(PreprocessorDefinitions) + true + false + MultiThreadedDLL + false + true + Level3 + ProgramDatabase + + + libeay32.lib;ssleay32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + ..\bin\$(Platform)\PocoNetSSL.dll + ..\lib\$(Platform);%(AdditionalLibraryDirectories) + false + + + + ..\lib\$(Platform)\PocoNetSSL.lib + WindowsCE + + + + + Disabled + .\include;..\Foundation\include;..\Net\include;..\Util\include;..\Crypto\include;%(AdditionalIncludeDirectories) + _DEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebug + true + true + + ..\lib\$(Platform)\PocoNetSSLmtd.pdb + Level3 + ProgramDatabase + Default + + + ..\lib\$(Platform)\PocoNetSSLmtd.lib + + + + + Disabled + true + Speed + .\include;..\Foundation\include;..\Net\include;..\Util\include;..\Crypto\include;%(AdditionalIncludeDirectories) + NDEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreaded + false + true + + Level3 + ProgramDatabase + Default + + + ..\lib\$(Platform)\PocoNetSSLmt.lib + + + + + Disabled + .\include;..\Foundation\include;..\Net\include;..\Util\include;..\Crypto\include;%(AdditionalIncludeDirectories) + _DEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebugDLL + true + true + + ..\lib\$(Platform)\PocoNetSSLmdd.pdb + Level3 + ProgramDatabase + Default + + + ..\lib\$(Platform)\PocoNetSSLmdd.lib + + + + + Disabled + true + Speed + .\include;..\Foundation\include;..\Net\include;..\Util\include;..\Crypto\include;%(AdditionalIncludeDirectories) + NDEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDLL + false + true + + Level3 + ProgramDatabase + Default + + + ..\lib\$(Platform)\PocoNetSSLmd.lib + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + + + + + diff --git a/NetSSL_OpenSSL/NetSSL_OpenSSL_WEC2013_vs110.vcxproj.filters b/NetSSL_OpenSSL/NetSSL_OpenSSL_WEC2013_vs110.vcxproj.filters new file mode 100644 index 000000000..be50fd2a5 --- /dev/null +++ b/NetSSL_OpenSSL/NetSSL_OpenSSL_WEC2013_vs110.vcxproj.filters @@ -0,0 +1,213 @@ + + + + + {69f80ee0-d083-43a0-b4c1-b759208e2505} + + + {85a115b2-41de-4c66-8b1e-553fbf086497} + + + {64b135bb-d9ed-4c2b-812d-73d447377426} + + + {2b7aa6c2-5841-4c0d-8b62-05be7727f17e} + + + {d3c73307-df8d-4386-a3ae-b98c9ef1fbda} + + + {13d99669-441e-4849-ab44-c775dbea1321} + + + {5d399f55-3e63-41e4-9698-c4f47827c68c} + + + {9a400c09-8a6f-48e9-ab5d-d094e10d175c} + + + {b6399548-390a-4bf7-becd-d5850aaf899e} + + + {e72b6f6b-122a-42ac-a758-6876f914d0b8} + + + {1d25e242-2171-491e-850c-65313857198d} + + + {a492e868-79f5-4a20-ab25-a35c20edb165} + + + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + HTTPSClient\Header Files + + + HTTPSClient\Header Files + + + HTTPSClient\Header Files + + + SSLSockets\Header Files + + + SSLSockets\Header Files + + + SSLSockets\Header Files + + + SSLSockets\Header Files + + + SSLSockets\Header Files + + + Mail\Header Files + + + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + HTTPSClient\Source Files + + + HTTPSClient\Source Files + + + HTTPSClient\Source Files + + + SSLSockets\Source Files + + + SSLSockets\Source Files + + + SSLSockets\Source Files + + + SSLSockets\Source Files + + + SSLSockets\Source Files + + + Mail\Source Files + + + + + + \ No newline at end of file diff --git a/NetSSL_OpenSSL/NetSSL_OpenSSL_WEC2013_vs120.vcxproj b/NetSSL_OpenSSL/NetSSL_OpenSSL_WEC2013_vs120.vcxproj index 6d76222c3..e467217dc 100644 --- a/NetSSL_OpenSSL/NetSSL_OpenSSL_WEC2013_vs120.vcxproj +++ b/NetSSL_OpenSSL/NetSSL_OpenSSL_WEC2013_vs120.vcxproj @@ -98,31 +98,31 @@ ..\bin\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\NetSSL_OpenSSL\$(Platform)\$(Configuration)\ true true ..\bin\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\NetSSL_OpenSSL\$(Platform)\$(Configuration)\ false true ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\NetSSL_OpenSSL\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\NetSSL_OpenSSL\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\NetSSL_OpenSSL\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\NetSSL_OpenSSL\$(Platform)\$(Configuration)\ diff --git a/NetSSL_OpenSSL/NetSSL_OpenSSL_WEC2013_vs120.vcxproj.filters b/NetSSL_OpenSSL/NetSSL_OpenSSL_WEC2013_vs120.vcxproj.filters index bf753d218..6487a0db8 100644 --- a/NetSSL_OpenSSL/NetSSL_OpenSSL_WEC2013_vs120.vcxproj.filters +++ b/NetSSL_OpenSSL/NetSSL_OpenSSL_WEC2013_vs120.vcxproj.filters @@ -2,40 +2,40 @@ - {abb60afd-c6be-411c-8469-a40ffd2e8040} + {14dc67f3-ac0c-4f72-940f-90a2384baee4} - {e7e09f7b-0f20-4928-9ce7-fcb33321fafc} + {6d61ae9f-daf0-43a1-95c7-81a23602bdd6} - {c27d14ea-3d73-4829-8c0a-404e930e8887} + {cc3a7739-b55b-4224-898f-912c4a128acf} - {950274e7-58b2-40ba-8848-a4ad51a576c3} + {b3ca7895-a97c-499e-a242-31bc268182aa} - {cfc2adf6-deb9-400c-8919-89ee58a3066f} + {a8ad7620-8827-47c8-8860-8f1e297bd158} - {bb72d35f-b1b5-4d71-bbea-976b991efaca} + {195dfb47-7d93-46c1-bc04-530e09aab103} - {d1930539-5e3e-487c-b46d-009c3288164e} + {b6118d06-1484-4581-be56-125a18b35f6e} - {1aa79bfc-d5ea-4064-8e62-cd98139576dc} + {88c8d53e-bde9-4304-afcf-60bec3c18455} - {41fa3aa3-7cb5-4948-b424-4dcdeb09771c} + {f23f03cf-0ac3-40a8-9f41-1604c39f3fdc} - {b7cb190b-90c9-4f5d-920a-08a4f251c1d5} + {c39effec-5589-4494-946a-a6120d006861} - {ec5ef571-2ac8-464c-bc51-446746ae22e6} + {7729e773-ea3d-40bc-8ae6-37216fa1bd47} - {cbc37d03-012e-488e-b90a-15518e5367d0} + {e573634f-c631-4a11-852f-805ad8c24076} diff --git a/NetSSL_OpenSSL/NetSSL_OpenSSL_vs100.vcxproj b/NetSSL_OpenSSL/NetSSL_OpenSSL_vs100.vcxproj index f314b1c17..e31b2ef5c 100644 --- a/NetSSL_OpenSSL/NetSSL_OpenSSL_vs100.vcxproj +++ b/NetSSL_OpenSSL/NetSSL_OpenSSL_vs100.vcxproj @@ -81,19 +81,19 @@ <_ProjectFileVersion>10.0.40219.1 ..\bin\ - obj\$(Configuration)\ + obj\NetSSL_OpenSSL\$(Configuration)\ true ..\bin\ - obj\$(Configuration)\ + obj\NetSSL_OpenSSL\$(Configuration)\ false ..\lib\ - obj\$(Configuration)\ + obj\NetSSL_OpenSSL\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\NetSSL_OpenSSL\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\NetSSL_OpenSSL\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\NetSSL_OpenSSL\$(Configuration)\ PocoNetSSLd PocoNetSSLmdd PocoNetSSLmtd @@ -119,6 +119,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) libeay32.lib;ssleay32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -130,6 +131,7 @@ Console ..\lib\PocoNetSSLd.lib MachineX86 + %(AdditionalOptions) @@ -152,6 +154,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) libeay32.lib;ssleay32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -164,6 +167,7 @@ true ..\lib\PocoNetSSL.lib MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib\PocoNetSSLmtd.lib @@ -210,6 +215,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib\PocoNetSSLmt.lib @@ -234,6 +240,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib\PocoNetSSLmdd.lib @@ -260,6 +267,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) libeay32md.lib;ssleay32md.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) diff --git a/NetSSL_OpenSSL/NetSSL_OpenSSL_vs100.vcxproj.filters b/NetSSL_OpenSSL/NetSSL_OpenSSL_vs100.vcxproj.filters index 507006f2d..6ca27727e 100644 --- a/NetSSL_OpenSSL/NetSSL_OpenSSL_vs100.vcxproj.filters +++ b/NetSSL_OpenSSL/NetSSL_OpenSSL_vs100.vcxproj.filters @@ -2,40 +2,40 @@ - {196c8340-4e4f-4a52-bf50-84f476f4e0c0} + {96dc1fd5-96fd-4653-98ba-49db5642d303} - {c5e03230-cf62-4b1b-a951-bb77cade256f} + {0546ad2e-615c-4285-bf0e-d556fe77ddc4} - {ccc3f629-43f1-4794-916d-17bf92c5c3a9} + {382077bd-8043-4eec-8dc4-ee116395e717} - {d26e2c60-d006-4d92-966b-49313d60a83b} + {b97c4b2c-fef4-49c4-9609-de661267244c} - {bbbb4a52-5f7d-4207-857e-350267bbb28f} + {a312406b-d6ba-4e21-8ac9-405abbbdcdb6} - {a567c33b-5680-4828-a912-8c1914e32e7a} + {e1cd14de-5945-4606-8b19-1d9ea4c22e78} - {8eced87a-8b6a-4500-bd7e-be0f9e2d1554} + {2914324b-cfbf-450a-b190-bbf992a751e9} - {783c8129-014f-437a-bde2-8de2966ba400} + {963114b9-6785-49ae-9cc6-9c18111615cf} - {3677335e-1974-4c6a-a7e5-5008758acf1d} + {958d989c-770b-4c17-b2c2-c89e2e834e85} - {849af966-a630-4ed4-8c36-679ef44523cc} + {4a53e56f-1e77-43bc-aae7-716f48746031} - {9dd31307-192c-48db-9aa0-5d020ecdfd11} + {dca9ef1f-aca5-4c94-a168-ec1a15e6b9a6} - {594f0837-3eb2-4f5d-8796-3b7af6cb1847} + {753dd4b8-7fd9-4abc-825b-ef644759ff3c} diff --git a/NetSSL_OpenSSL/NetSSL_OpenSSL_vs110.vcxproj b/NetSSL_OpenSSL/NetSSL_OpenSSL_vs110.vcxproj index ce7f00111..60c46fae9 100644 --- a/NetSSL_OpenSSL/NetSSL_OpenSSL_vs110.vcxproj +++ b/NetSSL_OpenSSL/NetSSL_OpenSSL_vs110.vcxproj @@ -95,29 +95,29 @@ ..\bin\ - obj\$(Configuration)\ + obj\NetSSL_OpenSSL\$(Configuration)\ true ..\bin\ - obj\$(Configuration)\ + obj\NetSSL_OpenSSL\$(Configuration)\ false ..\lib\ - obj\$(Configuration)\ + obj\NetSSL_OpenSSL\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\NetSSL_OpenSSL\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\NetSSL_OpenSSL\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\NetSSL_OpenSSL\$(Configuration)\ diff --git a/NetSSL_OpenSSL/NetSSL_OpenSSL_vs110.vcxproj.filters b/NetSSL_OpenSSL/NetSSL_OpenSSL_vs110.vcxproj.filters index 9cdf8e7e0..b21ad29ba 100644 --- a/NetSSL_OpenSSL/NetSSL_OpenSSL_vs110.vcxproj.filters +++ b/NetSSL_OpenSSL/NetSSL_OpenSSL_vs110.vcxproj.filters @@ -2,40 +2,40 @@ - {5762a142-c301-458b-9788-6009d6a88236} + {5fa23bdf-cdcc-4cb5-a687-a4999dd4c7bb} - {001ee87d-3ce4-46ce-af92-91df211e3f77} + {95ab8ad1-7272-4fd9-a4af-d6fd0da308f8} - {1a058151-905d-4512-83a0-045f87a61578} + {d47f038a-3930-46dd-98ed-eaf1de8d5214} - {bdafa831-a19a-40fb-8400-07f8434a739a} + {b69a6800-d9c9-4f95-9f7a-b3ce41d9fb68} - {6fc8ea4d-0895-4689-a2de-4ff707d07bee} + {bb61ce3d-a65c-45a7-91bd-38b749ab9bac} - {2b1ade5f-d93b-404d-8267-c1d24119ead6} + {12086c43-7e46-4719-8a1f-ea70bee28618} - {15196e2b-c804-456a-9267-fb17684cbc88} + {7c0f2899-da8b-448d-b83c-70564088fb7b} - {5c68fdcf-ad0d-4325-b09d-eae980ab5610} + {444178a1-b170-485d-b71d-cbdf8bf2c241} - {e833fce7-2199-4e9e-832d-4c5f67dc119a} + {d7c1fc05-744d-4002-8bb6-9af5d1091093} - {771fb31a-8e21-4553-a35d-de18d22caf07} + {b0bdb22c-cb42-4e75-8bf1-18fad333dfaf} - {45f879b8-4e4d-4be5-aabe-ee8f54f21f3f} + {d471d521-242b-4773-99df-881c27650989} - {9592e240-9af5-4d69-98e2-d57fc5be901a} + {c99ae7bd-a222-4fcf-ae62-992714b837a1} diff --git a/NetSSL_OpenSSL/NetSSL_OpenSSL_vs120.vcxproj b/NetSSL_OpenSSL/NetSSL_OpenSSL_vs120.vcxproj index a37a3aad9..d3b75acb1 100644 --- a/NetSSL_OpenSSL/NetSSL_OpenSSL_vs120.vcxproj +++ b/NetSSL_OpenSSL/NetSSL_OpenSSL_vs120.vcxproj @@ -95,29 +95,29 @@ ..\bin\ - obj\$(Configuration)\ + obj\NetSSL_OpenSSL\$(Configuration)\ true ..\bin\ - obj\$(Configuration)\ + obj\NetSSL_OpenSSL\$(Configuration)\ false ..\lib\ - obj\$(Configuration)\ + obj\NetSSL_OpenSSL\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\NetSSL_OpenSSL\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\NetSSL_OpenSSL\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\NetSSL_OpenSSL\$(Configuration)\ diff --git a/NetSSL_OpenSSL/NetSSL_OpenSSL_vs120.vcxproj.filters b/NetSSL_OpenSSL/NetSSL_OpenSSL_vs120.vcxproj.filters index 41d045895..956b6f3e6 100644 --- a/NetSSL_OpenSSL/NetSSL_OpenSSL_vs120.vcxproj.filters +++ b/NetSSL_OpenSSL/NetSSL_OpenSSL_vs120.vcxproj.filters @@ -2,40 +2,40 @@ - {61fdddf0-d38f-44e4-be6c-dc49263fff90} + {d91fc319-41dd-4ed9-a932-e144bdf5fea7} - {d59a9b61-e96b-4fcb-82cf-0685b9ddc34c} + {18065599-6360-4253-800e-4dc5eeec62c8} - {c61eac6d-9d4f-47bc-804b-3ec2acf0d890} + {28c4d465-d3ae-4e77-8dd5-1208929afbba} - {503912b0-3fa4-4dee-b11c-ac0716892e65} + {67e2f57a-bea5-408a-99b8-9a0a617161bb} - {4cb300b3-a6b7-4f06-8874-1bb98558b912} + {c85a1850-9af7-45dc-915d-6f89a3748021} - {9d73bb9f-9b87-4e0b-b3e2-dc3cc553e36e} + {6fb95e4f-e8d5-4aff-b592-9c079780e9fc} - {9c77ef24-dc7c-45c7-a07f-90322b95170d} + {0fb742ff-efaf-494e-b7b7-55cb1ac97a96} - {79eeea64-c2e5-4356-8056-5b4c351a07b7} + {6664da0e-f7c5-4aec-baa6-ef7cfa33907a} - {47f1ee07-9d90-42c1-a4cb-73e4b1011876} + {05550644-040b-4d0c-a45b-25a95691d90e} - {4fb1d9b1-dd97-4261-87e1-6cc42a370310} + {e0e39871-f2a3-40ae-b800-18aad351ed52} - {2248228c-90ce-4594-b39d-eb10e33382bc} + {30484c1b-9276-452b-8924-0ca32ce49d8a} - {bad79296-f8b1-4711-bc89-8d93e3baddda} + {ad5e7758-dacb-495e-b544-d755340f2698} diff --git a/NetSSL_OpenSSL/NetSSL_OpenSSL_vs71.vcproj b/NetSSL_OpenSSL/NetSSL_OpenSSL_vs71.vcproj index e10cf83ab..a52086434 100644 --- a/NetSSL_OpenSSL/NetSSL_OpenSSL_vs71.vcproj +++ b/NetSSL_OpenSSL/NetSSL_OpenSSL_vs71.vcproj @@ -37,7 +37,8 @@ Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" CompileAs="0" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> @@ -274,7 +280,8 @@ Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" CompileAs="0" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> diff --git a/NetSSL_OpenSSL/NetSSL_OpenSSL_vs80.vcproj b/NetSSL_OpenSSL/NetSSL_OpenSSL_vs80.vcproj index b47d3e658..737a1597d 100644 --- a/NetSSL_OpenSSL/NetSSL_OpenSSL_vs80.vcproj +++ b/NetSSL_OpenSSL/NetSSL_OpenSSL_vs80.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="4" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 ..\bin64\ - obj64\$(Configuration)\ + obj64\NetSSL_OpenSSL\$(Configuration)\ true ..\bin64\ - obj64\$(Configuration)\ + obj64\NetSSL_OpenSSL\$(Configuration)\ false ..\lib64\ - obj64\$(Configuration)\ + obj64\NetSSL_OpenSSL\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\NetSSL_OpenSSL\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\NetSSL_OpenSSL\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\NetSSL_OpenSSL\$(Configuration)\ PocoNetSSL64d PocoNetSSLmdd PocoNetSSLmtd @@ -119,6 +119,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) libeay32.lib;ssleay32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -130,6 +131,7 @@ Console ..\lib64\PocoNetSSLd.lib MachineX64 + %(AdditionalOptions) @@ -152,6 +154,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) libeay32.lib;ssleay32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -164,6 +167,7 @@ true ..\lib64\PocoNetSSL.lib MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib64\PocoNetSSLmtd.lib @@ -210,6 +215,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib64\PocoNetSSLmt.lib @@ -234,6 +240,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib64\PocoNetSSLmdd.lib @@ -259,6 +266,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib64\PocoNetSSLmd.lib diff --git a/NetSSL_OpenSSL/NetSSL_OpenSSL_x64_vs100.vcxproj.filters b/NetSSL_OpenSSL/NetSSL_OpenSSL_x64_vs100.vcxproj.filters index cc829ad81..c9d3c4907 100644 --- a/NetSSL_OpenSSL/NetSSL_OpenSSL_x64_vs100.vcxproj.filters +++ b/NetSSL_OpenSSL/NetSSL_OpenSSL_x64_vs100.vcxproj.filters @@ -2,40 +2,40 @@ - {2257cd38-e131-412e-acd6-b5a2e0e4fcee} + {fbf5934b-9ae1-48d6-81f4-f38025b6a2b5} - {d317c775-9ca2-4f70-811f-60540946a207} + {eae922cd-2a7a-49b8-9c49-b26e9789b9c8} - {fd6a57df-1817-431a-8b4c-7d8ffc9e4832} + {5924b6d3-5333-4b6f-bfbf-612e94305912} - {3bb642a7-00f3-4ac9-8bb2-8f7ac70a7cfb} + {2fc2bc19-6798-48d2-bf08-5b3ed960f22a} - {4d0dc3ca-1d65-4c4e-8a70-b87561c591db} + {e9acb043-3694-4e95-8637-57a7226b2e4d} - {e9d285ed-6693-4a8c-b3f6-62ba8debc6f8} + {16519e14-33c9-40c7-a2de-11c3e05c3ea4} - {72c52934-c0ec-419f-9c15-5e7eb788fbde} + {ae6c5f7c-c56f-47e8-90a9-b3767930a2e1} - {f3f55441-657d-4b66-83ef-2dc741c2ac04} + {91ee3cb3-3366-482b-bcf2-f45f94af32fd} - {9969357a-c420-447b-b604-bc3738c4863a} + {85f2a464-ffa9-485d-82d3-91cb62c2208d} - {bc8d383a-2152-4891-a0ec-0aca396b073c} + {5a84bb49-2bf5-4d49-bc78-83c64293d48b} - {85bb204d-3c1d-4784-bd52-846b1c9e7fff} + {0fd2d2ae-37b7-461c-a7f4-35bda93a15f0} - {3bf594a4-4a84-44b4-8bd9-2a4c8f78b77b} + {00f092db-0791-404d-b8e6-af9c98877b0b} diff --git a/NetSSL_OpenSSL/NetSSL_OpenSSL_x64_vs110.vcxproj b/NetSSL_OpenSSL/NetSSL_OpenSSL_x64_vs110.vcxproj index 0445649a3..3f6c018a8 100644 --- a/NetSSL_OpenSSL/NetSSL_OpenSSL_x64_vs110.vcxproj +++ b/NetSSL_OpenSSL/NetSSL_OpenSSL_x64_vs110.vcxproj @@ -95,29 +95,29 @@ ..\bin64\ - obj64\$(Configuration)\ + obj64\NetSSL_OpenSSL\$(Configuration)\ true ..\bin64\ - obj64\$(Configuration)\ + obj64\NetSSL_OpenSSL\$(Configuration)\ false ..\lib64\ - obj64\$(Configuration)\ + obj64\NetSSL_OpenSSL\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\NetSSL_OpenSSL\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\NetSSL_OpenSSL\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\NetSSL_OpenSSL\$(Configuration)\ diff --git a/NetSSL_OpenSSL/NetSSL_OpenSSL_x64_vs110.vcxproj.filters b/NetSSL_OpenSSL/NetSSL_OpenSSL_x64_vs110.vcxproj.filters index 93ff876ba..5200347fd 100644 --- a/NetSSL_OpenSSL/NetSSL_OpenSSL_x64_vs110.vcxproj.filters +++ b/NetSSL_OpenSSL/NetSSL_OpenSSL_x64_vs110.vcxproj.filters @@ -2,40 +2,40 @@ - {9171e409-edf7-4a92-9390-01939ef2a825} + {893f09db-6599-4f01-bae4-b9de3fddb52d} - {412d77a2-f24b-455d-8093-f8efe288d544} + {663e26c2-999a-4303-8bf4-176e5342e628} - {7976977c-c929-42c3-a2b7-627732b6ebd2} + {67f6e5dc-fba1-42fb-9671-72fdc8cb3feb} - {5f5479f3-0b4c-4025-8d83-273a8ae5579f} + {7adab8c6-f73a-4322-b6df-76414ddd19b4} - {cdd45d3c-dab9-408d-9909-151ccad23169} + {3c9d6ce3-37fe-4a93-91aa-a8e51013cbfa} - {4b212949-7368-40dd-bb32-0c294d14b24e} + {c33aa6f4-a1fc-431d-a2f1-47776b0fcf6e} - {202e5447-f850-4afc-a025-6dba52882956} + {c605bba7-f8e4-477a-9087-c599beefc00f} - {8393f1db-30bf-4afb-a301-6abce92a5e9c} + {7e64836a-21f3-4224-a005-81f7e09a5b16} - {549c231e-be51-4a19-9539-e8aa44840a1f} + {5e0482dc-10e3-496e-bebd-f8f3216647f5} - {174c564c-5fa9-43f1-bc09-0621669b7b35} + {2f442609-8f20-49c0-b028-5b0f759a8769} - {e81d290e-a238-47d7-8e97-a97cacbc25cd} + {79686d7c-f320-4c02-9d21-612025503d56} - {de8433d3-3c4c-4446-af2c-c9dfe90bf642} + {8735c16d-ba30-4edb-9d26-eed9ac09abd2} diff --git a/NetSSL_OpenSSL/NetSSL_OpenSSL_x64_vs120.vcxproj b/NetSSL_OpenSSL/NetSSL_OpenSSL_x64_vs120.vcxproj index de1b3427e..93887ea8b 100644 --- a/NetSSL_OpenSSL/NetSSL_OpenSSL_x64_vs120.vcxproj +++ b/NetSSL_OpenSSL/NetSSL_OpenSSL_x64_vs120.vcxproj @@ -95,29 +95,29 @@ ..\bin64\ - obj64\$(Configuration)\ + obj64\NetSSL_OpenSSL\$(Configuration)\ true ..\bin64\ - obj64\$(Configuration)\ + obj64\NetSSL_OpenSSL\$(Configuration)\ false ..\lib64\ - obj64\$(Configuration)\ + obj64\NetSSL_OpenSSL\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\NetSSL_OpenSSL\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\NetSSL_OpenSSL\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\NetSSL_OpenSSL\$(Configuration)\ diff --git a/NetSSL_OpenSSL/NetSSL_OpenSSL_x64_vs120.vcxproj.filters b/NetSSL_OpenSSL/NetSSL_OpenSSL_x64_vs120.vcxproj.filters index b96432b4d..e191ea04c 100644 --- a/NetSSL_OpenSSL/NetSSL_OpenSSL_x64_vs120.vcxproj.filters +++ b/NetSSL_OpenSSL/NetSSL_OpenSSL_x64_vs120.vcxproj.filters @@ -2,40 +2,40 @@ - {cc303d88-c045-4404-83eb-728d08a22358} + {448437b4-9af1-4150-afd3-a616fa76e0b9} - {39171434-078c-4f3e-aff3-618e3afdd281} + {2e7e3efd-3fe4-45e7-888b-874402b48371} - {28f1c37a-5c77-4430-bef3-4bfeb09c9580} + {d71c2f87-30f0-44ae-8a16-f21d4340437e} - {724a4643-52b2-43ce-858a-117fdfad0c04} + {f532bfb1-7d36-4f4c-bb8f-73b47a2ebfc1} - {79dd28c9-4e6a-4b5d-a75d-5efd43f237a0} + {34865836-0d85-4c2e-b243-670283f5e81b} - {f9cb3a6d-75df-47ab-b0c1-ec5370f87911} + {5f15e4ba-d191-4e88-b990-fca1f5e3485b} - {707fd74a-cc64-4b11-9492-a502bb2be810} + {94ebf5db-633a-4da4-9dd7-212b46030008} - {acdbc1a6-c10b-4a77-9dd6-6685ab0e562f} + {1cf419f5-c806-465e-ba9a-61bd48c2983a} - {c10d6b55-0724-425d-bd0d-592509d1c726} + {a710a50b-73c9-4d81-a090-720d58639f9e} - {d1baecb8-fdd9-4f28-ab58-498418f0f1ac} + {07fb57b3-7420-4214-9a8e-f6f63a49dc14} - {accbf463-1060-4be7-8d1b-085d4884430e} + {55bdd70e-6ba5-42ba-9436-2edbe5f2aebb} - {df4c2951-0412-4e42-a968-8f6da4aaa359} + {2125a2a4-9cf4-430f-97df-9c463307c5c7} diff --git a/NetSSL_OpenSSL/NetSSL_OpenSSL_x64_vs90.vcproj b/NetSSL_OpenSSL/NetSSL_OpenSSL_x64_vs90.vcproj index 3a384db52..527d827c7 100644 --- a/NetSSL_OpenSSL/NetSSL_OpenSSL_x64_vs90.vcproj +++ b/NetSSL_OpenSSL/NetSSL_OpenSSL_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> 0..n /// true|false /// true|false + /// true|false + /// true|false /// /// false /// @@ -133,6 +135,8 @@ class NetSSL_API SSLManager /// - extendedVerification (boolean): Enable or disable the automatic post-connection /// extended certificate verification. /// - requireTLSv1 (boolean): Require a TLSv1 connection. + /// - requireTLSv1_1 (boolean): Require a TLSv1.1 connection. + /// - requireTLSv1_2 (boolean): Require a TLSv1.2 connection. /// - fips: Enable or disable OpenSSL FIPS mode. Only supported if the OpenSSL version /// that this library is built against supports FIPS mode. { @@ -255,7 +259,8 @@ protected: static Poco::Util::AbstractConfiguration& appConfig(); /// Returns the application configuration. /// - /// Throws a + /// Throws a InvalidStateException if not application instance + /// is available. private: SSLManager(); @@ -313,6 +318,8 @@ private: static const std::string CFG_SESSION_TIMEOUT; static const std::string CFG_EXTENDED_VERIFICATION; static const std::string CFG_REQUIRE_TLSV1; + static const std::string CFG_REQUIRE_TLSV1_1; + static const std::string CFG_REQUIRE_TLSV1_2; #ifdef OPENSSL_FIPS static const std::string CFG_FIPS_MODE; diff --git a/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_CE_vs90.vcproj b/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_CE_vs90.vcproj index eb0b20fe3..3c6dc0e0e 100644 --- a/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_CE_vs90.vcproj +++ b/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_CE_vs90.vcproj @@ -46,7 +46,8 @@ CompileAs="0" DisableSpecificWarnings="4800;" CompileForArchitecture="2" - InterworkCalls="false"/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + + + + debug_shared + SDK_AM335X_SK_WEC2013_V300 + + + debug_static_md + SDK_AM335X_SK_WEC2013_V300 + + + debug_static_mt + SDK_AM335X_SK_WEC2013_V300 + + + release_shared + SDK_AM335X_SK_WEC2013_V300 + + + release_static_md + SDK_AM335X_SK_WEC2013_V300 + + + release_static_mt + SDK_AM335X_SK_WEC2013_V300 + + + + HTTPSTimeServer + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9} + en-US + 11.0 + true + SDK_AM335X_SK_WEC2013_V300 + CE800 + + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>11.0.61030.0 + HTTPSTimeServerd + HTTPSTimeServerd + HTTPSTimeServerd + HTTPSTimeServer + HTTPSTimeServer + HTTPSTimeServer + + + bin\$(Platform)\shared\ + obj\HTTPSTimeServer\$(Platform)\$(Configuration)\ + true + + + bin\$(Platform)\shared\ + obj\HTTPSTimeServer\$(Platform)\$(Configuration)\ + false + + + bin\$(Platform)\static_mt\ + obj\HTTPSTimeServer\$(Platform)\$(Configuration)\ + true + + + bin\$(Platform)\static_mt\ + obj\HTTPSTimeServer\$(Platform)\$(Configuration)\ + false + + + bin\$(Platform)\static_md\ + obj\HTTPSTimeServer\$(Platform)\$(Configuration)\ + true + + + bin\$(Platform)\static_md\ + obj\HTTPSTimeServer\$(Platform)\$(Configuration)\ + false + + + + Disabled + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_OpenSSL\include;..\..\..\Crypto\include;%(AdditionalIncludeDirectories) + _DEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebugDLL + true + true + + Level3 + ProgramDatabase + Default + + + libeay32.lib;ssleay32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\shared\HTTPSTimeServerd.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + true + bin\$(Platform)\shared\HTTPSTimeServerd.pdb + mainCRTStartup + WindowsCE + + + + + Disabled + true + Speed + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_OpenSSL\include;..\..\..\Crypto\include;%(AdditionalIncludeDirectories) + NDEBUG;$(ProjectName)_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDLL + false + true + Level3 + ProgramDatabase + + + libeay32.lib;ssleay32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\shared\HTTPSTimeServer.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + false + + true + true + mainCRTStartup + WindowsCE + + + + + Disabled + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_OpenSSL\include;..\..\..\Crypto\include;%(AdditionalIncludeDirectories) + _DEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebug + true + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;libeay32mtd.lib;ssleay32mtd.lib;Crypt32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\static_mt\HTTPSTimeServerd.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + true + bin\$(Platform)\static_mt\HTTPSTimeServerd.pdb + mainCRTStartup + WindowsCE + + + + + Disabled + Default + true + Speed + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_OpenSSL\include;..\..\..\Crypto\include;%(AdditionalIncludeDirectories) + NDEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreaded + false + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;libeay32mt.lib;ssleay32mt.lib;Crypt32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\static_mt\HTTPSTimeServer.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + false + + true + true + mainCRTStartup + WindowsCE + + + + + Disabled + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_OpenSSL\include;..\..\..\Crypto\include;%(AdditionalIncludeDirectories) + _DEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebugDLL + true + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;libeay32mdd.lib;ssleay32mdd.lib;Crypt32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\static_md\HTTPSTimeServerd.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + true + bin\$(Platform)\static_md\HTTPSTimeServerd.pdb + mainCRTStartup + WindowsCE + + + + + Disabled + Default + true + Speed + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_OpenSSL\include;..\..\..\Crypto\include;%(AdditionalIncludeDirectories) + NDEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDLL + false + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;libeay32md.lib;ssleay32md.lib;Crypt32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\static_md\HTTPSTimeServer.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + false + + true + true + mainCRTStartup + WindowsCE + + + + + + + + + + + diff --git a/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_WEC2013_vs110.vcxproj.filters b/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_WEC2013_vs110.vcxproj.filters new file mode 100644 index 000000000..a817a0334 --- /dev/null +++ b/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_WEC2013_vs110.vcxproj.filters @@ -0,0 +1,21 @@ + + + + + {023e0f81-2386-438d-bcfb-60de798e39a1} + + + {3a71dae0-4698-4844-afba-0e2646d37e1f} + + + + + Configuration Files + + + + + Source Files + + + \ No newline at end of file diff --git a/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_WEC2013_vs120.vcxproj b/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_WEC2013_vs120.vcxproj index 1e294477f..12c34b8e0 100644 --- a/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_WEC2013_vs120.vcxproj +++ b/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\HTTPSTimeServer\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\HTTPSTimeServer\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\HTTPSTimeServer\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\HTTPSTimeServer\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\HTTPSTimeServer\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\HTTPSTimeServer\$(Platform)\$(Configuration)\ false diff --git a/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_WEC2013_vs120.vcxproj.filters b/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_WEC2013_vs120.vcxproj.filters index 69ed6fcbc..9f15788f0 100644 --- a/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_WEC2013_vs120.vcxproj.filters +++ b/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_WEC2013_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {be9476dc-2725-4194-8957-86ebca00dbd5} + {1bb150cc-27d9-47dc-bfc8-de69f8b52fa0} - {0e68ccc4-e3f6-40d9-be0b-6adce7242d51} + {070d655e-c66d-498c-9ef9-867fbeab6734} diff --git a/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_vs100.vcxproj b/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_vs100.vcxproj index 86f17c4b6..7c800ee8f 100644 --- a/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_vs100.vcxproj +++ b/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\HTTPSTimeServer\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\HTTPSTimeServer\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\HTTPSTimeServer\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\HTTPSTimeServer\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\HTTPSTimeServer\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\HTTPSTimeServer\$(Configuration)\ false HTTPSTimeServerd HTTPSTimeServerd @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) libeay32.lib;ssleay32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\HTTPSTimeServerd.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) libeay32.lib;ssleay32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;libeay32mtd.lib;ssleay32mtd.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\HTTPSTimeServerd.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;libeay32mt.lib;ssleay32mt.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;libeay32mdd.lib;ssleay32mdd.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\HTTPSTimeServerd.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;libeay32md.lib;ssleay32md.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_vs100.vcxproj.filters b/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_vs100.vcxproj.filters index 774098e18..5c6b69044 100644 --- a/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_vs100.vcxproj.filters +++ b/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {ef179555-49bf-42d5-8877-437f82c598b9} + {acf8a1b2-5e96-4bb5-890c-8fd3a2653500} - {0beb2aab-99b1-404d-8f52-a3d14d909734} + {a2b6983d-ac4a-4baf-a22d-d520e00449ad} diff --git a/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_vs110.vcxproj b/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_vs110.vcxproj index d194f3d19..5b868b095 100644 --- a/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_vs110.vcxproj +++ b/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\HTTPSTimeServer\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\HTTPSTimeServer\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\HTTPSTimeServer\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\HTTPSTimeServer\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\HTTPSTimeServer\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\HTTPSTimeServer\$(Configuration)\ false diff --git a/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_vs110.vcxproj.filters b/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_vs110.vcxproj.filters index 790dabe51..2639be832 100644 --- a/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_vs110.vcxproj.filters +++ b/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {9f447ffb-1449-4e11-95a4-a53b4b857c40} + {dc8db343-ee6a-40aa-ba75-192ae79756d5} - {452fc0a9-cd7e-42b9-b1d8-632159cbd09f} + {322a5925-f53f-488d-97e9-aa2f9d31472b} diff --git a/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_vs120.vcxproj b/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_vs120.vcxproj index c0d236962..4ed5b16cd 100644 --- a/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_vs120.vcxproj +++ b/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\HTTPSTimeServer\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\HTTPSTimeServer\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\HTTPSTimeServer\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\HTTPSTimeServer\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\HTTPSTimeServer\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\HTTPSTimeServer\$(Configuration)\ false diff --git a/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_vs120.vcxproj.filters b/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_vs120.vcxproj.filters index 8abcdb1ba..89e632f51 100644 --- a/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_vs120.vcxproj.filters +++ b/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {02d341ea-4bea-4f83-8c16-731541bc9e7e} + {403d4bf0-a00f-43b9-9f40-4c9493151e81} - {5c515285-99f5-4e5f-853c-5f00419a281b} + {1363228b-c476-4138-ac0a-756cacd1d95c} diff --git a/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_vs71.vcproj b/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_vs71.vcproj index 3769973a4..1db29eaf4 100644 --- a/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_vs71.vcproj +++ b/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\HTTPSTimeServer\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\HTTPSTimeServer\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\HTTPSTimeServer\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\HTTPSTimeServer\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\HTTPSTimeServer\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\HTTPSTimeServer\$(Configuration)\ false HTTPSTimeServerd HTTPSTimeServerd @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) libeay32.lib;ssleay32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\HTTPSTimeServerd.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) libeay32.lib;ssleay32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;libeay32mtd.lib;ssleay32mtd.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\HTTPSTimeServerd.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;libeay32mt.lib;ssleay32mt.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;libeay32mdd.lib;ssleay32mdd.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\HTTPSTimeServerd.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;libeay32md.lib;ssleay32md.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_x64_vs100.vcxproj.filters b/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_x64_vs100.vcxproj.filters index 61449c1fe..e52c21f88 100644 --- a/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_x64_vs100.vcxproj.filters +++ b/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {14eb2c6f-c001-46f1-be13-97788549e867} + {fe81cfc9-ca1b-4515-8b10-3b694e55d485} - {d8f5f860-0bb3-49f5-b5f0-9ee7484c95e9} + {13ceecc3-fb7d-41bf-af9a-cf99420b1fa8} diff --git a/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_x64_vs110.vcxproj b/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_x64_vs110.vcxproj index 287e27705..aa24ef82f 100644 --- a/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_x64_vs110.vcxproj +++ b/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\HTTPSTimeServer\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\HTTPSTimeServer\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\HTTPSTimeServer\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\HTTPSTimeServer\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\HTTPSTimeServer\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\HTTPSTimeServer\$(Configuration)\ false diff --git a/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_x64_vs110.vcxproj.filters b/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_x64_vs110.vcxproj.filters index a76eca451..9c7676c6a 100644 --- a/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_x64_vs110.vcxproj.filters +++ b/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {027ba51a-dee1-4960-bd1c-4089def11599} + {3e66fb7a-cd5b-4274-a95b-9ab353c28ea1} - {6ca8df04-9cd0-45f0-b44d-01636d37b25d} + {27976c92-08b1-472c-844e-441cf14f7011} diff --git a/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_x64_vs120.vcxproj b/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_x64_vs120.vcxproj index 677122145..acffbc5e3 100644 --- a/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_x64_vs120.vcxproj +++ b/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\HTTPSTimeServer\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\HTTPSTimeServer\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\HTTPSTimeServer\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\HTTPSTimeServer\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\HTTPSTimeServer\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\HTTPSTimeServer\$(Configuration)\ false diff --git a/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_x64_vs120.vcxproj.filters b/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_x64_vs120.vcxproj.filters index 757f2650f..38a2cc470 100644 --- a/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_x64_vs120.vcxproj.filters +++ b/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {ef5d6141-c58e-4e46-b4cf-72aadb3152be} + {37e6690e-d43c-4cd4-a8c9-049e730320c1} - {a037771b-d19a-40ee-a0e8-b2df94254be0} + {b7f769e4-0d47-4ea1-8fa2-6c78fb055a1e} diff --git a/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_x64_vs90.vcproj b/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_x64_vs90.vcproj index daa9241ef..744181d93 100644 --- a/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_x64_vs90.vcproj +++ b/NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + + + + debug_shared + SDK_AM335X_SK_WEC2013_V300 + + + debug_static_md + SDK_AM335X_SK_WEC2013_V300 + + + debug_static_mt + SDK_AM335X_SK_WEC2013_V300 + + + release_shared + SDK_AM335X_SK_WEC2013_V300 + + + release_static_md + SDK_AM335X_SK_WEC2013_V300 + + + release_static_mt + SDK_AM335X_SK_WEC2013_V300 + + + + Mail + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA} + en-US + 11.0 + true + SDK_AM335X_SK_WEC2013_V300 + CE800 + + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>11.0.61030.0 + Maild + Maild + Maild + Mail + Mail + Mail + + + bin\$(Platform)\shared\ + obj\Mail\$(Platform)\$(Configuration)\ + true + + + bin\$(Platform)\shared\ + obj\Mail\$(Platform)\$(Configuration)\ + false + + + bin\$(Platform)\static_mt\ + obj\Mail\$(Platform)\$(Configuration)\ + true + + + bin\$(Platform)\static_mt\ + obj\Mail\$(Platform)\$(Configuration)\ + false + + + bin\$(Platform)\static_md\ + obj\Mail\$(Platform)\$(Configuration)\ + true + + + bin\$(Platform)\static_md\ + obj\Mail\$(Platform)\$(Configuration)\ + false + + + + Disabled + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_OpenSSL\include;..\..\..\Crypto\include;%(AdditionalIncludeDirectories) + _DEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebugDLL + true + true + + Level3 + ProgramDatabase + Default + + + libeay32.lib;ssleay32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\shared\Maild.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + true + bin\$(Platform)\shared\Maild.pdb + mainCRTStartup + WindowsCE + + + + + Disabled + true + Speed + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_OpenSSL\include;..\..\..\Crypto\include;%(AdditionalIncludeDirectories) + NDEBUG;$(ProjectName)_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDLL + false + true + Level3 + ProgramDatabase + + + libeay32.lib;ssleay32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\shared\Mail.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + false + + true + true + mainCRTStartup + WindowsCE + + + + + Disabled + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_OpenSSL\include;..\..\..\Crypto\include;%(AdditionalIncludeDirectories) + _DEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebug + true + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;libeay32mtd.lib;ssleay32mtd.lib;Crypt32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\static_mt\Maild.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + true + bin\$(Platform)\static_mt\Maild.pdb + mainCRTStartup + WindowsCE + + + + + Disabled + Default + true + Speed + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_OpenSSL\include;..\..\..\Crypto\include;%(AdditionalIncludeDirectories) + NDEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreaded + false + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;libeay32mt.lib;ssleay32mt.lib;Crypt32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\static_mt\Mail.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + false + + true + true + mainCRTStartup + WindowsCE + + + + + Disabled + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_OpenSSL\include;..\..\..\Crypto\include;%(AdditionalIncludeDirectories) + _DEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebugDLL + true + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;libeay32mdd.lib;ssleay32mdd.lib;Crypt32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\static_md\Maild.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + true + bin\$(Platform)\static_md\Maild.pdb + mainCRTStartup + WindowsCE + + + + + Disabled + Default + true + Speed + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_OpenSSL\include;..\..\..\Crypto\include;%(AdditionalIncludeDirectories) + NDEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDLL + false + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;libeay32md.lib;ssleay32md.lib;Crypt32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\static_md\Mail.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + false + + true + true + mainCRTStartup + WindowsCE + + + + + + + + + + + diff --git a/NetSSL_OpenSSL/samples/Mail/Mail_WEC2013_vs110.vcxproj.filters b/NetSSL_OpenSSL/samples/Mail/Mail_WEC2013_vs110.vcxproj.filters new file mode 100644 index 000000000..5f7a9c7b8 --- /dev/null +++ b/NetSSL_OpenSSL/samples/Mail/Mail_WEC2013_vs110.vcxproj.filters @@ -0,0 +1,18 @@ + + + + + {464477e4-a058-439d-bab2-33803990db7d} + + + + + Source Files + + + + + Source Files + + + \ No newline at end of file diff --git a/NetSSL_OpenSSL/samples/Mail/Mail_WEC2013_vs120.vcxproj b/NetSSL_OpenSSL/samples/Mail/Mail_WEC2013_vs120.vcxproj index 87c87cb8b..41e829c7f 100644 --- a/NetSSL_OpenSSL/samples/Mail/Mail_WEC2013_vs120.vcxproj +++ b/NetSSL_OpenSSL/samples/Mail/Mail_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\Mail\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\Mail\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\Mail\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\Mail\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\Mail\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\Mail\$(Platform)\$(Configuration)\ false diff --git a/NetSSL_OpenSSL/samples/Mail/Mail_WEC2013_vs120.vcxproj.filters b/NetSSL_OpenSSL/samples/Mail/Mail_WEC2013_vs120.vcxproj.filters index 82f564369..54d20cef1 100644 --- a/NetSSL_OpenSSL/samples/Mail/Mail_WEC2013_vs120.vcxproj.filters +++ b/NetSSL_OpenSSL/samples/Mail/Mail_WEC2013_vs120.vcxproj.filters @@ -2,7 +2,7 @@ - {412db2ff-4780-4ff8-8f07-a0a67c88d583} + {ff8a28eb-166b-473e-aaca-332f57d629c9} diff --git a/NetSSL_OpenSSL/samples/Mail/Mail_vs100.vcxproj b/NetSSL_OpenSSL/samples/Mail/Mail_vs100.vcxproj index d5be006c1..9c96084e9 100644 --- a/NetSSL_OpenSSL/samples/Mail/Mail_vs100.vcxproj +++ b/NetSSL_OpenSSL/samples/Mail/Mail_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\Mail\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\Mail\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\Mail\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\Mail\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\Mail\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\Mail\$(Configuration)\ false Maild Maild @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) libeay32.lib;ssleay32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\Maild.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) libeay32.lib;ssleay32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;libeay32mtd.lib;ssleay32mtd.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\Maild.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;libeay32mt.lib;ssleay32mt.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;libeay32mdd.lib;ssleay32mdd.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\Maild.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;libeay32md.lib;ssleay32md.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/NetSSL_OpenSSL/samples/Mail/Mail_vs100.vcxproj.filters b/NetSSL_OpenSSL/samples/Mail/Mail_vs100.vcxproj.filters index 9b1fd48ec..ea2cdc807 100644 --- a/NetSSL_OpenSSL/samples/Mail/Mail_vs100.vcxproj.filters +++ b/NetSSL_OpenSSL/samples/Mail/Mail_vs100.vcxproj.filters @@ -2,7 +2,7 @@ - {427482d5-d631-4e92-a94f-de8371c19689} + {6ee2c695-715d-432f-a2bc-3e93edf1fec3} diff --git a/NetSSL_OpenSSL/samples/Mail/Mail_vs110.vcxproj b/NetSSL_OpenSSL/samples/Mail/Mail_vs110.vcxproj index 432c02c4e..adbab1662 100644 --- a/NetSSL_OpenSSL/samples/Mail/Mail_vs110.vcxproj +++ b/NetSSL_OpenSSL/samples/Mail/Mail_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\Mail\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\Mail\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\Mail\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\Mail\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\Mail\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\Mail\$(Configuration)\ false diff --git a/NetSSL_OpenSSL/samples/Mail/Mail_vs110.vcxproj.filters b/NetSSL_OpenSSL/samples/Mail/Mail_vs110.vcxproj.filters index e4ab5b4aa..168eb5837 100644 --- a/NetSSL_OpenSSL/samples/Mail/Mail_vs110.vcxproj.filters +++ b/NetSSL_OpenSSL/samples/Mail/Mail_vs110.vcxproj.filters @@ -2,7 +2,7 @@ - {a2da2560-593b-4b22-b99b-3e6fd833d255} + {a8abb665-ca48-464a-826e-740acd6b753d} diff --git a/NetSSL_OpenSSL/samples/Mail/Mail_vs120.vcxproj b/NetSSL_OpenSSL/samples/Mail/Mail_vs120.vcxproj index d2f22c344..ca9ff34ff 100644 --- a/NetSSL_OpenSSL/samples/Mail/Mail_vs120.vcxproj +++ b/NetSSL_OpenSSL/samples/Mail/Mail_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\Mail\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\Mail\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\Mail\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\Mail\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\Mail\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\Mail\$(Configuration)\ false diff --git a/NetSSL_OpenSSL/samples/Mail/Mail_vs120.vcxproj.filters b/NetSSL_OpenSSL/samples/Mail/Mail_vs120.vcxproj.filters index bec0d0af0..277728969 100644 --- a/NetSSL_OpenSSL/samples/Mail/Mail_vs120.vcxproj.filters +++ b/NetSSL_OpenSSL/samples/Mail/Mail_vs120.vcxproj.filters @@ -2,7 +2,7 @@ - {6b093bef-79ec-4841-ba0d-371b84ee792c} + {889a63b4-ea07-4e82-bb07-6d13aaf6901c} diff --git a/NetSSL_OpenSSL/samples/Mail/Mail_vs71.vcproj b/NetSSL_OpenSSL/samples/Mail/Mail_vs71.vcproj index fa07e4ecf..6039c878e 100644 --- a/NetSSL_OpenSSL/samples/Mail/Mail_vs71.vcproj +++ b/NetSSL_OpenSSL/samples/Mail/Mail_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\Mail\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\Mail\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Mail\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Mail\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\Mail\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\Mail\$(Configuration)\ false Maild Maild @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) libeay32.lib;ssleay32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\Maild.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) libeay32.lib;ssleay32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;libeay32mtd.lib;ssleay32mtd.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\Maild.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;libeay32mt.lib;ssleay32mt.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;libeay32mdd.lib;ssleay32mdd.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\Maild.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;libeay32md.lib;ssleay32md.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/NetSSL_OpenSSL/samples/Mail/Mail_x64_vs100.vcxproj.filters b/NetSSL_OpenSSL/samples/Mail/Mail_x64_vs100.vcxproj.filters index d2c1f42f5..68add6732 100644 --- a/NetSSL_OpenSSL/samples/Mail/Mail_x64_vs100.vcxproj.filters +++ b/NetSSL_OpenSSL/samples/Mail/Mail_x64_vs100.vcxproj.filters @@ -2,7 +2,7 @@ - {d1d7cccd-9640-47ab-bb25-2e5109299cc4} + {e7b7eddf-9aba-4e51-94b3-5d629ff2fe29} diff --git a/NetSSL_OpenSSL/samples/Mail/Mail_x64_vs110.vcxproj b/NetSSL_OpenSSL/samples/Mail/Mail_x64_vs110.vcxproj index 2f87cf65f..ac0ad6c1b 100644 --- a/NetSSL_OpenSSL/samples/Mail/Mail_x64_vs110.vcxproj +++ b/NetSSL_OpenSSL/samples/Mail/Mail_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\Mail\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\Mail\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Mail\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Mail\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\Mail\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\Mail\$(Configuration)\ false diff --git a/NetSSL_OpenSSL/samples/Mail/Mail_x64_vs110.vcxproj.filters b/NetSSL_OpenSSL/samples/Mail/Mail_x64_vs110.vcxproj.filters index 29693de4f..a552d0274 100644 --- a/NetSSL_OpenSSL/samples/Mail/Mail_x64_vs110.vcxproj.filters +++ b/NetSSL_OpenSSL/samples/Mail/Mail_x64_vs110.vcxproj.filters @@ -2,7 +2,7 @@ - {b5becc13-17af-462f-a36d-deff75c35d6f} + {ff3db41b-6dfe-43bd-bd88-b876b792afac} diff --git a/NetSSL_OpenSSL/samples/Mail/Mail_x64_vs120.vcxproj b/NetSSL_OpenSSL/samples/Mail/Mail_x64_vs120.vcxproj index 2433a2348..933d73390 100644 --- a/NetSSL_OpenSSL/samples/Mail/Mail_x64_vs120.vcxproj +++ b/NetSSL_OpenSSL/samples/Mail/Mail_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\Mail\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\Mail\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Mail\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Mail\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\Mail\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\Mail\$(Configuration)\ false diff --git a/NetSSL_OpenSSL/samples/Mail/Mail_x64_vs120.vcxproj.filters b/NetSSL_OpenSSL/samples/Mail/Mail_x64_vs120.vcxproj.filters index 35dd8e7a7..cfcbc3e03 100644 --- a/NetSSL_OpenSSL/samples/Mail/Mail_x64_vs120.vcxproj.filters +++ b/NetSSL_OpenSSL/samples/Mail/Mail_x64_vs120.vcxproj.filters @@ -2,7 +2,7 @@ - {59a317c4-74b2-43ce-a7a9-f141ce1f5a03} + {333d810e-616e-4215-a44a-8f1c15b6cff7} diff --git a/NetSSL_OpenSSL/samples/Mail/Mail_x64_vs90.vcproj b/NetSSL_OpenSSL/samples/Mail/Mail_x64_vs90.vcproj index 54df56644..0c9e25d9a 100644 --- a/NetSSL_OpenSSL/samples/Mail/Mail_x64_vs90.vcproj +++ b/NetSSL_OpenSSL/samples/Mail/Mail_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + + + + debug_shared + SDK_AM335X_SK_WEC2013_V300 + + + debug_static_md + SDK_AM335X_SK_WEC2013_V300 + + + debug_static_mt + SDK_AM335X_SK_WEC2013_V300 + + + release_shared + SDK_AM335X_SK_WEC2013_V300 + + + release_static_md + SDK_AM335X_SK_WEC2013_V300 + + + release_static_mt + SDK_AM335X_SK_WEC2013_V300 + + + + download + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D} + en-US + 11.0 + true + SDK_AM335X_SK_WEC2013_V300 + CE800 + + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>11.0.61030.0 + downloadd + downloadd + downloadd + download + download + download + + + bin\$(Platform)\shared\ + obj\download\$(Platform)\$(Configuration)\ + true + + + bin\$(Platform)\shared\ + obj\download\$(Platform)\$(Configuration)\ + false + + + bin\$(Platform)\static_mt\ + obj\download\$(Platform)\$(Configuration)\ + true + + + bin\$(Platform)\static_mt\ + obj\download\$(Platform)\$(Configuration)\ + false + + + bin\$(Platform)\static_md\ + obj\download\$(Platform)\$(Configuration)\ + true + + + bin\$(Platform)\static_md\ + obj\download\$(Platform)\$(Configuration)\ + false + + + + Disabled + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_OpenSSL\include;..\..\..\Crypto\include;%(AdditionalIncludeDirectories) + _DEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebugDLL + true + true + + Level3 + ProgramDatabase + Default + + + libeay32.lib;ssleay32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\shared\downloadd.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + true + bin\$(Platform)\shared\downloadd.pdb + mainCRTStartup + WindowsCE + + + + + Disabled + true + Speed + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_OpenSSL\include;..\..\..\Crypto\include;%(AdditionalIncludeDirectories) + NDEBUG;$(ProjectName)_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDLL + false + true + Level3 + ProgramDatabase + + + libeay32.lib;ssleay32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\shared\download.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + false + + true + true + mainCRTStartup + WindowsCE + + + + + Disabled + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_OpenSSL\include;..\..\..\Crypto\include;%(AdditionalIncludeDirectories) + _DEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebug + true + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;libeay32mtd.lib;ssleay32mtd.lib;Crypt32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\static_mt\downloadd.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + true + bin\$(Platform)\static_mt\downloadd.pdb + mainCRTStartup + WindowsCE + + + + + Disabled + Default + true + Speed + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_OpenSSL\include;..\..\..\Crypto\include;%(AdditionalIncludeDirectories) + NDEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreaded + false + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;libeay32mt.lib;ssleay32mt.lib;Crypt32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\static_mt\download.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + false + + true + true + mainCRTStartup + WindowsCE + + + + + Disabled + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_OpenSSL\include;..\..\..\Crypto\include;%(AdditionalIncludeDirectories) + _DEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebugDLL + true + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;libeay32mdd.lib;ssleay32mdd.lib;Crypt32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\static_md\downloadd.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + true + bin\$(Platform)\static_md\downloadd.pdb + mainCRTStartup + WindowsCE + + + + + Disabled + Default + true + Speed + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_OpenSSL\include;..\..\..\Crypto\include;%(AdditionalIncludeDirectories) + NDEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDLL + false + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;libeay32md.lib;ssleay32md.lib;Crypt32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\static_md\download.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + false + + true + true + mainCRTStartup + WindowsCE + + + + + + + + diff --git a/NetSSL_OpenSSL/samples/download/download_WEC2013_vs110.vcxproj.filters b/NetSSL_OpenSSL/samples/download/download_WEC2013_vs110.vcxproj.filters new file mode 100644 index 000000000..20515a989 --- /dev/null +++ b/NetSSL_OpenSSL/samples/download/download_WEC2013_vs110.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {f66f61bd-5e7b-404b-8c7d-952a4dd389b4} + + + + + Source Files + + + \ No newline at end of file diff --git a/NetSSL_OpenSSL/samples/download/download_WEC2013_vs120.vcxproj b/NetSSL_OpenSSL/samples/download/download_WEC2013_vs120.vcxproj index 4644637d7..8ba84f7c1 100644 --- a/NetSSL_OpenSSL/samples/download/download_WEC2013_vs120.vcxproj +++ b/NetSSL_OpenSSL/samples/download/download_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\download\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\download\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\download\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\download\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\download\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\download\$(Platform)\$(Configuration)\ false diff --git a/NetSSL_OpenSSL/samples/download/download_WEC2013_vs120.vcxproj.filters b/NetSSL_OpenSSL/samples/download/download_WEC2013_vs120.vcxproj.filters index cb2652a3d..67a644c5f 100644 --- a/NetSSL_OpenSSL/samples/download/download_WEC2013_vs120.vcxproj.filters +++ b/NetSSL_OpenSSL/samples/download/download_WEC2013_vs120.vcxproj.filters @@ -2,7 +2,7 @@ - {345eb0d8-eda4-4fcc-a8f0-78847af411cc} + {98683f31-749a-4bf6-b4b4-18f99d691b11} diff --git a/NetSSL_OpenSSL/samples/download/download_vs100.vcxproj b/NetSSL_OpenSSL/samples/download/download_vs100.vcxproj index 2db13080b..e37be7342 100644 --- a/NetSSL_OpenSSL/samples/download/download_vs100.vcxproj +++ b/NetSSL_OpenSSL/samples/download/download_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\download\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\download\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\download\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\download\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\download\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\download\$(Configuration)\ false downloadd downloadd @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) libeay32.lib;ssleay32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\downloadd.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) libeay32.lib;ssleay32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;libeay32mtd.lib;ssleay32mtd.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\downloadd.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;libeay32mt.lib;ssleay32mt.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;libeay32mdd.lib;ssleay32mdd.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\downloadd.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;libeay32md.lib;ssleay32md.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/NetSSL_OpenSSL/samples/download/download_vs100.vcxproj.filters b/NetSSL_OpenSSL/samples/download/download_vs100.vcxproj.filters index f96df4a4a..377e9b744 100644 --- a/NetSSL_OpenSSL/samples/download/download_vs100.vcxproj.filters +++ b/NetSSL_OpenSSL/samples/download/download_vs100.vcxproj.filters @@ -2,7 +2,7 @@ - {80df44f4-2d5f-4b4a-8a3e-1debb474beac} + {6ce0c031-ed3c-49b8-a78f-6de95de456e6} diff --git a/NetSSL_OpenSSL/samples/download/download_vs110.vcxproj b/NetSSL_OpenSSL/samples/download/download_vs110.vcxproj index f8c41ff9a..acc077d01 100644 --- a/NetSSL_OpenSSL/samples/download/download_vs110.vcxproj +++ b/NetSSL_OpenSSL/samples/download/download_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\download\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\download\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\download\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\download\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\download\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\download\$(Configuration)\ false diff --git a/NetSSL_OpenSSL/samples/download/download_vs110.vcxproj.filters b/NetSSL_OpenSSL/samples/download/download_vs110.vcxproj.filters index f3937ca09..e53e4e139 100644 --- a/NetSSL_OpenSSL/samples/download/download_vs110.vcxproj.filters +++ b/NetSSL_OpenSSL/samples/download/download_vs110.vcxproj.filters @@ -2,7 +2,7 @@ - {62aefcd0-85c2-49f2-80c1-edb4b198646c} + {b544cc7c-013a-4879-b5c8-9760845fc96c} diff --git a/NetSSL_OpenSSL/samples/download/download_vs120.vcxproj b/NetSSL_OpenSSL/samples/download/download_vs120.vcxproj index b14a7b61e..c313350db 100644 --- a/NetSSL_OpenSSL/samples/download/download_vs120.vcxproj +++ b/NetSSL_OpenSSL/samples/download/download_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\download\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\download\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\download\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\download\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\download\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\download\$(Configuration)\ false diff --git a/NetSSL_OpenSSL/samples/download/download_vs120.vcxproj.filters b/NetSSL_OpenSSL/samples/download/download_vs120.vcxproj.filters index 7c0d15b4b..03030ca91 100644 --- a/NetSSL_OpenSSL/samples/download/download_vs120.vcxproj.filters +++ b/NetSSL_OpenSSL/samples/download/download_vs120.vcxproj.filters @@ -2,7 +2,7 @@ - {f7743c71-1a2f-4e40-8154-75ac3d5e6db6} + {349eac37-efe3-47d5-a702-9b4fc90021c3} diff --git a/NetSSL_OpenSSL/samples/download/download_vs71.vcproj b/NetSSL_OpenSSL/samples/download/download_vs71.vcproj index 975e447f6..61c4b2662 100644 --- a/NetSSL_OpenSSL/samples/download/download_vs71.vcproj +++ b/NetSSL_OpenSSL/samples/download/download_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\download\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\download\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\download\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\download\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\download\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\download\$(Configuration)\ false downloadd downloadd @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) libeay32.lib;ssleay32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\downloadd.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) libeay32.lib;ssleay32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;libeay32mtd.lib;ssleay32mtd.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\downloadd.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;libeay32mt.lib;ssleay32mt.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;libeay32mdd.lib;ssleay32mdd.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\downloadd.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;libeay32md.lib;ssleay32md.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/NetSSL_OpenSSL/samples/download/download_x64_vs100.vcxproj.filters b/NetSSL_OpenSSL/samples/download/download_x64_vs100.vcxproj.filters index 9dbc94b39..7a4dd80e0 100644 --- a/NetSSL_OpenSSL/samples/download/download_x64_vs100.vcxproj.filters +++ b/NetSSL_OpenSSL/samples/download/download_x64_vs100.vcxproj.filters @@ -2,7 +2,7 @@ - {1cc5f4d1-1b82-4576-81a1-bb7f5cb89525} + {f59a2816-e7df-46c2-b963-6836c4349a9b} diff --git a/NetSSL_OpenSSL/samples/download/download_x64_vs110.vcxproj b/NetSSL_OpenSSL/samples/download/download_x64_vs110.vcxproj index 71c563364..b870e9b63 100644 --- a/NetSSL_OpenSSL/samples/download/download_x64_vs110.vcxproj +++ b/NetSSL_OpenSSL/samples/download/download_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\download\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\download\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\download\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\download\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\download\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\download\$(Configuration)\ false diff --git a/NetSSL_OpenSSL/samples/download/download_x64_vs110.vcxproj.filters b/NetSSL_OpenSSL/samples/download/download_x64_vs110.vcxproj.filters index ad646398b..d2be39a0f 100644 --- a/NetSSL_OpenSSL/samples/download/download_x64_vs110.vcxproj.filters +++ b/NetSSL_OpenSSL/samples/download/download_x64_vs110.vcxproj.filters @@ -2,7 +2,7 @@ - {e4dabe03-c3f7-4f96-bdd2-b6ed1f46dc40} + {d2c913fe-0512-4477-bde4-f6f6940d6c57} diff --git a/NetSSL_OpenSSL/samples/download/download_x64_vs120.vcxproj b/NetSSL_OpenSSL/samples/download/download_x64_vs120.vcxproj index 51a502557..9481e840e 100644 --- a/NetSSL_OpenSSL/samples/download/download_x64_vs120.vcxproj +++ b/NetSSL_OpenSSL/samples/download/download_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\download\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\download\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\download\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\download\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\download\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\download\$(Configuration)\ false diff --git a/NetSSL_OpenSSL/samples/download/download_x64_vs120.vcxproj.filters b/NetSSL_OpenSSL/samples/download/download_x64_vs120.vcxproj.filters index 4946b981a..0ba8912d2 100644 --- a/NetSSL_OpenSSL/samples/download/download_x64_vs120.vcxproj.filters +++ b/NetSSL_OpenSSL/samples/download/download_x64_vs120.vcxproj.filters @@ -2,7 +2,7 @@ - {3e7475e5-0be6-411e-b9fb-f725fa6bafb5} + {be3a6a35-6cf5-40c3-a5bf-7c24f7deca0e} diff --git a/NetSSL_OpenSSL/samples/download/download_x64_vs90.vcproj b/NetSSL_OpenSSL/samples/download/download_x64_vs90.vcproj index 0fb451a92..0cbada843 100644 --- a/NetSSL_OpenSSL/samples/download/download_x64_vs90.vcproj +++ b/NetSSL_OpenSSL/samples/download/download_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> (now.epochTime())); @@ -323,8 +339,24 @@ void Context::createSSLContext() case TLSV1_SERVER_USE: _pSSLContext = SSL_CTX_new(TLSv1_server_method()); break; +#if OPENSSL_VERSION_NUMBER >= 0x10000000L + case TLSV1_1_CLIENT_USE: + _pSSLContext = SSL_CTX_new(TLSv1_1_client_method()); + break; + case TLSV1_1_SERVER_USE: + _pSSLContext = SSL_CTX_new(TLSv1_1_server_method()); + break; +#endif +#if OPENSSL_VERSION_NUMBER >= 0x10001000L + case TLSV1_2_CLIENT_USE: + _pSSLContext = SSL_CTX_new(TLSv1_2_client_method()); + break; + case TLSV1_2_SERVER_USE: + _pSSLContext = SSL_CTX_new(TLSv1_2_server_method()); + break; +#endif default: - throw Poco::InvalidArgumentException("Invalid usage"); + throw Poco::InvalidArgumentException("Invalid or unsupported usage"); } } if (!_pSSLContext) diff --git a/NetSSL_OpenSSL/src/InvalidCertificateHandler.cpp b/NetSSL_OpenSSL/src/InvalidCertificateHandler.cpp index 2d80ae0c1..26e2db364 100644 --- a/NetSSL_OpenSSL/src/InvalidCertificateHandler.cpp +++ b/NetSSL_OpenSSL/src/InvalidCertificateHandler.cpp @@ -37,10 +37,17 @@ InvalidCertificateHandler::InvalidCertificateHandler(bool handleErrorsOnServerSi InvalidCertificateHandler::~InvalidCertificateHandler() { - if (_handleErrorsOnServerSide) - SSLManager::instance().ServerVerificationError -= Delegate(this, &InvalidCertificateHandler::onInvalidCertificate); - else - SSLManager::instance().ClientVerificationError -= Delegate(this, &InvalidCertificateHandler::onInvalidCertificate); + try + { + if (_handleErrorsOnServerSide) + SSLManager::instance().ServerVerificationError -= Delegate(this, &InvalidCertificateHandler::onInvalidCertificate); + else + SSLManager::instance().ClientVerificationError -= Delegate(this, &InvalidCertificateHandler::onInvalidCertificate); + } + catch (...) + { + poco_unexpected(); + } } diff --git a/NetSSL_OpenSSL/src/PrivateKeyPassphraseHandler.cpp b/NetSSL_OpenSSL/src/PrivateKeyPassphraseHandler.cpp index 10048340f..2749614ca 100644 --- a/NetSSL_OpenSSL/src/PrivateKeyPassphraseHandler.cpp +++ b/NetSSL_OpenSSL/src/PrivateKeyPassphraseHandler.cpp @@ -34,7 +34,14 @@ PrivateKeyPassphraseHandler::PrivateKeyPassphraseHandler(bool onServerSide): _se PrivateKeyPassphraseHandler::~PrivateKeyPassphraseHandler() { - SSLManager::instance().PrivateKeyPassphraseRequired -= Delegate(this, &PrivateKeyPassphraseHandler::onPrivateKeyRequested); + try + { + SSLManager::instance().PrivateKeyPassphraseRequired -= Delegate(this, &PrivateKeyPassphraseHandler::onPrivateKeyRequested); + } + catch (...) + { + poco_unexpected(); + } } diff --git a/NetSSL_OpenSSL/src/SSLManager.cpp b/NetSSL_OpenSSL/src/SSLManager.cpp index 7f5d8f712..1fbe8b9a9 100644 --- a/NetSSL_OpenSSL/src/SSLManager.cpp +++ b/NetSSL_OpenSSL/src/SSLManager.cpp @@ -54,6 +54,8 @@ const std::string SSLManager::CFG_SESSION_CACHE_SIZE("sessionCacheSize"); const std::string SSLManager::CFG_SESSION_TIMEOUT("sessionTimeout"); const std::string SSLManager::CFG_EXTENDED_VERIFICATION("extendedVerification"); const std::string SSLManager::CFG_REQUIRE_TLSV1("requireTLSv1"); +const std::string SSLManager::CFG_REQUIRE_TLSV1_1("requireTLSv1_1"); +const std::string SSLManager::CFG_REQUIRE_TLSV1_2("requireTLSv1_2"); #ifdef OPENSSL_FIPS const std::string SSLManager::CFG_FIPS_MODE("openSSL.fips"); const bool SSLManager::VAL_FIPS_MODE(false); @@ -67,7 +69,14 @@ SSLManager::SSLManager() SSLManager::~SSLManager() { - shutdown(); + try + { + shutdown(); + } + catch (...) + { + poco_unexpected(); + } } @@ -251,10 +260,35 @@ void SSLManager::initDefaultContext(bool server) std::string cipherList = config.getString(prefix + CFG_CIPHER_LIST, VAL_CIPHER_LIST); cipherList = config.getString(prefix + CFG_CYPHER_LIST, cipherList); // for backwards compatibility bool requireTLSv1 = config.getBool(prefix + CFG_REQUIRE_TLSV1, false); + bool requireTLSv1_1 = config.getBool(prefix + CFG_REQUIRE_TLSV1_1, false); + bool requireTLSv1_2 = config.getBool(prefix + CFG_REQUIRE_TLSV1_2, false); + Context::Usage usage; + if (server) - _ptrDefaultServerContext = new Context(requireTLSv1 ? Context::TLSV1_SERVER_USE : Context::SERVER_USE, privKeyFile, certFile, caLocation, verMode, verDepth, loadDefCA, cipherList); + { + if (requireTLSv1_2) + usage = Context::TLSV1_2_SERVER_USE; + else if (requireTLSv1_1) + usage = Context::TLSV1_1_SERVER_USE; + else if (requireTLSv1) + usage = Context::TLSV1_SERVER_USE; + else + usage = Context::SERVER_USE; + _ptrDefaultServerContext = new Context(usage, privKeyFile, certFile, caLocation, verMode, verDepth, loadDefCA, cipherList); + } else - _ptrDefaultClientContext = new Context(requireTLSv1 ? Context::TLSV1_CLIENT_USE : Context::CLIENT_USE, privKeyFile, certFile, caLocation, verMode, verDepth, loadDefCA, cipherList); + { + if (requireTLSv1_2) + usage = Context::TLSV1_2_CLIENT_USE; + else if (requireTLSv1_1) + usage = Context::TLSV1_1_CLIENT_USE; + else if (requireTLSv1) + usage = Context::TLSV1_CLIENT_USE; + else + usage = Context::CLIENT_USE; + _ptrDefaultClientContext = new Context(usage, privKeyFile, certFile, caLocation, verMode, verDepth, loadDefCA, cipherList); + } + bool cacheSessions = config.getBool(prefix + CFG_CACHE_SESSIONS, false); if (server) diff --git a/NetSSL_OpenSSL/src/SecureServerSocketImpl.cpp b/NetSSL_OpenSSL/src/SecureServerSocketImpl.cpp index 772b672f1..dc8c5b898 100644 --- a/NetSSL_OpenSSL/src/SecureServerSocketImpl.cpp +++ b/NetSSL_OpenSSL/src/SecureServerSocketImpl.cpp @@ -29,7 +29,14 @@ SecureServerSocketImpl::SecureServerSocketImpl(Context::Ptr pContext): SecureServerSocketImpl::~SecureServerSocketImpl() { - reset(); + try + { + reset(); + } + catch (...) + { + poco_unexpected(); + } } diff --git a/NetSSL_OpenSSL/src/SecureSocketImpl.cpp b/NetSSL_OpenSSL/src/SecureSocketImpl.cpp index d38c91f88..aef9bdaf6 100644 --- a/NetSSL_OpenSSL/src/SecureSocketImpl.cpp +++ b/NetSSL_OpenSSL/src/SecureSocketImpl.cpp @@ -66,6 +66,7 @@ SecureSocketImpl::~SecureSocketImpl() } catch (...) { + poco_unexpected(); } } @@ -358,7 +359,7 @@ long SecureSocketImpl::verifyPeerCertificateImpl(const std::string& hostName) { Context::VerificationMode mode = _pContext->verificationMode(); if (mode == Context::VERIFY_NONE || !_pContext->extendedCertificateVerificationEnabled() || - (isLocalHost(hostName) && mode != Context::VERIFY_STRICT)) + (mode != Context::VERIFY_STRICT && isLocalHost(hostName))) { return X509_V_OK; } @@ -432,7 +433,15 @@ int SecureSocketImpl::handleError(int rc) long lastError = ERR_get_error(); if (lastError == 0) { - if (rc == 0 || rc == -1) + if (rc == 0) + { + // Most web browsers do this, don't report an error + if (_pContext->isForServerUse()) + return 0; + else + throw SSLConnectionUnexpectedlyClosedException(); + } + else if (rc == -1) { throw SSLConnectionUnexpectedlyClosedException(); } diff --git a/NetSSL_OpenSSL/src/SecureStreamSocket.cpp b/NetSSL_OpenSSL/src/SecureStreamSocket.cpp index e525b6a12..635a8a331 100644 --- a/NetSSL_OpenSSL/src/SecureStreamSocket.cpp +++ b/NetSSL_OpenSSL/src/SecureStreamSocket.cpp @@ -153,7 +153,10 @@ SecureStreamSocket SecureStreamSocket::attach(const StreamSocket& streamSocket) { SecureStreamSocketImpl* pImpl = new SecureStreamSocketImpl(static_cast(streamSocket.impl()), SSLManager::instance().defaultClientContext()); SecureStreamSocket result(pImpl); - pImpl->connectSSL(); + if (pImpl->context()->isForServerUse()) + pImpl->acceptSSL(); + else + pImpl->connectSSL(); return result; } @@ -162,7 +165,10 @@ SecureStreamSocket SecureStreamSocket::attach(const StreamSocket& streamSocket, { SecureStreamSocketImpl* pImpl = new SecureStreamSocketImpl(static_cast(streamSocket.impl()), pContext); SecureStreamSocket result(pImpl); - pImpl->connectSSL(); + if (pImpl->context()->isForServerUse()) + pImpl->acceptSSL(); + else + pImpl->connectSSL(); return result; } @@ -172,7 +178,10 @@ SecureStreamSocket SecureStreamSocket::attach(const StreamSocket& streamSocket, SecureStreamSocketImpl* pImpl = new SecureStreamSocketImpl(static_cast(streamSocket.impl()), pContext); SecureStreamSocket result(pImpl); result.useSession(pSession); - pImpl->connectSSL(); + if (pImpl->context()->isForServerUse()) + pImpl->acceptSSL(); + else + pImpl->connectSSL(); return result; } @@ -182,7 +191,10 @@ SecureStreamSocket SecureStreamSocket::attach(const StreamSocket& streamSocket, SecureStreamSocketImpl* pImpl = new SecureStreamSocketImpl(static_cast(streamSocket.impl()), SSLManager::instance().defaultClientContext()); SecureStreamSocket result(pImpl); result.setPeerHostName(peerHostName); - pImpl->connectSSL(); + if (pImpl->context()->isForServerUse()) + pImpl->acceptSSL(); + else + pImpl->connectSSL(); return result; } @@ -192,7 +204,10 @@ SecureStreamSocket SecureStreamSocket::attach(const StreamSocket& streamSocket, SecureStreamSocketImpl* pImpl = new SecureStreamSocketImpl(static_cast(streamSocket.impl()), pContext); SecureStreamSocket result(pImpl); result.setPeerHostName(peerHostName); - pImpl->connectSSL(); + if (pImpl->context()->isForServerUse()) + pImpl->acceptSSL(); + else + pImpl->connectSSL(); return result; } @@ -203,7 +218,10 @@ SecureStreamSocket SecureStreamSocket::attach(const StreamSocket& streamSocket, SecureStreamSocket result(pImpl); result.setPeerHostName(peerHostName); result.useSession(pSession); - pImpl->connectSSL(); + if (pImpl->context()->isForServerUse()) + pImpl->acceptSSL(); + else + pImpl->connectSSL(); return result; } diff --git a/NetSSL_OpenSSL/src/SecureStreamSocketImpl.cpp b/NetSSL_OpenSSL/src/SecureStreamSocketImpl.cpp index 88694eec9..efb2fd2f4 100644 --- a/NetSSL_OpenSSL/src/SecureStreamSocketImpl.cpp +++ b/NetSSL_OpenSSL/src/SecureStreamSocketImpl.cpp @@ -41,7 +41,14 @@ SecureStreamSocketImpl::SecureStreamSocketImpl(StreamSocketImpl* pStreamSocket, SecureStreamSocketImpl::~SecureStreamSocketImpl() { - reset(); + try + { + reset(); + } + catch (...) + { + poco_unexpected(); + } } diff --git a/NetSSL_OpenSSL/testsuite/TestSuite_CE_vs90.vcproj b/NetSSL_OpenSSL/testsuite/TestSuite_CE_vs90.vcproj index 4a50d71b7..a869a6097 100644 --- a/NetSSL_OpenSSL/testsuite/TestSuite_CE_vs90.vcproj +++ b/NetSSL_OpenSSL/testsuite/TestSuite_CE_vs90.vcproj @@ -46,7 +46,8 @@ CompileAs="0" DisableSpecificWarnings="4800;" CompileForArchitecture="2" - InterworkCalls="false"/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + + + + debug_shared + SDK_AM335X_SK_WEC2013_V300 + + + debug_static_md + SDK_AM335X_SK_WEC2013_V300 + + + debug_static_mt + SDK_AM335X_SK_WEC2013_V300 + + + release_shared + SDK_AM335X_SK_WEC2013_V300 + + + release_static_md + SDK_AM335X_SK_WEC2013_V300 + + + release_static_mt + SDK_AM335X_SK_WEC2013_V300 + + + + TestSuite + {B2B88092-5BCE-4AC0-941E-88167138B4A7} + en-US + 11.0 + true + SDK_AM335X_SK_WEC2013_V300 + CE800 + + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>11.0.61030.0 + TestSuited + TestSuited + TestSuited + TestSuite + TestSuite + TestSuite + + + bin\$(Platform)\shared\ + obj\TestSuite\$(Platform)\$(Configuration)\ + true + + + bin\$(Platform)\shared\ + obj\TestSuite\$(Platform)\$(Configuration)\ + false + + + bin\$(Platform)\static_mt\ + obj\TestSuite\$(Platform)\$(Configuration)\ + true + + + bin\$(Platform)\static_mt\ + obj\TestSuite\$(Platform)\$(Configuration)\ + false + + + bin\$(Platform)\static_md\ + obj\TestSuite\$(Platform)\$(Configuration)\ + true + + + bin\$(Platform)\static_md\ + obj\TestSuite\$(Platform)\$(Configuration)\ + false + + + + Win32 + + + Disabled + ..\include;..\..\CppUnit\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;..\..\Crypto\include;%(AdditionalIncludeDirectories) + _DEBUG;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebugDLL + true + true + + Level3 + ProgramDatabase + Default + + + CppUnitd.lib;libeay32.lib;ssleay32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\shared\TestSuited.exe + ..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + true + bin\$(Platform)\shared\TestSuited.pdb + wmainCRTStartup + WindowsCE + + + + + Win32 + + + Disabled + true + Speed + ..\include;..\..\CppUnit\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;..\..\Crypto\include;%(AdditionalIncludeDirectories) + NDEBUG;$(ProjectName)_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDLL + false + true + Level3 + ProgramDatabase + + + CppUnit.lib;libeay32.lib;ssleay32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\shared\TestSuite.exe + ..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + false + + true + true + wmainCRTStartup + WindowsCE + + + + + Win32 + + + Disabled + ..\include;..\..\CppUnit\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;..\..\Crypto\include;%(AdditionalIncludeDirectories) + _DEBUG;POCO_STATIC;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebug + true + true + + Level3 + ProgramDatabase + Default + + + CppUnitmtd.lib;iphlpapi.lib;libeay32mtd.lib;ssleay32mtd.lib;Crypt32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\static_mt\TestSuited.exe + ..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + true + bin\$(Platform)\static_mt\TestSuited.pdb + wmainCRTStartup + WindowsCE + + + + + Win32 + + + Disabled + Default + true + Speed + ..\include;..\..\CppUnit\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;..\..\Crypto\include;%(AdditionalIncludeDirectories) + NDEBUG;POCO_STATIC;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreaded + false + true + + Level3 + ProgramDatabase + Default + + + CppUnitmt.lib;iphlpapi.lib;libeay32mt.lib;ssleay32mt.lib;Crypt32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\static_mt\TestSuite.exe + ..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + false + + true + true + wmainCRTStartup + WindowsCE + + + + + Win32 + + + Disabled + ..\include;..\..\CppUnit\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;..\..\Crypto\include;%(AdditionalIncludeDirectories) + _DEBUG;POCO_STATIC;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebugDLL + true + true + + Level3 + ProgramDatabase + Default + + + CppUnitmdd.lib;iphlpapi.lib;libeay32mdd.lib;ssleay32mdd.lib;Crypt32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\static_md\TestSuited.exe + ..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + true + bin\$(Platform)\static_md\TestSuited.pdb + wmainCRTStartup + WindowsCE + + + + + Win32 + + + Disabled + Default + true + Speed + ..\include;..\..\CppUnit\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;..\..\Crypto\include;%(AdditionalIncludeDirectories) + NDEBUG;POCO_STATIC;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDLL + false + true + + Level3 + ProgramDatabase + Default + + + CppUnitmd.lib;iphlpapi.lib;libeay32md.lib;ssleay32md.lib;Crypt32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\static_md\TestSuite.exe + ..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + false + + true + true + wmainCRTStartup + WindowsCE + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NetSSL_OpenSSL/testsuite/TestSuite_WEC2013_vs110.vcxproj.filters b/NetSSL_OpenSSL/testsuite/TestSuite_WEC2013_vs110.vcxproj.filters new file mode 100644 index 000000000..d14d3380c --- /dev/null +++ b/NetSSL_OpenSSL/testsuite/TestSuite_WEC2013_vs110.vcxproj.filters @@ -0,0 +1,117 @@ + + + + + {1f83dea4-0625-4834-b57c-a8542c0eed0a} + + + {71e44667-677f-4689-9489-14db86b77713} + + + {f62c797c-77e8-4752-9038-57b249ced189} + + + {6f130034-f7ea-4274-8466-9b45f9b0e65e} + + + {b9831edd-8257-4bd8-95ee-35f9b9c48d1d} + + + {fb121484-6940-4456-a882-79a761569805} + + + {a8c6872f-50a5-477e-af91-70949bd34683} + + + {5859db25-3940-41a9-b44b-5b088ac6640c} + + + {8846cb2f-6c0b-4fa0-9bb1-78bea9edd3f3} + + + {e224aa92-7ba4-4403-bdea-982fd8935cfd} + + + {64dad018-cb5c-4f09-893b-63fa5c68939c} + + + {81b836a9-6055-481f-a3e3-c86cb6ee16da} + + + {278e5122-f930-4d7a-aabd-c85726686406} + + + {4b5b3bf7-52d4-47d1-8516-bae656749d97} + + + {83c9b380-0b8f-4caf-ad4b-bdeef738f47c} + + + {890c39be-1fe9-4441-b7b8-91270db82e06} + + + {8df273f4-c1ac-40b4-a801-d21868ee3f7e} + + + + + HTTPS\Header Files + + + _Suite\Header Files + + + TCPServer\Header Files + + + TCPServer\Header Files + + + HTTPSServer\Header Files + + + HTTPSServer\Header Files + + + HTTPSClient\Header Files + + + HTTPSClient\Header Files + + + HTTPSClient\Header Files + + + + + HTTPS\Source Files + + + _Suite\Source Files + + + _Driver\Source Files + + + TCPServer\Source Files + + + TCPServer\Source Files + + + HTTPSServer\Source Files + + + HTTPSServer\Source Files + + + HTTPSClient\Source Files + + + HTTPSClient\Source Files + + + HTTPSClient\Source Files + + + \ No newline at end of file diff --git a/NetSSL_OpenSSL/testsuite/TestSuite_WEC2013_vs120.vcxproj b/NetSSL_OpenSSL/testsuite/TestSuite_WEC2013_vs120.vcxproj index 3b6a2e535..5056ffa1a 100644 --- a/NetSSL_OpenSSL/testsuite/TestSuite_WEC2013_vs120.vcxproj +++ b/NetSSL_OpenSSL/testsuite/TestSuite_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false diff --git a/NetSSL_OpenSSL/testsuite/TestSuite_WEC2013_vs120.vcxproj.filters b/NetSSL_OpenSSL/testsuite/TestSuite_WEC2013_vs120.vcxproj.filters index e1bc81628..5d127e4eb 100644 --- a/NetSSL_OpenSSL/testsuite/TestSuite_WEC2013_vs120.vcxproj.filters +++ b/NetSSL_OpenSSL/testsuite/TestSuite_WEC2013_vs120.vcxproj.filters @@ -2,55 +2,55 @@ - {15a86ce9-776f-4f79-8c37-d0047b522357} + {03bd465a-6b39-4015-9be4-c52c5cb6f791} - {f9e5db27-93e7-4830-832c-c8477fd1c15f} + {4f1db294-60c5-4742-a69a-0dcc8e143174} - {72c8f534-c13b-4d8e-be3a-b16968099260} + {a576f4bb-c19e-42b3-965f-46a5c86d694a} - {10bb9407-f82b-4d73-8fc9-190fbf109da7} + {ff21e537-7f1a-4259-9bf4-cd8c3cae8e9e} - {ad083b29-5ac8-450b-824d-e3b298dc6371} + {d4227408-44c3-4961-8cc8-68bf09fb6d9e} - {99debd82-f683-4368-ba20-d3330219dc33} + {8ee5bc03-ea9f-4dd1-9a24-1b5f57210da1} - {e93c5724-ffa8-44b0-950e-2d1874e76903} + {3b9aa5a9-5e8e-4301-be02-fae824bc6cc4} - {a688bf70-8c4f-4ddc-b488-f633d89c5af0} + {1c10b966-ecd9-4d2a-83d0-10c673d022ab} - {e1a67db2-13da-4630-a945-4070d711e0b6} + {6600000a-ffa2-4310-9ad4-e4366a1fb61c} - {8ad1423b-dba2-4146-8cf6-0ce0b68f659b} + {e3b7b6c5-920e-4333-95bb-8e08ee3286fb} - {7f5a1848-78b4-4712-ae4e-71d6424741a8} + {afc58901-1068-4434-987e-983b0e324c9a} - {6bba7592-5813-4ac3-a3fa-859e185fccea} + {0f6b08fb-a5f5-483c-b30d-d4fdc15c5a69} - {4823fee0-ea12-4a94-8cf1-dceb9fccf95d} + {bb139632-5bd4-49d6-943a-3541a7774d5e} - {cfcbca22-31e5-4414-9e5d-aaddf932fc25} + {829464f5-9701-4dd5-9d55-da9417c4ea34} - {d60a603c-8932-468e-b77d-0ed116c1843c} + {1300697b-0172-434c-bd06-a2693d41ac63} - {78056466-a710-49c9-b394-c87c1c586b03} + {bb003255-d465-4c82-b4e0-49573ca546f3} - {6b6d24ca-610a-42b0-a8e8-19a3a5f39ad9} + {74efe360-5033-4ff2-b331-fec0e028fd01} diff --git a/NetSSL_OpenSSL/testsuite/TestSuite_vs100.vcxproj b/NetSSL_OpenSSL/testsuite/TestSuite_vs100.vcxproj index bc1b6d69b..064eadb61 100644 --- a/NetSSL_OpenSSL/testsuite/TestSuite_vs100.vcxproj +++ b/NetSSL_OpenSSL/testsuite/TestSuite_vs100.vcxproj @@ -87,22 +87,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false TestSuited TestSuited @@ -129,6 +129,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitd.lib;WinTestRunnerd.lib;libeay32.lib;ssleay32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -139,6 +140,7 @@ bin\TestSuited.pdb Windows MachineX86 + %(AdditionalOptions) @@ -161,6 +163,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnit.lib;WinTestRunner.lib;libeay32.lib;ssleay32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -171,6 +174,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -191,6 +195,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmtd.lib;WinTestRunnermtd.lib;iphlpapi.lib;winmm.lib;nafxcwd.lib;libcmtd.lib;WinTestRunner.res;libeay32mtd.lib;ssleay32mtd.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -202,6 +207,7 @@ bin\static_mt\TestSuited.pdb Windows MachineX86 + %(AdditionalOptions) @@ -224,6 +230,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmt.lib;WinTestRunnermt.lib;iphlpapi.lib;winmm.lib;nafxcw.lib;libcmt.lib;WinTestRunner.res;libeay32mt.lib;ssleay32mt.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -235,6 +242,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -255,6 +263,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmdd.lib;WinTestRunnermdd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;libeay32mdd.lib;ssleay32mdd.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -265,6 +274,7 @@ bin\static_md\TestSuited.pdb Windows MachineX86 + %(AdditionalOptions) @@ -287,6 +297,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmd.lib;WinTestRunnermd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;libeay32md.lib;ssleay32md.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -297,6 +308,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/NetSSL_OpenSSL/testsuite/TestSuite_vs100.vcxproj.filters b/NetSSL_OpenSSL/testsuite/TestSuite_vs100.vcxproj.filters index 8ea4f4b67..2b192b1a1 100644 --- a/NetSSL_OpenSSL/testsuite/TestSuite_vs100.vcxproj.filters +++ b/NetSSL_OpenSSL/testsuite/TestSuite_vs100.vcxproj.filters @@ -2,55 +2,55 @@ - {04c845a4-a1d5-4ca1-853f-11a51baeaee0} + {c2a0e245-c574-4a90-b4a0-8001581693be} - {d69adea7-f2ef-4065-bf7a-3699a09f7d59} + {366122cf-e805-4773-ac50-3f5a601d0638} - {9a94579e-156a-4a8e-9ba8-fc454e3b4653} + {9e2401f1-c5ec-4284-abc4-9d88be1cdbfe} - {7391dae5-400d-4442-8322-8afef93061f7} + {bc3b3dd5-5fca-444f-87b5-d7bf2162c794} - {8db378dd-3a9e-49c7-9062-3db1b793bfa7} + {c3a77eaf-70aa-48d2-b1ed-efe7406d1e95} - {2b8a56c2-0927-40b2-9a3f-811926272c76} + {b0a28d5e-28ab-4ea8-b5e1-714482773f30} - {b759ad93-b332-4da2-9077-8df56ff97ceb} + {f92ef7f9-fe01-4f92-b2ee-4c79e4b377c9} - {2b3e7c8e-d20a-462e-8f92-8b1b8b23a7ad} + {0678039c-4649-4851-b175-0e1ba4501c68} - {26778788-d897-47ff-9386-361eb58f9290} + {a49a7185-852b-4885-819e-33892dd2a887} - {774ac90a-ad97-47e3-8f05-cd5dd3f69d39} + {1cf6c9c0-4c75-4402-9c78-489427e03980} - {7fc0005c-8bc4-4aaa-84e2-72396f48327d} + {f1c90f50-fb6c-4368-aa20-f0f31b943eb8} - {4fc39320-ca2b-47e2-95ec-4330640fa655} + {9e03fe19-e653-4a44-80ac-801a37e2d38a} - {fabd227f-6488-4cd1-b18d-41d219481061} + {7b208910-a19e-4550-8a6b-85a185d17208} - {355c2294-7117-4951-9d33-02a392ec0457} + {ad2958bf-1475-43c3-9719-484040e9a6e2} - {298e7192-2e13-44fb-898a-1b6833806700} + {3abc9187-7f79-4a34-9f23-658c26d34a0c} - {d4a670bb-56cf-4480-a02c-210446fedbb1} + {b15b4df9-d6dc-4ff8-9d18-940f58d91404} - {bfcada03-42e5-4594-9867-81acb7a0f611} + {fb990f2a-e76c-41c7-ae05-2213455b1441} diff --git a/NetSSL_OpenSSL/testsuite/TestSuite_vs110.vcxproj b/NetSSL_OpenSSL/testsuite/TestSuite_vs110.vcxproj index f3945434f..daefcb6d5 100644 --- a/NetSSL_OpenSSL/testsuite/TestSuite_vs110.vcxproj +++ b/NetSSL_OpenSSL/testsuite/TestSuite_vs110.vcxproj @@ -101,32 +101,32 @@ bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false diff --git a/NetSSL_OpenSSL/testsuite/TestSuite_vs110.vcxproj.filters b/NetSSL_OpenSSL/testsuite/TestSuite_vs110.vcxproj.filters index 2447a4159..4747ee592 100644 --- a/NetSSL_OpenSSL/testsuite/TestSuite_vs110.vcxproj.filters +++ b/NetSSL_OpenSSL/testsuite/TestSuite_vs110.vcxproj.filters @@ -2,55 +2,55 @@ - {e4b9f945-a2fd-4abd-8407-47559054e053} + {dcf0eec7-b25c-4f29-8c71-6994390dd0e6} - {c4da88d9-bad1-4eb5-b836-6127a56abd4a} + {e702f608-e389-42f9-ab17-5edb6b1b849e} - {0a7ced01-30e0-41ca-b187-f86ed3de473e} + {f69d9772-0339-4c4f-aa77-7e8e561d657f} - {3f8092f3-c495-4fa0-860c-3c5733949bbb} + {4b591c50-0eca-412b-af53-e7884954be88} - {2bfd7493-75bf-4d3d-93b3-8a9ff5d0c23c} + {aa325f1e-fab8-47ea-a605-eab6fc57e3d7} - {dcdef37d-546f-458c-866f-8331ee7dc406} + {1ed5469f-5b98-4737-9354-f55c13bcd0db} - {cc933665-c885-49a2-8cae-5067e0f93f7a} + {8313efb5-63cc-49c4-b6eb-ca4f979f1afb} - {06b5adfc-5fd3-4c1d-96d6-9bcc04aee04d} + {4014006e-aaaa-461b-91e2-cf008ffbe886} - {cc0ef768-409b-4b86-8aca-ea171e7a5d43} + {855be1bf-56d0-4af5-8fc0-557abc2ae807} - {b1d6f1a2-1938-4e9e-9979-7d3e8db6eb66} + {e146d521-f1fc-4202-aa66-2d473c9fc143} - {e0c00d12-c63a-4581-915b-5d9fd896f588} + {d9173d23-dfe6-4cc4-9a35-f1d36bc54ec4} - {1223ab27-3d18-4bcb-9f79-c60fe5201b08} + {a0f2ae39-fe43-43e0-b7ef-3e9ff24135d4} - {1d064b08-3961-4487-836a-08e8476cf81a} + {3189e5c7-b0f4-4d06-887e-54c54d0aa93c} - {7e9f1c0a-4d72-4238-ac66-ef5e31419687} + {65212dca-a71e-402e-ac82-d2dceae1993e} - {5656bb55-540a-4ab0-8e52-547a2e306ee4} + {951ddf69-d4a1-4f03-8bda-8cb88dd2e051} - {cd5a8379-9153-4973-8a85-957702526ea6} + {adb8f512-7d83-4bcb-9ecc-f54c53ffd8d8} - {0665244c-b0e6-4df1-81f9-8ec6c6c5a0f2} + {30f3ed05-4e81-454c-9bc5-d7c8d73ad77a} diff --git a/NetSSL_OpenSSL/testsuite/TestSuite_vs120.vcxproj b/NetSSL_OpenSSL/testsuite/TestSuite_vs120.vcxproj index 73c5af1dd..7ddc93a31 100644 --- a/NetSSL_OpenSSL/testsuite/TestSuite_vs120.vcxproj +++ b/NetSSL_OpenSSL/testsuite/TestSuite_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false diff --git a/NetSSL_OpenSSL/testsuite/TestSuite_vs120.vcxproj.filters b/NetSSL_OpenSSL/testsuite/TestSuite_vs120.vcxproj.filters index 60eff7232..9b999fa55 100644 --- a/NetSSL_OpenSSL/testsuite/TestSuite_vs120.vcxproj.filters +++ b/NetSSL_OpenSSL/testsuite/TestSuite_vs120.vcxproj.filters @@ -2,55 +2,55 @@ - {043362e9-77db-4c98-a7f1-c35eb67572be} + {4e487005-eb0b-467f-9e41-4ef1cde00ed5} - {ef291e04-e43e-48a9-80e8-554b2cf1afa2} + {e7835d75-cb63-4999-9801-f5ada6eaf785} - {9d327ee1-4296-4d5e-9e85-41c8a5f5dcc7} + {57fd067a-766f-4778-b0cc-019c44e73333} - {ab29bcd4-ac62-4ab9-be4e-140bcd597aaa} + {24fccb40-95cb-4449-9885-9a410b16cb04} - {2dd55620-335a-4315-8777-93bf27b17af9} + {aeddfc60-44f6-4ed3-b26d-09b5bdf92edf} - {9d37f396-7216-4100-8753-6723ec00dc7f} + {e263706a-88fa-4559-b1cc-09243e8e42a2} - {d2c3b3fc-9496-4410-a8b2-4c938423b1a8} + {af9e574c-1853-41c9-bdd7-376b87eafdf9} - {b680edb5-ed07-4b38-bc56-b9e3b0ed9fcb} + {001d9a2f-c840-48b5-884f-0b6f080db79a} - {c5097034-d5e8-4680-97ea-02e9fd7c49e9} + {5014ae59-7277-4c3c-8516-db710723522b} - {aaf830be-f7c9-4c08-b7ae-8b4fefdc1111} + {00def3cd-2e9c-43ca-8e0c-dd23119d49c0} - {9e01b12f-4145-4f97-835b-15b38fe207ea} + {ec76ab05-f8fa-49f6-9189-e9ea6e50d2ef} - {051e99a9-5765-49f3-9d25-6a9a687f3637} + {53ad10b6-8e33-475a-9246-cb332f93465c} - {ce745604-d255-4ac2-84e6-7b1fa1cce4fb} + {58f6ae7b-19c5-450e-aaac-3772c4430580} - {4e2f33d4-103f-4e41-9e54-118765a69b53} + {334f4d0a-7391-4736-82ca-aea34b5028b1} - {732c7af8-27f4-46e0-acc7-5f5d60f01c0b} + {55321d6d-d196-4191-baab-db6b229fb4c0} - {cfc35afa-06f3-41c7-8942-73db1a507a35} + {ca3f24af-6b81-411e-8423-bd9370792aa2} - {f2df7499-4687-45e1-acb4-bc4b57274882} + {93b45c65-7bec-43d3-a669-7c7e6af67781} diff --git a/NetSSL_OpenSSL/testsuite/TestSuite_vs71.vcproj b/NetSSL_OpenSSL/testsuite/TestSuite_vs71.vcproj index 5715aeb9a..421af4623 100644 --- a/NetSSL_OpenSSL/testsuite/TestSuite_vs71.vcproj +++ b/NetSSL_OpenSSL/testsuite/TestSuite_vs71.vcproj @@ -37,7 +37,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false TestSuited TestSuited @@ -129,6 +129,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitd.lib;WinTestRunnerd.lib;libeay32.lib;ssleay32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -139,6 +140,7 @@ bin64\TestSuited.pdb Windows MachineX64 + %(AdditionalOptions) @@ -161,6 +163,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnit.lib;WinTestRunner.lib;libeay32.lib;ssleay32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -171,6 +174,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -191,6 +195,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmtd.lib;WinTestRunnermtd.lib;iphlpapi.lib;winmm.lib;nafxcwd.lib;libcmtd.lib;WinTestRunner.res;libeay32mtd.lib;ssleay32mtd.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -202,6 +207,7 @@ bin64\static_mt\TestSuited.pdb Windows MachineX64 + %(AdditionalOptions) @@ -224,6 +230,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmt.lib;WinTestRunnermt.lib;iphlpapi.lib;winmm.lib;nafxcw.lib;libcmt.lib;WinTestRunner.res;libeay32mt.lib;ssleay32mt.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -235,6 +242,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -255,6 +263,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmdd.lib;WinTestRunnermdd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;libeay32mdd.lib;ssleay32mdd.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -265,6 +274,7 @@ bin64\static_md\TestSuited.pdb Windows MachineX64 + %(AdditionalOptions) @@ -287,6 +297,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmd.lib;WinTestRunnermd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;libeay32md.lib;ssleay32md.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -297,6 +308,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/NetSSL_OpenSSL/testsuite/TestSuite_x64_vs100.vcxproj.filters b/NetSSL_OpenSSL/testsuite/TestSuite_x64_vs100.vcxproj.filters index 2c6d76625..f2bb67465 100644 --- a/NetSSL_OpenSSL/testsuite/TestSuite_x64_vs100.vcxproj.filters +++ b/NetSSL_OpenSSL/testsuite/TestSuite_x64_vs100.vcxproj.filters @@ -2,55 +2,55 @@ - {70375afa-ccf0-4af5-b000-0a6ff757b8ec} + {de9167f7-316f-42e1-a066-516fa3738e5c} - {d99c449d-db9f-42d8-af3c-6ee359d02ef9} + {9d2f515a-e5e2-46f7-8af6-526eb94d8ece} - {bc69f2f1-6449-478a-b720-1b902b3173d2} + {e40c55ae-4d0a-46cb-8db1-8b3fe1d4d0b9} - {6669d773-120b-40b0-87e4-dd56fbe374fb} + {47b8d249-937b-4396-b9ea-636ee5dba2b9} - {48f2d47f-69e3-46b5-b788-198c4506c2cc} + {2492a3b7-e8ad-4965-a627-ab25b20512cb} - {0d8d1e21-aa04-4ab6-9c53-7b654d7e6b6f} + {8711a283-c6ea-4d88-b4e7-c60305858aa5} - {c0fe975c-e7ab-4b38-bc5f-d3e6be1f0d8e} + {18136fa3-ccab-49aa-8429-1505f8065c5e} - {ea1b5476-6bbc-48c4-a879-775a2467a5b9} + {504d712b-9ef6-4683-8f96-2b4449e43997} - {baf12987-c12f-4d27-a8cb-fe0228711433} + {c4155aac-66ad-46fd-a441-8d4b80b50c74} - {8dc05d1a-01f0-493c-b599-21c412a91651} + {91eae531-1050-4b8c-9858-ef6e9e64b23b} - {2966a42d-263a-4188-9a8d-1fdc0443a958} + {6b2dbdf4-ee66-4a59-b86e-7892d101da05} - {91a785f4-f1e9-4c03-afb0-8d7cfa59431b} + {63347f3f-022a-4f0c-be77-17b3ddc8888b} - {62539809-eb2f-48a7-be82-a7ee2aa73253} + {86589b83-7391-4115-be2d-bc7b3dd65c13} - {bf521e83-e869-4b14-b016-9d6ebd85fb08} + {cd040730-65ef-4fd9-aacf-d3cc03567ce7} - {f100e511-16ef-4e99-bba7-9bd81761f24c} + {3137a77b-f553-4ad5-b55f-ff69774df2b7} - {a8c9d3de-4d36-418e-9010-e11f446e5621} + {0c252efb-922f-4cb8-8af0-320ac8b26374} - {e3b02e29-0d4e-423a-a5b3-b2298899d487} + {5d56c40f-7e0e-4dfe-a473-f16dd1426194} diff --git a/NetSSL_OpenSSL/testsuite/TestSuite_x64_vs110.vcxproj b/NetSSL_OpenSSL/testsuite/TestSuite_x64_vs110.vcxproj index c2222d930..756982473 100644 --- a/NetSSL_OpenSSL/testsuite/TestSuite_x64_vs110.vcxproj +++ b/NetSSL_OpenSSL/testsuite/TestSuite_x64_vs110.vcxproj @@ -101,32 +101,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false diff --git a/NetSSL_OpenSSL/testsuite/TestSuite_x64_vs110.vcxproj.filters b/NetSSL_OpenSSL/testsuite/TestSuite_x64_vs110.vcxproj.filters index da7d59357..3b72df9eb 100644 --- a/NetSSL_OpenSSL/testsuite/TestSuite_x64_vs110.vcxproj.filters +++ b/NetSSL_OpenSSL/testsuite/TestSuite_x64_vs110.vcxproj.filters @@ -2,55 +2,55 @@ - {e0db9f48-da55-47ed-ac37-ae4497ebd40c} + {1e98c49c-aedd-4a7f-b5d7-ca1e9a6ebc2d} - {7647e65b-3c92-432a-815a-ad419b2d3c29} + {80ee4aaf-67d5-4f31-a34b-66386c9fac8c} - {132d9087-1cf1-42e2-8348-1cc970208e61} + {b8d63763-1e92-45f3-9a86-dcb5a7aa4bf7} - {b95c3365-d554-4928-994b-e51f791b8998} + {61c0b4eb-8e7c-474e-aeff-c752a09bcaa6} - {fbf4300c-54c0-46ba-8d20-e0624c815e28} + {c271f2fd-55de-4ec7-8a1a-a86467ddabd8} - {d57e403c-f8ba-4e87-94ee-5543ac067c01} + {8a26ac00-4e8a-42ab-a6f2-f308da4fd28b} - {a2710ba0-f756-4a83-873a-e47521224948} + {0120a83e-c786-48ee-a7a0-188dbb8318fd} - {28c69b44-2960-41c4-8804-8fbb360a5400} + {b725e46d-f986-4e12-bfe0-97269b0070ae} - {8a39a0f9-bd5c-458b-a8cd-2a9d56ffa57a} + {a95e0b07-5ada-40c9-af51-5df132d96d84} - {63884e14-01cb-4540-bc57-06dd895a8b97} + {95e0287b-070e-4df0-a1b3-ae5f966d20b7} - {31a3943a-0aab-436e-86a6-be02ed0dd593} + {58152c25-8b37-4220-bf00-0aeb139ae80f} - {8759ba94-73d9-4d8a-a785-511574bebcbd} + {e8fb7576-7f76-49fe-ab16-7fabf785bcc7} - {47bd21a1-e383-4070-a985-4008b31a55ff} + {635a452b-4cee-4ed6-a901-de04d5ec2c9f} - {3f71d5af-7df1-458a-874b-3a2942b9d8f5} + {a3c650f4-0a0c-4496-b297-996584286d79} - {40e6d89e-9bae-4cf3-8859-696979daefe0} + {033efdd6-d15a-48f4-b0bf-c47e5b6c8201} - {d802f16d-f2bd-4f9f-9c26-51bd70f18c9a} + {3da37906-8d20-4cc3-97c9-d53299112dea} - {3ad505d2-a05e-4c6a-abdf-e60f9b6adf14} + {485ca084-4d0d-4b1d-8abc-0bc9bc83e73c} diff --git a/NetSSL_OpenSSL/testsuite/TestSuite_x64_vs120.vcxproj b/NetSSL_OpenSSL/testsuite/TestSuite_x64_vs120.vcxproj index 01b82145f..6ed401428 100644 --- a/NetSSL_OpenSSL/testsuite/TestSuite_x64_vs120.vcxproj +++ b/NetSSL_OpenSSL/testsuite/TestSuite_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false diff --git a/NetSSL_OpenSSL/testsuite/TestSuite_x64_vs120.vcxproj.filters b/NetSSL_OpenSSL/testsuite/TestSuite_x64_vs120.vcxproj.filters index f62f9c026..10522e70e 100644 --- a/NetSSL_OpenSSL/testsuite/TestSuite_x64_vs120.vcxproj.filters +++ b/NetSSL_OpenSSL/testsuite/TestSuite_x64_vs120.vcxproj.filters @@ -2,55 +2,55 @@ - {e17a34e2-7283-42b5-b8a4-91bae1051cc5} + {249f83a4-bac4-4f2a-bdb1-1214b8e7ca82} - {d01b533b-f403-4a6e-b6cb-38f87c0fe689} + {79e48ef2-0be1-4031-9bd7-12ddd4b1af36} - {aa78ce13-8597-4661-afbd-dc7b91fd15fa} + {c740b065-f201-4d00-b886-6ddc630f8c92} - {312fb722-ad4f-47a5-bae2-38f378d311f3} + {d1fc75bc-495e-4e9c-be23-54666d4102cf} - {ab65d88c-5a75-4ca6-9c55-782ec7a73949} + {333dc95a-4b22-4b56-9697-202b9d769b3a} - {ee252d2b-f8a9-4088-9c79-2b1fe40fca7f} + {fe37b15c-b7e0-4324-98db-274b2256cc29} - {203a15ef-2046-4b5e-b47e-a962711cdd08} + {11b19fa8-3c8b-4350-b416-f9144f11d70d} - {1c356660-64d3-45d1-94c7-7cae243866bf} + {2f07c06d-1da7-495a-b39a-1cfcfe727f0a} - {565ba504-4e76-4363-8c79-eecd114abf0a} + {dff33cff-b4b1-46b6-adeb-3de02c4222c2} - {960fec02-1f55-4f9e-87b3-c05fd64b78fb} + {05a6ca15-3fc9-4a9a-9dd6-8ed3e4d82023} - {2730b4ff-23cc-4e99-9713-fdf6efa6433f} + {75b0cf2f-b90a-4681-9b51-0c9372e76577} - {a7684a53-5693-4f8f-a363-0b0de32bc0f2} + {2894a9e3-9532-40ae-8213-95609bb082a2} - {cc851487-2835-4ae4-9bb1-c608c5a1f987} + {7f7ea808-3c9b-43f1-9bd7-26ad35f602b3} - {809703c7-5370-4a06-829f-ee682db2645c} + {54fe8d9e-c04e-4d2e-a2b8-5123e8c1e233} - {929272c3-a4d6-4cf0-9b95-d3f2be165241} + {1fa20554-53c4-4c62-81bc-461be0a03709} - {68978e2f-e23f-43c3-bc82-0eb7a5e42c8b} + {d5dcab9e-d641-4241-b18a-835992913b98} - {ba1173ba-c5f9-4c94-9fc7-9b745221f422} + {33a2c555-e387-4ec7-b5de-8d90d8b3bf0d} diff --git a/NetSSL_OpenSSL/testsuite/TestSuite_x64_vs90.vcproj b/NetSSL_OpenSSL/testsuite/TestSuite_x64_vs90.vcproj index 652840118..06a8971a1 100644 --- a/NetSSL_OpenSSL/testsuite/TestSuite_x64_vs90.vcproj +++ b/NetSSL_OpenSSL/testsuite/TestSuite_x64_vs90.vcproj @@ -47,7 +47,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NetSSL_Win/NetSSL_Win_WEC2013_vs110.sln b/NetSSL_Win/NetSSL_Win_WEC2013_vs110.sln new file mode 100644 index 000000000..2d1f5a822 --- /dev/null +++ b/NetSSL_Win/NetSSL_Win_WEC2013_vs110.sln @@ -0,0 +1,60 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2012 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NetSSL_Win", "NetSSL_Win_WEC2013_vs110.vcxproj", "{A097DC74-A5FC-4A0B-804E-B18892426E77}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_WEC2013_vs110.vcxproj", "{25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}" + ProjectSection(ProjectDependencies) = postProject + {A097DC74-A5FC-4A0B-804E-B18892426E77} = {A097DC74-A5FC-4A0B-804E-B18892426E77} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|SDK_AM335X_SK_WEC2013_V300 = debug_shared|SDK_AM335X_SK_WEC2013_V300 + release_shared|SDK_AM335X_SK_WEC2013_V300 = release_shared|SDK_AM335X_SK_WEC2013_V300 + debug_static_mt|SDK_AM335X_SK_WEC2013_V300 = debug_static_mt|SDK_AM335X_SK_WEC2013_V300 + release_static_mt|SDK_AM335X_SK_WEC2013_V300 = release_static_mt|SDK_AM335X_SK_WEC2013_V300 + debug_static_md|SDK_AM335X_SK_WEC2013_V300 = debug_static_md|SDK_AM335X_SK_WEC2013_V300 + release_static_md|SDK_AM335X_SK_WEC2013_V300 = release_static_md|SDK_AM335X_SK_WEC2013_V300 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_shared|SDK_AM335X_SK_WEC2013_V300.ActiveCfg = debug_shared|SDK_AM335X_SK_WEC2013_V300 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_shared|SDK_AM335X_SK_WEC2013_V300.Build.0 = debug_shared|SDK_AM335X_SK_WEC2013_V300 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_shared|SDK_AM335X_SK_WEC2013_V300.Deploy.0 = debug_shared|SDK_AM335X_SK_WEC2013_V300 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_shared|SDK_AM335X_SK_WEC2013_V300.ActiveCfg = release_shared|SDK_AM335X_SK_WEC2013_V300 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_shared|SDK_AM335X_SK_WEC2013_V300.Build.0 = release_shared|SDK_AM335X_SK_WEC2013_V300 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_shared|SDK_AM335X_SK_WEC2013_V300.Deploy.0 = release_shared|SDK_AM335X_SK_WEC2013_V300 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_mt|SDK_AM335X_SK_WEC2013_V300.ActiveCfg = debug_static_mt|SDK_AM335X_SK_WEC2013_V300 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_mt|SDK_AM335X_SK_WEC2013_V300.Build.0 = debug_static_mt|SDK_AM335X_SK_WEC2013_V300 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_mt|SDK_AM335X_SK_WEC2013_V300.Deploy.0 = debug_static_mt|SDK_AM335X_SK_WEC2013_V300 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_mt|SDK_AM335X_SK_WEC2013_V300.ActiveCfg = release_static_mt|SDK_AM335X_SK_WEC2013_V300 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_mt|SDK_AM335X_SK_WEC2013_V300.Build.0 = release_static_mt|SDK_AM335X_SK_WEC2013_V300 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_mt|SDK_AM335X_SK_WEC2013_V300.Deploy.0 = release_static_mt|SDK_AM335X_SK_WEC2013_V300 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_md|SDK_AM335X_SK_WEC2013_V300.ActiveCfg = debug_static_md|SDK_AM335X_SK_WEC2013_V300 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_md|SDK_AM335X_SK_WEC2013_V300.Build.0 = debug_static_md|SDK_AM335X_SK_WEC2013_V300 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_md|SDK_AM335X_SK_WEC2013_V300.Deploy.0 = debug_static_md|SDK_AM335X_SK_WEC2013_V300 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_md|SDK_AM335X_SK_WEC2013_V300.ActiveCfg = release_static_md|SDK_AM335X_SK_WEC2013_V300 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_md|SDK_AM335X_SK_WEC2013_V300.Build.0 = release_static_md|SDK_AM335X_SK_WEC2013_V300 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_md|SDK_AM335X_SK_WEC2013_V300.Deploy.0 = release_static_md|SDK_AM335X_SK_WEC2013_V300 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_shared|SDK_AM335X_SK_WEC2013_V300.ActiveCfg = debug_shared|SDK_AM335X_SK_WEC2013_V300 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_shared|SDK_AM335X_SK_WEC2013_V300.Build.0 = debug_shared|SDK_AM335X_SK_WEC2013_V300 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_shared|SDK_AM335X_SK_WEC2013_V300.Deploy.0 = debug_shared|SDK_AM335X_SK_WEC2013_V300 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_shared|SDK_AM335X_SK_WEC2013_V300.ActiveCfg = release_shared|SDK_AM335X_SK_WEC2013_V300 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_shared|SDK_AM335X_SK_WEC2013_V300.Build.0 = release_shared|SDK_AM335X_SK_WEC2013_V300 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_shared|SDK_AM335X_SK_WEC2013_V300.Deploy.0 = release_shared|SDK_AM335X_SK_WEC2013_V300 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_mt|SDK_AM335X_SK_WEC2013_V300.ActiveCfg = debug_static_mt|SDK_AM335X_SK_WEC2013_V300 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_mt|SDK_AM335X_SK_WEC2013_V300.Build.0 = debug_static_mt|SDK_AM335X_SK_WEC2013_V300 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_mt|SDK_AM335X_SK_WEC2013_V300.Deploy.0 = debug_static_mt|SDK_AM335X_SK_WEC2013_V300 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_mt|SDK_AM335X_SK_WEC2013_V300.ActiveCfg = release_static_mt|SDK_AM335X_SK_WEC2013_V300 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_mt|SDK_AM335X_SK_WEC2013_V300.Build.0 = release_static_mt|SDK_AM335X_SK_WEC2013_V300 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_mt|SDK_AM335X_SK_WEC2013_V300.Deploy.0 = release_static_mt|SDK_AM335X_SK_WEC2013_V300 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_md|SDK_AM335X_SK_WEC2013_V300.ActiveCfg = debug_static_md|SDK_AM335X_SK_WEC2013_V300 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_md|SDK_AM335X_SK_WEC2013_V300.Build.0 = debug_static_md|SDK_AM335X_SK_WEC2013_V300 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_md|SDK_AM335X_SK_WEC2013_V300.Deploy.0 = debug_static_md|SDK_AM335X_SK_WEC2013_V300 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_md|SDK_AM335X_SK_WEC2013_V300.ActiveCfg = release_static_md|SDK_AM335X_SK_WEC2013_V300 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_md|SDK_AM335X_SK_WEC2013_V300.Build.0 = release_static_md|SDK_AM335X_SK_WEC2013_V300 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_md|SDK_AM335X_SK_WEC2013_V300.Deploy.0 = release_static_md|SDK_AM335X_SK_WEC2013_V300 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/NetSSL_Win/NetSSL_Win_WEC2013_vs110.vcxproj b/NetSSL_Win/NetSSL_Win_WEC2013_vs110.vcxproj new file mode 100644 index 000000000..fbef5fe9e --- /dev/null +++ b/NetSSL_Win/NetSSL_Win_WEC2013_vs110.vcxproj @@ -0,0 +1,323 @@ + + + + + debug_shared + SDK_AM335X_SK_WEC2013_V300 + + + debug_static_md + SDK_AM335X_SK_WEC2013_V300 + + + debug_static_mt + SDK_AM335X_SK_WEC2013_V300 + + + release_shared + SDK_AM335X_SK_WEC2013_V300 + + + release_static_md + SDK_AM335X_SK_WEC2013_V300 + + + release_static_mt + SDK_AM335X_SK_WEC2013_V300 + + + + NetSSL_Win + {A097DC74-A5FC-4A0B-804E-B18892426E77} + en-US + 11.0 + true + SDK_AM335X_SK_WEC2013_V300 + CE800 + + + + StaticLibrary + Unicode + CE800 + + + StaticLibrary + Unicode + CE800 + + + StaticLibrary + Unicode + CE800 + + + StaticLibrary + Unicode + CE800 + + + DynamicLibrary + Unicode + CE800 + + + DynamicLibrary + Unicode + CE800 + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>11.0.61030.0 + PocoNetSSLWind + PocoNetSSLWinmdd + PocoNetSSLWinmtd + PocoNetSSLWin + PocoNetSSLWinmd + PocoNetSSLWinmt + + + ..\bin\$(Platform)\ + obj\NetSSL_Win\$(Platform)\$(Configuration)\ + true + true + + + ..\bin\$(Platform)\ + obj\NetSSL_Win\$(Platform)\$(Configuration)\ + false + true + + + ..\lib\$(Platform)\ + obj\NetSSL_Win\$(Platform)\$(Configuration)\ + + + ..\lib\$(Platform)\ + obj\NetSSL_Win\$(Platform)\$(Configuration)\ + + + ..\lib\$(Platform)\ + obj\NetSSL_Win\$(Platform)\$(Configuration)\ + + + ..\lib\$(Platform)\ + obj\NetSSL_Win\$(Platform)\$(Configuration)\ + + + + Disabled + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + _DEBUG;$(ProjectName)_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;NetSSL_Win_EXPORTS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebugDLL + true + true + Level3 + ProgramDatabase + + + ws2.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + ..\bin\$(Platform)\PocoNetSSLWind.dll + ..\lib\$(Platform);%(AdditionalLibraryDirectories) + true + ..\bin\$(Platform)\PocoNetSSLWind.pdb + + + ..\lib\$(Platform)\PocoNetSSLWind.lib + WindowsCE + + + + + Disabled + true + Speed + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + NDEBUG;$(ProjectName)_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;NetSSL_Win_EXPORTS;%(PreprocessorDefinitions) + true + false + MultiThreadedDLL + false + true + Level3 + ProgramDatabase + + + ws2.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + ..\bin\$(Platform)\PocoNetSSLWin.dll + ..\lib\$(Platform);%(AdditionalLibraryDirectories) + false + + + + ..\lib\$(Platform)\PocoNetSSLWin.lib + WindowsCE + + + + + Disabled + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + _DEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebug + true + true + + ..\lib\$(Platform)\PocoNetSSLWinmtd.pdb + Level3 + ProgramDatabase + Default + + + ..\lib\$(Platform)\PocoNetSSLWinmtd.lib + + + + + Disabled + true + Speed + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + NDEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreaded + false + true + + Level3 + ProgramDatabase + Default + + + ..\lib\$(Platform)\PocoNetSSLWinmt.lib + + + + + Disabled + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + _DEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebugDLL + true + true + + ..\lib\$(Platform)\PocoNetSSLWinmdd.pdb + Level3 + ProgramDatabase + Default + + + ..\lib\$(Platform)\PocoNetSSLWinmdd.lib + + + + + Disabled + true + Speed + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + NDEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDLL + false + true + + Level3 + ProgramDatabase + Default + + + ..\lib\$(Platform)\PocoNetSSLWinmd.lib + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NetSSL_Win/NetSSL_Win_WEC2013_vs110.vcxproj.filters b/NetSSL_Win/NetSSL_Win_WEC2013_vs110.vcxproj.filters new file mode 100644 index 000000000..02c39a6b7 --- /dev/null +++ b/NetSSL_Win/NetSSL_Win_WEC2013_vs110.vcxproj.filters @@ -0,0 +1,213 @@ + + + + + {878fcba1-5071-4bbc-9808-ba399e5f47b2} + + + {64ad3706-6090-4f59-a7d2-3ad8116fcbba} + + + {42c9b776-e1b4-4c74-87d5-b16a75951435} + + + {4235c012-9e23-4d54-b8c6-1b08aa3a6a3d} + + + {530dbfdf-75df-4fe4-88d9-85d9655dae95} + + + {547c4e14-71d8-4eed-bbf1-ee5322e24d9f} + + + {70849ccf-117c-4166-beb2-653e442f8c44} + + + {797700db-19bc-4dc9-9418-93ab59a55c59} + + + {edb78030-e579-4746-adc6-017d0b853fb2} + + + {78be0b04-6d64-4145-a996-bed7680652df} + + + {c6454dbf-ff4f-458e-924f-a47ee413f36f} + + + {6408e594-6faf-4cad-a766-49898fc6bd8b} + + + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + HTTPSClient\Header Files + + + HTTPSClient\Header Files + + + HTTPSClient\Header Files + + + SSLSockets\Header Files + + + SSLSockets\Header Files + + + SSLSockets\Header Files + + + SSLSockets\Header Files + + + SSLSockets\Header Files + + + Mail\Header Files + + + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + HTTPSClient\Source Files + + + HTTPSClient\Source Files + + + HTTPSClient\Source Files + + + SSLSockets\Source Files + + + SSLSockets\Source Files + + + SSLSockets\Source Files + + + SSLSockets\Source Files + + + SSLSockets\Source Files + + + Mail\Source Files + + + \ No newline at end of file diff --git a/NetSSL_Win/NetSSL_Win_WEC2013_vs120.sln b/NetSSL_Win/NetSSL_Win_WEC2013_vs120.sln new file mode 100644 index 000000000..b22c2cd03 --- /dev/null +++ b/NetSSL_Win/NetSSL_Win_WEC2013_vs120.sln @@ -0,0 +1,60 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NetSSL_Win", "NetSSL_Win_WEC2013_vs120.vcxproj", "{A097DC74-A5FC-4A0B-804E-B18892426E77}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_WEC2013_vs120.vcxproj", "{25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}" + ProjectSection(ProjectDependencies) = postProject + {A097DC74-A5FC-4A0B-804E-B18892426E77} = {A097DC74-A5FC-4A0B-804E-B18892426E77} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|SDK_AM335X_SK_WEC2013_V310 = debug_shared|SDK_AM335X_SK_WEC2013_V310 + release_shared|SDK_AM335X_SK_WEC2013_V310 = release_shared|SDK_AM335X_SK_WEC2013_V310 + debug_static_mt|SDK_AM335X_SK_WEC2013_V310 = debug_static_mt|SDK_AM335X_SK_WEC2013_V310 + release_static_mt|SDK_AM335X_SK_WEC2013_V310 = release_static_mt|SDK_AM335X_SK_WEC2013_V310 + debug_static_md|SDK_AM335X_SK_WEC2013_V310 = debug_static_md|SDK_AM335X_SK_WEC2013_V310 + release_static_md|SDK_AM335X_SK_WEC2013_V310 = release_static_md|SDK_AM335X_SK_WEC2013_V310 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_shared|SDK_AM335X_SK_WEC2013_V310.ActiveCfg = debug_shared|SDK_AM335X_SK_WEC2013_V310 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_shared|SDK_AM335X_SK_WEC2013_V310.Build.0 = debug_shared|SDK_AM335X_SK_WEC2013_V310 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_shared|SDK_AM335X_SK_WEC2013_V310.Deploy.0 = debug_shared|SDK_AM335X_SK_WEC2013_V310 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_shared|SDK_AM335X_SK_WEC2013_V310.ActiveCfg = release_shared|SDK_AM335X_SK_WEC2013_V310 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_shared|SDK_AM335X_SK_WEC2013_V310.Build.0 = release_shared|SDK_AM335X_SK_WEC2013_V310 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_shared|SDK_AM335X_SK_WEC2013_V310.Deploy.0 = release_shared|SDK_AM335X_SK_WEC2013_V310 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_mt|SDK_AM335X_SK_WEC2013_V310.ActiveCfg = debug_static_mt|SDK_AM335X_SK_WEC2013_V310 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_mt|SDK_AM335X_SK_WEC2013_V310.Build.0 = debug_static_mt|SDK_AM335X_SK_WEC2013_V310 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_mt|SDK_AM335X_SK_WEC2013_V310.Deploy.0 = debug_static_mt|SDK_AM335X_SK_WEC2013_V310 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_mt|SDK_AM335X_SK_WEC2013_V310.ActiveCfg = release_static_mt|SDK_AM335X_SK_WEC2013_V310 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_mt|SDK_AM335X_SK_WEC2013_V310.Build.0 = release_static_mt|SDK_AM335X_SK_WEC2013_V310 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_mt|SDK_AM335X_SK_WEC2013_V310.Deploy.0 = release_static_mt|SDK_AM335X_SK_WEC2013_V310 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_md|SDK_AM335X_SK_WEC2013_V310.ActiveCfg = debug_static_md|SDK_AM335X_SK_WEC2013_V310 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_md|SDK_AM335X_SK_WEC2013_V310.Build.0 = debug_static_md|SDK_AM335X_SK_WEC2013_V310 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_md|SDK_AM335X_SK_WEC2013_V310.Deploy.0 = debug_static_md|SDK_AM335X_SK_WEC2013_V310 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_md|SDK_AM335X_SK_WEC2013_V310.ActiveCfg = release_static_md|SDK_AM335X_SK_WEC2013_V310 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_md|SDK_AM335X_SK_WEC2013_V310.Build.0 = release_static_md|SDK_AM335X_SK_WEC2013_V310 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_md|SDK_AM335X_SK_WEC2013_V310.Deploy.0 = release_static_md|SDK_AM335X_SK_WEC2013_V310 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_shared|SDK_AM335X_SK_WEC2013_V310.ActiveCfg = debug_shared|SDK_AM335X_SK_WEC2013_V310 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_shared|SDK_AM335X_SK_WEC2013_V310.Build.0 = debug_shared|SDK_AM335X_SK_WEC2013_V310 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_shared|SDK_AM335X_SK_WEC2013_V310.Deploy.0 = debug_shared|SDK_AM335X_SK_WEC2013_V310 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_shared|SDK_AM335X_SK_WEC2013_V310.ActiveCfg = release_shared|SDK_AM335X_SK_WEC2013_V310 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_shared|SDK_AM335X_SK_WEC2013_V310.Build.0 = release_shared|SDK_AM335X_SK_WEC2013_V310 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_shared|SDK_AM335X_SK_WEC2013_V310.Deploy.0 = release_shared|SDK_AM335X_SK_WEC2013_V310 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_mt|SDK_AM335X_SK_WEC2013_V310.ActiveCfg = debug_static_mt|SDK_AM335X_SK_WEC2013_V310 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_mt|SDK_AM335X_SK_WEC2013_V310.Build.0 = debug_static_mt|SDK_AM335X_SK_WEC2013_V310 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_mt|SDK_AM335X_SK_WEC2013_V310.Deploy.0 = debug_static_mt|SDK_AM335X_SK_WEC2013_V310 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_mt|SDK_AM335X_SK_WEC2013_V310.ActiveCfg = release_static_mt|SDK_AM335X_SK_WEC2013_V310 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_mt|SDK_AM335X_SK_WEC2013_V310.Build.0 = release_static_mt|SDK_AM335X_SK_WEC2013_V310 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_mt|SDK_AM335X_SK_WEC2013_V310.Deploy.0 = release_static_mt|SDK_AM335X_SK_WEC2013_V310 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_md|SDK_AM335X_SK_WEC2013_V310.ActiveCfg = debug_static_md|SDK_AM335X_SK_WEC2013_V310 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_md|SDK_AM335X_SK_WEC2013_V310.Build.0 = debug_static_md|SDK_AM335X_SK_WEC2013_V310 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_md|SDK_AM335X_SK_WEC2013_V310.Deploy.0 = debug_static_md|SDK_AM335X_SK_WEC2013_V310 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_md|SDK_AM335X_SK_WEC2013_V310.ActiveCfg = release_static_md|SDK_AM335X_SK_WEC2013_V310 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_md|SDK_AM335X_SK_WEC2013_V310.Build.0 = release_static_md|SDK_AM335X_SK_WEC2013_V310 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_md|SDK_AM335X_SK_WEC2013_V310.Deploy.0 = release_static_md|SDK_AM335X_SK_WEC2013_V310 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/NetSSL_Win/NetSSL_Win_WEC2013_vs120.vcxproj b/NetSSL_Win/NetSSL_Win_WEC2013_vs120.vcxproj new file mode 100644 index 000000000..89f1ea914 --- /dev/null +++ b/NetSSL_Win/NetSSL_Win_WEC2013_vs120.vcxproj @@ -0,0 +1,323 @@ + + + + + debug_shared + SDK_AM335X_SK_WEC2013_V310 + + + debug_static_md + SDK_AM335X_SK_WEC2013_V310 + + + debug_static_mt + SDK_AM335X_SK_WEC2013_V310 + + + release_shared + SDK_AM335X_SK_WEC2013_V310 + + + release_static_md + SDK_AM335X_SK_WEC2013_V310 + + + release_static_mt + SDK_AM335X_SK_WEC2013_V310 + + + + NetSSL_Win + {A097DC74-A5FC-4A0B-804E-B18892426E77} + en-US + 11.0 + true + SDK_AM335X_SK_WEC2013_V310 + CE800 + + + + StaticLibrary + Unicode + CE800 + + + StaticLibrary + Unicode + CE800 + + + StaticLibrary + Unicode + CE800 + + + StaticLibrary + Unicode + CE800 + + + DynamicLibrary + Unicode + CE800 + + + DynamicLibrary + Unicode + CE800 + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>12.0.30501.0 + PocoNetSSLWind + PocoNetSSLWinmdd + PocoNetSSLWinmtd + PocoNetSSLWin + PocoNetSSLWinmd + PocoNetSSLWinmt + + + ..\bin\$(Platform)\ + obj\NetSSL_Win\$(Platform)\$(Configuration)\ + true + true + + + ..\bin\$(Platform)\ + obj\NetSSL_Win\$(Platform)\$(Configuration)\ + false + true + + + ..\lib\$(Platform)\ + obj\NetSSL_Win\$(Platform)\$(Configuration)\ + + + ..\lib\$(Platform)\ + obj\NetSSL_Win\$(Platform)\$(Configuration)\ + + + ..\lib\$(Platform)\ + obj\NetSSL_Win\$(Platform)\$(Configuration)\ + + + ..\lib\$(Platform)\ + obj\NetSSL_Win\$(Platform)\$(Configuration)\ + + + + Disabled + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + _DEBUG;$(ProjectName)_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;NetSSL_Win_EXPORTS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebugDLL + true + true + Level3 + ProgramDatabase + + + ws2.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + ..\bin\$(Platform)\PocoNetSSLWind.dll + ..\lib\$(Platform);%(AdditionalLibraryDirectories) + true + ..\bin\$(Platform)\PocoNetSSLWind.pdb + + + ..\lib\$(Platform)\PocoNetSSLWind.lib + WindowsCE + + + + + Disabled + true + Speed + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + NDEBUG;$(ProjectName)_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;NetSSL_Win_EXPORTS;%(PreprocessorDefinitions) + true + false + MultiThreadedDLL + false + true + Level3 + ProgramDatabase + + + ws2.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + ..\bin\$(Platform)\PocoNetSSLWin.dll + ..\lib\$(Platform);%(AdditionalLibraryDirectories) + false + + + + ..\lib\$(Platform)\PocoNetSSLWin.lib + WindowsCE + + + + + Disabled + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + _DEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebug + true + true + + ..\lib\$(Platform)\PocoNetSSLWinmtd.pdb + Level3 + ProgramDatabase + Default + + + ..\lib\$(Platform)\PocoNetSSLWinmtd.lib + + + + + Disabled + true + Speed + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + NDEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreaded + false + true + + Level3 + ProgramDatabase + Default + + + ..\lib\$(Platform)\PocoNetSSLWinmt.lib + + + + + Disabled + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + _DEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebugDLL + true + true + + ..\lib\$(Platform)\PocoNetSSLWinmdd.pdb + Level3 + ProgramDatabase + Default + + + ..\lib\$(Platform)\PocoNetSSLWinmdd.lib + + + + + Disabled + true + Speed + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + NDEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDLL + false + true + + Level3 + ProgramDatabase + Default + + + ..\lib\$(Platform)\PocoNetSSLWinmd.lib + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NetSSL_Win/NetSSL_Win_WEC2013_vs120.vcxproj.filters b/NetSSL_Win/NetSSL_Win_WEC2013_vs120.vcxproj.filters new file mode 100644 index 000000000..391e6b1b4 --- /dev/null +++ b/NetSSL_Win/NetSSL_Win_WEC2013_vs120.vcxproj.filters @@ -0,0 +1,213 @@ + + + + + {4f9a490c-4ba0-4b3c-9b41-12ff62826512} + + + {89381472-4f3a-4a9e-bb4d-3aed565b472d} + + + {71009931-c710-4852-bebf-caebfcd78782} + + + {2bd1bb62-f00c-4b30-9465-a641a5433fe3} + + + {15682e28-1edb-4bcb-a3a7-204c8033cd16} + + + {ed8e7089-057d-4dde-a61f-3398336f867e} + + + {400b4e6a-2d12-4892-be3d-c4b4c5c92e8c} + + + {97c9808d-cd80-4c04-8c1e-c0bbfb530610} + + + {6247b914-a430-44a5-97f4-dfee4addd4aa} + + + {aea80a4f-d26d-4769-9bae-f3cd9db6507b} + + + {cafd83fa-67e8-4779-aaa5-8befa9da9691} + + + {52613ccb-eaea-4a69-a7d7-ad8d230ea387} + + + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + HTTPSClient\Header Files + + + HTTPSClient\Header Files + + + HTTPSClient\Header Files + + + SSLSockets\Header Files + + + SSLSockets\Header Files + + + SSLSockets\Header Files + + + SSLSockets\Header Files + + + SSLSockets\Header Files + + + Mail\Header Files + + + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + HTTPSClient\Source Files + + + HTTPSClient\Source Files + + + HTTPSClient\Source Files + + + SSLSockets\Source Files + + + SSLSockets\Source Files + + + SSLSockets\Source Files + + + SSLSockets\Source Files + + + SSLSockets\Source Files + + + Mail\Source Files + + + \ No newline at end of file diff --git a/NetSSL_Win/NetSSL_Win_vs100.sln b/NetSSL_Win/NetSSL_Win_vs100.sln new file mode 100644 index 000000000..4528f17f4 --- /dev/null +++ b/NetSSL_Win/NetSSL_Win_vs100.sln @@ -0,0 +1,60 @@ +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NetSSL_Win", "NetSSL_Win_vs100.vcxproj", "{A097DC74-A5FC-4A0B-804E-B18892426E77}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_vs100.vcxproj", "{25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}" + ProjectSection(ProjectDependencies) = postProject + {A097DC74-A5FC-4A0B-804E-B18892426E77} = {A097DC74-A5FC-4A0B-804E-B18892426E77} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|Win32 = debug_shared|Win32 + release_shared|Win32 = release_shared|Win32 + debug_static_mt|Win32 = debug_static_mt|Win32 + release_static_mt|Win32 = release_static_mt|Win32 + debug_static_md|Win32 = debug_static_md|Win32 + release_static_md|Win32 = release_static_md|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_shared|Win32.Build.0 = release_shared|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_shared|Win32.Build.0 = release_shared|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/NetSSL_Win/NetSSL_Win_vs100.vcxproj b/NetSSL_Win/NetSSL_Win_vs100.vcxproj new file mode 100644 index 000000000..3344105ac --- /dev/null +++ b/NetSSL_Win/NetSSL_Win_vs100.vcxproj @@ -0,0 +1,339 @@ + + + + + debug_shared + Win32 + + + debug_static_md + Win32 + + + debug_static_mt + Win32 + + + release_shared + Win32 + + + release_static_md + Win32 + + + release_static_mt + Win32 + + + + NetSSL_Win + {A097DC74-A5FC-4A0B-804E-B18892426E77} + NetSSL_Win + Win32Proj + + + + StaticLibrary + MultiByte + + + StaticLibrary + MultiByte + + + StaticLibrary + MultiByte + + + StaticLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + ..\bin\ + obj\NetSSL_Win\$(Configuration)\ + true + ..\bin\ + obj\NetSSL_Win\$(Configuration)\ + false + ..\lib\ + obj\NetSSL_Win\$(Configuration)\ + ..\lib\ + obj\NetSSL_Win\$(Configuration)\ + ..\lib\ + obj\NetSSL_Win\$(Configuration)\ + ..\lib\ + obj\NetSSL_Win\$(Configuration)\ + PocoNetSSLWind + PocoNetSSLWinmdd + PocoNetSSLWinmtd + PocoNetSSLWin + PocoNetSSLWinmd + PocoNetSSLWinmt + + + + Disabled + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;NetSSL_Win_EXPORTS;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + EditAndContinue + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + ..\bin\PocoNetSSLWind.dll + true + true + ..\bin\PocoNetSSLWind.pdb + ..\lib;%(AdditionalLibraryDirectories) + Console + ..\lib\PocoNetSSLWind.lib + MachineX86 + %(AdditionalOptions) + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;NetSSL_Win_EXPORTS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + ..\bin\PocoNetSSLWin.dll + true + false + ..\lib;%(AdditionalLibraryDirectories) + Console + true + true + ..\lib\PocoNetSSLWin.lib + MachineX86 + %(AdditionalOptions) + + + + + Disabled + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + ..\lib\PocoNetSSLWinmtd.pdb + Level3 + EditAndContinue + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + ..\lib\PocoNetSSLWinmtd.lib + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + ..\lib\PocoNetSSLWinmt.lib + + + + + Disabled + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + ..\lib\PocoNetSSLWinmdd.pdb + Level3 + EditAndContinue + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + ..\lib\PocoNetSSLWinmdd.lib + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + ..\lib\PocoNetSSLWinmd.pdb + Level3 + + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + ..\lib\PocoNetSSLWinmd.lib + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NetSSL_Win/NetSSL_Win_vs100.vcxproj.filters b/NetSSL_Win/NetSSL_Win_vs100.vcxproj.filters new file mode 100644 index 000000000..ecb31aab4 --- /dev/null +++ b/NetSSL_Win/NetSSL_Win_vs100.vcxproj.filters @@ -0,0 +1,213 @@ + + + + + {1db08e4f-096e-4037-a390-f99c835d117b} + + + {18e4f4cc-5ee2-4646-86cf-a0c8ffe7206b} + + + {fe263841-8c54-4ec5-8f4b-98a3d360f6da} + + + {e2d2b80c-0e99-4f52-80fa-c5bb7f42be5d} + + + {98198c86-4f3f-4fe9-98e6-5116b982ec4c} + + + {d450601b-36f8-41e9-857e-c101e0e5cb27} + + + {4a3a5dcf-f361-4968-aac5-1c21f27925ac} + + + {a6c8148f-84fa-4087-9a56-2a35070889a6} + + + {892b6b56-8f27-47e6-8ae4-568588181f7d} + + + {6eb49c1d-1c52-4c9b-bb6c-6bc5425029fc} + + + {bd2d5b5f-af01-4749-bf5a-27c238e4e9ce} + + + {b8459f64-60fd-4716-8c1c-2e9ce1e762cb} + + + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + HTTPSClient\Header Files + + + HTTPSClient\Header Files + + + HTTPSClient\Header Files + + + SSLSockets\Header Files + + + SSLSockets\Header Files + + + SSLSockets\Header Files + + + SSLSockets\Header Files + + + SSLSockets\Header Files + + + Mail\Header Files + + + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + HTTPSClient\Source Files + + + HTTPSClient\Source Files + + + HTTPSClient\Source Files + + + SSLSockets\Source Files + + + SSLSockets\Source Files + + + SSLSockets\Source Files + + + SSLSockets\Source Files + + + SSLSockets\Source Files + + + Mail\Source Files + + + \ No newline at end of file diff --git a/NetSSL_Win/NetSSL_Win_vs110.sln b/NetSSL_Win/NetSSL_Win_vs110.sln new file mode 100644 index 000000000..48b14ffc9 --- /dev/null +++ b/NetSSL_Win/NetSSL_Win_vs110.sln @@ -0,0 +1,60 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2012 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NetSSL_Win", "NetSSL_Win_vs110.vcxproj", "{A097DC74-A5FC-4A0B-804E-B18892426E77}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_vs110.vcxproj", "{25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}" + ProjectSection(ProjectDependencies) = postProject + {A097DC74-A5FC-4A0B-804E-B18892426E77} = {A097DC74-A5FC-4A0B-804E-B18892426E77} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|Win32 = debug_shared|Win32 + release_shared|Win32 = release_shared|Win32 + debug_static_mt|Win32 = debug_static_mt|Win32 + release_static_mt|Win32 = release_static_mt|Win32 + debug_static_md|Win32 = debug_static_md|Win32 + release_static_md|Win32 = release_static_md|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_shared|Win32.Build.0 = release_shared|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_shared|Win32.Build.0 = release_shared|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/NetSSL_Win/NetSSL_Win_vs110.vcxproj b/NetSSL_Win/NetSSL_Win_vs110.vcxproj new file mode 100644 index 000000000..c06145d28 --- /dev/null +++ b/NetSSL_Win/NetSSL_Win_vs110.vcxproj @@ -0,0 +1,343 @@ + + + + + debug_shared + Win32 + + + debug_static_md + Win32 + + + debug_static_mt + Win32 + + + release_shared + Win32 + + + release_static_md + Win32 + + + release_static_mt + Win32 + + + + NetSSL_Win + {A097DC74-A5FC-4A0B-804E-B18892426E77} + NetSSL_Win + Win32Proj + + + + StaticLibrary + MultiByte + v110 + + + StaticLibrary + MultiByte + v110 + + + StaticLibrary + MultiByte + v110 + + + StaticLibrary + MultiByte + v110 + + + DynamicLibrary + MultiByte + v110 + + + DynamicLibrary + MultiByte + v110 + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>11.0.61030.0 + PocoNetSSLWind + PocoNetSSLWinmdd + PocoNetSSLWinmtd + PocoNetSSLWin + PocoNetSSLWinmd + PocoNetSSLWinmt + + + ..\bin\ + obj\NetSSL_Win\$(Configuration)\ + true + + + ..\bin\ + obj\NetSSL_Win\$(Configuration)\ + false + + + ..\lib\ + obj\NetSSL_Win\$(Configuration)\ + + + ..\lib\ + obj\NetSSL_Win\$(Configuration)\ + + + ..\lib\ + obj\NetSSL_Win\$(Configuration)\ + + + ..\lib\ + obj\NetSSL_Win\$(Configuration)\ + + + + Disabled + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;NetSSL_Win_EXPORTS;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + EditAndContinue + Default + + + ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + ..\bin\PocoNetSSLWind.dll + true + true + ..\bin\PocoNetSSLWind.pdb + ..\lib;%(AdditionalLibraryDirectories) + Console + ..\lib\PocoNetSSLWind.lib + MachineX86 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;NetSSL_Win_EXPORTS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + + + ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + ..\bin\PocoNetSSLWin.dll + true + false + ..\lib;%(AdditionalLibraryDirectories) + Console + true + true + ..\lib\PocoNetSSLWin.lib + MachineX86 + + + + + Disabled + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + ..\lib\PocoNetSSLWinmtd.pdb + Level3 + EditAndContinue + Default + + + ..\lib\PocoNetSSLWinmtd.lib + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + + + ..\lib\PocoNetSSLWinmt.lib + + + + + Disabled + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + ..\lib\PocoNetSSLWinmdd.pdb + Level3 + EditAndContinue + Default + + + ..\lib\PocoNetSSLWinmdd.lib + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + ..\lib\PocoNetSSLWinmd.pdb + Level3 + + Default + + + ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + ..\lib\PocoNetSSLWinmd.lib + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NetSSL_Win/NetSSL_Win_vs110.vcxproj.filters b/NetSSL_Win/NetSSL_Win_vs110.vcxproj.filters new file mode 100644 index 000000000..a087a0907 --- /dev/null +++ b/NetSSL_Win/NetSSL_Win_vs110.vcxproj.filters @@ -0,0 +1,213 @@ + + + + + {2a8fd040-2aa8-4e81-a64a-cc145092ff56} + + + {05d6ed94-b35f-429b-895e-bb51d7d9e62c} + + + {8fc1f8b1-97d4-471b-a983-e7f0c0095306} + + + {8517d49f-65b2-4fed-817f-179f310dcebf} + + + {2759a9fa-0352-4260-a24e-74ee17dd0878} + + + {c830479b-cb5c-49db-9bda-635001c15a6c} + + + {af68ba31-a8a4-48ef-9f12-580c79d35cba} + + + {0cfddb7c-f0df-4132-bfa9-840c461ee133} + + + {d9862e37-b5e4-4b7f-8529-01bc0106c785} + + + {ec291911-1d24-4eb3-9602-fa358a64a5ac} + + + {40e3c6e7-b00a-4fb6-9fbf-47f3143b03ec} + + + {15550519-5a67-4509-8569-804601cd51d0} + + + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + HTTPSClient\Header Files + + + HTTPSClient\Header Files + + + HTTPSClient\Header Files + + + SSLSockets\Header Files + + + SSLSockets\Header Files + + + SSLSockets\Header Files + + + SSLSockets\Header Files + + + SSLSockets\Header Files + + + Mail\Header Files + + + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + HTTPSClient\Source Files + + + HTTPSClient\Source Files + + + HTTPSClient\Source Files + + + SSLSockets\Source Files + + + SSLSockets\Source Files + + + SSLSockets\Source Files + + + SSLSockets\Source Files + + + SSLSockets\Source Files + + + Mail\Source Files + + + \ No newline at end of file diff --git a/NetSSL_Win/NetSSL_Win_vs120.sln b/NetSSL_Win/NetSSL_Win_vs120.sln new file mode 100644 index 000000000..ce03839eb --- /dev/null +++ b/NetSSL_Win/NetSSL_Win_vs120.sln @@ -0,0 +1,60 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NetSSL_Win", "NetSSL_Win_vs120.vcxproj", "{A097DC74-A5FC-4A0B-804E-B18892426E77}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_vs120.vcxproj", "{25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}" + ProjectSection(ProjectDependencies) = postProject + {A097DC74-A5FC-4A0B-804E-B18892426E77} = {A097DC74-A5FC-4A0B-804E-B18892426E77} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|Win32 = debug_shared|Win32 + release_shared|Win32 = release_shared|Win32 + debug_static_mt|Win32 = debug_static_mt|Win32 + release_static_mt|Win32 = release_static_mt|Win32 + debug_static_md|Win32 = debug_static_md|Win32 + release_static_md|Win32 = release_static_md|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_shared|Win32.Build.0 = release_shared|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_shared|Win32.Build.0 = release_shared|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/NetSSL_Win/NetSSL_Win_vs120.vcxproj b/NetSSL_Win/NetSSL_Win_vs120.vcxproj new file mode 100644 index 000000000..89a7bd833 --- /dev/null +++ b/NetSSL_Win/NetSSL_Win_vs120.vcxproj @@ -0,0 +1,343 @@ + + + + + debug_shared + Win32 + + + debug_static_md + Win32 + + + debug_static_mt + Win32 + + + release_shared + Win32 + + + release_static_md + Win32 + + + release_static_mt + Win32 + + + + NetSSL_Win + {A097DC74-A5FC-4A0B-804E-B18892426E77} + NetSSL_Win + Win32Proj + + + + StaticLibrary + MultiByte + v120 + + + StaticLibrary + MultiByte + v120 + + + StaticLibrary + MultiByte + v120 + + + StaticLibrary + MultiByte + v120 + + + DynamicLibrary + MultiByte + v120 + + + DynamicLibrary + MultiByte + v120 + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>12.0.30501.0 + PocoNetSSLWind + PocoNetSSLWinmdd + PocoNetSSLWinmtd + PocoNetSSLWin + PocoNetSSLWinmd + PocoNetSSLWinmt + + + ..\bin\ + obj\NetSSL_Win\$(Configuration)\ + true + + + ..\bin\ + obj\NetSSL_Win\$(Configuration)\ + false + + + ..\lib\ + obj\NetSSL_Win\$(Configuration)\ + + + ..\lib\ + obj\NetSSL_Win\$(Configuration)\ + + + ..\lib\ + obj\NetSSL_Win\$(Configuration)\ + + + ..\lib\ + obj\NetSSL_Win\$(Configuration)\ + + + + Disabled + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;NetSSL_Win_EXPORTS;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + EditAndContinue + Default + + + ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + ..\bin\PocoNetSSLWind.dll + true + true + ..\bin\PocoNetSSLWind.pdb + ..\lib;%(AdditionalLibraryDirectories) + Console + ..\lib\PocoNetSSLWind.lib + MachineX86 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;NetSSL_Win_EXPORTS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + + + ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + ..\bin\PocoNetSSLWin.dll + true + false + ..\lib;%(AdditionalLibraryDirectories) + Console + true + true + ..\lib\PocoNetSSLWin.lib + MachineX86 + + + + + Disabled + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + ..\lib\PocoNetSSLWinmtd.pdb + Level3 + EditAndContinue + Default + + + ..\lib\PocoNetSSLWinmtd.lib + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + + + ..\lib\PocoNetSSLWinmt.lib + + + + + Disabled + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + ..\lib\PocoNetSSLWinmdd.pdb + Level3 + EditAndContinue + Default + + + ..\lib\PocoNetSSLWinmdd.lib + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + ..\lib\PocoNetSSLWinmd.pdb + Level3 + + Default + + + ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + ..\lib\PocoNetSSLWinmd.lib + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NetSSL_Win/NetSSL_Win_vs120.vcxproj.filters b/NetSSL_Win/NetSSL_Win_vs120.vcxproj.filters new file mode 100644 index 000000000..181173184 --- /dev/null +++ b/NetSSL_Win/NetSSL_Win_vs120.vcxproj.filters @@ -0,0 +1,213 @@ + + + + + {2dc64dff-d1a5-4558-8b09-6f70cf3d0d87} + + + {b10f9548-97bf-4abd-99b9-87458b72dfa8} + + + {1f594a4b-f98c-46ee-8cbb-7593d26a9d93} + + + {9125a503-7286-43e1-a0db-d31c63a4b0ca} + + + {b322b5e4-e9b8-4a16-9dcb-6903b2cdf6f7} + + + {bd400d85-b616-40b6-9048-776d250cf8c3} + + + {fd76d398-778e-42a7-bd13-e39b8648db7f} + + + {cbe1c39a-7dd9-4ff3-8a2b-c4e4fadfba01} + + + {5cc6ce53-e11e-489b-a287-685d56d52c4b} + + + {6c4d3e9e-5864-46d9-8063-a6898c3face3} + + + {2b536106-7d99-4049-a3c1-176faae6cc46} + + + {623bca7c-366d-4dae-a81c-1a306094c80b} + + + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + HTTPSClient\Header Files + + + HTTPSClient\Header Files + + + HTTPSClient\Header Files + + + SSLSockets\Header Files + + + SSLSockets\Header Files + + + SSLSockets\Header Files + + + SSLSockets\Header Files + + + SSLSockets\Header Files + + + Mail\Header Files + + + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + HTTPSClient\Source Files + + + HTTPSClient\Source Files + + + HTTPSClient\Source Files + + + SSLSockets\Source Files + + + SSLSockets\Source Files + + + SSLSockets\Source Files + + + SSLSockets\Source Files + + + SSLSockets\Source Files + + + Mail\Source Files + + + \ No newline at end of file diff --git a/NetSSL_Win/NetSSL_Win_vs71.sln b/NetSSL_Win/NetSSL_Win_vs71.sln new file mode 100644 index 000000000..2a1c3f540 --- /dev/null +++ b/NetSSL_Win/NetSSL_Win_vs71.sln @@ -0,0 +1,50 @@ +Microsoft Visual Studio Solution File, Format Version 8.00 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NetSSL_Win", "NetSSL_Win_vs71.vcproj", "{A097DC74-A5FC-4A0B-804E-B18892426E77}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_vs71.vcproj", "{25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}" + ProjectSection(ProjectDependencies) = postProject + {A097DC74-A5FC-4A0B-804E-B18892426E77} = {A097DC74-A5FC-4A0B-804E-B18892426E77} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfiguration) = preSolution + debug_shared = debug_shared + release_shared = release_shared + debug_static_mt = debug_static_mt + release_static_mt = release_static_mt + debug_static_md = debug_static_md + release_static_md = release_static_md + EndGlobalSection + GlobalSection(ProjectConfiguration) = postSolution + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_shared.ActiveCfg = debug_shared|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_shared.Build.0 = debug_shared|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_shared.ActiveCfg = release_shared|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_shared.Build.0 = release_shared|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_mt.ActiveCfg = debug_static_mt|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_mt.Build.0 = debug_static_mt|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_mt.ActiveCfg = release_static_mt|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_mt.Build.0 = release_static_mt|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_md.ActiveCfg = debug_static_md|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_md.Build.0 = debug_static_md|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_md.ActiveCfg = release_static_md|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_md.Build.0 = release_static_md|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_shared.ActiveCfg = debug_shared|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_shared.Build.0 = debug_shared|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_shared.ActiveCfg = release_shared|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_shared.Build.0 = release_shared|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_mt.ActiveCfg = debug_static_mt|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_mt.Build.0 = debug_static_mt|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_mt.ActiveCfg = release_static_mt|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_mt.Build.0 = release_static_mt|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_md.ActiveCfg = debug_static_md|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_md.Build.0 = debug_static_md|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_md.ActiveCfg = release_static_md|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_md.Build.0 = release_static_md|Win32 + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddIns) = postSolution + EndGlobalSection +EndGlobal diff --git a/NetSSL_Win/NetSSL_Win_vs71.vcproj b/NetSSL_Win/NetSSL_Win_vs71.vcproj new file mode 100644 index 000000000..ef1a01625 --- /dev/null +++ b/NetSSL_Win/NetSSL_Win_vs71.vcproj @@ -0,0 +1,521 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NetSSL_Win/NetSSL_Win_vs80.sln b/NetSSL_Win/NetSSL_Win_vs80.sln new file mode 100644 index 000000000..b039b891e --- /dev/null +++ b/NetSSL_Win/NetSSL_Win_vs80.sln @@ -0,0 +1,60 @@ +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual Studio 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NetSSL_Win", "NetSSL_Win_vs80.vcproj", "{A097DC74-A5FC-4A0B-804E-B18892426E77}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_vs80.vcproj", "{25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}" + ProjectSection(ProjectDependencies) = postProject + {A097DC74-A5FC-4A0B-804E-B18892426E77} = {A097DC74-A5FC-4A0B-804E-B18892426E77} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|Win32 = debug_shared|Win32 + release_shared|Win32 = release_shared|Win32 + debug_static_mt|Win32 = debug_static_mt|Win32 + release_static_mt|Win32 = release_static_mt|Win32 + debug_static_md|Win32 = debug_static_md|Win32 + release_static_md|Win32 = release_static_md|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_shared|Win32.Build.0 = release_shared|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_shared|Win32.Build.0 = release_shared|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/NetSSL_Win/NetSSL_Win_vs80.vcproj b/NetSSL_Win/NetSSL_Win_vs80.vcproj new file mode 100644 index 000000000..bf3baa9c7 --- /dev/null +++ b/NetSSL_Win/NetSSL_Win_vs80.vcproj @@ -0,0 +1,542 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NetSSL_Win/NetSSL_Win_vs90.sln b/NetSSL_Win/NetSSL_Win_vs90.sln new file mode 100644 index 000000000..b440a6a5e --- /dev/null +++ b/NetSSL_Win/NetSSL_Win_vs90.sln @@ -0,0 +1,60 @@ +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NetSSL_Win", "NetSSL_Win_vs90.vcproj", "{A097DC74-A5FC-4A0B-804E-B18892426E77}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_vs90.vcproj", "{25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}" + ProjectSection(ProjectDependencies) = postProject + {A097DC74-A5FC-4A0B-804E-B18892426E77} = {A097DC74-A5FC-4A0B-804E-B18892426E77} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|Win32 = debug_shared|Win32 + release_shared|Win32 = release_shared|Win32 + debug_static_mt|Win32 = debug_static_mt|Win32 + release_static_mt|Win32 = release_static_mt|Win32 + debug_static_md|Win32 = debug_static_md|Win32 + release_static_md|Win32 = release_static_md|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_shared|Win32.Build.0 = release_shared|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_shared|Win32.Build.0 = release_shared|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/NetSSL_Win/NetSSL_Win_vs90.vcproj b/NetSSL_Win/NetSSL_Win_vs90.vcproj new file mode 100644 index 000000000..feb74d13f --- /dev/null +++ b/NetSSL_Win/NetSSL_Win_vs90.vcproj @@ -0,0 +1,541 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NetSSL_Win/NetSSL_Win_x64_vs100.sln b/NetSSL_Win/NetSSL_Win_x64_vs100.sln new file mode 100644 index 000000000..40b196c05 --- /dev/null +++ b/NetSSL_Win/NetSSL_Win_x64_vs100.sln @@ -0,0 +1,60 @@ +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NetSSL_Win", "NetSSL_Win_x64_vs100.vcxproj", "{A097DC74-A5FC-4A0B-804E-B18892426E77}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_x64_vs100.vcxproj", "{25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}" + ProjectSection(ProjectDependencies) = postProject + {A097DC74-A5FC-4A0B-804E-B18892426E77} = {A097DC74-A5FC-4A0B-804E-B18892426E77} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|x64 = debug_shared|x64 + release_shared|x64 = release_shared|x64 + debug_static_mt|x64 = debug_static_mt|x64 + release_static_mt|x64 = release_static_mt|x64 + debug_static_md|x64 = debug_static_md|x64 + release_static_md|x64 = release_static_md|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_shared|x64.Build.0 = debug_shared|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_shared|x64.Deploy.0 = debug_shared|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_shared|x64.ActiveCfg = release_shared|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_shared|x64.Build.0 = release_shared|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_shared|x64.Deploy.0 = release_shared|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_mt|x64.Build.0 = debug_static_mt|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_mt|x64.ActiveCfg = release_static_mt|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_mt|x64.Build.0 = release_static_mt|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_mt|x64.Deploy.0 = release_static_mt|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_md|x64.ActiveCfg = debug_static_md|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_md|x64.Build.0 = debug_static_md|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_md|x64.Deploy.0 = debug_static_md|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_md|x64.ActiveCfg = release_static_md|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_md|x64.Build.0 = release_static_md|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_md|x64.Deploy.0 = release_static_md|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_shared|x64.Build.0 = debug_shared|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_shared|x64.Deploy.0 = debug_shared|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_shared|x64.ActiveCfg = release_shared|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_shared|x64.Build.0 = release_shared|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_shared|x64.Deploy.0 = release_shared|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_mt|x64.Build.0 = debug_static_mt|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_mt|x64.ActiveCfg = release_static_mt|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_mt|x64.Build.0 = release_static_mt|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_mt|x64.Deploy.0 = release_static_mt|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_md|x64.ActiveCfg = debug_static_md|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_md|x64.Build.0 = debug_static_md|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_md|x64.Deploy.0 = debug_static_md|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_md|x64.ActiveCfg = release_static_md|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_md|x64.Build.0 = release_static_md|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_md|x64.Deploy.0 = release_static_md|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/NetSSL_Win/NetSSL_Win_x64_vs100.vcxproj b/NetSSL_Win/NetSSL_Win_x64_vs100.vcxproj new file mode 100644 index 000000000..656394cea --- /dev/null +++ b/NetSSL_Win/NetSSL_Win_x64_vs100.vcxproj @@ -0,0 +1,337 @@ + + + + + debug_shared + x64 + + + debug_static_md + x64 + + + debug_static_mt + x64 + + + release_shared + x64 + + + release_static_md + x64 + + + release_static_mt + x64 + + + + NetSSL_Win + {A097DC74-A5FC-4A0B-804E-B18892426E77} + NetSSL_Win + Win32Proj + + + + StaticLibrary + MultiByte + + + StaticLibrary + MultiByte + + + StaticLibrary + MultiByte + + + StaticLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + ..\bin64\ + obj64\NetSSL_Win\$(Configuration)\ + true + ..\bin64\ + obj64\NetSSL_Win\$(Configuration)\ + false + ..\lib64\ + obj64\NetSSL_Win\$(Configuration)\ + ..\lib64\ + obj64\NetSSL_Win\$(Configuration)\ + ..\lib64\ + obj64\NetSSL_Win\$(Configuration)\ + ..\lib64\ + obj64\NetSSL_Win\$(Configuration)\ + PocoNetSSLWin64d + PocoNetSSLWinmdd + PocoNetSSLWinmtd + PocoNetSSLWin64 + PocoNetSSLWinmd + PocoNetSSLWinmt + + + + Disabled + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;NetSSL_Win_EXPORTS;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + ..\bin64\PocoNetSSLWin64d.dll + true + true + ..\bin64\PocoNetSSLWin64d.pdb + ..\lib64;%(AdditionalLibraryDirectories) + Console + ..\lib64\PocoNetSSLWind.lib + MachineX64 + %(AdditionalOptions) + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;NetSSL_Win_EXPORTS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + ..\bin64\PocoNetSSLWin64.dll + true + false + ..\lib64;%(AdditionalLibraryDirectories) + Console + true + true + ..\lib64\PocoNetSSLWin.lib + MachineX64 + %(AdditionalOptions) + + + + + Disabled + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + ..\lib64\PocoNetSSLWinmtd.pdb + Level3 + ProgramDatabase + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + ..\lib64\PocoNetSSLWinmtd.lib + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + ..\lib64\PocoNetSSLWinmt.lib + + + + + Disabled + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + ..\lib64\PocoNetSSLWinmdd.pdb + Level3 + ProgramDatabase + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + ..\lib64\PocoNetSSLWinmdd.lib + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + ..\lib64\PocoNetSSLWinmd.lib + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NetSSL_Win/NetSSL_Win_x64_vs100.vcxproj.filters b/NetSSL_Win/NetSSL_Win_x64_vs100.vcxproj.filters new file mode 100644 index 000000000..2a943e54a --- /dev/null +++ b/NetSSL_Win/NetSSL_Win_x64_vs100.vcxproj.filters @@ -0,0 +1,213 @@ + + + + + {02054715-caf7-4387-a3ed-85971e5d4cc6} + + + {27266a4f-4abe-4421-b2df-1f29ca6b5309} + + + {e48199ac-031a-4d9d-a09e-b685b40bcb11} + + + {022ff32c-9842-4496-8238-85aecfb84246} + + + {08dcb0de-74a7-4197-ab7c-94c16a516f1e} + + + {e0a9f8d7-b2c3-463f-b032-fed2bd62feea} + + + {6fdc8ab6-0ce8-400b-b8ef-0551d51cb089} + + + {60c0bc0c-66d3-421f-8f9f-b6e32cc52f82} + + + {7d0d9dea-c941-4c74-a901-28354aba836f} + + + {4e5bc229-459f-4d1e-b8a7-b13ea7c36972} + + + {bfdb657c-2486-45d1-a8e5-784b0b06d567} + + + {6dbeba61-0362-4b61-b54c-16889751ddd2} + + + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + HTTPSClient\Header Files + + + HTTPSClient\Header Files + + + HTTPSClient\Header Files + + + SSLSockets\Header Files + + + SSLSockets\Header Files + + + SSLSockets\Header Files + + + SSLSockets\Header Files + + + SSLSockets\Header Files + + + Mail\Header Files + + + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + HTTPSClient\Source Files + + + HTTPSClient\Source Files + + + HTTPSClient\Source Files + + + SSLSockets\Source Files + + + SSLSockets\Source Files + + + SSLSockets\Source Files + + + SSLSockets\Source Files + + + SSLSockets\Source Files + + + Mail\Source Files + + + \ No newline at end of file diff --git a/NetSSL_Win/NetSSL_Win_x64_vs110.sln b/NetSSL_Win/NetSSL_Win_x64_vs110.sln new file mode 100644 index 000000000..7b9eedf49 --- /dev/null +++ b/NetSSL_Win/NetSSL_Win_x64_vs110.sln @@ -0,0 +1,60 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2012 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NetSSL_Win", "NetSSL_Win_x64_vs110.vcxproj", "{A097DC74-A5FC-4A0B-804E-B18892426E77}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_x64_vs110.vcxproj", "{25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}" + ProjectSection(ProjectDependencies) = postProject + {A097DC74-A5FC-4A0B-804E-B18892426E77} = {A097DC74-A5FC-4A0B-804E-B18892426E77} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|x64 = debug_shared|x64 + release_shared|x64 = release_shared|x64 + debug_static_mt|x64 = debug_static_mt|x64 + release_static_mt|x64 = release_static_mt|x64 + debug_static_md|x64 = debug_static_md|x64 + release_static_md|x64 = release_static_md|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_shared|x64.Build.0 = debug_shared|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_shared|x64.Deploy.0 = debug_shared|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_shared|x64.ActiveCfg = release_shared|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_shared|x64.Build.0 = release_shared|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_shared|x64.Deploy.0 = release_shared|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_mt|x64.Build.0 = debug_static_mt|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_mt|x64.ActiveCfg = release_static_mt|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_mt|x64.Build.0 = release_static_mt|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_mt|x64.Deploy.0 = release_static_mt|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_md|x64.ActiveCfg = debug_static_md|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_md|x64.Build.0 = debug_static_md|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_md|x64.Deploy.0 = debug_static_md|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_md|x64.ActiveCfg = release_static_md|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_md|x64.Build.0 = release_static_md|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_md|x64.Deploy.0 = release_static_md|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_shared|x64.Build.0 = debug_shared|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_shared|x64.Deploy.0 = debug_shared|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_shared|x64.ActiveCfg = release_shared|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_shared|x64.Build.0 = release_shared|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_shared|x64.Deploy.0 = release_shared|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_mt|x64.Build.0 = debug_static_mt|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_mt|x64.ActiveCfg = release_static_mt|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_mt|x64.Build.0 = release_static_mt|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_mt|x64.Deploy.0 = release_static_mt|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_md|x64.ActiveCfg = debug_static_md|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_md|x64.Build.0 = debug_static_md|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_md|x64.Deploy.0 = debug_static_md|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_md|x64.ActiveCfg = release_static_md|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_md|x64.Build.0 = release_static_md|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_md|x64.Deploy.0 = release_static_md|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/NetSSL_Win/NetSSL_Win_x64_vs110.vcxproj b/NetSSL_Win/NetSSL_Win_x64_vs110.vcxproj new file mode 100644 index 000000000..a5bcbf88b --- /dev/null +++ b/NetSSL_Win/NetSSL_Win_x64_vs110.vcxproj @@ -0,0 +1,341 @@ + + + + + debug_shared + x64 + + + debug_static_md + x64 + + + debug_static_mt + x64 + + + release_shared + x64 + + + release_static_md + x64 + + + release_static_mt + x64 + + + + NetSSL_Win + {A097DC74-A5FC-4A0B-804E-B18892426E77} + NetSSL_Win + Win32Proj + + + + StaticLibrary + MultiByte + v110 + + + StaticLibrary + MultiByte + v110 + + + StaticLibrary + MultiByte + v110 + + + StaticLibrary + MultiByte + v110 + + + DynamicLibrary + MultiByte + v110 + + + DynamicLibrary + MultiByte + v110 + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>11.0.61030.0 + PocoNetSSLWin64d + PocoNetSSLWinmdd + PocoNetSSLWinmtd + PocoNetSSLWin64 + PocoNetSSLWinmd + PocoNetSSLWinmt + + + ..\bin64\ + obj64\NetSSL_Win\$(Configuration)\ + true + + + ..\bin64\ + obj64\NetSSL_Win\$(Configuration)\ + false + + + ..\lib64\ + obj64\NetSSL_Win\$(Configuration)\ + + + ..\lib64\ + obj64\NetSSL_Win\$(Configuration)\ + + + ..\lib64\ + obj64\NetSSL_Win\$(Configuration)\ + + + ..\lib64\ + obj64\NetSSL_Win\$(Configuration)\ + + + + Disabled + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;NetSSL_Win_EXPORTS;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + + + ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + ..\bin64\PocoNetSSLWin64d.dll + true + true + ..\bin64\PocoNetSSLWin64d.pdb + ..\lib64;%(AdditionalLibraryDirectories) + Console + ..\lib64\PocoNetSSLWind.lib + MachineX64 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;NetSSL_Win_EXPORTS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + + + ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + ..\bin64\PocoNetSSLWin64.dll + true + false + ..\lib64;%(AdditionalLibraryDirectories) + Console + true + true + ..\lib64\PocoNetSSLWin.lib + MachineX64 + + + + + Disabled + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + ..\lib64\PocoNetSSLWinmtd.pdb + Level3 + ProgramDatabase + Default + + + ..\lib64\PocoNetSSLWinmtd.lib + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + + + ..\lib64\PocoNetSSLWinmt.lib + + + + + Disabled + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + ..\lib64\PocoNetSSLWinmdd.pdb + Level3 + ProgramDatabase + Default + + + ..\lib64\PocoNetSSLWinmdd.lib + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + + + ..\lib64\PocoNetSSLWinmd.lib + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NetSSL_Win/NetSSL_Win_x64_vs110.vcxproj.filters b/NetSSL_Win/NetSSL_Win_x64_vs110.vcxproj.filters new file mode 100644 index 000000000..b8ea290d7 --- /dev/null +++ b/NetSSL_Win/NetSSL_Win_x64_vs110.vcxproj.filters @@ -0,0 +1,213 @@ + + + + + {4ac849e8-e3f4-4c83-ad0b-08dd7654855d} + + + {fbbbf1df-8fba-4fe4-ae82-e9a121a21376} + + + {0f4d92d8-00f6-47ae-a7f2-3fec9fc9d59f} + + + {611092c3-1434-4c7c-bdb4-78c44bac918b} + + + {5b29748f-7076-4550-a52c-6e13522ce070} + + + {0913463a-dc45-42c0-88c5-f31da10435f4} + + + {616f5f0c-1ff1-47f9-89a2-f488c14f899f} + + + {a657de56-b2df-4bf8-b7ef-46dde254c622} + + + {fcc60ce9-f7d2-4af8-b8ce-5e267565403a} + + + {f7de1e3a-ea31-4299-b4a6-bcffd725fab3} + + + {8e9ecae9-20f8-4b7b-bf89-14f266ba824e} + + + {4e8d83dd-080d-4bb6-9c26-dfd5d042ec25} + + + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + HTTPSClient\Header Files + + + HTTPSClient\Header Files + + + HTTPSClient\Header Files + + + SSLSockets\Header Files + + + SSLSockets\Header Files + + + SSLSockets\Header Files + + + SSLSockets\Header Files + + + SSLSockets\Header Files + + + Mail\Header Files + + + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + HTTPSClient\Source Files + + + HTTPSClient\Source Files + + + HTTPSClient\Source Files + + + SSLSockets\Source Files + + + SSLSockets\Source Files + + + SSLSockets\Source Files + + + SSLSockets\Source Files + + + SSLSockets\Source Files + + + Mail\Source Files + + + \ No newline at end of file diff --git a/NetSSL_Win/NetSSL_Win_x64_vs120.sln b/NetSSL_Win/NetSSL_Win_x64_vs120.sln new file mode 100644 index 000000000..bb45c23ad --- /dev/null +++ b/NetSSL_Win/NetSSL_Win_x64_vs120.sln @@ -0,0 +1,60 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NetSSL_Win", "NetSSL_Win_x64_vs120.vcxproj", "{A097DC74-A5FC-4A0B-804E-B18892426E77}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_x64_vs120.vcxproj", "{25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}" + ProjectSection(ProjectDependencies) = postProject + {A097DC74-A5FC-4A0B-804E-B18892426E77} = {A097DC74-A5FC-4A0B-804E-B18892426E77} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|x64 = debug_shared|x64 + release_shared|x64 = release_shared|x64 + debug_static_mt|x64 = debug_static_mt|x64 + release_static_mt|x64 = release_static_mt|x64 + debug_static_md|x64 = debug_static_md|x64 + release_static_md|x64 = release_static_md|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_shared|x64.Build.0 = debug_shared|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_shared|x64.Deploy.0 = debug_shared|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_shared|x64.ActiveCfg = release_shared|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_shared|x64.Build.0 = release_shared|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_shared|x64.Deploy.0 = release_shared|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_mt|x64.Build.0 = debug_static_mt|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_mt|x64.ActiveCfg = release_static_mt|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_mt|x64.Build.0 = release_static_mt|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_mt|x64.Deploy.0 = release_static_mt|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_md|x64.ActiveCfg = debug_static_md|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_md|x64.Build.0 = debug_static_md|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_md|x64.Deploy.0 = debug_static_md|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_md|x64.ActiveCfg = release_static_md|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_md|x64.Build.0 = release_static_md|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_md|x64.Deploy.0 = release_static_md|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_shared|x64.Build.0 = debug_shared|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_shared|x64.Deploy.0 = debug_shared|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_shared|x64.ActiveCfg = release_shared|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_shared|x64.Build.0 = release_shared|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_shared|x64.Deploy.0 = release_shared|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_mt|x64.Build.0 = debug_static_mt|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_mt|x64.ActiveCfg = release_static_mt|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_mt|x64.Build.0 = release_static_mt|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_mt|x64.Deploy.0 = release_static_mt|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_md|x64.ActiveCfg = debug_static_md|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_md|x64.Build.0 = debug_static_md|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_md|x64.Deploy.0 = debug_static_md|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_md|x64.ActiveCfg = release_static_md|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_md|x64.Build.0 = release_static_md|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_md|x64.Deploy.0 = release_static_md|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/NetSSL_Win/NetSSL_Win_x64_vs120.vcxproj b/NetSSL_Win/NetSSL_Win_x64_vs120.vcxproj new file mode 100644 index 000000000..aba555e6a --- /dev/null +++ b/NetSSL_Win/NetSSL_Win_x64_vs120.vcxproj @@ -0,0 +1,341 @@ + + + + + debug_shared + x64 + + + debug_static_md + x64 + + + debug_static_mt + x64 + + + release_shared + x64 + + + release_static_md + x64 + + + release_static_mt + x64 + + + + NetSSL_Win + {A097DC74-A5FC-4A0B-804E-B18892426E77} + NetSSL_Win + Win32Proj + + + + StaticLibrary + MultiByte + v120 + + + StaticLibrary + MultiByte + v120 + + + StaticLibrary + MultiByte + v120 + + + StaticLibrary + MultiByte + v120 + + + DynamicLibrary + MultiByte + v120 + + + DynamicLibrary + MultiByte + v120 + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>12.0.30501.0 + PocoNetSSLWin64d + PocoNetSSLWinmdd + PocoNetSSLWinmtd + PocoNetSSLWin64 + PocoNetSSLWinmd + PocoNetSSLWinmt + + + ..\bin64\ + obj64\NetSSL_Win\$(Configuration)\ + true + + + ..\bin64\ + obj64\NetSSL_Win\$(Configuration)\ + false + + + ..\lib64\ + obj64\NetSSL_Win\$(Configuration)\ + + + ..\lib64\ + obj64\NetSSL_Win\$(Configuration)\ + + + ..\lib64\ + obj64\NetSSL_Win\$(Configuration)\ + + + ..\lib64\ + obj64\NetSSL_Win\$(Configuration)\ + + + + Disabled + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;NetSSL_Win_EXPORTS;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + + + ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + ..\bin64\PocoNetSSLWin64d.dll + true + true + ..\bin64\PocoNetSSLWin64d.pdb + ..\lib64;%(AdditionalLibraryDirectories) + Console + ..\lib64\PocoNetSSLWind.lib + MachineX64 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;NetSSL_Win_EXPORTS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + + + ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + ..\bin64\PocoNetSSLWin64.dll + true + false + ..\lib64;%(AdditionalLibraryDirectories) + Console + true + true + ..\lib64\PocoNetSSLWin.lib + MachineX64 + + + + + Disabled + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + ..\lib64\PocoNetSSLWinmtd.pdb + Level3 + ProgramDatabase + Default + + + ..\lib64\PocoNetSSLWinmtd.lib + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + + + ..\lib64\PocoNetSSLWinmt.lib + + + + + Disabled + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + ..\lib64\PocoNetSSLWinmdd.pdb + Level3 + ProgramDatabase + Default + + + ..\lib64\PocoNetSSLWinmdd.lib + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + + + ..\lib64\PocoNetSSLWinmd.lib + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NetSSL_Win/NetSSL_Win_x64_vs120.vcxproj.filters b/NetSSL_Win/NetSSL_Win_x64_vs120.vcxproj.filters new file mode 100644 index 000000000..e6ef42a3a --- /dev/null +++ b/NetSSL_Win/NetSSL_Win_x64_vs120.vcxproj.filters @@ -0,0 +1,213 @@ + + + + + {5d1c38b6-27ba-4983-a7e5-ea5e3b89fe8f} + + + {bb27de0c-95a6-4457-865c-ee49e391c6f3} + + + {3f8569b1-b27f-45c1-ac84-cf8d6ae36a56} + + + {60709db2-794d-454b-a542-ca3ea92eb38d} + + + {dbc89d83-439c-4853-bb77-3b449f9a7d7a} + + + {a5cbb6a9-0425-40ca-bac5-78278387b55b} + + + {00ba22c2-63d7-4de8-8566-bfc87d3c7024} + + + {bef4c703-7b55-4215-bd89-a48e39301cde} + + + {9a90f1d1-2008-4edd-b1a2-b3b94ad4f4c6} + + + {2a35f7c6-2ea5-46c8-ba84-fe5beaa3fb81} + + + {7ad1640f-1620-4266-9522-ad9652f124d5} + + + {39478ff4-d4af-4f07-9441-01ac0b03c3d4} + + + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + SSLCore\Header Files + + + HTTPSClient\Header Files + + + HTTPSClient\Header Files + + + HTTPSClient\Header Files + + + SSLSockets\Header Files + + + SSLSockets\Header Files + + + SSLSockets\Header Files + + + SSLSockets\Header Files + + + SSLSockets\Header Files + + + Mail\Header Files + + + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + SSLCore\Source Files + + + HTTPSClient\Source Files + + + HTTPSClient\Source Files + + + HTTPSClient\Source Files + + + SSLSockets\Source Files + + + SSLSockets\Source Files + + + SSLSockets\Source Files + + + SSLSockets\Source Files + + + SSLSockets\Source Files + + + Mail\Source Files + + + \ No newline at end of file diff --git a/NetSSL_Win/NetSSL_Win_x64_vs90.sln b/NetSSL_Win/NetSSL_Win_x64_vs90.sln new file mode 100644 index 000000000..e530c60c8 --- /dev/null +++ b/NetSSL_Win/NetSSL_Win_x64_vs90.sln @@ -0,0 +1,60 @@ +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NetSSL_Win", "NetSSL_Win_x64_vs90.vcproj", "{A097DC74-A5FC-4A0B-804E-B18892426E77}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_x64_vs90.vcproj", "{25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}" + ProjectSection(ProjectDependencies) = postProject + {A097DC74-A5FC-4A0B-804E-B18892426E77} = {A097DC74-A5FC-4A0B-804E-B18892426E77} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|x64 = debug_shared|x64 + release_shared|x64 = release_shared|x64 + debug_static_mt|x64 = debug_static_mt|x64 + release_static_mt|x64 = release_static_mt|x64 + debug_static_md|x64 = debug_static_md|x64 + release_static_md|x64 = release_static_md|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_shared|x64.Build.0 = debug_shared|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_shared|x64.Deploy.0 = debug_shared|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_shared|x64.ActiveCfg = release_shared|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_shared|x64.Build.0 = release_shared|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_shared|x64.Deploy.0 = release_shared|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_mt|x64.Build.0 = debug_static_mt|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_mt|x64.ActiveCfg = release_static_mt|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_mt|x64.Build.0 = release_static_mt|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_mt|x64.Deploy.0 = release_static_mt|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_md|x64.ActiveCfg = debug_static_md|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_md|x64.Build.0 = debug_static_md|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.debug_static_md|x64.Deploy.0 = debug_static_md|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_md|x64.ActiveCfg = release_static_md|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_md|x64.Build.0 = release_static_md|x64 + {A097DC74-A5FC-4A0B-804E-B18892426E77}.release_static_md|x64.Deploy.0 = release_static_md|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_shared|x64.Build.0 = debug_shared|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_shared|x64.Deploy.0 = debug_shared|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_shared|x64.ActiveCfg = release_shared|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_shared|x64.Build.0 = release_shared|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_shared|x64.Deploy.0 = release_shared|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_mt|x64.Build.0 = debug_static_mt|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_mt|x64.ActiveCfg = release_static_mt|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_mt|x64.Build.0 = release_static_mt|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_mt|x64.Deploy.0 = release_static_mt|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_md|x64.ActiveCfg = debug_static_md|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_md|x64.Build.0 = debug_static_md|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.debug_static_md|x64.Deploy.0 = debug_static_md|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_md|x64.ActiveCfg = release_static_md|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_md|x64.Build.0 = release_static_md|x64 + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28}.release_static_md|x64.Deploy.0 = release_static_md|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/NetSSL_Win/NetSSL_Win_x64_vs90.vcproj b/NetSSL_Win/NetSSL_Win_x64_vs90.vcproj new file mode 100644 index 000000000..4ab5eedaf --- /dev/null +++ b/NetSSL_Win/NetSSL_Win_x64_vs90.vcproj @@ -0,0 +1,546 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NetSSL_Win/doc/README.txt b/NetSSL_Win/doc/README.txt new file mode 100644 index 000000000..ef3152e76 --- /dev/null +++ b/NetSSL_Win/doc/README.txt @@ -0,0 +1,69 @@ +About NetSSL_Win +================ + +NetSSL_Win is an implementation of the POCO NetSSL library based on Windows +Schannel. The original NetSSL implementation is based on OpenSSL and thus +has a few OpenSSL-isms in the interface. Generally, source code based +on NetSSL_OpenSSL can be easily ported to use NetSSL_Win. Just a few +minor code changes are required, due to differences in the API. +These are discussed below: + + - Context: The Context constructor uses different arguments. While + the first argument is the same, all others are different. + Instead of a certificate file name, a certificate subject name is + specified. Certificates can be loaded from a Windows + certificate store, or from PKCS #12 files (.pfx, .p12) containing + certificate and private key pairs, if the OPT_LOAD_CERT_FROM_FILE + is specified. In the latter case, a private key passphrase handler + must be setup. + Please refer to the header file documentation for more information. + Furthermore, the following Context methods are not available in NetSSL_Win: + addChainCertificate(), disableStatelessSessionResumption(), + enableSessionCache(),flushSessionCache(), + getSessionCacheSize(), getSessionTimeout(), + setSessionCacheSize(), setSessionTimeout(), sslContext(), + useCertificate(), usePrivateKey(). + + - SSLManager: The configuration properties used to configure the SSLManager + are different from the ones used in NetSSL_OpenSSL. Please see the + SSLManager header file for more information. + The isFIPSEnabled() method is not available. + + - X509Certificate: Saving a certificate is not supported. + + +Certificate and Certificate Stores +---------------------------------- + +The test suite and samples expect a certificate/private key file named +any.pfx, located in the current working directory. This can be changed +by editing the testrunner.xml/TestSuite.xml configuration files. +Alternatively, a certificate from the Windows certificate store can be used. +A suitable self-signed certificate can be created using the Windows +IIS administration console, then exported to a file, and re-imported into +the user's personal store. + +To create the certificate, follow these steps: + + 1. Launch the Computer Management utility. + 2. Go to Services and Applications > Internet Information Server. + 3. Open the Server Certificates feature. + 4. Under Actions, click "Create Self-Signed Certificate...". + 5. Enter a user-friendly name for the certificate. + The certificate will be issued to the name of your computer. + 6. Export the certificate by right-clicking it and chosing "Export...". + 7. In Explorer, double-click the exported certificate file (.pfx) + to launch the Certificate Import Wizard. + 8. Import the certificate into your personal store by + selecting "Place all certificates in the following store" and + selecting the "Personal" store in the import wizard. + + +Windows Embedded Compact +------------------------ + +Windows Embedded Compact does not support the following Schannel +features: + - certificate revocation checking (Context::OPT_PERFORM_REVOCATION_CHECK) + - TLS 1.1 and 1.2 (Context::TLSV1_1_CLIENT_USE, etc.) + - disabling weak security algorithms (Context::OPT_USE_STRONG_CRYPTO) diff --git a/NetSSL_Win/include/Poco/Net/AcceptCertificateHandler.h b/NetSSL_Win/include/Poco/Net/AcceptCertificateHandler.h new file mode 100644 index 000000000..11ac435c7 --- /dev/null +++ b/NetSSL_Win/include/Poco/Net/AcceptCertificateHandler.h @@ -0,0 +1,54 @@ +// +// AcceptCertificateHandler.h +// +// $Id: //poco/1.4/NetSSL_Win/include/Poco/Net/AcceptCertificateHandler.h#1 $ +// +// Library: NetSSL_Win +// Package: SSLCore +// Module: AcceptCertificateHandler +// +// Definition of the AcceptCertificateHandler class. +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef NetSSL_AcceptCertificateHandler_INCLUDED +#define NetSSL_AcceptCertificateHandler_INCLUDED + + +#include "Poco/Net/NetSSL.h" +#include "Poco/Net/InvalidCertificateHandler.h" + + +namespace Poco { +namespace Net { + + +class NetSSL_Win_API AcceptCertificateHandler: public InvalidCertificateHandler + /// A AcceptCertificateHandler is invoked whenever an error + /// occurs verifying the certificate. It always accepts + /// the certificate. + /// + /// Should be using for testing purposes only. +{ +public: + AcceptCertificateHandler(bool handleErrorsOnServerSide); + /// Creates the AcceptCertificateHandler + + virtual ~AcceptCertificateHandler(); + /// Destroys the AcceptCertificateHandler. + + void onInvalidCertificate(const void* pSender, VerificationErrorArgs& errorCert); + /// Receives the questionable certificate in parameter errorCert. If one wants to accept the + /// certificate, call errorCert.setIgnoreError(true). +}; + + +} } // namespace Poco::Net + + +#endif // NetSSL_AcceptCertificateHandler_INCLUDED diff --git a/NetSSL_Win/include/Poco/Net/AutoSecBufferDesc.h b/NetSSL_Win/include/Poco/Net/AutoSecBufferDesc.h new file mode 100644 index 000000000..432eaba7d --- /dev/null +++ b/NetSSL_Win/include/Poco/Net/AutoSecBufferDesc.h @@ -0,0 +1,169 @@ +// +// AutoSecBufferDesc.h +// +// $Id$ +// +// Library: NetSSL_Win +// Package: SSLCore +// Module: AutoSecBufferDesc +// +// Definition of the AutoSecBufferDesc class. +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef NetSSL_AutoSecBufferDesc_INCLUDED +#define NetSSL_AutoSecBufferDesc_INCLUDED + + +#include "Poco/Net/NetSSL.h" +#include +#include +#ifndef SECURITY_WIN32 +#define SECURITY_WIN32 +#endif +#include + + +namespace Poco { +namespace Net { + + +template +class AutoSecBufferDesc: public SecBufferDesc + /// AutoSecBufferDesc is a helper class for automatic initialization and release of SecBuffer objects. +{ +public: + AutoSecBufferDesc(SecurityFunctionTableW* pSec, bool autoRelease): + /// Creates a AutoSecBufferDesc. If autoRelease is true, the buffers will be released with the provided pSec function. + _pSec(pSec), + _autoRelease(autoRelease) + { + poco_check_ptr (_pSec); + poco_static_assert (numBufs > 0); + + initBuffers(); + cBuffers = numBufs; + pBuffers = _buffers; + ulVersion = SECBUFFER_VERSION; + } + + ~AutoSecBufferDesc() + /// Destroys the AutoSecBufferDesc + { + release(); + } + + void reset(bool autoRelease) + { + release(); + _autoRelease = autoRelease; + initBuffers(); + cBuffers = numBufs; + pBuffers = _buffers; + ulVersion = SECBUFFER_VERSION; + } + + void release() + { + if (_autoRelease) + { + for (int i = 0; i < numBufs; ++i) + { + if (_buffers[i].pvBuffer) + { + _pSec->FreeContextBuffer(_buffers[i].pvBuffer); + } + } + _autoRelease = false; + } + } + + SecBuffer& operator [] (Poco::UInt32 idx) + { + return _buffers[idx]; + } + + const SecBuffer& operator [] (Poco::UInt32 idx) const + { + return _buffers[idx]; + } + + void release(int idx) + /// Will release the buffer if necessary + { + release(idx, _autoRelease); + } + + void setSecBufferEmpty(int idx) + { + release(idx, _autoRelease); + } + + void setSecBufferData(int idx, void* pData, int len) + { + setContent(idx, pData, len, SECBUFFER_DATA); + } + + void setSecBufferToken(int idx, void* pData, int len) + { + setContent(idx, pData, len, SECBUFFER_TOKEN); + } + + void setSecBufferStreamHeader(int idx, void* pData, int len) + { + setContent(idx, pData, len, SECBUFFER_STREAM_HEADER); + } + + void setSecBufferStreamTrailer(int idx, void* pData, int len) + { + setContent(idx, pData, len, SECBUFFER_STREAM_TRAILER); + } + +private: + AutoSecBufferDesc(const AutoSecBufferDesc& desc); + AutoSecBufferDesc& operator = (const AutoSecBufferDesc& desc); + + void release(int idx, bool force) + { + if (force && _buffers[idx].pvBuffer) + _pSec->FreeContextBuffer(_buffers[idx].pvBuffer); + + _buffers[idx].pvBuffer = 0; + _buffers[idx].cbBuffer = 0; + _buffers[idx].BufferType = SECBUFFER_EMPTY; + } + + void initBuffers() + { + for (int i = 0; i < numBufs; ++i) + { + _buffers[i].pvBuffer = 0; + _buffers[i].cbBuffer = 0; + _buffers[i].BufferType = SECBUFFER_EMPTY; + } + } + + void setContent(int idx, void* pData, int len, unsigned long type) + { + release(idx, _autoRelease); + _buffers[idx].pvBuffer = pData; + _buffers[idx].cbBuffer = len; + _buffers[idx].BufferType = type; + } + +private: + SecurityFunctionTableW* _pSec; + bool _autoRelease; + SecBuffer _buffers[numBufs]; +}; + + +} } // namespace Poco::Net + + +#endif // NetSSL_AutoSecBufferDesc_INCLUDED diff --git a/NetSSL_Win/include/Poco/Net/CertificateHandlerFactory.h b/NetSSL_Win/include/Poco/Net/CertificateHandlerFactory.h new file mode 100644 index 000000000..d957dc4a4 --- /dev/null +++ b/NetSSL_Win/include/Poco/Net/CertificateHandlerFactory.h @@ -0,0 +1,95 @@ +// +// CertificateHandlerFactory.h +// +// $Id$ +// +// Library: NetSSL_Win +// Package: SSLCore +// Module: CertificateHandlerFactory +// +// Definition of the CertificateHandlerFactory class. +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef NetSSL_CertificateHandlerFactory_INCLUDED +#define NetSSL_CertificateHandlerFactory_INCLUDED + + +#include "Poco/Net/NetSSL.h" + + +namespace Poco { +namespace Net { + + +class InvalidCertificateHandler; + + +class NetSSL_Win_API CertificateHandlerFactory + /// A CertificateHandlerFactory is responsible for creating InvalidCertificateHandlers. + /// + /// You don't need to access this class directly. Use the macro + /// POCO_REGISTER_CHFACTORY(namespace, InvalidCertificateHandlerName) + /// instead (see the documentation of InvalidCertificateHandler for an example). +{ +public: + CertificateHandlerFactory(); + /// Creates the CertificateHandlerFactory. + + virtual ~CertificateHandlerFactory(); + /// Destroys the CertificateHandlerFactory. + + virtual InvalidCertificateHandler* create(bool server) const = 0; + /// Creates a new InvalidCertificateHandler. Set server to true if the certificate handler is used on the server side. +}; + + +class NetSSL_Win_API CertificateHandlerFactoryRegistrar + /// Registrar class which automatically registers CertificateHandlerFactory at the CertificateHandlerFactoryMgr. + /// You don't need to access this class directly. Use the macro + /// POCO_REGISTER_CHFACTORY(namespace, InvalidCertificateHandlerName) + /// instead (see the documentation of InvalidCertificateHandler for an example). +{ +public: + CertificateHandlerFactoryRegistrar(const std::string& name, CertificateHandlerFactory* pFactory); + /// Registers the CertificateHandlerFactory with the given name at the factory manager. + + virtual ~CertificateHandlerFactoryRegistrar(); + /// Destroys the CertificateHandlerFactoryRegistrar. +}; + + +template +class CertificateHandlerFactoryImpl: public Poco::Net::CertificateHandlerFactory +{ +public: + CertificateHandlerFactoryImpl() + { + } + + ~CertificateHandlerFactoryImpl() + { + } + + InvalidCertificateHandler* create(bool server) const + { + return new T(server); + } +}; + + +} } // namespace Poco::Net + + +// DEPRECATED: register the factory directly at the FactoryMgr: +// Poco::Net::SSLManager::instance().certificateHandlerFactoryMgr().setFactory(name, new Poco::Net::CertificateHandlerFactoryImpl()); +#define POCO_REGISTER_CHFACTORY(API, PKCLS) \ + static Poco::Net::CertificateHandlerFactoryRegistrar aRegistrar(std::string(#PKCLS), new Poco::Net::CertificateHandlerFactoryImpl()); + + +#endif // NetSSL_CertificateHandlerFactory_INCLUDED diff --git a/NetSSL_Win/include/Poco/Net/CertificateHandlerFactoryMgr.h b/NetSSL_Win/include/Poco/Net/CertificateHandlerFactoryMgr.h new file mode 100644 index 000000000..fdbcf0191 --- /dev/null +++ b/NetSSL_Win/include/Poco/Net/CertificateHandlerFactoryMgr.h @@ -0,0 +1,66 @@ +// +// CertificateHandlerFactoryMgr.h +// +// $Id: //poco/1.4/NetSSL_Win/include/Poco/Net/CertificateHandlerFactoryMgr.h#1 $ +// +// Library: NetSSL_Win +// Package: SSLCore +// Module: CertificateHandlerFactoryMgr +// +// Definition of the CertificateHandlerFactoryMgr class. +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef NetSSL_CertificateHandlerFactoryMgr_INCLUDED +#define NetSSL_CertificateHandlerFactoryMgr_INCLUDED + + +#include "Poco/Net/NetSSL.h" +#include "Poco/Net/CertificateHandlerFactory.h" +#include "Poco/SharedPtr.h" +#include + + +namespace Poco { +namespace Net { + + +class NetSSL_Win_API CertificateHandlerFactoryMgr + /// A CertificateHandlerFactoryMgr manages all existing CertificateHandlerFactories. +{ +public: + typedef std::map > FactoriesMap; + + CertificateHandlerFactoryMgr(); + /// Creates the CertificateHandlerFactoryMgr. + + ~CertificateHandlerFactoryMgr(); + /// Destroys the CertificateHandlerFactoryMgr. + + void setFactory(const std::string& name, CertificateHandlerFactory* pFactory); + /// Registers the factory. Class takes ownership of the pointer. + /// If a factory with the same name already exists, an exception is thrown. + + bool hasFactory(const std::string& name) const; + /// Returns true if for the given name a factory is already registered + + const CertificateHandlerFactory* getFactory(const std::string& name) const; + /// Returns NULL if for the given name a factory does not exist, otherwise the factory is returned + + void removeFactory(const std::string& name); + /// Removes the factory from the manager. + +private: + FactoriesMap _factories; +}; + + +} } // namespace Poco::Net + + +#endif // NetSSL_CertificateHandlerFactoryMgr_INCLUDED diff --git a/NetSSL_Win/include/Poco/Net/ConsoleCertificateHandler.h b/NetSSL_Win/include/Poco/Net/ConsoleCertificateHandler.h new file mode 100644 index 000000000..5a5323bba --- /dev/null +++ b/NetSSL_Win/include/Poco/Net/ConsoleCertificateHandler.h @@ -0,0 +1,52 @@ +// +// ConsoleCertificateHandler.h +// +// $Id: //poco/1.4/NetSSL_Win/include/Poco/Net/ConsoleCertificateHandler.h#1 $ +// +// Library: NetSSL_Win +// Package: SSLCore +// Module: ConsoleCertificateHandler +// +// Definition of the ConsoleCertificateHandler class. +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef NetSSL_ConsoleCertificateHandler_INCLUDED +#define NetSSL_ConsoleCertificateHandler_INCLUDED + + +#include "Poco/Net/NetSSL.h" +#include "Poco/Net/InvalidCertificateHandler.h" + + +namespace Poco { +namespace Net { + + +class NetSSL_Win_API ConsoleCertificateHandler: public InvalidCertificateHandler + /// A ConsoleCertificateHandler is invoked whenever an error occurs verifying the certificate. + /// + /// The certificate is printed to stdout and the user is asked via console if he wants to accept it. +{ +public: + ConsoleCertificateHandler(bool handleErrorsOnServerSide); + /// Creates the ConsoleCertificateHandler. + + virtual ~ConsoleCertificateHandler(); + /// Destroys the ConsoleCertificateHandler. + + void onInvalidCertificate(const void* pSender, VerificationErrorArgs& errorCert); + /// Prints the certificate to stdout and waits for user input on the console + /// to decide if a certificate should be accepted/rejected. +}; + + +} } // namespace Poco::Net + + +#endif // NetSSL_ConsoleCertificateHandler_INCLUDED diff --git a/NetSSL_Win/include/Poco/Net/Context.h b/NetSSL_Win/include/Poco/Net/Context.h new file mode 100644 index 000000000..d14619f3c --- /dev/null +++ b/NetSSL_Win/include/Poco/Net/Context.h @@ -0,0 +1,278 @@ +// +// Context.h +// +// $Id$ +// +// Library: NetSSL_Win +// Package: SSLCore +// Module: Context +// +// Definition of the Context class. +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef NetSSL_Context_INCLUDED +#define NetSSL_Context_INCLUDED + + +#include "Poco/Net/NetSSL.h" +#include "Poco/Net/X509Certificate.h" +#include "Poco/RefCountedObject.h" +#include "Poco/AutoPtr.h" +#include "Poco/Mutex.h" +#include +#include +#include +#include +#ifndef SECURITY_WIN32 +#define SECURITY_WIN32 +#endif +#include +#include + + +namespace Poco { +namespace Net { + + +class NetSSL_Win_API Context: public Poco::RefCountedObject + /// This class encapsulates context information for + /// an SSL server or client, such as the certificate + /// verification mode and which certificates and + /// protocols to use. + /// + /// The Context class is also used to control + /// SSL session caching on the server and client side. +{ +public: + typedef Poco::AutoPtr Ptr; + + enum Usage + { + CLIENT_USE, /// Context is used by a client. + SERVER_USE, /// Context is used by a server. + TLSV1_CLIENT_USE, /// Context is used by a client requiring TLSv1. + TLSV1_SERVER_USE, /// Context is used by a server requiring TLSv1. + TLSV1_1_CLIENT_USE, /// Context is used by a client requiring TLSv1.1. Not supported on Windows Embedded Compact. + TLSV1_1_SERVER_USE, /// Context is used by a server requiring TLSv1.1. Not supported on Windows Embedded Compact. + TLSV1_2_CLIENT_USE, /// Context is used by a client requiring TLSv1.2. Not supported on Windows Embedded Compact. + TLSV1_2_SERVER_USE /// Context is used by a server requiring TLSv1.2. Not supported on Windows Embedded Compact. + }; + + enum VerificationMode + { + VERIFY_NONE = 0, + /// Server: The server will not send a client certificate + /// request to the client, so the client will not send a certificate. + /// + /// Client: If not using an anonymous cipher (by default disabled), + /// the server will send a certificate which will be checked, but + /// the result of the check will be ignored. + + VERIFY_RELAXED = 1, + /// Server: The server sends a client certificate request to the + /// client. The certificate returned (if any) is checked. + /// If the verification process fails, the TLS/SSL handshake is + /// immediately terminated with an alert message containing the + /// reason for the verification failure. + /// + /// Client: The server certificate is verified, if one is provided. + /// If the verification process fails, the TLS/SSL handshake is + /// immediately terminated with an alert message containing the + /// reason for the verification failure. + + VERIFY_STRICT = 2, + /// Server: If the client did not return a certificate, the TLS/SSL + /// handshake is immediately terminated with a handshake failure + /// alert. + /// + /// Client: Same as VERIFY_RELAXED. + + VERIFY_ONCE = 1 + /// Same as VERIFY_RELAXED (provided for interface compatibility with + /// the OpenSSL implementation. + }; + + enum Options + { + OPT_PERFORM_REVOCATION_CHECK = 0x01, + /// Check certificates against revocation list. Not supported (ignored) on Windows Embedded Compact. + OPT_TRUST_ROOTS_WIN_CERT_STORE = 0x02, + /// Trust root certificates from Windows root certificate store. + OPT_USE_MACHINE_STORE = 0x04, + /// If specified, the windows machine certificate store is used (server only). + /// Otherwise, the user's certificate store is used. + OPT_USE_STRONG_CRYPTO = 0x08, + /// Disable known weak cryptographic algorithms, cipher suites, and + /// SSL/TLS protocol versions that may be otherwise enabled for better interoperability. + OPT_LOAD_CERT_FROM_FILE = 0x10, + /// Load certificate and private key from a PKCS #12 (.pfx) file, + /// and not from the certificate store. + OPT_DEFAULTS = OPT_PERFORM_REVOCATION_CHECK | OPT_TRUST_ROOTS_WIN_CERT_STORE | OPT_USE_STRONG_CRYPTO + }; + + Context(Usage usage, + const std::string& certificateNameOrPath, + VerificationMode verMode = VERIFY_RELAXED, + int options = OPT_DEFAULTS, + const std::string& certificateStoreName = CERT_STORE_MY); + /// Creates a Context. + /// + /// * usage specifies whether the context is used by a client or server, + /// as well as which protocol to use. + /// * certificateNameOrPath specifies either the subject name of the certificate to use, + /// or the path of a PKCS #12 file containing the certificate and corresponding private key. + /// If a subject name is specified, the certificate must be located in the certificate + /// store specified by certificateStoreName. If a path is given, the OPT_LOAD_CERT_FROM_FILE + /// option must be set. + /// * verificationMode specifies whether and how peer certificates are validated. + /// * options is a combination of Option flags. + /// * certificateStoreName specifies the name of the Windows certificate store + /// to use for loading the certificate. Predefined constants + /// CERT_STORE_MY, CERT_STORE_ROOT, etc. can be used. + /// + /// Note: you can use OpenSSL to convert a certificate and private key in PEM format + /// into PKCS #12 format required to import into the Context: + /// + /// openssl pkcs12 -export -inkey cert.key -in cert.crt -out cert.pfx + + ~Context(); + /// Destroys the Context. + + VerificationMode verificationMode() const; + /// Returns the certificate verification mode. + + Usage usage() const; + /// Returns whether the context is for use by a client or by a server + /// and whether TLSv1.x is required. + + bool isForServerUse() const; + /// Returns true iff the context is for use by a server. + + bool sessionCacheEnabled() const; + /// Returns true iff the session cache is enabled. + + void enableExtendedCertificateVerification(bool flag = true); + /// Enable or disable the automatic post-connection + /// extended certificate verification. + /// + /// See X509Certificate::verify() for more information. + + bool extendedCertificateVerificationEnabled() const; + /// Returns true iff automatic extended certificate + /// verification is enabled. + + int options() const; + /// Returns the options flags. + + void addTrustedCert(const Poco::Net::X509Certificate& cert); + /// Adds the certificate to the trusted certs. Takes ownership of pCert. + + Poco::Net::X509Certificate certificate(); + /// Loads or imports and returns the certificate specified in the constructor. + /// + /// Throws a NoCertificateException if the certificate cannot + /// be found or no certificate name has been provided in the constructor. + /// + /// May also throw a filesystem-related exception if the certificate file + /// cannot be found. + + HCERTSTORE certificateStore() const; + /// Returns a handle to the certificate store. + + CredHandle& credentials(); + /// Returns a reference to the Schannel credentials for this Context. + + static const std::string CERT_STORE_MY; + static const std::string CERT_STORE_ROOT; + static const std::string CERT_STORE_TRUST; + static const std::string CERT_STORE_CA; + static const std::string CERT_STORE_USERDS; + +protected: + void init(); + void loadCertificate(); + void importCertificate(); + void importCertificate(const char* pBuffer, std::size_t size); + void acquireSchannelCredentials(CredHandle& credHandle) const; + DWORD proto() const; + +private: + Context(const Context&); + Context& operator = (const Context&); + + Usage _usage; + Context::VerificationMode _mode; + int _options; + bool _extendedCertificateVerification; + std::string _certNameOrPath; + std::string _certStoreName; + HCERTSTORE _hMemCertStore; + HCERTSTORE _hCollectionCertStore; + HCERTSTORE _hRootCertStore; + HCERTSTORE _hCertStore; + PCCERT_CONTEXT _pCert; + CredHandle _hCreds; + SecurityFunctionTableW& _securityFunctions; + mutable Poco::FastMutex _mutex; +}; + + +// +// inlines +// +inline Context::VerificationMode Context::verificationMode() const +{ + return _mode; +} + + +inline Context::Usage Context::usage() const +{ + return _usage; +} + + +inline int Context::options() const +{ + return _options; +} + + +inline bool Context::isForServerUse() const +{ + return _usage == SERVER_USE + || _usage == TLSV1_SERVER_USE + || _usage == TLSV1_1_SERVER_USE + || _usage == TLSV1_2_SERVER_USE; +} + + +inline bool Context::extendedCertificateVerificationEnabled() const +{ + return _extendedCertificateVerification; +} + + +inline bool Context::sessionCacheEnabled() const +{ + return true; + /// Session cache is always enabled with Schannel. +} + + +inline HCERTSTORE Context::certificateStore() const +{ + return _hCollectionCertStore; +} + + +} } // namespace Poco::Net + + +#endif // NetSSL_Context_INCLUDED diff --git a/NetSSL_Win/include/Poco/Net/HTTPSClientSession.h b/NetSSL_Win/include/Poco/Net/HTTPSClientSession.h new file mode 100644 index 000000000..99e956e69 --- /dev/null +++ b/NetSSL_Win/include/Poco/Net/HTTPSClientSession.h @@ -0,0 +1,167 @@ +// +// HTTPSClientSession.h +// +// $Id: //poco/1.4/NetSSL_Win/include/Poco/Net/HTTPSClientSession.h#2 $ +// +// Library: NetSSL_Win +// Package: HTTPSClient +// Module: HTTPSClientSession +// +// Definition of the HTTPSClientSession class. +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef NetSSL_HTTPSClientSession_INCLUDED +#define NetSSL_HTTPSClientSession_INCLUDED + + +#include "Poco/Net/NetSSL.h" +#include "Poco/Net/Utility.h" +#include "Poco/Net/HTTPClientSession.h" +#include "Poco/Net/Context.h" +#include "Poco/Net/Session.h" +#include "Poco/Net/X509Certificate.h" + + +namespace Poco { +namespace Net { + + +class SecureStreamSocket; +class HTTPRequest; +class HTTPResponse; + + +class NetSSL_Win_API HTTPSClientSession: public HTTPClientSession + /// This class implements the client-side of + /// a HTTPS session. + /// + /// To send a HTTPS request to a HTTPS server, first + /// instantiate a HTTPSClientSession object and + /// specify the server's host name and port number. + /// + /// Then create a HTTPRequest object, fill it accordingly, + /// and pass it as argument to the sendRequst() method. + /// + /// sendRequest() will return an output stream that can + /// be used to send the request body, if there is any. + /// + /// After you are done sending the request body, create + /// a HTTPResponse object and pass it to receiveResponse(). + /// + /// This will return an input stream that can be used to + /// read the response body. + /// + /// See RFC 2616 for more + /// information about the HTTP protocol. + /// + /// Note that sending requests that neither contain a content length + /// field in the header nor are using chunked transfer encoding will + /// result in a SSL protocol violation, as the framework shuts down + /// the socket after sending the message body. No orderly SSL shutdown + /// will be performed in this case. + /// + /// If session caching has been enabled for the Context object passed + /// to the HTTPSClientSession, the HTTPSClientSession class will + /// attempt to reuse a previously obtained Session object in + /// case of a reconnect. +{ +public: + enum + { + HTTPS_PORT = 443 + }; + + HTTPSClientSession(); + /// Creates an unconnected HTTPSClientSession. + + explicit HTTPSClientSession(const SecureStreamSocket& socket); + /// Creates a HTTPSClientSession using the given socket. + /// The socket must not be connected. The session + /// takes ownership of the socket. + + HTTPSClientSession(const SecureStreamSocket& socket, Session::Ptr pSession); + /// Creates a HTTPSClientSession using the given socket. + /// The socket must not be connected. The session + /// takes ownership of the socket. + /// + /// The given Session is reused, if possible (client session + /// caching is enabled for the given Context, and the server + /// agrees to reuse the session). + + HTTPSClientSession(const std::string& host, Poco::UInt16 port = HTTPS_PORT); + /// Creates a HTTPSClientSession using the given host and port. + + explicit HTTPSClientSession(Context::Ptr pContext); + /// Creates an unconnected HTTPSClientSession, using the + /// give SSL context. + + HTTPSClientSession(Context::Ptr pContext, Session::Ptr pSession); + /// Creates an unconnected HTTPSClientSession, using the + /// give SSL context. + /// + /// The given Session is reused, if possible (client session + /// caching is enabled for the given Context, and the server + /// agrees to reuse the session). + + HTTPSClientSession(const std::string& host, Poco::UInt16 port, Context::Ptr pContext); + /// Creates a HTTPSClientSession using the given host and port, + /// using the given SSL context. + + HTTPSClientSession(const std::string& host, Poco::UInt16 port, Context::Ptr pContext, Session::Ptr pSession); + /// Creates a HTTPSClientSession using the given host and port, + /// using the given SSL context. + /// + /// The given Session is reused, if possible (client session + /// caching is enabled for the given Context, and the server + /// agrees to reuse the session). + + ~HTTPSClientSession(); + /// Destroys the HTTPSClientSession and closes + /// the underlying socket. + + bool secure() const; + /// Return true iff the session uses SSL or TLS, + /// or false otherwise. + + X509Certificate serverCertificate(); + /// Returns the server's certificate. + /// + /// The certificate is available after the first request has been sent. + + Session::Ptr sslSession(); + /// Returns the SSL Session object for the current + /// connection, if session caching has been enabled for + /// the HTTPSClientSession's Context. A null pointer is + /// returned otherwise. + /// + /// The Session object can be obtained after the first request has + /// been sent. + + // HTTPSession + void abort(); + +protected: + void connect(const SocketAddress& address); + std::string proxyRequestPrefix() const; + void proxyAuthenticate(HTTPRequest& request); + int read(char* buffer, std::streamsize length); + +private: + HTTPSClientSession(const HTTPSClientSession&); + HTTPSClientSession& operator = (const HTTPSClientSession&); + + Context::Ptr _pContext; + Session::Ptr _pSession; +}; + + +} } // namespace Poco::Net + + +#endif // Net_HTTPSClientSession_INCLUDED diff --git a/NetSSL_Win/include/Poco/Net/HTTPSSessionInstantiator.h b/NetSSL_Win/include/Poco/Net/HTTPSSessionInstantiator.h new file mode 100644 index 000000000..a79fcf248 --- /dev/null +++ b/NetSSL_Win/include/Poco/Net/HTTPSSessionInstantiator.h @@ -0,0 +1,67 @@ +// +// HTTPSSessionInstantiator.h +// +// $Id: //poco/1.4/NetSSL_Win/include/Poco/Net/HTTPSSessionInstantiator.h#2 $ +// +// Library: NetSSL_Win +// Package: HTTPSClient +// Module: HTTPSSessionInstantiator +// +// Definition of the HTTPSSessionInstantiator class. +// +// Copyright (c) 2006-2009, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Net_HTTPSSessionInstantiator_INCLUDED +#define Net_HTTPSSessionInstantiator_INCLUDED + + +#include "Poco/Net/NetSSL.h" +#include "Poco/Net/Context.h" +#include "Poco/Net/Utility.h" +#include "Poco/Net/HTTPSessionInstantiator.h" +#include "Poco/URI.h" + + +namespace Poco { +namespace Net { + + +class NetSSL_Win_API HTTPSSessionInstantiator: public HTTPSessionInstantiator + /// The HTTPSessionInstantiator for HTTPSClientSession. +{ +public: + HTTPSSessionInstantiator(); + /// Creates the HTTPSSessionInstantiator. + + HTTPSSessionInstantiator(Context::Ptr pContext); + /// Creates the HTTPSSessionInstantiator using the given SSL context. + + ~HTTPSSessionInstantiator(); + /// Destroys the HTTPSSessionInstantiator. + + HTTPClientSession* createClientSession(const Poco::URI& uri); + /// Creates a HTTPSClientSession for the given URI. + + static void registerInstantiator(); + /// Registers the instantiator with the global HTTPSessionFactory. + + static void registerInstantiator(Context::Ptr pContext); + /// Registers the instantiator with the global HTTPSessionFactory using the given SSL context. + + static void unregisterInstantiator(); + /// Unregisters the factory with the global HTTPSessionFactory. + +private: + Context::Ptr _pContext; +}; + + +} } // namespace Poco::Net + + +#endif // Net_HTTPSSessionInstantiator_INCLUDED diff --git a/NetSSL_Win/include/Poco/Net/HTTPSStreamFactory.h b/NetSSL_Win/include/Poco/Net/HTTPSStreamFactory.h new file mode 100644 index 000000000..ccd56638f --- /dev/null +++ b/NetSSL_Win/include/Poco/Net/HTTPSStreamFactory.h @@ -0,0 +1,85 @@ +// +// HTTPSStreamFactory.h +// +// $Id: //poco/1.4/NetSSL_Win/include/Poco/Net/HTTPSStreamFactory.h#1 $ +// +// Library: NetSSL_Win +// Package: HTTPSClient +// Module: HTTPSStreamFactory +// +// Definition of the HTTPSStreamFactory class. +// +// Copyright (c) 2006-2009, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef NetSSL_HTTPSStreamFactory_INCLUDED +#define NetSSL_HTTPSStreamFactory_INCLUDED + + +#include "Poco/Net/NetSSL.h" +#include "Poco/Net/HTTPSession.h" +#include "Poco/URIStreamFactory.h" + + +namespace Poco { +namespace Net { + + +class NetSSL_Win_API HTTPSStreamFactory: public Poco::URIStreamFactory + /// An implementation of the URIStreamFactory interface + /// that handles secure Hyper-Text Transfer Protocol (https) URIs. +{ +public: + HTTPSStreamFactory(); + /// Creates the HTTPSStreamFactory. + + HTTPSStreamFactory(const std::string& proxyHost, Poco::UInt16 proxyPort = HTTPSession::HTTP_PORT); + /// Creates the HTTPSStreamFactory. + /// + /// HTTPS connections will use the given proxy. + + HTTPSStreamFactory(const std::string& proxyHost, Poco::UInt16 proxyPort, const std::string& proxyUsername, const std::string& proxyPassword); + /// Creates the HTTPSStreamFactory. + /// + /// HTTPS connections will use the given proxy and + /// will be authorized against the proxy using Basic authentication + /// with the given proxyUsername and proxyPassword. + + ~HTTPSStreamFactory(); + /// Destroys the HTTPSStreamFactory. + + std::istream* open(const Poco::URI& uri); + /// Creates and opens a HTTPS stream for the given URI. + /// The URI must be a https://... URI. + /// + /// Throws a NetException if anything goes wrong. + + static void registerFactory(); + /// Registers the HTTPSStreamFactory with the + /// default URIStreamOpener instance. + + static void unregisterFactory(); + /// Unregisters the HTTPSStreamFactory with the + /// default URIStreamOpener instance. + +private: + enum + { + MAX_REDIRECTS = 10 + }; + + std::string _proxyHost; + Poco::UInt16 _proxyPort; + std::string _proxyUsername; + std::string _proxyPassword; +}; + + +} } // namespace Poco::Net + + +#endif // Net_HTTPSStreamFactory_INCLUDED diff --git a/NetSSL_Win/include/Poco/Net/InvalidCertificateHandler.h b/NetSSL_Win/include/Poco/Net/InvalidCertificateHandler.h new file mode 100644 index 000000000..088998b6a --- /dev/null +++ b/NetSSL_Win/include/Poco/Net/InvalidCertificateHandler.h @@ -0,0 +1,82 @@ +// +// InvalidCertificateHandler.h +// +// $Id$ +// +// Library: NetSSL_Win +// Package: SSLCore +// Module: InvalidCertificateHandler +// +// Definition of the InvalidCertificateHandler class. +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef NetSSL_InvalidCertificateHandler_INCLUDED +#define NetSSL_InvalidCertificateHandler_INCLUDED + + +#include "Poco/Net/NetSSL.h" +#include "Poco/Net/VerificationErrorArgs.h" + + +namespace Poco { +namespace Net { + + +class NetSSL_Win_API InvalidCertificateHandler + /// A InvalidCertificateHandler is invoked whenever an error occurs verifying the certificate. It allows the user + /// to inspect and accept/reject the certificate. + /// One can install one's own InvalidCertificateHandler by implementing this interface. Note that + /// in the implementation file of the subclass the following code must be present (assuming you use the namespace My_API + /// and the name of your handler class is MyGuiHandler): + /// + /// #include "Poco/Net/CertificateHandlerFactory.h" + /// ... + /// POCO_REGISTER_CHFACTORY(My_API, MyGuiHandler) + /// + /// One can either set the handler directly in the startup code of the main method of ones application by calling + /// + /// SSLManager::instance().initialize(mypassphraseHandler, myguiHandler, mySSLContext) + /// + /// or in case one uses Poco::Util::Application one can rely on an XML configuration and put the following entry + /// under the path openSSL.invalidCertificateHandler: + /// + /// + /// MyGuiHandler + /// + /// [...] // Put optional config params for the handler here + /// + /// + /// + /// Note that the name of the InvalidCertificateHandler must be same as the one provided to the POCO_REGISTER_CHFACTORY macro. +{ +public: + InvalidCertificateHandler(bool handleErrorsOnServerSide); + /// Creates the InvalidCertificateHandler. + /// + /// Set handleErrorsOnServerSide to true if the certificate handler is used on the server side. + /// Automatically registers at one of the SSLManager::VerificationError events. + + virtual ~InvalidCertificateHandler(); + /// Destroys the InvalidCertificateHandler. + + virtual void onInvalidCertificate(const void* pSender, VerificationErrorArgs& errorCert) = 0; + /// Receives the questionable certificate in parameter errorCert. If one wants to accept the + /// certificate, call errorCert.setIgnoreError(true). + +protected: + bool _handleErrorsOnServerSide; + /// Stores if the certificate handler gets invoked by the server (i.e. a client certificate is wrong) + /// or the client (a server certificate is wrong) +}; + + +} } // namespace Poco::Net + + +#endif // NetSSL_InvalidCertificateHandler_INCLUDED diff --git a/NetSSL_Win/include/Poco/Net/KeyConsoleHandler.h b/NetSSL_Win/include/Poco/Net/KeyConsoleHandler.h new file mode 100644 index 000000000..ae9ca9164 --- /dev/null +++ b/NetSSL_Win/include/Poco/Net/KeyConsoleHandler.h @@ -0,0 +1,49 @@ +// +// KeyConsoleHandler.h +// +// $Id$ +// +// Library: NetSSL_Win +// Package: SSLCore +// Module: KeyConsoleHandler +// +// Definition of the KeyConsoleHandler class. +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef NetSSL_KeyConsoleHandler_INCLUDED +#define NetSSL_KeyConsoleHandler_INCLUDED + + +#include "Poco/Net/NetSSL.h" +#include "Poco/Net/PrivateKeyPassphraseHandler.h" + + +namespace Poco { +namespace Net { + + +class NetSSL_Win_API KeyConsoleHandler: public PrivateKeyPassphraseHandler + /// An implementation of PrivateKeyPassphraseHandler that + /// reads the key for a certificate from the console. +{ +public: + KeyConsoleHandler(bool server); + /// Creates the KeyConsoleHandler. + + ~KeyConsoleHandler(); + /// Destroys the KeyConsoleHandler. + + void onPrivateKeyRequested(const void* pSender, std::string& privateKey); +}; + + +} } // namespace Poco::Net + + +#endif // NetSSL_KeyConsoleHandler_INCLUDED diff --git a/NetSSL_Win/include/Poco/Net/KeyFileHandler.h b/NetSSL_Win/include/Poco/Net/KeyFileHandler.h new file mode 100644 index 000000000..9ac09b049 --- /dev/null +++ b/NetSSL_Win/include/Poco/Net/KeyFileHandler.h @@ -0,0 +1,53 @@ +// +// KeyFileHandler.h +// +// $Id$ +// +// Library: NetSSL_Win +// Package: SSLCore +// Module: KeyFileHandler +// +// Definition of the KeyFileHandler class. +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef NetSSL_KeyFileHandler_INCLUDED +#define NetSSL_KeyFileHandler_INCLUDED + + +#include "Poco/Net/NetSSL.h" +#include "Poco/Net/PrivateKeyPassphraseHandler.h" + + +namespace Poco { +namespace Net { + + +class NetSSL_Win_API KeyFileHandler: public PrivateKeyPassphraseHandler + /// An implementation of PrivateKeyPassphraseHandler that + /// reads the key for a certificate from a configuration file + /// under the path "openSSL.privateKeyPassphraseHandler.options.password". +{ +public: + KeyFileHandler(bool server); + /// Creates the KeyFileHandler. + + virtual ~KeyFileHandler(); + /// Destroys the KeyFileHandler. + + void onPrivateKeyRequested(const void* pSender, std::string& privateKey); + +private: + static const std::string CFG_PRIV_KEY_FILE; +}; + + +} } // namespace Poco::Net + + +#endif // NetSSL_KeyFileHandler_INCLUDED diff --git a/NetSSL_Win/include/Poco/Net/NetSSL.h b/NetSSL_Win/include/Poco/Net/NetSSL.h new file mode 100644 index 000000000..0fad93b93 --- /dev/null +++ b/NetSSL_Win/include/Poco/Net/NetSSL.h @@ -0,0 +1,85 @@ +// +// NetSSL.h +// +// $Id: //poco/1.4/NetSSL_Win/include/Poco/Net/NetSSL.h#2 $ +// +// Library: NetSSL_Win +// Package: SSLCore +// Module: SSLCore +// +// Basic definitions for the Poco NetSSL library. +// This file must be the first file included by every other NetSSL +// header file. +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef NetSSL_NetSSL_INCLUDED +#define NetSSL_NetSSL_INCLUDED + + +#include "Poco/Net/Net.h" + + +// +// The following block is the standard way of creating macros which make exporting +// from a DLL simpler. All files within this DLL are compiled with the NetSSL_Win_EXPORTS +// symbol defined on the command line. this symbol should not be defined on any project +// that uses this DLL. This way any other project whose source files include this file see +// NetSSL_Win_API functions as being imported from a DLL, wheras this DLL sees symbols +// defined with this macro as being exported. +// +#if (defined(_WIN32) || defined(__CYGWIN__)) && defined(POCO_DLL) + #if defined(NetSSL_Win_EXPORTS) + #define NetSSL_Win_API __declspec(dllexport) + #else + #define NetSSL_Win_API __declspec(dllimport) + #endif +#endif + + +#if !defined(NetSSL_Win_API) + #if !defined(POCO_NO_GCC_API_ATTRIBUTE) && defined (__GNUC__) && (__GNUC__ >= 4) + #define NetSSL_Win_API __attribute__ ((visibility ("default"))) + #else + #define NetSSL_Win_API + #endif +#endif + + +// +// Automatically link NetSSL library. +// +#if defined(_MSC_VER) + #if !defined(POCO_NO_AUTOMATIC_LIBS) && !defined(NetSSL_Win_EXPORTS) + #pragma comment(lib, "PocoNetSSLWin" POCO_LIB_SUFFIX) + #endif +#endif + + +namespace Poco { +namespace Net { + + +void NetSSL_Win_API initializeSSL(); + /// Initialize the NetSSL library, as well as the underlying Windows + /// libraries. + /// + /// Can be called multiple times; however, for every call to + /// initializeSSL(), a matching call to uninitializeSSL() + /// must be performed. + + +void NetSSL_Win_API uninitializeSSL(); + /// Uninitializes the NetSSL library and + /// shutting down the SSLManager. + + +} } // namespace Poco::Net + + +#endif // NetSSL_NetSSL_INCLUDED diff --git a/NetSSL_Win/include/Poco/Net/PrivateKeyFactory.h b/NetSSL_Win/include/Poco/Net/PrivateKeyFactory.h new file mode 100644 index 000000000..c0ef9b8d8 --- /dev/null +++ b/NetSSL_Win/include/Poco/Net/PrivateKeyFactory.h @@ -0,0 +1,97 @@ +// +// PrivateKeyFactory.h +// +// $Id$ +// +// Library: NetSSL_Win +// Package: SSLCore +// Module: PrivateKeyFactory +// +// Definition of the PrivateKeyFactory class. +// +// Copyright (c) 2006-214, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef NetSSL_PrivateKeyFactory_INCLUDED +#define NetSSL_PrivateKeyFactory_INCLUDED + + +#include "Poco/Net/NetSSL.h" + + +namespace Poco { +namespace Net { + + +class PrivateKeyPassphraseHandler; + + +class NetSSL_Win_API PrivateKeyFactory + /// A PrivateKeyFactory is responsible for creating PrivateKeyPassphraseHandlers. + /// + /// You don't need to access this class directly. Use the macro + /// POCO_REGISTER_KEYFACTORY(namespace, PrivateKeyPassphraseHandlerName) + /// instead (see the documentation of PrivateKeyPassphraseHandler for an example). +{ +public: + PrivateKeyFactory(); + /// Creates the PrivateKeyFactory. + + virtual ~PrivateKeyFactory(); + /// Destroys the PrivateKeyFactory. + + virtual PrivateKeyPassphraseHandler* create(bool onServer) const = 0; + /// Creates a new PrivateKeyPassphraseHandler +}; + + +class NetSSL_Win_API PrivateKeyFactoryRegistrar + /// Registrar class which automatically registers PrivateKeyFactories at the PrivateKeyFactoryMgr. + /// + /// You don't need to access this class directly. Use the macro + /// POCO_REGISTER_KEYFACTORY(namespace, PrivateKeyPassphraseHandlerName) + /// instead (see the documentation of PrivateKeyPassphraseHandler for an example). + +{ +public: + PrivateKeyFactoryRegistrar(const std::string& name, PrivateKeyFactory* pFactory); + /// Registers the PrivateKeyFactory with the given name at the factory manager. + + virtual ~PrivateKeyFactoryRegistrar(); + /// Destroys the PrivateKeyFactoryRegistrar. +}; + + +template +class PrivateKeyFactoryImpl: public Poco::Net::PrivateKeyFactory +{ +public: + PrivateKeyFactoryImpl() + { + } + + ~PrivateKeyFactoryImpl() + { + } + + PrivateKeyPassphraseHandler* create(bool server) const + { + return new T(server); + } +}; + + +} } // namespace Poco::Net + + +// DEPRECATED: register the factory directly at the FactoryMgr: +// Poco::Net::SSLManager::instance().privateKeyFactoryMgr().setFactory(name, new Poco::Net::PrivateKeyFactoryImpl()); +#define POCO_REGISTER_KEYFACTORY(API, PKCLS) \ + static Poco::Net::PrivateKeyFactoryRegistrar aRegistrar(std::string(#PKCLS), new Poco::Net::PrivateKeyFactoryImpl()); + + +#endif // NetSSL_PrivateKeyFactory_INCLUDED diff --git a/NetSSL_Win/include/Poco/Net/PrivateKeyFactoryMgr.h b/NetSSL_Win/include/Poco/Net/PrivateKeyFactoryMgr.h new file mode 100644 index 000000000..21a9d846f --- /dev/null +++ b/NetSSL_Win/include/Poco/Net/PrivateKeyFactoryMgr.h @@ -0,0 +1,66 @@ +// +// PrivateKeyFactoryMgr.h +// +// $Id$ +// +// Library: NetSSL_Win +// Package: SSLCore +// Module: PrivateKeyFactoryMgr +// +// Definition of the PrivateKeyFactoryMgr class. +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef NetSSL_PrivateKeyFactoryMgr_INCLUDED +#define NetSSL_PrivateKeyFactoryMgr_INCLUDED + + +#include "Poco/Net/NetSSL.h" +#include "Poco/Net/PrivateKeyFactory.h" +#include "Poco/SharedPtr.h" +#include + + +namespace Poco { +namespace Net { + + +class NetSSL_Win_API PrivateKeyFactoryMgr + /// A PrivateKeyFactoryMgr manages all existing PrivateKeyFactories. +{ +public: + typedef std::map > FactoriesMap; + + PrivateKeyFactoryMgr(); + /// Creates the PrivateKeyFactoryMgr. + + ~PrivateKeyFactoryMgr(); + /// Destroys the PrivateKeyFactoryMgr. + + void setFactory(const std::string& name, PrivateKeyFactory* pFactory); + /// Registers the factory. Class takes ownership of the pointer. + /// If a factory with the same name already exists, an exception is thrown. + + bool hasFactory(const std::string& name) const; + /// Returns true if for the given name a factory is already registered + + const PrivateKeyFactory* getFactory(const std::string& name) const; + /// Returns NULL if for the given name a factory does not exist, otherwise the factory is returned + + void removeFactory(const std::string& name); + /// Removes the factory from the manager. + +private: + FactoriesMap _factories; +}; + + +} } // namespace Poco::Net + + +#endif // NetSSL_PrivateKeyFactoryMgr_INCLUDED diff --git a/NetSSL_Win/include/Poco/Net/PrivateKeyPassphraseHandler.h b/NetSSL_Win/include/Poco/Net/PrivateKeyPassphraseHandler.h new file mode 100644 index 000000000..288c1bf78 --- /dev/null +++ b/NetSSL_Win/include/Poco/Net/PrivateKeyPassphraseHandler.h @@ -0,0 +1,86 @@ +// +// PrivateKeyPassphraseHandler.h +// +// $Id$ +// +// Library: NetSSL_Win +// Package: SSLCore +// Module: PrivateKeyPassphraseHandler +// +// Definition of the PrivateKeyPassphraseHandler class. +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef NetSSL_PrivateKeyPassphraseHandler_INCLUDED +#define NetSSL_PrivateKeyPassphraseHandler_INCLUDED + + +#include "Poco/Net/NetSSL.h" + + +namespace Poco { +namespace Net { + + +class NetSSL_Win_API PrivateKeyPassphraseHandler + /// A passphrase handler is needed whenever the private key of a certificate is loaded and the certificate is protected + /// by a passphrase. The PrivateKeyPassphraseHandler's task is to provide that passphrase. + /// One can install one's own PrivateKeyPassphraseHandler by implementing this interface. Note that + /// in the implementation file of the subclass the following code must be present (assuming you use the namespace My_API + /// and the name of your handler class is MyGuiHandler): + /// + /// #include "Poco/Net/PrivateKeyFactory.h" + /// ... + /// POCO_REGISTER_KEYFACTORY(My_API, MyGuiHandler) + /// + /// One can either set the handler directly in the startup code of the main method of ones application by calling + /// + /// SSLManager::instance().initialize(myguiHandler, myInvalidCertificateHandler, mySSLContext) + /// + /// or in case one's application extends Poco::Util::Application one can use an XML configuration and put the following entry + /// under the path openSSL.privateKeyPassphraseHandler: + /// + /// + /// MyGuiHandler + /// + /// [...] // Put optional config params for the handler here + /// + /// + /// + /// Note that the name of the passphrase handler must be same as the one provided to the POCO_REGISTER_KEYFACTORY macro. +{ +public: + PrivateKeyPassphraseHandler(bool onServerSide); + /// Creates the PrivateKeyPassphraseHandler. Automatically registers at the SSLManager::PrivateKeyPassword event. + + virtual ~PrivateKeyPassphraseHandler(); + /// Destroys the PrivateKeyPassphraseHandler. + + virtual void onPrivateKeyRequested(const void* pSender, std::string& privateKey) = 0; + /// Returns the requested private key in the parameter privateKey. + + bool serverSide() const; + +private: + bool _serverSide; +}; + + +// +// inlines +// +inline bool PrivateKeyPassphraseHandler::serverSide() const +{ + return _serverSide; +} + + +} } // namespace Poco::Net + + +#endif // NetSSL_PrivateKeyPassphraseHandler_INCLUDED diff --git a/NetSSL_Win/include/Poco/Net/RejectCertificateHandler.h b/NetSSL_Win/include/Poco/Net/RejectCertificateHandler.h new file mode 100644 index 000000000..ba15b8e96 --- /dev/null +++ b/NetSSL_Win/include/Poco/Net/RejectCertificateHandler.h @@ -0,0 +1,50 @@ +// +// RejectCertificateHandler.h +// +// $Id: //poco/1.4/NetSSL_Win/include/Poco/Net/RejectCertificateHandler.h#1 $ +// +// Library: NetSSL_Win +// Package: SSLCore +// Module: RejectCertificateHandler +// +// Definition of the RejectCertificateHandler class. +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef NetSSL_RejectCertificateHandler_INCLUDED +#define NetSSL_RejectCertificateHandler_INCLUDED + + +#include "Poco/Net/NetSSL.h" +#include "Poco/Net/InvalidCertificateHandler.h" + + +namespace Poco { +namespace Net { + + +class NetSSL_Win_API RejectCertificateHandler: public InvalidCertificateHandler + /// A RejectCertificateHandler is invoked whenever an error + /// occurs verifying the certificate. It always rejects + /// the certificate. +{ +public: + RejectCertificateHandler(bool handleErrorsOnServerSide); + /// Creates the RejectCertificateHandler + + virtual ~RejectCertificateHandler(); + /// Destroys the RejectCertificateHandler. + + void onInvalidCertificate(const void* pSender, VerificationErrorArgs& errorCert); +}; + + +} } // namespace Poco::Net + + +#endif // NetSSL_RejectCertificateHandler_INCLUDED diff --git a/NetSSL_Win/include/Poco/Net/SSLException.h b/NetSSL_Win/include/Poco/Net/SSLException.h new file mode 100644 index 000000000..c26924cfa --- /dev/null +++ b/NetSSL_Win/include/Poco/Net/SSLException.h @@ -0,0 +1,43 @@ +// +// SSLException.h +// +// $Id$ +// +// Library: NetSSL_Win +// Package: SSLCore +// Module: SSLException +// +// Definition of the SSLException class. +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef NetSSL_SSLException_INCLUDED +#define NetSSL_SSLException_INCLUDED + + +#include "Poco/Net/NetSSL.h" +#include "Poco/Net/NetException.h" + + +namespace Poco { +namespace Net { + + +POCO_DECLARE_EXCEPTION(NetSSL_Win_API, SSLException, NetException) +POCO_DECLARE_EXCEPTION(NetSSL_Win_API, SSLContextException, SSLException) +POCO_DECLARE_EXCEPTION(NetSSL_Win_API, CertificateException, SSLException) +POCO_DECLARE_EXCEPTION(NetSSL_Win_API, NoCertificateException, CertificateException) +POCO_DECLARE_EXCEPTION(NetSSL_Win_API, InvalidCertificateException, CertificateException) +POCO_DECLARE_EXCEPTION(NetSSL_Win_API, CertificateValidationException, CertificateException) +POCO_DECLARE_EXCEPTION(NetSSL_Win_API, SSLConnectionUnexpectedlyClosedException, SSLException) + + +} } // namespace Poco::Net + + +#endif // NetSSL_SSLException_INCLUDED diff --git a/NetSSL_Win/include/Poco/Net/SSLManager.h b/NetSSL_Win/include/Poco/Net/SSLManager.h new file mode 100644 index 000000000..608b99e47 --- /dev/null +++ b/NetSSL_Win/include/Poco/Net/SSLManager.h @@ -0,0 +1,326 @@ +// +// SSLManager.h +// +// $Id$ +// +// Library: NetSSL_Win +// Package: SSLCore +// Module: SSLManager +// +// Definition of the SSLManager class. +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef NetSSL_SSLManager_INCLUDED +#define NetSSL_SSLManager_INCLUDED + + +#include "Poco/Net/NetSSL.h" +#include "Poco/Net/VerificationErrorArgs.h" +#include "Poco/Net/Context.h" +#include "Poco/Net/PrivateKeyFactoryMgr.h" +#include "Poco/Net/CertificateHandlerFactoryMgr.h" +#include "Poco/Net/InvalidCertificateHandler.h" +#include "Poco/Util/AbstractConfiguration.h" +#include "Poco/BasicEvent.h" +#include "Poco/SharedPtr.h" +#include +#include +#ifndef SECURITY_WIN32 +#define SECURITY_WIN32 +#endif +#include +#include + + +namespace Poco { +namespace Net { + + +class Context; + + +class NetSSL_Win_API SSLManager + /// SSLManager is a singleton for holding the default server/client + /// Context and handling callbacks for certificate verification errors + /// and private key passphrases. + /// + /// Proper initialization of SSLManager is critical. + /// + /// SSLManager can be initialized manually, by calling initializeServer() + /// and/or initializeClient(), or intialization can be automatic. In the latter + /// case, a Poco::Util::Application instance must be available and the required + /// configuration properties must be set (see below). + /// + /// Note that manual initialization must happen very early in the application, + /// before defaultClientContext() or defaultServerContext() are called. + /// + /// If defaultClientContext() and defaultServerContext() are never called + /// in an application, initialization of SSLManager can be omitted. + /// However, in this case, delegates for the ServerVerificationError, + /// ClientVerificationError and PrivateKeyPassphraseRequired events + /// must be registered. + /// + /// An exemplary documentation which sets either the server or client default context and creates + /// a PrivateKeyPassphraseHandler that reads the password from the XML file looks like this: + /// + /// + /// + /// + /// cert Id + /// MY + /// none|relaxed|strict + /// true|false + /// true|false + /// true|false + /// true|false + /// + /// KeyFileHandler + /// + /// s3cr3t + /// + /// + /// + /// ConsoleCertificateHandler + /// + /// + /// + /// true|false + /// true|false + /// true|false + /// + /// + /// + /// + /// Following is a list of supported configuration properties. Property names must always + /// be prefixed with openSSL.server or openSSL.client. Some properties are only supported + /// for servers. + /// + /// - certificateName (string): The subject name of the certificate to use. The certificate must + /// be available in the Windows user or machine certificate store. + /// - certificatePath (string): The path of a certificate and private key file in PKCS #12 format. + /// - certificateStore (string): The certificate store location to use. + /// Valid values are "MY", "Root", "Trust" or "CA". Defaults to "MY". + /// - verificationMode (string): Specifies whether and how peer certificates are validated (see + /// the Context class for details). Valid values are "none", "relaxed", "strict". Defaults to "relaxed". + /// - revocationCheck (boolean): Enable or disable checking of certificates against revocation list. + /// Defaults to true. Not supported (ignored) on Windows Embedded Compact. + /// - trustRoots (boolean): Trust root certificates from Windows root certificate store. Defaults to true. + /// - useMachineStore (boolean): Use Windows machine certificate store instead of user store (server only). + /// Special user privileges may be required. Defaults to false. + /// - useStrongCrypto (boolean): Disable known weak cryptographic algorithms, cipher suites, and + /// SSL/TLS protocol versions that may be otherwise enabled for better interoperability. + /// Defaults to true. + /// - privateKeyPassphraseHandler.name (string): The name of the class (subclass of PrivateKeyPassphraseHandler) + /// used for obtaining the passphrase for accessing the private key. + /// - privateKeyPassphraseHandler.options.password (string): The password to be used by KeyFileHandler. + /// - invalidCertificateHandler.name: The name of the class (subclass of CertificateHandler) + /// used for confirming invalid certificates. + /// - requireTLSv1 (boolean): Require a TLSv1 connection. + /// - requireTLSv1_1 (boolean): Require a TLSv1.1 connection. Not supported on Windows Embedded Compact. + /// - requireTLSv1_2 (boolean): Require a TLSv1.2 connection. Not supported on Windows Embedded Compact. +{ +public: + typedef Poco::SharedPtr PrivateKeyPassphraseHandlerPtr; + typedef Poco::SharedPtr InvalidCertificateHandlerPtr; + + Poco::BasicEvent ServerVerificationError; + /// Fired whenever a certificate verification error is detected by the server during a handshake. + + Poco::BasicEvent ClientVerificationError; + /// Fired whenever a certificate verification error is detected by the client during a handshake. + + Poco::BasicEvent PrivateKeyPassphraseRequired; + /// Fired when a encrypted certificate is loaded. Not setting the password + /// in the event parameter will result in a failure to load the certificate. + + static SSLManager& instance(); + /// Returns the instance of the SSLManager singleton. + + void initializeServer(PrivateKeyPassphraseHandlerPtr ptrPassphraseHandler, InvalidCertificateHandlerPtr pCertificateHandler, Context::Ptr pContext); + /// Initializes the server side of the SSLManager with a default invalid certificate handler and a default context. If this method + /// is never called the SSLmanager will try to initialize its members from an application configuration. + /// + /// pCertificateHandler can be 0. However, in this case, event delegates + /// must be registered with the ServerVerificationError event. + /// + /// Note: Always create the handlers (or register the corresponding event delegates) before creating + /// the Context. + /// + /// Valid initialization code would be: + /// SharedPtr pInvalidCertHandler = new ConsoleCertificateHandler; + /// Context::Ptr pContext = new Context(Context::SERVER_USE, "mycert"); + /// SSLManager::instance().initializeServer(pInvalidCertHandler, pContext); + + void initializeClient(PrivateKeyPassphraseHandlerPtr ptrPassphraseHandler, InvalidCertificateHandlerPtr pCertificateHandler, Context::Ptr ptrContext); + /// Initializes the client side of the SSLManager with a default invalid certificate handler and a default context. If this method + /// is never called the SSLmanager will try to initialize its members from an application configuration. + /// + /// pCertificateHandler can be 0. However, in this case, event delegates + /// must be registered with the ClientVerificationError event. + /// + /// Note: Always create the handlers (or register the corresponding event delegates) before creating + /// the Context, as during creation of the Context the passphrase for the private key might be needed. + /// + /// Valid initialization code would be: + /// SharedPtr pInvalidCertHandler = new ConsoleCertificateHandler; + /// Context::Ptr pContext = new Context(Context::CLIENT_USE, ""); + /// SSLManager::instance().initializeClient(pInvalidCertHandler, pContext); + + Context::Ptr defaultServerContext(); + /// Returns the default Context used by the server. + /// + /// Unless initializeServer() has been called, the first call to this method initializes the default Context + /// from the application configuration. + + Context::Ptr defaultClientContext(); + /// Returns the default Context used by the client. + /// + /// Unless initializeClient() has been called, the first call to this method initializes the default Context + /// from the application configuration. + + PrivateKeyPassphraseHandlerPtr serverPassphraseHandler(); + /// Returns the configured passphrase handler of the server. If none is set, the method will create a default one + /// from an application configuration. + + InvalidCertificateHandlerPtr serverCertificateHandler(); + /// Returns an initialized certificate handler (used by the server to verify client cert) which determines how invalid certificates are treated. + /// If none is set, it will try to auto-initialize one from an application configuration. + + PrivateKeyPassphraseHandlerPtr clientPassphraseHandler(); + /// Returns the configured passphrase handler of the client. If none is set, the method will create a default one + /// from an application configuration. + + InvalidCertificateHandlerPtr clientCertificateHandler(); + /// Returns an initialized certificate handler (used by the client to verify server cert) which determines how invalid certificates are treated. + /// If none is set, it will try to auto-initialize one from an application configuration. + + PrivateKeyFactoryMgr& privateKeyFactoryMgr(); + /// Returns the private key factory manager which stores the + /// factories for the different registered passphrase handlers for private keys. + + CertificateHandlerFactoryMgr& certificateHandlerFactoryMgr(); + /// Returns the CertificateHandlerFactoryMgr which stores the + /// factories for the different registered certificate handlers. + + void shutdown(); + /// Shuts down the SSLManager and releases the default Context + /// objects. After a call to shutdown(), the SSLManager can no + /// longer be used. + /// + /// Normally, it's not necessary to call this method directly, as this + /// will be called either by uninitializeSSL(), or when + /// the SSLManager instance is destroyed. + + static const std::string CFG_SERVER_PREFIX; + static const std::string CFG_CLIENT_PREFIX; + +protected: + SecurityFunctionTableW& securityFunctions(); + +private: + SSLManager(); + /// Creates the SSLManager. + + ~SSLManager(); + /// Destroys the SSLManager. + + void initDefaultContext(bool server); + /// Inits the default context, the first time it is accessed. + + void initEvents(bool server); + /// Registers delegates at the events according to the configuration. + + void initPassphraseHandler(bool server); + /// Inits the passphrase handler. + + void initCertificateHandler(bool server); + /// Inits the certificate handler. + + void loadSecurityLibrary(); + /// Loads the Windows security DLL. + + void unloadSecurityLibrary(); + /// Unloads the Windows security DLL. + + static Poco::Util::AbstractConfiguration& appConfig(); + /// Returns the application configuration. + /// + /// Throws a InvalidStateException if not application instance + /// is available. + + HMODULE _hSecurityModule; + SecurityFunctionTableW _securityFunctions; + + PrivateKeyFactoryMgr _factoryMgr; + CertificateHandlerFactoryMgr _certHandlerFactoryMgr; + Context::Ptr _ptrDefaultServerContext; + PrivateKeyPassphraseHandlerPtr _ptrServerPassphraseHandler; + InvalidCertificateHandlerPtr _ptrServerCertificateHandler; + Context::Ptr _ptrDefaultClientContext; + PrivateKeyPassphraseHandlerPtr _ptrClientPassphraseHandler; + InvalidCertificateHandlerPtr _ptrClientCertificateHandler; + Poco::FastMutex _mutex; + + static const std::string CFG_CERT_NAME; + static const std::string VAL_CERT_NAME; + static const std::string CFG_CERT_PATH; + static const std::string VAL_CERT_PATH; + static const std::string CFG_CERT_STORE; + static const std::string VAL_CERT_STORE; + static const std::string CFG_VER_MODE; + static const Context::VerificationMode VAL_VER_MODE; + static const std::string CFG_REVOCATION_CHECK; + static const bool VAL_REVOCATION_CHECK; + static const std::string CFG_TRUST_ROOTS; + static const bool VAL_TRUST_ROOTS; + static const std::string CFG_USE_MACHINE_STORE; + static const bool VAL_USE_MACHINE_STORE; + static const std::string CFG_USE_STRONG_CRYPTO; + static const bool VAL_USE_STRONG_CRYPTO; + + static const std::string CFG_DELEGATE_HANDLER; + static const std::string VAL_DELEGATE_HANDLER; + static const std::string CFG_CERTIFICATE_HANDLER; + static const std::string VAL_CERTIFICATE_HANDLER; + + static const std::string CFG_REQUIRE_TLSV1; + static const std::string CFG_REQUIRE_TLSV1_1; + static const std::string CFG_REQUIRE_TLSV1_2; + + friend class Poco::SingletonHolder; + friend class SecureSocketImpl; + friend class Context; +}; + + +// +// inlines +// +inline PrivateKeyFactoryMgr& SSLManager::privateKeyFactoryMgr() +{ + return _factoryMgr; +} + + +inline CertificateHandlerFactoryMgr& SSLManager::certificateHandlerFactoryMgr() +{ + return _certHandlerFactoryMgr; +} + + +inline SecurityFunctionTableW& SSLManager::securityFunctions() +{ + return _securityFunctions; +} + + +} } // namespace Poco::Net + + +#endif // NetSSL_SSLManager_INCLUDED diff --git a/NetSSL_Win/include/Poco/Net/SecureSMTPClientSession.h b/NetSSL_Win/include/Poco/Net/SecureSMTPClientSession.h new file mode 100644 index 000000000..675eb4dee --- /dev/null +++ b/NetSSL_Win/include/Poco/Net/SecureSMTPClientSession.h @@ -0,0 +1,98 @@ +// +// SecureSMTPClientSession.h +// +// $Id: //poco/1.4/NetSSL_Win/include/Poco/Net/SecureSMTPClientSession.h#1 $ +// +// Library: NetSSL_Win +// Package: Mail +// Module: SecureSMTPClientSession +// +// Definition of the SecureSMTPClientSession class. +// +// Copyright (c) 2010, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Net_SecureSMTPClientSession_INCLUDED +#define Net_SecureSMTPClientSession_INCLUDED + + +#include "Poco/Net/NetSSL.h" +#include "Poco/Net/SMTPClientSession.h" +#include "Poco/Net/Context.h" + + +namespace Poco { +namespace Net { + + +class NetSSL_Win_API SecureSMTPClientSession: public SMTPClientSession + /// This class implements an Simple Mail + /// Transfer Procotol (SMTP, RFC 2821) + /// client for sending e-mail messages that + /// supports the STARTTLS command for secure + /// connections. + /// + /// Usage is as follows: + /// 1. Create a SecureSMTPClientSession object. + /// 2. Call login() or login(hostname). + /// 3. Call startTLS() to switch to a secure connection. + /// Check the return value to see if a secure connection + /// has actually been established (not all servers may + /// support STARTTLS). + /// 4. Call any of the login() methods to securely authenticate + /// with a username and password. + /// 5. Send the message(s). +{ +public: + explicit SecureSMTPClientSession(const StreamSocket& socket); + /// Creates the SecureSMTPClientSession using + /// the given socket, which must be connected + /// to a SMTP server. + + SecureSMTPClientSession(const std::string& host, Poco::UInt16 port = SMTP_PORT); + /// Creates the SecureSMTPClientSession using a socket connected + /// to the given host and port. + + virtual ~SecureSMTPClientSession(); + /// Destroys the SMTPClientSession. + + bool startTLS(); + /// Sends a STARTTLS command and, if successful, + /// creates a secure SSL/TLS connection over the + /// existing socket connection. + /// + /// Must be called after login() or login(hostname). + /// If successful, login() can be called again + /// to authenticate the user. + /// + /// Returns true if the STARTTLS command was successful, + /// false otherwise. + + bool startTLS(Context::Ptr pContext); + /// Sends a STARTTLS command and, if successful, + /// creates a secure SSL/TLS connection over the + /// existing socket connection. + /// + /// Uses the given Context object for creating + /// the SSL/TLS connection. + /// + /// Must be called after login() or login(hostname). + /// If successful, login() can be called again + /// to authenticate the user. + /// + /// Returns true if the STARTTLS command was successful, + /// false otherwise. + +private: + std::string _host; +}; + + +} } // namespace Poco::Net + + +#endif // Net_SecureSMTPClientSession_INCLUDED diff --git a/NetSSL_Win/include/Poco/Net/SecureServerSocket.h b/NetSSL_Win/include/Poco/Net/SecureServerSocket.h new file mode 100644 index 000000000..18711c847 --- /dev/null +++ b/NetSSL_Win/include/Poco/Net/SecureServerSocket.h @@ -0,0 +1,138 @@ +// +// SecureServerSocket.h +// +// $Id: //poco/1.4/NetSSL_Win/include/Poco/Net/SecureServerSocket.h#1 $ +// +// Library: NetSSL_Win +// Package: SSLSockets +// Module: SecureServerSocket +// +// Definition of the SecureServerSocket class. +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef NetSSL_SecureServerSocket_INCLUDED +#define NetSSL_SecureServerSocket_INCLUDED + + +#include "Poco/Net/NetSSL.h" +#include "Poco/Net/ServerSocket.h" +#include "Poco/Net/Context.h" + + +namespace Poco { +namespace Net { + + +class NetSSL_Win_API SecureServerSocket: public ServerSocket + /// A server socket for secure SSL connections. +{ +public: + SecureServerSocket(); + /// Creates a SSL server socket using the + /// default SSL server context. + /// + /// The server socket must be bound to + /// an address and put into listening state. + + explicit SecureServerSocket(Context::Ptr pContext); + /// Creates a SSL server socket, using the + /// given SSL context object. + /// + /// The server socket must be bound to + /// an address and put into listening state. + + SecureServerSocket(const Socket& socket); + /// Creates the SecureServerSocket with the SocketImpl + /// from another socket. The SocketImpl must be + /// a SecureServerSocketImpl, otherwise an InvalidArgumentException + /// will be thrown. + + SecureServerSocket(const SocketAddress& address, int backlog = 64); + /// Creates a server socket using the default server SSL context, + /// binds it to the given address and puts it in listening + /// state. + /// + /// After successful construction, the server socket + /// is ready to accept connections. + + SecureServerSocket(const SocketAddress& address, int backlog, Context::Ptr pContext); + /// Creates a server socket using the given SSL context, binds it + /// to the given address and puts it in listening + /// state. + /// + /// After successful construction, the server socket + /// is ready to accept connections. + + SecureServerSocket(Poco::UInt16 port, int backlog = 64); + /// Creates a server socket using the default server SSL context, + /// binds it to the given port and puts it in listening + /// state. + /// + /// After successful construction, the server socket + /// is ready to accept connections. + + SecureServerSocket(Poco::UInt16 port, int backlog, Context::Ptr pContext); + /// Creates a server socket using the given SSL context, binds it + /// to the given port and puts it in listening + /// state. + /// + /// After successful construction, the server socket + /// is ready to accept connections. + + virtual ~SecureServerSocket(); + /// Destroys the StreamSocket. + + SecureServerSocket& operator = (const Socket& socket); + /// Assignment operator. + /// + /// Releases the socket's SocketImpl and + /// attaches the SocketImpl from the other socket and + /// increments the reference count of the SocketImpl. + + StreamSocket acceptConnection(SocketAddress& clientAddr); + /// Get the next completed connection from the + /// socket's completed connection queue. + /// + /// If the queue is empty, waits until a connection + /// request completes. + /// + /// Returns a new SSL socket for the connection + /// with the client. + /// + /// The client socket's address is returned in clientAddr. + /// + /// No SSL handshake is performed on the new connection. + /// The SSL handshake will be performed the first time + /// sendBytes(), receiveBytes() or completeHandshake() + /// is called on the returned SecureStreamSocket. + + StreamSocket acceptConnection(); + /// Get the next completed connection from the + /// socket's completed connection queue. + /// + /// If the queue is empty, waits until a connection + /// request completes. + /// + /// Returns a new SSL socket for the connection + /// with the client. + /// + /// No SSL handshake is performed on the new connection. + /// The SSL handshake will be performed the first time + /// sendBytes(), receiveBytes() or completeHandshake() + /// is called on the returned SecureStreamSocket. + + Context::Ptr context() const; + /// Returns the SSL context used by this socket. +}; + + +} } // namespace Poco::Net + + +#endif // NetSSL_SecureServerSocket_INCLUDED diff --git a/NetSSL_Win/include/Poco/Net/SecureServerSocketImpl.h b/NetSSL_Win/include/Poco/Net/SecureServerSocketImpl.h new file mode 100644 index 000000000..ba843924d --- /dev/null +++ b/NetSSL_Win/include/Poco/Net/SecureServerSocketImpl.h @@ -0,0 +1,148 @@ +// +// SecureServerSocketImpl.h +// +// $Id: //poco/1.4/NetSSL_Win/include/Poco/Net/SecureServerSocketImpl.h#1 $ +// +// Library: NetSSL_Win +// Package: SSLSockets +// Module: SecureServerSocketImpl +// +// Definition of the SecureServerSocketImpl class. +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef NetSSL_SecureServerSocketImpl_INCLUDED +#define NetSSL_SecureServerSocketImpl_INCLUDED + + +#include "Poco/Net/NetSSL.h" +#include "Poco/Net/SecureSocketImpl.h" +#include "Poco/Net/ServerSocketImpl.h" +#include "Poco/Net/Context.h" + + +namespace Poco { +namespace Net { + + +class NetSSL_Win_API SecureServerSocketImpl: public ServerSocketImpl + /// The SocketImpl class for SecureServerSocket. +{ +public: + SecureServerSocketImpl(Context::Ptr pContext); + /// Creates the SecureServerSocketImpl using the + /// given SSL context object. + + SocketImpl* acceptConnection(SocketAddress& clientAddr); + /// Get the next completed connection from the + /// socket's completed connection queue. + /// + /// If the queue is empty, waits until a connection + /// request completes. + /// + /// Returns a new TCP socket for the connection + /// with the client. + /// + /// The client socket's address is returned in clientAddr. + + void connect(const SocketAddress& address); + /// Not supported by this kind of socket. + /// + /// Throws a Poco::InvalidAccessException. + + void connect(const SocketAddress& address, const Poco::Timespan& timeout); + /// Not supported by this kind of socket. + /// + /// Throws a Poco::InvalidAccessException. + + void connectNB(const SocketAddress& address); + /// Not supported by this kind of socket. + /// + /// Throws a Poco::InvalidAccessException. + + void bind(const SocketAddress& address, bool reuseAddress = false); + /// Bind a local address to the socket. + /// + /// This is usually only done when establishing a server + /// socket. TCP clients should not bind a socket to a + /// specific address. + /// + /// If reuseAddress is true, sets the SO_REUSEADDR + /// socket option. + + void listen(int backlog = 64); + /// Puts the socket into listening state. + /// + /// The socket becomes a passive socket that + /// can accept incoming connection requests. + /// + /// The backlog argument specifies the maximum + /// number of connections that can be queued + /// for this socket. + + void close(); + /// Close the socket. + + int sendBytes(const void* buffer, int length, int flags = 0); + /// Not supported by this kind of socket. + /// + /// Throws a Poco::InvalidAccessException. + + int receiveBytes(void* buffer, int length, int flags = 0); + /// Not supported by this kind of socket. + /// + /// Throws a Poco::InvalidAccessException. + + int sendTo(const void* buffer, int length, const SocketAddress& address, int flags = 0); + /// Not supported by this kind of socket. + /// + /// Throws a Poco::InvalidAccessException. + + int receiveFrom(void* buffer, int length, SocketAddress& address, int flags = 0); + /// Not supported by this kind of socket. + /// + /// Throws a Poco::InvalidAccessException. + + void sendUrgent(unsigned char data); + /// Not supported by this kind of socket. + /// + /// Throws a Poco::InvalidAccessException. + + bool secure() const; + /// Returns true iff the socket's connection is secure + /// (using SSL or TLS). + + Context::Ptr context() const; + /// Returns the SSL context used by this socket. + +protected: + ~SecureServerSocketImpl(); + /// Destroys the SecureServerSocketImpl. + +private: + SecureServerSocketImpl(const SecureServerSocketImpl&); + SecureServerSocketImpl& operator = (const SecureServerSocketImpl&); + +private: + SecureSocketImpl _impl; +}; + + +// +// inlines +// +inline Context::Ptr SecureServerSocketImpl::context() const +{ + return _impl.context(); +} + + +} } // namespace Poco::Net + + +#endif // NetSSL_SecureServerSocketImpl_INCLUDED diff --git a/NetSSL_Win/include/Poco/Net/SecureSocketImpl.h b/NetSSL_Win/include/Poco/Net/SecureSocketImpl.h new file mode 100644 index 000000000..cc280cba7 --- /dev/null +++ b/NetSSL_Win/include/Poco/Net/SecureSocketImpl.h @@ -0,0 +1,316 @@ +// +// SecureSocketImpl.h +// +// $Id$ +// +// Library: NetSSL_Win +// Package: SSLSockets +// Module: SecureSocketImpl +// +// Definition of the SecureSocketImpl class. +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef NetSSL_SecureSocketImpl_INCLUDED +#define NetSSL_SecureSocketImpl_INCLUDED + + +#include "Poco/Net/SocketImpl.h" +#include "Poco/Net/NetSSL.h" +#include "Poco/Net/Context.h" +#include "Poco/Net/AutoSecBufferDesc.h" +#include "Poco/Net/X509Certificate.h" +#include "Poco/Buffer.h" +#include +#include +#include +#include +#ifndef SECURITY_WIN32 +#define SECURITY_WIN32 +#endif +#include +#include + + +namespace Poco { +namespace Net { + + +class NetSSL_Win_API SecureSocketImpl + /// The SocketImpl for SecureStreamSocket. +{ +public: + enum Mode + { + MODE_CLIENT, + MODE_SERVER + }; + + SecureSocketImpl(Poco::AutoPtr pSocketImpl, Context::Ptr pContext); + /// Creates the SecureSocketImpl. + + virtual ~SecureSocketImpl(); + /// Destroys the SecureSocketImpl. + + SocketImpl* acceptConnection(SocketAddress& clientAddr); + /// Get the next completed connection from the + /// socket's completed connection queue. + /// + /// If the queue is empty, waits until a connection + /// request completes. + /// + /// Returns a new TCP socket for the connection + /// with the client. + /// + /// The client socket's address is returned in clientAddr. + + void connect(const SocketAddress& address, bool performHandshake); + /// Initializes the socket and establishes a connection to + /// the TCP server at the given address. + /// + /// Can also be used for UDP sockets. In this case, no + /// connection is established. Instead, incoming and outgoing + /// packets are restricted to the specified address. + + void connect(const SocketAddress& address, const Poco::Timespan& timeout, bool performHandshake); + /// Initializes the socket, sets the socket timeout and + /// establishes a connection to the TCP server at the given address. + + void connectNB(const SocketAddress& address); + /// Initializes the socket and establishes a connection to + /// the TCP server at the given address. Prior to opening the + /// connection the socket is set to nonblocking mode. + + void bind(const SocketAddress& address, bool reuseAddress = false); + /// Bind a local address to the socket. + /// + /// This is usually only done when establishing a server + /// socket. TCP clients should not bind a socket to a + /// specific address. + /// + /// If reuseAddress is true, sets the SO_REUSEADDR + /// socket option. + + void listen(int backlog = 64); + /// Puts the socket into listening state. + /// + /// The socket becomes a passive socket that + /// can accept incoming connection requests. + /// + /// The backlog argument specifies the maximum + /// number of connections that can be queued + /// for this socket. + + void shutdown(); + /// Shuts down the connection by attempting + /// an orderly SSL shutdown, then actually + /// shutting down the TCP connection. + + void close(); + /// Close the socket. + + void abort(); + /// Aborts the connection by closing the + /// underlying TCP connection. No orderly SSL shutdown + /// is performed. + + int sendBytes(const void* buffer, int length, int flags = 0); + /// Sends the contents of the given buffer through + /// the socket. Any specified flags are ignored. + /// + /// Returns the number of bytes sent, which may be + /// less than the number of bytes specified. + + int receiveBytes(void* buffer, int length, int flags = 0); + /// Receives data from the socket and stores it + /// in buffer. Up to length bytes are received. + /// + /// Returns the number of bytes received. + + void setPeerHostName(const std::string& hostName); + /// Sets the peer host name for certificate validation purposes. + + const std::string& getPeerHostName() const; + /// Returns the peer host name. + + void verifyPeerCertificate(); + /// Performs post-connect (or post-accept) peer certificate validation, + /// using the peer host name set with setPeerHostName(), or the peer's + /// IP address string if no peer host name has been set. + + void verifyPeerCertificate(const std::string& hostName); + /// Performs post-connect (or post-accept) peer certificate validation + /// using the given peer host name. + + Context::Ptr context() const; + /// Returns the Context. + + PCCERT_CONTEXT peerCertificate() const; + /// Returns the peer certificate. + + poco_socket_t sockfd(); + /// Returns the underlying socket descriptor. + + int available() const; + /// Returns the number of bytes available in the buffer. + +protected: + enum + { + IO_BUFFER_SIZE = 32768, + TIMEOUT_MILLISECS = 200 + }; + + enum State + { + ST_INITIAL = 0, + ST_CONNECTING, + ST_CLIENTHANDSHAKESTART, + ST_CLIENTHANDSHAKECONDREAD, + ST_CLIENTHANDSHAKEINCOMPLETE, + ST_CLIENTHANDSHAKEOK, + ST_CLIENTHANDSHAKEEXTERROR, + ST_CLIENTHANDSHAKECONTINUE, + ST_VERIFY, + ST_DONE, + ST_ERROR + }; + + int sendRawBytes(const void* buffer, int length, int flags = 0); + int receiveRawBytes(void* buffer, int length, int flags = 0); + void clientConnectVerify(); + void sendInitialTokenOutBuffer(); + void performServerHandshake(); + bool serverHandshakeLoop(PCtxtHandle phContext, PCredHandle phCred, bool requireClientAuth, bool doInitialRead, bool newContext); + void clientVerifyCertificate(const std::string& hostName); + void verifyCertificateChainClient(PCCERT_CONTEXT pServerCert); + void serverVerifyCertificate(); + LONG serverDisconnect(PCredHandle phCreds, CtxtHandle* phContext); + LONG clientDisconnect(PCredHandle phCreds, CtxtHandle* phContext); + bool loadSecurityLibrary(); + void initClientContext(); + void initServerContext(); + PCCERT_CONTEXT loadCertificate(bool mustFindCertificate); + void initCommon(); + void cleanup(); + void performClientHandshake(); + void performInitialClientHandshake(); + SECURITY_STATUS performClientHandshakeLoop(); + void performClientHandshakeLoopIncompleteMessage(); + void performClientHandshakeLoopCondReceive(); + void performClientHandshakeLoopReceive(); + void performClientHandshakeLoopOK(); + void performClientHandshakeLoopInit(); + void performClientHandshakeExtraBuffer(); + void performClientHandshakeSendOutBuffer(); + void performClientHandshakeLoopContinueNeeded(); + void performClientHandshakeLoopError(); + void performClientHandshakeLoopExtError(); + SECURITY_STATUS decodeMessage(BYTE* pBuffer, DWORD bufSize, AutoSecBufferDesc<4>& msg, SecBuffer*& pData, SecBuffer*& pExtra); + SECURITY_STATUS decodeBufferFull(BYTE* pBuffer, DWORD bufSize, char* pOutBuffer, int outLength, int& bytesDecoded); + void stateIllegal(); + void stateConnected(); + void acceptSSL(); + void connectSSL(bool completeHandshake); + void completeHandshake(); + static int lastError(); + void stateMachine(); + State getState() const; + void setState(State st); + static bool isLocalHost(const std::string& hostName); + +private: + SecureSocketImpl(const SecureSocketImpl&); + SecureSocketImpl& operator = (const SecureSocketImpl&); + + Poco::AutoPtr _pSocket; + Context::Ptr _pContext; + Mode _mode; + std::string _peerHostName; + bool _useMachineStore; + bool _clientAuthRequired; + + SecurityFunctionTableW& _securityFunctions; + + PCCERT_CONTEXT _pOwnCertificate; + PCCERT_CONTEXT _pPeerCertificate; + + CredHandle _hCreds; + CtxtHandle _hContext; + DWORD _contextFlags; + + Poco::Buffer _overflowBuffer; + Poco::Buffer _sendBuffer; + Poco::Buffer _recvBuffer; + DWORD _recvBufferOffset; + DWORD _ioBufferSize; + + SecPkgContext_StreamSizes _streamSizes; + AutoSecBufferDesc<1> _outSecBuffer; + AutoSecBufferDesc<2> _inSecBuffer; + SecBuffer _extraSecBuffer; + SECURITY_STATUS _securityStatus; + State _state; + DWORD _outFlags; + bool _needData; + bool _needHandshake; + + friend class SecureStreamSocketImpl; + friend class StateMachine; +}; + + +// +// inlines +// +inline poco_socket_t SecureSocketImpl::sockfd() +{ + return _pSocket->sockfd(); +} + + +inline Context::Ptr SecureSocketImpl::context() const +{ + return _pContext; +} + + +inline SecureSocketImpl::State SecureSocketImpl::getState() const +{ + return _state; +} + + +inline void SecureSocketImpl::setState(SecureSocketImpl::State st) +{ + _state = st; +} + + +inline const std::string& SecureSocketImpl::getPeerHostName() const +{ + return _peerHostName; +} + + +inline PCCERT_CONTEXT SecureSocketImpl::peerCertificate() const +{ + return _pPeerCertificate; +} + + +inline int SecureSocketImpl::lastError() +{ + return SocketImpl::lastError(); +} + + +} } // namespace Poco::Net + + +#endif // NetSSL_SecureSocketImpl_INCLUDED diff --git a/NetSSL_Win/include/Poco/Net/SecureStreamSocket.h b/NetSSL_Win/include/Poco/Net/SecureStreamSocket.h new file mode 100644 index 000000000..69e428fef --- /dev/null +++ b/NetSSL_Win/include/Poco/Net/SecureStreamSocket.h @@ -0,0 +1,274 @@ +// +// SecureStreamSocket.h +// +// $Id: //poco/1.4/NetSSL_Win/include/Poco/Net/SecureStreamSocket.h#2 $ +// +// Library: NetSSL_Win +// Package: SSLSockets +// Module: SecureStreamSocket +// +// Definition of the SecureStreamSocket class. +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef NetSSL_SecureStreamSocket_INCLUDED +#define NetSSL_SecureStreamSocket_INCLUDED + + +#include "Poco/Net/NetSSL.h" +#include "Poco/Net/StreamSocket.h" +#include "Poco/Net/Context.h" +#include "Poco/Net/Session.h" +#include "Poco/Net/X509Certificate.h" + + +namespace Poco { +namespace Net { + + +class NetSSL_Win_API SecureStreamSocket: public StreamSocket + /// A subclass of StreamSocket for secure SSL sockets. + /// + /// A few notes about nonblocking IO: + /// sendBytes() and receiveBytes() can return a + /// negative value when using a nonblocking socket, which means + /// a SSL handshake is currently in progress and more data + /// needs to be read or written for the handshake to continue. + /// If sendBytes() or receiveBytes() return ERR_SSL_WANT_WRITE, + /// sendBytes() must be called as soon as possible (usually, after + /// select() indicates that data can be written). Likewise, if + /// ERR_SSL_WANT_READ is returned, receiveBytes() must be called + /// as soon as data is available for reading (indicated by select()). + /// + /// The SSL handshake is delayed until the first sendBytes() or + /// receiveBytes() operation is performed on the socket. No automatic + /// post connection check (checking the peer certificate for a valid + /// hostname) is performed when using nonblocking I/O. To manually + /// perform peer certificate validation, call verifyPeerCertificate() + /// after the SSL handshake has been completed. +{ +public: + enum + { + ERR_SSL_WANT_READ = -1, + ERR_SSL_WANT_WRITE = -2 + }; + + SecureStreamSocket(); + /// Creates an unconnected secure stream socket + /// using the default client SSL context. + /// + /// Before sending or receiving data, the socket + /// must be connected with a call to connect(). + + explicit SecureStreamSocket(Context::Ptr pContext); + /// Creates an unconnected secure stream socket + /// using the given SSL context. + /// + /// Before sending or receiving data, the socket + /// must be connected with a call to connect(). + + SecureStreamSocket(Context::Ptr pContext, Session::Ptr pSession); + /// Creates an unconnected secure stream socket + /// using the given SSL context. + /// + /// Before sending or receiving data, the socket + /// must be connected with a call to connect(). + /// + /// The given Session is reused, if possible (client session + /// caching is enabled for the given Context, and the server + /// agrees to reuse the session). + + explicit SecureStreamSocket(const SocketAddress& address); + /// Creates a secure stream socket using the default + /// client SSL context and connects it to + /// the socket specified by address. + + SecureStreamSocket(const SocketAddress& address, Context::Ptr pContext); + /// Creates a secure stream socket using the given + /// client SSL context and connects it to + /// the socket specified by address. + + SecureStreamSocket(const SocketAddress& address, Context::Ptr pContext, Session::Ptr pSession); + /// Creates a secure stream socket using the given + /// client SSL context and connects it to + /// the socket specified by address. + /// + /// The given Session is reused, if possible (client session + /// caching is enabled for the given Context, and the server + /// agrees to reuse the session). + + SecureStreamSocket(const SocketAddress& address, const std::string& hostName); + /// Creates a secure stream socket using the default + /// client SSL context and connects it to + /// the socket specified by address. + /// + /// The given host name is used for certificate verification. + + SecureStreamSocket(const SocketAddress& address, const std::string& hostName, Context::Ptr pContext); + /// Creates a secure stream socket using the given + /// client SSL context and connects it to + /// the socket specified by address. + /// + /// The given host name is used for certificate verification. + + SecureStreamSocket(const SocketAddress& address, const std::string& hostName, Context::Ptr pContext, Session::Ptr pSession); + /// Creates a secure stream socket using the given + /// client SSL context and connects it to + /// the socket specified by address. + /// + /// The given host name is used for certificate verification. + /// + /// The given Session is reused, if possible (client session + /// caching is enabled for the given Context, and the server + /// agrees to reuse the session). + + SecureStreamSocket(const Socket& socket); + /// Creates the SecureStreamSocket with the SocketImpl + /// from another socket. The SocketImpl must be + /// a SecureStreamSocketImpl, otherwise an InvalidArgumentException + /// will be thrown. + + virtual ~SecureStreamSocket(); + /// Destroys the StreamSocket. + + SecureStreamSocket& operator = (const Socket& socket); + /// Assignment operator. + /// + /// Releases the socket's SocketImpl and + /// attaches the SocketImpl from the other socket and + /// increments the reference count of the SocketImpl. + + bool havePeerCertificate() const; + /// Returns true iff the peer has presented a + /// certificate. + + X509Certificate peerCertificate() const; + /// Returns the peer's X509 certificate. + /// + /// Throws a SSLException if the peer did not + /// present a certificate. + + void setPeerHostName(const std::string& hostName); + /// Sets the peer's host name used for certificate validation. + + const std::string& getPeerHostName() const; + /// Returns the peer's host name used for certificate validation. + + static SecureStreamSocket attach(const StreamSocket& streamSocket); + /// Creates a SecureStreamSocket over an existing socket + /// connection. The given StreamSocket must be connected. + /// A SSL handshake will be performed. + + static SecureStreamSocket attach(const StreamSocket& streamSocket, Context::Ptr pContext); + /// Creates a SecureStreamSocket over an existing socket + /// connection. The given StreamSocket must be connected. + /// A SSL handshake will be performed. + + static SecureStreamSocket attach(const StreamSocket& streamSocket, Context::Ptr pContext, Session::Ptr pSession); + /// Creates a SecureStreamSocket over an existing socket + /// connection. The given StreamSocket must be connected. + /// A SSL handshake will be performed. + /// + /// The given Session is reused, if possible (client session + /// caching is enabled for the given Context, and the server + /// agrees to reuse the session). + + static SecureStreamSocket attach(const StreamSocket& streamSocket, const std::string& peerHostName); + /// Creates a SecureStreamSocket over an existing socket + /// connection. The given StreamSocket must be connected. + /// A SSL handshake will be performed. + + static SecureStreamSocket attach(const StreamSocket& streamSocket, const std::string& peerHostName, Context::Ptr pContext); + /// Creates a SecureStreamSocket over an existing socket + /// connection. The given StreamSocket must be connected. + /// A SSL handshake will be performed. + + static SecureStreamSocket attach(const StreamSocket& streamSocket, const std::string& peerHostName, Context::Ptr pContext, Session::Ptr pSession); + /// Creates a SecureStreamSocket over an existing socket + /// connection. The given StreamSocket must be connected. + /// A SSL handshake will be performed. + /// + /// The given Session is reused, if possible (client session + /// caching is enabled for the given Context, and the server + /// agrees to reuse the session). + + Context::Ptr context() const; + /// Returns the SSL context used by this socket. + + void setLazyHandshake(bool flag = true); + /// Enable lazy SSL handshake. If enabled, the SSL handshake + /// will be performed the first time date is sent or + /// received over the connection. + + bool getLazyHandshake() const; + /// Returns true if setLazyHandshake(true) has been called. + + void verifyPeerCertificate(); + /// Performs post-connect (or post-accept) peer certificate validation, + /// using the peer host name set with setPeerHostName(), or the peer's + /// IP address string if no peer host name has been set. + /// + /// Should only be used for non-blocking connections, after the + /// initial SSL handshake has been performed (see completeHandshake()). + + void verifyPeerCertificate(const std::string& hostName); + /// Performs post-connect (or post-accept) peer certificate validation + /// using the given host name. + /// + /// Should only be used for non-blocking connections, after the + /// initial SSL handshake has been performed (see completeHandshake()). + + int completeHandshake(); + /// Completes the SSL handshake. + /// + /// If the SSL connection was the result of an accept(), + /// the server-side handshake is completed, otherwise + /// a client-side handshake is performed. + /// + /// Returns 1 if the handshake was successful, ERR_SSL_WANT_READ or + /// ERR_SSL_WANT_WRITE if more data is required to complete the + /// handshake. In this case, completeHandshake() should be called + /// again, after the necessary condition has been met. + + Session::Ptr currentSession(); + /// Returns the SSL session of the current connection, + /// for reuse in a future connection (if session caching + /// is enabled). + /// + /// If no connection is established, returns null. + + void useSession(Session::Ptr pSession); + /// Sets the SSL session to use for the next + /// connection. Setting a previously saved Session + /// object is necessary to enable session caching. + /// + /// To remove the currently set session, a null pointer + /// can be given. + /// + /// Must be called before connect() to be effective. + + bool sessionWasReused(); + /// Returns true iff a reused session was negotiated during + /// the handshake. + + void abort(); + /// Aborts the SSL connection by closing the underlying + /// TCP connection. No orderly SSL shutdown is performed. + +protected: + SecureStreamSocket(SocketImpl* pImpl); + + friend class SecureServerSocket; +}; + + +} } // namespace Poco::Net + + +#endif // NetSSL_SecureStreamSocket_INCLUDED diff --git a/NetSSL_Win/include/Poco/Net/SecureStreamSocketImpl.h b/NetSSL_Win/include/Poco/Net/SecureStreamSocketImpl.h new file mode 100644 index 000000000..f79a32a1a --- /dev/null +++ b/NetSSL_Win/include/Poco/Net/SecureStreamSocketImpl.h @@ -0,0 +1,302 @@ +// +// SecureStreamSocketImpl.h +// +// $Id: //poco/1.4/NetSSL_Win/include/Poco/Net/SecureStreamSocketImpl.h#2 $ +// +// Library: NetSSL_Win +// Package: SSLSockets +// Module: SecureStreamSocketImpl +// +// Definition of the SecureStreamSocketImpl class. +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef NetSSL_SecureStreamSocketImpl_INCLUDED +#define NetSSL_SecureStreamSocketImpl_INCLUDED + + +#include "Poco/Net/NetSSL.h" +#include "Poco/Net/SecureSocketImpl.h" +#include "Poco/Net/StreamSocketImpl.h" +#include "Poco/Net/Context.h" +#include "Poco/Net/Session.h" +#include "Poco/Net/X509Certificate.h" + + +namespace Poco { +namespace Net { + + +class NetSSL_Win_API SecureStreamSocketImpl: public StreamSocketImpl + /// This class implements a SSL stream socket. +{ +public: + SecureStreamSocketImpl(Context::Ptr pContext); + /// Creates the SecureStreamSocketImpl. + + SecureStreamSocketImpl(StreamSocketImpl* pStreamSocket, Context::Ptr pContext); + /// Creates the SecureStreamSocketImpl. + + SocketImpl* acceptConnection(SocketAddress& clientAddr); + /// Not supported by a SecureStreamSocket. + /// + /// Throws a Poco::InvalidAccessException. + + void connect(const SocketAddress& address); + /// Initializes the socket and establishes a connection to + /// the TCP server at the given address. + /// + /// Can also be used for UDP sockets. In this case, no + /// connection is established. Instead, incoming and outgoing + /// packets are restricted to the specified address. + + void connect(const SocketAddress& address, const Poco::Timespan& timeout); + /// Initializes the socket, sets the socket timeout and + /// establishes a connection to the TCP server at the given address. + + void connectNB(const SocketAddress& address); + /// Initializes the socket and establishes a connection to + /// the TCP server at the given address. Prior to opening the + /// connection the socket is set to nonblocking mode. + + void bind(const SocketAddress& address, bool reuseAddress = false); + /// Not supported by a SecureStreamSocket. + /// + /// Throws a Poco::InvalidAccessException. + + void listen(int backlog = 64); + /// Not supported by a SecureStreamSocket. + /// + /// Throws a Poco::InvalidAccessException. + + void close(); + /// Close the socket. + + int sendBytes(const void* buffer, int length, int flags = 0); + /// Sends the contents of the given buffer through + /// the socket. Any specified flags are ignored. + /// + /// Returns the number of bytes sent, which may be + /// less than the number of bytes specified. + + int receiveBytes(void* buffer, int length, int flags = 0); + /// Receives data from the socket and stores it + /// in buffer. Up to length bytes are received. + /// + /// Returns the number of bytes received. + + int sendTo(const void* buffer, int length, const SocketAddress& address, int flags = 0); + /// Not supported by a SecureStreamSocket. + /// + /// Throws a Poco::InvalidAccessException. + + int receiveFrom(void* buffer, int length, SocketAddress& address, int flags = 0); + /// Not supported by a SecureStreamSocket. + /// + /// Throws a Poco::InvalidAccessException. + + void sendUrgent(unsigned char data); + /// Not supported by a SecureStreamSocket. + /// + /// Throws a Poco::InvalidAccessException. + + int available(); + /// Returns the number of bytes available that can be read + /// without causing the socket to block. + /// + /// For an SSL connection, returns the number of bytes that + /// can be read from the currently buffered SSL record, + /// before a new record is read from the underlying socket. + + void shutdownReceive(); + /// Shuts down the receiving part of the socket connection. + /// + /// Since SSL does not support a half shutdown, this does + /// nothing. + + void shutdownSend(); + /// Shuts down the receiving part of the socket connection. + /// + /// Since SSL does not support a half shutdown, this does + /// nothing. + + void shutdown(); + /// Shuts down the SSL connection. + + void abort(); + /// Aborts the connection by closing the underlying + /// TCP connection. No orderly SSL shutdown is performed. + + bool secure() const; + /// Returns true iff the socket's connection is secure + /// (using SSL or TLS). + + void setPeerHostName(const std::string& hostName); + /// Sets the peer host name for certificate validation purposes. + + const std::string& getPeerHostName() const; + /// Returns the peer host name. + + bool havePeerCertificate() const; + /// Returns true iff the peer has presented a + /// certificate. + + X509Certificate peerCertificate() const; + /// Returns the peer's X509 certificate. + /// + /// Throws a SSLException if the peer did not + /// present a certificate. + + Context::Ptr context() const; + /// Returns the SSL context used by this socket. + + void setLazyHandshake(bool flag = true); + /// Enable lazy SSL handshake. If enabled, the SSL handshake + /// will be performed the first time date is sent or + /// received over the connection. + + bool getLazyHandshake() const; + /// Returns true if setLazyHandshake(true) has been called. + + void verifyPeerCertificate(); + /// Performs post-connect (or post-accept) peer certificate validation, + /// using the peer's IP address as host name. + + void verifyPeerCertificate(const std::string& hostName); + /// Performs post-connect (or post-accept) peer certificate validation + /// using the given host name. + + int completeHandshake(); + /// Completes the SSL handshake. + /// + /// If the SSL connection was the result of an accept(), + /// the server-side handshake is completed, otherwise + /// a client-side handshake is performed. + + Session::Ptr currentSession(); + /// Returns the SSL session of the current connection, + /// for reuse in a future connection (if session caching + /// is enabled). + /// + /// If no connection is established, returns null. + + void useSession(Session::Ptr pSession); + /// Sets the SSL session to use for the next + /// connection. Setting a previously saved Session + /// object is necessary to enable session caching. + /// + /// To remove the currently set session, a null pointer + /// can be given. + /// + /// Must be called before connect() to be effective. + + bool sessionWasReused(); + /// Returns true iff a reused session was negotiated during + /// the handshake. + +protected: + void acceptSSL(); + /// Performs a SSL server-side handshake. + + void connectSSL(); + /// Performs a SSL client-side handshake on an already connected TCP socket. + + ~SecureStreamSocketImpl(); + /// Destroys the SecureStreamSocketImpl. + + static int lastError(); + static void error(); + static void error(const std::string& arg); + static void error(int code); + static void error(int code, const std::string& arg); + +private: + SecureStreamSocketImpl(const SecureStreamSocketImpl&); + SecureStreamSocketImpl& operator = (const SecureStreamSocketImpl&); + + SecureSocketImpl _impl; + bool _lazyHandshake; + + friend class SecureSocketImpl; + friend class SecureStreamSocket; +}; + + +// +// inlines +// +inline const std::string& SecureStreamSocketImpl::getPeerHostName() const +{ + return _impl.getPeerHostName(); +} + + +inline void SecureStreamSocketImpl::setPeerHostName(const std::string& peerHostName) +{ + _impl.setPeerHostName(peerHostName); +} + + +inline Context::Ptr SecureStreamSocketImpl::context() const +{ + return _impl.context(); +} + + +inline Session::Ptr SecureStreamSocketImpl::currentSession() +{ + return Session::Ptr();//_impl.currentSession(); +} + + +inline void SecureStreamSocketImpl::useSession(Session::Ptr pSession) +{ + //_impl.useSession(pSession); +} + + +inline bool SecureStreamSocketImpl::sessionWasReused() +{ + return false;//_impl.sessionWasReused(); +} + + +inline int SecureStreamSocketImpl::lastError() +{ + return SocketImpl::lastError(); +} + + +inline void SecureStreamSocketImpl::error() +{ + return SocketImpl::error(); +} + + +inline void SecureStreamSocketImpl::error(const std::string& arg) +{ + return SocketImpl::error(arg); +} + + +inline void SecureStreamSocketImpl::error(int code) +{ + return SocketImpl::error(code); +} + + +inline void SecureStreamSocketImpl::error(int code, const std::string& arg) +{ + return SocketImpl::error(code, arg); +} + + +} } // namespace Poco::Net + + +#endif // NetSSL_SecureStreamSocketImpl_INCLUDED diff --git a/NetSSL_Win/include/Poco/Net/Session.h b/NetSSL_Win/include/Poco/Net/Session.h new file mode 100644 index 000000000..0d8d71806 --- /dev/null +++ b/NetSSL_Win/include/Poco/Net/Session.h @@ -0,0 +1,69 @@ +// +// Session.h +// +// $Id: //poco/1.4/NetSSL_Win/include/Poco/Net/Session.h#1 $ +// +// Library: NetSSL_Win +// Package: SSLCore +// Module: Session +// +// Definition of the Session class. +// +// Copyright (c) 2010-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef NetSSL_Session_INCLUDED +#define NetSSL_Session_INCLUDED + + +#include "Poco/Net/NetSSL.h" +#include "Poco/RefCountedObject.h" +#include "Poco/AutoPtr.h" + + +namespace Poco { +namespace Net { + + +class NetSSL_Win_API Session: public Poco::RefCountedObject + /// This class encapsulates a SSL session object + /// used with session caching on the client side. + /// + /// For session caching to work, a client must + /// save the session object from an existing connection, + /// if it wants to reuse it with a future connection. +{ +public: + typedef Poco::AutoPtr Ptr; + +protected: + Session(); + /// Creates a new Session object, using the given + /// SSL_SESSION object. + /// + /// The SSL_SESSION's reference count is not changed. + + ~Session(); + /// Destroys the Session. + /// + /// Calls SSL_SESSION_free() on the stored + /// SSL_SESSION object. + +private: + friend class SecureSocketImpl; +}; + + +// +// inlines +// + + +} } // namespace Poco::Net + + +#endif // NetSSL_Session_INCLUDED diff --git a/NetSSL_Win/include/Poco/Net/Utility.h b/NetSSL_Win/include/Poco/Net/Utility.h new file mode 100644 index 000000000..b82b7086e --- /dev/null +++ b/NetSSL_Win/include/Poco/Net/Utility.h @@ -0,0 +1,52 @@ +// +// Utility.h +// +// $Id$ +// +// Library: NetSSL_Win +// Package: SSLCore +// Module: Utility +// +// Definition of the Utility class. +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef NetSSL_Utility_INCLUDED +#define NetSSL_Utility_INCLUDED + + +#include "Poco/Net/NetSSL.h" +#include "Poco/Net/Context.h" +#include + + +namespace Poco { +namespace Net { + + +class NetSSL_Win_API Utility + /// Various helper functions. +{ +public: + static Context::VerificationMode convertVerificationMode(const std::string& verMode); + /// Non-case sensitive conversion of a string to a VerificationMode enum. + /// If verMode is illegal an OptionException is thrown. + + static const std::string& formatError(long errCode); + /// Converts an winerror.h code into human readable form. + +private: + static std::map initSSPIErr(); + static Poco::FastMutex _mutex; +}; + + +} } // namespace Poco::Net + + +#endif // NetSSL_Utility_INCLUDED diff --git a/NetSSL_Win/include/Poco/Net/VerificationErrorArgs.h b/NetSSL_Win/include/Poco/Net/VerificationErrorArgs.h new file mode 100644 index 000000000..52a8f890d --- /dev/null +++ b/NetSSL_Win/include/Poco/Net/VerificationErrorArgs.h @@ -0,0 +1,110 @@ +// +// VerificationErrorArgs.h +// +// $Id: //poco/1.4/NetSSL_Win/include/Poco/Net/VerificationErrorArgs.h#1 $ +// +// Library: NetSSL_Win +// Package: SSLCore +// Module: VerificationErrorArgs +// +// Definition of the VerificationErrorArgs class. +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef NetSSL_VerificationErrorArgs_INCLUDED +#define NetSSL_VerificationErrorArgs_INCLUDED + + +#include "Poco/Net/NetSSL.h" +#include "Poco/Net/X509Certificate.h" + + +namespace Poco { +namespace Net { + + +class NetSSL_Win_API VerificationErrorArgs + /// A utility class for certificate error handling. +{ +public: + VerificationErrorArgs(const X509Certificate& cert, int errDepth, int errNum, const std::string& errMsg); + /// Creates the VerificationErrorArgs. _ignoreError is per default set to false. + + ~VerificationErrorArgs(); + /// Destroys the VerificationErrorArgs. + + const X509Certificate& certificate() const; + /// Returns the certificate that caused the error. + + int errorDepth() const; + /// Returns the position of the certificate in the certificate chain. + + int errorNumber() const; + /// Returns the id of the error + + const std::string& errorMessage() const; + /// Returns the textual presentation of the errorNumber. + + void setIgnoreError(bool ignoreError); + /// setIgnoreError to true, if a verification error is judged non-fatal by the user. + + bool getIgnoreError() const; + /// returns the value of _ignoreError + +private: + X509Certificate _cert; + int _errorDepth; + int _errorNumber; + std::string _errorMessage; /// Textual representation of the _errorNumber + bool _ignoreError; +}; + + +// +// inlines +// +inline const X509Certificate& VerificationErrorArgs::certificate() const +{ + return _cert; +} + + +inline int VerificationErrorArgs::errorDepth() const +{ + return _errorDepth; +} + + +inline int VerificationErrorArgs::errorNumber() const +{ + return _errorNumber; +} + + +inline const std::string& VerificationErrorArgs::errorMessage() const +{ + return _errorMessage; +} + + +inline void VerificationErrorArgs::setIgnoreError(bool ignoreError) +{ + _ignoreError = ignoreError; +} + + +inline bool VerificationErrorArgs::getIgnoreError() const +{ + return _ignoreError; +} + + +} } // namespace Poco::Net + + +#endif // NetSSL_VerificationErrorArgs_INCLUDED diff --git a/NetSSL_Win/include/Poco/Net/X509Certificate.h b/NetSSL_Win/include/Poco/Net/X509Certificate.h new file mode 100644 index 000000000..fe0a0208b --- /dev/null +++ b/NetSSL_Win/include/Poco/Net/X509Certificate.h @@ -0,0 +1,198 @@ +// +// X509Certificate.h +// +// $Id$ +// +// Library: NetSSL_Win +// Package: Certificate +// Module: X509Certificate +// +// Definition of the X509Certificate class. +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef NetSSL_X509Certificate_INCLUDED +#define NetSSL_X509Certificate_INCLUDED + + +#include "Poco/Net/NetSSL.h" +#include "Poco/DateTime.h" +#include +#include +#include + + +namespace Poco { +namespace Net { + + +class NetSSL_Win_API X509Certificate + /// This class represents a X509 Certificate. +{ +public: + enum NID + /// Name identifier for extracting information from + /// a certificate subject's or issuer's distinguished name. + { + NID_COMMON_NAME, + NID_COUNTRY, + NID_LOCALITY_NAME, + NID_STATE_OR_PROVINCE, + NID_ORGANIZATION_NAME, + NID_ORGANIZATION_UNIT_NAME + }; + + explicit X509Certificate(const std::string& certPath); + /// Creates the X509Certificate object by reading + /// a certificate in PEM or DER format from a file. + + explicit X509Certificate(std::istream& istr); + /// Creates the X509Certificate object by reading + /// a certificate in PEM or DER format from a stream. + + X509Certificate(const std::string& certName, const std::string& certStoreName, bool useMachineStore = false); + /// Creates the X509Certificate object by loading + /// a certificate from the specified certificate store. + /// + /// If useSystemStore is true, the machine's certificate store is used, + /// otherwise the user's certificate store. + + explicit X509Certificate(PCCERT_CONTEXT pCert); + /// Creates the X509Certificate from an existing + /// WinCrypt certificate. Ownership is taken of + /// the certificate. + + X509Certificate(PCCERT_CONTEXT pCert, bool shared); + /// Creates the X509Certificate from an existing + /// WinCrypt certificate. Ownership is taken of + /// the certificate. If shared is true, the + /// certificate's reference count is incremented. + + X509Certificate(const X509Certificate& cert); + /// Creates the certificate by copying another one. + + X509Certificate& operator = (const X509Certificate& cert); + /// Assigns a certificate. + + void swap(X509Certificate& cert); + /// Exchanges the certificate with another one. + + ~X509Certificate(); + /// Destroys the X509Certificate. + + const std::string& issuerName() const; + /// Returns the certificate issuer's distinguished name. + + std::string issuerName(NID nid) const; + /// Extracts the information specified by the given + /// NID (name identifier) from the certificate issuer's + /// distinguished name. + + const std::string& subjectName() const; + /// Returns the certificate subject's distinguished name. + + std::string subjectName(NID nid) const; + /// Extracts the information specified by the given + /// NID (name identifier) from the certificate subject's + /// distinguished name. + + std::string commonName() const; + /// Returns the common name stored in the certificate + /// subject's distinguished name. + + void extractNames(std::string& commonName, std::set& domainNames) const; + /// Extracts the common name and the alias domain names from the + /// certificate. + + Poco::DateTime validFrom() const; + /// Returns the date and time the certificate is valid from. + + Poco::DateTime expiresOn() const; + /// Returns the date and time the certificate expires. + + bool issuedBy(const X509Certificate& issuerCertificate) const; + /// Checks whether the certificate has been issued by + /// the issuer given by issuerCertificate. This can be + /// used to validate a certificate chain. + /// + /// Verifies that the given certificate is contained in the + /// certificate's issuer certificate chain. + /// + /// Returns true if verification against the issuer certificate + /// was successful, false otherwise. + + bool verify(const std::string& hostName) const; + /// Verifies the validity of the certificate against the host name. + /// + /// For this check to be successful, the certificate must contain + /// a domain name that matches the domain name + /// of the host. + /// + /// Returns true if verification succeeded, or false otherwise. + + static bool verify(const Poco::Net::X509Certificate& cert, const std::string& hostName); + /// Verifies the validity of the certificate against the host name. + /// + /// For this check to be successful, the certificate must contain + /// a domain name that matches the domain name + /// of the host. + /// + /// Returns true if verification succeeded, or false otherwise. + + const PCCERT_CONTEXT system() const; + /// Returns the underlying WinCrypt certificate. + +protected: + void init(); + /// Extracts issuer and subject name from the certificate. + + static void* nid2oid(NID nid); + /// Returns the OID for the given NID. + + void loadCertificate(const std::string& certName, const std::string& certStoreName, bool useMachineStore); + void importCertificate(const std::string& certPath); + void importCertificate(std::istream& istr); + void importCertificate(const char* pBuffer, std::size_t size); + void importPEMCertificate(const char* pBuffer, std::size_t size); + void importDERCertificate(const char* pBuffer, std::size_t size); + + static bool containsWildcards(const std::string& commonName); + static bool matchWildcard(const std::string& alias, const std::string& hostName); + +private: + std::string _issuerName; + std::string _subjectName; + PCCERT_CONTEXT _pCert; +}; + + +// +// inlines +// +inline const std::string& X509Certificate::issuerName() const +{ + return _issuerName; +} + + +inline const std::string& X509Certificate::subjectName() const +{ + return _subjectName; +} + + +inline const PCCERT_CONTEXT X509Certificate::system() const +{ + return _pCert; +} + + +} } // namespace Poco::Net + + +#endif // NetSSL_X509Certificate_INCLUDED diff --git a/NetSSL_Win/samples/CMakeLists.txt b/NetSSL_Win/samples/CMakeLists.txt new file mode 100644 index 000000000..e6ad6f591 --- /dev/null +++ b/NetSSL_Win/samples/CMakeLists.txt @@ -0,0 +1,3 @@ +add_subdirectory( HTTPSTimeServer ) +add_subdirectory( download ) +add_subdirectory( Mail ) diff --git a/NetSSL_Win/samples/HTTPSTimeServer/CMakeLists.txt b/NetSSL_Win/samples/HTTPSTimeServer/CMakeLists.txt new file mode 100644 index 000000000..85dcd4584 --- /dev/null +++ b/NetSSL_Win/samples/HTTPSTimeServer/CMakeLists.txt @@ -0,0 +1,7 @@ +set(SAMPLE_NAME "HTTPSTimeServer") + +set(LOCAL_SRCS "") +aux_source_directory(src LOCAL_SRCS) + +add_executable( ${SAMPLE_NAME} ${LOCAL_SRCS} ) +target_link_libraries( ${SAMPLE_NAME} PocoNetSSLWin PocoCrypto PocoUtil PocoNet PocoXML PocoFoundation ) diff --git a/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer.progen b/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer.progen new file mode 100644 index 000000000..b12a664bb --- /dev/null +++ b/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer.progen @@ -0,0 +1,18 @@ +vc.project.guid = ${vc.project.guidFromName} +vc.project.name = ${vc.project.baseName} +vc.project.target = ${vc.project.name} +vc.project.type = executable +vc.project.pocobase = ..\\..\\.. +vc.project.platforms = Win32, x64, WinCE +vc.project.configurations = debug_shared, release_shared, debug_static_mt, release_static_mt, debug_static_md, release_static_md +vc.project.prototype = ${vc.project.name}_vs90.vcproj +vc.project.compiler.include = ..\\..\\..\\Foundation\\include;..\\..\\..\\XML\\include;..\\..\\..\\Util\\include;..\\..\\..\\Net\\include;..\\..\\..\\NetSSL_Win\\include +vc.project.linker.dependencies.Win32 = ws2_32.lib iphlpapi.lib +vc.project.linker.dependencies.x64 = ws2_32.lib iphlpapi.lib +vc.project.linker.dependencies.WinCE = ws2.lib iphlpapi.lib +vc.project.linker.dependencies.debug_shared = +vc.project.linker.dependencies.release_shared = +vc.project.linker.dependencies.debug_static_md = Crypt32.lib +vc.project.linker.dependencies.release_static_md = Crypt32.lib +vc.project.linker.dependencies.debug_static_mt = Crypt32.lib +vc.project.linker.dependencies.release_static_mt = Crypt32.lib diff --git a/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer.properties b/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer.properties new file mode 100644 index 000000000..1786a8bfa --- /dev/null +++ b/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer.properties @@ -0,0 +1,19 @@ +# This is a sample configuration file for HTTPSTimeServer + +HTTPSTimeServer.format = %W, %e %b %y %H:%M:%S %Z +HTTPSTimeServer.port = 9443 + +schannel.server.certificatePath = ${application.configDir}any.pfx +schannel.server.privateKeyPassphraseHandler.name = KeyFileHandler +schannel.server.privateKeyPassphraseHandler.options.password = secret +schannel.server.verificationMode = none +schannel.server.useMachineStore = false +schannel.server.useStrongCrypto = true + +logging.loggers.root.channel.class = ConsoleChannel +logging.loggers.app.name = Application +logging.loggers.app.channel = c1 +logging.formatters.f1.class = PatternFormatter +logging.formatters.f1.pattern = [%p] %t +logging.channels.c1.class = ConsoleChannel +logging.channels.c1.formatter = f1 diff --git a/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_CE_vs90.vcproj b/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_CE_vs90.vcproj new file mode 100644 index 000000000..0b9c068e0 --- /dev/null +++ b/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_CE_vs90.vcproj @@ -0,0 +1,477 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_WEC2013_vs110.vcxproj b/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_WEC2013_vs110.vcxproj new file mode 100644 index 000000000..81b59e485 --- /dev/null +++ b/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_WEC2013_vs110.vcxproj @@ -0,0 +1,299 @@ + + + + + debug_shared + SDK_AM335X_SK_WEC2013_V300 + + + debug_static_md + SDK_AM335X_SK_WEC2013_V300 + + + debug_static_mt + SDK_AM335X_SK_WEC2013_V300 + + + release_shared + SDK_AM335X_SK_WEC2013_V300 + + + release_static_md + SDK_AM335X_SK_WEC2013_V300 + + + release_static_mt + SDK_AM335X_SK_WEC2013_V300 + + + + HTTPSTimeServer + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9} + en-US + 11.0 + true + SDK_AM335X_SK_WEC2013_V300 + CE800 + + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>11.0.61030.0 + HTTPSTimeServerd + HTTPSTimeServerd + HTTPSTimeServerd + HTTPSTimeServer + HTTPSTimeServer + HTTPSTimeServer + + + bin\$(Platform)\shared\ + obj\HTTPSTimeServer\$(Platform)\$(Configuration)\ + true + + + bin\$(Platform)\shared\ + obj\HTTPSTimeServer\$(Platform)\$(Configuration)\ + false + + + bin\$(Platform)\static_mt\ + obj\HTTPSTimeServer\$(Platform)\$(Configuration)\ + true + + + bin\$(Platform)\static_mt\ + obj\HTTPSTimeServer\$(Platform)\$(Configuration)\ + false + + + bin\$(Platform)\static_md\ + obj\HTTPSTimeServer\$(Platform)\$(Configuration)\ + true + + + bin\$(Platform)\static_md\ + obj\HTTPSTimeServer\$(Platform)\$(Configuration)\ + false + + + + Disabled + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + _DEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebugDLL + true + true + + Level3 + ProgramDatabase + Default + + + ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\shared\HTTPSTimeServerd.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + true + bin\$(Platform)\shared\HTTPSTimeServerd.pdb + mainCRTStartup + WindowsCE + + + + + Disabled + true + Speed + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + NDEBUG;$(ProjectName)_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDLL + false + true + Level3 + ProgramDatabase + + + ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\shared\HTTPSTimeServer.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + false + + true + true + mainCRTStartup + WindowsCE + + + + + Disabled + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + _DEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebug + true + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;Crypt32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\static_mt\HTTPSTimeServerd.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + true + bin\$(Platform)\static_mt\HTTPSTimeServerd.pdb + mainCRTStartup + WindowsCE + + + + + Disabled + Default + true + Speed + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + NDEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreaded + false + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;Crypt32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\static_mt\HTTPSTimeServer.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + false + + true + true + mainCRTStartup + WindowsCE + + + + + Disabled + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + _DEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebugDLL + true + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;Crypt32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\static_md\HTTPSTimeServerd.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + true + bin\$(Platform)\static_md\HTTPSTimeServerd.pdb + mainCRTStartup + WindowsCE + + + + + Disabled + Default + true + Speed + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + NDEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDLL + false + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;Crypt32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\static_md\HTTPSTimeServer.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + false + + true + true + mainCRTStartup + WindowsCE + + + + + + + + + + + diff --git a/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_WEC2013_vs110.vcxproj.filters b/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_WEC2013_vs110.vcxproj.filters new file mode 100644 index 000000000..fc1743f53 --- /dev/null +++ b/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_WEC2013_vs110.vcxproj.filters @@ -0,0 +1,21 @@ + + + + + {d673f1d6-2f13-4997-8bbb-cb1e71c8df8c} + + + {7dcdffb2-7a90-498a-bb6f-3630561da451} + + + + + Configuration Files + + + + + Source Files + + + \ No newline at end of file diff --git a/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_WEC2013_vs120.vcxproj b/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_WEC2013_vs120.vcxproj new file mode 100644 index 000000000..98485d3e4 --- /dev/null +++ b/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_WEC2013_vs120.vcxproj @@ -0,0 +1,299 @@ + + + + + debug_shared + SDK_AM335X_SK_WEC2013_V310 + + + debug_static_md + SDK_AM335X_SK_WEC2013_V310 + + + debug_static_mt + SDK_AM335X_SK_WEC2013_V310 + + + release_shared + SDK_AM335X_SK_WEC2013_V310 + + + release_static_md + SDK_AM335X_SK_WEC2013_V310 + + + release_static_mt + SDK_AM335X_SK_WEC2013_V310 + + + + HTTPSTimeServer + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9} + en-US + 11.0 + true + SDK_AM335X_SK_WEC2013_V310 + CE800 + + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>12.0.30501.0 + HTTPSTimeServerd + HTTPSTimeServerd + HTTPSTimeServerd + HTTPSTimeServer + HTTPSTimeServer + HTTPSTimeServer + + + bin\$(Platform)\shared\ + obj\HTTPSTimeServer\$(Platform)\$(Configuration)\ + true + + + bin\$(Platform)\shared\ + obj\HTTPSTimeServer\$(Platform)\$(Configuration)\ + false + + + bin\$(Platform)\static_mt\ + obj\HTTPSTimeServer\$(Platform)\$(Configuration)\ + true + + + bin\$(Platform)\static_mt\ + obj\HTTPSTimeServer\$(Platform)\$(Configuration)\ + false + + + bin\$(Platform)\static_md\ + obj\HTTPSTimeServer\$(Platform)\$(Configuration)\ + true + + + bin\$(Platform)\static_md\ + obj\HTTPSTimeServer\$(Platform)\$(Configuration)\ + false + + + + Disabled + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + _DEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebugDLL + true + true + + Level3 + ProgramDatabase + Default + + + ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\shared\HTTPSTimeServerd.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + true + bin\$(Platform)\shared\HTTPSTimeServerd.pdb + mainCRTStartup + WindowsCE + + + + + Disabled + true + Speed + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + NDEBUG;$(ProjectName)_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDLL + false + true + Level3 + ProgramDatabase + + + ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\shared\HTTPSTimeServer.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + false + + true + true + mainCRTStartup + WindowsCE + + + + + Disabled + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + _DEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebug + true + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;Crypt32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\static_mt\HTTPSTimeServerd.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + true + bin\$(Platform)\static_mt\HTTPSTimeServerd.pdb + mainCRTStartup + WindowsCE + + + + + Disabled + Default + true + Speed + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + NDEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreaded + false + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;Crypt32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\static_mt\HTTPSTimeServer.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + false + + true + true + mainCRTStartup + WindowsCE + + + + + Disabled + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + _DEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebugDLL + true + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;Crypt32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\static_md\HTTPSTimeServerd.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + true + bin\$(Platform)\static_md\HTTPSTimeServerd.pdb + mainCRTStartup + WindowsCE + + + + + Disabled + Default + true + Speed + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + NDEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDLL + false + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;Crypt32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\static_md\HTTPSTimeServer.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + false + + true + true + mainCRTStartup + WindowsCE + + + + + + + + + + + diff --git a/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_WEC2013_vs120.vcxproj.filters b/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_WEC2013_vs120.vcxproj.filters new file mode 100644 index 000000000..9b880deb3 --- /dev/null +++ b/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_WEC2013_vs120.vcxproj.filters @@ -0,0 +1,21 @@ + + + + + {8b860445-4c05-4cc2-bf9a-e0f96e2b60b1} + + + {3a54d8f0-6df6-4168-9a0e-a0571a16d8d1} + + + + + Configuration Files + + + + + Source Files + + + \ No newline at end of file diff --git a/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_vs100.vcxproj b/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_vs100.vcxproj new file mode 100644 index 000000000..2a22e4260 --- /dev/null +++ b/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_vs100.vcxproj @@ -0,0 +1,314 @@ + + + + + debug_shared + Win32 + + + debug_static_md + Win32 + + + debug_static_mt + Win32 + + + release_shared + Win32 + + + release_static_md + Win32 + + + release_static_mt + Win32 + + + + HTTPSTimeServer + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9} + HTTPSTimeServer + Win32Proj + + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + bin\ + obj\HTTPSTimeServer\$(Configuration)\ + true + bin\ + obj\HTTPSTimeServer\$(Configuration)\ + false + bin\static_mt\ + obj\HTTPSTimeServer\$(Configuration)\ + true + bin\static_mt\ + obj\HTTPSTimeServer\$(Configuration)\ + false + bin\static_md\ + obj\HTTPSTimeServer\$(Configuration)\ + true + bin\static_md\ + obj\HTTPSTimeServer\$(Configuration)\ + false + HTTPSTimeServerd + HTTPSTimeServerd + HTTPSTimeServerd + HTTPSTimeServer + HTTPSTimeServer + HTTPSTimeServer + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + EditAndContinue + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\HTTPSTimeServerd.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\HTTPSTimeServerd.pdb + Console + MachineX86 + %(AdditionalOptions) + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\HTTPSTimeServer.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX86 + %(AdditionalOptions) + + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + Level3 + EditAndContinue + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\static_mt\HTTPSTimeServerd.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\static_mt\HTTPSTimeServerd.pdb + Console + MachineX86 + %(AdditionalOptions) + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\static_mt\HTTPSTimeServer.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX86 + %(AdditionalOptions) + + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + EditAndContinue + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\static_md\HTTPSTimeServerd.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\static_md\HTTPSTimeServerd.pdb + Console + MachineX86 + %(AdditionalOptions) + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\static_md\HTTPSTimeServer.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX86 + %(AdditionalOptions) + + + + + + + + + + + diff --git a/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_vs100.vcxproj.filters b/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_vs100.vcxproj.filters new file mode 100644 index 000000000..88a8d8ea4 --- /dev/null +++ b/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_vs100.vcxproj.filters @@ -0,0 +1,21 @@ + + + + + {f2571faa-8abd-4a94-ae68-4337d1d87b1e} + + + {8c38bdcf-53e3-44c0-8303-c0380c3c65db} + + + + + Configuration Files + + + + + Source Files + + + \ No newline at end of file diff --git a/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_vs110.vcxproj b/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_vs110.vcxproj new file mode 100644 index 000000000..0a9029e2f --- /dev/null +++ b/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_vs110.vcxproj @@ -0,0 +1,314 @@ + + + + + debug_shared + Win32 + + + debug_static_md + Win32 + + + debug_static_mt + Win32 + + + release_shared + Win32 + + + release_static_md + Win32 + + + release_static_mt + Win32 + + + + HTTPSTimeServer + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9} + HTTPSTimeServer + Win32Proj + + + + Application + MultiByte + v110 + + + Application + MultiByte + v110 + + + Application + MultiByte + v110 + + + Application + MultiByte + v110 + + + Application + MultiByte + v110 + + + Application + MultiByte + v110 + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>11.0.61030.0 + HTTPSTimeServerd + HTTPSTimeServerd + HTTPSTimeServerd + HTTPSTimeServer + HTTPSTimeServer + HTTPSTimeServer + + + bin\ + obj\HTTPSTimeServer\$(Configuration)\ + true + + + bin\ + obj\HTTPSTimeServer\$(Configuration)\ + false + + + bin\static_mt\ + obj\HTTPSTimeServer\$(Configuration)\ + true + + + bin\static_mt\ + obj\HTTPSTimeServer\$(Configuration)\ + false + + + bin\static_md\ + obj\HTTPSTimeServer\$(Configuration)\ + true + + + bin\static_md\ + obj\HTTPSTimeServer\$(Configuration)\ + false + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + EditAndContinue + Default + + + ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\HTTPSTimeServerd.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\HTTPSTimeServerd.pdb + Console + MachineX86 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + + + ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\HTTPSTimeServer.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX86 + + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + Level3 + EditAndContinue + Default + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\static_mt\HTTPSTimeServerd.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\static_mt\HTTPSTimeServerd.pdb + Console + MachineX86 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\static_mt\HTTPSTimeServer.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX86 + + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + EditAndContinue + Default + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\static_md\HTTPSTimeServerd.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\static_md\HTTPSTimeServerd.pdb + Console + MachineX86 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\static_md\HTTPSTimeServer.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX86 + + + + + + + + + + + diff --git a/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_vs110.vcxproj.filters b/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_vs110.vcxproj.filters new file mode 100644 index 000000000..bcad15148 --- /dev/null +++ b/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_vs110.vcxproj.filters @@ -0,0 +1,21 @@ + + + + + {346bb323-6969-4d8c-bc60-1b4adbe5caf3} + + + {ecf50e28-00c4-4735-945b-804a2c3860e7} + + + + + Configuration Files + + + + + Source Files + + + \ No newline at end of file diff --git a/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_vs120.vcxproj b/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_vs120.vcxproj new file mode 100644 index 000000000..0c37b8cca --- /dev/null +++ b/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_vs120.vcxproj @@ -0,0 +1,314 @@ + + + + + debug_shared + Win32 + + + debug_static_md + Win32 + + + debug_static_mt + Win32 + + + release_shared + Win32 + + + release_static_md + Win32 + + + release_static_mt + Win32 + + + + HTTPSTimeServer + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9} + HTTPSTimeServer + Win32Proj + + + + Application + MultiByte + v120 + + + Application + MultiByte + v120 + + + Application + MultiByte + v120 + + + Application + MultiByte + v120 + + + Application + MultiByte + v120 + + + Application + MultiByte + v120 + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>12.0.30501.0 + HTTPSTimeServerd + HTTPSTimeServerd + HTTPSTimeServerd + HTTPSTimeServer + HTTPSTimeServer + HTTPSTimeServer + + + bin\ + obj\HTTPSTimeServer\$(Configuration)\ + true + + + bin\ + obj\HTTPSTimeServer\$(Configuration)\ + false + + + bin\static_mt\ + obj\HTTPSTimeServer\$(Configuration)\ + true + + + bin\static_mt\ + obj\HTTPSTimeServer\$(Configuration)\ + false + + + bin\static_md\ + obj\HTTPSTimeServer\$(Configuration)\ + true + + + bin\static_md\ + obj\HTTPSTimeServer\$(Configuration)\ + false + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + EditAndContinue + Default + + + ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\HTTPSTimeServerd.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\HTTPSTimeServerd.pdb + Console + MachineX86 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + + + ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\HTTPSTimeServer.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX86 + + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + Level3 + EditAndContinue + Default + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\static_mt\HTTPSTimeServerd.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\static_mt\HTTPSTimeServerd.pdb + Console + MachineX86 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\static_mt\HTTPSTimeServer.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX86 + + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + EditAndContinue + Default + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\static_md\HTTPSTimeServerd.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\static_md\HTTPSTimeServerd.pdb + Console + MachineX86 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\static_md\HTTPSTimeServer.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX86 + + + + + + + + + + + diff --git a/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_vs120.vcxproj.filters b/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_vs120.vcxproj.filters new file mode 100644 index 000000000..b3b9a24a3 --- /dev/null +++ b/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_vs120.vcxproj.filters @@ -0,0 +1,21 @@ + + + + + {353bb767-4abb-4af3-8775-ab27fc90c395} + + + {bc3901b4-168f-4941-8be6-9a12ada284a5} + + + + + Configuration Files + + + + + Source Files + + + \ No newline at end of file diff --git a/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_vs71.vcproj b/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_vs71.vcproj new file mode 100644 index 000000000..995edc8e9 --- /dev/null +++ b/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_vs71.vcproj @@ -0,0 +1,410 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_vs80.vcproj b/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_vs80.vcproj new file mode 100644 index 000000000..dfa71727e --- /dev/null +++ b/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_vs80.vcproj @@ -0,0 +1,450 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_vs90.vcproj b/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_vs90.vcproj new file mode 100644 index 000000000..0f7e7b34b --- /dev/null +++ b/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_vs90.vcproj @@ -0,0 +1,450 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_x64_vs100.vcxproj b/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_x64_vs100.vcxproj new file mode 100644 index 000000000..11d8e3ff9 --- /dev/null +++ b/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_x64_vs100.vcxproj @@ -0,0 +1,314 @@ + + + + + debug_shared + x64 + + + debug_static_md + x64 + + + debug_static_mt + x64 + + + release_shared + x64 + + + release_static_md + x64 + + + release_static_mt + x64 + + + + HTTPSTimeServer + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9} + HTTPSTimeServer + Win32Proj + + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + bin64\ + obj64\HTTPSTimeServer\$(Configuration)\ + true + bin64\ + obj64\HTTPSTimeServer\$(Configuration)\ + false + bin64\static_mt\ + obj64\HTTPSTimeServer\$(Configuration)\ + true + bin64\static_mt\ + obj64\HTTPSTimeServer\$(Configuration)\ + false + bin64\static_md\ + obj64\HTTPSTimeServer\$(Configuration)\ + true + bin64\static_md\ + obj64\HTTPSTimeServer\$(Configuration)\ + false + HTTPSTimeServerd + HTTPSTimeServerd + HTTPSTimeServerd + HTTPSTimeServer + HTTPSTimeServer + HTTPSTimeServer + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\HTTPSTimeServerd.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\HTTPSTimeServerd.pdb + Console + MachineX64 + %(AdditionalOptions) + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\HTTPSTimeServer.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX64 + %(AdditionalOptions) + + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + Level3 + ProgramDatabase + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\static_mt\HTTPSTimeServerd.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\static_mt\HTTPSTimeServerd.pdb + Console + MachineX64 + %(AdditionalOptions) + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\static_mt\HTTPSTimeServer.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX64 + %(AdditionalOptions) + + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\static_md\HTTPSTimeServerd.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\static_md\HTTPSTimeServerd.pdb + Console + MachineX64 + %(AdditionalOptions) + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\static_md\HTTPSTimeServer.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX64 + %(AdditionalOptions) + + + + + + + + + + + diff --git a/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_x64_vs100.vcxproj.filters b/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_x64_vs100.vcxproj.filters new file mode 100644 index 000000000..7095b5eeb --- /dev/null +++ b/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_x64_vs100.vcxproj.filters @@ -0,0 +1,21 @@ + + + + + {1a19a1db-18af-4e38-8410-66a40b10cddb} + + + {3430976e-a7b6-4e42-aa70-685a919965f8} + + + + + Configuration Files + + + + + Source Files + + + \ No newline at end of file diff --git a/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_x64_vs110.vcxproj b/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_x64_vs110.vcxproj new file mode 100644 index 000000000..d5f0ad702 --- /dev/null +++ b/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_x64_vs110.vcxproj @@ -0,0 +1,314 @@ + + + + + debug_shared + x64 + + + debug_static_md + x64 + + + debug_static_mt + x64 + + + release_shared + x64 + + + release_static_md + x64 + + + release_static_mt + x64 + + + + HTTPSTimeServer + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9} + HTTPSTimeServer + Win32Proj + + + + Application + MultiByte + v110 + + + Application + MultiByte + v110 + + + Application + MultiByte + v110 + + + Application + MultiByte + v110 + + + Application + MultiByte + v110 + + + Application + MultiByte + v110 + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>11.0.61030.0 + HTTPSTimeServerd + HTTPSTimeServerd + HTTPSTimeServerd + HTTPSTimeServer + HTTPSTimeServer + HTTPSTimeServer + + + bin64\ + obj64\HTTPSTimeServer\$(Configuration)\ + true + + + bin64\ + obj64\HTTPSTimeServer\$(Configuration)\ + false + + + bin64\static_mt\ + obj64\HTTPSTimeServer\$(Configuration)\ + true + + + bin64\static_mt\ + obj64\HTTPSTimeServer\$(Configuration)\ + false + + + bin64\static_md\ + obj64\HTTPSTimeServer\$(Configuration)\ + true + + + bin64\static_md\ + obj64\HTTPSTimeServer\$(Configuration)\ + false + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + + + ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\HTTPSTimeServerd.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\HTTPSTimeServerd.pdb + Console + MachineX64 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + + + ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\HTTPSTimeServer.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX64 + + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\static_mt\HTTPSTimeServerd.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\static_mt\HTTPSTimeServerd.pdb + Console + MachineX64 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\static_mt\HTTPSTimeServer.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX64 + + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\static_md\HTTPSTimeServerd.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\static_md\HTTPSTimeServerd.pdb + Console + MachineX64 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\static_md\HTTPSTimeServer.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX64 + + + + + + + + + + + diff --git a/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_x64_vs110.vcxproj.filters b/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_x64_vs110.vcxproj.filters new file mode 100644 index 000000000..39a970be1 --- /dev/null +++ b/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_x64_vs110.vcxproj.filters @@ -0,0 +1,21 @@ + + + + + {bf4c035f-1c9e-4742-ab28-feaa611814b1} + + + {5d7de72c-bedb-4c9b-abd8-ddd94c5d597a} + + + + + Configuration Files + + + + + Source Files + + + \ No newline at end of file diff --git a/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_x64_vs120.vcxproj b/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_x64_vs120.vcxproj new file mode 100644 index 000000000..eb4997129 --- /dev/null +++ b/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_x64_vs120.vcxproj @@ -0,0 +1,314 @@ + + + + + debug_shared + x64 + + + debug_static_md + x64 + + + debug_static_mt + x64 + + + release_shared + x64 + + + release_static_md + x64 + + + release_static_mt + x64 + + + + HTTPSTimeServer + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9} + HTTPSTimeServer + Win32Proj + + + + Application + MultiByte + v120 + + + Application + MultiByte + v120 + + + Application + MultiByte + v120 + + + Application + MultiByte + v120 + + + Application + MultiByte + v120 + + + Application + MultiByte + v120 + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>12.0.30501.0 + HTTPSTimeServerd + HTTPSTimeServerd + HTTPSTimeServerd + HTTPSTimeServer + HTTPSTimeServer + HTTPSTimeServer + + + bin64\ + obj64\HTTPSTimeServer\$(Configuration)\ + true + + + bin64\ + obj64\HTTPSTimeServer\$(Configuration)\ + false + + + bin64\static_mt\ + obj64\HTTPSTimeServer\$(Configuration)\ + true + + + bin64\static_mt\ + obj64\HTTPSTimeServer\$(Configuration)\ + false + + + bin64\static_md\ + obj64\HTTPSTimeServer\$(Configuration)\ + true + + + bin64\static_md\ + obj64\HTTPSTimeServer\$(Configuration)\ + false + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + + + ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\HTTPSTimeServerd.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\HTTPSTimeServerd.pdb + Console + MachineX64 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + + + ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\HTTPSTimeServer.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX64 + + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\static_mt\HTTPSTimeServerd.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\static_mt\HTTPSTimeServerd.pdb + Console + MachineX64 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\static_mt\HTTPSTimeServer.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX64 + + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\static_md\HTTPSTimeServerd.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\static_md\HTTPSTimeServerd.pdb + Console + MachineX64 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\static_md\HTTPSTimeServer.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX64 + + + + + + + + + + + diff --git a/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_x64_vs120.vcxproj.filters b/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_x64_vs120.vcxproj.filters new file mode 100644 index 000000000..aed6ff95c --- /dev/null +++ b/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_x64_vs120.vcxproj.filters @@ -0,0 +1,21 @@ + + + + + {680084a5-9cbb-439c-849e-341ac15e39a7} + + + {175d9d0f-47c6-49e6-91ea-afa39fbd6ce4} + + + + + Configuration Files + + + + + Source Files + + + \ No newline at end of file diff --git a/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_x64_vs90.vcproj b/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_x64_vs90.vcproj new file mode 100644 index 000000000..9756d5442 --- /dev/null +++ b/NetSSL_Win/samples/HTTPSTimeServer/HTTPSTimeServer_x64_vs90.vcproj @@ -0,0 +1,450 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NetSSL_Win/samples/HTTPSTimeServer/any.pfx b/NetSSL_Win/samples/HTTPSTimeServer/any.pfx new file mode 100644 index 000000000..cc0ad5d17 Binary files /dev/null and b/NetSSL_Win/samples/HTTPSTimeServer/any.pfx differ diff --git a/NetSSL_Win/samples/HTTPSTimeServer/src/HTTPSTimeServer.cpp b/NetSSL_Win/samples/HTTPSTimeServer/src/HTTPSTimeServer.cpp new file mode 100644 index 000000000..2c6dc7b95 --- /dev/null +++ b/NetSSL_Win/samples/HTTPSTimeServer/src/HTTPSTimeServer.cpp @@ -0,0 +1,233 @@ +// +// TimeServer.cpp +// +// $Id: //poco/1.4/NetSSL_OpenSSL/samples/HTTPSTimeServer/src/HTTPSTimeServer.cpp#2 $ +// +// This sample demonstrates the HTTPServer and related classes. +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "Poco/Net/HTTPServer.h" +#include "Poco/Net/HTTPRequestHandler.h" +#include "Poco/Net/HTTPRequestHandlerFactory.h" +#include "Poco/Net/HTTPServerParams.h" +#include "Poco/Net/HTTPServerRequestImpl.h" +#include "Poco/Net/HTTPServerResponse.h" +#include "Poco/Net/HTTPServerParams.h" +#include "Poco/Net/SecureStreamSocket.h" +#include "Poco/Net/SecureServerSocket.h" +#include "Poco/Net/X509Certificate.h" +#include "Poco/Timestamp.h" +#include "Poco/DateTimeFormatter.h" +#include "Poco/DateTimeFormat.h" +#include "Poco/Exception.h" +#include "Poco/SharedPtr.h" +#include "Poco/Util/ServerApplication.h" +#include "Poco/Util/Option.h" +#include "Poco/Util/OptionSet.h" +#include "Poco/Util/HelpFormatter.h" +#include "Poco/Net/SSLManager.h" +#include "Poco/Net/AcceptCertificateHandler.h" +#include + + +using Poco::Net::SecureServerSocket; +using Poco::Net::SecureStreamSocket; +using Poco::Net::HTTPRequestHandler; +using Poco::Net::HTTPRequestHandlerFactory; +using Poco::Net::HTTPServer; +using Poco::Net::HTTPServerRequest; +using Poco::Net::HTTPServerRequestImpl; +using Poco::Net::X509Certificate; +using Poco::Net::HTTPServerResponse; +using Poco::Net::HTTPServerParams; +using Poco::Timestamp; +using Poco::DateTimeFormatter; +using Poco::DateTimeFormat; +using Poco::SharedPtr; +using Poco::Util::ServerApplication; +using Poco::Util::Application; +using Poco::Util::Option; +using Poco::Util::OptionSet; +using Poco::Util::HelpFormatter; +using Poco::Net::SSLManager; +using Poco::Net::Context; +using Poco::Net::InvalidCertificateHandler; +using Poco::Net::AcceptCertificateHandler; + + +class TimeRequestHandler: public HTTPRequestHandler + /// Return a HTML document with the current date and time. +{ +public: + TimeRequestHandler(const std::string& format): + _format(format) + { + } + + void handleRequest(HTTPServerRequest& request, HTTPServerResponse& response) + { + Application& app = Application::instance(); + app.logger().information("Request from " + request.clientAddress().toString()); + + SecureStreamSocket socket = static_cast(request).socket(); + if (socket.havePeerCertificate()) + { + X509Certificate cert = socket.peerCertificate(); + app.logger().information("Client certificate: " + cert.subjectName()); + } + else + { + app.logger().information("No client certificate available."); + } + + Timestamp now; + std::string dt(DateTimeFormatter::format(now, _format)); + + response.setChunkedTransferEncoding(true); + response.setContentType("text/html"); + + std::ostream& ostr = response.send(); + ostr << "HTTPTimeServer powered by POCO C++ Libraries"; + ostr << ""; + ostr << "

    "; + ostr << dt; + ostr << "

    "; + } + +private: + std::string _format; +}; + + +class TimeRequestHandlerFactory: public HTTPRequestHandlerFactory +{ +public: + TimeRequestHandlerFactory(const std::string& format): + _format(format) + { + } + + HTTPRequestHandler* createRequestHandler(const HTTPServerRequest& request) + { + if (request.getURI() == "/") + return new TimeRequestHandler(_format); + else + return 0; + } + +private: + std::string _format; +}; + + +class HTTPSTimeServer: public Poco::Util::ServerApplication + /// The main application class. + /// + /// This class handles command-line arguments and + /// configuration files. + /// Start the HTTPTimeServer executable with the help + /// option (/help on Windows, --help on Unix) for + /// the available command line options. + /// + /// To use the sample configuration file (HTTPTimeServer.properties), + /// copy the file to the directory where the HTTPTimeServer executable + /// resides. If you start the debug version of the HTTPTimeServer + /// (HTTPTimeServerd[.exe]), you must also create a copy of the configuration + /// file named HTTPTimeServerd.properties. In the configuration file, you + /// can specify the port on which the server is listening (default + /// 9443) and the format of the date/time string sent back to the client. + /// + /// To test the TimeServer you can use any web browser (https://localhost:9443/). +{ +public: + HTTPSTimeServer(): _helpRequested(false) + { + Poco::Net::initializeSSL(); + } + + ~HTTPSTimeServer() + { + Poco::Net::uninitializeSSL(); + } + +protected: + void initialize(Application& self) + { + loadConfiguration(); // load default configuration files, if present + ServerApplication::initialize(self); + } + + void uninitialize() + { + ServerApplication::uninitialize(); + } + + void defineOptions(OptionSet& options) + { + ServerApplication::defineOptions(options); + + options.addOption( + Option("help", "h", "display help information on command line arguments") + .required(false) + .repeatable(false)); + } + + void handleOption(const std::string& name, const std::string& value) + { + ServerApplication::handleOption(name, value); + + if (name == "help") + _helpRequested = true; + } + + void displayHelp() + { + HelpFormatter helpFormatter(options()); + helpFormatter.setCommand(commandName()); + helpFormatter.setUsage("OPTIONS"); + helpFormatter.setHeader("A web server that serves the current date and time."); + helpFormatter.format(std::cout); + } + + int main(const std::vector& args) + { + if (_helpRequested) + { + displayHelp(); + } + else + { + // get parameters from configuration file + unsigned short port = (unsigned short) config().getInt("HTTPSTimeServer.port", 9443); + std::string format(config().getString("HTTPSTimeServer.format", DateTimeFormat::SORTABLE_FORMAT)); + + // set-up a server socket + SecureServerSocket svs(port); + // set-up a HTTPServer instance + HTTPServer srv(new TimeRequestHandlerFactory(format), svs, new HTTPServerParams); + // start the HTTPServer + srv.start(); + // wait for CTRL-C or kill + waitForTerminationRequest(); + // Stop the HTTPServer + srv.stop(); + } + return Application::EXIT_OK; + } + +private: + bool _helpRequested; +}; + + +int main(int argc, char** argv) +{ + HTTPSTimeServer app; + return app.run(argc, argv); +} diff --git a/NetSSL_Win/samples/Mail/CMakeLists.txt b/NetSSL_Win/samples/Mail/CMakeLists.txt new file mode 100644 index 000000000..e9126a607 --- /dev/null +++ b/NetSSL_Win/samples/Mail/CMakeLists.txt @@ -0,0 +1,7 @@ +set(SAMPLE_NAME "Mail-ssl") + +set(LOCAL_SRCS "") +aux_source_directory(src LOCAL_SRCS) + +add_executable( ${SAMPLE_NAME} ${LOCAL_SRCS} ) +target_link_libraries( ${SAMPLE_NAME} PocoNetSSLWin PocoCrypto PocoUtil PocoNet PocoXML PocoFoundation ) diff --git a/NetSSL_Win/samples/Mail/Mail.progen b/NetSSL_Win/samples/Mail/Mail.progen new file mode 100644 index 000000000..b12a664bb --- /dev/null +++ b/NetSSL_Win/samples/Mail/Mail.progen @@ -0,0 +1,18 @@ +vc.project.guid = ${vc.project.guidFromName} +vc.project.name = ${vc.project.baseName} +vc.project.target = ${vc.project.name} +vc.project.type = executable +vc.project.pocobase = ..\\..\\.. +vc.project.platforms = Win32, x64, WinCE +vc.project.configurations = debug_shared, release_shared, debug_static_mt, release_static_mt, debug_static_md, release_static_md +vc.project.prototype = ${vc.project.name}_vs90.vcproj +vc.project.compiler.include = ..\\..\\..\\Foundation\\include;..\\..\\..\\XML\\include;..\\..\\..\\Util\\include;..\\..\\..\\Net\\include;..\\..\\..\\NetSSL_Win\\include +vc.project.linker.dependencies.Win32 = ws2_32.lib iphlpapi.lib +vc.project.linker.dependencies.x64 = ws2_32.lib iphlpapi.lib +vc.project.linker.dependencies.WinCE = ws2.lib iphlpapi.lib +vc.project.linker.dependencies.debug_shared = +vc.project.linker.dependencies.release_shared = +vc.project.linker.dependencies.debug_static_md = Crypt32.lib +vc.project.linker.dependencies.release_static_md = Crypt32.lib +vc.project.linker.dependencies.debug_static_mt = Crypt32.lib +vc.project.linker.dependencies.release_static_mt = Crypt32.lib diff --git a/NetSSL_Win/samples/Mail/Mail_CE_vs90.vcproj b/NetSSL_Win/samples/Mail/Mail_CE_vs90.vcproj new file mode 100644 index 000000000..1c0f19a35 --- /dev/null +++ b/NetSSL_Win/samples/Mail/Mail_CE_vs90.vcproj @@ -0,0 +1,474 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NetSSL_Win/samples/Mail/Mail_WEC2013_vs110.vcxproj b/NetSSL_Win/samples/Mail/Mail_WEC2013_vs110.vcxproj new file mode 100644 index 000000000..f0fee73ea --- /dev/null +++ b/NetSSL_Win/samples/Mail/Mail_WEC2013_vs110.vcxproj @@ -0,0 +1,299 @@ + + + + + debug_shared + SDK_AM335X_SK_WEC2013_V300 + + + debug_static_md + SDK_AM335X_SK_WEC2013_V300 + + + debug_static_mt + SDK_AM335X_SK_WEC2013_V300 + + + release_shared + SDK_AM335X_SK_WEC2013_V300 + + + release_static_md + SDK_AM335X_SK_WEC2013_V300 + + + release_static_mt + SDK_AM335X_SK_WEC2013_V300 + + + + Mail + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA} + en-US + 11.0 + true + SDK_AM335X_SK_WEC2013_V300 + CE800 + + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>11.0.61030.0 + Maild + Maild + Maild + Mail + Mail + Mail + + + bin\$(Platform)\shared\ + obj\Mail\$(Platform)\$(Configuration)\ + true + + + bin\$(Platform)\shared\ + obj\Mail\$(Platform)\$(Configuration)\ + false + + + bin\$(Platform)\static_mt\ + obj\Mail\$(Platform)\$(Configuration)\ + true + + + bin\$(Platform)\static_mt\ + obj\Mail\$(Platform)\$(Configuration)\ + false + + + bin\$(Platform)\static_md\ + obj\Mail\$(Platform)\$(Configuration)\ + true + + + bin\$(Platform)\static_md\ + obj\Mail\$(Platform)\$(Configuration)\ + false + + + + Disabled + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + _DEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebugDLL + true + true + + Level3 + ProgramDatabase + Default + + + ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\shared\Maild.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + true + bin\$(Platform)\shared\Maild.pdb + mainCRTStartup + WindowsCE + + + + + Disabled + true + Speed + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + NDEBUG;$(ProjectName)_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDLL + false + true + Level3 + ProgramDatabase + + + ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\shared\Mail.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + false + + true + true + mainCRTStartup + WindowsCE + + + + + Disabled + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + _DEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebug + true + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;Crypt32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\static_mt\Maild.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + true + bin\$(Platform)\static_mt\Maild.pdb + mainCRTStartup + WindowsCE + + + + + Disabled + Default + true + Speed + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + NDEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreaded + false + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;Crypt32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\static_mt\Mail.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + false + + true + true + mainCRTStartup + WindowsCE + + + + + Disabled + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + _DEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebugDLL + true + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;Crypt32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\static_md\Maild.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + true + bin\$(Platform)\static_md\Maild.pdb + mainCRTStartup + WindowsCE + + + + + Disabled + Default + true + Speed + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + NDEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDLL + false + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;Crypt32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\static_md\Mail.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + false + + true + true + mainCRTStartup + WindowsCE + + + + + + + + + + + diff --git a/NetSSL_Win/samples/Mail/Mail_WEC2013_vs110.vcxproj.filters b/NetSSL_Win/samples/Mail/Mail_WEC2013_vs110.vcxproj.filters new file mode 100644 index 000000000..fcad0fbbc --- /dev/null +++ b/NetSSL_Win/samples/Mail/Mail_WEC2013_vs110.vcxproj.filters @@ -0,0 +1,18 @@ + + + + + {76c7dacb-e657-43e9-8bcd-ca0841cb76ee} + + + + + Source Files + + + + + Source Files + + + \ No newline at end of file diff --git a/NetSSL_Win/samples/Mail/Mail_WEC2013_vs120.vcxproj b/NetSSL_Win/samples/Mail/Mail_WEC2013_vs120.vcxproj new file mode 100644 index 000000000..c42851a54 --- /dev/null +++ b/NetSSL_Win/samples/Mail/Mail_WEC2013_vs120.vcxproj @@ -0,0 +1,299 @@ + + + + + debug_shared + SDK_AM335X_SK_WEC2013_V310 + + + debug_static_md + SDK_AM335X_SK_WEC2013_V310 + + + debug_static_mt + SDK_AM335X_SK_WEC2013_V310 + + + release_shared + SDK_AM335X_SK_WEC2013_V310 + + + release_static_md + SDK_AM335X_SK_WEC2013_V310 + + + release_static_mt + SDK_AM335X_SK_WEC2013_V310 + + + + Mail + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA} + en-US + 11.0 + true + SDK_AM335X_SK_WEC2013_V310 + CE800 + + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>12.0.30501.0 + Maild + Maild + Maild + Mail + Mail + Mail + + + bin\$(Platform)\shared\ + obj\Mail\$(Platform)\$(Configuration)\ + true + + + bin\$(Platform)\shared\ + obj\Mail\$(Platform)\$(Configuration)\ + false + + + bin\$(Platform)\static_mt\ + obj\Mail\$(Platform)\$(Configuration)\ + true + + + bin\$(Platform)\static_mt\ + obj\Mail\$(Platform)\$(Configuration)\ + false + + + bin\$(Platform)\static_md\ + obj\Mail\$(Platform)\$(Configuration)\ + true + + + bin\$(Platform)\static_md\ + obj\Mail\$(Platform)\$(Configuration)\ + false + + + + Disabled + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + _DEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebugDLL + true + true + + Level3 + ProgramDatabase + Default + + + ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\shared\Maild.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + true + bin\$(Platform)\shared\Maild.pdb + mainCRTStartup + WindowsCE + + + + + Disabled + true + Speed + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + NDEBUG;$(ProjectName)_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDLL + false + true + Level3 + ProgramDatabase + + + ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\shared\Mail.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + false + + true + true + mainCRTStartup + WindowsCE + + + + + Disabled + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + _DEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebug + true + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;Crypt32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\static_mt\Maild.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + true + bin\$(Platform)\static_mt\Maild.pdb + mainCRTStartup + WindowsCE + + + + + Disabled + Default + true + Speed + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + NDEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreaded + false + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;Crypt32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\static_mt\Mail.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + false + + true + true + mainCRTStartup + WindowsCE + + + + + Disabled + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + _DEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebugDLL + true + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;Crypt32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\static_md\Maild.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + true + bin\$(Platform)\static_md\Maild.pdb + mainCRTStartup + WindowsCE + + + + + Disabled + Default + true + Speed + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + NDEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDLL + false + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;Crypt32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\static_md\Mail.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + false + + true + true + mainCRTStartup + WindowsCE + + + + + + + + + + + diff --git a/NetSSL_Win/samples/Mail/Mail_WEC2013_vs120.vcxproj.filters b/NetSSL_Win/samples/Mail/Mail_WEC2013_vs120.vcxproj.filters new file mode 100644 index 000000000..e9bc103ac --- /dev/null +++ b/NetSSL_Win/samples/Mail/Mail_WEC2013_vs120.vcxproj.filters @@ -0,0 +1,18 @@ + + + + + {ff5d6427-7ea7-4282-8c17-113d41402d47} + + + + + Source Files + + + + + Source Files + + + \ No newline at end of file diff --git a/NetSSL_Win/samples/Mail/Mail_vs100.vcxproj b/NetSSL_Win/samples/Mail/Mail_vs100.vcxproj new file mode 100644 index 000000000..400ef464c --- /dev/null +++ b/NetSSL_Win/samples/Mail/Mail_vs100.vcxproj @@ -0,0 +1,314 @@ + + + + + debug_shared + Win32 + + + debug_static_md + Win32 + + + debug_static_mt + Win32 + + + release_shared + Win32 + + + release_static_md + Win32 + + + release_static_mt + Win32 + + + + Mail + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA} + Mail + Win32Proj + + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + bin\ + obj\Mail\$(Configuration)\ + true + bin\ + obj\Mail\$(Configuration)\ + false + bin\static_mt\ + obj\Mail\$(Configuration)\ + true + bin\static_mt\ + obj\Mail\$(Configuration)\ + false + bin\static_md\ + obj\Mail\$(Configuration)\ + true + bin\static_md\ + obj\Mail\$(Configuration)\ + false + Maild + Maild + Maild + Mail + Mail + Mail + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + EditAndContinue + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\Maild.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\Maild.pdb + Console + MachineX86 + %(AdditionalOptions) + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\Mail.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX86 + %(AdditionalOptions) + + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + Level3 + EditAndContinue + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\static_mt\Maild.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\static_mt\Maild.pdb + Console + MachineX86 + %(AdditionalOptions) + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\static_mt\Mail.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX86 + %(AdditionalOptions) + + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + EditAndContinue + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\static_md\Maild.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\static_md\Maild.pdb + Console + MachineX86 + %(AdditionalOptions) + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\static_md\Mail.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX86 + %(AdditionalOptions) + + + + + + + + + + + diff --git a/NetSSL_Win/samples/Mail/Mail_vs100.vcxproj.filters b/NetSSL_Win/samples/Mail/Mail_vs100.vcxproj.filters new file mode 100644 index 000000000..1659af521 --- /dev/null +++ b/NetSSL_Win/samples/Mail/Mail_vs100.vcxproj.filters @@ -0,0 +1,18 @@ + + + + + {d13083e5-1df7-479f-902d-3ee05cd1e567} + + + + + Source Files + + + + + Source Files + + + \ No newline at end of file diff --git a/NetSSL_Win/samples/Mail/Mail_vs110.vcxproj b/NetSSL_Win/samples/Mail/Mail_vs110.vcxproj new file mode 100644 index 000000000..0a62ab616 --- /dev/null +++ b/NetSSL_Win/samples/Mail/Mail_vs110.vcxproj @@ -0,0 +1,314 @@ + + + + + debug_shared + Win32 + + + debug_static_md + Win32 + + + debug_static_mt + Win32 + + + release_shared + Win32 + + + release_static_md + Win32 + + + release_static_mt + Win32 + + + + Mail + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA} + Mail + Win32Proj + + + + Application + MultiByte + v110 + + + Application + MultiByte + v110 + + + Application + MultiByte + v110 + + + Application + MultiByte + v110 + + + Application + MultiByte + v110 + + + Application + MultiByte + v110 + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>11.0.61030.0 + Maild + Maild + Maild + Mail + Mail + Mail + + + bin\ + obj\Mail\$(Configuration)\ + true + + + bin\ + obj\Mail\$(Configuration)\ + false + + + bin\static_mt\ + obj\Mail\$(Configuration)\ + true + + + bin\static_mt\ + obj\Mail\$(Configuration)\ + false + + + bin\static_md\ + obj\Mail\$(Configuration)\ + true + + + bin\static_md\ + obj\Mail\$(Configuration)\ + false + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + EditAndContinue + Default + + + ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\Maild.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\Maild.pdb + Console + MachineX86 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + + + ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\Mail.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX86 + + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + Level3 + EditAndContinue + Default + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\static_mt\Maild.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\static_mt\Maild.pdb + Console + MachineX86 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\static_mt\Mail.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX86 + + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + EditAndContinue + Default + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\static_md\Maild.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\static_md\Maild.pdb + Console + MachineX86 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\static_md\Mail.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX86 + + + + + + + + + + + diff --git a/NetSSL_Win/samples/Mail/Mail_vs110.vcxproj.filters b/NetSSL_Win/samples/Mail/Mail_vs110.vcxproj.filters new file mode 100644 index 000000000..d70958435 --- /dev/null +++ b/NetSSL_Win/samples/Mail/Mail_vs110.vcxproj.filters @@ -0,0 +1,18 @@ + + + + + {d8ea9a79-4144-4b03-9618-defc3e5f5969} + + + + + Source Files + + + + + Source Files + + + \ No newline at end of file diff --git a/NetSSL_Win/samples/Mail/Mail_vs120.vcxproj b/NetSSL_Win/samples/Mail/Mail_vs120.vcxproj new file mode 100644 index 000000000..c2cdb389e --- /dev/null +++ b/NetSSL_Win/samples/Mail/Mail_vs120.vcxproj @@ -0,0 +1,314 @@ + + + + + debug_shared + Win32 + + + debug_static_md + Win32 + + + debug_static_mt + Win32 + + + release_shared + Win32 + + + release_static_md + Win32 + + + release_static_mt + Win32 + + + + Mail + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA} + Mail + Win32Proj + + + + Application + MultiByte + v120 + + + Application + MultiByte + v120 + + + Application + MultiByte + v120 + + + Application + MultiByte + v120 + + + Application + MultiByte + v120 + + + Application + MultiByte + v120 + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>12.0.30501.0 + Maild + Maild + Maild + Mail + Mail + Mail + + + bin\ + obj\Mail\$(Configuration)\ + true + + + bin\ + obj\Mail\$(Configuration)\ + false + + + bin\static_mt\ + obj\Mail\$(Configuration)\ + true + + + bin\static_mt\ + obj\Mail\$(Configuration)\ + false + + + bin\static_md\ + obj\Mail\$(Configuration)\ + true + + + bin\static_md\ + obj\Mail\$(Configuration)\ + false + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + EditAndContinue + Default + + + ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\Maild.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\Maild.pdb + Console + MachineX86 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + + + ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\Mail.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX86 + + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + Level3 + EditAndContinue + Default + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\static_mt\Maild.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\static_mt\Maild.pdb + Console + MachineX86 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\static_mt\Mail.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX86 + + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + EditAndContinue + Default + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\static_md\Maild.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\static_md\Maild.pdb + Console + MachineX86 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\static_md\Mail.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX86 + + + + + + + + + + + diff --git a/NetSSL_Win/samples/Mail/Mail_vs120.vcxproj.filters b/NetSSL_Win/samples/Mail/Mail_vs120.vcxproj.filters new file mode 100644 index 000000000..f4bbaf569 --- /dev/null +++ b/NetSSL_Win/samples/Mail/Mail_vs120.vcxproj.filters @@ -0,0 +1,18 @@ + + + + + {6911915b-5e4d-4823-a065-83630f924708} + + + + + Source Files + + + + + Source Files + + + \ No newline at end of file diff --git a/NetSSL_Win/samples/Mail/Mail_vs71.vcproj b/NetSSL_Win/samples/Mail/Mail_vs71.vcproj new file mode 100644 index 000000000..cfcbf5564 --- /dev/null +++ b/NetSSL_Win/samples/Mail/Mail_vs71.vcproj @@ -0,0 +1,407 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NetSSL_Win/samples/Mail/Mail_vs80.vcproj b/NetSSL_Win/samples/Mail/Mail_vs80.vcproj new file mode 100644 index 000000000..905dbce8a --- /dev/null +++ b/NetSSL_Win/samples/Mail/Mail_vs80.vcproj @@ -0,0 +1,447 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NetSSL_Win/samples/Mail/Mail_vs90.vcproj b/NetSSL_Win/samples/Mail/Mail_vs90.vcproj new file mode 100644 index 000000000..5c7aa2c74 --- /dev/null +++ b/NetSSL_Win/samples/Mail/Mail_vs90.vcproj @@ -0,0 +1,447 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NetSSL_Win/samples/Mail/Mail_x64_vs100.vcxproj b/NetSSL_Win/samples/Mail/Mail_x64_vs100.vcxproj new file mode 100644 index 000000000..5fab36709 --- /dev/null +++ b/NetSSL_Win/samples/Mail/Mail_x64_vs100.vcxproj @@ -0,0 +1,314 @@ + + + + + debug_shared + x64 + + + debug_static_md + x64 + + + debug_static_mt + x64 + + + release_shared + x64 + + + release_static_md + x64 + + + release_static_mt + x64 + + + + Mail + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA} + Mail + Win32Proj + + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + bin64\ + obj64\Mail\$(Configuration)\ + true + bin64\ + obj64\Mail\$(Configuration)\ + false + bin64\static_mt\ + obj64\Mail\$(Configuration)\ + true + bin64\static_mt\ + obj64\Mail\$(Configuration)\ + false + bin64\static_md\ + obj64\Mail\$(Configuration)\ + true + bin64\static_md\ + obj64\Mail\$(Configuration)\ + false + Maild + Maild + Maild + Mail + Mail + Mail + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\Maild.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\Maild.pdb + Console + MachineX64 + %(AdditionalOptions) + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\Mail.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX64 + %(AdditionalOptions) + + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + Level3 + ProgramDatabase + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\static_mt\Maild.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\static_mt\Maild.pdb + Console + MachineX64 + %(AdditionalOptions) + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\static_mt\Mail.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX64 + %(AdditionalOptions) + + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\static_md\Maild.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\static_md\Maild.pdb + Console + MachineX64 + %(AdditionalOptions) + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\static_md\Mail.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX64 + %(AdditionalOptions) + + + + + + + + + + + diff --git a/NetSSL_Win/samples/Mail/Mail_x64_vs100.vcxproj.filters b/NetSSL_Win/samples/Mail/Mail_x64_vs100.vcxproj.filters new file mode 100644 index 000000000..95a9e914f --- /dev/null +++ b/NetSSL_Win/samples/Mail/Mail_x64_vs100.vcxproj.filters @@ -0,0 +1,18 @@ + + + + + {eb99ce10-00ae-4462-baad-432b8584ab2b} + + + + + Source Files + + + + + Source Files + + + \ No newline at end of file diff --git a/NetSSL_Win/samples/Mail/Mail_x64_vs110.vcxproj b/NetSSL_Win/samples/Mail/Mail_x64_vs110.vcxproj new file mode 100644 index 000000000..e4ec3cc4c --- /dev/null +++ b/NetSSL_Win/samples/Mail/Mail_x64_vs110.vcxproj @@ -0,0 +1,314 @@ + + + + + debug_shared + x64 + + + debug_static_md + x64 + + + debug_static_mt + x64 + + + release_shared + x64 + + + release_static_md + x64 + + + release_static_mt + x64 + + + + Mail + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA} + Mail + Win32Proj + + + + Application + MultiByte + v110 + + + Application + MultiByte + v110 + + + Application + MultiByte + v110 + + + Application + MultiByte + v110 + + + Application + MultiByte + v110 + + + Application + MultiByte + v110 + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>11.0.61030.0 + Maild + Maild + Maild + Mail + Mail + Mail + + + bin64\ + obj64\Mail\$(Configuration)\ + true + + + bin64\ + obj64\Mail\$(Configuration)\ + false + + + bin64\static_mt\ + obj64\Mail\$(Configuration)\ + true + + + bin64\static_mt\ + obj64\Mail\$(Configuration)\ + false + + + bin64\static_md\ + obj64\Mail\$(Configuration)\ + true + + + bin64\static_md\ + obj64\Mail\$(Configuration)\ + false + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + + + ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\Maild.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\Maild.pdb + Console + MachineX64 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + + + ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\Mail.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX64 + + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\static_mt\Maild.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\static_mt\Maild.pdb + Console + MachineX64 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\static_mt\Mail.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX64 + + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\static_md\Maild.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\static_md\Maild.pdb + Console + MachineX64 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\static_md\Mail.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX64 + + + + + + + + + + + diff --git a/NetSSL_Win/samples/Mail/Mail_x64_vs110.vcxproj.filters b/NetSSL_Win/samples/Mail/Mail_x64_vs110.vcxproj.filters new file mode 100644 index 000000000..ff497fbb8 --- /dev/null +++ b/NetSSL_Win/samples/Mail/Mail_x64_vs110.vcxproj.filters @@ -0,0 +1,18 @@ + + + + + {6559efeb-e6cc-4131-8ca1-7ad0f7ddebb6} + + + + + Source Files + + + + + Source Files + + + \ No newline at end of file diff --git a/NetSSL_Win/samples/Mail/Mail_x64_vs120.vcxproj b/NetSSL_Win/samples/Mail/Mail_x64_vs120.vcxproj new file mode 100644 index 000000000..dddb8f13b --- /dev/null +++ b/NetSSL_Win/samples/Mail/Mail_x64_vs120.vcxproj @@ -0,0 +1,314 @@ + + + + + debug_shared + x64 + + + debug_static_md + x64 + + + debug_static_mt + x64 + + + release_shared + x64 + + + release_static_md + x64 + + + release_static_mt + x64 + + + + Mail + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA} + Mail + Win32Proj + + + + Application + MultiByte + v120 + + + Application + MultiByte + v120 + + + Application + MultiByte + v120 + + + Application + MultiByte + v120 + + + Application + MultiByte + v120 + + + Application + MultiByte + v120 + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>12.0.30501.0 + Maild + Maild + Maild + Mail + Mail + Mail + + + bin64\ + obj64\Mail\$(Configuration)\ + true + + + bin64\ + obj64\Mail\$(Configuration)\ + false + + + bin64\static_mt\ + obj64\Mail\$(Configuration)\ + true + + + bin64\static_mt\ + obj64\Mail\$(Configuration)\ + false + + + bin64\static_md\ + obj64\Mail\$(Configuration)\ + true + + + bin64\static_md\ + obj64\Mail\$(Configuration)\ + false + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + + + ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\Maild.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\Maild.pdb + Console + MachineX64 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + + + ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\Mail.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX64 + + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\static_mt\Maild.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\static_mt\Maild.pdb + Console + MachineX64 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\static_mt\Mail.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX64 + + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\static_md\Maild.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\static_md\Maild.pdb + Console + MachineX64 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\static_md\Mail.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX64 + + + + + + + + + + + diff --git a/NetSSL_Win/samples/Mail/Mail_x64_vs120.vcxproj.filters b/NetSSL_Win/samples/Mail/Mail_x64_vs120.vcxproj.filters new file mode 100644 index 000000000..eea5ca407 --- /dev/null +++ b/NetSSL_Win/samples/Mail/Mail_x64_vs120.vcxproj.filters @@ -0,0 +1,18 @@ + + + + + {69eac072-94c3-4467-8868-1417e517aa4b} + + + + + Source Files + + + + + Source Files + + + \ No newline at end of file diff --git a/NetSSL_Win/samples/Mail/Mail_x64_vs90.vcproj b/NetSSL_Win/samples/Mail/Mail_x64_vs90.vcproj new file mode 100644 index 000000000..36aa73c06 --- /dev/null +++ b/NetSSL_Win/samples/Mail/Mail_x64_vs90.vcproj @@ -0,0 +1,447 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NetSSL_Win/samples/Mail/src/Mail.cpp b/NetSSL_Win/samples/Mail/src/Mail.cpp new file mode 100644 index 000000000..cb37e0961 --- /dev/null +++ b/NetSSL_Win/samples/Mail/src/Mail.cpp @@ -0,0 +1,118 @@ +// +// Mail.cpp +// +// $Id: //poco/1.4/NetSSL_OpenSSL/samples/Mail/src/Mail.cpp#1 $ +// +// This sample demonstrates the MailMessage and SecureSMTPClientSession classes. +// +// Copyright (c) 2005-2011, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "Poco/Net/MailMessage.h" +#include "Poco/Net/MailRecipient.h" +#include "Poco/Net/SecureSMTPClientSession.h" +#include "Poco/Net/StringPartSource.h" +#include "Poco/Net/SSLManager.h" +#include "Poco/Net/ConsoleCertificateHandler.h" +#include "Poco/Net/PrivateKeyPassphraseHandler.h" +#include "Poco/SharedPtr.h" +#include "Poco/Path.h" +#include "Poco/Exception.h" +#include + + +using Poco::Net::MailMessage; +using Poco::Net::MailRecipient; +using Poco::Net::SMTPClientSession; +using Poco::Net::SecureSMTPClientSession; +using Poco::Net::StringPartSource; +using Poco::Net::SSLManager; +using Poco::Net::Context; +using Poco::Net::InvalidCertificateHandler; +using Poco::Net::ConsoleCertificateHandler; +using Poco::SharedPtr; +using Poco::Path; +using Poco::Exception; + + +class SSLInitializer +{ +public: + SSLInitializer() + { + Poco::Net::initializeSSL(); + } + + ~SSLInitializer() + { + Poco::Net::uninitializeSSL(); + } +}; + + +const unsigned char PocoLogo[] = +{ + #include "PocoLogo.hpp" +}; + + +int main(int argc, char** argv) +{ + SSLInitializer sslInitializer; + + if (argc < 4) + { + Path p(argv[0]); + std::cerr << "usage: " << p.getBaseName() << " [ ]" << std::endl; + std::cerr << " Send an email greeting from to ," << std::endl; + std::cerr << " using a secure connection to the SMTP server at ." << std::endl; + return 1; + } + + std::string mailhost(argv[1]); + std::string sender(argv[2]); + std::string recipient(argv[3]); + std::string username(argc >= 5 ? argv[4] : ""); + std::string password(argc >= 6 ? argv[5] : ""); + + try + { + // Note: we must create the passphrase handler prior Context + SharedPtr pCert = new ConsoleCertificateHandler(false); // ask the user via console + Context::Ptr pContext = new Context(Context::CLIENT_USE, ""); + SSLManager::instance().initializeClient(0, pCert, pContext); + + MailMessage message; + message.setSender(sender); + message.addRecipient(MailRecipient(MailRecipient::PRIMARY_RECIPIENT, recipient)); + message.setSubject("Hello from the POCO C++ Libraries"); + std::string content; + content += "Hello "; + content += recipient; + content += ",\r\n\r\n"; + content += "This is a greeting from the POCO C++ Libraries.\r\n\r\n"; + std::string logo(reinterpret_cast(PocoLogo), sizeof(PocoLogo)); + message.addContent(new StringPartSource(content)); + message.addAttachment("logo", new StringPartSource(logo, "image/gif")); + + SecureSMTPClientSession session(mailhost); + session.login(); + session.startTLS(pContext); + if (!username.empty()) + { + session.login(SMTPClientSession::AUTH_LOGIN, username, password); + } + session.sendMessage(message); + session.close(); + } + catch (Exception& exc) + { + std::cerr << exc.displayText() << std::endl; + return 1; + } + return 0; +} diff --git a/NetSSL_Win/samples/Mail/src/PocoLogo.hpp b/NetSSL_Win/samples/Mail/src/PocoLogo.hpp new file mode 100644 index 000000000..a1b39a593 --- /dev/null +++ b/NetSSL_Win/samples/Mail/src/PocoLogo.hpp @@ -0,0 +1,134 @@ +// The C++ Portable Components logo in GIF format + +0x47, 0x49, 0x46, 0x38, 0x39, 0x61, 0xa0, 0x00, 0x85, 0x00, 0xa2, 0x00, 0x00, 0xd1, 0xdd, 0xe4, +0x45, 0x9b, 0xca, 0x41, 0x55, 0x61, 0x8a, 0x96, 0x9e, 0xa2, 0xbc, 0xcc, 0x00, 0x1b, 0x2c, 0x00, +0x75, 0xb6, 0xff, 0xff, 0xff, 0x21, 0xf9, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, +0x00, 0x00, 0xa0, 0x00, 0x85, 0x00, 0x00, 0x03, 0xff, 0x78, 0xba, 0xdc, 0xfe, 0x30, 0xca, 0x49, +0xab, 0xbd, 0x38, 0xeb, 0xcd, 0xbb, 0xff, 0x60, 0x28, 0x8e, 0x64, 0x69, 0x9e, 0x68, 0xaa, 0xae, +0x6c, 0xeb, 0xbe, 0x70, 0x2c, 0xcf, 0x2b, 0x40, 0xdc, 0x78, 0xae, 0xef, 0x04, 0xe0, 0xda, 0xbc, +0xe0, 0x0e, 0xe0, 0xeb, 0x00, 0x06, 0xc5, 0xc5, 0x6d, 0x72, 0x4b, 0x76, 0x08, 0x01, 0x83, 0x74, +0x4a, 0xad, 0x5a, 0xab, 0x01, 0x27, 0x09, 0x10, 0xbd, 0x7a, 0xbf, 0x86, 0x40, 0x6f, 0x33, 0x28, +0x10, 0x1a, 0x85, 0x82, 0x44, 0x90, 0x2e, 0x68, 0x2f, 0xb6, 0x2e, 0x78, 0x7e, 0x15, 0x8f, 0xe2, +0xf4, 0xbc, 0xd5, 0x8e, 0x29, 0x9f, 0x09, 0x48, 0x07, 0x69, 0x11, 0x65, 0x02, 0x6c, 0x03, 0x1b, +0x72, 0x7a, 0x8b, 0x54, 0x67, 0x1f, 0x8a, 0x8c, 0x8c, 0x59, 0x17, 0x7e, 0x82, 0x66, 0x96, 0x11, +0x69, 0x3e, 0x05, 0x02, 0x19, 0x5c, 0x91, 0xa0, 0x53, 0x8e, 0x1c, 0x90, 0xa1, 0x8b, 0xa3, 0x13, +0x95, 0x69, 0x67, 0x83, 0x0c, 0x36, 0x0a, 0x9a, 0x82, 0x9d, 0x70, 0xa6, 0xb5, 0x93, 0x19, 0x04, +0xb5, 0xb6, 0x15, 0xaa, 0x97, 0xad, 0x0b, 0x6c, 0xac, 0x6e, 0xb2, 0x17, 0xb9, 0xba, 0xb5, 0x6f, +0x12, 0xc6, 0xc7, 0xa6, 0xc9, 0x0c, 0xbd, 0x3d, 0xbf, 0x0a, 0xc1, 0x96, 0x3e, 0x44, 0x16, 0xcb, +0xcc, 0xa0, 0x01, 0xb4, 0xda, 0xa6, 0xdc, 0x12, 0x65, 0x9c, 0x69, 0x86, 0x9c, 0x0d, 0xd4, 0xb1, +0xdd, 0xde, 0xa1, 0xe0, 0x4c, 0xeb, 0xbb, 0xe1, 0x6d, 0x6d, 0x02, 0x5a, 0xe2, 0x6c, 0xb3, 0x17, +0xa5, 0xef, 0x7a, 0xed, 0x11, 0xfb, 0xb5, 0xa8, 0x1e, 0x10, 0x19, 0xe8, 0x8c, 0x0d, 0x27, 0x67, +0x10, 0xb2, 0xfd, 0x63, 0x84, 0xf0, 0x80, 0xc2, 0x85, 0x8b, 0x1a, 0xc2, 0x09, 0x48, 0x01, 0x00, +0xc4, 0x50, 0x14, 0x17, 0x58, 0xbc, 0xb8, 0x0d, 0xff, 0x83, 0x21, 0x11, 0xfa, 0xbc, 0x88, 0x21, +0x48, 0xb2, 0x24, 0x91, 0x1b, 0x21, 0xaf, 0x38, 0x7b, 0xf8, 0xa5, 0x87, 0xc9, 0x97, 0x04, 0xa1, +0x44, 0xbc, 0x20, 0x4d, 0xe3, 0x90, 0x09, 0xfc, 0x3e, 0x7c, 0xa2, 0x93, 0xf1, 0x80, 0x9e, 0x9e, +0x18, 0x36, 0xf2, 0xa4, 0xa9, 0xa6, 0x81, 0x38, 0x79, 0x35, 0x1b, 0x08, 0x05, 0x23, 0xb1, 0x58, +0x9e, 0x07, 0x2c, 0xad, 0x34, 0x75, 0x3a, 0xa7, 0xdf, 0x84, 0x9a, 0xe2, 0x06, 0x68, 0xdd, 0x8a, +0x28, 0x42, 0x54, 0x2a, 0x53, 0xf3, 0x0d, 0x6d, 0x90, 0x72, 0x4a, 0x58, 0xaa, 0x4c, 0x2d, 0xd4, +0x3c, 0x94, 0xa1, 0xac, 0x01, 0xa0, 0x1d, 0xdc, 0x5a, 0xf5, 0x39, 0x07, 0x2e, 0x87, 0xa5, 0x5e, +0xec, 0x2a, 0x00, 0xb0, 0xf6, 0x12, 0x06, 0xb7, 0x67, 0xd5, 0x7d, 0x51, 0x5a, 0x15, 0xc5, 0x57, +0x29, 0x73, 0x01, 0x71, 0x1d, 0x70, 0xef, 0x9c, 0xdf, 0x0b, 0x85, 0x4f, 0xb8, 0x25, 0x0c, 0x66, +0xae, 0x08, 0xbc, 0x7b, 0x1c, 0x1c, 0x45, 0x1a, 0x90, 0x9a, 0xe0, 0x3a, 0x28, 0x00, 0xbb, 0x8a, +0x2c, 0xb9, 0xb2, 0x03, 0x02, 0x86, 0x52, 0x0b, 0x08, 0xe4, 0x58, 0xef, 0x68, 0x30, 0xae, 0x13, +0xcd, 0x71, 0x82, 0xb9, 0x4a, 0x6c, 0xd9, 0x5f, 0x2c, 0x5b, 0xf0, 0x6c, 0xa1, 0x76, 0xa3, 0xd0, +0xb3, 0x5f, 0xb7, 0x4c, 0x51, 0x56, 0x77, 0x85, 0x57, 0x41, 0xeb, 0x02, 0x4f, 0xab, 0x51, 0xf9, +0x72, 0x91, 0x0f, 0xb2, 0xda, 0x0b, 0x0c, 0xc1, 0xb7, 0xa8, 0xe7, 0x5e, 0x28, 0x0f, 0xc7, 0x9e, +0xd9, 0x28, 0x39, 0xa4, 0xf8, 0x34, 0x1a, 0x94, 0x17, 0x5e, 0x7b, 0xde, 0x13, 0xd6, 0xa7, 0x98, +0xbf, 0x72, 0x5b, 0x43, 0x71, 0xcd, 0xbe, 0xcc, 0xf0, 0x2d, 0xcf, 0x17, 0x29, 0xb9, 0x08, 0xe9, +0xdf, 0x96, 0x36, 0x2d, 0xfc, 0x3c, 0x77, 0x2c, 0xff, 0xf0, 0x09, 0x23, 0x8c, 0x63, 0x02, 0xdc, +0x54, 0x9d, 0x73, 0x24, 0xb8, 0xa5, 0x5f, 0x7f, 0xec, 0x11, 0xc7, 0xdf, 0x33, 0xf1, 0x0d, 0xc8, +0x00, 0x6f, 0xc7, 0x21, 0x08, 0xd2, 0x53, 0xeb, 0x59, 0xd1, 0x5e, 0x5b, 0x0f, 0x2e, 0x00, 0x0d, +0x26, 0x13, 0x3e, 0x56, 0x21, 0x6c, 0x97, 0xc9, 0x44, 0xc7, 0x5c, 0xf9, 0x6d, 0xf8, 0x57, 0x87, +0x0a, 0xf8, 0x01, 0x80, 0x21, 0xd1, 0x14, 0x05, 0x8c, 0x88, 0x15, 0x39, 0xc7, 0x45, 0x00, 0x38, +0xe6, 0xa8, 0xe3, 0x8e, 0x3c, 0x46, 0x22, 0x90, 0x85, 0x25, 0xbc, 0xe7, 0x9d, 0x7d, 0x7d, 0xb5, +0x97, 0xa2, 0x02, 0x87, 0xbd, 0x93, 0xd1, 0x91, 0xff, 0x51, 0x31, 0xd7, 0x66, 0xe4, 0x11, 0x98, +0x1c, 0x89, 0x07, 0x28, 0xe8, 0x4d, 0x32, 0x4c, 0xee, 0x07, 0x9d, 0x52, 0x30, 0x35, 0x40, 0xc0, +0x3c, 0xa9, 0x99, 0x73, 0x20, 0x95, 0x56, 0x32, 0xd3, 0x53, 0x96, 0x26, 0x08, 0x79, 0x97, 0x6a, +0xe5, 0x94, 0xc7, 0xa0, 0x86, 0x0a, 0x94, 0xa9, 0x8b, 0x71, 0x68, 0x06, 0xc9, 0xa2, 0x87, 0x6c, +0x7e, 0xa4, 0x93, 0x73, 0x72, 0x9a, 0x02, 0x57, 0x9d, 0x09, 0xde, 0xf9, 0x22, 0x91, 0x32, 0x1a, +0xc1, 0x27, 0x47, 0xc6, 0xed, 0x05, 0x64, 0xa0, 0xb9, 0xc1, 0x47, 0xcf, 0x11, 0x05, 0x20, 0x51, +0x0f, 0x3d, 0xe7, 0x74, 0xf5, 0x23, 0x99, 0x17, 0x25, 0xaa, 0x28, 0x95, 0x5a, 0x82, 0xe6, 0x9d, +0x23, 0x65, 0x58, 0x1a, 0x62, 0x40, 0x49, 0x35, 0x87, 0xe9, 0x3f, 0xb7, 0x4c, 0x00, 0xe8, 0x08, +0x6a, 0x7a, 0xe8, 0x57, 0xa8, 0x0f, 0x50, 0x63, 0xc8, 0x26, 0x6e, 0x9a, 0xba, 0x5d, 0x9f, 0x3f, +0x7d, 0x06, 0x27, 0x0a, 0xa4, 0xb9, 0x0a, 0x6a, 0xa4, 0xb1, 0xc6, 0x47, 0x2b, 0x7e, 0x87, 0xae, +0x93, 0xea, 0x88, 0x8d, 0xa2, 0xd7, 0x6b, 0x8b, 0xff, 0xaf, 0x02, 0xeb, 0x00, 0x3a, 0xc3, 0x88, +0x79, 0xe9, 0x76, 0x37, 0xf2, 0x68, 0xed, 0xb5, 0x62, 0x8c, 0xa1, 0x41, 0x7e, 0x9a, 0x3e, 0xb1, +0xec, 0x01, 0x85, 0xf4, 0x10, 0xea, 0x35, 0xa3, 0x56, 0x43, 0xcc, 0x98, 0xdb, 0xd1, 0x60, 0xeb, +0x60, 0x27, 0x8c, 0xe5, 0x0a, 0xa1, 0xe5, 0x1d, 0x52, 0x9f, 0x0d, 0xd2, 0x3a, 0xb0, 0xea, 0x0c, +0xee, 0x8e, 0x90, 0xa4, 0x01, 0xc9, 0xa0, 0x66, 0x5f, 0x79, 0x50, 0xb6, 0x21, 0x6a, 0x86, 0xb6, +0xa9, 0x4b, 0x56, 0xbe, 0x20, 0xe4, 0x17, 0x86, 0x04, 0x26, 0x9d, 0x96, 0xe7, 0xc0, 0x04, 0xff, +0x66, 0xb0, 0x12, 0x79, 0x50, 0xe7, 0x55, 0x1e, 0x2a, 0xee, 0xc9, 0xe9, 0xc4, 0x74, 0x21, 0xbc, +0xc1, 0xbe, 0x52, 0x38, 0x73, 0x44, 0x9e, 0xb5, 0x7a, 0xb2, 0xa8, 0xba, 0x20, 0x23, 0x86, 0xed, +0xca, 0x38, 0x2e, 0xa2, 0x5b, 0x7d, 0xff, 0xda, 0xcb, 0x18, 0x9b, 0x10, 0xaf, 0xdb, 0x20, 0xc7, +0x0b, 0xe0, 0xca, 0x51, 0x4f, 0x85, 0x48, 0x34, 0x28, 0x91, 0xc4, 0x6e, 0xcc, 0x71, 0xca, 0x1c, +0x21, 0x46, 0x08, 0x8d, 0xd1, 0x71, 0x32, 0x80, 0x62, 0x5a, 0x01, 0x75, 0xaf, 0xba, 0x3a, 0xa3, +0x1a, 0x8f, 0x5e, 0x14, 0xd6, 0x28, 0x34, 0xc7, 0x0a, 0x17, 0xcd, 0xef, 0xd4, 0x14, 0x54, 0xad, +0xea, 0xc9, 0x13, 0x13, 0xbd, 0x90, 0xa6, 0x95, 0x4c, 0xe0, 0x35, 0xc3, 0x60, 0x4f, 0x9c, 0xf5, +0x42, 0x7a, 0x95, 0xbd, 0x06, 0xd2, 0x68, 0x5f, 0x8d, 0xb3, 0x43, 0x5a, 0xef, 0xca, 0x04, 0xa5, +0x66, 0xd7, 0x6b, 0x75, 0xba, 0x73, 0x33, 0x60, 0xa2, 0xd6, 0x7c, 0xe8, 0x4b, 0x0e, 0xcd, 0x41, +0xf3, 0xdd, 0xb7, 0xdf, 0x5a, 0xab, 0x38, 0xf3, 0x9f, 0xe3, 0xcd, 0x53, 0xb8, 0x7f, 0x87, 0xdb, +0x1b, 0x75, 0x1e, 0xc7, 0xee, 0x26, 0x4f, 0xc6, 0xff, 0x11, 0x94, 0x65, 0x31, 0x0d, 0x71, 0xb4, +0x6c, 0x0b, 0x8e, 0xda, 0xe2, 0xa2, 0xf4, 0x3d, 0x38, 0x44, 0x6e, 0xfa, 0x0c, 0x65, 0x37, 0x0e, +0x95, 0x6a, 0xac, 0x9d, 0xee, 0xfa, 0x07, 0xa9, 0x93, 0x03, 0x71, 0xe3, 0xe4, 0x6c, 0xfe, 0xfa, +0xed, 0xe0, 0xfa, 0xc5, 0x46, 0x32, 0xe1, 0xe2, 0xc0, 0x16, 0xee, 0xc0, 0x53, 0xa2, 0x7b, 0xa1, +0xe5, 0x6a, 0xa4, 0x77, 0xf0, 0xc8, 0x27, 0x4d, 0xa9, 0x56, 0x10, 0x54, 0x7d, 0xbc, 0x11, 0x4c, +0x2f, 0x26, 0xfd, 0xf4, 0xd4, 0x6b, 0x65, 0xbb, 0x40, 0xd1, 0x57, 0x4f, 0x7d, 0xe8, 0x1b, 0xfc, +0x0c, 0x5e, 0x6b, 0x68, 0x94, 0x3c, 0x11, 0xed, 0x84, 0x96, 0x6f, 0xfe, 0x7d, 0x1e, 0xd8, 0x40, +0xfe, 0xf9, 0xe5, 0xaf, 0x66, 0xfb, 0xc8, 0x79, 0x82, 0xcf, 0xc0, 0xf3, 0xbd, 0x05, 0xcc, 0xfe, +0xfd, 0x40, 0x77, 0x60, 0x3f, 0xfe, 0xe7, 0xb7, 0x5e, 0xc2, 0xef, 0x48, 0xa2, 0x9f, 0xaa, 0xd6, +0xc7, 0xbf, 0x02, 0x96, 0xaa, 0x22, 0x04, 0x34, 0xe0, 0xf9, 0xf0, 0x16, 0x94, 0x81, 0x24, 0x64, +0x70, 0xe5, 0x80, 0x1b, 0x13, 0x14, 0x48, 0x41, 0xa4, 0x6c, 0x2b, 0x81, 0x15, 0x34, 0x5f, 0xcd, +0x12, 0x42, 0xbb, 0x9a, 0xf9, 0x4b, 0x1e, 0x1b, 0x8c, 0x47, 0x06, 0x33, 0x28, 0xba, 0x11, 0x52, +0xd0, 0x35, 0x30, 0x43, 0xca, 0x06, 0x09, 0xb2, 0x01, 0x0c, 0x9a, 0xf0, 0x7c, 0x7d, 0x78, 0x61, +0x05, 0xc5, 0xe7, 0xaa, 0x47, 0x11, 0xa1, 0x10, 0x26, 0x70, 0xa1, 0x0c, 0xcb, 0x27, 0xbc, 0x1d, +0x52, 0x90, 0x86, 0xb9, 0x23, 0x15, 0xf1, 0x90, 0x64, 0x3d, 0x0d, 0xec, 0xcf, 0x87, 0x30, 0xac, +0xc0, 0x97, 0x90, 0x78, 0x42, 0xae, 0xcd, 0x6f, 0x88, 0xe3, 0x61, 0xa0, 0x12, 0x99, 0xa8, 0xc0, +0xe3, 0x50, 0xb1, 0x82, 0x08, 0x71, 0x1b, 0x2c, 0xff, 0x88, 0x17, 0xae, 0xc6, 0x5c, 0x40, 0x87, +0x57, 0x94, 0x07, 0x2f, 0xc2, 0xa8, 0x40, 0xf1, 0x69, 0xb1, 0x3e, 0xf2, 0x13, 0x20, 0x7c, 0xc8, +0x78, 0x3f, 0x20, 0x1e, 0x20, 0x85, 0x6c, 0xc4, 0xdf, 0x06, 0x7b, 0x77, 0x03, 0x2f, 0xce, 0xc8, +0x11, 0x7a, 0xaa, 0x08, 0xff, 0x0a, 0xe4, 0x12, 0x98, 0xf8, 0xb1, 0x4b, 0x5d, 0xc3, 0xdf, 0x6a, +0xfa, 0xf8, 0xc7, 0x98, 0x30, 0x86, 0x7f, 0x05, 0x21, 0x52, 0x67, 0x74, 0xe7, 0xc6, 0x69, 0xb4, +0xf1, 0x7a, 0x20, 0x58, 0x22, 0xfb, 0x42, 0xd8, 0x43, 0xf6, 0x01, 0x65, 0x66, 0x86, 0xf0, 0x9f, +0x23, 0x1d, 0x71, 0x40, 0xa5, 0x3c, 0xd2, 0x60, 0x3a, 0x94, 0xa2, 0x07, 0x3e, 0xa8, 0x41, 0x0f, +0xdc, 0x83, 0x08, 0xb3, 0x22, 0xd7, 0x03, 0x17, 0xa8, 0x36, 0xf6, 0x89, 0x12, 0x04, 0x2e, 0xa4, +0xa1, 0x2a, 0xa1, 0x02, 0x2f, 0x11, 0xb6, 0x0f, 0x6b, 0x96, 0x34, 0x81, 0x24, 0xcb, 0xd7, 0x2f, +0x81, 0x29, 0x83, 0x7c, 0x34, 0x3c, 0x62, 0x1a, 0x28, 0xe9, 0x82, 0x5d, 0x12, 0xa9, 0x91, 0x2d, +0x3c, 0x1f, 0x45, 0xea, 0x63, 0x10, 0x62, 0x66, 0xc0, 0x85, 0x90, 0x14, 0x81, 0x31, 0xed, 0xe3, +0x4c, 0x0e, 0x08, 0xd3, 0x59, 0x10, 0x42, 0x04, 0x1a, 0x47, 0x00, 0x4d, 0x8e, 0x5d, 0xb3, 0x9a, +0xdd, 0xeb, 0x5f, 0x80, 0x1c, 0xf9, 0x4b, 0xc2, 0x45, 0xc0, 0x85, 0x38, 0xfb, 0x66, 0x0a, 0x58, +0xf9, 0x29, 0x72, 0x0a, 0x64, 0x7d, 0x34, 0xc4, 0x20, 0x32, 0x57, 0xa0, 0x4e, 0x14, 0xb0, 0x13, +0x42, 0x78, 0x1c, 0xa2, 0x23, 0x0b, 0x54, 0x92, 0xb7, 0xdd, 0xd2, 0x9b, 0xe2, 0xb4, 0xa7, 0xf9, +0xdc, 0x04, 0xab, 0x03, 0xe4, 0x51, 0x7e, 0x5f, 0x1c, 0x68, 0x3a, 0x03, 0x7a, 0x82, 0x7b, 0x2a, +0x61, 0x98, 0xd2, 0x43, 0xa8, 0xe5, 0xfe, 0x39, 0xff, 0xb1, 0x7a, 0x36, 0x54, 0xa1, 0x6b, 0xb4, +0x8f, 0x44, 0x2b, 0x20, 0xcf, 0x85, 0x96, 0x52, 0xa0, 0x14, 0x55, 0x8a, 0xf4, 0x16, 0xb9, 0xa1, +0x8e, 0x02, 0xf4, 0xa3, 0x26, 0x80, 0x63, 0xcc, 0x38, 0x60, 0xc7, 0x89, 0xd6, 0xf2, 0xa4, 0xe5, +0x03, 0xe7, 0xb6, 0x1c, 0x5a, 0x42, 0x4e, 0xb0, 0xc9, 0x9f, 0x2f, 0xad, 0x28, 0x43, 0x4b, 0xa0, +0xd2, 0xef, 0xdd, 0x25, 0xa7, 0xc1, 0x0a, 0xa9, 0xba, 0x2c, 0xca, 0x53, 0x9a, 0x7a, 0xe4, 0x20, +0xfd, 0x3c, 0x27, 0x46, 0x75, 0x8a, 0xd2, 0xa2, 0x2e, 0x55, 0x03, 0x67, 0xc3, 0xe9, 0x31, 0x3d, +0x1a, 0x53, 0x14, 0xf4, 0x34, 0x4a, 0x2c, 0x95, 0xa0, 0x52, 0x85, 0x4a, 0x03, 0xa2, 0x6e, 0xc1, +0xa8, 0x46, 0xd9, 0xe0, 0x3d, 0x46, 0x2a, 0xd5, 0x95, 0x32, 0xb5, 0xaa, 0xe8, 0x01, 0xeb, 0x13, +0xab, 0xc3, 0xc3, 0xad, 0x02, 0x75, 0xa8, 0x3b, 0xfd, 0xea, 0x53, 0x95, 0xb2, 0xc4, 0x26, 0xd8, +0x8b, 0x64, 0xf1, 0x9c, 0x6b, 0x57, 0xe3, 0x7a, 0x07, 0xb5, 0x1a, 0x54, 0x85, 0x21, 0x30, 0xe9, +0x59, 0x09, 0x25, 0x53, 0x4f, 0xf8, 0xf5, 0x90, 0x91, 0xd2, 0x64, 0x56, 0xb9, 0x8a, 0x3a, 0xbe, +0x5e, 0xc6, 0xaf, 0x5b, 0xc4, 0x0f, 0x26, 0x07, 0x99, 0x37, 0xf3, 0x51, 0x95, 0xb0, 0x86, 0x81, +0x2c, 0xb8, 0x36, 0x38, 0xcd, 0x55, 0x94, 0xd5, 0x3e, 0xd1, 0x0c, 0x81, 0x57, 0x47, 0x30, 0xda, +0x84, 0xe2, 0x0d, 0x52, 0x79, 0x35, 0x5f, 0x68, 0x23, 0xa9, 0xd9, 0x0e, 0xb8, 0x90, 0x98, 0xb3, +0x2c, 0xde, 0x5e, 0xd4, 0x58, 0xda, 0x18, 0x74, 0x16, 0xab, 0x4e, 0x55, 0x6d, 0xde, 0x9a, 0x47, +0x23, 0xda, 0xb2, 0x6f, 0xb5, 0xe9, 0xfb, 0xad, 0x09, 0xae, 0xa9, 0x4f, 0x57, 0xec, 0x2e, 0x58, +0xa4, 0xa2, 0xe1, 0x6d, 0xc9, 0x03, 0xdc, 0x0e, 0xff, 0xb8, 0xb2, 0xb9, 0x0e, 0x71, 0x65, 0x59, +0x49, 0xfa, 0x2e, 0x59, 0xe2, 0x0f, 0xba, 0x46, 0xbc, 0x1f, 0x70, 0x89, 0xab, 0xd5, 0xbf, 0x0e, +0x6e, 0x91, 0x7c, 0xac, 0x23, 0x36, 0x79, 0x7b, 0xbf, 0xc2, 0x96, 0x60, 0xb9, 0xe4, 0xc1, 0x9c, +0x46, 0xb8, 0x3b, 0x8c, 0xab, 0x14, 0xf7, 0xaa, 0x76, 0x41, 0x2f, 0x35, 0xb5, 0x47, 0x5f, 0xfa, +0x4a, 0x04, 0x8c, 0x4a, 0xab, 0x2f, 0xf5, 0xf0, 0xab, 0x46, 0x60, 0x88, 0xef, 0x45, 0xe6, 0x4c, +0x45, 0x1c, 0xdb, 0xa8, 0xaa, 0x01, 0x17, 0x10, 0xbb, 0xcf, 0x34, 0xb0, 0x5e, 0x9f, 0xa5, 0xe0, +0x49, 0x86, 0xad, 0xc1, 0x6f, 0xa5, 0x25, 0x84, 0x23, 0xec, 0x37, 0x4d, 0x1e, 0xd4, 0x21, 0x16, +0x06, 0x27, 0x7f, 0xaf, 0xd8, 0x48, 0xf6, 0xb2, 0xb1, 0x21, 0x5a, 0x04, 0xd1, 0x1d, 0xd1, 0x50, +0xdc, 0xa0, 0x4e, 0x18, 0x7d, 0x81, 0x3c, 0xb1, 0x2f, 0x9d, 0xb8, 0x80, 0x22, 0x85, 0x2f, 0x86, +0x2a, 0x9e, 0xa7, 0x87, 0x99, 0xd8, 0xb6, 0xde, 0x12, 0xcf, 0x79, 0xf3, 0x74, 0xe4, 0x89, 0x73, +0xbc, 0xe1, 0x1d, 0xba, 0x26, 0xc4, 0x2e, 0x9e, 0x5f, 0x8e, 0x99, 0x35, 0xe1, 0x21, 0xcf, 0xf8, +0x85, 0xb1, 0x01, 0xf2, 0x8d, 0x7b, 0x3b, 0xe4, 0xbd, 0xf4, 0xd8, 0x84, 0x4d, 0xf6, 0x1e, 0x19, +0x0b, 0x4b, 0x47, 0x7f, 0xc5, 0x8b, 0x13, 0x39, 0x00, 0xe0, 0x05, 0x15, 0xdc, 0x64, 0x27, 0x87, +0x51, 0xb1, 0x05, 0x26, 0xd2, 0xc0, 0xe0, 0xab, 0x13, 0xc4, 0x4e, 0x79, 0x94, 0x66, 0x86, 0x32, +0x98, 0x8f, 0xd3, 0xb8, 0x02, 0xbd, 0x33, 0xbd, 0x77, 0x00, 0x82, 0x10, 0xe6, 0x4c, 0x67, 0xe0, +0x9e, 0x84, 0xce, 0x42, 0x70, 0x60, 0xf2, 0xf6, 0xcc, 0xe7, 0x3e, 0xfb, 0xf9, 0xcf, 0x80, 0x0e, +0xb4, 0xa0, 0x07, 0x4d, 0xe8, 0x42, 0x97, 0x20, 0x01, 0x01, 0x00, 0x3b diff --git a/NetSSL_Win/samples/download/CMakeLists.txt b/NetSSL_Win/samples/download/CMakeLists.txt new file mode 100644 index 000000000..7bb405ec9 --- /dev/null +++ b/NetSSL_Win/samples/download/CMakeLists.txt @@ -0,0 +1,7 @@ +set(SAMPLE_NAME "download-ssl") + +set(LOCAL_SRCS "") +aux_source_directory(src LOCAL_SRCS) + +add_executable( ${SAMPLE_NAME} ${LOCAL_SRCS} ) +target_link_libraries( ${SAMPLE_NAME} PocoNetSSLWin PocoCrypto PocoUtil PocoNet PocoXML PocoFoundation ) diff --git a/NetSSL_Win/samples/download/download.progen b/NetSSL_Win/samples/download/download.progen new file mode 100644 index 000000000..b12a664bb --- /dev/null +++ b/NetSSL_Win/samples/download/download.progen @@ -0,0 +1,18 @@ +vc.project.guid = ${vc.project.guidFromName} +vc.project.name = ${vc.project.baseName} +vc.project.target = ${vc.project.name} +vc.project.type = executable +vc.project.pocobase = ..\\..\\.. +vc.project.platforms = Win32, x64, WinCE +vc.project.configurations = debug_shared, release_shared, debug_static_mt, release_static_mt, debug_static_md, release_static_md +vc.project.prototype = ${vc.project.name}_vs90.vcproj +vc.project.compiler.include = ..\\..\\..\\Foundation\\include;..\\..\\..\\XML\\include;..\\..\\..\\Util\\include;..\\..\\..\\Net\\include;..\\..\\..\\NetSSL_Win\\include +vc.project.linker.dependencies.Win32 = ws2_32.lib iphlpapi.lib +vc.project.linker.dependencies.x64 = ws2_32.lib iphlpapi.lib +vc.project.linker.dependencies.WinCE = ws2.lib iphlpapi.lib +vc.project.linker.dependencies.debug_shared = +vc.project.linker.dependencies.release_shared = +vc.project.linker.dependencies.debug_static_md = Crypt32.lib +vc.project.linker.dependencies.release_static_md = Crypt32.lib +vc.project.linker.dependencies.debug_static_mt = Crypt32.lib +vc.project.linker.dependencies.release_static_mt = Crypt32.lib diff --git a/NetSSL_Win/samples/download/download_CE_vs90.vcproj b/NetSSL_Win/samples/download/download_CE_vs90.vcproj new file mode 100644 index 000000000..141edeb2c --- /dev/null +++ b/NetSSL_Win/samples/download/download_CE_vs90.vcproj @@ -0,0 +1,472 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NetSSL_Win/samples/download/download_WEC2013_vs110.vcxproj b/NetSSL_Win/samples/download/download_WEC2013_vs110.vcxproj new file mode 100644 index 000000000..d113d2e7b --- /dev/null +++ b/NetSSL_Win/samples/download/download_WEC2013_vs110.vcxproj @@ -0,0 +1,296 @@ + + + + + debug_shared + SDK_AM335X_SK_WEC2013_V300 + + + debug_static_md + SDK_AM335X_SK_WEC2013_V300 + + + debug_static_mt + SDK_AM335X_SK_WEC2013_V300 + + + release_shared + SDK_AM335X_SK_WEC2013_V300 + + + release_static_md + SDK_AM335X_SK_WEC2013_V300 + + + release_static_mt + SDK_AM335X_SK_WEC2013_V300 + + + + download + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D} + en-US + 11.0 + true + SDK_AM335X_SK_WEC2013_V300 + CE800 + + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>11.0.61030.0 + downloadd + downloadd + downloadd + download + download + download + + + bin\$(Platform)\shared\ + obj\download\$(Platform)\$(Configuration)\ + true + + + bin\$(Platform)\shared\ + obj\download\$(Platform)\$(Configuration)\ + false + + + bin\$(Platform)\static_mt\ + obj\download\$(Platform)\$(Configuration)\ + true + + + bin\$(Platform)\static_mt\ + obj\download\$(Platform)\$(Configuration)\ + false + + + bin\$(Platform)\static_md\ + obj\download\$(Platform)\$(Configuration)\ + true + + + bin\$(Platform)\static_md\ + obj\download\$(Platform)\$(Configuration)\ + false + + + + Disabled + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + _DEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebugDLL + true + true + + Level3 + ProgramDatabase + Default + + + ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\shared\downloadd.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + true + bin\$(Platform)\shared\downloadd.pdb + mainCRTStartup + WindowsCE + + + + + Disabled + true + Speed + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + NDEBUG;$(ProjectName)_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDLL + false + true + Level3 + ProgramDatabase + + + ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\shared\download.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + false + + true + true + mainCRTStartup + WindowsCE + + + + + Disabled + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + _DEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebug + true + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;Crypt32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\static_mt\downloadd.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + true + bin\$(Platform)\static_mt\downloadd.pdb + mainCRTStartup + WindowsCE + + + + + Disabled + Default + true + Speed + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + NDEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreaded + false + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;Crypt32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\static_mt\download.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + false + + true + true + mainCRTStartup + WindowsCE + + + + + Disabled + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + _DEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebugDLL + true + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;Crypt32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\static_md\downloadd.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + true + bin\$(Platform)\static_md\downloadd.pdb + mainCRTStartup + WindowsCE + + + + + Disabled + Default + true + Speed + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + NDEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDLL + false + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;Crypt32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\static_md\download.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + false + + true + true + mainCRTStartup + WindowsCE + + + + + + + + diff --git a/NetSSL_Win/samples/download/download_WEC2013_vs110.vcxproj.filters b/NetSSL_Win/samples/download/download_WEC2013_vs110.vcxproj.filters new file mode 100644 index 000000000..2122ce3f7 --- /dev/null +++ b/NetSSL_Win/samples/download/download_WEC2013_vs110.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {db2105bd-9b53-45c8-9867-4a897ee63f6b} + + + + + Source Files + + + \ No newline at end of file diff --git a/NetSSL_Win/samples/download/download_WEC2013_vs120.vcxproj b/NetSSL_Win/samples/download/download_WEC2013_vs120.vcxproj new file mode 100644 index 000000000..1d72c57d0 --- /dev/null +++ b/NetSSL_Win/samples/download/download_WEC2013_vs120.vcxproj @@ -0,0 +1,296 @@ + + + + + debug_shared + SDK_AM335X_SK_WEC2013_V310 + + + debug_static_md + SDK_AM335X_SK_WEC2013_V310 + + + debug_static_mt + SDK_AM335X_SK_WEC2013_V310 + + + release_shared + SDK_AM335X_SK_WEC2013_V310 + + + release_static_md + SDK_AM335X_SK_WEC2013_V310 + + + release_static_mt + SDK_AM335X_SK_WEC2013_V310 + + + + download + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D} + en-US + 11.0 + true + SDK_AM335X_SK_WEC2013_V310 + CE800 + + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>12.0.30501.0 + downloadd + downloadd + downloadd + download + download + download + + + bin\$(Platform)\shared\ + obj\download\$(Platform)\$(Configuration)\ + true + + + bin\$(Platform)\shared\ + obj\download\$(Platform)\$(Configuration)\ + false + + + bin\$(Platform)\static_mt\ + obj\download\$(Platform)\$(Configuration)\ + true + + + bin\$(Platform)\static_mt\ + obj\download\$(Platform)\$(Configuration)\ + false + + + bin\$(Platform)\static_md\ + obj\download\$(Platform)\$(Configuration)\ + true + + + bin\$(Platform)\static_md\ + obj\download\$(Platform)\$(Configuration)\ + false + + + + Disabled + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + _DEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebugDLL + true + true + + Level3 + ProgramDatabase + Default + + + ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\shared\downloadd.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + true + bin\$(Platform)\shared\downloadd.pdb + mainCRTStartup + WindowsCE + + + + + Disabled + true + Speed + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + NDEBUG;$(ProjectName)_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDLL + false + true + Level3 + ProgramDatabase + + + ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\shared\download.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + false + + true + true + mainCRTStartup + WindowsCE + + + + + Disabled + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + _DEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebug + true + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;Crypt32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\static_mt\downloadd.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + true + bin\$(Platform)\static_mt\downloadd.pdb + mainCRTStartup + WindowsCE + + + + + Disabled + Default + true + Speed + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + NDEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreaded + false + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;Crypt32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\static_mt\download.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + false + + true + true + mainCRTStartup + WindowsCE + + + + + Disabled + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + _DEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebugDLL + true + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;Crypt32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\static_md\downloadd.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + true + bin\$(Platform)\static_md\downloadd.pdb + mainCRTStartup + WindowsCE + + + + + Disabled + Default + true + Speed + ..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + NDEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDLL + false + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;Crypt32.lib;ws2.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\$(Platform)\static_md\download.exe + ..\..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + false + + true + true + mainCRTStartup + WindowsCE + + + + + + + + diff --git a/NetSSL_Win/samples/download/download_WEC2013_vs120.vcxproj.filters b/NetSSL_Win/samples/download/download_WEC2013_vs120.vcxproj.filters new file mode 100644 index 000000000..4fc25a825 --- /dev/null +++ b/NetSSL_Win/samples/download/download_WEC2013_vs120.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {cba4d19f-f979-446b-9b15-373f1e40b874} + + + + + Source Files + + + \ No newline at end of file diff --git a/NetSSL_Win/samples/download/download_vs100.vcxproj b/NetSSL_Win/samples/download/download_vs100.vcxproj new file mode 100644 index 000000000..f356fe5e6 --- /dev/null +++ b/NetSSL_Win/samples/download/download_vs100.vcxproj @@ -0,0 +1,311 @@ + + + + + debug_shared + Win32 + + + debug_static_md + Win32 + + + debug_static_mt + Win32 + + + release_shared + Win32 + + + release_static_md + Win32 + + + release_static_mt + Win32 + + + + download + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D} + download + Win32Proj + + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + bin\ + obj\download\$(Configuration)\ + true + bin\ + obj\download\$(Configuration)\ + false + bin\static_mt\ + obj\download\$(Configuration)\ + true + bin\static_mt\ + obj\download\$(Configuration)\ + false + bin\static_md\ + obj\download\$(Configuration)\ + true + bin\static_md\ + obj\download\$(Configuration)\ + false + downloadd + downloadd + downloadd + download + download + download + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + EditAndContinue + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\downloadd.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\downloadd.pdb + Console + MachineX86 + %(AdditionalOptions) + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\download.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX86 + %(AdditionalOptions) + + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + Level3 + EditAndContinue + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\static_mt\downloadd.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\static_mt\downloadd.pdb + Console + MachineX86 + %(AdditionalOptions) + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\static_mt\download.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX86 + %(AdditionalOptions) + + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + EditAndContinue + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\static_md\downloadd.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\static_md\downloadd.pdb + Console + MachineX86 + %(AdditionalOptions) + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\static_md\download.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX86 + %(AdditionalOptions) + + + + + + + + diff --git a/NetSSL_Win/samples/download/download_vs100.vcxproj.filters b/NetSSL_Win/samples/download/download_vs100.vcxproj.filters new file mode 100644 index 000000000..2e2d74df8 --- /dev/null +++ b/NetSSL_Win/samples/download/download_vs100.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {017e73bb-b66d-4ea3-b476-c7f973ffa785} + + + + + Source Files + + + \ No newline at end of file diff --git a/NetSSL_Win/samples/download/download_vs110.vcxproj b/NetSSL_Win/samples/download/download_vs110.vcxproj new file mode 100644 index 000000000..4c4ea14e0 --- /dev/null +++ b/NetSSL_Win/samples/download/download_vs110.vcxproj @@ -0,0 +1,311 @@ + + + + + debug_shared + Win32 + + + debug_static_md + Win32 + + + debug_static_mt + Win32 + + + release_shared + Win32 + + + release_static_md + Win32 + + + release_static_mt + Win32 + + + + download + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D} + download + Win32Proj + + + + Application + MultiByte + v110 + + + Application + MultiByte + v110 + + + Application + MultiByte + v110 + + + Application + MultiByte + v110 + + + Application + MultiByte + v110 + + + Application + MultiByte + v110 + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>11.0.61030.0 + downloadd + downloadd + downloadd + download + download + download + + + bin\ + obj\download\$(Configuration)\ + true + + + bin\ + obj\download\$(Configuration)\ + false + + + bin\static_mt\ + obj\download\$(Configuration)\ + true + + + bin\static_mt\ + obj\download\$(Configuration)\ + false + + + bin\static_md\ + obj\download\$(Configuration)\ + true + + + bin\static_md\ + obj\download\$(Configuration)\ + false + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + EditAndContinue + Default + + + ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\downloadd.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\downloadd.pdb + Console + MachineX86 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + + + ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\download.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX86 + + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + Level3 + EditAndContinue + Default + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\static_mt\downloadd.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\static_mt\downloadd.pdb + Console + MachineX86 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\static_mt\download.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX86 + + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + EditAndContinue + Default + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\static_md\downloadd.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\static_md\downloadd.pdb + Console + MachineX86 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\static_md\download.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX86 + + + + + + + + diff --git a/NetSSL_Win/samples/download/download_vs110.vcxproj.filters b/NetSSL_Win/samples/download/download_vs110.vcxproj.filters new file mode 100644 index 000000000..261df68f8 --- /dev/null +++ b/NetSSL_Win/samples/download/download_vs110.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {1f34723c-dd25-4ea3-bcb8-375c31f63054} + + + + + Source Files + + + \ No newline at end of file diff --git a/NetSSL_Win/samples/download/download_vs120.vcxproj b/NetSSL_Win/samples/download/download_vs120.vcxproj new file mode 100644 index 000000000..01f20555f --- /dev/null +++ b/NetSSL_Win/samples/download/download_vs120.vcxproj @@ -0,0 +1,311 @@ + + + + + debug_shared + Win32 + + + debug_static_md + Win32 + + + debug_static_mt + Win32 + + + release_shared + Win32 + + + release_static_md + Win32 + + + release_static_mt + Win32 + + + + download + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D} + download + Win32Proj + + + + Application + MultiByte + v120 + + + Application + MultiByte + v120 + + + Application + MultiByte + v120 + + + Application + MultiByte + v120 + + + Application + MultiByte + v120 + + + Application + MultiByte + v120 + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>12.0.30501.0 + downloadd + downloadd + downloadd + download + download + download + + + bin\ + obj\download\$(Configuration)\ + true + + + bin\ + obj\download\$(Configuration)\ + false + + + bin\static_mt\ + obj\download\$(Configuration)\ + true + + + bin\static_mt\ + obj\download\$(Configuration)\ + false + + + bin\static_md\ + obj\download\$(Configuration)\ + true + + + bin\static_md\ + obj\download\$(Configuration)\ + false + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + EditAndContinue + Default + + + ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\downloadd.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\downloadd.pdb + Console + MachineX86 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + + + ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\download.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX86 + + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + Level3 + EditAndContinue + Default + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\static_mt\downloadd.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\static_mt\downloadd.pdb + Console + MachineX86 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\static_mt\download.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX86 + + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + EditAndContinue + Default + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\static_md\downloadd.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\static_md\downloadd.pdb + Console + MachineX86 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\static_md\download.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX86 + + + + + + + + diff --git a/NetSSL_Win/samples/download/download_vs120.vcxproj.filters b/NetSSL_Win/samples/download/download_vs120.vcxproj.filters new file mode 100644 index 000000000..5603a9754 --- /dev/null +++ b/NetSSL_Win/samples/download/download_vs120.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {66176b57-8a2b-45b9-a392-741ab626968f} + + + + + Source Files + + + \ No newline at end of file diff --git a/NetSSL_Win/samples/download/download_vs71.vcproj b/NetSSL_Win/samples/download/download_vs71.vcproj new file mode 100644 index 000000000..a4b1d9cea --- /dev/null +++ b/NetSSL_Win/samples/download/download_vs71.vcproj @@ -0,0 +1,405 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NetSSL_Win/samples/download/download_vs80.vcproj b/NetSSL_Win/samples/download/download_vs80.vcproj new file mode 100644 index 000000000..7264ac325 --- /dev/null +++ b/NetSSL_Win/samples/download/download_vs80.vcproj @@ -0,0 +1,445 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NetSSL_Win/samples/download/download_vs90.vcproj b/NetSSL_Win/samples/download/download_vs90.vcproj new file mode 100644 index 000000000..88fb92377 --- /dev/null +++ b/NetSSL_Win/samples/download/download_vs90.vcproj @@ -0,0 +1,445 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NetSSL_Win/samples/download/download_x64_vs100.vcxproj b/NetSSL_Win/samples/download/download_x64_vs100.vcxproj new file mode 100644 index 000000000..b6972d7bf --- /dev/null +++ b/NetSSL_Win/samples/download/download_x64_vs100.vcxproj @@ -0,0 +1,311 @@ + + + + + debug_shared + x64 + + + debug_static_md + x64 + + + debug_static_mt + x64 + + + release_shared + x64 + + + release_static_md + x64 + + + release_static_mt + x64 + + + + download + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D} + download + Win32Proj + + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + bin64\ + obj64\download\$(Configuration)\ + true + bin64\ + obj64\download\$(Configuration)\ + false + bin64\static_mt\ + obj64\download\$(Configuration)\ + true + bin64\static_mt\ + obj64\download\$(Configuration)\ + false + bin64\static_md\ + obj64\download\$(Configuration)\ + true + bin64\static_md\ + obj64\download\$(Configuration)\ + false + downloadd + downloadd + downloadd + download + download + download + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\downloadd.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\downloadd.pdb + Console + MachineX64 + %(AdditionalOptions) + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\download.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX64 + %(AdditionalOptions) + + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + Level3 + ProgramDatabase + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\static_mt\downloadd.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\static_mt\downloadd.pdb + Console + MachineX64 + %(AdditionalOptions) + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\static_mt\download.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX64 + %(AdditionalOptions) + + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\static_md\downloadd.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\static_md\downloadd.pdb + Console + MachineX64 + %(AdditionalOptions) + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\static_md\download.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX64 + %(AdditionalOptions) + + + + + + + + diff --git a/NetSSL_Win/samples/download/download_x64_vs100.vcxproj.filters b/NetSSL_Win/samples/download/download_x64_vs100.vcxproj.filters new file mode 100644 index 000000000..9f972a53e --- /dev/null +++ b/NetSSL_Win/samples/download/download_x64_vs100.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {0e029b6c-5d32-48d7-a141-8b93a759d939} + + + + + Source Files + + + \ No newline at end of file diff --git a/NetSSL_Win/samples/download/download_x64_vs110.vcxproj b/NetSSL_Win/samples/download/download_x64_vs110.vcxproj new file mode 100644 index 000000000..c0cfa490e --- /dev/null +++ b/NetSSL_Win/samples/download/download_x64_vs110.vcxproj @@ -0,0 +1,311 @@ + + + + + debug_shared + x64 + + + debug_static_md + x64 + + + debug_static_mt + x64 + + + release_shared + x64 + + + release_static_md + x64 + + + release_static_mt + x64 + + + + download + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D} + download + Win32Proj + + + + Application + MultiByte + v110 + + + Application + MultiByte + v110 + + + Application + MultiByte + v110 + + + Application + MultiByte + v110 + + + Application + MultiByte + v110 + + + Application + MultiByte + v110 + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>11.0.61030.0 + downloadd + downloadd + downloadd + download + download + download + + + bin64\ + obj64\download\$(Configuration)\ + true + + + bin64\ + obj64\download\$(Configuration)\ + false + + + bin64\static_mt\ + obj64\download\$(Configuration)\ + true + + + bin64\static_mt\ + obj64\download\$(Configuration)\ + false + + + bin64\static_md\ + obj64\download\$(Configuration)\ + true + + + bin64\static_md\ + obj64\download\$(Configuration)\ + false + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + + + ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\downloadd.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\downloadd.pdb + Console + MachineX64 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + + + ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\download.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX64 + + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\static_mt\downloadd.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\static_mt\downloadd.pdb + Console + MachineX64 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\static_mt\download.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX64 + + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\static_md\downloadd.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\static_md\downloadd.pdb + Console + MachineX64 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\static_md\download.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX64 + + + + + + + + diff --git a/NetSSL_Win/samples/download/download_x64_vs110.vcxproj.filters b/NetSSL_Win/samples/download/download_x64_vs110.vcxproj.filters new file mode 100644 index 000000000..e0353983e --- /dev/null +++ b/NetSSL_Win/samples/download/download_x64_vs110.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {bafe5ab6-1d3d-4a7e-b358-1d506543b668} + + + + + Source Files + + + \ No newline at end of file diff --git a/NetSSL_Win/samples/download/download_x64_vs120.vcxproj b/NetSSL_Win/samples/download/download_x64_vs120.vcxproj new file mode 100644 index 000000000..b1dc86b35 --- /dev/null +++ b/NetSSL_Win/samples/download/download_x64_vs120.vcxproj @@ -0,0 +1,311 @@ + + + + + debug_shared + x64 + + + debug_static_md + x64 + + + debug_static_mt + x64 + + + release_shared + x64 + + + release_static_md + x64 + + + release_static_mt + x64 + + + + download + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D} + download + Win32Proj + + + + Application + MultiByte + v120 + + + Application + MultiByte + v120 + + + Application + MultiByte + v120 + + + Application + MultiByte + v120 + + + Application + MultiByte + v120 + + + Application + MultiByte + v120 + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>12.0.30501.0 + downloadd + downloadd + downloadd + download + download + download + + + bin64\ + obj64\download\$(Configuration)\ + true + + + bin64\ + obj64\download\$(Configuration)\ + false + + + bin64\static_mt\ + obj64\download\$(Configuration)\ + true + + + bin64\static_mt\ + obj64\download\$(Configuration)\ + false + + + bin64\static_md\ + obj64\download\$(Configuration)\ + true + + + bin64\static_md\ + obj64\download\$(Configuration)\ + false + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + + + ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\downloadd.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\downloadd.pdb + Console + MachineX64 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + + + ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\download.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX64 + + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\static_mt\downloadd.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\static_mt\downloadd.pdb + Console + MachineX64 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\static_mt\download.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX64 + + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\static_md\downloadd.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\static_md\downloadd.pdb + Console + MachineX64 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;..\..\..\NetSSL_Win\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + + + iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\static_md\download.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX64 + + + + + + + + diff --git a/NetSSL_Win/samples/download/download_x64_vs120.vcxproj.filters b/NetSSL_Win/samples/download/download_x64_vs120.vcxproj.filters new file mode 100644 index 000000000..bc488508c --- /dev/null +++ b/NetSSL_Win/samples/download/download_x64_vs120.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {cfbdc2fb-aaed-48d9-a74e-a89d0afd351d} + + + + + Source Files + + + \ No newline at end of file diff --git a/NetSSL_Win/samples/download/download_x64_vs90.vcproj b/NetSSL_Win/samples/download/download_x64_vs90.vcproj new file mode 100644 index 000000000..f18cef4d5 --- /dev/null +++ b/NetSSL_Win/samples/download/download_x64_vs90.vcproj @@ -0,0 +1,445 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NetSSL_Win/samples/download/src/download.cpp b/NetSSL_Win/samples/download/src/download.cpp new file mode 100644 index 000000000..90284a235 --- /dev/null +++ b/NetSSL_Win/samples/download/src/download.cpp @@ -0,0 +1,94 @@ +// +// download.cpp +// +// $Id: //poco/1.4/NetSSL_OpenSSL/samples/download/src/download.cpp#1 $ +// +// This sample demonstrates the URIStreamOpener class. +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "Poco/URIStreamOpener.h" +#include "Poco/StreamCopier.h" +#include "Poco/Path.h" +#include "Poco/URI.h" +#include "Poco/SharedPtr.h" +#include "Poco/Exception.h" +#include "Poco/Net/HTTPStreamFactory.h" +#include "Poco/Net/HTTPSStreamFactory.h" +#include "Poco/Net/FTPStreamFactory.h" +#include "Poco/Net/SSLManager.h" +#include "Poco/Net/ConsoleCertificateHandler.h" +#include "Poco/Net/PrivateKeyPassphraseHandler.h" +#include +#include + + +using Poco::URIStreamOpener; +using Poco::StreamCopier; +using Poco::Path; +using Poco::URI; +using Poco::SharedPtr; +using Poco::Exception; +using Poco::Net::HTTPStreamFactory; +using Poco::Net::HTTPSStreamFactory; +using Poco::Net::FTPStreamFactory; +using Poco::Net::SSLManager; +using Poco::Net::Context; +using Poco::Net::InvalidCertificateHandler; +using Poco::Net::ConsoleCertificateHandler; + + +class SSLInitializer +{ +public: + SSLInitializer() + { + Poco::Net::initializeSSL(); + } + + ~SSLInitializer() + { + Poco::Net::uninitializeSSL(); + } +}; + + +int main(int argc, char** argv) +{ + SSLInitializer sslInitializer; + HTTPStreamFactory::registerFactory(); + HTTPSStreamFactory::registerFactory(); + FTPStreamFactory::registerFactory(); + + if (argc != 2) + { + Path p(argv[0]); + std::cerr << "usage: " << p.getBaseName() << " " << std::endl; + std::cerr << " Download to standard output." << std::endl; + std::cerr << " Works with http, https, ftp and file URIs." << std::endl; + return 1; + } + + SharedPtr pCertHandler = new ConsoleCertificateHandler(false); // ask the user via console + Context::Ptr pContext = new Context(Context::CLIENT_USE, ""); + SSLManager::instance().initializeClient(0, pCertHandler, pContext); + + try + { + URI uri(argv[1]); + std::auto_ptr pStr(URIStreamOpener::defaultOpener().open(uri)); + StreamCopier::copyStream(*pStr.get(), std::cout); + } + catch (Exception& exc) + { + std::cerr << exc.displayText() << std::endl; + return 1; + } + + return 0; +} diff --git a/NetSSL_Win/samples/samples.progen b/NetSSL_Win/samples/samples.progen new file mode 100644 index 000000000..7bb3a564e --- /dev/null +++ b/NetSSL_Win/samples/samples.progen @@ -0,0 +1,7 @@ +vc.project.platforms = Win32, x64, WinCE +vc.project.configurations = debug_shared, release_shared, debug_static_mt, release_static_mt, debug_static_md, release_static_md +vc.solution.create = true +vc.solution.include = \ + download\\download;\ + HTTPSTimeServer\\HTTPSTimeServer;\ + Mail\\Mail diff --git a/NetSSL_Win/samples/samples_CE_vs90.sln b/NetSSL_Win/samples/samples_CE_vs90.sln new file mode 100644 index 000000000..1a96370ea --- /dev/null +++ b/NetSSL_Win/samples/samples_CE_vs90.sln @@ -0,0 +1,77 @@ +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "download", "download\download_CE_vs90.vcproj", "{D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HTTPSTimeServer", "HTTPSTimeServer\HTTPSTimeServer_CE_vs90.vcproj", "{F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Mail", "Mail\Mail_CE_vs90.vcproj", "{BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|Digi JumpStart (ARMV4I) = debug_shared|Digi JumpStart (ARMV4I) + release_shared|Digi JumpStart (ARMV4I) = release_shared|Digi JumpStart (ARMV4I) + debug_static_mt|Digi JumpStart (ARMV4I) = debug_static_mt|Digi JumpStart (ARMV4I) + release_static_mt|Digi JumpStart (ARMV4I) = release_static_mt|Digi JumpStart (ARMV4I) + debug_static_md|Digi JumpStart (ARMV4I) = debug_static_md|Digi JumpStart (ARMV4I) + release_static_md|Digi JumpStart (ARMV4I) = release_static_md|Digi JumpStart (ARMV4I) + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_shared|Digi JumpStart (ARMV4I).ActiveCfg = debug_shared|Digi JumpStart (ARMV4I) + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_shared|Digi JumpStart (ARMV4I).Build.0 = debug_shared|Digi JumpStart (ARMV4I) + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_shared|Digi JumpStart (ARMV4I).Deploy.0 = debug_shared|Digi JumpStart (ARMV4I) + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_shared|Digi JumpStart (ARMV4I).ActiveCfg = release_shared|Digi JumpStart (ARMV4I) + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_shared|Digi JumpStart (ARMV4I).Build.0 = release_shared|Digi JumpStart (ARMV4I) + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_shared|Digi JumpStart (ARMV4I).Deploy.0 = release_shared|Digi JumpStart (ARMV4I) + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_mt|Digi JumpStart (ARMV4I).ActiveCfg = debug_static_mt|Digi JumpStart (ARMV4I) + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_mt|Digi JumpStart (ARMV4I).Build.0 = debug_static_mt|Digi JumpStart (ARMV4I) + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_mt|Digi JumpStart (ARMV4I).Deploy.0 = debug_static_mt|Digi JumpStart (ARMV4I) + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_mt|Digi JumpStart (ARMV4I).ActiveCfg = release_static_mt|Digi JumpStart (ARMV4I) + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_mt|Digi JumpStart (ARMV4I).Build.0 = release_static_mt|Digi JumpStart (ARMV4I) + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_mt|Digi JumpStart (ARMV4I).Deploy.0 = release_static_mt|Digi JumpStart (ARMV4I) + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_md|Digi JumpStart (ARMV4I).ActiveCfg = debug_static_md|Digi JumpStart (ARMV4I) + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_md|Digi JumpStart (ARMV4I).Build.0 = debug_static_md|Digi JumpStart (ARMV4I) + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_md|Digi JumpStart (ARMV4I).Deploy.0 = debug_static_md|Digi JumpStart (ARMV4I) + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_md|Digi JumpStart (ARMV4I).ActiveCfg = release_static_md|Digi JumpStart (ARMV4I) + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_md|Digi JumpStart (ARMV4I).Build.0 = release_static_md|Digi JumpStart (ARMV4I) + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_md|Digi JumpStart (ARMV4I).Deploy.0 = release_static_md|Digi JumpStart (ARMV4I) + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_shared|Digi JumpStart (ARMV4I).ActiveCfg = debug_shared|Digi JumpStart (ARMV4I) + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_shared|Digi JumpStart (ARMV4I).Build.0 = debug_shared|Digi JumpStart (ARMV4I) + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_shared|Digi JumpStart (ARMV4I).Deploy.0 = debug_shared|Digi JumpStart (ARMV4I) + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_shared|Digi JumpStart (ARMV4I).ActiveCfg = release_shared|Digi JumpStart (ARMV4I) + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_shared|Digi JumpStart (ARMV4I).Build.0 = release_shared|Digi JumpStart (ARMV4I) + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_shared|Digi JumpStart (ARMV4I).Deploy.0 = release_shared|Digi JumpStart (ARMV4I) + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_mt|Digi JumpStart (ARMV4I).ActiveCfg = debug_static_mt|Digi JumpStart (ARMV4I) + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_mt|Digi JumpStart (ARMV4I).Build.0 = debug_static_mt|Digi JumpStart (ARMV4I) + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_mt|Digi JumpStart (ARMV4I).Deploy.0 = debug_static_mt|Digi JumpStart (ARMV4I) + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_mt|Digi JumpStart (ARMV4I).ActiveCfg = release_static_mt|Digi JumpStart (ARMV4I) + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_mt|Digi JumpStart (ARMV4I).Build.0 = release_static_mt|Digi JumpStart (ARMV4I) + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_mt|Digi JumpStart (ARMV4I).Deploy.0 = release_static_mt|Digi JumpStart (ARMV4I) + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_md|Digi JumpStart (ARMV4I).ActiveCfg = debug_static_md|Digi JumpStart (ARMV4I) + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_md|Digi JumpStart (ARMV4I).Build.0 = debug_static_md|Digi JumpStart (ARMV4I) + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_md|Digi JumpStart (ARMV4I).Deploy.0 = debug_static_md|Digi JumpStart (ARMV4I) + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_md|Digi JumpStart (ARMV4I).ActiveCfg = release_static_md|Digi JumpStart (ARMV4I) + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_md|Digi JumpStart (ARMV4I).Build.0 = release_static_md|Digi JumpStart (ARMV4I) + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_md|Digi JumpStart (ARMV4I).Deploy.0 = release_static_md|Digi JumpStart (ARMV4I) + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_shared|Digi JumpStart (ARMV4I).ActiveCfg = debug_shared|Digi JumpStart (ARMV4I) + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_shared|Digi JumpStart (ARMV4I).Build.0 = debug_shared|Digi JumpStart (ARMV4I) + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_shared|Digi JumpStart (ARMV4I).Deploy.0 = debug_shared|Digi JumpStart (ARMV4I) + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_shared|Digi JumpStart (ARMV4I).ActiveCfg = release_shared|Digi JumpStart (ARMV4I) + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_shared|Digi JumpStart (ARMV4I).Build.0 = release_shared|Digi JumpStart (ARMV4I) + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_shared|Digi JumpStart (ARMV4I).Deploy.0 = release_shared|Digi JumpStart (ARMV4I) + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_mt|Digi JumpStart (ARMV4I).ActiveCfg = debug_static_mt|Digi JumpStart (ARMV4I) + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_mt|Digi JumpStart (ARMV4I).Build.0 = debug_static_mt|Digi JumpStart (ARMV4I) + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_mt|Digi JumpStart (ARMV4I).Deploy.0 = debug_static_mt|Digi JumpStart (ARMV4I) + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_mt|Digi JumpStart (ARMV4I).ActiveCfg = release_static_mt|Digi JumpStart (ARMV4I) + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_mt|Digi JumpStart (ARMV4I).Build.0 = release_static_mt|Digi JumpStart (ARMV4I) + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_mt|Digi JumpStart (ARMV4I).Deploy.0 = release_static_mt|Digi JumpStart (ARMV4I) + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_md|Digi JumpStart (ARMV4I).ActiveCfg = debug_static_md|Digi JumpStart (ARMV4I) + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_md|Digi JumpStart (ARMV4I).Build.0 = debug_static_md|Digi JumpStart (ARMV4I) + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_md|Digi JumpStart (ARMV4I).Deploy.0 = debug_static_md|Digi JumpStart (ARMV4I) + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_md|Digi JumpStart (ARMV4I).ActiveCfg = release_static_md|Digi JumpStart (ARMV4I) + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_md|Digi JumpStart (ARMV4I).Build.0 = release_static_md|Digi JumpStart (ARMV4I) + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_md|Digi JumpStart (ARMV4I).Deploy.0 = release_static_md|Digi JumpStart (ARMV4I) + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/NetSSL_Win/samples/samples_WEC2013_vs110.sln b/NetSSL_Win/samples/samples_WEC2013_vs110.sln new file mode 100644 index 000000000..a436efb1f --- /dev/null +++ b/NetSSL_Win/samples/samples_WEC2013_vs110.sln @@ -0,0 +1,77 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2012 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "download", "download\download_WEC2013_vs110.vcxproj", "{D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HTTPSTimeServer", "HTTPSTimeServer\HTTPSTimeServer_WEC2013_vs110.vcxproj", "{F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Mail", "Mail\Mail_WEC2013_vs110.vcxproj", "{BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|SDK_AM335X_SK_WEC2013_V300 = debug_shared|SDK_AM335X_SK_WEC2013_V300 + release_shared|SDK_AM335X_SK_WEC2013_V300 = release_shared|SDK_AM335X_SK_WEC2013_V300 + debug_static_mt|SDK_AM335X_SK_WEC2013_V300 = debug_static_mt|SDK_AM335X_SK_WEC2013_V300 + release_static_mt|SDK_AM335X_SK_WEC2013_V300 = release_static_mt|SDK_AM335X_SK_WEC2013_V300 + debug_static_md|SDK_AM335X_SK_WEC2013_V300 = debug_static_md|SDK_AM335X_SK_WEC2013_V300 + release_static_md|SDK_AM335X_SK_WEC2013_V300 = release_static_md|SDK_AM335X_SK_WEC2013_V300 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_shared|SDK_AM335X_SK_WEC2013_V300.ActiveCfg = debug_shared|SDK_AM335X_SK_WEC2013_V300 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_shared|SDK_AM335X_SK_WEC2013_V300.Build.0 = debug_shared|SDK_AM335X_SK_WEC2013_V300 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_shared|SDK_AM335X_SK_WEC2013_V300.Deploy.0 = debug_shared|SDK_AM335X_SK_WEC2013_V300 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_shared|SDK_AM335X_SK_WEC2013_V300.ActiveCfg = release_shared|SDK_AM335X_SK_WEC2013_V300 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_shared|SDK_AM335X_SK_WEC2013_V300.Build.0 = release_shared|SDK_AM335X_SK_WEC2013_V300 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_shared|SDK_AM335X_SK_WEC2013_V300.Deploy.0 = release_shared|SDK_AM335X_SK_WEC2013_V300 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_mt|SDK_AM335X_SK_WEC2013_V300.ActiveCfg = debug_static_mt|SDK_AM335X_SK_WEC2013_V300 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_mt|SDK_AM335X_SK_WEC2013_V300.Build.0 = debug_static_mt|SDK_AM335X_SK_WEC2013_V300 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_mt|SDK_AM335X_SK_WEC2013_V300.Deploy.0 = debug_static_mt|SDK_AM335X_SK_WEC2013_V300 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_mt|SDK_AM335X_SK_WEC2013_V300.ActiveCfg = release_static_mt|SDK_AM335X_SK_WEC2013_V300 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_mt|SDK_AM335X_SK_WEC2013_V300.Build.0 = release_static_mt|SDK_AM335X_SK_WEC2013_V300 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_mt|SDK_AM335X_SK_WEC2013_V300.Deploy.0 = release_static_mt|SDK_AM335X_SK_WEC2013_V300 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_md|SDK_AM335X_SK_WEC2013_V300.ActiveCfg = debug_static_md|SDK_AM335X_SK_WEC2013_V300 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_md|SDK_AM335X_SK_WEC2013_V300.Build.0 = debug_static_md|SDK_AM335X_SK_WEC2013_V300 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_md|SDK_AM335X_SK_WEC2013_V300.Deploy.0 = debug_static_md|SDK_AM335X_SK_WEC2013_V300 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_md|SDK_AM335X_SK_WEC2013_V300.ActiveCfg = release_static_md|SDK_AM335X_SK_WEC2013_V300 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_md|SDK_AM335X_SK_WEC2013_V300.Build.0 = release_static_md|SDK_AM335X_SK_WEC2013_V300 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_md|SDK_AM335X_SK_WEC2013_V300.Deploy.0 = release_static_md|SDK_AM335X_SK_WEC2013_V300 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_shared|SDK_AM335X_SK_WEC2013_V300.ActiveCfg = debug_shared|SDK_AM335X_SK_WEC2013_V300 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_shared|SDK_AM335X_SK_WEC2013_V300.Build.0 = debug_shared|SDK_AM335X_SK_WEC2013_V300 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_shared|SDK_AM335X_SK_WEC2013_V300.Deploy.0 = debug_shared|SDK_AM335X_SK_WEC2013_V300 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_shared|SDK_AM335X_SK_WEC2013_V300.ActiveCfg = release_shared|SDK_AM335X_SK_WEC2013_V300 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_shared|SDK_AM335X_SK_WEC2013_V300.Build.0 = release_shared|SDK_AM335X_SK_WEC2013_V300 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_shared|SDK_AM335X_SK_WEC2013_V300.Deploy.0 = release_shared|SDK_AM335X_SK_WEC2013_V300 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_mt|SDK_AM335X_SK_WEC2013_V300.ActiveCfg = debug_static_mt|SDK_AM335X_SK_WEC2013_V300 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_mt|SDK_AM335X_SK_WEC2013_V300.Build.0 = debug_static_mt|SDK_AM335X_SK_WEC2013_V300 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_mt|SDK_AM335X_SK_WEC2013_V300.Deploy.0 = debug_static_mt|SDK_AM335X_SK_WEC2013_V300 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_mt|SDK_AM335X_SK_WEC2013_V300.ActiveCfg = release_static_mt|SDK_AM335X_SK_WEC2013_V300 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_mt|SDK_AM335X_SK_WEC2013_V300.Build.0 = release_static_mt|SDK_AM335X_SK_WEC2013_V300 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_mt|SDK_AM335X_SK_WEC2013_V300.Deploy.0 = release_static_mt|SDK_AM335X_SK_WEC2013_V300 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_md|SDK_AM335X_SK_WEC2013_V300.ActiveCfg = debug_static_md|SDK_AM335X_SK_WEC2013_V300 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_md|SDK_AM335X_SK_WEC2013_V300.Build.0 = debug_static_md|SDK_AM335X_SK_WEC2013_V300 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_md|SDK_AM335X_SK_WEC2013_V300.Deploy.0 = debug_static_md|SDK_AM335X_SK_WEC2013_V300 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_md|SDK_AM335X_SK_WEC2013_V300.ActiveCfg = release_static_md|SDK_AM335X_SK_WEC2013_V300 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_md|SDK_AM335X_SK_WEC2013_V300.Build.0 = release_static_md|SDK_AM335X_SK_WEC2013_V300 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_md|SDK_AM335X_SK_WEC2013_V300.Deploy.0 = release_static_md|SDK_AM335X_SK_WEC2013_V300 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_shared|SDK_AM335X_SK_WEC2013_V300.ActiveCfg = debug_shared|SDK_AM335X_SK_WEC2013_V300 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_shared|SDK_AM335X_SK_WEC2013_V300.Build.0 = debug_shared|SDK_AM335X_SK_WEC2013_V300 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_shared|SDK_AM335X_SK_WEC2013_V300.Deploy.0 = debug_shared|SDK_AM335X_SK_WEC2013_V300 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_shared|SDK_AM335X_SK_WEC2013_V300.ActiveCfg = release_shared|SDK_AM335X_SK_WEC2013_V300 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_shared|SDK_AM335X_SK_WEC2013_V300.Build.0 = release_shared|SDK_AM335X_SK_WEC2013_V300 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_shared|SDK_AM335X_SK_WEC2013_V300.Deploy.0 = release_shared|SDK_AM335X_SK_WEC2013_V300 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_mt|SDK_AM335X_SK_WEC2013_V300.ActiveCfg = debug_static_mt|SDK_AM335X_SK_WEC2013_V300 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_mt|SDK_AM335X_SK_WEC2013_V300.Build.0 = debug_static_mt|SDK_AM335X_SK_WEC2013_V300 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_mt|SDK_AM335X_SK_WEC2013_V300.Deploy.0 = debug_static_mt|SDK_AM335X_SK_WEC2013_V300 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_mt|SDK_AM335X_SK_WEC2013_V300.ActiveCfg = release_static_mt|SDK_AM335X_SK_WEC2013_V300 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_mt|SDK_AM335X_SK_WEC2013_V300.Build.0 = release_static_mt|SDK_AM335X_SK_WEC2013_V300 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_mt|SDK_AM335X_SK_WEC2013_V300.Deploy.0 = release_static_mt|SDK_AM335X_SK_WEC2013_V300 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_md|SDK_AM335X_SK_WEC2013_V300.ActiveCfg = debug_static_md|SDK_AM335X_SK_WEC2013_V300 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_md|SDK_AM335X_SK_WEC2013_V300.Build.0 = debug_static_md|SDK_AM335X_SK_WEC2013_V300 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_md|SDK_AM335X_SK_WEC2013_V300.Deploy.0 = debug_static_md|SDK_AM335X_SK_WEC2013_V300 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_md|SDK_AM335X_SK_WEC2013_V300.ActiveCfg = release_static_md|SDK_AM335X_SK_WEC2013_V300 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_md|SDK_AM335X_SK_WEC2013_V300.Build.0 = release_static_md|SDK_AM335X_SK_WEC2013_V300 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_md|SDK_AM335X_SK_WEC2013_V300.Deploy.0 = release_static_md|SDK_AM335X_SK_WEC2013_V300 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/NetSSL_Win/samples/samples_WEC2013_vs120.sln b/NetSSL_Win/samples/samples_WEC2013_vs120.sln new file mode 100644 index 000000000..3f5246c6e --- /dev/null +++ b/NetSSL_Win/samples/samples_WEC2013_vs120.sln @@ -0,0 +1,77 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "download", "download\download_WEC2013_vs120.vcxproj", "{D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HTTPSTimeServer", "HTTPSTimeServer\HTTPSTimeServer_WEC2013_vs120.vcxproj", "{F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Mail", "Mail\Mail_WEC2013_vs120.vcxproj", "{BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|SDK_AM335X_SK_WEC2013_V310 = debug_shared|SDK_AM335X_SK_WEC2013_V310 + release_shared|SDK_AM335X_SK_WEC2013_V310 = release_shared|SDK_AM335X_SK_WEC2013_V310 + debug_static_mt|SDK_AM335X_SK_WEC2013_V310 = debug_static_mt|SDK_AM335X_SK_WEC2013_V310 + release_static_mt|SDK_AM335X_SK_WEC2013_V310 = release_static_mt|SDK_AM335X_SK_WEC2013_V310 + debug_static_md|SDK_AM335X_SK_WEC2013_V310 = debug_static_md|SDK_AM335X_SK_WEC2013_V310 + release_static_md|SDK_AM335X_SK_WEC2013_V310 = release_static_md|SDK_AM335X_SK_WEC2013_V310 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_shared|SDK_AM335X_SK_WEC2013_V310.ActiveCfg = debug_shared|SDK_AM335X_SK_WEC2013_V310 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_shared|SDK_AM335X_SK_WEC2013_V310.Build.0 = debug_shared|SDK_AM335X_SK_WEC2013_V310 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_shared|SDK_AM335X_SK_WEC2013_V310.Deploy.0 = debug_shared|SDK_AM335X_SK_WEC2013_V310 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_shared|SDK_AM335X_SK_WEC2013_V310.ActiveCfg = release_shared|SDK_AM335X_SK_WEC2013_V310 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_shared|SDK_AM335X_SK_WEC2013_V310.Build.0 = release_shared|SDK_AM335X_SK_WEC2013_V310 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_shared|SDK_AM335X_SK_WEC2013_V310.Deploy.0 = release_shared|SDK_AM335X_SK_WEC2013_V310 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_mt|SDK_AM335X_SK_WEC2013_V310.ActiveCfg = debug_static_mt|SDK_AM335X_SK_WEC2013_V310 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_mt|SDK_AM335X_SK_WEC2013_V310.Build.0 = debug_static_mt|SDK_AM335X_SK_WEC2013_V310 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_mt|SDK_AM335X_SK_WEC2013_V310.Deploy.0 = debug_static_mt|SDK_AM335X_SK_WEC2013_V310 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_mt|SDK_AM335X_SK_WEC2013_V310.ActiveCfg = release_static_mt|SDK_AM335X_SK_WEC2013_V310 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_mt|SDK_AM335X_SK_WEC2013_V310.Build.0 = release_static_mt|SDK_AM335X_SK_WEC2013_V310 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_mt|SDK_AM335X_SK_WEC2013_V310.Deploy.0 = release_static_mt|SDK_AM335X_SK_WEC2013_V310 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_md|SDK_AM335X_SK_WEC2013_V310.ActiveCfg = debug_static_md|SDK_AM335X_SK_WEC2013_V310 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_md|SDK_AM335X_SK_WEC2013_V310.Build.0 = debug_static_md|SDK_AM335X_SK_WEC2013_V310 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_md|SDK_AM335X_SK_WEC2013_V310.Deploy.0 = debug_static_md|SDK_AM335X_SK_WEC2013_V310 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_md|SDK_AM335X_SK_WEC2013_V310.ActiveCfg = release_static_md|SDK_AM335X_SK_WEC2013_V310 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_md|SDK_AM335X_SK_WEC2013_V310.Build.0 = release_static_md|SDK_AM335X_SK_WEC2013_V310 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_md|SDK_AM335X_SK_WEC2013_V310.Deploy.0 = release_static_md|SDK_AM335X_SK_WEC2013_V310 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_shared|SDK_AM335X_SK_WEC2013_V310.ActiveCfg = debug_shared|SDK_AM335X_SK_WEC2013_V310 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_shared|SDK_AM335X_SK_WEC2013_V310.Build.0 = debug_shared|SDK_AM335X_SK_WEC2013_V310 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_shared|SDK_AM335X_SK_WEC2013_V310.Deploy.0 = debug_shared|SDK_AM335X_SK_WEC2013_V310 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_shared|SDK_AM335X_SK_WEC2013_V310.ActiveCfg = release_shared|SDK_AM335X_SK_WEC2013_V310 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_shared|SDK_AM335X_SK_WEC2013_V310.Build.0 = release_shared|SDK_AM335X_SK_WEC2013_V310 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_shared|SDK_AM335X_SK_WEC2013_V310.Deploy.0 = release_shared|SDK_AM335X_SK_WEC2013_V310 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_mt|SDK_AM335X_SK_WEC2013_V310.ActiveCfg = debug_static_mt|SDK_AM335X_SK_WEC2013_V310 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_mt|SDK_AM335X_SK_WEC2013_V310.Build.0 = debug_static_mt|SDK_AM335X_SK_WEC2013_V310 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_mt|SDK_AM335X_SK_WEC2013_V310.Deploy.0 = debug_static_mt|SDK_AM335X_SK_WEC2013_V310 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_mt|SDK_AM335X_SK_WEC2013_V310.ActiveCfg = release_static_mt|SDK_AM335X_SK_WEC2013_V310 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_mt|SDK_AM335X_SK_WEC2013_V310.Build.0 = release_static_mt|SDK_AM335X_SK_WEC2013_V310 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_mt|SDK_AM335X_SK_WEC2013_V310.Deploy.0 = release_static_mt|SDK_AM335X_SK_WEC2013_V310 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_md|SDK_AM335X_SK_WEC2013_V310.ActiveCfg = debug_static_md|SDK_AM335X_SK_WEC2013_V310 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_md|SDK_AM335X_SK_WEC2013_V310.Build.0 = debug_static_md|SDK_AM335X_SK_WEC2013_V310 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_md|SDK_AM335X_SK_WEC2013_V310.Deploy.0 = debug_static_md|SDK_AM335X_SK_WEC2013_V310 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_md|SDK_AM335X_SK_WEC2013_V310.ActiveCfg = release_static_md|SDK_AM335X_SK_WEC2013_V310 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_md|SDK_AM335X_SK_WEC2013_V310.Build.0 = release_static_md|SDK_AM335X_SK_WEC2013_V310 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_md|SDK_AM335X_SK_WEC2013_V310.Deploy.0 = release_static_md|SDK_AM335X_SK_WEC2013_V310 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_shared|SDK_AM335X_SK_WEC2013_V310.ActiveCfg = debug_shared|SDK_AM335X_SK_WEC2013_V310 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_shared|SDK_AM335X_SK_WEC2013_V310.Build.0 = debug_shared|SDK_AM335X_SK_WEC2013_V310 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_shared|SDK_AM335X_SK_WEC2013_V310.Deploy.0 = debug_shared|SDK_AM335X_SK_WEC2013_V310 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_shared|SDK_AM335X_SK_WEC2013_V310.ActiveCfg = release_shared|SDK_AM335X_SK_WEC2013_V310 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_shared|SDK_AM335X_SK_WEC2013_V310.Build.0 = release_shared|SDK_AM335X_SK_WEC2013_V310 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_shared|SDK_AM335X_SK_WEC2013_V310.Deploy.0 = release_shared|SDK_AM335X_SK_WEC2013_V310 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_mt|SDK_AM335X_SK_WEC2013_V310.ActiveCfg = debug_static_mt|SDK_AM335X_SK_WEC2013_V310 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_mt|SDK_AM335X_SK_WEC2013_V310.Build.0 = debug_static_mt|SDK_AM335X_SK_WEC2013_V310 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_mt|SDK_AM335X_SK_WEC2013_V310.Deploy.0 = debug_static_mt|SDK_AM335X_SK_WEC2013_V310 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_mt|SDK_AM335X_SK_WEC2013_V310.ActiveCfg = release_static_mt|SDK_AM335X_SK_WEC2013_V310 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_mt|SDK_AM335X_SK_WEC2013_V310.Build.0 = release_static_mt|SDK_AM335X_SK_WEC2013_V310 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_mt|SDK_AM335X_SK_WEC2013_V310.Deploy.0 = release_static_mt|SDK_AM335X_SK_WEC2013_V310 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_md|SDK_AM335X_SK_WEC2013_V310.ActiveCfg = debug_static_md|SDK_AM335X_SK_WEC2013_V310 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_md|SDK_AM335X_SK_WEC2013_V310.Build.0 = debug_static_md|SDK_AM335X_SK_WEC2013_V310 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_md|SDK_AM335X_SK_WEC2013_V310.Deploy.0 = debug_static_md|SDK_AM335X_SK_WEC2013_V310 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_md|SDK_AM335X_SK_WEC2013_V310.ActiveCfg = release_static_md|SDK_AM335X_SK_WEC2013_V310 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_md|SDK_AM335X_SK_WEC2013_V310.Build.0 = release_static_md|SDK_AM335X_SK_WEC2013_V310 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_md|SDK_AM335X_SK_WEC2013_V310.Deploy.0 = release_static_md|SDK_AM335X_SK_WEC2013_V310 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/NetSSL_Win/samples/samples_vs100.sln b/NetSSL_Win/samples/samples_vs100.sln new file mode 100644 index 000000000..37d5deab0 --- /dev/null +++ b/NetSSL_Win/samples/samples_vs100.sln @@ -0,0 +1,77 @@ +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "download", "download\download_vs100.vcxproj", "{D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HTTPSTimeServer", "HTTPSTimeServer\HTTPSTimeServer_vs100.vcxproj", "{F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Mail", "Mail\Mail_vs100.vcxproj", "{BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|Win32 = debug_shared|Win32 + release_shared|Win32 = release_shared|Win32 + debug_static_mt|Win32 = debug_static_mt|Win32 + release_static_mt|Win32 = release_static_mt|Win32 + debug_static_md|Win32 = debug_static_md|Win32 + release_static_md|Win32 = release_static_md|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_shared|Win32.Build.0 = release_shared|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_shared|Win32.Build.0 = release_shared|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_shared|Win32.Build.0 = release_shared|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/NetSSL_Win/samples/samples_vs110.sln b/NetSSL_Win/samples/samples_vs110.sln new file mode 100644 index 000000000..ed247c027 --- /dev/null +++ b/NetSSL_Win/samples/samples_vs110.sln @@ -0,0 +1,77 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2012 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "download", "download\download_vs110.vcxproj", "{D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HTTPSTimeServer", "HTTPSTimeServer\HTTPSTimeServer_vs110.vcxproj", "{F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Mail", "Mail\Mail_vs110.vcxproj", "{BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|Win32 = debug_shared|Win32 + release_shared|Win32 = release_shared|Win32 + debug_static_mt|Win32 = debug_static_mt|Win32 + release_static_mt|Win32 = release_static_mt|Win32 + debug_static_md|Win32 = debug_static_md|Win32 + release_static_md|Win32 = release_static_md|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_shared|Win32.Build.0 = release_shared|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_shared|Win32.Build.0 = release_shared|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_shared|Win32.Build.0 = release_shared|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/NetSSL_Win/samples/samples_vs120.sln b/NetSSL_Win/samples/samples_vs120.sln new file mode 100644 index 000000000..3db78f8b7 --- /dev/null +++ b/NetSSL_Win/samples/samples_vs120.sln @@ -0,0 +1,77 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "download", "download\download_vs120.vcxproj", "{D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HTTPSTimeServer", "HTTPSTimeServer\HTTPSTimeServer_vs120.vcxproj", "{F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Mail", "Mail\Mail_vs120.vcxproj", "{BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|Win32 = debug_shared|Win32 + release_shared|Win32 = release_shared|Win32 + debug_static_mt|Win32 = debug_static_mt|Win32 + release_static_mt|Win32 = release_static_mt|Win32 + debug_static_md|Win32 = debug_static_md|Win32 + release_static_md|Win32 = release_static_md|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_shared|Win32.Build.0 = release_shared|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_shared|Win32.Build.0 = release_shared|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_shared|Win32.Build.0 = release_shared|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/NetSSL_Win/samples/samples_vs71.sln b/NetSSL_Win/samples/samples_vs71.sln new file mode 100644 index 000000000..66c343eae --- /dev/null +++ b/NetSSL_Win/samples/samples_vs71.sln @@ -0,0 +1,65 @@ +Microsoft Visual Studio Solution File, Format Version 8.00 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "download", "download\download_vs71.vcproj", "{D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HTTPSTimeServer", "HTTPSTimeServer\HTTPSTimeServer_vs71.vcproj", "{F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Mail", "Mail\Mail_vs71.vcproj", "{BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfiguration) = preSolution + debug_shared = debug_shared + release_shared = release_shared + debug_static_mt = debug_static_mt + release_static_mt = release_static_mt + debug_static_md = debug_static_md + release_static_md = release_static_md + EndGlobalSection + GlobalSection(ProjectConfiguration) = postSolution + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_shared.ActiveCfg = debug_shared|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_shared.Build.0 = debug_shared|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_shared.ActiveCfg = release_shared|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_shared.Build.0 = release_shared|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_mt.ActiveCfg = debug_static_mt|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_mt.Build.0 = debug_static_mt|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_mt.ActiveCfg = release_static_mt|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_mt.Build.0 = release_static_mt|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_md.ActiveCfg = debug_static_md|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_md.Build.0 = debug_static_md|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_md.ActiveCfg = release_static_md|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_md.Build.0 = release_static_md|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_shared.ActiveCfg = debug_shared|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_shared.Build.0 = debug_shared|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_shared.ActiveCfg = release_shared|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_shared.Build.0 = release_shared|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_mt.ActiveCfg = debug_static_mt|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_mt.Build.0 = debug_static_mt|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_mt.ActiveCfg = release_static_mt|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_mt.Build.0 = release_static_mt|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_md.ActiveCfg = debug_static_md|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_md.Build.0 = debug_static_md|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_md.ActiveCfg = release_static_md|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_md.Build.0 = release_static_md|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_shared.ActiveCfg = debug_shared|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_shared.Build.0 = debug_shared|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_shared.ActiveCfg = release_shared|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_shared.Build.0 = release_shared|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_mt.ActiveCfg = debug_static_mt|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_mt.Build.0 = debug_static_mt|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_mt.ActiveCfg = release_static_mt|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_mt.Build.0 = release_static_mt|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_md.ActiveCfg = debug_static_md|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_md.Build.0 = debug_static_md|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_md.ActiveCfg = release_static_md|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_md.Build.0 = release_static_md|Win32 + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddIns) = postSolution + EndGlobalSection +EndGlobal diff --git a/NetSSL_Win/samples/samples_vs80.sln b/NetSSL_Win/samples/samples_vs80.sln new file mode 100644 index 000000000..de8a399ba --- /dev/null +++ b/NetSSL_Win/samples/samples_vs80.sln @@ -0,0 +1,77 @@ +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual Studio 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "download", "download\download_vs80.vcproj", "{D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HTTPSTimeServer", "HTTPSTimeServer\HTTPSTimeServer_vs80.vcproj", "{F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Mail", "Mail\Mail_vs80.vcproj", "{BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|Win32 = debug_shared|Win32 + release_shared|Win32 = release_shared|Win32 + debug_static_mt|Win32 = debug_static_mt|Win32 + release_static_mt|Win32 = release_static_mt|Win32 + debug_static_md|Win32 = debug_static_md|Win32 + release_static_md|Win32 = release_static_md|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_shared|Win32.Build.0 = release_shared|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_shared|Win32.Build.0 = release_shared|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_shared|Win32.Build.0 = release_shared|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/NetSSL_Win/samples/samples_vs90.sln b/NetSSL_Win/samples/samples_vs90.sln new file mode 100644 index 000000000..ed82012a1 --- /dev/null +++ b/NetSSL_Win/samples/samples_vs90.sln @@ -0,0 +1,77 @@ +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "download", "download\download_vs90.vcproj", "{D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HTTPSTimeServer", "HTTPSTimeServer\HTTPSTimeServer_vs90.vcproj", "{F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Mail", "Mail\Mail_vs90.vcproj", "{BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|Win32 = debug_shared|Win32 + release_shared|Win32 = release_shared|Win32 + debug_static_mt|Win32 = debug_static_mt|Win32 + release_static_mt|Win32 = release_static_mt|Win32 + debug_static_md|Win32 = debug_static_md|Win32 + release_static_md|Win32 = release_static_md|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_shared|Win32.Build.0 = release_shared|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_shared|Win32.Build.0 = release_shared|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_shared|Win32.Build.0 = release_shared|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/NetSSL_Win/samples/samples_x64_vs100.sln b/NetSSL_Win/samples/samples_x64_vs100.sln new file mode 100644 index 000000000..878c4752d --- /dev/null +++ b/NetSSL_Win/samples/samples_x64_vs100.sln @@ -0,0 +1,77 @@ +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "download", "download\download_x64_vs100.vcxproj", "{D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HTTPSTimeServer", "HTTPSTimeServer\HTTPSTimeServer_x64_vs100.vcxproj", "{F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Mail", "Mail\Mail_x64_vs100.vcxproj", "{BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|x64 = debug_shared|x64 + release_shared|x64 = release_shared|x64 + debug_static_mt|x64 = debug_static_mt|x64 + release_static_mt|x64 = release_static_mt|x64 + debug_static_md|x64 = debug_static_md|x64 + release_static_md|x64 = release_static_md|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_shared|x64.Build.0 = debug_shared|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_shared|x64.Deploy.0 = debug_shared|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_shared|x64.ActiveCfg = release_shared|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_shared|x64.Build.0 = release_shared|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_shared|x64.Deploy.0 = release_shared|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_mt|x64.Build.0 = debug_static_mt|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_mt|x64.ActiveCfg = release_static_mt|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_mt|x64.Build.0 = release_static_mt|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_mt|x64.Deploy.0 = release_static_mt|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_md|x64.ActiveCfg = debug_static_md|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_md|x64.Build.0 = debug_static_md|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_md|x64.Deploy.0 = debug_static_md|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_md|x64.ActiveCfg = release_static_md|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_md|x64.Build.0 = release_static_md|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_md|x64.Deploy.0 = release_static_md|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_shared|x64.Build.0 = debug_shared|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_shared|x64.Deploy.0 = debug_shared|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_shared|x64.ActiveCfg = release_shared|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_shared|x64.Build.0 = release_shared|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_shared|x64.Deploy.0 = release_shared|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_mt|x64.Build.0 = debug_static_mt|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_mt|x64.ActiveCfg = release_static_mt|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_mt|x64.Build.0 = release_static_mt|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_mt|x64.Deploy.0 = release_static_mt|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_md|x64.ActiveCfg = debug_static_md|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_md|x64.Build.0 = debug_static_md|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_md|x64.Deploy.0 = debug_static_md|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_md|x64.ActiveCfg = release_static_md|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_md|x64.Build.0 = release_static_md|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_md|x64.Deploy.0 = release_static_md|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_shared|x64.Build.0 = debug_shared|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_shared|x64.Deploy.0 = debug_shared|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_shared|x64.ActiveCfg = release_shared|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_shared|x64.Build.0 = release_shared|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_shared|x64.Deploy.0 = release_shared|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_mt|x64.Build.0 = debug_static_mt|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_mt|x64.ActiveCfg = release_static_mt|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_mt|x64.Build.0 = release_static_mt|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_mt|x64.Deploy.0 = release_static_mt|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_md|x64.ActiveCfg = debug_static_md|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_md|x64.Build.0 = debug_static_md|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_md|x64.Deploy.0 = debug_static_md|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_md|x64.ActiveCfg = release_static_md|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_md|x64.Build.0 = release_static_md|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_md|x64.Deploy.0 = release_static_md|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/NetSSL_Win/samples/samples_x64_vs110.sln b/NetSSL_Win/samples/samples_x64_vs110.sln new file mode 100644 index 000000000..d93b615ca --- /dev/null +++ b/NetSSL_Win/samples/samples_x64_vs110.sln @@ -0,0 +1,77 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2012 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "download", "download\download_x64_vs110.vcxproj", "{D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HTTPSTimeServer", "HTTPSTimeServer\HTTPSTimeServer_x64_vs110.vcxproj", "{F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Mail", "Mail\Mail_x64_vs110.vcxproj", "{BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|x64 = debug_shared|x64 + release_shared|x64 = release_shared|x64 + debug_static_mt|x64 = debug_static_mt|x64 + release_static_mt|x64 = release_static_mt|x64 + debug_static_md|x64 = debug_static_md|x64 + release_static_md|x64 = release_static_md|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_shared|x64.Build.0 = debug_shared|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_shared|x64.Deploy.0 = debug_shared|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_shared|x64.ActiveCfg = release_shared|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_shared|x64.Build.0 = release_shared|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_shared|x64.Deploy.0 = release_shared|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_mt|x64.Build.0 = debug_static_mt|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_mt|x64.ActiveCfg = release_static_mt|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_mt|x64.Build.0 = release_static_mt|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_mt|x64.Deploy.0 = release_static_mt|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_md|x64.ActiveCfg = debug_static_md|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_md|x64.Build.0 = debug_static_md|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_md|x64.Deploy.0 = debug_static_md|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_md|x64.ActiveCfg = release_static_md|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_md|x64.Build.0 = release_static_md|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_md|x64.Deploy.0 = release_static_md|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_shared|x64.Build.0 = debug_shared|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_shared|x64.Deploy.0 = debug_shared|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_shared|x64.ActiveCfg = release_shared|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_shared|x64.Build.0 = release_shared|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_shared|x64.Deploy.0 = release_shared|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_mt|x64.Build.0 = debug_static_mt|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_mt|x64.ActiveCfg = release_static_mt|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_mt|x64.Build.0 = release_static_mt|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_mt|x64.Deploy.0 = release_static_mt|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_md|x64.ActiveCfg = debug_static_md|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_md|x64.Build.0 = debug_static_md|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_md|x64.Deploy.0 = debug_static_md|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_md|x64.ActiveCfg = release_static_md|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_md|x64.Build.0 = release_static_md|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_md|x64.Deploy.0 = release_static_md|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_shared|x64.Build.0 = debug_shared|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_shared|x64.Deploy.0 = debug_shared|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_shared|x64.ActiveCfg = release_shared|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_shared|x64.Build.0 = release_shared|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_shared|x64.Deploy.0 = release_shared|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_mt|x64.Build.0 = debug_static_mt|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_mt|x64.ActiveCfg = release_static_mt|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_mt|x64.Build.0 = release_static_mt|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_mt|x64.Deploy.0 = release_static_mt|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_md|x64.ActiveCfg = debug_static_md|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_md|x64.Build.0 = debug_static_md|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_md|x64.Deploy.0 = debug_static_md|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_md|x64.ActiveCfg = release_static_md|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_md|x64.Build.0 = release_static_md|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_md|x64.Deploy.0 = release_static_md|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/NetSSL_Win/samples/samples_x64_vs120.sln b/NetSSL_Win/samples/samples_x64_vs120.sln new file mode 100644 index 000000000..c03e39656 --- /dev/null +++ b/NetSSL_Win/samples/samples_x64_vs120.sln @@ -0,0 +1,77 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "download", "download\download_x64_vs120.vcxproj", "{D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HTTPSTimeServer", "HTTPSTimeServer\HTTPSTimeServer_x64_vs120.vcxproj", "{F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Mail", "Mail\Mail_x64_vs120.vcxproj", "{BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|x64 = debug_shared|x64 + release_shared|x64 = release_shared|x64 + debug_static_mt|x64 = debug_static_mt|x64 + release_static_mt|x64 = release_static_mt|x64 + debug_static_md|x64 = debug_static_md|x64 + release_static_md|x64 = release_static_md|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_shared|x64.Build.0 = debug_shared|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_shared|x64.Deploy.0 = debug_shared|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_shared|x64.ActiveCfg = release_shared|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_shared|x64.Build.0 = release_shared|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_shared|x64.Deploy.0 = release_shared|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_mt|x64.Build.0 = debug_static_mt|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_mt|x64.ActiveCfg = release_static_mt|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_mt|x64.Build.0 = release_static_mt|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_mt|x64.Deploy.0 = release_static_mt|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_md|x64.ActiveCfg = debug_static_md|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_md|x64.Build.0 = debug_static_md|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_md|x64.Deploy.0 = debug_static_md|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_md|x64.ActiveCfg = release_static_md|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_md|x64.Build.0 = release_static_md|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_md|x64.Deploy.0 = release_static_md|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_shared|x64.Build.0 = debug_shared|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_shared|x64.Deploy.0 = debug_shared|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_shared|x64.ActiveCfg = release_shared|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_shared|x64.Build.0 = release_shared|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_shared|x64.Deploy.0 = release_shared|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_mt|x64.Build.0 = debug_static_mt|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_mt|x64.ActiveCfg = release_static_mt|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_mt|x64.Build.0 = release_static_mt|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_mt|x64.Deploy.0 = release_static_mt|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_md|x64.ActiveCfg = debug_static_md|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_md|x64.Build.0 = debug_static_md|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_md|x64.Deploy.0 = debug_static_md|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_md|x64.ActiveCfg = release_static_md|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_md|x64.Build.0 = release_static_md|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_md|x64.Deploy.0 = release_static_md|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_shared|x64.Build.0 = debug_shared|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_shared|x64.Deploy.0 = debug_shared|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_shared|x64.ActiveCfg = release_shared|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_shared|x64.Build.0 = release_shared|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_shared|x64.Deploy.0 = release_shared|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_mt|x64.Build.0 = debug_static_mt|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_mt|x64.ActiveCfg = release_static_mt|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_mt|x64.Build.0 = release_static_mt|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_mt|x64.Deploy.0 = release_static_mt|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_md|x64.ActiveCfg = debug_static_md|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_md|x64.Build.0 = debug_static_md|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_md|x64.Deploy.0 = debug_static_md|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_md|x64.ActiveCfg = release_static_md|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_md|x64.Build.0 = release_static_md|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_md|x64.Deploy.0 = release_static_md|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/NetSSL_Win/samples/samples_x64_vs90.sln b/NetSSL_Win/samples/samples_x64_vs90.sln new file mode 100644 index 000000000..6b6324728 --- /dev/null +++ b/NetSSL_Win/samples/samples_x64_vs90.sln @@ -0,0 +1,77 @@ +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "download", "download\download_x64_vs90.vcproj", "{D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HTTPSTimeServer", "HTTPSTimeServer\HTTPSTimeServer_x64_vs90.vcproj", "{F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Mail", "Mail\Mail_x64_vs90.vcproj", "{BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|x64 = debug_shared|x64 + release_shared|x64 = release_shared|x64 + debug_static_mt|x64 = debug_static_mt|x64 + release_static_mt|x64 = release_static_mt|x64 + debug_static_md|x64 = debug_static_md|x64 + release_static_md|x64 = release_static_md|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_shared|x64.Build.0 = debug_shared|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_shared|x64.Deploy.0 = debug_shared|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_shared|x64.ActiveCfg = release_shared|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_shared|x64.Build.0 = release_shared|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_shared|x64.Deploy.0 = release_shared|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_mt|x64.Build.0 = debug_static_mt|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_mt|x64.ActiveCfg = release_static_mt|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_mt|x64.Build.0 = release_static_mt|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_mt|x64.Deploy.0 = release_static_mt|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_md|x64.ActiveCfg = debug_static_md|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_md|x64.Build.0 = debug_static_md|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.debug_static_md|x64.Deploy.0 = debug_static_md|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_md|x64.ActiveCfg = release_static_md|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_md|x64.Build.0 = release_static_md|x64 + {D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}.release_static_md|x64.Deploy.0 = release_static_md|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_shared|x64.Build.0 = debug_shared|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_shared|x64.Deploy.0 = debug_shared|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_shared|x64.ActiveCfg = release_shared|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_shared|x64.Build.0 = release_shared|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_shared|x64.Deploy.0 = release_shared|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_mt|x64.Build.0 = debug_static_mt|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_mt|x64.ActiveCfg = release_static_mt|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_mt|x64.Build.0 = release_static_mt|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_mt|x64.Deploy.0 = release_static_mt|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_md|x64.ActiveCfg = debug_static_md|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_md|x64.Build.0 = debug_static_md|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.debug_static_md|x64.Deploy.0 = debug_static_md|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_md|x64.ActiveCfg = release_static_md|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_md|x64.Build.0 = release_static_md|x64 + {F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}.release_static_md|x64.Deploy.0 = release_static_md|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_shared|x64.Build.0 = debug_shared|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_shared|x64.Deploy.0 = debug_shared|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_shared|x64.ActiveCfg = release_shared|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_shared|x64.Build.0 = release_shared|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_shared|x64.Deploy.0 = release_shared|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_mt|x64.Build.0 = debug_static_mt|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_mt|x64.ActiveCfg = release_static_mt|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_mt|x64.Build.0 = release_static_mt|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_mt|x64.Deploy.0 = release_static_mt|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_md|x64.ActiveCfg = debug_static_md|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_md|x64.Build.0 = debug_static_md|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.debug_static_md|x64.Deploy.0 = debug_static_md|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_md|x64.ActiveCfg = release_static_md|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_md|x64.Build.0 = release_static_md|x64 + {BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}.release_static_md|x64.Deploy.0 = release_static_md|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/NetSSL_Win/src/AcceptCertificateHandler.cpp b/NetSSL_Win/src/AcceptCertificateHandler.cpp new file mode 100644 index 000000000..53dc712cf --- /dev/null +++ b/NetSSL_Win/src/AcceptCertificateHandler.cpp @@ -0,0 +1,40 @@ +// +// AcceptCertificateHandler.cpp +// +// $Id$ +// +// Library: NetSSL_Win +// Package: SSLCore +// Module: AcceptCertificateHandler +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "Poco/Net/AcceptCertificateHandler.h" + + +namespace Poco { +namespace Net { + + +AcceptCertificateHandler::AcceptCertificateHandler(bool server): InvalidCertificateHandler(server) +{ +} + + +AcceptCertificateHandler::~AcceptCertificateHandler() +{ +} + + +void AcceptCertificateHandler::onInvalidCertificate(const void*, VerificationErrorArgs& errorCert) +{ + errorCert.setIgnoreError(true); +} + + +} } // namespace Poco::Net diff --git a/NetSSL_Win/src/CertificateHandlerFactory.cpp b/NetSSL_Win/src/CertificateHandlerFactory.cpp new file mode 100644 index 000000000..8d37e0ded --- /dev/null +++ b/NetSSL_Win/src/CertificateHandlerFactory.cpp @@ -0,0 +1,46 @@ +// +// CertificateHandlerFactory.cpp +// +// $Id: //poco/1.4/NetSSL_Win/src/CertificateHandlerFactory.cpp#1 $ +// +// Library: NetSSL_Win +// Package: SSLCore +// Module: CertificateHandlerFactory +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "Poco/Net/CertificateHandlerFactory.h" +#include "Poco/Net/SSLManager.h" + + +namespace Poco { +namespace Net { + + +CertificateHandlerFactory::CertificateHandlerFactory() +{ +} + + +CertificateHandlerFactory::~CertificateHandlerFactory() +{ +} + + +CertificateHandlerFactoryRegistrar::CertificateHandlerFactoryRegistrar(const std::string& name, CertificateHandlerFactory* pFactory) +{ + SSLManager::instance().certificateHandlerFactoryMgr().setFactory(name, pFactory); +} + + +CertificateHandlerFactoryRegistrar::~CertificateHandlerFactoryRegistrar() +{ +} + + +} } // namespace Poco::Net diff --git a/NetSSL_Win/src/CertificateHandlerFactoryMgr.cpp b/NetSSL_Win/src/CertificateHandlerFactoryMgr.cpp new file mode 100644 index 000000000..04c4e240d --- /dev/null +++ b/NetSSL_Win/src/CertificateHandlerFactoryMgr.cpp @@ -0,0 +1,71 @@ +// +// CertificateHandlerFactoryMgr.cpp +// +// $Id: //poco/1.4/NetSSL_Win/src/CertificateHandlerFactoryMgr.cpp#1 $ +// +// Library: NetSSL_Win +// Package: SSLCore +// Module: CertificateHandlerFactoryMgr +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "Poco/Net/CertificateHandlerFactoryMgr.h" +#include "Poco/Net/ConsoleCertificateHandler.h" +#include "Poco/Net/AcceptCertificateHandler.h" +#include "Poco/Net/RejectCertificateHandler.h" + + +namespace Poco { +namespace Net { + + +CertificateHandlerFactoryMgr::CertificateHandlerFactoryMgr() +{ + setFactory("ConsoleCertificateHandler", new CertificateHandlerFactoryImpl()); + setFactory("AcceptCertificateHandler", new CertificateHandlerFactoryImpl()); + setFactory("RejectCertificateHandler", new CertificateHandlerFactoryImpl()); +} + + +CertificateHandlerFactoryMgr::~CertificateHandlerFactoryMgr() +{ +} + + +void CertificateHandlerFactoryMgr::setFactory(const std::string& name, CertificateHandlerFactory* pFactory) +{ + bool success = _factories.insert(make_pair(name, Poco::SharedPtr(pFactory))).second; + if (!success) + delete pFactory; + poco_assert(success); +} + + +bool CertificateHandlerFactoryMgr::hasFactory(const std::string& name) const +{ + return _factories.find(name) != _factories.end(); +} + + +const CertificateHandlerFactory* CertificateHandlerFactoryMgr::getFactory(const std::string& name) const +{ + FactoriesMap::const_iterator it = _factories.find(name); + if (it != _factories.end()) + return it->second; + else + return 0; +} + + +void CertificateHandlerFactoryMgr::removeFactory(const std::string& name) +{ + _factories.erase(name); +} + + +} } // namespace Poco::Net diff --git a/NetSSL_Win/src/ConsoleCertificateHandler.cpp b/NetSSL_Win/src/ConsoleCertificateHandler.cpp new file mode 100644 index 000000000..17995018b --- /dev/null +++ b/NetSSL_Win/src/ConsoleCertificateHandler.cpp @@ -0,0 +1,55 @@ +// +// ConsoleCertificateHandler.cpp +// +// $Id: //poco/1.4/NetSSL_Win/src/ConsoleCertificateHandler.cpp#1 $ +// +// Library: NetSSL_Win +// Package: SSLCore +// Module: ConsoleCertificateHandler +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "Poco/Net/ConsoleCertificateHandler.h" +#include + + +namespace Poco { +namespace Net { + + +ConsoleCertificateHandler::ConsoleCertificateHandler(bool server): InvalidCertificateHandler(server) +{ +} + + +ConsoleCertificateHandler::~ConsoleCertificateHandler() +{ +} + + +void ConsoleCertificateHandler::onInvalidCertificate(const void*, VerificationErrorArgs& errorCert) +{ + const X509Certificate& aCert = errorCert.certificate(); + std::cout << "\n"; + std::cout << "WARNING: Certificate verification failed\n"; + std::cout << "----------------------------------------\n"; + std::cout << "Issuer Name: " << aCert.issuerName() << "\n"; + std::cout << "Subject Name: " << aCert.subjectName() << "\n\n"; + std::cout << "The certificate yielded the error: " << errorCert.errorMessage() << "\n\n"; + std::cout << "The error occurred in the certificate chain at position " << errorCert.errorDepth() << "\n"; + std::cout << "Accept the certificate (y,n)? "; + char c; + std::cin >> c; + if (c == 'y' || c == 'Y') + errorCert.setIgnoreError(true); + else + errorCert.setIgnoreError(false); +} + + +} } // namespace Poco::Net diff --git a/NetSSL_Win/src/Context.cpp b/NetSSL_Win/src/Context.cpp new file mode 100644 index 000000000..5c9a55420 --- /dev/null +++ b/NetSSL_Win/src/Context.cpp @@ -0,0 +1,364 @@ +// +// Context.cpp +// +// $Id$ +// +// Library: NetSSL_Win +// Package: SSLCore +// Module: Context +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "Poco/Net/Context.h" +#include "Poco/Net/SSLManager.h" +#include "Poco/Net/SSLException.h" +#include "Poco/Net/Utility.h" +#include "Poco/UnicodeConverter.h" +#include "Poco/Format.h" +#include "Poco/File.h" +#include "Poco/FileStream.h" +#include "Poco/MemoryStream.h" +#include "Poco/Base64Decoder.h" +#include "Poco/Buffer.h" +#include +#include + + +namespace Poco { +namespace Net { + + +const std::string Context::CERT_STORE_MY("MY"); +const std::string Context::CERT_STORE_ROOT("ROOT"); +const std::string Context::CERT_STORE_TRUST("TRUST"); +const std::string Context::CERT_STORE_CA("CA"); +const std::string Context::CERT_STORE_USERDS("USERDS"); + + +Context::Context(Usage usage, + const std::string& certNameOrPath, + VerificationMode verMode, + int options, + const std::string& certStore): + _usage(usage), + _mode(verMode), + _options(options), + _extendedCertificateVerification(true), + _certNameOrPath(certNameOrPath), + _certStoreName(certStore), + _hMemCertStore(0), + _hCollectionCertStore(0), + _hRootCertStore(0), + _hCertStore(0), + _pCert(0), + _securityFunctions(SSLManager::instance().securityFunctions()) +{ + init(); +} + + +Context::~Context() +{ + if (_pCert) + { + CertFreeCertificateContext(_pCert); + } + if (_hCertStore) + { + CertCloseStore(_hCertStore, 0); + } + CertCloseStore(_hCollectionCertStore, 0); + CertCloseStore(_hMemCertStore, 0); + if (_hRootCertStore) + { + CertCloseStore(_hRootCertStore, 0); + } + if (_hCreds.dwLower != 0 && _hCreds.dwUpper != 0) + { + _securityFunctions.FreeCredentialsHandle(&_hCreds); + } +} + + +void Context::init() +{ + _hCreds.dwLower = 0; + _hCreds.dwUpper = 0; + + _hMemCertStore = CertOpenStore( + CERT_STORE_PROV_MEMORY, // The memory provider type + 0, // The encoding type is not needed + NULL, // Use the default provider + 0, // Accept the default dwFlags + NULL); // pvPara is not used + + if (!_hMemCertStore) + throw SSLException("Failed to create memory certificate store", GetLastError()); + + _hCollectionCertStore = CertOpenStore( + CERT_STORE_PROV_COLLECTION, // A collection store + 0, // Encoding type; not used with a collection store + NULL, // Use the default provider + 0, // No flags + NULL); // Not needed + + if (!_hCollectionCertStore) + throw SSLException("Failed to create collection store", GetLastError()); + + if (!CertAddStoreToCollection(_hCollectionCertStore, _hMemCertStore, CERT_PHYSICAL_STORE_ADD_ENABLE_FLAG, 1)) + throw SSLException("Failed to add memory certificate store to collection store", GetLastError()); + + if (_options & OPT_TRUST_ROOTS_WIN_CERT_STORE) + { + // add root certificates + std::wstring rootStore; + Poco::UnicodeConverter::convert(CERT_STORE_ROOT, rootStore); + _hRootCertStore = CertOpenSystemStoreW(0, rootStore.c_str()); + if (!_hRootCertStore) + throw SSLException("Failed to open root certificate store", GetLastError()); + if (!CertAddStoreToCollection(_hCollectionCertStore, _hRootCertStore, CERT_PHYSICAL_STORE_ADD_ENABLE_FLAG, 1)) + throw SSLException("Failed to add root certificate store to collection store", GetLastError()); + } +} + + +void Context::enableExtendedCertificateVerification(bool flag) +{ + _extendedCertificateVerification = flag; +} + + +void Context::addTrustedCert(const Poco::Net::X509Certificate& cert) +{ + Poco::FastMutex::ScopedLock lock(_mutex); + if (!CertAddCertificateContextToStore(_hMemCertStore, cert.system(), CERT_STORE_ADD_REPLACE_EXISTING, 0)) + throw CertificateException("Failed to add certificate to store", GetLastError()); +} + + +Poco::Net::X509Certificate Context::certificate() +{ + if (_pCert) + return Poco::Net::X509Certificate(_pCert, true); + + if (_certNameOrPath.empty()) + throw NoCertificateException("Certificate requested, but no certificate name or path provided"); + + if (_options & OPT_LOAD_CERT_FROM_FILE) + { + importCertificate(); + } + else + { + loadCertificate(); + } + + return Poco::Net::X509Certificate(_pCert, true); +} + + +void Context::loadCertificate() +{ + std::wstring wcertStore; + Poco::UnicodeConverter::convert(_certStoreName, wcertStore); + if (!_hCertStore) + { + if (_options & OPT_USE_MACHINE_STORE) + _hCertStore = CertOpenStore(CERT_STORE_PROV_SYSTEM, 0, 0, CERT_SYSTEM_STORE_LOCAL_MACHINE, _certStoreName.c_str()); + else + _hCertStore = CertOpenSystemStoreW(0, wcertStore.c_str()); + } + if (!_hCertStore) throw CertificateException("Failed to open certificate store", _certStoreName, GetLastError()); + + CERT_RDN_ATTR cert_rdn_attr; + cert_rdn_attr.pszObjId = szOID_COMMON_NAME; + cert_rdn_attr.dwValueType = CERT_RDN_ANY_TYPE; + cert_rdn_attr.Value.cbData = (DWORD) _certNameOrPath.size(); + cert_rdn_attr.Value.pbData = (BYTE *) _certNameOrPath.c_str(); + + CERT_RDN cert_rdn; + cert_rdn.cRDNAttr = 1; + cert_rdn.rgRDNAttr = &cert_rdn_attr; + + _pCert = CertFindCertificateInStore(_hCertStore, X509_ASN_ENCODING, 0, CERT_FIND_SUBJECT_ATTR, &cert_rdn, NULL); + if (!_pCert) throw NoCertificateException(Poco::format("Failed to find certificate %s in store %s", _certNameOrPath, _certStoreName)); +} + + +void Context::importCertificate() +{ + Poco::File certFile(_certNameOrPath); + if (!certFile.exists()) throw Poco::FileNotFoundException(_certNameOrPath); + Poco::File::FileSize size = certFile.getSize(); + if (size > 4096) throw Poco::DataFormatException("PKCS #12 certificate file too large", _certNameOrPath); + Poco::Buffer buffer(static_cast(size)); + Poco::FileInputStream istr(_certNameOrPath); + istr.read(buffer.begin(), buffer.size()); + if (istr.gcount() != size) throw Poco::IOException("error reading PKCS #12 certificate file"); + importCertificate(buffer.begin(), buffer.size()); +} + + +void Context::importCertificate(const char* pBuffer, std::size_t size) +{ + std::string password; + SSLManager::instance().PrivateKeyPassphraseRequired.notify(&SSLManager::instance(), password); + std::wstring wpassword; + Poco::UnicodeConverter::toUTF16(password, wpassword); + + // clear UTF-8 password + std::fill(const_cast(password.data()), const_cast(password.data() + password.size()), 'X'); + + CRYPT_DATA_BLOB blob; + blob.cbData = static_cast(size); + blob.pbData = reinterpret_cast(const_cast(pBuffer)); + + HCERTSTORE hTempStore = PFXImportCertStore(&blob, wpassword.data(), PKCS12_ALLOW_OVERWRITE_KEY | PKCS12_INCLUDE_EXTENDED_PROPERTIES); + + // clear UTF-16 password + std::fill(const_cast(wpassword.data()), const_cast(wpassword.data() + password.size()), L'X'); + + if (hTempStore) + { + PCCERT_CONTEXT pCert = 0; + pCert = CertEnumCertificatesInStore(hTempStore, pCert); + while (pCert) + { + PCCERT_CONTEXT pStoreCert = 0; + BOOL res = CertAddCertificateContextToStore(_hMemCertStore, pCert, CERT_STORE_ADD_REPLACE_EXISTING, &pStoreCert); + if (res) + { + if (!_pCert) + { + _pCert = pStoreCert; + } + else + { + CertFreeCertificateContext(pStoreCert); + pStoreCert = 0; + } + } + pCert = CertEnumCertificatesInStore(hTempStore, pCert); + } + CertCloseStore(hTempStore, 0); + } + else throw CertificateException("failed to import certificate", GetLastError()); +} + + +CredHandle& Context::credentials() +{ + Poco::FastMutex::ScopedLock lock(_mutex); + + if (_hCreds.dwLower == 0 && _hCreds.dwUpper == 0) + { + acquireSchannelCredentials(_hCreds); + } + return _hCreds; +} + + +void Context::acquireSchannelCredentials(CredHandle& credHandle) const +{ + SCHANNEL_CRED schannelCred; + ZeroMemory(&schannelCred, sizeof(schannelCred)); + schannelCred.dwVersion = SCHANNEL_CRED_VERSION; + + if (_pCert) + { + schannelCred.cCreds = 1; // how many cred are stored in &pCertContext + schannelCred.paCred = &const_cast(_pCert); + } + + schannelCred.grbitEnabledProtocols = proto(); + + // Windows NT and Windows Me/98/95: revocation checking not supported via flags + if (_options & Context::OPT_PERFORM_REVOCATION_CHECK) + schannelCred.dwFlags |= SCH_CRED_REVOCATION_CHECK_CHAIN; + else + schannelCred.dwFlags |= SCH_CRED_IGNORE_NO_REVOCATION_CHECK | SCH_CRED_IGNORE_REVOCATION_OFFLINE; + + if (isForServerUse()) + { + if (_mode >= Context::VERIFY_STRICT) + schannelCred.dwFlags |= SCH_CRED_NO_SYSTEM_MAPPER; + + if (_mode == Context::VERIFY_NONE) + schannelCred.dwFlags |= SCH_CRED_MANUAL_CRED_VALIDATION; + } + else + { + if (_mode >= Context::VERIFY_STRICT) + schannelCred.dwFlags |= SCH_CRED_NO_DEFAULT_CREDS; + else + schannelCred.dwFlags |= SCH_CRED_USE_DEFAULT_CREDS; + + if (_mode == Context::VERIFY_NONE) + schannelCred.dwFlags |= SCH_CRED_MANUAL_CRED_VALIDATION | SCH_CRED_NO_SERVERNAME_CHECK; + + if (!_extendedCertificateVerification) + schannelCred.dwFlags |= SCH_CRED_NO_SERVERNAME_CHECK; + } + +#if defined(SCH_USE_STRONG_CRYPTO) + if (_options & Context::OPT_USE_STRONG_CRYPTO) + schannelCred.dwFlags |= SCH_USE_STRONG_CRYPTO; +#endif + + schannelCred.hRootStore = _hCollectionCertStore; + + TimeStamp tsExpiry; + tsExpiry.LowPart = tsExpiry.HighPart = 0; + SECURITY_STATUS status = _securityFunctions.AcquireCredentialsHandleW( + NULL, + UNISP_NAME_W, + isForServerUse() ? SECPKG_CRED_INBOUND : SECPKG_CRED_OUTBOUND, + NULL, + &schannelCred, + NULL, + NULL, + &credHandle, + &tsExpiry); + + if (status != SEC_E_OK) + { + throw SSLException("Failed to acquire Schannel credentials", Utility::formatError(status)); + } +} + + +DWORD Context::proto() const +{ + switch (_usage) + { + case Context::CLIENT_USE: + return SP_PROT_SSL3_CLIENT | SP_PROT_TLS1_CLIENT; + case Context::SERVER_USE: + return SP_PROT_SSL3_SERVER | SP_PROT_TLS1_SERVER; + case Context::TLSV1_CLIENT_USE: + return SP_PROT_TLS1_CLIENT; + case Context::TLSV1_SERVER_USE: + return SP_PROT_TLS1_SERVER; +#if defined(SP_PROT_TLS1_1) + case Context::TLSV1_1_CLIENT_USE: + return SP_PROT_TLS1_1_CLIENT; + case Context::TLSV1_1_SERVER_USE: + return SP_PROT_TLS1_1_SERVER; +#endif +#if defined(SP_PROT_TLS1_2) + case Context::TLSV1_2_CLIENT_USE: + return SP_PROT_TLS1_2_CLIENT; + case Context::TLSV1_2_SERVER_USE: + return SP_PROT_TLS1_2_SERVER; +#endif + default: + throw Poco::InvalidArgumentException("Unsupported SSL/TLS protocol version"); + } +} + +} } // namespace Poco::Net diff --git a/NetSSL_Win/src/HTTPSClientSession.cpp b/NetSSL_Win/src/HTTPSClientSession.cpp new file mode 100644 index 000000000..07e66143c --- /dev/null +++ b/NetSSL_Win/src/HTTPSClientSession.cpp @@ -0,0 +1,192 @@ +// +// HTTPSClientSession.cpp +// +// $Id: //poco/1.4/NetSSL_Win/src/HTTPSClientSession.cpp#3 $ +// +// Library: NetSSL_Win +// Package: HTTPSClient +// Module: HTTPSClientSession +// +// Copyright (c) 2006-2010, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "Poco/Net/HTTPSClientSession.h" +#include "Poco/Net/SecureStreamSocket.h" +#include "Poco/Net/SecureStreamSocketImpl.h" +#include "Poco/Net/SSLManager.h" +#include "Poco/Net/SSLException.h" +#include "Poco/Net/HTTPRequest.h" +#include "Poco/Net/HTTPResponse.h" +#include "Poco/Net/NetException.h" +#include "Poco/NumberFormatter.h" + + +using Poco::NumberFormatter; +using Poco::IllegalStateException; + + +namespace Poco { +namespace Net { + + +HTTPSClientSession::HTTPSClientSession(): + HTTPClientSession(SecureStreamSocket()), + _pContext(SSLManager::instance().defaultClientContext()) +{ + setPort(HTTPS_PORT); +} + + +HTTPSClientSession::HTTPSClientSession(const SecureStreamSocket& socket): + HTTPClientSession(socket), + _pContext(socket.context()) +{ + setPort(HTTPS_PORT); +} + + +HTTPSClientSession::HTTPSClientSession(const SecureStreamSocket& socket, Session::Ptr pSession): + HTTPClientSession(socket), + _pContext(socket.context()), + _pSession(pSession) +{ + setPort(HTTPS_PORT); +} + + +HTTPSClientSession::HTTPSClientSession(const std::string& host, Poco::UInt16 port): + HTTPClientSession(SecureStreamSocket()), + _pContext(SSLManager::instance().defaultClientContext()) +{ + setHost(host); + setPort(port); + SecureStreamSocket sss(socket()); + sss.setPeerHostName(host); +} + + +HTTPSClientSession::HTTPSClientSession(Context::Ptr pContext): + HTTPClientSession(SecureStreamSocket(pContext)), + _pContext(pContext) +{ +} + + +HTTPSClientSession::HTTPSClientSession(Context::Ptr pContext, Session::Ptr pSession): + HTTPClientSession(SecureStreamSocket(pContext, pSession)), + _pContext(pContext), + _pSession(pSession) +{ +} + + +HTTPSClientSession::HTTPSClientSession(const std::string& host, Poco::UInt16 port, Context::Ptr pContext): + HTTPClientSession(SecureStreamSocket(pContext)), + _pContext(pContext) +{ + setHost(host); + setPort(port); + SecureStreamSocket sss(socket()); + sss.setPeerHostName(host); +} + + +HTTPSClientSession::HTTPSClientSession(const std::string& host, Poco::UInt16 port, Context::Ptr pContext, Session::Ptr pSession): + HTTPClientSession(SecureStreamSocket(pContext, pSession)), + _pContext(pContext), + _pSession(pSession) +{ + setHost(host); + setPort(port); + SecureStreamSocket sss(socket()); + sss.setPeerHostName(host); +} + + +HTTPSClientSession::~HTTPSClientSession() +{ +} + + +bool HTTPSClientSession::secure() const +{ + return true; +} + + +void HTTPSClientSession::abort() +{ + SecureStreamSocket sss(socket()); + sss.abort(); +} + + +X509Certificate HTTPSClientSession::serverCertificate() +{ + SecureStreamSocket sss(socket()); + return sss.peerCertificate(); +} + + +std::string HTTPSClientSession::proxyRequestPrefix() const +{ + return std::string(); +} + + +void HTTPSClientSession::proxyAuthenticate(HTTPRequest& request) +{ +} + + +void HTTPSClientSession::connect(const SocketAddress& address) +{ + if (getProxyHost().empty()) + { + SecureStreamSocket sss(socket()); + if (_pContext->sessionCacheEnabled()) + { + sss.useSession(_pSession); + } + HTTPSession::connect(address); + if (_pContext->sessionCacheEnabled()) + { + _pSession = sss.currentSession(); + } + } + else + { + StreamSocket proxySocket(proxyConnect()); + SecureStreamSocket secureSocket = SecureStreamSocket::attach(proxySocket, getHost(), _pContext, _pSession); + attachSocket(secureSocket); + if (_pContext->sessionCacheEnabled()) + { + _pSession = secureSocket.currentSession(); + } + } +} + + +int HTTPSClientSession::read(char* buffer, std::streamsize length) +{ + try + { + return HTTPSession::read(buffer, length); + } catch(SSLConnectionUnexpectedlyClosedException&) + { + return 0; + } +} + + +Session::Ptr HTTPSClientSession::sslSession() +{ + return _pSession; +} + + +} } // namespace Poco::Net diff --git a/NetSSL_Win/src/HTTPSSessionInstantiator.cpp b/NetSSL_Win/src/HTTPSSessionInstantiator.cpp new file mode 100644 index 000000000..999dee9a0 --- /dev/null +++ b/NetSSL_Win/src/HTTPSSessionInstantiator.cpp @@ -0,0 +1,70 @@ +// +// HTTPSSessionInstantiator.cpp +// +// $Id: //poco/1.4/NetSSL_Win/src/HTTPSSessionInstantiator.cpp#2 $ +// +// Library: NetSSL_Win +// Package: HTTPSClient +// Module: HTTPSSessionInstantiator +// +// Copyright (c) 2006-2009, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "Poco/Net/HTTPSSessionInstantiator.h" +#include "Poco/Net/HTTPSessionFactory.h" +#include "Poco/Net/HTTPSClientSession.h" + + +namespace Poco { +namespace Net { + + +HTTPSSessionInstantiator::HTTPSSessionInstantiator() +{ +} + + +HTTPSSessionInstantiator::HTTPSSessionInstantiator(Context::Ptr pContext) : + _pContext(pContext) +{ +} + + +HTTPSSessionInstantiator::~HTTPSSessionInstantiator() +{ +} + + +HTTPClientSession* HTTPSSessionInstantiator::createClientSession(const Poco::URI& uri) +{ + poco_assert (uri.getScheme() == "https"); + HTTPSClientSession* pSession = _pContext.isNull() ? new HTTPSClientSession(uri.getHost(), uri.getPort()) : new HTTPSClientSession(uri.getHost(), uri.getPort(), _pContext); + pSession->setProxy(proxyHost(), proxyPort()); + pSession->setProxyCredentials(proxyUsername(), proxyPassword()); + return pSession; +} + + +void HTTPSSessionInstantiator::registerInstantiator() +{ + HTTPSessionFactory::defaultFactory().registerProtocol("https", new HTTPSSessionInstantiator); +} + + +void HTTPSSessionInstantiator::registerInstantiator(Context::Ptr context) +{ + HTTPSessionFactory::defaultFactory().registerProtocol("https", new HTTPSSessionInstantiator(context)); +} + + +void HTTPSSessionInstantiator::unregisterInstantiator() +{ + HTTPSessionFactory::defaultFactory().unregisterProtocol("https"); +} + + +} } // namespace Poco::Net diff --git a/NetSSL_Win/src/HTTPSStreamFactory.cpp b/NetSSL_Win/src/HTTPSStreamFactory.cpp new file mode 100644 index 000000000..5e2367252 --- /dev/null +++ b/NetSSL_Win/src/HTTPSStreamFactory.cpp @@ -0,0 +1,174 @@ +// +// HTTPSStreamFactory.cpp +// +// $Id: //poco/1.4/NetSSL_Win/src/HTTPSStreamFactory.cpp#2 $ +// +// Library: NetSSL_Win +// Package: HTTPSClient +// Module: HTTPSStreamFactory +// +// Copyright (c) 2006-2012, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "Poco/Net/HTTPSStreamFactory.h" +#include "Poco/Net/HTTPSClientSession.h" +#include "Poco/Net/HTTPIOStream.h" +#include "Poco/Net/HTTPRequest.h" +#include "Poco/Net/HTTPResponse.h" +#include "Poco/Net/HTTPCredentials.h" +#include "Poco/Net/NetException.h" +#include "Poco/URI.h" +#include "Poco/URIStreamOpener.h" +#include "Poco/UnbufferedStreamBuf.h" +#include "Poco/NullStream.h" +#include "Poco/StreamCopier.h" + + +using Poco::URIStreamFactory; +using Poco::URI; +using Poco::URIStreamOpener; +using Poco::UnbufferedStreamBuf; + + +namespace Poco { +namespace Net { + + +HTTPSStreamFactory::HTTPSStreamFactory(): + _proxyPort(HTTPSession::HTTP_PORT) +{ +} + + +HTTPSStreamFactory::HTTPSStreamFactory(const std::string& proxyHost, Poco::UInt16 proxyPort): + _proxyHost(proxyHost), + _proxyPort(proxyPort) +{ +} + + +HTTPSStreamFactory::HTTPSStreamFactory(const std::string& proxyHost, Poco::UInt16 proxyPort, const std::string& proxyUsername, const std::string& proxyPassword): + _proxyHost(proxyHost), + _proxyPort(proxyPort), + _proxyUsername(proxyUsername), + _proxyPassword(proxyPassword) +{ +} + + +HTTPSStreamFactory::~HTTPSStreamFactory() +{ +} + + +std::istream* HTTPSStreamFactory::open(const URI& uri) +{ + poco_assert (uri.getScheme() == "https" || uri.getScheme() == "http"); + + URI resolvedURI(uri); + URI proxyUri; + HTTPClientSession* pSession = 0; + HTTPResponse res; + try + { + bool retry = false; + bool authorize = false; + int redirects = 0; + std::string username; + std::string password; + + do + { + if (!pSession) + { + if (resolvedURI.getScheme() != "http") + pSession = new HTTPSClientSession(resolvedURI.getHost(), resolvedURI.getPort()); + else + pSession = new HTTPClientSession(resolvedURI.getHost(), resolvedURI.getPort()); + if (proxyUri.empty()) + pSession->setProxy(_proxyHost, _proxyPort); + else + pSession->setProxy(proxyUri.getHost(), proxyUri.getPort()); + pSession->setProxyCredentials(_proxyUsername, _proxyPassword); + } + std::string path = resolvedURI.getPathAndQuery(); + if (path.empty()) path = "/"; + HTTPRequest req(HTTPRequest::HTTP_GET, path, HTTPMessage::HTTP_1_1); + + if (authorize) + { + HTTPCredentials::extractCredentials(uri, username, password); + HTTPCredentials cred(username, password); + cred.authenticate(req, res); + } + + pSession->sendRequest(req); + std::istream& rs = pSession->receiveResponse(res); + bool moved = (res.getStatus() == HTTPResponse::HTTP_MOVED_PERMANENTLY || + res.getStatus() == HTTPResponse::HTTP_FOUND || + res.getStatus() == HTTPResponse::HTTP_SEE_OTHER || + res.getStatus() == HTTPResponse::HTTP_TEMPORARY_REDIRECT); + if (moved) + { + resolvedURI.resolve(res.get("Location")); + if (!username.empty()) + { + resolvedURI.setUserInfo(username + ":" + password); + authorize = false; + } + delete pSession; pSession = 0; + ++redirects; + retry = true; + } + else if (res.getStatus() == HTTPResponse::HTTP_OK) + { + return new HTTPResponseStream(rs, pSession); + } + else if (res.getStatus() == HTTPResponse::HTTP_USEPROXY && !retry) + { + // The requested resource MUST be accessed through the proxy + // given by the Location field. The Location field gives the + // URI of the proxy. The recipient is expected to repeat this + // single request via the proxy. 305 responses MUST only be generated by origin servers. + // only use for one single request! + proxyUri.resolve(res.get("Location")); + delete pSession; pSession = 0; + retry = true; // only allow useproxy once + } + else if (res.getStatus() == HTTPResponse::HTTP_UNAUTHORIZED && !authorize) + { + authorize = true; + retry = true; + Poco::NullOutputStream null; + Poco::StreamCopier::copyStream(rs, null); + } + else throw HTTPException(res.getReason(), uri.toString()); + } + while (retry && redirects < MAX_REDIRECTS); + throw HTTPException("Too many redirects", uri.toString()); + } + catch (...) + { + delete pSession; + throw; + } +} + + +void HTTPSStreamFactory::registerFactory() +{ + URIStreamOpener::defaultOpener().registerStreamFactory("https", new HTTPSStreamFactory); +} + + +void HTTPSStreamFactory::unregisterFactory() +{ + URIStreamOpener::defaultOpener().unregisterStreamFactory("https"); +} + + +} } // namespace Poco::Net diff --git a/NetSSL_Win/src/InvalidCertificateHandler.cpp b/NetSSL_Win/src/InvalidCertificateHandler.cpp new file mode 100644 index 000000000..07d7fc55e --- /dev/null +++ b/NetSSL_Win/src/InvalidCertificateHandler.cpp @@ -0,0 +1,54 @@ +// +// InvalidCertificateHandler.cpp +// +// $Id: //poco/1.4/NetSSL_Win/src/InvalidCertificateHandler.cpp#1 $ +// +// Library: NetSSL_Win +// Package: SSLCore +// Module: InvalidCertificateHandler +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "Poco/Net/InvalidCertificateHandler.h" +#include "Poco/Net/SSLManager.h" +#include "Poco/Delegate.h" + + +using Poco::Delegate; + + +namespace Poco { +namespace Net { + + +InvalidCertificateHandler::InvalidCertificateHandler(bool handleErrorsOnServerSide): _handleErrorsOnServerSide(handleErrorsOnServerSide) +{ + if (_handleErrorsOnServerSide) + SSLManager::instance().ServerVerificationError += Delegate(this, &InvalidCertificateHandler::onInvalidCertificate); + else + SSLManager::instance().ClientVerificationError += Delegate(this, &InvalidCertificateHandler::onInvalidCertificate); +} + + +InvalidCertificateHandler::~InvalidCertificateHandler() +{ + try + { + if (_handleErrorsOnServerSide) + SSLManager::instance().ServerVerificationError -= Delegate(this, &InvalidCertificateHandler::onInvalidCertificate); + else + SSLManager::instance().ClientVerificationError -= Delegate(this, &InvalidCertificateHandler::onInvalidCertificate); + } + catch (...) + { + poco_unexpected(); + } +} + + +} } // namespace Poco::Net diff --git a/NetSSL_Win/src/KeyConsoleHandler.cpp b/NetSSL_Win/src/KeyConsoleHandler.cpp new file mode 100644 index 000000000..6e1d1a0e4 --- /dev/null +++ b/NetSSL_Win/src/KeyConsoleHandler.cpp @@ -0,0 +1,42 @@ +// +// KeyConsoleHandler.cpp +// +// $Id$ +// +// Library: NetSSL_Win +// Package: SSLCore +// Module: KeyConsoleHandler +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "Poco/Net/KeyConsoleHandler.h" +#include + + +namespace Poco { +namespace Net { + + +KeyConsoleHandler::KeyConsoleHandler(bool server):PrivateKeyPassphraseHandler(server) +{ +} + + +KeyConsoleHandler::~KeyConsoleHandler() +{ +} + + +void KeyConsoleHandler::onPrivateKeyRequested(const void* pSender, std::string& privateKey) +{ + std::cout << "Please enter the passphrase for the private key: "; + std::cin >> privateKey; +} + + +} } // namespace Poco::Net diff --git a/NetSSL_Win/src/KeyFileHandler.cpp b/NetSSL_Win/src/KeyFileHandler.cpp new file mode 100644 index 000000000..1efeaf9aa --- /dev/null +++ b/NetSSL_Win/src/KeyFileHandler.cpp @@ -0,0 +1,63 @@ +// +// KeyFileHandler.cpp +// +// $Id$ +// +// Library: NetSSL_Win +// Package: SSLCore +// Module: KeyFileHandler +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "Poco/Net/KeyFileHandler.h" +#include "Poco/Net/SSLManager.h" +#include "Poco/File.h" +#include "Poco/Util/AbstractConfiguration.h" +#include "Poco/Util/Application.h" +#include "Poco/Util/OptionException.h" + + +namespace Poco { +namespace Net { + + +const std::string KeyFileHandler::CFG_PRIV_KEY_FILE("privateKeyPassphraseHandler.options.password"); + + +KeyFileHandler::KeyFileHandler(bool server):PrivateKeyPassphraseHandler(server) +{ +} + + +KeyFileHandler::~KeyFileHandler() +{ +} + + +void KeyFileHandler::onPrivateKeyRequested(const void* pSender, std::string& privateKey) +{ + try + { + Poco::Util::AbstractConfiguration& config = Poco::Util::Application::instance().config(); + std::string prefix = serverSide() ? SSLManager::CFG_SERVER_PREFIX : SSLManager::CFG_CLIENT_PREFIX; + if (!config.hasProperty(prefix + CFG_PRIV_KEY_FILE)) + throw Poco::Util::EmptyOptionException(std::string("Missing Configuration Entry: ") + prefix + CFG_PRIV_KEY_FILE); + + privateKey = config.getString(prefix + CFG_PRIV_KEY_FILE); + } + catch (Poco::NullPointerException&) + { + throw Poco::IllegalStateException( + "An application configuration is required to obtain the private key passphrase, " + "but no Poco::Util::Application instance is available." + ); + } +} + + +} } // namespace Poco::Net diff --git a/NetSSL_Win/src/PrivateKeyFactory.cpp b/NetSSL_Win/src/PrivateKeyFactory.cpp new file mode 100644 index 000000000..e75f586f0 --- /dev/null +++ b/NetSSL_Win/src/PrivateKeyFactory.cpp @@ -0,0 +1,46 @@ +// +// PrivateKeyFactory.cpp +// +// $Id$ +// +// Library: NetSSL_Win +// Package: SSLCore +// Module: PrivateKeyFactory +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "Poco/Net/PrivateKeyFactory.h" +#include "Poco/Net/SSLManager.h" + + +namespace Poco { +namespace Net { + + +PrivateKeyFactory::PrivateKeyFactory() +{ +} + + +PrivateKeyFactory::~PrivateKeyFactory() +{ +} + + +PrivateKeyFactoryRegistrar::PrivateKeyFactoryRegistrar(const std::string& name, PrivateKeyFactory* pFactory) +{ + SSLManager::instance().privateKeyFactoryMgr().setFactory(name, pFactory); +} + + +PrivateKeyFactoryRegistrar::~PrivateKeyFactoryRegistrar() +{ +} + + +} } // namespace Poco::Net diff --git a/NetSSL_Win/src/PrivateKeyFactoryMgr.cpp b/NetSSL_Win/src/PrivateKeyFactoryMgr.cpp new file mode 100644 index 000000000..3886728d6 --- /dev/null +++ b/NetSSL_Win/src/PrivateKeyFactoryMgr.cpp @@ -0,0 +1,69 @@ +// +// PrivateKeyFactoryMgr.cpp +// +// $Id$ +// +// Library: NetSSL_Win +// Package: SSLCore +// Module: PrivateKeyFactoryMgr +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "Poco/Net/PrivateKeyFactoryMgr.h" +#include "Poco/Net/KeyFileHandler.h" +#include "Poco/Net/KeyConsoleHandler.h" + + +namespace Poco { +namespace Net { + + +PrivateKeyFactoryMgr::PrivateKeyFactoryMgr() +{ + setFactory("KeyFileHandler", new PrivateKeyFactoryImpl()); + setFactory("KeyConsoleHandler", new PrivateKeyFactoryImpl()); +} + + +PrivateKeyFactoryMgr::~PrivateKeyFactoryMgr() +{ +} + + +void PrivateKeyFactoryMgr::setFactory(const std::string& name, PrivateKeyFactory* pFactory) +{ + bool success = _factories.insert(make_pair(name, Poco::SharedPtr(pFactory))).second; + if (!success) + delete pFactory; + poco_assert(success); +} + + +bool PrivateKeyFactoryMgr::hasFactory(const std::string& name) const +{ + return _factories.find(name) != _factories.end(); +} + + +const PrivateKeyFactory* PrivateKeyFactoryMgr::getFactory(const std::string& name) const +{ + FactoriesMap::const_iterator it = _factories.find(name); + if (it != _factories.end()) + return it->second; + else + return 0; +} + + +void PrivateKeyFactoryMgr::removeFactory(const std::string& name) +{ + _factories.erase(name); +} + + +} } // namespace Poco::Net diff --git a/NetSSL_Win/src/PrivateKeyPassphraseHandler.cpp b/NetSSL_Win/src/PrivateKeyPassphraseHandler.cpp new file mode 100644 index 000000000..fccbb85c9 --- /dev/null +++ b/NetSSL_Win/src/PrivateKeyPassphraseHandler.cpp @@ -0,0 +1,48 @@ +// +// PrivateKeyPassphraseHandler.cpp +// +// $Id$ +// +// Library: NetSSL_Win +// Package: SSLCore +// Module: PrivateKeyPassphraseHandler +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "Poco/Net/PrivateKeyPassphraseHandler.h" +#include "Poco/Net/SSLManager.h" +#include "Poco/Delegate.h" + + +using Poco::Delegate; + + +namespace Poco { +namespace Net { + + +PrivateKeyPassphraseHandler::PrivateKeyPassphraseHandler(bool onServerSide): _serverSide(onServerSide) +{ + SSLManager::instance().PrivateKeyPassphraseRequired += Delegate(this, &PrivateKeyPassphraseHandler::onPrivateKeyRequested); +} + + +PrivateKeyPassphraseHandler::~PrivateKeyPassphraseHandler() +{ + try + { + SSLManager::instance().PrivateKeyPassphraseRequired -= Delegate(this, &PrivateKeyPassphraseHandler::onPrivateKeyRequested); + } + catch (...) + { + poco_unexpected(); + } +} + + +} } // namespace Poco::Net diff --git a/NetSSL_Win/src/RejectCertificateHandler.cpp b/NetSSL_Win/src/RejectCertificateHandler.cpp new file mode 100644 index 000000000..e7dd84edf --- /dev/null +++ b/NetSSL_Win/src/RejectCertificateHandler.cpp @@ -0,0 +1,40 @@ +// +// RejectCertificateHandler.cpp +// +// $Id: //poco/1.4/NetSSL_Win/src/RejectCertificateHandler.cpp#1 $ +// +// Library: NetSSL_Win +// Package: SSLCore +// Module: RejectCertificateHandler +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "Poco/Net/RejectCertificateHandler.h" + + +namespace Poco { +namespace Net { + + +RejectCertificateHandler::RejectCertificateHandler(bool server): InvalidCertificateHandler(server) +{ +} + + +RejectCertificateHandler::~RejectCertificateHandler() +{ +} + + +void RejectCertificateHandler::onInvalidCertificate(const void*, VerificationErrorArgs& errorCert) +{ + errorCert.setIgnoreError(false); +} + + +} } // namespace Poco::Net diff --git a/NetSSL_Win/src/SSLException.cpp b/NetSSL_Win/src/SSLException.cpp new file mode 100644 index 000000000..6a313da3d --- /dev/null +++ b/NetSSL_Win/src/SSLException.cpp @@ -0,0 +1,34 @@ +// +// SSLException.cpp +// +// $Id$ +// +// Library: NetSSL_Win +// Package: SSLCore +// Module: SSLException +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "Poco/Net/SSLException.h" +#include + + +namespace Poco { +namespace Net { + + +POCO_IMPLEMENT_EXCEPTION(SSLException, NetException, "SSL Exception") +POCO_IMPLEMENT_EXCEPTION(SSLContextException, SSLException, "SSL context exception") +POCO_IMPLEMENT_EXCEPTION(CertificateException, SSLException, "Certificate exception") +POCO_IMPLEMENT_EXCEPTION(NoCertificateException, CertificateException, "No certificate") +POCO_IMPLEMENT_EXCEPTION(InvalidCertificateException, CertificateException, "Invalid certficate") +POCO_IMPLEMENT_EXCEPTION(CertificateValidationException, CertificateException, "Certificate validation error") +POCO_IMPLEMENT_EXCEPTION(SSLConnectionUnexpectedlyClosedException, SSLException, "SSL connection unexpectedly closed") + + +} } // namespace Poco::Net diff --git a/NetSSL_Win/src/SSLManager.cpp b/NetSSL_Win/src/SSLManager.cpp new file mode 100644 index 000000000..ef08481a3 --- /dev/null +++ b/NetSSL_Win/src/SSLManager.cpp @@ -0,0 +1,423 @@ +// +// SSLManager.cpp +// +// $Id$ +// +// Library: NetSSL_Win +// Package: SSLCore +// Module: SSLManager +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "Poco/Net/SSLManager.h" +#include "Poco/Net/Context.h" +#include "Poco/Net/Utility.h" +#include "Poco/Net/PrivateKeyPassphraseHandler.h" +#include "Poco/SingletonHolder.h" +#include "Poco/Delegate.h" +#include "Poco/Util/Application.h" +#include "Poco/Util/OptionException.h" + + +namespace Poco { +namespace Net { + + +const std::string SSLManager::CFG_CERT_NAME("certificateName"); +const std::string SSLManager::VAL_CERT_NAME(""); +const std::string SSLManager::CFG_CERT_PATH("certificatePath"); +const std::string SSLManager::VAL_CERT_PATH(""); +const std::string SSLManager::CFG_CERT_STORE("certificateStore"); +const std::string SSLManager::VAL_CERT_STORE("MY"); +const std::string SSLManager::CFG_VER_MODE("verificationMode"); +const Context::VerificationMode SSLManager::VAL_VER_MODE(Context::VERIFY_RELAXED); +const std::string SSLManager::CFG_REVOCATION_CHECK("revocationChecking"); +const bool SSLManager::VAL_REVOCATION_CHECK(true); +const std::string SSLManager::CFG_TRUST_ROOTS("trustRoots"); +const bool SSLManager::VAL_TRUST_ROOTS(true); +const std::string SSLManager::CFG_USE_MACHINE_STORE("useMachineStore"); +const bool SSLManager::VAL_USE_MACHINE_STORE(false); +const std::string SSLManager::CFG_USE_STRONG_CRYPTO("useStrongCrypto"); +const bool SSLManager::VAL_USE_STRONG_CRYPTO(true); +const std::string SSLManager::CFG_DELEGATE_HANDLER("privateKeyPassphraseHandler.name"); +const std::string SSLManager::VAL_DELEGATE_HANDLER("KeyConsoleHandler"); +const std::string SSLManager::CFG_CERTIFICATE_HANDLER("invalidCertificateHandler.name"); +const std::string SSLManager::VAL_CERTIFICATE_HANDLER("ConsoleCertificateHandler"); +const std::string SSLManager::CFG_SERVER_PREFIX("schannel.server."); +const std::string SSLManager::CFG_CLIENT_PREFIX("schannel.client."); +const std::string SSLManager::CFG_REQUIRE_TLSV1("requireTLSv1"); +const std::string SSLManager::CFG_REQUIRE_TLSV1_1("requireTLSv1_1"); +const std::string SSLManager::CFG_REQUIRE_TLSV1_2("requireTLSv1_2"); + + +SSLManager::SSLManager(): + _hSecurityModule(0) +{ + loadSecurityLibrary(); +} + + +SSLManager::~SSLManager() +{ + try + { + shutdown(); + + } + catch (...) + { + poco_unexpected(); + } +} + + +namespace +{ + static Poco::SingletonHolder singleton; +} + + +SSLManager& SSLManager::instance() +{ + return *singleton.get(); +} + + +void SSLManager::initializeServer(PrivateKeyPassphraseHandlerPtr pPassphraseHandler, InvalidCertificateHandlerPtr pCertHandler, Context::Ptr pContext) +{ + _ptrServerPassphraseHandler = pPassphraseHandler; + _ptrServerCertificateHandler = pCertHandler; + _ptrDefaultServerContext = pContext; +} + + +void SSLManager::initializeClient(PrivateKeyPassphraseHandlerPtr pPassphraseHandler, InvalidCertificateHandlerPtr pCertHandler, Context::Ptr pContext) +{ + _ptrClientPassphraseHandler = pPassphraseHandler; + _ptrClientCertificateHandler = pCertHandler; + _ptrDefaultClientContext = pContext; +} + + +Context::Ptr SSLManager::defaultServerContext() +{ + Poco::FastMutex::ScopedLock lock(_mutex); + + if (!_ptrDefaultServerContext) + initDefaultContext(true); + + return _ptrDefaultServerContext; +} + + +Context::Ptr SSLManager::defaultClientContext() +{ + Poco::FastMutex::ScopedLock lock(_mutex); + + if (!_ptrDefaultClientContext) + initDefaultContext(false); + + return _ptrDefaultClientContext; +} + + +SSLManager::PrivateKeyPassphraseHandlerPtr SSLManager::serverPassphraseHandler() +{ + Poco::FastMutex::ScopedLock lock(_mutex); + + if (!_ptrServerPassphraseHandler) + initPassphraseHandler(true); + + return _ptrServerPassphraseHandler; +} + + +SSLManager::PrivateKeyPassphraseHandlerPtr SSLManager::clientPassphraseHandler() +{ + Poco::FastMutex::ScopedLock lock(_mutex); + + if (!_ptrClientPassphraseHandler) + initPassphraseHandler(false); + + return _ptrClientPassphraseHandler; +} + + +SSLManager::InvalidCertificateHandlerPtr SSLManager::serverCertificateHandler() +{ + Poco::FastMutex::ScopedLock lock(_mutex); + + if (!_ptrServerCertificateHandler) + initCertificateHandler(true); + + return _ptrServerCertificateHandler; +} + + +SSLManager::InvalidCertificateHandlerPtr SSLManager::clientCertificateHandler() +{ + Poco::FastMutex::ScopedLock lock(_mutex); + + if (!_ptrClientCertificateHandler) + initCertificateHandler(false); + + return _ptrClientCertificateHandler; +} + + +void SSLManager::initDefaultContext(bool server) +{ + if (server && _ptrDefaultServerContext) return; + if (!server && _ptrDefaultClientContext) return; + + initEvents(server); + + const std::string prefix = server ? CFG_SERVER_PREFIX : CFG_CLIENT_PREFIX; + Poco::Util::AbstractConfiguration& config = appConfig(); + std::string certName = config.getString(prefix + CFG_CERT_NAME, VAL_CERT_NAME); + std::string certPath = config.getString(prefix + CFG_CERT_PATH, VAL_CERT_PATH); + std::string certStore = config.getString(prefix + CFG_CERT_STORE, VAL_CERT_STORE); + + bool requireTLSv1 = config.getBool(prefix + CFG_REQUIRE_TLSV1, false); + bool requireTLSv1_1 = config.getBool(prefix + CFG_REQUIRE_TLSV1_1, false); + bool requireTLSv1_2 = config.getBool(prefix + CFG_REQUIRE_TLSV1_2, false); + + // optional options for which we have defaults defined + Context::VerificationMode verMode = VAL_VER_MODE; + if (config.hasProperty(prefix + CFG_VER_MODE)) + { + // either: none, relaxed, strict, once + std::string mode = config.getString(prefix + CFG_VER_MODE); + verMode = Utility::convertVerificationMode(mode); + } + bool revocChecking = config.getBool(prefix + CFG_REVOCATION_CHECK, VAL_REVOCATION_CHECK); + bool trustRoots = config.getBool(prefix + CFG_TRUST_ROOTS, VAL_TRUST_ROOTS); + bool useMachineStore = config.getBool(prefix + CFG_USE_MACHINE_STORE, VAL_USE_MACHINE_STORE); + bool useStrongCrypto = config.getBool(prefix + CFG_USE_STRONG_CRYPTO, VAL_USE_STRONG_CRYPTO); + + int options = 0; + if (revocChecking) options |= Context::OPT_PERFORM_REVOCATION_CHECK; + if (trustRoots) options |= Context::OPT_TRUST_ROOTS_WIN_CERT_STORE; + if (useMachineStore) options |= Context::OPT_USE_MACHINE_STORE; + if (useStrongCrypto) options |= Context::OPT_USE_STRONG_CRYPTO; + if (!certPath.empty()) + { + options |= Context::OPT_LOAD_CERT_FROM_FILE; + certName = certPath; + } + + Context::Usage usage; + if (server) + { + if (requireTLSv1_2) + usage = Context::TLSV1_2_SERVER_USE; + else if (requireTLSv1_1) + usage = Context::TLSV1_1_SERVER_USE; + else if (requireTLSv1) + usage = Context::TLSV1_SERVER_USE; + else + usage = Context::SERVER_USE; + _ptrDefaultServerContext = new Context(usage, certName, verMode, options, certStore); + } + else + { + if (requireTLSv1_2) + usage = Context::TLSV1_2_CLIENT_USE; + else if (requireTLSv1_1) + usage = Context::TLSV1_1_CLIENT_USE; + else if (requireTLSv1) + usage = Context::TLSV1_CLIENT_USE; + else + usage = Context::CLIENT_USE; + _ptrDefaultClientContext = new Context(usage, certName, verMode, options, certStore); + } +} + + +void SSLManager::initEvents(bool server) +{ + initPassphraseHandler(server); + initCertificateHandler(server); +} + + +void SSLManager::initPassphraseHandler(bool server) +{ + if (server && _ptrServerPassphraseHandler) return; + if (!server && _ptrClientPassphraseHandler) return; + + std::string prefix = server ? CFG_SERVER_PREFIX : CFG_CLIENT_PREFIX; + Poco::Util::AbstractConfiguration& config = appConfig(); + + std::string className(config.getString(prefix + CFG_DELEGATE_HANDLER, VAL_DELEGATE_HANDLER)); + + const PrivateKeyFactory* pFactory = 0; + if (privateKeyFactoryMgr().hasFactory(className)) + { + pFactory = privateKeyFactoryMgr().getFactory(className); + } + + if (pFactory) + { + if (server) + _ptrServerPassphraseHandler = pFactory->create(server); + else + _ptrClientPassphraseHandler = pFactory->create(server); + } + else throw Poco::Util::UnknownOptionException(std::string("No passphrase handler known with the name ") + className); +} + + +void SSLManager::initCertificateHandler(bool server) +{ + if (server && _ptrServerCertificateHandler) return; + if (!server && _ptrClientCertificateHandler) return; + + std::string prefix = server ? CFG_SERVER_PREFIX : CFG_CLIENT_PREFIX; + Poco::Util::AbstractConfiguration& config = appConfig(); + + std::string className(config.getString(prefix + CFG_CERTIFICATE_HANDLER, VAL_CERTIFICATE_HANDLER)); + + const CertificateHandlerFactory* pFactory = 0; + if (certificateHandlerFactoryMgr().hasFactory(className)) + { + pFactory = certificateHandlerFactoryMgr().getFactory(className); + } + + if (pFactory) + { + if (server) + _ptrServerCertificateHandler = pFactory->create(true); + else + _ptrClientCertificateHandler = pFactory->create(false); + } + else throw Poco::Util::UnknownOptionException("No InvalidCertificate handler known with the name", className); +} + + +void SSLManager::shutdown() +{ + ClientVerificationError.clear(); + ServerVerificationError.clear(); + _ptrServerPassphraseHandler = 0; + _ptrServerCertificateHandler = 0; + _ptrDefaultServerContext = 0; + _ptrClientPassphraseHandler = 0; + _ptrClientCertificateHandler = 0; + _ptrDefaultClientContext = 0; + + unloadSecurityLibrary(); +} + + +void SSLManager::loadSecurityLibrary() +{ + if (_hSecurityModule) return; + + OSVERSIONINFO VerInfo; + std::wstring dllPath; + + // Find out which security DLL to use, depending on + // whether we are on Win2k, NT or Win9x + + VerInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + if (!GetVersionEx(&VerInfo)) + throw Poco::SystemException("Cannot determine OS version"); + +#if defined(_WIN32_WCE) + dllPath = L"Secur32.dll"; +#else + if (VerInfo.dwPlatformId == VER_PLATFORM_WIN32_NT + && VerInfo.dwMajorVersion == 4) + { + dllPath = L"Security.dll"; + } + else if (VerInfo.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS || + VerInfo.dwPlatformId == VER_PLATFORM_WIN32_NT ) + { + dllPath = L"Secur32.dll"; + } + else + { + throw Poco::SystemException("Cannot determine which security DLL to use"); + } +#endif + + // + // Load Security DLL + // + + _hSecurityModule = LoadLibraryW(dllPath.c_str()); + if(_hSecurityModule == 0) + { + throw Poco::SystemException("Failed to load security DLL"); + } + +#if defined(_WIN32_WCE) + INIT_SECURITY_INTERFACE pInitSecurityInterface = (INIT_SECURITY_INTERFACE)GetProcAddressW( _hSecurityModule, L"InitSecurityInterfaceW"); +#else + INIT_SECURITY_INTERFACE pInitSecurityInterface = (INIT_SECURITY_INTERFACE)GetProcAddress( _hSecurityModule, "InitSecurityInterfaceW"); +#endif + + if (!pInitSecurityInterface) + { + FreeLibrary(_hSecurityModule); + _hSecurityModule = 0; + throw Poco::SystemException("Failed to initialize security DLL (no init function)"); + } + + PSecurityFunctionTable pSecurityFunc = pInitSecurityInterface(); + if (!pSecurityFunc) + { + FreeLibrary(_hSecurityModule); + _hSecurityModule = 0; + throw Poco::SystemException("Failed to initialize security DLL (no function table)"); + } + + CopyMemory(&_securityFunctions, pSecurityFunc, sizeof(_securityFunctions)); +} + + +void SSLManager::unloadSecurityLibrary() +{ + if (_hSecurityModule) + { + FreeLibrary(_hSecurityModule); + _hSecurityModule = 0; + } +} + + +Poco::Util::AbstractConfiguration& SSLManager::appConfig() +{ + try + { + return Poco::Util::Application::instance().config(); + } + catch (Poco::NullPointerException&) + { + throw Poco::IllegalStateException( + "An application configuration is required to initialize the Poco::Net::SSLManager, " + "but no Poco::Util::Application instance is available." + ); + } +} + + +void initializeSSL() +{ +} + + +void uninitializeSSL() +{ + SSLManager::instance().shutdown(); +} + + +} } // namespace Poco::Net diff --git a/NetSSL_Win/src/SecureSMTPClientSession.cpp b/NetSSL_Win/src/SecureSMTPClientSession.cpp new file mode 100644 index 000000000..b08ed825b --- /dev/null +++ b/NetSSL_Win/src/SecureSMTPClientSession.cpp @@ -0,0 +1,66 @@ +// +// SecureSMTPClientSession.h +// +// $Id: //poco/1.4/NetSSL_Win/src/SecureSMTPClientSession.cpp#1 $ +// +// Library: NetSSL_Win +// Package: Mail +// Module: SecureSMTPClientSession +// +// Copyright (c) 2010, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "Poco/Net/SecureSMTPClientSession.h" +#include "Poco/Net/SecureStreamSocket.h" +#include "Poco/Net/SSLManager.h" +#include "Poco/Net/DialogSocket.h" + + +namespace Poco { +namespace Net { + + +SecureSMTPClientSession::SecureSMTPClientSession(const StreamSocket& socket): + SMTPClientSession(socket) +{ +} + + +SecureSMTPClientSession::SecureSMTPClientSession(const std::string& host, Poco::UInt16 port): + SMTPClientSession(host, port), + _host(host) +{ +} + + +SecureSMTPClientSession::~SecureSMTPClientSession() +{ +} + + +bool SecureSMTPClientSession::startTLS() +{ + return startTLS(SSLManager::instance().defaultClientContext()); +} + + +bool SecureSMTPClientSession::startTLS(Context::Ptr pContext) +{ + int status = 0; + std::string response; + + status = sendCommand("STARTTLS", response); + if (!isPositiveCompletion(status)) return false; + + SecureStreamSocket sss(SecureStreamSocket::attach(socket(), _host, pContext)); + socket() = sss; + + return true; +} + + +} } // namespace Poco::Net diff --git a/NetSSL_Win/src/SecureServerSocket.cpp b/NetSSL_Win/src/SecureServerSocket.cpp new file mode 100644 index 000000000..019eb3078 --- /dev/null +++ b/NetSSL_Win/src/SecureServerSocket.cpp @@ -0,0 +1,123 @@ +// +// SecureServerSocket.cpp +// +// $Id: //poco/1.4/NetSSL_Win/src/SecureServerSocket.cpp#1 $ +// +// Library: NetSSL_Win +// Package: SSLSockets +// Module: SecureServerSocket +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "Poco/Net/SecureServerSocket.h" +#include "Poco/Net/SecureServerSocketImpl.h" +#include "Poco/Net/SecureStreamSocket.h" +#include "Poco/Net/SSLManager.h" +#include "Poco/Exception.h" + + +using Poco::InvalidArgumentException; + + +namespace Poco { +namespace Net { + + +SecureServerSocket::SecureServerSocket(): + ServerSocket(new SecureServerSocketImpl(SSLManager::instance().defaultServerContext()), true) +{ +} + + +SecureServerSocket::SecureServerSocket(Context::Ptr pContext): + ServerSocket(new SecureServerSocketImpl(pContext), true) +{ +} + + +SecureServerSocket::SecureServerSocket(const Socket& socket): + ServerSocket(socket) +{ + if (!dynamic_cast(impl())) + throw InvalidArgumentException("Cannot assign incompatible socket"); +} + + +SecureServerSocket::SecureServerSocket(const SocketAddress& address, int backlog): + ServerSocket(new SecureServerSocketImpl(SSLManager::instance().defaultServerContext()), true) +{ + impl()->bind(address, true); + impl()->listen(backlog); +} + + +SecureServerSocket::SecureServerSocket(const SocketAddress& address, int backlog, Context::Ptr pContext): + ServerSocket(new SecureServerSocketImpl(pContext), true) +{ + impl()->bind(address, true); + impl()->listen(backlog); +} + + +SecureServerSocket::SecureServerSocket(Poco::UInt16 port, int backlog): + ServerSocket(new SecureServerSocketImpl(SSLManager::instance().defaultServerContext()), true) +{ + IPAddress wildcardAddr; + SocketAddress address(wildcardAddr, port); + impl()->bind(address, true); + impl()->listen(backlog); +} + +SecureServerSocket::SecureServerSocket(Poco::UInt16 port, int backlog, Context::Ptr pContext): + ServerSocket(new SecureServerSocketImpl(pContext), true) +{ + IPAddress wildcardAddr; + SocketAddress address(wildcardAddr, port); + impl()->bind(address, true); + impl()->listen(backlog); +} + + +SecureServerSocket::~SecureServerSocket() +{ +} + + +SecureServerSocket& SecureServerSocket::operator = (const Socket& socket) +{ + if (&socket != this) + { + if (dynamic_cast(socket.impl())) + ServerSocket::operator = (socket); + else + throw InvalidArgumentException("Cannot assign incompatible socket"); + } + return *this; +} + + +StreamSocket SecureServerSocket::acceptConnection(SocketAddress& clientAddr) +{ + return SecureStreamSocket(impl()->acceptConnection(clientAddr)); +} + + +StreamSocket SecureServerSocket::acceptConnection() +{ + SocketAddress clientAddr; + return SecureStreamSocket(impl()->acceptConnection(clientAddr)); +} + + +Context::Ptr SecureServerSocket::context() const +{ + return static_cast(impl())->context(); +} + + +} } // namespace Poco::Net diff --git a/NetSSL_Win/src/SecureServerSocketImpl.cpp b/NetSSL_Win/src/SecureServerSocketImpl.cpp new file mode 100644 index 000000000..df97e3a40 --- /dev/null +++ b/NetSSL_Win/src/SecureServerSocketImpl.cpp @@ -0,0 +1,117 @@ +// +// SecureServerSocketImpl.cpp +// +// $Id: //poco/1.4/NetSSL_Win/src/SecureServerSocketImpl.cpp#1 $ +// +// Library: NetSSL_Win +// Package: SSLSockets +// Module: SecureServerSocketImpl +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "Poco/Net/SecureServerSocketImpl.h" + + +namespace Poco { +namespace Net { + + +SecureServerSocketImpl::SecureServerSocketImpl(Context::Ptr pContext): + _impl(new ServerSocketImpl, pContext) +{ +} + + +SecureServerSocketImpl::~SecureServerSocketImpl() +{ + reset(); +} + + +SocketImpl* SecureServerSocketImpl::acceptConnection(SocketAddress& clientAddr) +{ + return _impl.acceptConnection(clientAddr); +} + + +void SecureServerSocketImpl::connect(const SocketAddress& address) +{ + throw Poco::InvalidAccessException("Cannot connect() a SecureServerSocket"); +} + + +void SecureServerSocketImpl::connect(const SocketAddress& address, const Poco::Timespan& timeout) +{ + throw Poco::InvalidAccessException("Cannot connect() a SecureServerSocket"); +} + + +void SecureServerSocketImpl::connectNB(const SocketAddress& address) +{ + throw Poco::InvalidAccessException("Cannot connect() a SecureServerSocket"); +} + + +void SecureServerSocketImpl::bind(const SocketAddress& address, bool reuseAddress) +{ + _impl.bind(address, reuseAddress); + reset(_impl.sockfd()); +} + + +void SecureServerSocketImpl::listen(int backlog) +{ + _impl.listen(backlog); + reset(_impl.sockfd()); +} + + +void SecureServerSocketImpl::close() +{ + reset(); + _impl.close(); +} + + +int SecureServerSocketImpl::sendBytes(const void* buffer, int length, int flags) +{ + throw Poco::InvalidAccessException("Cannot sendBytes() on a SecureServerSocket"); +} + + +int SecureServerSocketImpl::receiveBytes(void* buffer, int length, int flags) +{ + throw Poco::InvalidAccessException("Cannot receiveBytes() on a SecureServerSocket"); +} + + +int SecureServerSocketImpl::sendTo(const void* buffer, int length, const SocketAddress& address, int flags) +{ + throw Poco::InvalidAccessException("Cannot sendTo() on a SecureServerSocket"); +} + + +int SecureServerSocketImpl::receiveFrom(void* buffer, int length, SocketAddress& address, int flags) +{ + throw Poco::InvalidAccessException("Cannot receiveFrom() on a SecureServerSocket"); +} + + +void SecureServerSocketImpl::sendUrgent(unsigned char data) +{ + throw Poco::InvalidAccessException("Cannot sendUrgent() on a SecureServerSocket"); +} + + +bool SecureServerSocketImpl::secure() const +{ + return true; +} + + +} } // namespace Poco::Net diff --git a/NetSSL_Win/src/SecureSocketImpl.cpp b/NetSSL_Win/src/SecureSocketImpl.cpp new file mode 100644 index 000000000..17e035768 --- /dev/null +++ b/NetSSL_Win/src/SecureSocketImpl.cpp @@ -0,0 +1,1665 @@ +// +// SecureSocketImpl.cpp +// +// $Id$ +// +// Library: NetSSL_Win +// Package: SSLSockets +// Module: SecureSocketImpl +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "Poco/Net/SecureSocketImpl.h" +#include "Poco/Net/SSLException.h" +#include "Poco/Net/SSLManager.h" +#include "Poco/Net/Utility.h" +#include "Poco/Net/SecureStreamSocketImpl.h" +#include "Poco/Net/StreamSocket.h" +#include "Poco/Net/StreamSocketImpl.h" +#include "Poco/Format.h" +#include "Poco/UnicodeConverter.h" +#include +#include + + +namespace Poco { +namespace Net { + + +class StateMachine +{ +public: + typedef bool (StateMachine::*ConditionMethod)(SOCKET sockfd); + typedef void (SecureSocketImpl::*StateImpl)(void); + + StateMachine(); + ~StateMachine(); + + static StateMachine& instance(); + + // Conditions + bool readable(SOCKET sockfd); + bool writable(SOCKET sockfd); + bool readOrWritable(SOCKET sockfd); + bool none(SOCKET sockfd); + void select(fd_set* fdRead, fd_set* fdWrite, SOCKET sockfd); + + void execute(SecureSocketImpl* pSock); + +private: + StateMachine(const StateMachine&); + StateMachine& operator = (const StateMachine&); + + typedef std::pair ConditionState; + std::vector _states; +}; + + +SecureSocketImpl::SecureSocketImpl(Poco::AutoPtr pSocketImpl, Context::Ptr pContext): + _pSocket(pSocketImpl), + _pContext(pContext), + _mode(pContext->isForServerUse() ? MODE_SERVER : MODE_CLIENT), + _clientAuthRequired(pContext->verificationMode() >= Context::VERIFY_STRICT), + _securityFunctions(SSLManager::instance().securityFunctions()), + _pOwnCertificate(0), + _pPeerCertificate(0), + _hCreds(), + _hContext(), + _contextFlags(0), + _overflowBuffer(0), + _sendBuffer(0), + _recvBuffer(IO_BUFFER_SIZE), + _recvBufferOffset(0), + _ioBufferSize(0), + _streamSizes(), + _outSecBuffer(&_securityFunctions, true), + _inSecBuffer(&_securityFunctions, false), + _extraSecBuffer(), + _securityStatus(SEC_E_INCOMPLETE_MESSAGE), + _state(ST_INITIAL), + _needData(true), + _needHandshake(false) +{ + _hCreds.dwLower = 0; + _hCreds.dwUpper = 0; + + _hContext.dwLower = 0; + _hContext.dwUpper = 0; + + _streamSizes.cbBlockSize = 0; + _streamSizes.cbHeader = 0; + _streamSizes.cbMaximumMessage = 0; + _streamSizes.cbTrailer = 0; + + _overflowBuffer.resize(0); + + initCommon(); +} + + +SecureSocketImpl::~SecureSocketImpl() +{ + cleanup(); +} + + +void SecureSocketImpl::initCommon() +{ + _contextFlags = ISC_REQ_SEQUENCE_DETECT + | ISC_REQ_REPLAY_DETECT + | ISC_REQ_CONFIDENTIALITY + | ISC_RET_EXTENDED_ERROR + | ISC_REQ_ALLOCATE_MEMORY + | ISC_REQ_STREAM; + + if (_pContext->verificationMode() == Context::VERIFY_NONE) + { + _contextFlags |= ISC_REQ_MANUAL_CRED_VALIDATION; + } + else if (_pContext->verificationMode() == Context::VERIFY_RELAXED) + { + _contextFlags |= ISC_REQ_INTEGRITY; + } + else if (_pContext->verificationMode() >= Context::VERIFY_STRICT) + { + _contextFlags |= ISC_REQ_INTEGRITY; + } + + if (_pContext->verificationMode() == Context::VERIFY_RELAXED) + { + _contextFlags |= ISC_REQ_MANUAL_CRED_VALIDATION; + } +} + + +void SecureSocketImpl::cleanup() +{ + _peerHostName.clear(); + + _hCreds.dwLower = 0; + _hCreds.dwUpper = 0; + + if (_hContext.dwLower != 0 && _hContext.dwUpper != 0) + { + _securityFunctions.DeleteSecurityContext(&_hContext); + _hContext.dwLower = 0; + _hContext.dwUpper = 0; + } + + if (_pOwnCertificate) + { + CertFreeCertificateContext(_pOwnCertificate); + _pOwnCertificate = 0; + } + + if (_pPeerCertificate) + { + CertFreeCertificateContext(_pPeerCertificate); + _pPeerCertificate = 0; + } + + _outSecBuffer.release(); + _inSecBuffer.release(); + + _overflowBuffer.resize(0); +} + + +SocketImpl* SecureSocketImpl::acceptConnection(SocketAddress& clientAddr) +{ + StreamSocket ss = _pSocket->acceptConnection(clientAddr); + Poco::AutoPtr pSecureStreamSocketImpl = new SecureStreamSocketImpl(static_cast(ss.impl()), _pContext); + pSecureStreamSocketImpl->acceptSSL(); + pSecureStreamSocketImpl->duplicate(); + return pSecureStreamSocketImpl; +} + + +void SecureSocketImpl::connect(const SocketAddress& address, bool performHandshake) +{ + _state = ST_ERROR; + _pSocket->connect(address); + connectSSL(performHandshake); + _state = ST_DONE; +} + + +void SecureSocketImpl::connect(const SocketAddress& address, const Poco::Timespan& timeout, bool performHandshake) +{ + _state = ST_ERROR; + _pSocket->connect(address, timeout); + connectSSL(performHandshake); + _state = ST_DONE; +} + + +void SecureSocketImpl::connectNB(const SocketAddress& address) +{ + try + { + _state = ST_CONNECTING; + _pSocket->connectNB(address); + } + catch (...) + { + _state = ST_ERROR; + } +} + + +void SecureSocketImpl::bind(const SocketAddress& address, bool reuseAddress) +{ + _pSocket->bind(address, reuseAddress); +} + + +void SecureSocketImpl::listen(int backlog) +{ + _mode = MODE_SERVER; + + if (_hCreds.dwLower == 0 && _hCreds.dwUpper == 0) + { + initServerContext(); + } + _pSocket->listen(backlog); +} + + +void SecureSocketImpl::shutdown() +{ + if (_mode == MODE_SERVER) + serverDisconnect(&_hCreds, &_hContext); + else + clientDisconnect(&_hCreds, &_hContext); + + _pSocket->shutdown(); +} + + +void SecureSocketImpl::close() +{ + if (_mode == MODE_SERVER) + serverDisconnect(&_hCreds, &_hContext); + else + clientDisconnect(&_hCreds, &_hContext); + + _pSocket->close(); + cleanup(); +} + + +void SecureSocketImpl::abort() +{ + _pSocket->shutdown(); + cleanup(); +} + + +int SecureSocketImpl::available() const +{ + return static_cast(_overflowBuffer.size() + _recvBufferOffset); +} + + +void SecureSocketImpl::acceptSSL() +{ + _state = ST_DONE; + initServerContext(); + _needHandshake = true; +} + + +void SecureSocketImpl::verifyPeerCertificate() +{ + if (_peerHostName.empty()) + _peerHostName = _pSocket->peerAddress().host().toString(); + + verifyPeerCertificate(_peerHostName); +} + + +void SecureSocketImpl::verifyPeerCertificate(const std::string& hostName) +{ + Context::VerificationMode mode = _pContext->verificationMode(); + if (mode == Context::VERIFY_NONE || !_pContext->extendedCertificateVerificationEnabled() || + (mode != Context::VERIFY_STRICT && isLocalHost(hostName))) + { + return; + } + + + if (_mode == MODE_SERVER) + serverVerifyCertificate(); + else + clientVerifyCertificate(hostName); +} + + +bool SecureSocketImpl::isLocalHost(const std::string& hostName) +{ + SocketAddress addr(hostName, 0); + return addr.host().isLoopback(); +} + + +int SecureSocketImpl::sendRawBytes(const void* buffer, int length, int flags) +{ + return _pSocket->sendBytes(buffer, length, flags); +} + + +int SecureSocketImpl::receiveRawBytes(void* buffer, int length, int flags) +{ + return _pSocket->receiveBytes(buffer, length, flags); +} + + +int SecureSocketImpl::sendBytes(const void* buffer, int length, int flags) +{ + if (_needHandshake) + { + completeHandshake(); + _needHandshake = false; + } + + if (_state == ST_ERROR) return 0; + + if (_state != ST_DONE) + { + bool establish = _pSocket->getBlocking(); + if (establish) + { + while (_state != ST_DONE) + { + stateMachine(); + } + } + else + { + stateMachine(); + return -1; + } + } + + int rc = 0; + int dataToSend = length; + int dataSent = 0; + const char* pBuffer = reinterpret_cast(buffer); + + if (_sendBuffer.capacity() != _ioBufferSize) + _sendBuffer.setCapacity(_ioBufferSize); + + while (dataToSend > 0) + { + AutoSecBufferDesc<4> msg(&_securityFunctions, false); + int dataSize = dataToSend; + if (dataSize > _streamSizes.cbMaximumMessage) + dataSize = _streamSizes.cbMaximumMessage; + SecBuffer* pDataBuffer = 0; + SecBuffer* pExtraBuffer = 0; + + std::memcpy(_sendBuffer.begin() + _streamSizes.cbHeader, pBuffer + dataSent, dataSize); + + msg.setSecBufferStreamHeader(0, _sendBuffer.begin(), _streamSizes.cbHeader); + msg.setSecBufferData(1, _sendBuffer.begin() + _streamSizes.cbHeader, dataSize); + msg.setSecBufferStreamTrailer(2, _sendBuffer.begin() + _streamSizes.cbHeader + dataSize, _streamSizes.cbTrailer); + msg.setSecBufferEmpty(3); + + SECURITY_STATUS securityStatus = _securityFunctions.EncryptMessage(&_hContext, 0, &msg, 0); + + if (FAILED(securityStatus) && securityStatus != SEC_E_CONTEXT_EXPIRED) + throw SSLException("Failed to encrypt message", Utility::formatError(securityStatus)); + + int outBufferLen = msg[0].cbBuffer + msg[1].cbBuffer + msg[2].cbBuffer; + + int sent = sendRawBytes(_sendBuffer.begin(), outBufferLen, flags); + if (_pSocket->getBlocking() && sent == -1) + { + if (dataSent == 0) + return -1; + else + return dataSent; + } + if (sent != outBufferLen) + throw SSLException("Failed to send encrypted message"); + + dataToSend -= dataSize; + dataSent += dataSize; + rc += sent; + } + return dataSent; +} + + +int SecureSocketImpl::receiveBytes(void* buffer, int length, int flags) +{ + if (_needHandshake) + { + completeHandshake(); + _needHandshake = false; + } + + if (_state == ST_ERROR) return 0; + if (_state != ST_DONE) + { + bool establish = _pSocket->getBlocking(); + if (establish) + { + while (_state != ST_DONE) + { + stateMachine(); + } + } + else + { + stateMachine(); + return -1; + } + } + + int rc(0); + std::size_t overflowSize = _overflowBuffer.size(); + if (overflowSize > 0) // any remaining data from previous calls? + { + if (static_cast(length) < overflowSize) + { + rc = length; + std::memcpy(buffer, _overflowBuffer.begin(), rc); + std::memmove(_overflowBuffer.begin(), _overflowBuffer.begin() + rc, overflowSize - rc); + _overflowBuffer.resize(overflowSize - rc); + } + else + { + rc = overflowSize; + std::memcpy(buffer, _overflowBuffer.begin(), rc); + _overflowBuffer.resize(0); + } + } + else + { + // adjust buffer size to optimize memory usage + if (_ioBufferSize != _recvBuffer.capacity() && _recvBufferOffset < _ioBufferSize) + { + _recvBuffer.setCapacity(_ioBufferSize); + } + bool needData = _recvBufferOffset == 0; + bool cont = true; + do + { + if (needData) + { + int numBytes = receiveRawBytes(_recvBuffer.begin() + _recvBufferOffset, _ioBufferSize - _recvBufferOffset); + + if (numBytes == -1) + return -1; + else if (numBytes == 0) + break; + else + _recvBufferOffset += numBytes; + } + else needData = true; + + int bytesDecoded = 0; + _extraSecBuffer.pvBuffer = 0; + _extraSecBuffer.cbBuffer = 0; + SECURITY_STATUS securityStatus = decodeBufferFull(_recvBuffer.begin(), _recvBufferOffset, reinterpret_cast(buffer), length, bytesDecoded); + if (_extraSecBuffer.cbBuffer > 0) + { + std::memmove(_recvBuffer.begin(), _extraSecBuffer.pvBuffer, _extraSecBuffer.cbBuffer); + _recvBufferOffset = _extraSecBuffer.cbBuffer; + } + else + { + _recvBufferOffset = 0; + cont = false; + } + + _extraSecBuffer.pvBuffer = 0; + _extraSecBuffer.cbBuffer = 0; + + if (bytesDecoded > 0) + { + // bytesDecoded contains everything including overflow data + rc = bytesDecoded; + if (rc > length) + rc = length; + return rc; + } + + if (securityStatus == SEC_E_INCOMPLETE_MESSAGE) + { + if (!_pSocket->getBlocking()) + return -1; + continue; + } + + if (securityStatus == SEC_I_CONTEXT_EXPIRED) + { + SetLastError(securityStatus); + break; + } + + if (securityStatus != SEC_E_OK && securityStatus != SEC_I_RENEGOTIATE && securityStatus != SEC_I_CONTEXT_EXPIRED) + { + SetLastError(securityStatus); + break; + } + + if (securityStatus == SEC_I_RENEGOTIATE) + { + _needData = false; + _state = ST_CLIENTHANDSHAKECONDREAD; + if (!_pSocket->getBlocking()) + return -1; + + securityStatus = performClientHandshakeLoop(); + + if (securityStatus != SEC_E_OK) + break; + + if (_extraSecBuffer.pvBuffer) + { + std::memmove(_recvBuffer.begin(), _extraSecBuffer.pvBuffer, _extraSecBuffer.cbBuffer); + _recvBufferOffset = _extraSecBuffer.cbBuffer; + } + + _extraSecBuffer.pvBuffer = 0; + _extraSecBuffer.cbBuffer = 0; + } + } + while (cont); + } + + return rc; +} + + +SECURITY_STATUS SecureSocketImpl::decodeMessage(BYTE* pBuffer, DWORD bufSize, AutoSecBufferDesc<4>& msg, SecBuffer*& pDataBuffer, SecBuffer*& pExtraBuffer) +{ + msg.setSecBufferData(0, pBuffer, bufSize); + msg.setSecBufferEmpty(1); + msg.setSecBufferEmpty(2); + msg.setSecBufferEmpty(3); + pDataBuffer = 0; + pExtraBuffer = 0; + + SECURITY_STATUS securityStatus = _securityFunctions.DecryptMessage(&_hContext, &msg, 0, 0); + + if (securityStatus == SEC_E_OK || securityStatus == SEC_I_RENEGOTIATE) + { + for (int i = 1; i < 4; ++i) + { + if (pDataBuffer == 0 && msg[i].BufferType == SECBUFFER_DATA) + pDataBuffer = &msg[i]; + + if (pExtraBuffer == NULL && msg[i].BufferType == SECBUFFER_EXTRA) + pExtraBuffer = &msg[i]; + } + } + + return securityStatus; +} + + +SECURITY_STATUS SecureSocketImpl::decodeBufferFull(BYTE* pBuffer, DWORD bufSize, char* pOutBuffer, int outLength, int& bytesDecoded) +{ + poco_check_ptr (pBuffer); + poco_assert (bufSize > 0); + poco_check_ptr (pOutBuffer); + poco_assert (outLength > 0); + + _extraSecBuffer.pvBuffer = 0; + _extraSecBuffer.cbBuffer = 0; + + SecBuffer* pDataBuffer = 0; + SecBuffer* pExtraBuffer = 0; + int bytes = 0; + bytesDecoded = 0; + + Poco::Buffer overflowBuffer(0); + int overflowOffset = 0; + SECURITY_STATUS securityStatus = SEC_E_OK; + do + { + AutoSecBufferDesc<4> msg(&_securityFunctions, false); + securityStatus = decodeMessage(pBuffer, bufSize, msg, pDataBuffer, pExtraBuffer); + if (pDataBuffer && pDataBuffer->cbBuffer > 0) + { + bytes = pDataBuffer->cbBuffer; + bytesDecoded += bytes; + // do we have room for more data in pOutBuffer? + if (bytes <= outLength) // yes, everything fits in there + { + outLength -= bytes; + std::memcpy(pOutBuffer, pDataBuffer->pvBuffer, bytes); + pOutBuffer += bytes; + } + else + { + // not enough room in pOutBuffer, write overflow data + // simply reserve bufSize bytes (is large enough even in worst case scenario, no need to re-increase) + overflowBuffer.resize(bufSize); + if (outLength > 0) + { + // make pOutBuffer full + std::memcpy(pOutBuffer, pDataBuffer->pvBuffer, outLength); + // no longer valid to write to pOutBuffer + pOutBuffer = 0; + // copy the rest to ptrOverflow + std::memcpy(overflowBuffer.begin(), reinterpret_cast(pDataBuffer->pvBuffer) + outLength, bytes - outLength); + overflowOffset = bytes - outLength; + outLength = 0; + } + else + { + // append to overflowBuffer + poco_assert_dbg (overflowOffset + bytes <= overflowBuffer.capacity()); + std::memcpy(overflowBuffer.begin() + overflowOffset, pDataBuffer->pvBuffer, bytes); + overflowOffset += bytes; + } + } + } + if (pExtraBuffer && pExtraBuffer->cbBuffer > 0) + { + // we have potentially more data to decode + // decode as much as possible + pBuffer = reinterpret_cast(pExtraBuffer->pvBuffer); + bufSize = pExtraBuffer->cbBuffer; + } + else + { + // everything decoded + if (securityStatus != SEC_E_OK && securityStatus != SEC_E_INCOMPLETE_MESSAGE && securityStatus != SEC_I_RENEGOTIATE && securityStatus != SEC_I_CONTEXT_EXPIRED) + { + throw SSLException("Failed to decode data", Utility::formatError(securityStatus)); + } + else if (securityStatus == SEC_E_OK) + { + pBuffer = 0; + bufSize = 0; + } + } + + if (securityStatus == SEC_I_RENEGOTIATE) + { + _needData = false; + securityStatus = performClientHandshakeLoop(); + if (securityStatus != SEC_E_OK) + break; + } + } + while (securityStatus == SEC_E_OK && pBuffer); + + if (overflowOffset > 0) + { + _overflowBuffer.resize(overflowOffset); + std::memcpy(_overflowBuffer.begin(), overflowBuffer.begin(), overflowOffset); + } + if (bufSize > 0) + { + _extraSecBuffer.cbBuffer = bufSize; + _extraSecBuffer.pvBuffer = pBuffer; + } + + if (pBuffer == 0) securityStatus = SEC_E_OK; + return securityStatus; +} + + +void SecureSocketImpl::setPeerHostName(const std::string& peerHostName) +{ + _peerHostName = peerHostName; +} + + +PCCERT_CONTEXT SecureSocketImpl::loadCertificate(bool mustFindCertificate) +{ + try + { + Poco::Net::X509Certificate cert = _pContext->certificate(); + PCCERT_CONTEXT pCert = cert.system(); + CertDuplicateCertificateContext(pCert); + return pCert; + } + catch (...) + { + if (mustFindCertificate) + throw; + else + return 0; + } +} + + +void SecureSocketImpl::connectSSL(bool completeHandshake) +{ + poco_assert_dbg(_pPeerCertificate == 0); + + if (_peerHostName.empty()) + { + _peerHostName = _pSocket->address().host().toString(); + } + + initClientContext(); + if (completeHandshake) + { + performClientHandshake(); + _needHandshake = false; + } + else + { + _needHandshake = true; + } +} + + +void SecureSocketImpl::completeHandshake() +{ + if (_mode == MODE_SERVER) + performServerHandshake(); + else + performClientHandshake(); +} + + +void SecureSocketImpl::clientConnectVerify() +{ + poco_assert_dbg(!_pPeerCertificate); + poco_assert_dbg(!_peerHostName.empty()); + + try + { + SECURITY_STATUS securityStatus = _securityFunctions.QueryContextAttributesW(&_hContext, SECPKG_ATTR_REMOTE_CERT_CONTEXT, (PVOID) &_pPeerCertificate); + if (securityStatus != SEC_E_OK) + throw SSLException("Failed to obtain peer certificate", Utility::formatError(securityStatus)); + + clientVerifyCertificate(_peerHostName); + + securityStatus = _securityFunctions.QueryContextAttributesW(&_hContext, SECPKG_ATTR_STREAM_SIZES, &_streamSizes); + if (securityStatus != SEC_E_OK) + throw SSLException("Failed to query stream sizes", Utility::formatError(securityStatus)); + + _ioBufferSize = _streamSizes.cbHeader + _streamSizes.cbMaximumMessage + _streamSizes.cbTrailer; + _state = ST_DONE; + } + catch (...) + { + if (_pPeerCertificate) + { + CertFreeCertificateContext(_pPeerCertificate); + _pPeerCertificate = 0; + } + throw; + } +} + + +void SecureSocketImpl::initClientContext() +{ + _pOwnCertificate = loadCertificate(false); + _hCreds = _pContext->credentials(); +} + + +void SecureSocketImpl::performClientHandshake() +{ + performInitialClientHandshake(); + performClientHandshakeLoop(); + clientConnectVerify(); +} + + +void SecureSocketImpl::performInitialClientHandshake() +{ + // get initial security token + _outSecBuffer.reset(true); + _outSecBuffer.setSecBufferToken(0, 0, 0); + + TimeStamp ts; + DWORD contextAttributes(0); + std::wstring whostName; + Poco::UnicodeConverter::convert(_peerHostName, whostName); + _securityStatus = _securityFunctions.InitializeSecurityContextW( + &_hCreds, + 0, + const_cast(whostName.c_str()), + _contextFlags, + 0, + 0, + 0, + 0, + &_hContext, + &_outSecBuffer, + &contextAttributes, + &ts); + + if (_securityStatus != SEC_E_OK) + { + if (_securityStatus == SEC_I_INCOMPLETE_CREDENTIALS) + { + // the server is asking for client credentials, we didn't send one because we were not configured to do so, abort + throw SSLException("Handshake failed: No client credentials configured"); + } + else if (_securityStatus != SEC_I_CONTINUE_NEEDED) + { + throw SSLException("Handshake failed", Utility::formatError(_securityStatus)); + } + } + + // incomplete credentials: more calls to InitializeSecurityContext needed + // send the token + sendInitialTokenOutBuffer(); + + if (_securityStatus == SEC_E_OK) + { + // The security context was successfully initialized. + // There is no need for another InitializeSecurityContext (Schannel) call. + _state = ST_DONE; + return; + } + + //SEC_I_CONTINUE_NEEDED was returned: + // Wait for a return token. The returned token is then passed in + // another call to InitializeSecurityContext (Schannel). The output token can be empty. + + _extraSecBuffer.pvBuffer = 0; + _extraSecBuffer.cbBuffer = 0; + _needData = true; + _state = ST_CLIENTHANDSHAKECONDREAD; + _securityStatus = SEC_E_INCOMPLETE_MESSAGE; +} + + +void SecureSocketImpl::sendInitialTokenOutBuffer() +{ + // send the token + if (_outSecBuffer[0].cbBuffer && _outSecBuffer[0].pvBuffer) + { + int numBytes = sendRawBytes(_outSecBuffer[0].pvBuffer, _outSecBuffer[0].cbBuffer); + if (numBytes != _outSecBuffer[0].cbBuffer) + throw SSLException("Failed to send token to the server"); + } +} + + +SECURITY_STATUS SecureSocketImpl::performClientHandshakeLoop() +{ + _recvBufferOffset = 0; + _securityStatus = SEC_E_INCOMPLETE_MESSAGE; + + while (_securityStatus == SEC_I_CONTINUE_NEEDED || _securityStatus == SEC_E_INCOMPLETE_MESSAGE || _securityStatus == SEC_I_INCOMPLETE_CREDENTIALS) + { + performClientHandshakeLoopCondReceive(); + + if (_securityStatus == SEC_E_OK) + { + performClientHandshakeLoopOK(); + } + else if (_securityStatus == SEC_I_CONTINUE_NEEDED) + { + performClientHandshakeLoopContinueNeeded(); + } + else if (_securityStatus == SEC_E_INCOMPLETE_MESSAGE) + { + performClientHandshakeLoopIncompleteMessage(); + } + else if (FAILED(_securityStatus)) + { + if (_outFlags & ISC_RET_EXTENDED_ERROR) + { + performClientHandshakeLoopExtError(); + } + else + { + performClientHandshakeLoopError(); + } + } + else + { + performClientHandshakeLoopIncompleteMessage(); + } + } + + if (FAILED(_securityStatus)) + { + performClientHandshakeLoopError(); + } + + return _securityStatus; +} + + +void SecureSocketImpl::performClientHandshakeLoopExtError() +{ + poco_assert_dbg (FAILED(_securityStatus)); + + performClientHandshakeSendOutBuffer(); + performClientHandshakeLoopError(); +} + + +void SecureSocketImpl::performClientHandshakeLoopError() +{ + poco_assert_dbg (FAILED(_securityStatus)); + cleanup(); + _state = ST_ERROR; + throw SSLException("Error during handshake", Utility::formatError(_securityStatus)); +} + + +void SecureSocketImpl::performClientHandshakeSendOutBuffer() +{ + if (_outSecBuffer[0].cbBuffer && _outSecBuffer[0].pvBuffer) + { + int numBytes = sendRawBytes(static_cast(_outSecBuffer[0].pvBuffer), _outSecBuffer[0].cbBuffer); + if (numBytes != _outSecBuffer[0].cbBuffer) + throw SSLException("Socket error during handshake"); + + _outSecBuffer.release(0); + } +} + + +void SecureSocketImpl::performClientHandshakeExtraBuffer() +{ + if (_inSecBuffer[1].BufferType == SECBUFFER_EXTRA) + { + std::memmove(_recvBuffer.begin(), _recvBuffer.begin() + (_recvBufferOffset - _inSecBuffer[1].cbBuffer), _inSecBuffer[1].cbBuffer); + _recvBufferOffset = _inSecBuffer[1].cbBuffer; + } + else _recvBufferOffset = 0; +} + + +void SecureSocketImpl::performClientHandshakeLoopOK() +{ + poco_assert_dbg(_securityStatus == SEC_E_OK); + + performClientHandshakeSendOutBuffer(); + performClientHandshakeExtraBuffer(); + _state = ST_VERIFY; +} + + +void SecureSocketImpl::performClientHandshakeLoopInit() +{ + _inSecBuffer.reset(false); + _outSecBuffer.reset(true); +} + + +void SecureSocketImpl::performClientHandshakeLoopReceive() +{ + poco_assert_dbg (_needData); + poco_assert (IO_BUFFER_SIZE > _recvBufferOffset); + + int n = receiveRawBytes(_recvBuffer.begin() + _recvBufferOffset, IO_BUFFER_SIZE - _recvBufferOffset); + if (n <= 0) throw SSLException("Error during handshake: failed to read data"); + + _recvBufferOffset += n; +} + + +void SecureSocketImpl::performClientHandshakeLoopCondReceive() +{ + poco_assert_dbg (_securityStatus == SEC_E_INCOMPLETE_MESSAGE || SEC_I_CONTINUE_NEEDED); + + performClientHandshakeLoopInit(); + if (_needData) + { + performClientHandshakeLoopReceive(); + } + else _needData = true; + + _inSecBuffer.setSecBufferToken(0, _recvBuffer.begin(), _recvBufferOffset); + // inbuffer 1 should be empty + _inSecBuffer.setSecBufferEmpty(1); + + // outBuffer[0] should be empty + _outSecBuffer.setSecBufferToken(0, 0, 0); + + _outFlags = 0; + TimeStamp ts; + _securityStatus = _securityFunctions.InitializeSecurityContextW( + &_hCreds, + &_hContext, + 0, + _contextFlags, + 0, + 0, + &_inSecBuffer, + 0, + 0, + &_outSecBuffer, + &_outFlags, + &ts); + + if (_securityStatus == SEC_E_OK) + { + _state = ST_CLIENTHANDSHAKEOK; + } + else if (_securityStatus == SEC_I_CONTINUE_NEEDED) + { + _state = ST_CLIENTHANDSHAKECONTINUE; + } + else if (FAILED(_securityStatus)) + { + if (_outFlags & ISC_RET_EXTENDED_ERROR) + _state = ST_CLIENTHANDSHAKEEXTERROR; + else + _state = ST_ERROR; + } + else + { + _state = ST_CLIENTHANDSHAKEINCOMPLETE; + } +} + + +void SecureSocketImpl::performClientHandshakeLoopContinueNeeded() +{ + performClientHandshakeSendOutBuffer(); + performClientHandshakeExtraBuffer(); + _state = ST_CLIENTHANDSHAKECONDREAD; +} + + +void SecureSocketImpl::performClientHandshakeLoopIncompleteMessage() +{ + _needData = true; + _state = ST_CLIENTHANDSHAKECONDREAD; +} + + +void SecureSocketImpl::initServerContext() +{ + _pOwnCertificate = loadCertificate(true); + _hCreds = _pContext->credentials(); +} + + +void SecureSocketImpl::performServerHandshake() +{ + serverHandshakeLoop(&_hContext, &_hCreds, _clientAuthRequired, true, true); + + SECURITY_STATUS securityStatus; + if (_clientAuthRequired) + { + poco_assert_dbg (!_pPeerCertificate); + securityStatus = _securityFunctions.QueryContextAttributesW(&_hContext, SECPKG_ATTR_REMOTE_CERT_CONTEXT, &_pPeerCertificate); + + if (securityStatus != SEC_E_OK) + { + if (_pPeerCertificate) + { + CertFreeCertificateContext(_pPeerCertificate); + _pPeerCertificate = 0; + } + throw SSLException("Cannot obtain client certificate", Utility::formatError(securityStatus)); + } + else + { + serverVerifyCertificate(); + } + } + + securityStatus = _securityFunctions.QueryContextAttributesW(&_hContext,SECPKG_ATTR_STREAM_SIZES, &_streamSizes); + if (securityStatus != SEC_E_OK) throw SSLException("Cannot query stream sizes", Utility::formatError(securityStatus)); + + _ioBufferSize = _streamSizes.cbHeader + _streamSizes.cbMaximumMessage + _streamSizes.cbTrailer; +} + + +bool SecureSocketImpl::serverHandshakeLoop(PCtxtHandle phContext, PCredHandle phCred, bool requireClientAuth, bool doInitialRead, bool newContext) +{ + TimeStamp tsExpiry; + int n = 0; + bool doRead = doInitialRead; + bool initContext = newContext; + DWORD outFlags; + SECURITY_STATUS securityStatus = SEC_E_INCOMPLETE_MESSAGE; + + while (securityStatus == SEC_I_CONTINUE_NEEDED || securityStatus == SEC_E_INCOMPLETE_MESSAGE || securityStatus == SEC_I_INCOMPLETE_CREDENTIALS) + { + if (securityStatus == SEC_E_INCOMPLETE_MESSAGE) + { + if (doRead) + { + n = receiveRawBytes(_recvBuffer.begin() + _recvBufferOffset, IO_BUFFER_SIZE - _recvBufferOffset); + + if (n <= 0) + throw SSLException("Failed to receive data in handshake"); + else + _recvBufferOffset += n; + } + else doRead = true; + } + + AutoSecBufferDesc<2> inBuffer(&_securityFunctions, false); + AutoSecBufferDesc<1> outBuffer(&_securityFunctions, true); + inBuffer.setSecBufferToken(0, _recvBuffer.begin(), _recvBufferOffset); + inBuffer.setSecBufferEmpty(1); + outBuffer.setSecBufferToken(0, 0, 0); + + securityStatus = _securityFunctions.AcceptSecurityContext( + phCred, + initContext ? NULL : phContext, + &inBuffer, + _contextFlags, + 0, + initContext ? phContext : NULL, + &outBuffer, + &outFlags, + &tsExpiry); + + initContext = false; + + if (securityStatus == SEC_E_OK || securityStatus == SEC_I_CONTINUE_NEEDED || (FAILED(securityStatus) && (0 != (outFlags & ISC_RET_EXTENDED_ERROR)))) + { + if (outBuffer[0].cbBuffer != 0 && outBuffer[0].pvBuffer != 0) + { + n = sendRawBytes(outBuffer[0].pvBuffer, outBuffer[0].cbBuffer); + outBuffer.release(0); + } + } + + if (securityStatus == SEC_E_OK ) + { + if (inBuffer[1].BufferType == SECBUFFER_EXTRA) + { + std::memmove(_recvBuffer.begin(), _recvBuffer.begin() + (_recvBufferOffset - inBuffer[1].cbBuffer), inBuffer[1].cbBuffer); + _recvBufferOffset = inBuffer[1].cbBuffer; + } + else + { + _recvBufferOffset = 0; + } + return true; + } + else if (FAILED(securityStatus) && securityStatus != SEC_E_INCOMPLETE_MESSAGE) + { + throw SSLException("Handshake failure:", Utility::formatError(securityStatus)); + } + + if (securityStatus != SEC_E_INCOMPLETE_MESSAGE && securityStatus != SEC_I_INCOMPLETE_CREDENTIALS) + { + if (inBuffer[1].BufferType == SECBUFFER_EXTRA) + { + std::memmove(_recvBuffer.begin(), _recvBuffer.begin() + (_recvBufferOffset - inBuffer[1].cbBuffer), inBuffer[1].cbBuffer); + _recvBufferOffset = inBuffer[1].cbBuffer; + } + else + { + _recvBufferOffset = 0; + } + } + } + + return false; +} + + +void SecureSocketImpl::clientVerifyCertificate(const std::string& hostName) +{ + if (_pContext->verificationMode() == Context::VERIFY_NONE) return; + if (!_pPeerCertificate) throw SSLException("No Server certificate"); + if (hostName.empty()) throw SSLException("Server name not set"); + + X509Certificate cert(_pPeerCertificate, true); + + if (!cert.verify(hostName)) + { + VerificationErrorArgs args(cert, 0, SEC_E_CERT_EXPIRED, "The certificate host names do not match the server host name"); + SSLManager::instance().ClientVerificationError(this, args); + if (!args.getIgnoreError()) + throw InvalidCertificateException("Host name verification failed"); + } + + verifyCertificateChainClient(_pPeerCertificate); +} + + +void SecureSocketImpl::verifyCertificateChainClient(PCCERT_CONTEXT pServerCert) +{ + X509Certificate cert(pServerCert, true); + + CERT_CHAIN_PARA chainPara; + PCCERT_CHAIN_CONTEXT pChainContext = NULL; + std::memset(&chainPara, 0, sizeof(chainPara)); + chainPara.cbSize = sizeof(chainPara); + + if (!CertGetCertificateChain( + NULL, + _pPeerCertificate, + NULL, + NULL, + &chainPara, + 0, + NULL, + &pChainContext)) + { + throw SSLException("Cannot get certificate chain", GetLastError()); + } + + HTTPSPolicyCallbackData polHttps; + std::memset(&polHttps, 0, sizeof(HTTPSPolicyCallbackData)); + polHttps.cbStruct = sizeof(HTTPSPolicyCallbackData); + polHttps.dwAuthType = AUTHTYPE_SERVER; + polHttps.fdwChecks = SECURITY_FLAG_IGNORE_UNKNOWN_CA; // we do our own check later on + polHttps.pwszServerName = 0; + + CERT_CHAIN_POLICY_PARA polPara; + std::memset(&polPara, 0, sizeof(polPara)); + polPara.cbSize = sizeof(polPara); + polPara.pvExtraPolicyPara = &polHttps; + + CERT_CHAIN_POLICY_STATUS polStatus; + std::memset(&polStatus, 0, sizeof(polStatus)); + polStatus.cbSize = sizeof(polStatus); + + if (!CertVerifyCertificateChainPolicy( + CERT_CHAIN_POLICY_SSL, + pChainContext, + &polPara, + &polStatus)) + { + VerificationErrorArgs args(cert, 0, GetLastError(), "Failed to verify certificate chain"); + SSLManager::instance().ClientVerificationError(this, args); + if (!args.getIgnoreError()) + { + CertFreeCertificateChain(pChainContext); + throw SSLException("Cannot verify certificate chain"); + } + else return; + } + else if (polStatus.dwError) + { + VerificationErrorArgs args(cert, polStatus.lElementIndex, polStatus.dwError, Utility::formatError(polStatus.dwError)); + SSLManager::instance().ClientVerificationError(this, args); + CertFreeCertificateChain(pChainContext); + if (!args.getIgnoreError()) + { + throw SSLException("Failed to verify certificate chain"); + } + else return; + } + + // now verify CA's + HCERTSTORE trustedCerts = _pContext->certificateStore(); + for (DWORD i = 0; i < pChainContext->cChain; i++) + { + std::vector certs; + for (DWORD k = 0; k < pChainContext->rgpChain[i]->cElement; k++) + { + certs.push_back(pChainContext->rgpChain[i]->rgpElement[k]->pCertContext); + } + // verify that the root of the chain can be found in the trusted store + PCCERT_CONTEXT pResult = CertFindCertificateInStore(trustedCerts, certs.back()->dwCertEncodingType, 0, CERT_FIND_ISSUER_OF, certs.back(), 0); + if (!pResult) + { + poco_assert_dbg (GetLastError() == CRYPT_E_NOT_FOUND); + VerificationErrorArgs args(cert, i, 0, "Certificate Authority not trusted"); + SSLManager::instance().ClientVerificationError(this, args); + CertFreeCertificateChain(pChainContext); + if (!args.getIgnoreError()) + throw CertificateValidationException("Failed to verify certificate chain: CA not trusted"); + else + return; + } + CertFreeCertificateContext(pResult); + +#if !defined(_WIN32_WCE) + // check if cert is revoked + if (_pContext->options() & Context::OPT_PERFORM_REVOCATION_CHECK) + { + CERT_REVOCATION_STATUS revStat; + revStat.cbSize = sizeof(CERT_REVOCATION_STATUS); + + BOOL ok = CertVerifyRevocation( + X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, + CERT_CONTEXT_REVOCATION_TYPE, + certs.size(), + (void**) &certs[0], + CERT_VERIFY_REV_CHAIN_FLAG, + NULL, + &revStat); + + // Revocation check of the root certificate may fail due to missing CRL points, etc. + // We ignore all errors checking the root certificate except CRYPT_E_REVOKED. + if (!ok && (revStat.dwIndex < certs.size() - 1 || revStat.dwError == CRYPT_E_REVOKED)) + { + VerificationErrorArgs args(cert, revStat.dwIndex, revStat.dwReason, Utility::formatError(revStat.dwError)); + SSLManager::instance().ClientVerificationError(this, args); + if (!args.getIgnoreError()) + { + CertFreeCertificateChain(pChainContext); + throw SSLException("Failed to verify revoked certificate chain"); + } + } + else break; + } +#endif + } + CertFreeCertificateChain(pChainContext); +} + + +void SecureSocketImpl::serverVerifyCertificate() +{ + if (_pContext->verificationMode() < Context::VERIFY_STRICT) return; + + // we are now in Strict mode + if (!_pPeerCertificate) throw SSLException("No client certificate"); + + DWORD status = SEC_E_OK; + X509Certificate cert(_pPeerCertificate, true); + + PCCERT_CHAIN_CONTEXT pChainContext = NULL; + CERT_CHAIN_PARA chainPara; + std::memset(&chainPara, 0, sizeof(chainPara)); + chainPara.cbSize = sizeof(chainPara); + + if (!CertGetCertificateChain( + NULL, + _pPeerCertificate, + NULL, + NULL, + &chainPara, + CERT_CHAIN_REVOCATION_CHECK_CHAIN, + NULL, + &pChainContext)) + { + throw SSLException("Cannot get certificate chain", GetLastError()); + } + + HTTPSPolicyCallbackData polHttps; + std::memset(&polHttps, 0, sizeof(HTTPSPolicyCallbackData)); + polHttps.cbStruct = sizeof(HTTPSPolicyCallbackData); + polHttps.dwAuthType = AUTHTYPE_CLIENT; + polHttps.fdwChecks = 0; + polHttps.pwszServerName = 0; + + CERT_CHAIN_POLICY_PARA policyPara; + std::memset(&policyPara, 0, sizeof(policyPara)); + policyPara.cbSize = sizeof(policyPara); + policyPara.pvExtraPolicyPara = &polHttps; + + CERT_CHAIN_POLICY_STATUS policyStatus; + std::memset(&policyStatus, 0, sizeof(policyStatus)); + policyStatus.cbSize = sizeof(policyStatus); + + if (!CertVerifyCertificateChainPolicy(CERT_CHAIN_POLICY_SSL, pChainContext, &policyPara, &policyStatus)) + { + VerificationErrorArgs args(cert, 0, GetLastError(), "Failed to verify certificate chain"); + SSLManager::instance().ServerVerificationError(this, args); + CertFreeCertificateChain(pChainContext); + if (!args.getIgnoreError()) + throw SSLException("Cannot verify certificate chain"); + else + return; + } + else if (policyStatus.dwError) + { + VerificationErrorArgs args(cert, policyStatus.lElementIndex, status, Utility::formatError(policyStatus.dwError)); + SSLManager::instance().ServerVerificationError(this, args); + CertFreeCertificateChain(pChainContext); + if (!args.getIgnoreError()) + throw SSLException("Failed to verify certificate chain"); + else + return; + } + +#if !defined(_WIN32_WCE) + // perform revocation checking + for (DWORD i = 0; i < pChainContext->cChain; i++) + { + std::vector certs; + for (DWORD k = 0; k < pChainContext->rgpChain[i]->cElement; k++) + { + certs.push_back(pChainContext->rgpChain[i]->rgpElement[k]->pCertContext); + } + + CERT_REVOCATION_STATUS revStat; + revStat.cbSize = sizeof(CERT_REVOCATION_STATUS); + + BOOL ok = CertVerifyRevocation( + X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, + CERT_CONTEXT_REVOCATION_TYPE, + certs.size(), + (void**) &certs[0], + CERT_VERIFY_REV_CHAIN_FLAG, + NULL, + &revStat); + if (!ok && (revStat.dwIndex < certs.size() - 1 || revStat.dwError == CRYPT_E_REVOKED)) + { + VerificationErrorArgs args(cert, revStat.dwIndex, revStat.dwReason, Utility::formatError(revStat.dwReason)); + SSLManager::instance().ServerVerificationError(this, args); + if (!args.getIgnoreError()) + { + CertFreeCertificateChain(pChainContext); + throw SSLException("Failed to verify certificate chain"); + } + } + } +#endif + if (pChainContext) + { + CertFreeCertificateChain(pChainContext); + } +} + + +LONG SecureSocketImpl::clientDisconnect(PCredHandle phCreds, CtxtHandle* phContext) +{ + if (phContext->dwLower == 0 && phContext->dwUpper == 0) + { + return SEC_E_OK; + } + + AutoSecBufferDesc<1> tokBuffer(&_securityFunctions, false); + + DWORD tokenType = SCHANNEL_SHUTDOWN; + tokBuffer.setSecBufferToken(0, &tokenType, sizeof(tokenType)); + DWORD status = _securityFunctions.ApplyControlToken(phContext, &tokBuffer); + + if (FAILED(status)) return status; + + DWORD sspiFlags = ISC_REQ_SEQUENCE_DETECT + | ISC_REQ_REPLAY_DETECT + | ISC_REQ_CONFIDENTIALITY + | ISC_RET_EXTENDED_ERROR + | ISC_REQ_ALLOCATE_MEMORY + | ISC_REQ_STREAM; + + AutoSecBufferDesc<1> outBuffer(&_securityFunctions, true); + outBuffer.setSecBufferToken(0, 0, 0); + + DWORD sspiOutFlags; + TimeStamp expiry; + status = _securityFunctions.InitializeSecurityContextW( + phCreds, + phContext, + NULL, + sspiFlags, + 0, + 0, + NULL, + 0, + phContext, + &outBuffer, + &sspiOutFlags, + &expiry); + + return status; +} + + +LONG SecureSocketImpl::serverDisconnect(PCredHandle phCreds, CtxtHandle* phContext) +{ + if (phContext->dwLower == 0 && phContext->dwUpper == 0) + { + // handshake has never been done + poco_assert_dbg (_needHandshake); + return SEC_E_OK; + } + + AutoSecBufferDesc<1> tokBuffer(&_securityFunctions, false); + + DWORD tokenType = SCHANNEL_SHUTDOWN; + tokBuffer.setSecBufferToken(0, &tokenType, sizeof(tokenType)); + DWORD status = _securityFunctions.ApplyControlToken(phContext, &tokBuffer); + + if (FAILED(status)) return status; + + DWORD sspiFlags = ASC_REQ_SEQUENCE_DETECT + | ASC_REQ_REPLAY_DETECT + | ASC_REQ_CONFIDENTIALITY + | ASC_REQ_EXTENDED_ERROR + | ASC_REQ_ALLOCATE_MEMORY + | ASC_REQ_STREAM; + + AutoSecBufferDesc<1> outBuffer(&_securityFunctions, true); + outBuffer.setSecBufferToken(0,0,0); + + DWORD sspiOutFlags; + TimeStamp expiry; + status = _securityFunctions.AcceptSecurityContext( + phCreds, + phContext, + NULL, + sspiFlags, + 0, + NULL, + &outBuffer, + &sspiOutFlags, + &expiry); + + if (FAILED(status)) return status; + + if (outBuffer[0].pvBuffer && outBuffer[0].cbBuffer) + { + int sent = sendRawBytes(outBuffer[0].pvBuffer, outBuffer[0].cbBuffer); + if (sent <= 0) + { + status = WSAGetLastError(); + } + } + + return status; +} + + +void SecureSocketImpl::stateIllegal() +{ + throw Poco::IllegalStateException("SSL state machine"); +} + + +void SecureSocketImpl::stateConnected() +{ + _peerHostName = _pSocket->address().host().toString(); + initClientContext(); + performInitialClientHandshake(); +} + + +void SecureSocketImpl::stateMachine() +{ + StateMachine::instance().execute(this); +} + + +namespace +{ + static Poco::SingletonHolder stateMachineSingleton; +} + + +StateMachine& StateMachine::instance() +{ + return *stateMachineSingleton.get(); +} + + +bool StateMachine::readable(SOCKET sockfd) +{ + fd_set fdRead; + FD_ZERO(&fdRead); + FD_SET(sockfd, &fdRead); + select(&fdRead, 0, sockfd); + return (FD_ISSET(sockfd, &fdRead) != 0); +} + + +bool StateMachine::writable(SOCKET sockfd) +{ + fd_set fdWrite; + FD_ZERO(&fdWrite); + FD_SET(sockfd, &fdWrite); + select(0, &fdWrite, sockfd); + return (FD_ISSET(sockfd, &fdWrite) != 0); +} + + +bool StateMachine::readOrWritable(SOCKET sockfd) +{ + fd_set fdRead, fdWrite; + FD_ZERO(&fdRead); + FD_SET(sockfd, &fdRead); + fdWrite = fdRead; + select(&fdRead, &fdWrite, sockfd); + return (FD_ISSET(sockfd, &fdRead) != 0 || FD_ISSET(sockfd, &fdWrite) != 0); +} + + +bool StateMachine::none(SOCKET sockfd) +{ + return true; +} + + +void StateMachine::select(fd_set* fdRead, fd_set* fdWrite, SOCKET sockfd) +{ + Poco::Timespan remainingTime(((Poco::Timestamp::TimeDiff)SecureSocketImpl::TIMEOUT_MILLISECS)*1000); + int rc(0); + do + { + struct timeval tv; + tv.tv_sec = (long) remainingTime.totalSeconds(); + tv.tv_usec = (long) remainingTime.useconds(); + Poco::Timestamp start; + rc = ::select(int(sockfd) + 1, fdRead, fdWrite, 0, &tv); + if (rc < 0 && SecureSocketImpl::lastError() == POCO_EINTR) + { + Poco::Timestamp end; + Poco::Timespan waited = end - start; + if (waited < remainingTime) + remainingTime -= waited; + else + remainingTime = 0; + } + } + while (rc < 0 && SecureSocketImpl::lastError() == POCO_EINTR); +} + + +StateMachine::StateMachine(): + _states() +{ + //ST_INITIAL: 0, -> this one is illegal, you must call connectNB before + _states.push_back(std::make_pair(&StateMachine::none, &SecureSocketImpl::stateIllegal)); + //ST_CONNECTING: connectNB was called, check if the socket is already available for writing + _states.push_back(std::make_pair(&StateMachine::writable, &SecureSocketImpl::stateConnected)); + //ST_ESTABLISHTUNNELRECEIVED: we got the response, now start the handshake + _states.push_back(std::make_pair(&StateMachine::writable, &SecureSocketImpl::performInitialClientHandshake)); + //ST_CLIENTHANDSHAKECONDREAD: condread + _states.push_back(std::make_pair(&StateMachine::readable, &SecureSocketImpl::performClientHandshakeLoopCondReceive)); + //ST_CLIENTHANDSHAKEINCOMPLETE, + _states.push_back(std::make_pair(&StateMachine::none, &SecureSocketImpl::performClientHandshakeLoopIncompleteMessage)); + //ST_CLIENTHANDSHAKEOK, + _states.push_back(std::make_pair(&StateMachine::writable, &SecureSocketImpl::performClientHandshakeLoopOK)); + //ST_CLIENTHANDSHAKEEXTERROR, + _states.push_back(std::make_pair(&StateMachine::writable, &SecureSocketImpl::performClientHandshakeLoopExtError)); + //ST_CLIENTHANDSHAKECONTINUE, + _states.push_back(std::make_pair(&StateMachine::writable, &SecureSocketImpl::performClientHandshakeLoopContinueNeeded)); + //ST_VERIFY, + _states.push_back(std::make_pair(&StateMachine::none, &SecureSocketImpl::clientConnectVerify)); + //ST_DONE, + _states.push_back(std::make_pair(&StateMachine::none, &SecureSocketImpl::stateIllegal)); + //ST_ERROR + _states.push_back(std::make_pair(&StateMachine::none, &SecureSocketImpl::performClientHandshakeLoopError)); +} + + +void StateMachine::execute(SecureSocketImpl* pSock) +{ + try + { + poco_assert_dbg (pSock); + ConditionState& state = _states[pSock->getState()]; + ConditionMethod& meth = state.first; + if ((this->*state.first)(pSock->sockfd())) + { + (pSock->*(state.second))(); + (pSock->getState() == SecureSocketImpl::ST_DONE); + } + } + catch (...) + { + pSock->setState(SecureSocketImpl::ST_ERROR); + throw; + } +} + + +StateMachine::~StateMachine() +{ +} + + +} } // namespace Poco::Net diff --git a/NetSSL_Win/src/SecureStreamSocket.cpp b/NetSSL_Win/src/SecureStreamSocket.cpp new file mode 100644 index 000000000..91c35a111 --- /dev/null +++ b/NetSSL_Win/src/SecureStreamSocket.cpp @@ -0,0 +1,271 @@ +// +// SecureStreamSocket.cpp +// +// $Id: //poco/1.4/NetSSL_Win/src/SecureStreamSocket.cpp#2 $ +// +// Library: NetSSL_Win +// Package: SSLSockets +// Module: SecureStreamSocket +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "Poco/Net/SecureStreamSocket.h" +#include "Poco/Net/SecureStreamSocketImpl.h" +#include "Poco/Net/SocketImpl.h" +#include "Poco/Net/SSLManager.h" +#include "Poco/Exception.h" + + +using Poco::InvalidArgumentException; + + +namespace Poco { +namespace Net { + + +SecureStreamSocket::SecureStreamSocket(): + StreamSocket(new SecureStreamSocketImpl(SSLManager::instance().defaultClientContext())) +{ +} + + +SecureStreamSocket::SecureStreamSocket(Context::Ptr pContext): + StreamSocket(new SecureStreamSocketImpl(pContext)) +{ +} + + +SecureStreamSocket::SecureStreamSocket(Context::Ptr pContext, Session::Ptr pSession): + StreamSocket(new SecureStreamSocketImpl(pContext)) +{ + useSession(pSession); +} + + +SecureStreamSocket::SecureStreamSocket(const SocketAddress& address): + StreamSocket(new SecureStreamSocketImpl(SSLManager::instance().defaultClientContext())) +{ + connect(address); +} + + +SecureStreamSocket::SecureStreamSocket(const SocketAddress& address, const std::string& hostName): + StreamSocket(new SecureStreamSocketImpl(SSLManager::instance().defaultClientContext())) +{ + static_cast(impl())->setPeerHostName(hostName); + connect(address); +} + + +SecureStreamSocket::SecureStreamSocket(const SocketAddress& address, Context::Ptr pContext): + StreamSocket(new SecureStreamSocketImpl(pContext)) +{ + connect(address); +} + + +SecureStreamSocket::SecureStreamSocket(const SocketAddress& address, Context::Ptr pContext, Session::Ptr pSession): + StreamSocket(new SecureStreamSocketImpl(pContext)) +{ + useSession(pSession); + connect(address); +} + + +SecureStreamSocket::SecureStreamSocket(const SocketAddress& address, const std::string& hostName, Context::Ptr pContext): + StreamSocket(new SecureStreamSocketImpl(pContext)) +{ + static_cast(impl())->setPeerHostName(hostName); + connect(address); +} + + +SecureStreamSocket::SecureStreamSocket(const SocketAddress& address, const std::string& hostName, Context::Ptr pContext, Session::Ptr pSession): + StreamSocket(new SecureStreamSocketImpl(pContext)) +{ + static_cast(impl())->setPeerHostName(hostName); + useSession(pSession); + connect(address); +} + + +SecureStreamSocket::SecureStreamSocket(const Socket& socket): + StreamSocket(socket) +{ + if (!dynamic_cast(impl())) + throw InvalidArgumentException("Cannot assign incompatible socket"); +} + + +SecureStreamSocket::SecureStreamSocket(SocketImpl* pImpl): + StreamSocket(pImpl) +{ + if (!dynamic_cast(impl())) + throw InvalidArgumentException("Cannot assign incompatible socket"); +} + + +SecureStreamSocket::~SecureStreamSocket() +{ +} + + +SecureStreamSocket& SecureStreamSocket::operator = (const Socket& socket) +{ + if (dynamic_cast(socket.impl())) + StreamSocket::operator = (socket); + else + throw InvalidArgumentException("Cannot assign incompatible socket"); + return *this; +} + + +bool SecureStreamSocket::havePeerCertificate() const +{ + return static_cast(impl())->havePeerCertificate(); +} + + +X509Certificate SecureStreamSocket::peerCertificate() const +{ + return static_cast(impl())->peerCertificate(); +} + + +void SecureStreamSocket::setPeerHostName(const std::string& hostName) +{ + static_cast(impl())->setPeerHostName(hostName); +} + + +const std::string& SecureStreamSocket::getPeerHostName() const +{ + return static_cast(impl())->getPeerHostName(); +} + + +SecureStreamSocket SecureStreamSocket::attach(const StreamSocket& streamSocket) +{ + SecureStreamSocketImpl* pImpl = new SecureStreamSocketImpl(static_cast(streamSocket.impl()), SSLManager::instance().defaultClientContext()); + SecureStreamSocket result(pImpl); + pImpl->connectSSL(); + return result; +} + + +SecureStreamSocket SecureStreamSocket::attach(const StreamSocket& streamSocket, Context::Ptr pContext) +{ + SecureStreamSocketImpl* pImpl = new SecureStreamSocketImpl(static_cast(streamSocket.impl()), pContext); + SecureStreamSocket result(pImpl); + pImpl->connectSSL(); + return result; +} + + +SecureStreamSocket SecureStreamSocket::attach(const StreamSocket& streamSocket, Context::Ptr pContext, Session::Ptr pSession) +{ + SecureStreamSocketImpl* pImpl = new SecureStreamSocketImpl(static_cast(streamSocket.impl()), pContext); + SecureStreamSocket result(pImpl); + result.useSession(pSession); + pImpl->connectSSL(); + return result; +} + + +SecureStreamSocket SecureStreamSocket::attach(const StreamSocket& streamSocket, const std::string& peerHostName) +{ + SecureStreamSocketImpl* pImpl = new SecureStreamSocketImpl(static_cast(streamSocket.impl()), SSLManager::instance().defaultClientContext()); + SecureStreamSocket result(pImpl); + result.setPeerHostName(peerHostName); + pImpl->connectSSL(); + return result; +} + + +SecureStreamSocket SecureStreamSocket::attach(const StreamSocket& streamSocket, const std::string& peerHostName, Context::Ptr pContext) +{ + SecureStreamSocketImpl* pImpl = new SecureStreamSocketImpl(static_cast(streamSocket.impl()), pContext); + SecureStreamSocket result(pImpl); + result.setPeerHostName(peerHostName); + pImpl->connectSSL(); + return result; +} + + +SecureStreamSocket SecureStreamSocket::attach(const StreamSocket& streamSocket, const std::string& peerHostName, Context::Ptr pContext, Session::Ptr pSession) +{ + SecureStreamSocketImpl* pImpl = new SecureStreamSocketImpl(static_cast(streamSocket.impl()), pContext); + SecureStreamSocket result(pImpl); + result.setPeerHostName(peerHostName); + result.useSession(pSession); + pImpl->connectSSL(); + return result; +} + + +Context::Ptr SecureStreamSocket::context() const +{ + return static_cast(impl())->context(); +} + + +void SecureStreamSocket::setLazyHandshake(bool flag) +{ + static_cast(impl())->setLazyHandshake(flag); +} + + +bool SecureStreamSocket::getLazyHandshake() const +{ + return static_cast(impl())->getLazyHandshake(); +} + + +void SecureStreamSocket::verifyPeerCertificate() +{ + static_cast(impl())->verifyPeerCertificate(); +} + + +void SecureStreamSocket::verifyPeerCertificate(const std::string& hostName) +{ + static_cast(impl())->verifyPeerCertificate(hostName); +} + + +int SecureStreamSocket::completeHandshake() +{ + return static_cast(impl())->completeHandshake(); +} + + +Session::Ptr SecureStreamSocket::currentSession() +{ + return static_cast(impl())->currentSession(); +} + + +void SecureStreamSocket::useSession(Session::Ptr pSession) +{ + static_cast(impl())->useSession(pSession); +} + + +bool SecureStreamSocket::sessionWasReused() +{ + return static_cast(impl())->sessionWasReused(); +} + + +void SecureStreamSocket::abort() +{ + static_cast(impl())->abort(); +} + + +} } // namespace Poco::Net diff --git a/NetSSL_Win/src/SecureStreamSocketImpl.cpp b/NetSSL_Win/src/SecureStreamSocketImpl.cpp new file mode 100644 index 000000000..ba04f3c2c --- /dev/null +++ b/NetSSL_Win/src/SecureStreamSocketImpl.cpp @@ -0,0 +1,218 @@ +// +// SecureStreamSocketImpl.cpp +// +// $Id: //poco/1.4/NetSSL_Win/src/SecureStreamSocketImpl.cpp#6 $ +// +// Library: NetSSL_Win +// Package: SSLSockets +// Module: SecureStreamSocketImpl +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "Poco/Net/SecureStreamSocketImpl.h" +#include "Poco/Net/SSLException.h" +#include "Poco/Thread.h" + + +namespace Poco { +namespace Net { + + +SecureStreamSocketImpl::SecureStreamSocketImpl(Context::Ptr pContext): + _impl(new StreamSocketImpl, pContext), + _lazyHandshake(false) +{ +} + + +SecureStreamSocketImpl::SecureStreamSocketImpl(StreamSocketImpl* pStreamSocket, Context::Ptr pContext): + _impl(pStreamSocket, pContext), + _lazyHandshake(false) +{ + pStreamSocket->duplicate(); + reset(_impl.sockfd()); +} + + +SecureStreamSocketImpl::~SecureStreamSocketImpl() +{ + reset(); +} + + +SocketImpl* SecureStreamSocketImpl::acceptConnection(SocketAddress& clientAddr) +{ + throw Poco::InvalidAccessException("Cannot acceptConnection() on a SecureStreamSocketImpl"); +} + + +void SecureStreamSocketImpl::acceptSSL() +{ + _impl.acceptSSL(); +} + + +void SecureStreamSocketImpl::connect(const SocketAddress& address) +{ + _impl.connect(address, !_lazyHandshake); + reset(_impl.sockfd()); +} + + +void SecureStreamSocketImpl::connect(const SocketAddress& address, const Poco::Timespan& timeout) +{ + _impl.connect(address, timeout, !_lazyHandshake); + reset(_impl.sockfd()); +} + + +void SecureStreamSocketImpl::connectNB(const SocketAddress& address) +{ + _impl.connectNB(address); + reset(_impl.sockfd()); +} + + +void SecureStreamSocketImpl::connectSSL() +{ + _impl.connectSSL(!_lazyHandshake); +} + + +void SecureStreamSocketImpl::bind(const SocketAddress& address, bool reuseAddress) +{ + throw Poco::InvalidAccessException("Cannot bind() a SecureStreamSocketImpl"); +} + + +void SecureStreamSocketImpl::listen(int backlog) +{ + throw Poco::InvalidAccessException("Cannot listen() on a SecureStreamSocketImpl"); +} + + +void SecureStreamSocketImpl::close() +{ + reset(); + _impl.close(); +} + + +void SecureStreamSocketImpl::abort() +{ + reset(); + _impl.abort(); +} + + +int SecureStreamSocketImpl::sendBytes(const void* buffer, int length, int flags) +{ + return _impl.sendBytes(buffer, length, flags); +} + + +int SecureStreamSocketImpl::receiveBytes(void* buffer, int length, int flags) +{ + return _impl.receiveBytes(buffer, length, flags); +} + + +int SecureStreamSocketImpl::sendTo(const void* buffer, int length, const SocketAddress& address, int flags) +{ + throw Poco::InvalidAccessException("Cannot sendTo() on a SecureStreamSocketImpl"); +} + + +int SecureStreamSocketImpl::receiveFrom(void* buffer, int length, SocketAddress& address, int flags) +{ + throw Poco::InvalidAccessException("Cannot receiveFrom() on a SecureStreamSocketImpl"); +} + + +void SecureStreamSocketImpl::sendUrgent(unsigned char data) +{ + throw Poco::InvalidAccessException("Cannot sendUrgent() on a SecureStreamSocketImpl"); +} + + +int SecureStreamSocketImpl::available() +{ + return _impl.available(); +} + + +void SecureStreamSocketImpl::shutdownReceive() +{ +} + + +void SecureStreamSocketImpl::shutdownSend() +{ +} + + +void SecureStreamSocketImpl::shutdown() +{ + _impl.shutdown(); +} + + +bool SecureStreamSocketImpl::secure() const +{ + return true; +} + + +bool SecureStreamSocketImpl::havePeerCertificate() const +{ + return _impl.peerCertificate() != 0; +} + + +X509Certificate SecureStreamSocketImpl::peerCertificate() const +{ + if (havePeerCertificate()) + { + return X509Certificate(_impl.peerCertificate(), true); + } + else throw SSLException("No certificate available"); +} + + +void SecureStreamSocketImpl::setLazyHandshake(bool flag) +{ + _lazyHandshake = flag; +} + + +bool SecureStreamSocketImpl::getLazyHandshake() const +{ + return _lazyHandshake; +} + + +void SecureStreamSocketImpl::verifyPeerCertificate() +{ + _impl.verifyPeerCertificate(); +} + + +void SecureStreamSocketImpl::verifyPeerCertificate(const std::string& hostName) +{ + _impl.verifyPeerCertificate(hostName); +} + + +int SecureStreamSocketImpl::completeHandshake() +{ + _impl.completeHandshake(); + return 0; +} + + +} } // namespace Poco::Net diff --git a/NetSSL_Win/src/Session.cpp b/NetSSL_Win/src/Session.cpp new file mode 100644 index 000000000..24a521482 --- /dev/null +++ b/NetSSL_Win/src/Session.cpp @@ -0,0 +1,40 @@ +// +// Session.cpp +// +// $Id: //poco/1.4/NetSSL_Win/src/Session.cpp#2 $ +// +// Library: NetSSL_Win +// Package: SSLCore +// Module: Session +// +// Copyright (c) 2010-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#if defined(__APPLE__) +// Some OpenSSL functions are deprecated in OS X 10.7 +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#endif + + +#include "Poco/Net/Session.h" + + +namespace Poco { +namespace Net { + + +Session::Session() +{ +} + + +Session::~Session() +{ +} + + +} } // namespace Poco::Net diff --git a/NetSSL_Win/src/Utility.cpp b/NetSSL_Win/src/Utility.cpp new file mode 100644 index 000000000..11de03169 --- /dev/null +++ b/NetSSL_Win/src/Utility.cpp @@ -0,0 +1,205 @@ +// +// Utility.cpp +// +// $Id$ +// +// Library: NetSSL_Win +// Package: SSLCore +// Module: Utility +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "Poco/Net/Utility.h" +#include "Poco/String.h" +#include "Poco/NumberFormatter.h" +#include "Poco/Util/OptionException.h" +#include +#include + + +namespace Poco { +namespace Net { + + +Poco::FastMutex Utility::_mutex; + + +Context::VerificationMode Utility::convertVerificationMode(const std::string& vMode) +{ + std::string mode = Poco::toLower(vMode); + Context::VerificationMode verMode = Context::VERIFY_STRICT; + + if (mode == "none") + verMode = Context::VERIFY_NONE; + else if (mode == "relaxed") + verMode = Context::VERIFY_RELAXED; + else if (mode == "strict") + verMode = Context::VERIFY_STRICT; + else + throw Poco::Util::OptionException(std::string("Wrong value >") + vMode + std::string("< for a verificationMode. Can only be none, relaxed, strict or once.")); + + return verMode; +} + + +inline void add(std::map& messageMap, long key, const std::string& val) +{ + messageMap.insert(std::make_pair(key, val)); +} + + +std::map Utility::initSSPIErr() +{ + std::map messageMap; + add(messageMap, NTE_BAD_UID, "Bad UID"); + add(messageMap, NTE_BAD_HASH, "Bad Hash"); + add(messageMap, NTE_BAD_KEY, "Bad Key"); + add(messageMap, NTE_BAD_LEN, "Bad Length"); + add(messageMap, NTE_BAD_DATA, "Bad Data"); + add(messageMap, NTE_BAD_SIGNATURE, "Invalid signature"); + add(messageMap, NTE_BAD_VER, "Bad Version of provider"); + add(messageMap, NTE_BAD_ALGID, "Invalid algorithm specified"); + add(messageMap, NTE_BAD_FLAGS, "Invalid flags specified"); + add(messageMap, NTE_BAD_TYPE, "Invalid type specified"); + add(messageMap, NTE_BAD_KEY_STATE, "Key not valid for use in specified state"); + add(messageMap, NTE_BAD_HASH_STATE, "Hash not valid for use in specified state"); + add(messageMap, NTE_NO_KEY, "Key does not exist"); + add(messageMap, NTE_NO_MEMORY, "Insufficient memory available for the operation"); + add(messageMap, NTE_EXISTS, "Object already exists"); + add(messageMap, NTE_PERM, "Permission denied"); + add(messageMap, NTE_NOT_FOUND, "Object was not found"); + add(messageMap, NTE_DOUBLE_ENCRYPT, "Data already encrypted"); + add(messageMap, NTE_BAD_PROVIDER, "Invalid provider specified"); + add(messageMap, NTE_BAD_PROV_TYPE, "Invalid provider type specified"); + add(messageMap, NTE_BAD_PUBLIC_KEY, "Provider's public key is invalid"); + add(messageMap, NTE_BAD_KEYSET, "Keyset does not exist"); + add(messageMap, NTE_PROV_TYPE_NOT_DEF, "Provider type not defined"); + add(messageMap, NTE_PROV_TYPE_ENTRY_BAD, "Provider type as registered is invalid"); + add(messageMap, NTE_KEYSET_NOT_DEF, "The keyset is not defined"); + add(messageMap, NTE_KEYSET_ENTRY_BAD, "Keyset as registered is invalid"); + add(messageMap, NTE_PROV_TYPE_NO_MATCH, "Provider type does not match registered value"); + add(messageMap, NTE_SIGNATURE_FILE_BAD, "The digital signature file is corrupt"); + add(messageMap, NTE_PROVIDER_DLL_FAIL, "Provider DLL failed to initialize correctly"); + add(messageMap, NTE_PROV_DLL_NOT_FOUND, "Provider DLL could not be found"); + add(messageMap, NTE_BAD_KEYSET_PARAM, "The Keyset parameter is invalid"); + add(messageMap, NTE_FAIL, "NTE_FAIL: An internal error occurred"); + add(messageMap, NTE_SYS_ERR, "NTE_SYS_ERR: A base error occurred"); + add(messageMap, NTE_SILENT_CONTEXT, "Provider could not perform the action since the context was acquired as silent"); + add(messageMap, NTE_TOKEN_KEYSET_STORAGE_FULL, "The security token does not have storage space available for an additional container"); + add(messageMap, NTE_TEMPORARY_PROFILE, "The profile for the user is a temporary profile"); + add(messageMap, NTE_FIXEDPARAMETER, "The key parameters could not be set because the CSP uses fixed parameters"); + add(messageMap, SEC_E_INSUFFICIENT_MEMORY, "Not enough memory is available to complete this request"); + add(messageMap, SEC_E_INVALID_HANDLE, "The handle specified is invalid"); + add(messageMap, SEC_E_UNSUPPORTED_FUNCTION, "The function requested is not supported"); + add(messageMap, SEC_E_TARGET_UNKNOWN, "The specified target is unknown or unreachable"); + add(messageMap, SEC_E_INTERNAL_ERROR, "The Local Security Authority cannot be contacted"); + add(messageMap, SEC_E_SECPKG_NOT_FOUND, "The requested security package does not exist"); + add(messageMap, SEC_E_NOT_OWNER, "The caller is not the owner of the desired credentials"); + add(messageMap, SEC_E_CANNOT_INSTALL, "The security package failed to initialize, and cannot be installed"); + add(messageMap, SEC_E_INVALID_TOKEN, "The token supplied to the function is invalid"); + add(messageMap, SEC_E_CANNOT_PACK, "The security package is not able to marshall the logon buffer, so the logon attempt has failed"); + add(messageMap, SEC_E_QOP_NOT_SUPPORTED, "The per-message Quality of Protection is not supported by the security package"); + add(messageMap, SEC_E_NO_IMPERSONATION, "The security context does not allow impersonation of the client"); + add(messageMap, SEC_E_LOGON_DENIED, "The logon attempt failed"); + add(messageMap, SEC_E_UNKNOWN_CREDENTIALS, "The credentials supplied to the package were not recognized"); + add(messageMap, SEC_E_NO_CREDENTIALS, "No credentials are available in the security package"); + add(messageMap, SEC_E_MESSAGE_ALTERED, "The message or signature supplied for verification has been altered"); + add(messageMap, SEC_E_OUT_OF_SEQUENCE, "The message supplied for verification is out of sequence"); + add(messageMap, SEC_E_NO_AUTHENTICATING_AUTHORITY, "No authority could be contacted for authentication"); + add(messageMap, SEC_I_CONTINUE_NEEDED, "The function completed successfully, but must be called again to complete the context"); + add(messageMap, SEC_I_COMPLETE_NEEDED, "The function completed successfully, but CompleteToken must be called"); + add(messageMap, SEC_I_COMPLETE_AND_CONTINUE, "The function completed successfully, but both CompleteToken and this function must be called to complete the context"); + add(messageMap, SEC_I_LOCAL_LOGON, "The logon was completed, but no network authority was available. The logon was made using locally known information"); + add(messageMap, SEC_E_BAD_PKGID, "The requested security package does not exist"); + add(messageMap, SEC_E_CONTEXT_EXPIRED, "The context has expired and can no longer be used"); + add(messageMap, SEC_E_INCOMPLETE_MESSAGE, "The supplied message is incomplete. The signature was not verified"); + add(messageMap, SEC_E_INCOMPLETE_CREDENTIALS, "The credentials supplied were not complete, and could not be verified. The context could not be initialized"); + add(messageMap, SEC_E_BUFFER_TOO_SMALL, "The buffers supplied to a function was too small"); + add(messageMap, SEC_I_RENEGOTIATE, "The context data must be renegotiated with the peer"); + add(messageMap, SEC_E_WRONG_PRINCIPAL, "The target principal name is incorrect"); + add(messageMap, SEC_I_NO_LSA_CONTEXT, "There is no LSA mode context associated with this context"); + add(messageMap, SEC_E_TIME_SKEW, "The clocks on the client and server machines are skewed"); + add(messageMap, SEC_E_UNTRUSTED_ROOT, "The certificate chain was issued by an authority that is not trusted"); + add(messageMap, SEC_E_ILLEGAL_MESSAGE, "The message received was unexpected or badly formatted"); + add(messageMap, SEC_E_CERT_UNKNOWN, "An unknown error occurred while processing the certificate"); + add(messageMap, SEC_E_CERT_EXPIRED, "The received certificate has expired"); + add(messageMap, SEC_E_ENCRYPT_FAILURE, "The specified data could not be encrypted"); + add(messageMap, SEC_E_DECRYPT_FAILURE, "The specified data could not be decrypted"); + add(messageMap, SEC_E_ALGORITHM_MISMATCH, "The client and server cannot communicate, because they do not possess a common algorithm"); + add(messageMap, SEC_E_SECURITY_QOS_FAILED, "The security context could not be established due to a failure in the requested quality of service (e.g. mutual authentication or delegation)"); + add(messageMap, SEC_E_UNFINISHED_CONTEXT_DELETED, "A security context was deleted before the context was completed. This is considered a logon failure"); + add(messageMap, SEC_E_NO_TGT_REPLY, "The client is trying to negotiate a context and the server requires user-to-user but didn't send a TGT reply"); + add(messageMap, SEC_E_NO_IP_ADDRESSES, "Unable to accomplish the requested task because the local machine does not have any IP addresses"); + add(messageMap, SEC_E_WRONG_CREDENTIAL_HANDLE, "The supplied credential handle does not match the credential associated with the security context"); + add(messageMap, SEC_E_CRYPTO_SYSTEM_INVALID, "The crypto system or checksum function is invalid because a required function is unavailable"); + add(messageMap, SEC_E_MAX_REFERRALS_EXCEEDED, "The number of maximum ticket referrals has been exceeded"); + add(messageMap, SEC_E_MUST_BE_KDC, "The local machine must be a Kerberos KDC (domain controller) and it is not"); + add(messageMap, SEC_E_STRONG_CRYPTO_NOT_SUPPORTED, "The other end of the security negotiation is requires strong crypto but it is not supported on the local machine"); + add(messageMap, SEC_E_TOO_MANY_PRINCIPALS, "The KDC reply contained more than one principal name"); + add(messageMap, SEC_E_NO_PA_DATA, "Expected to find PA data for a hint of what type to use, but it was not found"); + //80092001 + add(messageMap, CRYPT_E_SELF_SIGNED, "The specified certificate is self signed"); + add(messageMap, CRYPT_E_DELETED_PREV, "The previous certificate or CRL context was deleted"); + add(messageMap, CRYPT_E_NO_MATCH, "Cannot find the requested object"); + add(messageMap, CRYPT_E_UNEXPECTED_MSG_TYPE, "The certificate does not have a property that references a private key"); + add(messageMap, CRYPT_E_NO_KEY_PROPERTY, "Cannot find the certificate and private key for decryption"); + add(messageMap, CRYPT_E_NO_DECRYPT_CERT, "Cannot find the certificate and private key to use for decryption"); + add(messageMap, CRYPT_E_BAD_MSG, "Not a cryptographic message or the cryptographic message is not formatted correctly"); + add(messageMap, CRYPT_E_NO_SIGNER, "The signed cryptographic message does not have a signer for the specified signer index"); + add(messageMap, CRYPT_E_PENDING_CLOSE, "Final closure is pending until additional frees or closes"); + add(messageMap, CRYPT_E_REVOKED, "The certificate is revoked"); + add(messageMap, CRYPT_E_NO_REVOCATION_DLL, "No Dll or exported function was found to verify revocation"); + add(messageMap, CRYPT_E_NO_REVOCATION_CHECK, "The revocation function was unable to check revocation for the certificate"); + add(messageMap, CRYPT_E_REVOCATION_OFFLINE, "The revocation function was unable to check revocation because the revocation server was offline"); + add(messageMap, CRYPT_E_NOT_IN_REVOCATION_DATABASE, "The certificate is not in the revocation server's database"); + add(messageMap, CRYPT_E_INVALID_NUMERIC_STRING, "The string contains a non-numeric character"); + add(messageMap, CRYPT_E_INVALID_PRINTABLE_STRING, "The string contains a non-printable character"); + add(messageMap, CRYPT_E_INVALID_IA5_STRING, "The string contains a character not in the 7 bit ASCII character set"); + add(messageMap, CRYPT_E_INVALID_X500_STRING, "The string contains an invalid X500 name attribute key, oid, value or delimiter"); + add(messageMap, CRYPT_E_NOT_CHAR_STRING, "The dwValueType for the CERT_NAME_VALUE is not one of the character strings. Most likely it is either a CERT_RDN_ENCODED_BLOB or CERT_TDN_OCTED_STRING"); + add(messageMap, CRYPT_E_FILERESIZED, "The Put operation can not continue. The file needs to be resized. However, there is already a signature present. A complete signing operation must be done"); + add(messageMap, CRYPT_E_SECURITY_SETTINGS, "The cryptographic operation failed due to a local security option setting"); + add(messageMap, CRYPT_E_NO_VERIFY_USAGE_DLL, "No DLL or exported function was found to verify subject usage"); + add(messageMap, CRYPT_E_NO_VERIFY_USAGE_CHECK, "The called function was unable to do a usage check on the subject"); + add(messageMap, CRYPT_E_VERIFY_USAGE_OFFLINE, "Since the server was offline, the called function was unable to complete the usage check"); + add(messageMap, CRYPT_E_NOT_IN_CTL, "The subject was not found in a Certificate Trust List (CTL)"); + add(messageMap, CRYPT_E_NO_TRUSTED_SIGNER, "None of the signers of the cryptographic message or certificate trust list is trusted"); + add(messageMap, CRYPT_E_MISSING_PUBKEY_PARA, "The public key's algorithm parameters are missing"); + add(messageMap, TRUST_E_CERT_SIGNATURE, "The signature of the certificate cannot be verified."); + add(messageMap, TRUST_E_BASIC_CONSTRAINTS, "The basic constraints of the certificate are not valid or missing"); + add(messageMap, CERT_E_UNTRUSTEDROOT, "A certification chain processed correctly but terminated in a root certificate not trusted by the trust provider"); + add(messageMap, CERT_E_UNTRUSTEDTESTROOT, "The root certificate is a testing certificate and policy settings disallow test certificates"); + add(messageMap, CERT_E_CHAINING, "A chain of certificates was not correctly created"); + add(messageMap, CERT_E_WRONG_USAGE, "The certificate is not valid for the requested usage"); + add(messageMap, CERT_E_EXPIRED, "A required certificate is not within its validity period"); + add(messageMap, CERT_E_VALIDITYPERIODNESTING, "The validity periods of the certification chain do not nest correctly"); + add(messageMap, CERT_E_PURPOSE, "A certificate is being used for a purpose that is not supported"); + add(messageMap, CERT_E_ROLE, "A certificate that can only be used as an end entity is being used as a CA or visa versa"); + add(messageMap, CERT_E_CN_NO_MATCH, "The CN name of the certificate does not match the passed value"); + add(messageMap, CERT_E_REVOKED, "A certificate in the chain has been explicitly revoked by its issuer"); + add(messageMap, CERT_E_REVOCATION_FAILURE, "The revocation process could not continue. The certificates could not be checked"); + return messageMap; +} + + +const std::string& Utility::formatError(long errCode) +{ + Poco::FastMutex::ScopedLock lock(_mutex); + + static const std::string def("Internal SSPI error"); + static const std::map errs(initSSPIErr()); + + const std::map::const_iterator it = errs.find(errCode); + if (it != errs.end()) + return it->second; + else + return def; +} + + +} } // namespace Poco::Net diff --git a/NetSSL_Win/src/VerificationErrorArgs.cpp b/NetSSL_Win/src/VerificationErrorArgs.cpp new file mode 100644 index 000000000..121a91c47 --- /dev/null +++ b/NetSSL_Win/src/VerificationErrorArgs.cpp @@ -0,0 +1,39 @@ +// +// VerificationErrorArgs.cpp +// +// $Id: //poco/1.4/NetSSL_Win/src/VerificationErrorArgs.cpp#1 $ +// +// Library: NetSSL_Win +// Package: SSLCore +// Module: VerificationErrorArgs +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "Poco/Net/VerificationErrorArgs.h" + + +namespace Poco { +namespace Net { + + +VerificationErrorArgs::VerificationErrorArgs(const X509Certificate& cert, int errDepth, int errNum, const std::string& errMsg): + _cert(cert), + _errorDepth(errDepth), + _errorNumber(errNum), + _errorMessage(errMsg), + _ignoreError(false) +{ +} + + +VerificationErrorArgs::~VerificationErrorArgs() +{ +} + + +} } // namespace Poco::Net diff --git a/NetSSL_Win/src/X509Certificate.cpp b/NetSSL_Win/src/X509Certificate.cpp new file mode 100644 index 000000000..084e2ed2a --- /dev/null +++ b/NetSSL_Win/src/X509Certificate.cpp @@ -0,0 +1,552 @@ +// +// X509Certificate.cpp +// +// $Id$ +// +// Library: NetSSL_Win +// Package: Certificate +// Module: X509Certificate +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "Poco/Net/X509Certificate.h" +#include "Poco/Net/SSLException.h" +#include "Poco/StreamCopier.h" +#include "Poco/String.h" +#include "Poco/DateTimeParser.h" +#include "Poco/Base64Encoder.h" +#include "Poco/Base64Decoder.h" +#include "Poco/File.h" +#include "Poco/FileStream.h" +#include "Poco/MemoryStream.h" +#include "Poco/Buffer.h" +#include "Poco/UnicodeConverter.h" +#include "Poco/Format.h" +#include "Poco/RegularExpression.h" +#include "Poco/Net/DNS.h" + + +namespace Poco { +namespace Net { + + +X509Certificate::X509Certificate(const std::string& path): + _pCert(0) +{ + importCertificate(path); + init(); +} + + +X509Certificate::X509Certificate(std::istream& istr): + _pCert(0) +{ + importCertificate(istr); + init(); +} + + +X509Certificate::X509Certificate(const std::string& certName, const std::string& certStoreName, bool useMachineStore): + _pCert(0) +{ + loadCertificate(certName, certStoreName, useMachineStore); + init(); +} + + +X509Certificate::X509Certificate(PCCERT_CONTEXT pCert): + _pCert(pCert) +{ + poco_check_ptr(_pCert); + + init(); +} + + +X509Certificate::X509Certificate(const X509Certificate& cert): + _issuerName(cert._issuerName), + _subjectName(cert._subjectName), + _pCert(cert._pCert) +{ + _pCert = CertDuplicateCertificateContext(_pCert); +} + + +X509Certificate::X509Certificate(PCCERT_CONTEXT pCert, bool shared): + _pCert(pCert) +{ + poco_check_ptr(_pCert); + + if (shared) + { + _pCert = CertDuplicateCertificateContext(_pCert); + } + + init(); +} + + +X509Certificate& X509Certificate::operator = (const X509Certificate& cert) +{ + X509Certificate tmp(cert); + swap(tmp); + return *this; +} + + +void X509Certificate::swap(X509Certificate& cert) +{ + using std::swap; + swap(cert._issuerName, _issuerName); + swap(cert._subjectName, _subjectName); + swap(cert._pCert, _pCert); +} + + +X509Certificate::~X509Certificate() +{ + CertFreeCertificateContext(_pCert); +} + + +void X509Certificate::init() +{ + std::string name = issuerName(NID_COUNTRY); + if (!name.empty()) + { + _issuerName += "/C="; + _issuerName += name; + } + name = issuerName(NID_STATE_OR_PROVINCE); + if (!name.empty()) + { + _issuerName += "/ST="; + _issuerName += name; + } + name = issuerName(NID_LOCALITY_NAME); + if (!name.empty()) + { + _issuerName += "/L="; + _issuerName += name; + } + name = issuerName(NID_ORGANIZATION_NAME); + if (!name.empty()) + { + _issuerName += "/O="; + _issuerName += name; + } + name = issuerName(NID_ORGANIZATION_UNIT_NAME); + if (!name.empty()) + { + _issuerName += "/OU="; + _issuerName += name; + } + name = issuerName(NID_COMMON_NAME); + if (!name.empty()) + { + _issuerName += "/CN="; + _issuerName += name; + } + + name = subjectName(NID_COUNTRY); + if (!name.empty()) + { + _subjectName += "/C="; + _subjectName += name; + } + name = subjectName(NID_STATE_OR_PROVINCE); + if (!name.empty()) + { + _subjectName += "/ST="; + _subjectName += name; + } + name = subjectName(NID_LOCALITY_NAME); + if (!name.empty()) + { + _subjectName += "/L="; + _subjectName += name; + } + name = subjectName(NID_ORGANIZATION_NAME); + if (!name.empty()) + { + _subjectName += "/O="; + _subjectName += name; + } + name = subjectName(NID_ORGANIZATION_UNIT_NAME); + if (!name.empty()) + { + _subjectName += "/OU="; + _subjectName += name; + } + name = subjectName(NID_COMMON_NAME); + if (!name.empty()) + { + _subjectName += "/CN="; + _subjectName += name; + }} + + +std::string X509Certificate::commonName() const +{ + return subjectName(NID_COMMON_NAME); +} + + +std::string X509Certificate::issuerName(NID nid) const +{ + std::string result; + DWORD size = CertGetNameStringW(_pCert, CERT_NAME_ATTR_TYPE, CERT_NAME_ISSUER_FLAG, nid2oid(nid), 0, 0); + Poco::Buffer data(size); + CertGetNameStringW(_pCert, CERT_NAME_ATTR_TYPE, CERT_NAME_ISSUER_FLAG, nid2oid(nid), data.begin(), size); + Poco::UnicodeConverter::convert(data.begin(), result); + return result; +} + + +std::string X509Certificate::subjectName(NID nid) const +{ + std::string result; + DWORD size = CertGetNameStringW(_pCert, CERT_NAME_ATTR_TYPE, 0, nid2oid(nid), 0, 0); + Poco::Buffer data(size); + CertGetNameStringW(_pCert, CERT_NAME_ATTR_TYPE, 0, nid2oid(nid), data.begin(), size); + Poco::UnicodeConverter::convert(data.begin(), result); + return result; +} + + +void X509Certificate::extractNames(std::string& cmnName, std::set& domainNames) const +{ + domainNames.clear(); + cmnName = commonName(); + PCERT_EXTENSION pExt = _pCert->pCertInfo->rgExtension; + for (int i = 0; i < _pCert->pCertInfo->cExtension; i++, pExt++) + { + if (std::strcmp(pExt->pszObjId, szOID_SUBJECT_ALT_NAME2) == 0) + { + DWORD flags(0); +#if defined(CRYPT_DECODE_ENABLE_PUNYCODE_FLAG) + flags |= CRYPT_DECODE_ENABLE_PUNYCODE_FLAG; +#endif + Poco::Buffer buffer(256); + DWORD bufferSize = buffer.sizeBytes(); + BOOL rc = CryptDecodeObjectEx( + X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, + pExt->pszObjId, + pExt->Value.pbData, + pExt->Value.cbData, + flags, + 0, + buffer.begin(), + &bufferSize); + if (!rc && GetLastError() == ERROR_MORE_DATA) + { + buffer.resize(bufferSize); + rc = CryptDecodeObjectEx( + X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, + pExt->pszObjId, + pExt->Value.pbData, + pExt->Value.cbData, + flags, + 0, + buffer.begin(), + &bufferSize); + } + if (rc) + { + PCERT_ALT_NAME_INFO pNameInfo = reinterpret_cast(buffer.begin()); + for (int i = 0; i < pNameInfo->cAltEntry; i++) + { + std::wstring waltName(pNameInfo->rgAltEntry[i].pwszDNSName); + std::string altName; + Poco::UnicodeConverter::toUTF8(waltName, altName); + domainNames.insert(altName); + } + } + } + } + if (!cmnName.empty() && domainNames.empty()) + { + domainNames.insert(cmnName); + } +} + + +Poco::DateTime X509Certificate::validFrom() const +{ + Poco::Timestamp ts = Poco::Timestamp::fromFileTimeNP(_pCert->pCertInfo->NotBefore.dwLowDateTime, _pCert->pCertInfo->NotBefore.dwHighDateTime); + return Poco::DateTime(ts); +} + + +Poco::DateTime X509Certificate::expiresOn() const +{ + Poco::Timestamp ts = Poco::Timestamp::fromFileTimeNP(_pCert->pCertInfo->NotAfter.dwLowDateTime, _pCert->pCertInfo->NotAfter.dwHighDateTime); + return Poco::DateTime(ts); +} + + +bool X509Certificate::issuedBy(const X509Certificate& issuerCertificate) const +{ + CERT_CHAIN_PARA chainPara; + PCCERT_CHAIN_CONTEXT pChainContext = 0; + std::memset(&chainPara, 0, sizeof(chainPara)); + chainPara.cbSize = sizeof(chainPara); + + if (!CertGetCertificateChain( + NULL, + _pCert, + NULL, + NULL, + &chainPara, + 0, + NULL, + &pChainContext)) + { + throw SSLException("Cannot get certificate chain", subjectName(), GetLastError()); + } + + bool result = false; + for (DWORD i = 0; i < pChainContext->cChain && !result; i++) + { + for (DWORD k = 0; k < pChainContext->rgpChain[i]->cElement && !result; k++) + { + PCCERT_CONTEXT pChainCert = pChainContext->rgpChain[i]->rgpElement[k]->pCertContext; + if (CertCompareCertificate(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, issuerCertificate.system()->pCertInfo, pChainCert->pCertInfo)) + { + if (CertComparePublicKeyInfo(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, &issuerCertificate.system()->pCertInfo->SubjectPublicKeyInfo, &pChainCert->pCertInfo->SubjectPublicKeyInfo)) + { + result = true; + } + } + } + } + CertFreeCertificateChain(pChainContext); + return result; +} + + +void* X509Certificate::nid2oid(NID nid) +{ + const char* result = 0; + switch (nid) + { + case NID_COMMON_NAME: + result = szOID_COMMON_NAME; + break; + case NID_COUNTRY: + result = szOID_COUNTRY_NAME; + break; + case NID_LOCALITY_NAME: + result = szOID_LOCALITY_NAME; + break; + case NID_STATE_OR_PROVINCE: + result = szOID_STATE_OR_PROVINCE_NAME; + break; + case NID_ORGANIZATION_NAME: + result = szOID_ORGANIZATION_NAME; + break; + case NID_ORGANIZATION_UNIT_NAME: + result = szOID_ORGANIZATIONAL_UNIT_NAME; + break; + default: + poco_bugcheck(); + result = ""; + break; + } + return const_cast(result); +} + + +void X509Certificate::loadCertificate(const std::string& certName, const std::string& certStoreName, bool useMachineStore) +{ + std::wstring wcertStore; + Poco::UnicodeConverter::convert(certStoreName, wcertStore); + HCERTSTORE hCertStore; + if (useMachineStore) + hCertStore = CertOpenStore(CERT_STORE_PROV_SYSTEM, 0, 0, CERT_SYSTEM_STORE_LOCAL_MACHINE, certStoreName.c_str()); + else + hCertStore = CertOpenSystemStoreW(0, wcertStore.c_str()); + + if (!hCertStore) throw CertificateException("Failed to open certificate store", certStoreName, GetLastError()); + + CERT_RDN_ATTR cert_rdn_attr; + cert_rdn_attr.pszObjId = szOID_COMMON_NAME; + cert_rdn_attr.dwValueType = CERT_RDN_ANY_TYPE; + cert_rdn_attr.Value.cbData = static_cast(certName.size()); + cert_rdn_attr.Value.pbData = reinterpret_cast(const_cast(certName.c_str())); + + CERT_RDN cert_rdn; + cert_rdn.cRDNAttr = 1; + cert_rdn.rgRDNAttr = &cert_rdn_attr; + + _pCert = CertFindCertificateInStore(hCertStore, X509_ASN_ENCODING, 0, CERT_FIND_SUBJECT_ATTR, &cert_rdn, NULL); + if (!_pCert) + { + CertCloseStore(hCertStore, 0); + throw NoCertificateException(Poco::format("Failed to find certificate %s in store %s", certName, certStoreName)); + } + CertCloseStore(hCertStore, 0); +} + + +void X509Certificate::importCertificate(const std::string& certPath) +{ + Poco::File certFile(certPath); + if (!certFile.exists()) throw Poco::FileNotFoundException(certPath); + Poco::File::FileSize size = certFile.getSize(); + if (size > 4096) throw Poco::DataFormatException("certificate file too large", certPath); + if (size < 32) throw Poco::DataFormatException("certificate file too small", certPath); + Poco::Buffer buffer(static_cast(size)); + Poco::FileInputStream istr(certPath); + istr.read(buffer.begin(), buffer.size()); + if (istr.gcount() != size) throw Poco::IOException("error reading certificate file"); + importCertificate(buffer.begin(), buffer.size()); +} + + +void X509Certificate::importCertificate(std::istream& istr) +{ + std::string data; + Poco::StreamCopier::copyToString(istr, data); + if (!data.empty()) + { + importCertificate(data.data(), data.size()); + } + else throw Poco::IOException("failed to read certificate from stream"); +} + + +void X509Certificate::importCertificate(const char* pBuffer, std::size_t size) +{ + if (std::memcmp(pBuffer, "-----BEGIN CERTIFICATE-----", 27) == 0) + importPEMCertificate(pBuffer + 27, size - 27); + else + importDERCertificate(pBuffer, size); +} + + +void X509Certificate::importPEMCertificate(const char* pBuffer, std::size_t size) +{ + Poco::Buffer derBuffer(size); + std::size_t derSize = 0; + + const char* pemBegin = pBuffer; + const char* pemEnd = pemBegin + (size - 25); + while (pemEnd > pemBegin && std::memcmp(pemEnd, "-----END CERTIFICATE-----", 25) != 0) --pemEnd; + if (pemEnd == pemBegin) throw Poco::DataFormatException("Not a valid PEM file - end marker missing"); + + Poco::MemoryInputStream istr(pemBegin, pemEnd - pemBegin); + Poco::Base64Decoder dec(istr); + + char* derBegin = derBuffer.begin(); + char* derEnd = derBegin; + + int ch = dec.get(); + while (ch != -1) + { + *derEnd++ = static_cast(ch); + ch = dec.get(); + } + + importDERCertificate(derBegin, derEnd - derBegin); +} + + +void X509Certificate::importDERCertificate(const char* pBuffer, std::size_t size) +{ + _pCert = CertCreateCertificateContext(X509_ASN_ENCODING, reinterpret_cast(pBuffer), static_cast(size)); + if (!_pCert) + { + throw Poco::DataFormatException("Failed to load certificate from file", GetLastError()); + } +} + + +bool X509Certificate::verify(const std::string& hostName) const +{ + return verify(*this, hostName); +} + + +bool X509Certificate::verify(const Poco::Net::X509Certificate& certificate, const std::string& hostName) +{ + std::string commonName; + std::set dnsNames; + certificate.extractNames(commonName, dnsNames); + if (!commonName.empty()) dnsNames.insert(commonName); + bool ok = (dnsNames.find(hostName) != dnsNames.end()); + if (!ok) + { + for (std::set::const_iterator it = dnsNames.begin(); !ok && it != dnsNames.end(); ++it) + { + try + { + // two cases: strData contains wildcards or not + if (containsWildcards(*it)) + { + // a compare by IPAddress is not possible with wildcards + // only allow compare by name + ok = matchWildcard(*it, hostName); + } + else + { + // it depends on hostName if we compare by IP or by alias + IPAddress ip; + if (IPAddress::tryParse(hostName, ip)) + { + // compare by IP + const HostEntry& heData = DNS::resolve(*it); + const HostEntry::AddressList& addr = heData.addresses(); + HostEntry::AddressList::const_iterator it = addr.begin(); + HostEntry::AddressList::const_iterator itEnd = addr.end(); + for (; it != itEnd && !ok; ++it) + { + ok = (*it == ip); + } + } + else + { + ok = Poco::icompare(*it, hostName) == 0; + } + } + } + catch (NoAddressFoundException&) + { + } + catch (HostNotFoundException&) + { + } + } + } + return ok; +} + + +bool X509Certificate::containsWildcards(const std::string& commonName) +{ + return (commonName.find('*') != std::string::npos || commonName.find('?') != std::string::npos); +} + + +bool X509Certificate::matchWildcard(const std::string& wildcard, const std::string& hostName) +{ + // fix wildcards + std::string wildcardExpr("^"); + wildcardExpr += Poco::replace(wildcard, ".", "\\."); + Poco::replaceInPlace(wildcardExpr, "*", ".*"); + Poco::replaceInPlace(wildcardExpr, "..*", ".*"); + Poco::replaceInPlace(wildcardExpr, "?", ".?"); + Poco::replaceInPlace(wildcardExpr, "..?", ".?"); + wildcardExpr += "$"; + + Poco::RegularExpression expr(wildcardExpr, Poco::RegularExpression::RE_CASELESS); + return expr.match(hostName); +} + + +} } // namespace Poco::Net diff --git a/NetSSL_Win/testsuite/TestSuite.progen b/NetSSL_Win/testsuite/TestSuite.progen new file mode 100644 index 000000000..dcc2941f4 --- /dev/null +++ b/NetSSL_Win/testsuite/TestSuite.progen @@ -0,0 +1,18 @@ +vc.project.guid = 25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28 +vc.project.name = TestSuite +vc.project.target = TestSuite +vc.project.type = testsuite +vc.project.pocobase = ..\\.. +vc.project.platforms = Win32, x64, WinCE +vc.project.configurations = debug_shared, release_shared, debug_static_mt, release_static_mt, debug_static_md, release_static_md +vc.project.prototype = TestSuite_vs90.vcproj +vc.project.compiler.include = ..\\..\\Foundation\\include;..\\..\\XML\\include;..\\..\\Util\\include;..\\..\\Net\\include +vc.project.linker.dependencies.Win32 = ws2_32.lib iphlpapi.lib Crypt32.lib +vc.project.linker.dependencies.x64 = ws2_32.lib iphlpapi.lib Crypt32.lib +vc.project.linker.dependencies.WinCE = ws2.lib iphlpapi.lib Crypt32.lib +vc.project.linker.dependencies.debug_shared = +vc.project.linker.dependencies.release_shared = +vc.project.linker.dependencies.debug_static_md = +vc.project.linker.dependencies.release_static_md = +vc.project.linker.dependencies.debug_static_mt = +vc.project.linker.dependencies.release_static_mt = diff --git a/NetSSL_Win/testsuite/TestSuite.xml b/NetSSL_Win/testsuite/TestSuite.xml new file mode 100644 index 000000000..8f78c9490 --- /dev/null +++ b/NetSSL_Win/testsuite/TestSuite.xml @@ -0,0 +1,41 @@ + + + + any.pfx + none + false + + KeyFileHandler + + secret + + + + AcceptCertificateHandler + + + + + + relaxed + false + + KeyFileHandler + + secret + + + + AcceptCertificateHandler + + + + + + + + proxy.aon.at + 8080 + + + diff --git a/NetSSL_Win/testsuite/TestSuite_CE_vs90.vcproj b/NetSSL_Win/testsuite/TestSuite_CE_vs90.vcproj new file mode 100644 index 000000000..e7952fcd5 --- /dev/null +++ b/NetSSL_Win/testsuite/TestSuite_CE_vs90.vcproj @@ -0,0 +1,556 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NetSSL_Win/testsuite/TestSuite_WEC2013_vs110.vcxproj b/NetSSL_Win/testsuite/TestSuite_WEC2013_vs110.vcxproj new file mode 100644 index 000000000..2d4e5e7af --- /dev/null +++ b/NetSSL_Win/testsuite/TestSuite_WEC2013_vs110.vcxproj @@ -0,0 +1,334 @@ + + + + + debug_shared + SDK_AM335X_SK_WEC2013_V300 + + + debug_static_md + SDK_AM335X_SK_WEC2013_V300 + + + debug_static_mt + SDK_AM335X_SK_WEC2013_V300 + + + release_shared + SDK_AM335X_SK_WEC2013_V300 + + + release_static_md + SDK_AM335X_SK_WEC2013_V300 + + + release_static_mt + SDK_AM335X_SK_WEC2013_V300 + + + + TestSuite + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28} + en-US + 11.0 + true + SDK_AM335X_SK_WEC2013_V300 + CE800 + + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>11.0.61030.0 + TestSuited + TestSuited + TestSuited + TestSuite + TestSuite + TestSuite + + + bin\$(Platform)\shared\ + obj\TestSuite\$(Platform)\$(Configuration)\ + true + + + bin\$(Platform)\shared\ + obj\TestSuite\$(Platform)\$(Configuration)\ + false + + + bin\$(Platform)\static_mt\ + obj\TestSuite\$(Platform)\$(Configuration)\ + true + + + bin\$(Platform)\static_mt\ + obj\TestSuite\$(Platform)\$(Configuration)\ + false + + + bin\$(Platform)\static_md\ + obj\TestSuite\$(Platform)\$(Configuration)\ + true + + + bin\$(Platform)\static_md\ + obj\TestSuite\$(Platform)\$(Configuration)\ + false + + + + Win32 + + + Disabled + ..\include;..\..\CppUnit\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;%(AdditionalIncludeDirectories) + _DEBUG;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebugDLL + true + true + + Level3 + ProgramDatabase + Default + + + CppUnitd.lib;ws2.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + bin\$(Platform)\shared\TestSuited.exe + ..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + true + bin\$(Platform)\shared\TestSuited.pdb + wmainCRTStartup + WindowsCE + + + + + Win32 + + + Disabled + true + Speed + ..\include;..\..\CppUnit\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;%(AdditionalIncludeDirectories) + NDEBUG;$(ProjectName)_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDLL + false + true + Level3 + ProgramDatabase + + + CppUnit.lib;ws2.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + bin\$(Platform)\shared\TestSuite.exe + ..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + false + + true + true + wmainCRTStartup + WindowsCE + + + + + Win32 + + + Disabled + ..\include;..\..\CppUnit\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;%(AdditionalIncludeDirectories) + _DEBUG;POCO_STATIC;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebug + true + true + + Level3 + ProgramDatabase + Default + + + CppUnitmtd.lib;iphlpapi.lib;ws2.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + bin\$(Platform)\static_mt\TestSuited.exe + ..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + true + bin\$(Platform)\static_mt\TestSuited.pdb + wmainCRTStartup + WindowsCE + + + + + Win32 + + + Disabled + Default + true + Speed + ..\include;..\..\CppUnit\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;%(AdditionalIncludeDirectories) + NDEBUG;POCO_STATIC;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreaded + false + true + + Level3 + ProgramDatabase + Default + + + CppUnitmt.lib;iphlpapi.lib;ws2.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + bin\$(Platform)\static_mt\TestSuite.exe + ..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + false + + true + true + wmainCRTStartup + WindowsCE + + + + + Win32 + + + Disabled + ..\include;..\..\CppUnit\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;%(AdditionalIncludeDirectories) + _DEBUG;POCO_STATIC;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebugDLL + true + true + + Level3 + ProgramDatabase + Default + + + CppUnitmdd.lib;iphlpapi.lib;ws2.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + bin\$(Platform)\static_md\TestSuited.exe + ..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + true + bin\$(Platform)\static_md\TestSuited.pdb + wmainCRTStartup + WindowsCE + + + + + Win32 + + + Disabled + Default + true + Speed + ..\include;..\..\CppUnit\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;%(AdditionalIncludeDirectories) + NDEBUG;POCO_STATIC;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDLL + false + true + + Level3 + ProgramDatabase + Default + + + CppUnitmd.lib;iphlpapi.lib;ws2.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + bin\$(Platform)\static_md\TestSuite.exe + ..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + false + + true + true + wmainCRTStartup + WindowsCE + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NetSSL_Win/testsuite/TestSuite_WEC2013_vs110.vcxproj.filters b/NetSSL_Win/testsuite/TestSuite_WEC2013_vs110.vcxproj.filters new file mode 100644 index 000000000..6f98e58b8 --- /dev/null +++ b/NetSSL_Win/testsuite/TestSuite_WEC2013_vs110.vcxproj.filters @@ -0,0 +1,117 @@ + + + + + {10f71e97-bf99-4951-9aab-6b4354599dec} + + + {17bcb1c7-f35b-4915-a821-afea21dfdc55} + + + {00316a7c-3ce7-45e0-b118-72704d0cde09} + + + {d7df0d2c-155b-4986-9d01-d9c6c03b6eb7} + + + {55416c9c-7aca-41cd-ab00-c255155d1dfc} + + + {051ccd3d-d8ac-4465-964d-89de58fa79b9} + + + {5d3532bb-ecb2-40f6-963d-a809e4fb688e} + + + {e91d00d0-5be1-4efc-a8a8-62fbc307a79b} + + + {6b4aa699-165f-4307-b3ea-769110218f92} + + + {57022d1e-dd01-444e-8780-e16e16ac5f7c} + + + {77cad6bf-8919-444f-b882-64439c369c3d} + + + {49d52b17-32c4-48b0-b788-11fdb8bc6208} + + + {45632901-a9a3-4b8e-8d8b-15ac30682ed4} + + + {0a1aff9f-5f7c-4052-933f-3c02ac47f87a} + + + {1a72727f-ef47-45b6-871a-b18869f4df28} + + + {1cbea4bf-537d-429e-a77a-267250741490} + + + {d0481383-b4e0-4fa2-b968-be0b9b9035c0} + + + + + HTTPS\Header Files + + + _Suite\Header Files + + + TCPServer\Header Files + + + TCPServer\Header Files + + + HTTPSServer\Header Files + + + HTTPSServer\Header Files + + + HTTPSClient\Header Files + + + HTTPSClient\Header Files + + + HTTPSClient\Header Files + + + + + HTTPS\Source Files + + + _Suite\Source Files + + + _Driver\Source Files + + + TCPServer\Source Files + + + TCPServer\Source Files + + + HTTPSServer\Source Files + + + HTTPSServer\Source Files + + + HTTPSClient\Source Files + + + HTTPSClient\Source Files + + + HTTPSClient\Source Files + + + \ No newline at end of file diff --git a/NetSSL_Win/testsuite/TestSuite_WEC2013_vs120.vcxproj b/NetSSL_Win/testsuite/TestSuite_WEC2013_vs120.vcxproj new file mode 100644 index 000000000..0f14c0f47 --- /dev/null +++ b/NetSSL_Win/testsuite/TestSuite_WEC2013_vs120.vcxproj @@ -0,0 +1,334 @@ + + + + + debug_shared + SDK_AM335X_SK_WEC2013_V310 + + + debug_static_md + SDK_AM335X_SK_WEC2013_V310 + + + debug_static_mt + SDK_AM335X_SK_WEC2013_V310 + + + release_shared + SDK_AM335X_SK_WEC2013_V310 + + + release_static_md + SDK_AM335X_SK_WEC2013_V310 + + + release_static_mt + SDK_AM335X_SK_WEC2013_V310 + + + + TestSuite + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28} + en-US + 11.0 + true + SDK_AM335X_SK_WEC2013_V310 + CE800 + + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + Application + Unicode + CE800 + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>12.0.30501.0 + TestSuited + TestSuited + TestSuited + TestSuite + TestSuite + TestSuite + + + bin\$(Platform)\shared\ + obj\TestSuite\$(Platform)\$(Configuration)\ + true + + + bin\$(Platform)\shared\ + obj\TestSuite\$(Platform)\$(Configuration)\ + false + + + bin\$(Platform)\static_mt\ + obj\TestSuite\$(Platform)\$(Configuration)\ + true + + + bin\$(Platform)\static_mt\ + obj\TestSuite\$(Platform)\$(Configuration)\ + false + + + bin\$(Platform)\static_md\ + obj\TestSuite\$(Platform)\$(Configuration)\ + true + + + bin\$(Platform)\static_md\ + obj\TestSuite\$(Platform)\$(Configuration)\ + false + + + + Win32 + + + Disabled + ..\include;..\..\CppUnit\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;%(AdditionalIncludeDirectories) + _DEBUG;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebugDLL + true + true + + Level3 + ProgramDatabase + Default + + + CppUnitd.lib;ws2.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + bin\$(Platform)\shared\TestSuited.exe + ..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + true + bin\$(Platform)\shared\TestSuited.pdb + wmainCRTStartup + WindowsCE + + + + + Win32 + + + Disabled + true + Speed + ..\include;..\..\CppUnit\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;%(AdditionalIncludeDirectories) + NDEBUG;$(ProjectName)_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDLL + false + true + Level3 + ProgramDatabase + + + CppUnit.lib;ws2.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + bin\$(Platform)\shared\TestSuite.exe + ..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + false + + true + true + wmainCRTStartup + WindowsCE + + + + + Win32 + + + Disabled + ..\include;..\..\CppUnit\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;%(AdditionalIncludeDirectories) + _DEBUG;POCO_STATIC;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebug + true + true + + Level3 + ProgramDatabase + Default + + + CppUnitmtd.lib;iphlpapi.lib;ws2.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + bin\$(Platform)\static_mt\TestSuited.exe + ..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + true + bin\$(Platform)\static_mt\TestSuited.pdb + wmainCRTStartup + WindowsCE + + + + + Win32 + + + Disabled + Default + true + Speed + ..\include;..\..\CppUnit\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;%(AdditionalIncludeDirectories) + NDEBUG;POCO_STATIC;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreaded + false + true + + Level3 + ProgramDatabase + Default + + + CppUnitmt.lib;iphlpapi.lib;ws2.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + bin\$(Platform)\static_mt\TestSuite.exe + ..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + false + + true + true + wmainCRTStartup + WindowsCE + + + + + Win32 + + + Disabled + ..\include;..\..\CppUnit\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;%(AdditionalIncludeDirectories) + _DEBUG;POCO_STATIC;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDebugDLL + true + true + + Level3 + ProgramDatabase + Default + + + CppUnitmdd.lib;iphlpapi.lib;ws2.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + bin\$(Platform)\static_md\TestSuited.exe + ..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + true + bin\$(Platform)\static_md\TestSuited.pdb + wmainCRTStartup + WindowsCE + + + + + Win32 + + + Disabled + Default + true + Speed + ..\include;..\..\CppUnit\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;%(AdditionalIncludeDirectories) + NDEBUG;POCO_STATIC;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + false + MultiThreadedDLL + false + true + + Level3 + ProgramDatabase + Default + + + CppUnitmd.lib;iphlpapi.lib;ws2.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + bin\$(Platform)\static_md\TestSuite.exe + ..\..\lib\$(Platform);%(AdditionalLibraryDirectories) + false + + true + true + wmainCRTStartup + WindowsCE + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NetSSL_Win/testsuite/TestSuite_WEC2013_vs120.vcxproj.filters b/NetSSL_Win/testsuite/TestSuite_WEC2013_vs120.vcxproj.filters new file mode 100644 index 000000000..3c6bb14ba --- /dev/null +++ b/NetSSL_Win/testsuite/TestSuite_WEC2013_vs120.vcxproj.filters @@ -0,0 +1,117 @@ + + + + + {19ec38a3-121f-4783-864a-a71ad579996e} + + + {4823d673-e9fc-4e17-80ea-45805fbe1505} + + + {29a0e4a0-1d67-49d4-b775-d56b55cc13f9} + + + {03f15d2b-6603-4106-aca8-2c5a2b851593} + + + {92cd9081-bada-4005-8860-f2004c41549b} + + + {331f3fbe-9787-4f20-9e71-b724e6a51ccf} + + + {36cea384-d5f8-4898-803c-36b1e25bbe48} + + + {37445008-3e18-4c4e-9fc3-6370c8deaf8b} + + + {d05183de-5125-4127-a08e-3786f29d1d21} + + + {0a8e46bc-5413-47cc-9397-212658513a9a} + + + {256d230a-2819-48cc-9380-f7ca28b21535} + + + {bc049357-3d64-4825-953e-a34cf5451acb} + + + {f340c775-b434-4af2-b580-7e934ec8e710} + + + {9d04e1ac-b37a-4bef-85fc-c8a93f52d5b8} + + + {752ce698-bbd4-4eb9-b4b7-814ccac6e74d} + + + {5881f826-93a4-4a9e-9eb3-bdf5532bdf66} + + + {ab810893-7f62-41b2-a68f-2347a04dd4c0} + + + + + HTTPS\Header Files + + + _Suite\Header Files + + + TCPServer\Header Files + + + TCPServer\Header Files + + + HTTPSServer\Header Files + + + HTTPSServer\Header Files + + + HTTPSClient\Header Files + + + HTTPSClient\Header Files + + + HTTPSClient\Header Files + + + + + HTTPS\Source Files + + + _Suite\Source Files + + + _Driver\Source Files + + + TCPServer\Source Files + + + TCPServer\Source Files + + + HTTPSServer\Source Files + + + HTTPSServer\Source Files + + + HTTPSClient\Source Files + + + HTTPSClient\Source Files + + + HTTPSClient\Source Files + + + \ No newline at end of file diff --git a/NetSSL_Win/testsuite/TestSuite_vs100.vcxproj b/NetSSL_Win/testsuite/TestSuite_vs100.vcxproj new file mode 100644 index 000000000..1685d0308 --- /dev/null +++ b/NetSSL_Win/testsuite/TestSuite_vs100.vcxproj @@ -0,0 +1,339 @@ + + + + + debug_shared + Win32 + + + debug_static_md + Win32 + + + debug_static_mt + Win32 + + + release_shared + Win32 + + + release_static_md + Win32 + + + release_static_mt + Win32 + + + + TestSuite + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28} + TestSuite + Win32Proj + + + + Application + Dynamic + MultiByte + + + Application + Dynamic + MultiByte + + + Application + Static + MultiByte + + + Application + Static + MultiByte + + + Application + Dynamic + MultiByte + + + Application + Dynamic + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + bin\ + obj\TestSuite\$(Configuration)\ + true + bin\ + obj\TestSuite\$(Configuration)\ + false + bin\static_mt\ + obj\TestSuite\$(Configuration)\ + true + bin\static_mt\ + obj\TestSuite\$(Configuration)\ + false + bin\static_md\ + obj\TestSuite\$(Configuration)\ + true + bin\static_md\ + obj\TestSuite\$(Configuration)\ + false + TestSuited + TestSuited + TestSuited + TestSuite + TestSuite + TestSuite + + + + Disabled + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + EditAndContinue + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + CppUnitd.lib;WinTestRunnerd.lib;ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + bin\TestSuited.exe + ..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\TestSuited.pdb + Windows + MachineX86 + %(AdditionalOptions) + + + + + Disabled + OnlyExplicitInline + true + Speed + true + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + CppUnit.lib;WinTestRunner.lib;ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + bin\TestSuite.exe + ..\..\lib;%(AdditionalLibraryDirectories) + false + Windows + true + true + MachineX86 + %(AdditionalOptions) + + + + + Disabled + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + Level3 + EditAndContinue + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + CppUnitmtd.lib;WinTestRunnermtd.lib;iphlpapi.lib;winmm.lib;nafxcwd.lib;libcmtd.lib;WinTestRunner.res;ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + bin\static_mt\TestSuited.exe + ..\..\lib;%(AdditionalLibraryDirectories) + nafxcwd.lib;libcmtd.lib;%(IgnoreSpecificDefaultLibraries) + true + true + bin\static_mt\TestSuited.pdb + Windows + MachineX86 + %(AdditionalOptions) + + + + + Disabled + OnlyExplicitInline + true + Speed + true + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + CppUnitmt.lib;WinTestRunnermt.lib;iphlpapi.lib;winmm.lib;nafxcw.lib;libcmt.lib;WinTestRunner.res;ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + bin\static_mt\TestSuite.exe + ..\..\lib;%(AdditionalLibraryDirectories) + nafxcw.lib;libcmt.lib;%(IgnoreSpecificDefaultLibraries) + false + Windows + true + true + MachineX86 + %(AdditionalOptions) + + + + + Disabled + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + EditAndContinue + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + CppUnitmdd.lib;WinTestRunnermdd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + bin\static_md\TestSuited.exe + ..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\static_md\TestSuited.pdb + Windows + MachineX86 + %(AdditionalOptions) + + + + + Disabled + OnlyExplicitInline + true + Speed + true + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + CppUnitmd.lib;WinTestRunnermd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + bin\static_md\TestSuite.exe + ..\..\lib;%(AdditionalLibraryDirectories) + false + Windows + true + true + MachineX86 + %(AdditionalOptions) + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NetSSL_Win/testsuite/TestSuite_vs100.vcxproj.filters b/NetSSL_Win/testsuite/TestSuite_vs100.vcxproj.filters new file mode 100644 index 000000000..c3d6a9060 --- /dev/null +++ b/NetSSL_Win/testsuite/TestSuite_vs100.vcxproj.filters @@ -0,0 +1,117 @@ + + + + + {a80b85fd-4bc8-4776-96c3-23bc4b73295f} + + + {bfddb017-9765-4c39-b621-64921f1ff332} + + + {08bac6a8-b894-44d9-8c10-9248d27946cf} + + + {e2d5bb13-9592-4087-9c57-e8dbe312f05e} + + + {8d2ede98-892a-46ca-8a50-c57ea9812317} + + + {cf7ee143-d30f-48df-8000-1b048e59a44c} + + + {45b7a24f-6969-4b7d-a587-60fda08b7838} + + + {17fd05a6-40a0-4c0a-8727-9be5246e9e50} + + + {8d20722a-d11f-4a63-9a44-8e58585063e2} + + + {274b91d6-0939-4fe3-86cd-af4ffe9a277b} + + + {baa6614b-3ff4-43ff-82b7-cfba77bfae71} + + + {c4b52fd6-e07d-4c64-84a3-a5f21139d1f5} + + + {c03197e6-6c2c-4f05-840f-30dd163d848c} + + + {0dcbdce6-1100-4b35-9266-b0a10954d837} + + + {63a63fcf-3e5b-4ef9-b678-7afc8e96ce53} + + + {db294271-4484-4aba-b4f5-b9d6cd7c4e9f} + + + {cc2729c8-71ed-452f-a0b8-c75023eb73b1} + + + + + HTTPS\Header Files + + + _Suite\Header Files + + + TCPServer\Header Files + + + TCPServer\Header Files + + + HTTPSServer\Header Files + + + HTTPSServer\Header Files + + + HTTPSClient\Header Files + + + HTTPSClient\Header Files + + + HTTPSClient\Header Files + + + + + HTTPS\Source Files + + + _Suite\Source Files + + + _Driver\Source Files + + + TCPServer\Source Files + + + TCPServer\Source Files + + + HTTPSServer\Source Files + + + HTTPSServer\Source Files + + + HTTPSClient\Source Files + + + HTTPSClient\Source Files + + + HTTPSClient\Source Files + + + \ No newline at end of file diff --git a/NetSSL_Win/testsuite/TestSuite_vs110.vcxproj b/NetSSL_Win/testsuite/TestSuite_vs110.vcxproj new file mode 100644 index 000000000..932e5549d --- /dev/null +++ b/NetSSL_Win/testsuite/TestSuite_vs110.vcxproj @@ -0,0 +1,339 @@ + + + + + debug_shared + Win32 + + + debug_static_md + Win32 + + + debug_static_mt + Win32 + + + release_shared + Win32 + + + release_static_md + Win32 + + + release_static_mt + Win32 + + + + TestSuite + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28} + TestSuite + Win32Proj + + + + Application + Dynamic + MultiByte + v110 + + + Application + Dynamic + MultiByte + v110 + + + Application + Static + MultiByte + v110 + + + Application + Static + MultiByte + v110 + + + Application + Dynamic + MultiByte + v110 + + + Application + Dynamic + MultiByte + v110 + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>11.0.61030.0 + TestSuited + TestSuited + TestSuited + TestSuite + TestSuite + TestSuite + + + bin\ + obj\TestSuite\$(Configuration)\ + true + + + bin\ + obj\TestSuite\$(Configuration)\ + false + + + bin\static_mt\ + obj\TestSuite\$(Configuration)\ + true + + + bin\static_mt\ + obj\TestSuite\$(Configuration)\ + false + + + bin\static_md\ + obj\TestSuite\$(Configuration)\ + true + + + bin\static_md\ + obj\TestSuite\$(Configuration)\ + false + + + + Disabled + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + EditAndContinue + Default + + + CppUnitd.lib;WinTestRunnerd.lib;ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + bin\TestSuited.exe + ..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\TestSuited.pdb + Windows + MachineX86 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + + + CppUnit.lib;WinTestRunner.lib;ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + bin\TestSuite.exe + ..\..\lib;%(AdditionalLibraryDirectories) + false + Windows + true + true + MachineX86 + + + + + Disabled + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + Level3 + EditAndContinue + Default + + + CppUnitmtd.lib;WinTestRunnermtd.lib;iphlpapi.lib;winmm.lib;nafxcwd.lib;libcmtd.lib;WinTestRunner.res;ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + bin\static_mt\TestSuited.exe + ..\..\lib;%(AdditionalLibraryDirectories) + nafxcwd.lib;libcmtd.lib;%(IgnoreSpecificDefaultLibraries) + true + true + bin\static_mt\TestSuited.pdb + Windows + MachineX86 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + + + CppUnitmt.lib;WinTestRunnermt.lib;iphlpapi.lib;winmm.lib;nafxcw.lib;libcmt.lib;WinTestRunner.res;ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + bin\static_mt\TestSuite.exe + ..\..\lib;%(AdditionalLibraryDirectories) + nafxcw.lib;libcmt.lib;%(IgnoreSpecificDefaultLibraries) + false + Windows + true + true + MachineX86 + + + + + Disabled + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + EditAndContinue + Default + + + CppUnitmdd.lib;WinTestRunnermdd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + bin\static_md\TestSuited.exe + ..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\static_md\TestSuited.pdb + Windows + MachineX86 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + + + CppUnitmd.lib;WinTestRunnermd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + bin\static_md\TestSuite.exe + ..\..\lib;%(AdditionalLibraryDirectories) + false + Windows + true + true + MachineX86 + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NetSSL_Win/testsuite/TestSuite_vs110.vcxproj.filters b/NetSSL_Win/testsuite/TestSuite_vs110.vcxproj.filters new file mode 100644 index 000000000..cf868e1ab --- /dev/null +++ b/NetSSL_Win/testsuite/TestSuite_vs110.vcxproj.filters @@ -0,0 +1,117 @@ + + + + + {5acea4bc-c4e4-41e1-9741-c26e1d9c406a} + + + {d91d400d-92e6-444c-b919-a16b62bd1beb} + + + {d3da92b0-a181-4f39-89e0-63b7f9c80413} + + + {63a0706c-bae0-4179-944c-7843f1a876be} + + + {a4079a0a-3a07-4946-a4ed-949c8b9b23eb} + + + {85ee8909-a843-4f23-abcc-18c5984dd6db} + + + {b0a237e5-9ccf-4ab4-96f6-228c43fcc612} + + + {df27561a-5510-43c6-bfb8-ebf46816d90d} + + + {3e485db4-3490-46cd-bafc-ef36af259f8b} + + + {e0c98906-afd1-42fc-ad20-abe67e793331} + + + {727d1e03-f9a7-44f9-b18b-7ab1913eb6fb} + + + {3f59777b-8353-41fb-9a2c-fade148d6303} + + + {1f640b15-6417-4eee-8aa8-76150b05a453} + + + {1d1e92cb-b40f-4dd9-b9d2-1f5a513ca3cc} + + + {5367bac1-09fc-4fcf-b592-3d4d584eb1a7} + + + {b6101a9d-f9b0-4fe7-89d1-7282412a998e} + + + {cab8e201-6e4e-4528-bad6-5163224a6df6} + + + + + HTTPS\Header Files + + + _Suite\Header Files + + + TCPServer\Header Files + + + TCPServer\Header Files + + + HTTPSServer\Header Files + + + HTTPSServer\Header Files + + + HTTPSClient\Header Files + + + HTTPSClient\Header Files + + + HTTPSClient\Header Files + + + + + HTTPS\Source Files + + + _Suite\Source Files + + + _Driver\Source Files + + + TCPServer\Source Files + + + TCPServer\Source Files + + + HTTPSServer\Source Files + + + HTTPSServer\Source Files + + + HTTPSClient\Source Files + + + HTTPSClient\Source Files + + + HTTPSClient\Source Files + + + \ No newline at end of file diff --git a/NetSSL_Win/testsuite/TestSuite_vs120.vcxproj b/NetSSL_Win/testsuite/TestSuite_vs120.vcxproj new file mode 100644 index 000000000..c4b5a155a --- /dev/null +++ b/NetSSL_Win/testsuite/TestSuite_vs120.vcxproj @@ -0,0 +1,331 @@ + + + + + debug_shared + Win32 + + + debug_static_md + Win32 + + + debug_static_mt + Win32 + + + release_shared + Win32 + + + release_static_md + Win32 + + + release_static_mt + Win32 + + + + TestSuite + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28} + TestSuite + Win32Proj + + + + Application + MultiByte + v120 + + + Application + MultiByte + v120 + + + Application + MultiByte + v120 + + + Application + MultiByte + v120 + + + Application + MultiByte + v120 + + + Application + MultiByte + v120 + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>12.0.30501.0 + TestSuited + TestSuited + TestSuited + TestSuite + TestSuite + TestSuite + + + bin\ + obj\TestSuite\$(Configuration)\ + true + + + bin\ + obj\TestSuite\$(Configuration)\ + false + + + bin\static_mt\ + obj\TestSuite\$(Configuration)\ + true + + + bin\static_mt\ + obj\TestSuite\$(Configuration)\ + false + + + bin\static_md\ + obj\TestSuite\$(Configuration)\ + true + + + bin\static_md\ + obj\TestSuite\$(Configuration)\ + false + + + + Disabled + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + EditAndContinue + Default + + + CppUnitd.lib;ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + bin\TestSuited.exe + ..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\TestSuited.pdb + Console + MachineX86 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + + + CppUnit.lib;ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + bin\TestSuite.exe + ..\..\lib;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX86 + + + + + Disabled + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + Level3 + EditAndContinue + Default + + + CppUnitmtd.lib;iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + bin\static_mt\TestSuited.exe + ..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\static_mt\TestSuited.pdb + Console + MachineX86 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + + + CppUnitmt.lib;iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + bin\static_mt\TestSuite.exe + ..\..\lib;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX86 + + + + + Disabled + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + EditAndContinue + Default + + + CppUnitmdd.lib;iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + bin\static_md\TestSuited.exe + ..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\static_md\TestSuited.pdb + Console + MachineX86 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + + + CppUnitmd.lib;iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + bin\static_md\TestSuite.exe + ..\..\lib;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX86 + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NetSSL_Win/testsuite/TestSuite_vs120.vcxproj.filters b/NetSSL_Win/testsuite/TestSuite_vs120.vcxproj.filters new file mode 100644 index 000000000..a5362ad12 --- /dev/null +++ b/NetSSL_Win/testsuite/TestSuite_vs120.vcxproj.filters @@ -0,0 +1,117 @@ + + + + + {66d9d96d-f088-41d2-ba9e-1fd1db086895} + + + {ad788378-0aef-45c5-a727-b3a049df1615} + + + {f3cf944d-b2bd-4e26-ac8d-76a5867f4728} + + + {925a2425-03b7-4d74-8815-41b124f75faf} + + + {bb928a12-feae-4161-91ba-dc6a6b1eb053} + + + {96f9ef64-58b8-4020-a0b0-6b1e10e8b402} + + + {c64e7426-f5fc-4891-8bf3-3a39cdbc2f57} + + + {acba5151-4fa1-484f-993b-e0161838d243} + + + {f4d71fea-6410-46ca-a598-c7035ee64141} + + + {d21c05eb-c08a-4f65-b692-88e619000428} + + + {1684ee6c-8270-4511-a393-68fc6b47b75a} + + + {1fb8cf30-1627-4d03-82d5-107f5a4e9319} + + + {3ae6b2ca-14ed-47bc-a5fb-a3bec93f696a} + + + {869c0478-6f39-4c6a-9f6d-9d8c5cfe9f97} + + + {bb7f3c63-c4a5-46ac-b439-d412940819e3} + + + {0984a619-9288-4965-b2f7-14d905773062} + + + {7445ff4b-ea77-435e-b421-918fb3cff5d7} + + + + + HTTPS\Header Files + + + _Suite\Header Files + + + TCPServer\Header Files + + + TCPServer\Header Files + + + HTTPSServer\Header Files + + + HTTPSServer\Header Files + + + HTTPSClient\Header Files + + + HTTPSClient\Header Files + + + HTTPSClient\Header Files + + + + + HTTPS\Source Files + + + _Suite\Source Files + + + _Driver\Source Files + + + TCPServer\Source Files + + + TCPServer\Source Files + + + HTTPSServer\Source Files + + + HTTPSServer\Source Files + + + HTTPSClient\Source Files + + + HTTPSClient\Source Files + + + HTTPSClient\Source Files + + + \ No newline at end of file diff --git a/NetSSL_Win/testsuite/TestSuite_vs71.vcproj b/NetSSL_Win/testsuite/TestSuite_vs71.vcproj new file mode 100644 index 000000000..75a0174b6 --- /dev/null +++ b/NetSSL_Win/testsuite/TestSuite_vs71.vcproj @@ -0,0 +1,497 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NetSSL_Win/testsuite/TestSuite_vs80.vcproj b/NetSSL_Win/testsuite/TestSuite_vs80.vcproj new file mode 100644 index 000000000..43eecf038 --- /dev/null +++ b/NetSSL_Win/testsuite/TestSuite_vs80.vcproj @@ -0,0 +1,537 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NetSSL_Win/testsuite/TestSuite_vs90.vcproj b/NetSSL_Win/testsuite/TestSuite_vs90.vcproj new file mode 100644 index 000000000..c404b8c45 --- /dev/null +++ b/NetSSL_Win/testsuite/TestSuite_vs90.vcproj @@ -0,0 +1,537 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NetSSL_Win/testsuite/TestSuite_x64_vs100.vcxproj b/NetSSL_Win/testsuite/TestSuite_x64_vs100.vcxproj new file mode 100644 index 000000000..df005151e --- /dev/null +++ b/NetSSL_Win/testsuite/TestSuite_x64_vs100.vcxproj @@ -0,0 +1,339 @@ + + + + + debug_shared + x64 + + + debug_static_md + x64 + + + debug_static_mt + x64 + + + release_shared + x64 + + + release_static_md + x64 + + + release_static_mt + x64 + + + + TestSuite + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28} + TestSuite + Win32Proj + + + + Application + Dynamic + MultiByte + + + Application + Dynamic + MultiByte + + + Application + Static + MultiByte + + + Application + Static + MultiByte + + + Application + Dynamic + MultiByte + + + Application + Dynamic + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + bin64\ + obj64\TestSuite\$(Configuration)\ + true + bin64\ + obj64\TestSuite\$(Configuration)\ + false + bin64\static_mt\ + obj64\TestSuite\$(Configuration)\ + true + bin64\static_mt\ + obj64\TestSuite\$(Configuration)\ + false + bin64\static_md\ + obj64\TestSuite\$(Configuration)\ + true + bin64\static_md\ + obj64\TestSuite\$(Configuration)\ + false + TestSuited + TestSuited + TestSuited + TestSuite + TestSuite + TestSuite + + + + Disabled + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + CppUnitd.lib;WinTestRunnerd.lib;ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + bin64\TestSuited.exe + ..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\TestSuited.pdb + Windows + MachineX64 + %(AdditionalOptions) + + + + + Disabled + OnlyExplicitInline + true + Speed + true + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + CppUnit.lib;WinTestRunner.lib;ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + bin64\TestSuite.exe + ..\..\lib64;%(AdditionalLibraryDirectories) + false + Windows + true + true + MachineX64 + %(AdditionalOptions) + + + + + Disabled + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + Level3 + ProgramDatabase + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + CppUnitmtd.lib;WinTestRunnermtd.lib;iphlpapi.lib;winmm.lib;nafxcwd.lib;libcmtd.lib;WinTestRunner.res;ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + bin64\static_mt\TestSuited.exe + ..\..\lib64;%(AdditionalLibraryDirectories) + nafxcwd.lib;libcmtd.lib;%(IgnoreSpecificDefaultLibraries) + true + true + bin64\static_mt\TestSuited.pdb + Windows + MachineX64 + %(AdditionalOptions) + + + + + Disabled + OnlyExplicitInline + true + Speed + true + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + CppUnitmt.lib;WinTestRunnermt.lib;iphlpapi.lib;winmm.lib;nafxcw.lib;libcmt.lib;WinTestRunner.res;ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + bin64\static_mt\TestSuite.exe + ..\..\lib64;%(AdditionalLibraryDirectories) + nafxcw.lib;libcmt.lib;%(IgnoreSpecificDefaultLibraries) + false + Windows + true + true + MachineX64 + %(AdditionalOptions) + + + + + Disabled + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + CppUnitmdd.lib;WinTestRunnermdd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + bin64\static_md\TestSuited.exe + ..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\static_md\TestSuited.pdb + Windows + MachineX64 + %(AdditionalOptions) + + + + + Disabled + OnlyExplicitInline + true + Speed + true + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + %(AdditionalOptions) + + + CppUnitmd.lib;WinTestRunnermd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + bin64\static_md\TestSuite.exe + ..\..\lib64;%(AdditionalLibraryDirectories) + false + Windows + true + true + MachineX64 + %(AdditionalOptions) + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NetSSL_Win/testsuite/TestSuite_x64_vs100.vcxproj.filters b/NetSSL_Win/testsuite/TestSuite_x64_vs100.vcxproj.filters new file mode 100644 index 000000000..8f212247a --- /dev/null +++ b/NetSSL_Win/testsuite/TestSuite_x64_vs100.vcxproj.filters @@ -0,0 +1,117 @@ + + + + + {9da2c126-1706-499c-9ec4-52324538b22b} + + + {b10418c5-5dac-4273-9235-cbdb34db66fb} + + + {1cab6433-429d-4ca8-96a9-399da6e3852c} + + + {a7c37695-5f81-47b3-95e6-1a4bd70f0529} + + + {cd8dc6b8-df26-41b1-97f6-26d1e59bf2f5} + + + {42fe0084-e278-4d51-960a-e74620159528} + + + {9fff1017-a4cf-410d-9ca3-7cd4cb03e912} + + + {4d7475a9-8af1-4a83-bf21-a31cfbb5b4cd} + + + {12a1e58f-7306-43ae-8ec7-38a8809e78af} + + + {6456235c-282a-426b-9c70-6ab6381a24d8} + + + {38715304-0329-4409-8c3e-d802588d7052} + + + {eb3d48b7-1bdb-4280-bca2-c4c7b58c54a9} + + + {fa4b4c8e-8d19-4566-a82f-ce0c2d521d3c} + + + {cc93d32e-d12a-4554-ad73-a65b0f9ae272} + + + {221f43cc-37c1-45ca-8b4a-192dfcecd8d5} + + + {738c5ced-7414-4d83-b85f-9ef41aa665c3} + + + {f457eeef-b5b8-4af0-ae9b-c8d2d75b7cb7} + + + + + HTTPS\Header Files + + + _Suite\Header Files + + + TCPServer\Header Files + + + TCPServer\Header Files + + + HTTPSServer\Header Files + + + HTTPSServer\Header Files + + + HTTPSClient\Header Files + + + HTTPSClient\Header Files + + + HTTPSClient\Header Files + + + + + HTTPS\Source Files + + + _Suite\Source Files + + + _Driver\Source Files + + + TCPServer\Source Files + + + TCPServer\Source Files + + + HTTPSServer\Source Files + + + HTTPSServer\Source Files + + + HTTPSClient\Source Files + + + HTTPSClient\Source Files + + + HTTPSClient\Source Files + + + \ No newline at end of file diff --git a/NetSSL_Win/testsuite/TestSuite_x64_vs110.vcxproj b/NetSSL_Win/testsuite/TestSuite_x64_vs110.vcxproj new file mode 100644 index 000000000..e7e38feea --- /dev/null +++ b/NetSSL_Win/testsuite/TestSuite_x64_vs110.vcxproj @@ -0,0 +1,339 @@ + + + + + debug_shared + x64 + + + debug_static_md + x64 + + + debug_static_mt + x64 + + + release_shared + x64 + + + release_static_md + x64 + + + release_static_mt + x64 + + + + TestSuite + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28} + TestSuite + Win32Proj + + + + Application + Dynamic + MultiByte + v110 + + + Application + Dynamic + MultiByte + v110 + + + Application + Static + MultiByte + v110 + + + Application + Static + MultiByte + v110 + + + Application + Dynamic + MultiByte + v110 + + + Application + Dynamic + MultiByte + v110 + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>11.0.61030.0 + TestSuited + TestSuited + TestSuited + TestSuite + TestSuite + TestSuite + + + bin64\ + obj64\TestSuite\$(Configuration)\ + true + + + bin64\ + obj64\TestSuite\$(Configuration)\ + false + + + bin64\static_mt\ + obj64\TestSuite\$(Configuration)\ + true + + + bin64\static_mt\ + obj64\TestSuite\$(Configuration)\ + false + + + bin64\static_md\ + obj64\TestSuite\$(Configuration)\ + true + + + bin64\static_md\ + obj64\TestSuite\$(Configuration)\ + false + + + + Disabled + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + + + CppUnitd.lib;WinTestRunnerd.lib;ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + bin64\TestSuited.exe + ..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\TestSuited.pdb + Windows + MachineX64 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + + + CppUnit.lib;WinTestRunner.lib;ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + bin64\TestSuite.exe + ..\..\lib64;%(AdditionalLibraryDirectories) + false + Windows + true + true + MachineX64 + + + + + Disabled + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + Level3 + ProgramDatabase + Default + + + CppUnitmtd.lib;WinTestRunnermtd.lib;iphlpapi.lib;winmm.lib;nafxcwd.lib;libcmtd.lib;WinTestRunner.res;ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + bin64\static_mt\TestSuited.exe + ..\..\lib64;%(AdditionalLibraryDirectories) + nafxcwd.lib;libcmtd.lib;%(IgnoreSpecificDefaultLibraries) + true + true + bin64\static_mt\TestSuited.pdb + Windows + MachineX64 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + + + CppUnitmt.lib;WinTestRunnermt.lib;iphlpapi.lib;winmm.lib;nafxcw.lib;libcmt.lib;WinTestRunner.res;ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + bin64\static_mt\TestSuite.exe + ..\..\lib64;%(AdditionalLibraryDirectories) + nafxcw.lib;libcmt.lib;%(IgnoreSpecificDefaultLibraries) + false + Windows + true + true + MachineX64 + + + + + Disabled + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + + + CppUnitmdd.lib;WinTestRunnermdd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + bin64\static_md\TestSuited.exe + ..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\static_md\TestSuited.pdb + Windows + MachineX64 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + + + CppUnitmd.lib;WinTestRunnermd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + bin64\static_md\TestSuite.exe + ..\..\lib64;%(AdditionalLibraryDirectories) + false + Windows + true + true + MachineX64 + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NetSSL_Win/testsuite/TestSuite_x64_vs110.vcxproj.filters b/NetSSL_Win/testsuite/TestSuite_x64_vs110.vcxproj.filters new file mode 100644 index 000000000..d57979676 --- /dev/null +++ b/NetSSL_Win/testsuite/TestSuite_x64_vs110.vcxproj.filters @@ -0,0 +1,117 @@ + + + + + {0b6d5b19-6674-41d5-9a0f-2d2ac092c819} + + + {10d80a49-fff7-4e5c-a80d-4d25174aaf60} + + + {067dc608-a1bc-42ba-a94b-0454dcdd34a0} + + + {2de92cc8-352d-4a20-b0a4-83afac191ed4} + + + {0847d0ec-db54-4eea-8897-7beb9b104f9b} + + + {9f24fd61-993c-4bb3-b2d8-3e5b8b7cf976} + + + {34ac68e9-5c5e-4a7e-9aca-048f87b189b9} + + + {792ab7ab-409c-4c44-8951-cb80096a62d1} + + + {8a44eab3-8248-493c-95d9-91c7626a84d6} + + + {756f1807-09f4-4da6-aa61-cbd5601a814c} + + + {25b0f5b3-69cf-4e44-8a6b-2a3612b500b9} + + + {60e4e691-4bde-4b08-ada8-f6deef21c73f} + + + {daab1f2a-4a0d-4bb1-9556-7f4e32e205e8} + + + {04408f4f-73bb-4511-820d-01b5b9e6ad79} + + + {68c6ebcc-59f3-4f00-97bb-fd5ea916f697} + + + {7a0f87a3-fe96-45bd-8475-0da66a9e2bf6} + + + {b11d1a1a-44c1-4d1e-a8c8-4945e0e28a15} + + + + + HTTPS\Header Files + + + _Suite\Header Files + + + TCPServer\Header Files + + + TCPServer\Header Files + + + HTTPSServer\Header Files + + + HTTPSServer\Header Files + + + HTTPSClient\Header Files + + + HTTPSClient\Header Files + + + HTTPSClient\Header Files + + + + + HTTPS\Source Files + + + _Suite\Source Files + + + _Driver\Source Files + + + TCPServer\Source Files + + + TCPServer\Source Files + + + HTTPSServer\Source Files + + + HTTPSServer\Source Files + + + HTTPSClient\Source Files + + + HTTPSClient\Source Files + + + HTTPSClient\Source Files + + + \ No newline at end of file diff --git a/NetSSL_Win/testsuite/TestSuite_x64_vs120.vcxproj b/NetSSL_Win/testsuite/TestSuite_x64_vs120.vcxproj new file mode 100644 index 000000000..a5edfa733 --- /dev/null +++ b/NetSSL_Win/testsuite/TestSuite_x64_vs120.vcxproj @@ -0,0 +1,331 @@ + + + + + debug_shared + x64 + + + debug_static_md + x64 + + + debug_static_mt + x64 + + + release_shared + x64 + + + release_static_md + x64 + + + release_static_mt + x64 + + + + TestSuite + {25E8E5AB-7B9C-4A2F-A0F6-12B6C5B11F28} + TestSuite + Win32Proj + + + + Application + MultiByte + v120 + + + Application + MultiByte + v120 + + + Application + MultiByte + v120 + + + Application + MultiByte + v120 + + + Application + MultiByte + v120 + + + Application + MultiByte + v120 + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>12.0.30501.0 + TestSuited + TestSuited + TestSuited + TestSuite + TestSuite + TestSuite + + + bin64\ + obj64\TestSuite\$(Configuration)\ + true + + + bin64\ + obj64\TestSuite\$(Configuration)\ + false + + + bin64\static_mt\ + obj64\TestSuite\$(Configuration)\ + true + + + bin64\static_mt\ + obj64\TestSuite\$(Configuration)\ + false + + + bin64\static_md\ + obj64\TestSuite\$(Configuration)\ + true + + + bin64\static_md\ + obj64\TestSuite\$(Configuration)\ + false + + + + Disabled + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + + + CppUnitd.lib;ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + bin64\TestSuited.exe + ..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\TestSuited.pdb + Console + MachineX64 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + + + CppUnit.lib;ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + bin64\TestSuite.exe + ..\..\lib64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX64 + + + + + Disabled + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + Level3 + ProgramDatabase + Default + + + CppUnitmtd.lib;iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + bin64\static_mt\TestSuited.exe + ..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\static_mt\TestSuited.pdb + Console + MachineX64 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + + + CppUnitmt.lib;iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + bin64\static_mt\TestSuite.exe + ..\..\lib64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX64 + + + + + Disabled + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + + + CppUnitmdd.lib;iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + bin64\static_md\TestSuited.exe + ..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\static_md\TestSuited.pdb + Console + MachineX64 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + + + CppUnitmd.lib;iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies) + bin64\static_md\TestSuite.exe + ..\..\lib64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX64 + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NetSSL_Win/testsuite/TestSuite_x64_vs120.vcxproj.filters b/NetSSL_Win/testsuite/TestSuite_x64_vs120.vcxproj.filters new file mode 100644 index 000000000..e8e603663 --- /dev/null +++ b/NetSSL_Win/testsuite/TestSuite_x64_vs120.vcxproj.filters @@ -0,0 +1,117 @@ + + + + + {44f16039-b582-4a28-88b6-74b0c333484a} + + + {f3862c30-2939-47d2-9a3a-946ac3164381} + + + {ced19eae-4652-47ef-9925-07cdd89f7d82} + + + {5b86ec1f-28d0-4e66-bb30-35895e713e57} + + + {ef01d7be-ea62-4fe6-aa2b-a8bf95ccbb9b} + + + {72fca448-429f-4cbe-a1e3-fb09dcf1cf2e} + + + {1c5bb02f-41f0-4808-9271-26b9aec0de9e} + + + {f8991691-3ba3-4431-b79f-d87f98da6a0d} + + + {41050250-749e-4179-889d-72633202d1c0} + + + {e7682753-759c-4f63-8ae9-2889ad03ffea} + + + {797de01c-acfa-48ad-8565-a52bc4a76952} + + + {c274b426-37dc-41ea-9ffb-2520b05d390e} + + + {2a3191e0-6bcb-4aa8-89f5-6538d5c98024} + + + {2e878c3b-c83a-4c62-8c09-bcaea197f2a5} + + + {db5bac66-4eea-478d-afdb-bd32ac96cbd8} + + + {22bc98ab-b2f1-4876-bca6-945c07626fae} + + + {4fe1b07f-e7e3-4597-be4c-3efd13b5a46b} + + + + + HTTPS\Header Files + + + _Suite\Header Files + + + TCPServer\Header Files + + + TCPServer\Header Files + + + HTTPSServer\Header Files + + + HTTPSServer\Header Files + + + HTTPSClient\Header Files + + + HTTPSClient\Header Files + + + HTTPSClient\Header Files + + + + + HTTPS\Source Files + + + _Suite\Source Files + + + _Driver\Source Files + + + TCPServer\Source Files + + + TCPServer\Source Files + + + HTTPSServer\Source Files + + + HTTPSServer\Source Files + + + HTTPSClient\Source Files + + + HTTPSClient\Source Files + + + HTTPSClient\Source Files + + + \ No newline at end of file diff --git a/NetSSL_Win/testsuite/TestSuite_x64_vs90.vcproj b/NetSSL_Win/testsuite/TestSuite_x64_vs90.vcproj new file mode 100644 index 000000000..473d7737d --- /dev/null +++ b/NetSSL_Win/testsuite/TestSuite_x64_vs90.vcproj @@ -0,0 +1,537 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NetSSL_Win/testsuite/TestSuitemt.xml b/NetSSL_Win/testsuite/TestSuitemt.xml new file mode 100644 index 000000000..2c03eb7be --- /dev/null +++ b/NetSSL_Win/testsuite/TestSuitemt.xml @@ -0,0 +1,29 @@ + + + + ${system.nodeName} + none + false + + AcceptCertificateHandler + + + + + + relaxed + false + + AcceptCertificateHandler + + + + + + + + proxy.aon.at + 8080 + + + diff --git a/NetSSL_Win/testsuite/any.pfx b/NetSSL_Win/testsuite/any.pfx new file mode 100644 index 000000000..cc0ad5d17 Binary files /dev/null and b/NetSSL_Win/testsuite/any.pfx differ diff --git a/NetSSL_Win/testsuite/src/Driver.cpp b/NetSSL_Win/testsuite/src/Driver.cpp new file mode 100644 index 000000000..9a497e4ad --- /dev/null +++ b/NetSSL_Win/testsuite/src/Driver.cpp @@ -0,0 +1,77 @@ +// +// Driver.cpp +// +// $Id: //poco/1.4/NetSSL_Win/testsuite/src/Driver.cpp#1 $ +// +// Console-based test driver for Poco NetSSL. +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "CppUnit/TestRunner.h" +#include "NetSSLTestSuite.h" +#include "Poco/Util/Application.h" +#include "Poco/Net/HTTPStreamFactory.h" +#include "Poco/Net/HTTPSStreamFactory.h" +#include + + +class NetSSLApp: public Poco::Util::Application +{ +public: + NetSSLApp() + { + Poco::Net::initializeSSL(); + Poco::Net::HTTPStreamFactory::registerFactory(); + Poco::Net::HTTPSStreamFactory::registerFactory(); + } + + ~NetSSLApp() + { + Poco::Net::uninitializeSSL(); + } + + int main(const std::vector& args) + { + CppUnit::TestRunner runner; + runner.addTest("NetSSLTestSuite", NetSSLTestSuite::suite()); + return runner.run(_targs) ? 0 : 1; + } + + void setup(int argc, char** argv) + { + init(1, argv); + for (int i = 0; i < argc; ++i) + _targs.push_back(std::string(argv[i])); + } + +protected: + void initialize(Poco::Util::Application& self) + { + loadConfiguration(); // load default configuration files, if present + Poco::Util::Application::initialize(self); + } + +private: + std::vector _targs; +}; + + +int main(int ac, char **av) +{ + NetSSLApp app; + try + { + app.setup(ac, av); + return app.run(); + } + catch (Poco::Exception& exc) + { + std::cout << exc.displayText() << std::endl; + return 1; + } +} diff --git a/NetSSL_Win/testsuite/src/HTTPSClientSessionTest.cpp b/NetSSL_Win/testsuite/src/HTTPSClientSessionTest.cpp new file mode 100644 index 000000000..64eb7f4be --- /dev/null +++ b/NetSSL_Win/testsuite/src/HTTPSClientSessionTest.cpp @@ -0,0 +1,441 @@ +// +// HTTPSClientSessionTest.cpp +// +// $Id: //poco/1.4/NetSSL_Win/testsuite/src/HTTPSClientSessionTest.cpp#2 $ +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "HTTPSClientSessionTest.h" +#include "CppUnit/TestCaller.h" +#include "CppUnit/TestSuite.h" +#include "Poco/Net/HTTPSClientSession.h" +#include "Poco/Net/HTTPRequest.h" +#include "Poco/Net/HTTPRequestHandler.h" +#include "Poco/Net/HTTPRequestHandlerFactory.h" +#include "Poco/Net/HTTPResponse.h" +#include "Poco/Net/HTTPServer.h" +#include "Poco/Net/HTTPServerResponse.h" +#include "Poco/Net/HTTPServerRequest.h" +#include "Poco/Net/HTTPServerParams.h" +#include "Poco/Net/SecureStreamSocket.h" +#include "Poco/Net/Context.h" +#include "Poco/Net/Session.h" +#include "Poco/Net/SSLManager.h" +#include "Poco/Util/Application.h" +#include "Poco/Util/AbstractConfiguration.h" +#include "Poco/StreamCopier.h" +#include "Poco/Exception.h" +#include "Poco/DateTimeFormatter.h" +#include "Poco/DateTimeFormat.h" +#include "Poco/Thread.h" +#include "HTTPSTestServer.h" +#include +#include +#include + + +using namespace Poco::Net; +using Poco::Util::Application; +using Poco::StreamCopier; +using Poco::Thread; + + +class TestRequestHandler: public HTTPRequestHandler + /// Return a HTML document with the current date and time. +{ +public: + TestRequestHandler() + { + } + + void handleRequest(HTTPServerRequest& request, HTTPServerResponse& response) + { + response.setChunkedTransferEncoding(true); + response.setContentType(request.getContentType()); + std::ostream& ostr = response.send(); + Poco::StreamCopier::copyStream(request.stream(), ostr); + } + +}; + + +class TestRequestHandlerFactory: public HTTPRequestHandlerFactory +{ +public: + TestRequestHandlerFactory() + { + } + + HTTPRequestHandler* createRequestHandler(const HTTPServerRequest& request) + { + return new TestRequestHandler(); + } +}; + + +HTTPSClientSessionTest::HTTPSClientSessionTest(const std::string& name): CppUnit::TestCase(name) +{ +} + + +HTTPSClientSessionTest::~HTTPSClientSessionTest() +{ +} + + +void HTTPSClientSessionTest::testGetSmall() +{ + HTTPSTestServer srv; + HTTPSClientSession s("localhost", srv.port()); + HTTPRequest request(HTTPRequest::HTTP_GET, "/small"); + s.sendRequest(request); + HTTPResponse response; + std::istream& rs = s.receiveResponse(response); + assert (response.getContentLength() == HTTPSTestServer::SMALL_BODY.length()); + assert (response.getContentType() == "text/plain"); + std::ostringstream ostr; + StreamCopier::copyStream(rs, ostr); + assert (ostr.str() == HTTPSTestServer::SMALL_BODY); +} + + +void HTTPSClientSessionTest::testGetLarge() +{ + HTTPSTestServer srv; + HTTPSClientSession s("localhost", srv.port()); + HTTPRequest request(HTTPRequest::HTTP_GET, "/large"); + s.sendRequest(request); + HTTPResponse response; + std::istream& rs = s.receiveResponse(response); + assert (response.getContentLength() == HTTPSTestServer::LARGE_BODY.length()); + assert (response.getContentType() == "text/plain"); + std::ostringstream ostr; + StreamCopier::copyStream(rs, ostr); + assert (ostr.str() == HTTPSTestServer::LARGE_BODY); +} + + +void HTTPSClientSessionTest::testHead() +{ + HTTPSTestServer srv; + HTTPSClientSession s("localhost", srv.port()); + HTTPRequest request(HTTPRequest::HTTP_HEAD, "/large"); + s.sendRequest(request); + HTTPResponse response; + std::istream& rs = s.receiveResponse(response); + assert (response.getContentLength() == HTTPSTestServer::LARGE_BODY.length()); + assert (response.getContentType() == "text/plain"); + std::ostringstream ostr; + assert (StreamCopier::copyStream(rs, ostr) == 0); +} + + +void HTTPSClientSessionTest::testPostSmallIdentity() +{ + HTTPSTestServer srv; + HTTPSClientSession s("localhost", srv.port()); + HTTPRequest request(HTTPRequest::HTTP_POST, "/echo"); + std::string body("this is a random request body\r\n0\r\n"); + request.setContentLength((int) body.length()); + s.sendRequest(request) << body; + HTTPResponse response; + std::istream& rs = s.receiveResponse(response); + assert (response.getContentLength() == body.length()); + std::ostringstream ostr; + StreamCopier::copyStream(rs, ostr); + assert (ostr.str() == body); +} + + +void HTTPSClientSessionTest::testPostLargeIdentity() +{ + HTTPSTestServer srv; + HTTPSClientSession s("localhost", srv.port()); + HTTPRequest request(HTTPRequest::HTTP_POST, "/echo"); + std::string body(8000, 'x'); + body.append("\r\n0\r\n"); + request.setContentLength((int) body.length()); + s.sendRequest(request) << body; + HTTPResponse response; + std::istream& rs = s.receiveResponse(response); + assert (response.getContentLength() == body.length()); + std::ostringstream ostr; + StreamCopier::copyStream(rs, ostr); + assert (ostr.str() == body); +} + + +void HTTPSClientSessionTest::testPostSmallChunked() +{ + HTTPSTestServer srv; + HTTPSClientSession s("localhost", srv.port()); + HTTPRequest request(HTTPRequest::HTTP_POST, "/echo"); + std::string body("this is a random request body"); + request.setChunkedTransferEncoding(true); + s.sendRequest(request) << body; + HTTPResponse response; + std::istream& rs = s.receiveResponse(response); + assert (response.getChunkedTransferEncoding()); + assert (response.getContentLength() == HTTPMessage::UNKNOWN_CONTENT_LENGTH); + std::ostringstream ostr; + StreamCopier::copyStream(rs, ostr); + assert (ostr.str() == body); +} + + +void HTTPSClientSessionTest::testPostLargeChunked() +{ + HTTPSTestServer srv; + HTTPSClientSession s("localhost", srv.port()); + HTTPRequest request(HTTPRequest::HTTP_POST, "/echo"); + std::string body(16000, 'x'); + request.setChunkedTransferEncoding(true); + s.sendRequest(request) << body; + HTTPResponse response; + std::istream& rs = s.receiveResponse(response); + assert (response.getChunkedTransferEncoding()); + assert (response.getContentLength() == HTTPMessage::UNKNOWN_CONTENT_LENGTH); + std::ostringstream ostr; + StreamCopier::copyStream(rs, ostr); + assert (ostr.str() == body); +} + + +void HTTPSClientSessionTest::testPostLargeChunkedKeepAlive() +{ + SecureServerSocket svs(32322); + HTTPServer srv(new TestRequestHandlerFactory(), svs, new HTTPServerParams()); + srv.start(); + try + { + HTTPSClientSession s("localhost", srv.port()); + s.setKeepAlive(true); + for (int i = 0; i < 10; ++i) + { + HTTPRequest request(HTTPRequest::HTTP_POST, "/keepAlive", HTTPMessage::HTTP_1_1); + std::string body(16000, 'x'); + request.setChunkedTransferEncoding(true); + s.sendRequest(request) << body; + HTTPResponse response; + std::istream& rs = s.receiveResponse(response); + assert (response.getChunkedTransferEncoding()); + assert (response.getContentLength() == HTTPMessage::UNKNOWN_CONTENT_LENGTH); + std::ostringstream ostr; + StreamCopier::copyStream(rs, ostr); + assert (ostr.str() == body); + } + srv.stop(); + } + catch (...) + { + srv.stop(); + throw; + } +} + + +void HTTPSClientSessionTest::testKeepAlive() +{ + HTTPSTestServer srv; + HTTPSClientSession s("localhost", srv.port()); + s.setKeepAlive(true); + HTTPRequest request(HTTPRequest::HTTP_HEAD, "/keepAlive", HTTPMessage::HTTP_1_1); + s.sendRequest(request); + HTTPResponse response; + std::istream& rs1 = s.receiveResponse(response); + assert (response.getContentLength() == HTTPSTestServer::SMALL_BODY.length()); + assert (response.getContentType() == "text/plain"); + assert (response.getKeepAlive()); + std::ostringstream ostr1; + assert (StreamCopier::copyStream(rs1, ostr1) == 0); + + request.setMethod(HTTPRequest::HTTP_GET); + request.setURI("/small"); + s.sendRequest(request); + std::istream& rs2 = s.receiveResponse(response); + assert (response.getContentLength() == HTTPSTestServer::SMALL_BODY.length()); + assert (response.getKeepAlive()); + std::ostringstream ostr2; + StreamCopier::copyStream(rs2, ostr2); + assert (ostr2.str() == HTTPSTestServer::SMALL_BODY); + + request.setMethod(HTTPRequest::HTTP_GET); + request.setURI("/large"); + s.sendRequest(request); + std::istream& rs3 = s.receiveResponse(response); + assert (response.getContentLength() == HTTPMessage::UNKNOWN_CONTENT_LENGTH); + assert (response.getChunkedTransferEncoding()); + assert (response.getKeepAlive()); + std::ostringstream ostr3; + StreamCopier::copyStream(rs3, ostr3); + assert (ostr3.str() == HTTPSTestServer::LARGE_BODY); + + request.setMethod(HTTPRequest::HTTP_HEAD); + request.setURI("/large"); + s.sendRequest(request); + std::istream& rs4 = s.receiveResponse(response); + assert (response.getContentLength() == HTTPSTestServer::LARGE_BODY.length()); + assert (response.getContentType() == "text/plain"); + assert (!response.getKeepAlive()); + std::ostringstream ostr4; + assert (StreamCopier::copyStream(rs4, ostr4) == 0); +} + + +void HTTPSClientSessionTest::testInterop() +{ + HTTPSClientSession s("secure.appinf.com"); + HTTPRequest request(HTTPRequest::HTTP_GET, "/public/poco/NetSSL.txt"); + s.sendRequest(request); + Poco::Net::X509Certificate cert = s.serverCertificate(); + + HTTPResponse response; + std::istream& rs = s.receiveResponse(response); + std::ostringstream ostr; + StreamCopier::copyStream(rs, ostr); + std::string str(ostr.str()); + assert (str == "This is a test file for NetSSL.\n"); + + std::string commonName; + std::set domainNames; + cert.extractNames(commonName, domainNames); + + assert (commonName == "secure.appinf.com" || commonName == "*.appinf.com"); + assert (domainNames.find("appinf.com") != domainNames.end() + || domainNames.find("*.appinf.com") != domainNames.end()); +} + + +void HTTPSClientSessionTest::testProxy() +{ + HTTPSTestServer srv; + HTTPSClientSession s("secure.appinf.com"); + s.setProxy( + Application::instance().config().getString("testsuite.proxy.host"), + Application::instance().config().getInt("testsuite.proxy.port") + ); + HTTPRequest request(HTTPRequest::HTTP_GET, "/public/poco/NetSSL.txt"); + s.sendRequest(request); + Poco::Net::X509Certificate cert = s.serverCertificate(); + HTTPResponse response; + std::istream& rs = s.receiveResponse(response); + std::ostringstream ostr; + StreamCopier::copyStream(rs, ostr); + std::string str(ostr.str()); + assert (str == "This is a test file for NetSSL.\n"); + assert (cert.commonName() == "secure.appinf.com" || cert.commonName() == "*.appinf.com"); +} + + +void HTTPSClientSessionTest::testCachedSession() +{ + // ensure OpenSSL machinery is fully setup + Context::Ptr pDefaultServerContext = SSLManager::instance().defaultServerContext(); + Context::Ptr pDefaultClientContext = SSLManager::instance().defaultClientContext(); + + Context::Ptr pServerContext = new Context( + Context::SERVER_USE, + ""); + //pServerContext->enableSessionCache(true, "TestSuite"); + //pServerContext->setSessionTimeout(10); + //pServerContext->setSessionCacheSize(1000); + //pServerContext->disableStatelessSessionResumption(); + + HTTPSTestServer srv(pServerContext); + + Context::Ptr pClientContext = new Context( + Context::CLIENT_USE, + ""); + //pClientContext->enableSessionCache(true); + + HTTPSClientSession s1("localhost", srv.port(), pClientContext); + HTTPRequest request1(HTTPRequest::HTTP_GET, "/small"); + s1.sendRequest(request1); + Session::Ptr pSession1 = s1.sslSession(); + HTTPResponse response1; + std::istream& rs1 = s1.receiveResponse(response1); + assert (response1.getContentLength() == HTTPSTestServer::SMALL_BODY.length()); + assert (response1.getContentType() == "text/plain"); + std::ostringstream ostr1; + StreamCopier::copyStream(rs1, ostr1); + assert (ostr1.str() == HTTPSTestServer::SMALL_BODY); + + HTTPSClientSession s2("localhost", srv.port(), pClientContext, pSession1); + HTTPRequest request2(HTTPRequest::HTTP_GET, "/small"); + s2.sendRequest(request2); + Session::Ptr pSession2 = s2.sslSession(); + HTTPResponse response2; + std::istream& rs2 = s2.receiveResponse(response2); + assert (response2.getContentLength() == HTTPSTestServer::SMALL_BODY.length()); + assert (response2.getContentType() == "text/plain"); + std::ostringstream ostr2; + StreamCopier::copyStream(rs2, ostr2); + assert (ostr2.str() == HTTPSTestServer::SMALL_BODY); + + assert (pSession1 == pSession2); + + HTTPRequest request3(HTTPRequest::HTTP_GET, "/small"); + s2.sendRequest(request3); + Session::Ptr pSession3 = s2.sslSession(); + HTTPResponse response3; + std::istream& rs3 = s2.receiveResponse(response3); + assert (response3.getContentLength() == HTTPSTestServer::SMALL_BODY.length()); + assert (response3.getContentType() == "text/plain"); + std::ostringstream ostr3; + StreamCopier::copyStream(rs3, ostr3); + assert (ostr3.str() == HTTPSTestServer::SMALL_BODY); + + assert (pSession1 == pSession3); + + Thread::sleep(15000); // wait for session to expire + //pServerContext->flushSessionCache(); + + HTTPRequest request4(HTTPRequest::HTTP_GET, "/small"); + s2.sendRequest(request4); + Session::Ptr pSession4 = s2.sslSession(); + HTTPResponse response4; + std::istream& rs4 = s2.receiveResponse(response4); + assert (response4.getContentLength() == HTTPSTestServer::SMALL_BODY.length()); + assert (response4.getContentType() == "text/plain"); + std::ostringstream ostr4; + StreamCopier::copyStream(rs4, ostr4); + assert (ostr4.str() == HTTPSTestServer::SMALL_BODY); + + assert (pSession1 != pSession4); +} + + +void HTTPSClientSessionTest::setUp() +{ +} + + +void HTTPSClientSessionTest::tearDown() +{ +} + + +CppUnit::Test* HTTPSClientSessionTest::suite() +{ + CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("HTTPSClientSessionTest"); + + CppUnit_addTest(pSuite, HTTPSClientSessionTest, testGetSmall); + CppUnit_addTest(pSuite, HTTPSClientSessionTest, testGetLarge); + CppUnit_addTest(pSuite, HTTPSClientSessionTest, testHead); + CppUnit_addTest(pSuite, HTTPSClientSessionTest, testPostSmallIdentity); + CppUnit_addTest(pSuite, HTTPSClientSessionTest, testPostLargeIdentity); + CppUnit_addTest(pSuite, HTTPSClientSessionTest, testPostSmallChunked); + CppUnit_addTest(pSuite, HTTPSClientSessionTest, testPostLargeChunked); + CppUnit_addTest(pSuite, HTTPSClientSessionTest, testPostLargeChunkedKeepAlive); + CppUnit_addTest(pSuite, HTTPSClientSessionTest, testKeepAlive); + CppUnit_addTest(pSuite, HTTPSClientSessionTest, testInterop); + CppUnit_addTest(pSuite, HTTPSClientSessionTest, testProxy); + //CppUnit_addTest(pSuite, HTTPSClientSessionTest, testCachedSession); + + return pSuite; +} diff --git a/NetSSL_Win/testsuite/src/HTTPSClientSessionTest.h b/NetSSL_Win/testsuite/src/HTTPSClientSessionTest.h new file mode 100644 index 000000000..fee50dcb2 --- /dev/null +++ b/NetSSL_Win/testsuite/src/HTTPSClientSessionTest.h @@ -0,0 +1,51 @@ +// +// HTTPSClientSessionTest.h +// +// $Id: //poco/1.4/NetSSL_Win/testsuite/src/HTTPSClientSessionTest.h#1 $ +// +// Definition of the HTTPSClientSessionTest class. +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef HTTPSClientSessionTest_INCLUDED +#define HTTPSClientSessionTest_INCLUDED + + +#include "Poco/Net/Net.h" +#include "CppUnit/TestCase.h" + + +class HTTPSClientSessionTest: public CppUnit::TestCase +{ +public: + HTTPSClientSessionTest(const std::string& name); + ~HTTPSClientSessionTest(); + + void testGetSmall(); + void testGetLarge(); + void testHead(); + void testPostSmallIdentity(); + void testPostLargeIdentity(); + void testPostSmallChunked(); + void testPostLargeChunked(); + void testPostLargeChunkedKeepAlive(); + void testKeepAlive(); + void testInterop(); + void testProxy(); + void testCachedSession(); + + void setUp(); + void tearDown(); + + static CppUnit::Test* suite(); + +private: +}; + + +#endif // HTTPSClientSessionTest_INCLUDED diff --git a/NetSSL_Win/testsuite/src/HTTPSClientTestSuite.cpp b/NetSSL_Win/testsuite/src/HTTPSClientTestSuite.cpp new file mode 100644 index 000000000..2728b41e8 --- /dev/null +++ b/NetSSL_Win/testsuite/src/HTTPSClientTestSuite.cpp @@ -0,0 +1,26 @@ +// +// HTTPSClientTestSuite.cpp +// +// $Id: //poco/1.4/NetSSL_Win/testsuite/src/HTTPSClientTestSuite.cpp#1 $ +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "HTTPSClientTestSuite.h" +#include "HTTPSClientSessionTest.h" +#include "HTTPSStreamFactoryTest.h" + + +CppUnit::Test* HTTPSClientTestSuite::suite() +{ + CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("HTTPSClientTestSuite"); + + pSuite->addTest(HTTPSClientSessionTest::suite()); + pSuite->addTest(HTTPSStreamFactoryTest::suite()); + + return pSuite; +} diff --git a/NetSSL_Win/testsuite/src/HTTPSClientTestSuite.h b/NetSSL_Win/testsuite/src/HTTPSClientTestSuite.h new file mode 100644 index 000000000..dd83f9032 --- /dev/null +++ b/NetSSL_Win/testsuite/src/HTTPSClientTestSuite.h @@ -0,0 +1,29 @@ +// +// HTTPSClientTestSuite.h +// +// $Id: //poco/1.4/NetSSL_Win/testsuite/src/HTTPSClientTestSuite.h#1 $ +// +// Definition of the HTTPSClientTestSuite class. +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef HTTPSClientTestSuite_INCLUDED +#define HTTPSClientTestSuite_INCLUDED + + +#include "CppUnit/TestSuite.h" + + +class HTTPSClientTestSuite +{ +public: + static CppUnit::Test* suite(); +}; + + +#endif // HTTPSClientTestSuite_INCLUDED diff --git a/NetSSL_Win/testsuite/src/HTTPSServerTest.cpp b/NetSSL_Win/testsuite/src/HTTPSServerTest.cpp new file mode 100644 index 000000000..4df59314a --- /dev/null +++ b/NetSSL_Win/testsuite/src/HTTPSServerTest.cpp @@ -0,0 +1,353 @@ +// +// HTTPSServerTest.cpp +// +// $Id$ +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "HTTPSServerTest.h" +#include "CppUnit/TestCaller.h" +#include "CppUnit/TestSuite.h" +#include "Poco/Net/HTTPServer.h" +#include "Poco/Net/HTTPServerParams.h" +#include "Poco/Net/HTTPRequestHandler.h" +#include "Poco/Net/HTTPRequestHandlerFactory.h" +#include "Poco/Net/HTTPSClientSession.h" +#include "Poco/Net/HTTPRequest.h" +#include "Poco/Net/HTTPServerRequest.h" +#include "Poco/Net/HTTPResponse.h" +#include "Poco/Net/HTTPServerResponse.h" +#include "Poco/Net/SecureServerSocket.h" +#include "Poco/StreamCopier.h" +#include + + +using Poco::Net::Context; +using Poco::Net::HTTPServer; +using Poco::Net::HTTPServerParams; +using Poco::Net::HTTPRequestHandler; +using Poco::Net::HTTPRequestHandlerFactory; +using Poco::Net::HTTPSClientSession; +using Poco::Net::HTTPRequest; +using Poco::Net::HTTPServerRequest; +using Poco::Net::HTTPResponse; +using Poco::Net::HTTPServerResponse; +using Poco::Net::HTTPMessage; +using Poco::Net::SecureServerSocket; +using Poco::StreamCopier; + + +namespace +{ + class EchoBodyRequestHandler: public HTTPRequestHandler + { + public: + void handleRequest(HTTPServerRequest& request, HTTPServerResponse& response) + { + if (request.getChunkedTransferEncoding()) + response.setChunkedTransferEncoding(true); + else if (request.getContentLength() != HTTPMessage::UNKNOWN_CONTENT_LENGTH) + response.setContentLength(request.getContentLength()); + + response.setContentType(request.getContentType()); + + std::istream& istr = request.stream(); + std::ostream& ostr = response.send(); + StreamCopier::copyStream(istr, ostr); + } + }; + + class EchoHeaderRequestHandler: public HTTPRequestHandler + { + public: + void handleRequest(HTTPServerRequest& request, HTTPServerResponse& response) + { + std::ostringstream osstr; + request.write(osstr); + int n = (int) osstr.str().length(); + response.setContentLength(n); + std::ostream& ostr = response.send(); + if (request.getMethod() != HTTPRequest::HTTP_HEAD) + request.write(ostr); + } + }; + + class RedirectRequestHandler: public HTTPRequestHandler + { + public: + void handleRequest(HTTPServerRequest& request, HTTPServerResponse& response) + { + response.redirect("http://www.appinf.com/"); + } + }; + + class AuthRequestHandler: public HTTPRequestHandler + { + public: + void handleRequest(HTTPServerRequest& request, HTTPServerResponse& response) + { + response.requireAuthentication("/auth"); + response.send(); + } + }; + + class RequestHandlerFactory: public HTTPRequestHandlerFactory + { + public: + HTTPRequestHandler* createRequestHandler(const HTTPServerRequest& request) + { + if (request.getURI() == "/echoBody") + return new EchoBodyRequestHandler; + else if (request.getURI() == "/echoHeader") + return new EchoHeaderRequestHandler; + else if (request.getURI() == "/redirect") + return new RedirectRequestHandler(); + else if (request.getURI() == "/auth") + return new AuthRequestHandler(); + else + return 0; + } + }; +} + + +HTTPSServerTest::HTTPSServerTest(const std::string& name): CppUnit::TestCase(name) +{ +} + + +HTTPSServerTest::~HTTPSServerTest() +{ +} + + +void HTTPSServerTest::testIdentityRequest() +{ + SecureServerSocket svs(0); + HTTPServerParams* pParams = new HTTPServerParams; + pParams->setKeepAlive(false); + HTTPServer srv(new RequestHandlerFactory, svs, pParams); + srv.start(); + + HTTPSClientSession cs("localhost", svs.address().port()); + std::string body(5000, 'x'); + HTTPRequest request("POST", "/echoBody"); + request.setContentLength((int) body.length()); + request.setContentType("text/plain"); + cs.sendRequest(request) << body; + HTTPResponse response; + std::string rbody; + cs.receiveResponse(response) >> rbody; + assert (response.getContentLength() == body.size()); + assert (response.getContentType() == "text/plain"); + assert (rbody == body); +} + + +void HTTPSServerTest::testChunkedRequest() +{ + SecureServerSocket svs(0); + HTTPServerParams* pParams = new HTTPServerParams; + pParams->setKeepAlive(false); + HTTPServer srv(new RequestHandlerFactory, svs, pParams); + srv.start(); + + HTTPSClientSession cs("localhost", svs.address().port()); + std::string body(5000, 'x'); + HTTPRequest request("POST", "/echoBody"); + request.setContentType("text/plain"); + request.setChunkedTransferEncoding(true); + cs.sendRequest(request) << body; + HTTPResponse response; + std::string rbody; + cs.receiveResponse(response) >> rbody; + assert (response.getContentLength() == HTTPMessage::UNKNOWN_CONTENT_LENGTH); + assert (response.getContentType() == "text/plain"); + assert (response.getChunkedTransferEncoding()); + assert (rbody == body); +} + + +void HTTPSServerTest::testIdentityRequestKeepAlive() +{ + SecureServerSocket svs(0); + HTTPServerParams* pParams = new HTTPServerParams; + pParams->setKeepAlive(true); + HTTPServer srv(new RequestHandlerFactory, svs, pParams); + srv.start(); + + HTTPSClientSession cs("localhost", svs.address().port()); + cs.setKeepAlive(true); + std::string body(5000, 'x'); + HTTPRequest request("POST", "/echoBody", HTTPMessage::HTTP_1_1); + request.setContentLength((int) body.length()); + request.setContentType("text/plain"); + cs.sendRequest(request) << body; + HTTPResponse response; + std::string rbody; + cs.receiveResponse(response) >> rbody; + assert (response.getContentLength() == body.size()); + assert (response.getContentType() == "text/plain"); + assert (response.getKeepAlive()); + assert (rbody == body); + + body.assign(1000, 'y'); + request.setContentLength((int) body.length()); + request.setKeepAlive(false); + cs.sendRequest(request) << body; + cs.receiveResponse(response) >> rbody; + assert (response.getContentLength() == body.size()); + assert (response.getContentType() == "text/plain"); + assert (!response.getKeepAlive()); + assert (rbody == body); +} + + +void HTTPSServerTest::testChunkedRequestKeepAlive() +{ + SecureServerSocket svs(0); + HTTPServerParams* pParams = new HTTPServerParams; + pParams->setKeepAlive(true); + HTTPServer srv(new RequestHandlerFactory, svs, pParams); + srv.start(); + + HTTPSClientSession cs("localhost", svs.address().port()); + cs.setKeepAlive(true); + std::string body(5000, 'x'); + HTTPRequest request("POST", "/echoBody", HTTPMessage::HTTP_1_1); + request.setContentType("text/plain"); + request.setChunkedTransferEncoding(true); + cs.sendRequest(request) << body; + HTTPResponse response; + std::string rbody; + cs.receiveResponse(response) >> rbody; + assert (response.getContentLength() == HTTPMessage::UNKNOWN_CONTENT_LENGTH); + assert (response.getContentType() == "text/plain"); + assert (response.getChunkedTransferEncoding()); + assert (rbody == body); + + body.assign(1000, 'y'); + request.setKeepAlive(false); + cs.sendRequest(request) << body; + cs.receiveResponse(response) >> rbody; + assert (response.getContentLength() == HTTPMessage::UNKNOWN_CONTENT_LENGTH); + assert (response.getContentType() == "text/plain"); + assert (response.getChunkedTransferEncoding()); + assert (!response.getKeepAlive()); + assert (rbody == body); +} + + +void HTTPSServerTest::test100Continue() +{ + SecureServerSocket svs(0); + HTTPServerParams* pParams = new HTTPServerParams; + pParams->setKeepAlive(false); + HTTPServer srv(new RequestHandlerFactory, svs, pParams); + srv.start(); + + HTTPSClientSession cs("localhost", svs.address().port()); + std::string body(5000, 'x'); + HTTPRequest request("POST", "/echoBody"); + request.setContentLength((int) body.length()); + request.setContentType("text/plain"); + request.set("Expect", "100-Continue"); + cs.sendRequest(request) << body; + HTTPResponse response; + std::string rbody; + cs.receiveResponse(response) >> rbody; + assert (response.getContentLength() == body.size()); + assert (response.getContentType() == "text/plain"); + assert (rbody == body); +} + + +void HTTPSServerTest::testRedirect() +{ + SecureServerSocket svs(0); + HTTPServerParams* pParams = new HTTPServerParams; + pParams->setKeepAlive(false); + HTTPServer srv(new RequestHandlerFactory, svs, pParams); + srv.start(); + + HTTPSClientSession cs("localhost", svs.address().port()); + HTTPRequest request("GET", "/redirect"); + cs.sendRequest(request); + HTTPResponse response; + std::string rbody; + cs.receiveResponse(response) >> rbody; + assert (response.getStatus() == HTTPResponse::HTTP_FOUND); + assert (response.get("Location") == "http://www.appinf.com/"); + assert (rbody.empty()); +} + + +void HTTPSServerTest::testAuth() +{ + SecureServerSocket svs(0); + HTTPServerParams* pParams = new HTTPServerParams; + pParams->setKeepAlive(false); + HTTPServer srv(new RequestHandlerFactory, svs, pParams); + srv.start(); + + HTTPSClientSession cs("localhost", svs.address().port()); + HTTPRequest request("GET", "/auth"); + cs.sendRequest(request); + HTTPResponse response; + std::string rbody; + cs.receiveResponse(response) >> rbody; + assert (response.getStatus() == HTTPResponse::HTTP_UNAUTHORIZED); + assert (response.get("WWW-Authenticate") == "Basic realm=\"/auth\""); + assert (rbody.empty()); +} + + +void HTTPSServerTest::testNotImpl() +{ + SecureServerSocket svs(0); + HTTPServerParams* pParams = new HTTPServerParams; + pParams->setKeepAlive(false); + HTTPServer srv(new RequestHandlerFactory, svs, pParams); + srv.start(); + + HTTPSClientSession cs("localhost", svs.address().port()); + HTTPRequest request("GET", "/notImpl"); + cs.sendRequest(request); + HTTPResponse response; + std::string rbody; + cs.receiveResponse(response) >> rbody; + assert (response.getStatus() == HTTPResponse::HTTP_NOT_IMPLEMENTED); + assert (rbody.empty()); +} + + +void HTTPSServerTest::setUp() +{ +} + + +void HTTPSServerTest::tearDown() +{ +} + + +CppUnit::Test* HTTPSServerTest::suite() +{ + CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("HTTPSServerTest"); + + CppUnit_addTest(pSuite, HTTPSServerTest, testIdentityRequest); + CppUnit_addTest(pSuite, HTTPSServerTest, testChunkedRequest); + CppUnit_addTest(pSuite, HTTPSServerTest, testIdentityRequestKeepAlive); + CppUnit_addTest(pSuite, HTTPSServerTest, testChunkedRequestKeepAlive); + CppUnit_addTest(pSuite, HTTPSServerTest, test100Continue); + CppUnit_addTest(pSuite, HTTPSServerTest, testRedirect); + CppUnit_addTest(pSuite, HTTPSServerTest, testAuth); + CppUnit_addTest(pSuite, HTTPSServerTest, testNotImpl); + + return pSuite; +} diff --git a/NetSSL_Win/testsuite/src/HTTPSServerTest.h b/NetSSL_Win/testsuite/src/HTTPSServerTest.h new file mode 100644 index 000000000..dd3062e81 --- /dev/null +++ b/NetSSL_Win/testsuite/src/HTTPSServerTest.h @@ -0,0 +1,47 @@ +// +// HTTPSServerTest.h +// +// $Id$ +// +// Definition of the HTTPSServerTest class. +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef HTTPSServerTest_INCLUDED +#define HTTPSServerTest_INCLUDED + + +#include "Poco/Net/Net.h" +#include "CppUnit/TestCase.h" + + +class HTTPSServerTest: public CppUnit::TestCase +{ +public: + HTTPSServerTest(const std::string& name); + ~HTTPSServerTest(); + + void testIdentityRequest(); + void testChunkedRequest(); + void testIdentityRequestKeepAlive(); + void testChunkedRequestKeepAlive(); + void test100Continue(); + void testRedirect(); + void testAuth(); + void testNotImpl(); + + void setUp(); + void tearDown(); + + static CppUnit::Test* suite(); + +private: +}; + + +#endif // HTTPSServerTest_INCLUDED diff --git a/NetSSL_Win/testsuite/src/HTTPSServerTestSuite.cpp b/NetSSL_Win/testsuite/src/HTTPSServerTestSuite.cpp new file mode 100644 index 000000000..be84e9838 --- /dev/null +++ b/NetSSL_Win/testsuite/src/HTTPSServerTestSuite.cpp @@ -0,0 +1,24 @@ +// +// HTTPSServerTestSuite.cpp +// +// $Id: //poco/1.4/NetSSL_Win/testsuite/src/HTTPSServerTestSuite.cpp#1 $ +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "HTTPSServerTestSuite.h" +#include "HTTPSServerTest.h" + + +CppUnit::Test* HTTPSServerTestSuite::suite() +{ + CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("HTTPSServerTestSuite"); + + pSuite->addTest(HTTPSServerTest::suite()); + + return pSuite; +} diff --git a/NetSSL_Win/testsuite/src/HTTPSServerTestSuite.h b/NetSSL_Win/testsuite/src/HTTPSServerTestSuite.h new file mode 100644 index 000000000..e16548843 --- /dev/null +++ b/NetSSL_Win/testsuite/src/HTTPSServerTestSuite.h @@ -0,0 +1,29 @@ +// +// HTTPSServerTestSuite.h +// +// $Id: //poco/1.4/NetSSL_Win/testsuite/src/HTTPSServerTestSuite.h#1 $ +// +// Definition of the HTTPSServerTestSuite class. +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef HTTPSServerTestSuite_INCLUDED +#define HTTPSServerTestSuite_INCLUDED + + +#include "CppUnit/TestSuite.h" + + +class HTTPSServerTestSuite +{ +public: + static CppUnit::Test* suite(); +}; + + +#endif // HTTPSServerTestSuite_INCLUDED diff --git a/NetSSL_Win/testsuite/src/HTTPSStreamFactoryTest.cpp b/NetSSL_Win/testsuite/src/HTTPSStreamFactoryTest.cpp new file mode 100644 index 000000000..6357eacfc --- /dev/null +++ b/NetSSL_Win/testsuite/src/HTTPSStreamFactoryTest.cpp @@ -0,0 +1,139 @@ +// +// HTTPSStreamFactoryTest.cpp +// +// $Id: //poco/1.4/NetSSL_Win/testsuite/src/HTTPSStreamFactoryTest.cpp#1 $ +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "HTTPSStreamFactoryTest.h" +#include "CppUnit/TestCaller.h" +#include "CppUnit/TestSuite.h" +#include "Poco/Net/HTTPSStreamFactory.h" +#include "Poco/Net/NetException.h" +#include "Poco/Util/Application.h" +#include "Poco/Util/AbstractConfiguration.h" +#include "Poco/URI.h" +#include "Poco/Exception.h" +#include "Poco/StreamCopier.h" +#include "HTTPSTestServer.h" +#include +#include + + +using Poco::Net::HTTPSStreamFactory; +using Poco::Net::NetException; +using Poco::Net::HTTPException; +using Poco::Util::Application; +using Poco::URI; +using Poco::StreamCopier; + + +HTTPSStreamFactoryTest::HTTPSStreamFactoryTest(const std::string& name): CppUnit::TestCase(name) +{ +} + + +HTTPSStreamFactoryTest::~HTTPSStreamFactoryTest() +{ +} + + +void HTTPSStreamFactoryTest::testNoRedirect() +{ + HTTPSTestServer server; + HTTPSStreamFactory factory; + URI uri("https://localhost/large"); + uri.setPort(server.port()); + std::auto_ptr pStr(factory.open(uri)); + std::ostringstream ostr; + StreamCopier::copyStream(*pStr.get(), ostr); + assert (ostr.str() == HTTPSTestServer::LARGE_BODY); +} + + +void HTTPSStreamFactoryTest::testEmptyPath() +{ + HTTPSTestServer server; + HTTPSStreamFactory factory; + URI uri("https://localhost"); + uri.setPort(server.port()); + std::auto_ptr pStr(factory.open(uri)); + std::ostringstream ostr; + StreamCopier::copyStream(*pStr.get(), ostr); + assert (ostr.str() == HTTPSTestServer::SMALL_BODY); +} + + +void HTTPSStreamFactoryTest::testRedirect() +{ + HTTPSTestServer server; + HTTPSStreamFactory factory; + URI uri("https://localhost/redirect"); + uri.setPort(server.port()); + std::auto_ptr pStr(factory.open(uri)); + std::ostringstream ostr; + StreamCopier::copyStream(*pStr.get(), ostr); + assert (ostr.str() == HTTPSTestServer::LARGE_BODY); +} + + +void HTTPSStreamFactoryTest::testProxy() +{ + HTTPSTestServer server; + HTTPSStreamFactory factory( + Application::instance().config().getString("testsuite.proxy.host"), + Application::instance().config().getInt("testsuite.proxy.port") + ); + URI uri("https://secure.appinf.com/public/poco/NetSSL.txt"); + std::auto_ptr pStr(factory.open(uri)); + std::ostringstream ostr; + StreamCopier::copyStream(*pStr.get(), ostr); + assert (ostr.str().length() > 0); +} + + +void HTTPSStreamFactoryTest::testError() +{ + HTTPSTestServer server; + HTTPSStreamFactory factory; + URI uri("https://localhost/notfound"); + uri.setPort(server.port()); + try + { + std::istream* pStr = factory.open(uri); + fail("not found - must throw"); + } + catch (HTTPException& exc) + { + std::string m = exc.displayText(); + } +} + + +void HTTPSStreamFactoryTest::setUp() +{ +} + + +void HTTPSStreamFactoryTest::tearDown() +{ +} + + +CppUnit::Test* HTTPSStreamFactoryTest::suite() +{ + CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("HTTPSStreamFactoryTest"); + + CppUnit_addTest(pSuite, HTTPSStreamFactoryTest, testNoRedirect); + CppUnit_addTest(pSuite, HTTPSStreamFactoryTest, testEmptyPath); + CppUnit_addTest(pSuite, HTTPSStreamFactoryTest, testRedirect); + CppUnit_addTest(pSuite, HTTPSStreamFactoryTest, testProxy); + CppUnit_addTest(pSuite, HTTPSStreamFactoryTest, testError); + + return pSuite; +} diff --git a/NetSSL_Win/testsuite/src/HTTPSStreamFactoryTest.h b/NetSSL_Win/testsuite/src/HTTPSStreamFactoryTest.h new file mode 100644 index 000000000..df195c44a --- /dev/null +++ b/NetSSL_Win/testsuite/src/HTTPSStreamFactoryTest.h @@ -0,0 +1,44 @@ +// +// HTTPSStreamFactoryTest.h +// +// $Id: //poco/1.4/NetSSL_Win/testsuite/src/HTTPSStreamFactoryTest.h#1 $ +// +// Definition of the HTTPSStreamFactoryTest class. +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef HTTPSStreamFactoryTest_INCLUDED +#define HTTPSStreamFactoryTest_INCLUDED + + +#include "Poco/Net/Net.h" +#include "CppUnit/TestCase.h" + + +class HTTPSStreamFactoryTest: public CppUnit::TestCase +{ +public: + HTTPSStreamFactoryTest(const std::string& name); + ~HTTPSStreamFactoryTest(); + + void testNoRedirect(); + void testEmptyPath(); + void testRedirect(); + void testProxy(); + void testError(); + + void setUp(); + void tearDown(); + + static CppUnit::Test* suite(); + +private: +}; + + +#endif // HTTPSStreamFactoryTest_INCLUDED diff --git a/NetSSL_Win/testsuite/src/HTTPSTestServer.cpp b/NetSSL_Win/testsuite/src/HTTPSTestServer.cpp new file mode 100644 index 000000000..0f32e78f4 --- /dev/null +++ b/NetSSL_Win/testsuite/src/HTTPSTestServer.cpp @@ -0,0 +1,232 @@ +// +// HTTPSTestServer.cpp +// +// $Id: //poco/1.4/NetSSL_Win/testsuite/src/HTTPSTestServer.cpp#1 $ +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "HTTPSTestServer.h" +#include "Poco/Net/SecureStreamSocket.h" +#include "Poco/Net/SocketAddress.h" +#include "Poco/Timespan.h" +#include "Poco/NumberFormatter.h" +#include + + +using Poco::Net::Socket; +using Poco::Net::StreamSocket; +using Poco::Net::SecureStreamSocket; +using Poco::Net::SecureServerSocket; +using Poco::Net::SocketAddress; +using Poco::NumberFormatter; + + +const std::string HTTPSTestServer::SMALL_BODY("This is some random text data returned by the server"); +const std::string HTTPSTestServer::LARGE_BODY(4000, 'x'); + + +HTTPSTestServer::HTTPSTestServer(): + _socket(SocketAddress()), + _thread("HTTPSTestServer"), + _stop(false) +{ + _thread.start(*this); + _ready.wait(); + _lastRequest.reserve(4000); +} + + +HTTPSTestServer::HTTPSTestServer(Poco::Net::Context::Ptr pContext): + _socket(SocketAddress(), 64, pContext), + _thread("HTTPSTestServer"), + _stop(false) +{ + _thread.start(*this); + _ready.wait(); + _lastRequest.reserve(4000); +} + + +HTTPSTestServer::~HTTPSTestServer() +{ + _stop = true; + _thread.join(); +} + + +Poco::UInt16 HTTPSTestServer::port() const +{ + return _socket.address().port(); +} + + +const std::string& HTTPSTestServer::lastRequest() const +{ + return _lastRequest; +} + + +void HTTPSTestServer::run() +{ + _ready.set(); + Poco::Timespan span(250000); + while (!_stop) + { + if (_socket.poll(span, Socket::SELECT_READ)) + { + StreamSocket ss = _socket.acceptConnection(); + try + { + _lastRequest.clear(); + char buffer[256]; + int n = ss.receiveBytes(buffer, sizeof(buffer)); + while (n > 0 && !_stop) + { + _lastRequest.append(buffer, n); + if (!requestComplete()) + n = ss.receiveBytes(buffer, sizeof(buffer)); + else + n = 0; + } + std::string response = handleRequest(); + ss.sendBytes(response.data(), (int) response.size()); + Poco::Thread::sleep(1000); + } + catch (Poco::Exception& exc) + { + std::cerr << "HTTPSTestServer: " << exc.displayText() << std::endl; + } + } + } +} + + +bool HTTPSTestServer::requestComplete() const +{ + return ((_lastRequest.substr(0, 3) == "GET" || _lastRequest.substr(0, 4) == "HEAD") && + (_lastRequest.find("\r\n\r\n") != std::string::npos)) || + (_lastRequest.find("\r\n0\r\n") != std::string::npos); +} + + +std::string HTTPSTestServer::handleRequest() const +{ + std::string response; + response.reserve(16000); + if (_lastRequest.substr(0, 10) == "GET /small" || + _lastRequest.substr(0, 11) == "HEAD /small") + { + std::string body(SMALL_BODY); + response.append("HTTP/1.0 200 OK\r\n"); + response.append("Content-Type: text/plain\r\n"); + response.append("Content-Length: "); + response.append(NumberFormatter::format((int) body.size())); + response.append("\r\n"); + response.append("Connection: Close\r\n"); + response.append("\r\n"); + if (_lastRequest.substr(0, 3) == "GET") + response.append(body); + } + else if (_lastRequest.substr(0, 10) == "GET /large" || + _lastRequest.substr(0, 11) == "HEAD /large" || + _lastRequest.substr(0, 36) == "GET http://www.somehost.com:80/large") + { + std::string body(LARGE_BODY); + response.append("HTTP/1.0 200 OK\r\n"); + response.append("Content-Type: text/plain\r\n"); + response.append("Content-Length: "); + response.append(NumberFormatter::format((int) body.size())); + response.append("\r\n"); + response.append("Connection: Close\r\n"); + response.append("\r\n"); + if (_lastRequest.substr(0, 3) == "GET") + response.append(body); + } + else if (_lastRequest.substr(0, 4) == "POST") + { + std::string::size_type pos = _lastRequest.find("\r\n\r\n"); + pos += 4; + std::string body = _lastRequest.substr(pos); + response.append("HTTP/1.0 200 OK\r\n"); + response.append("Content-Type: text/plain\r\n"); + if (_lastRequest.find("Content-Length") != std::string::npos) + { + response.append("Content-Length: "); + response.append(NumberFormatter::format((int) body.size())); + response.append("\r\n"); + } + else if (_lastRequest.find("chunked") != std::string::npos) + { + response.append("Transfer-Encoding: chunked\r\n"); + } + if (_lastRequest.substr(0,15) == "POST /keepAlive") + response.append("Connection: keep-alive\r\n"); + else + response.append("Connection: Close\r\n"); + response.append("\r\n"); + response.append(body); + } + else if (_lastRequest.substr(0, 15) == "HEAD /keepAlive") + { + std::string body(SMALL_BODY); + response.append("HTTP/1.1 200 OK\r\n"); + response.append("Connection: keep-alive\r\n"); + response.append("Content-Type: text/plain\r\n"); + response.append("Content-Length: "); + response.append(NumberFormatter::format((int) body.size())); + response.append("\r\n\r\n"); + response.append("HTTP/1.1 200 OK\r\n"); + response.append("Connection: Keep-Alive\r\n"); + response.append("Content-Type: text/plain\r\n"); + response.append("Content-Length: "); + response.append(NumberFormatter::format((int) body.size())); + response.append("\r\n\r\n"); + response.append(body); + body = LARGE_BODY; + response.append("HTTP/1.1 200 OK\r\n"); + response.append("Connection: keep-alive\r\n"); + response.append("Content-Type: text/plain\r\n"); + response.append("Transfer-Encoding: chunked\r\n\r\n"); + response.append(NumberFormatter::formatHex((unsigned) body.length())); + response.append("\r\n"); + response.append(body); + response.append("\r\n0\r\n\r\n"); + response.append("HTTP/1.1 200 OK\r\n"); + response.append("Connection: close\r\n"); + response.append("Content-Type: text/plain\r\n"); + response.append("Content-Length: "); + response.append(NumberFormatter::format((int) body.size())); + response.append("\r\n\r\n"); + } + else if (_lastRequest.substr(0, 13) == "GET /redirect") + { + response.append("HTTP/1.0 302 Found\r\n"); + response.append("Location: /large\r\n"); + response.append("\r\n"); + } + else if (_lastRequest.substr(0, 13) == "GET /notfound") + { + response.append("HTTP/1.0 404 Not Found\r\n"); + response.append("\r\n"); + } + else if (_lastRequest.substr(0, 5) == "GET /" || + _lastRequest.substr(0, 6) == "HEAD /") + { + std::string body(SMALL_BODY); + response.append("HTTP/1.0 200 OK\r\n"); + response.append("Content-Type: text/plain\r\n"); + response.append("Content-Length: "); + response.append(NumberFormatter::format((int) body.size())); + response.append("\r\n"); + response.append("Connection: Close\r\n"); + response.append("\r\n"); + if (_lastRequest.substr(0, 3) == "GET") + response.append(body); + } + return response; +} diff --git a/NetSSL_Win/testsuite/src/HTTPSTestServer.h b/NetSSL_Win/testsuite/src/HTTPSTestServer.h new file mode 100644 index 000000000..b0961e3d1 --- /dev/null +++ b/NetSSL_Win/testsuite/src/HTTPSTestServer.h @@ -0,0 +1,64 @@ +// +// HTTPSTestServer.h +// +// $Id: //poco/1.4/NetSSL_Win/testsuite/src/HTTPSTestServer.h#1 $ +// +// Definition of the HTTPSTestServer class. +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef HTTPSTestServer_INCLUDED +#define HTTPSTestServer_INCLUDED + + +#include "Poco/Net/Net.h" +#include "Poco/Net/SecureServerSocket.h" +#include "Poco/Thread.h" +#include "Poco/Event.h" + + +class HTTPSTestServer: public Poco::Runnable + /// A simple sequential echo server. +{ +public: + HTTPSTestServer(); + /// Creates the HTTPSTestServer. + + explicit HTTPSTestServer(Poco::Net::Context::Ptr pContext); + /// Creates the HTTPSTestServer using the given Context. + + ~HTTPSTestServer(); + /// Destroys the HTTPSTestServer. + + Poco::UInt16 port() const; + /// Returns the port the echo server is + /// listening on. + + void run(); + /// Does the work. + + const std::string& lastRequest() const; + /// Returns the last request. + + static const std::string SMALL_BODY; + static const std::string LARGE_BODY; + +protected: + bool requestComplete() const; + std::string handleRequest() const; + +private: + Poco::Net::SecureServerSocket _socket; + Poco::Thread _thread; + Poco::Event _ready; + bool _stop; + std::string _lastRequest; +}; + + +#endif // HTTPSTestServer_INCLUDED diff --git a/NetSSL_Win/testsuite/src/NetSSLTestSuite.cpp b/NetSSL_Win/testsuite/src/NetSSLTestSuite.cpp new file mode 100644 index 000000000..7fddff713 --- /dev/null +++ b/NetSSL_Win/testsuite/src/NetSSLTestSuite.cpp @@ -0,0 +1,29 @@ +// +// NetSSLTestSuite.cpp +// +// $Id: //poco/1.4/NetSSL_Win/testsuite/src/NetSSLTestSuite.cpp#1 $ +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "NetSSLTestSuite.h" + +#include "HTTPSClientTestSuite.h" +#include "TCPServerTestSuite.h" +#include "HTTPSServerTestSuite.h" + + +CppUnit::Test* NetSSLTestSuite::suite() +{ + CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("NetSSLTestSuite"); + + pSuite->addTest(HTTPSClientTestSuite::suite()); + pSuite->addTest(TCPServerTestSuite::suite()); + pSuite->addTest(HTTPSServerTestSuite::suite()); + + return pSuite; +} diff --git a/NetSSL_Win/testsuite/src/NetSSLTestSuite.h b/NetSSL_Win/testsuite/src/NetSSLTestSuite.h new file mode 100644 index 000000000..103b0cf51 --- /dev/null +++ b/NetSSL_Win/testsuite/src/NetSSLTestSuite.h @@ -0,0 +1,29 @@ +// +// NetSSLTestSuite.h +// +// $Id: //poco/1.4/NetSSL_Win/testsuite/src/NetSSLTestSuite.h#1 $ +// +// Definition of the NetSSLTestSuite class. +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef NetSSLTestSuite_INCLUDED +#define NetSSLTestSuite_INCLUDED + + +#include "CppUnit/TestSuite.h" + + +class NetSSLTestSuite +{ +public: + static CppUnit::Test* suite(); +}; + + +#endif // NetSSLTestSuite_INCLUDED diff --git a/NetSSL_Win/testsuite/src/TCPServerTest.cpp b/NetSSL_Win/testsuite/src/TCPServerTest.cpp new file mode 100644 index 000000000..780510a67 --- /dev/null +++ b/NetSSL_Win/testsuite/src/TCPServerTest.cpp @@ -0,0 +1,395 @@ +// +// TCPServerTest.cpp +// +// $Id: //poco/1.4/NetSSL_Win/testsuite/src/TCPServerTest.cpp#2 $ +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "TCPServerTest.h" +#include "CppUnit/TestCaller.h" +#include "CppUnit/TestSuite.h" +#include "Poco/Net/TCPServer.h" +#include "Poco/Net/TCPServerConnection.h" +#include "Poco/Net/TCPServerConnectionFactory.h" +#include "Poco/Net/TCPServerParams.h" +#include "Poco/Net/SecureStreamSocket.h" +#include "Poco/Net/SecureServerSocket.h" +#include "Poco/Net/Context.h" +#include "Poco/Net/Session.h" +#include "Poco/Net/SSLManager.h" +#include "Poco/Util/Application.h" +#include "Poco/Util/AbstractConfiguration.h" +#include "Poco/Thread.h" +#include + + +using Poco::Net::TCPServer; +using Poco::Net::TCPServerConnection; +using Poco::Net::TCPServerConnectionFactory; +using Poco::Net::TCPServerConnectionFactoryImpl; +using Poco::Net::TCPServerParams; +using Poco::Net::StreamSocket; +using Poco::Net::SecureStreamSocket; +using Poco::Net::SecureServerSocket; +using Poco::Net::SocketAddress; +using Poco::Net::Context; +using Poco::Net::Session; +using Poco::Net::SSLManager; +using Poco::Thread; +using Poco::Util::Application; + + +namespace +{ + class EchoConnection: public TCPServerConnection + { + public: + EchoConnection(const StreamSocket& s): TCPServerConnection(s) + { + } + + void run() + { + StreamSocket& ss = socket(); + try + { + char buffer[256]; + int n = ss.receiveBytes(buffer, sizeof(buffer)); + while (n > 0) + { + ss.sendBytes(buffer, n); + n = ss.receiveBytes(buffer, sizeof(buffer)); + } + } + catch (Poco::Exception& exc) + { + std::cerr << "EchoConnection: " << exc.displayText() << std::endl; + } + } + }; +} + + +TCPServerTest::TCPServerTest(const std::string& name): CppUnit::TestCase(name) +{ +} + + +TCPServerTest::~TCPServerTest() +{ +} + + +void TCPServerTest::testOneConnection() +{ + SecureServerSocket svs(0); + TCPServer srv(new TCPServerConnectionFactoryImpl(), svs); + srv.start(); + assert (srv.currentConnections() == 0); + assert (srv.currentThreads() == 0); + assert (srv.queuedConnections() == 0); + assert (srv.totalConnections() == 0); + + SocketAddress sa("localhost", svs.address().port()); + SecureStreamSocket ss1(sa); + std::string data("hello, world"); + ss1.sendBytes(data.data(), (int) data.size()); + char buffer[256]; + int n = ss1.receiveBytes(buffer, sizeof(buffer)); + assert (n > 0); + assert (std::string(buffer, n) == data); + assert (srv.currentConnections() == 1); + assert (srv.currentThreads() == 1); + assert (srv.queuedConnections() == 0); + assert (srv.totalConnections() == 1); + ss1.close(); + Thread::sleep(300); + assert (srv.currentConnections() == 0); +} + + +void TCPServerTest::testTwoConnections() +{ + SecureServerSocket svs(0); + TCPServer srv(new TCPServerConnectionFactoryImpl(), svs); + srv.start(); + assert (srv.currentConnections() == 0); + assert (srv.currentThreads() == 0); + assert (srv.queuedConnections() == 0); + assert (srv.totalConnections() == 0); + + SocketAddress sa("localhost", svs.address().port()); + SecureStreamSocket ss1(sa); + SecureStreamSocket ss2(sa); + std::string data("hello, world"); + ss1.sendBytes(data.data(), (int) data.size()); + ss2.sendBytes(data.data(), (int) data.size()); + + char buffer[256]; + int n = ss1.receiveBytes(buffer, sizeof(buffer)); + assert (n > 0); + assert (std::string(buffer, n) == data); + + n = ss2.receiveBytes(buffer, sizeof(buffer)); + assert (n > 0); + assert (std::string(buffer, n) == data); + + assert (srv.currentConnections() == 2); + assert (srv.currentThreads() == 2); + assert (srv.queuedConnections() == 0); + assert (srv.totalConnections() == 2); + ss1.close(); + Thread::sleep(300); + assert (srv.currentConnections() == 1); + assert (srv.currentThreads() == 1); + assert (srv.queuedConnections() == 0); + assert (srv.totalConnections() == 2); + ss2.close(); + + Thread::sleep(300); + assert (srv.currentConnections() == 0); +} + + +void TCPServerTest::testMultiConnections() +{ + SecureServerSocket svs(0); + TCPServerParams* pParams = new TCPServerParams; + pParams->setMaxThreads(4); + pParams->setMaxQueued(4); + pParams->setThreadIdleTime(100); + TCPServer srv(new TCPServerConnectionFactoryImpl(), svs, pParams); + srv.start(); + assert (srv.currentConnections() == 0); + assert (srv.currentThreads() == 0); + assert (srv.queuedConnections() == 0); + assert (srv.totalConnections() == 0); + + SocketAddress sa("localhost", svs.address().port()); + SecureStreamSocket ss1(sa); + SecureStreamSocket ss2(sa); + SecureStreamSocket ss3(sa); + SecureStreamSocket ss4(sa); + std::string data("hello, world"); + ss1.sendBytes(data.data(), (int) data.size()); + ss2.sendBytes(data.data(), (int) data.size()); + ss3.sendBytes(data.data(), (int) data.size()); + ss4.sendBytes(data.data(), (int) data.size()); + + char buffer[256]; + int n = ss1.receiveBytes(buffer, sizeof(buffer)); + assert (n > 0); + assert (std::string(buffer, n) == data); + + n = ss2.receiveBytes(buffer, sizeof(buffer)); + assert (n > 0); + assert (std::string(buffer, n) == data); + + n = ss3.receiveBytes(buffer, sizeof(buffer)); + assert (n > 0); + assert (std::string(buffer, n) == data); + + n = ss4.receiveBytes(buffer, sizeof(buffer)); + assert (n > 0); + assert (std::string(buffer, n) == data); + + assert (srv.currentConnections() == 4); + assert (srv.currentThreads() == 4); + assert (srv.queuedConnections() == 0); + assert (srv.totalConnections() == 4); + + SecureStreamSocket ss5; + ss5.setLazyHandshake(); + ss5.connect(sa); + Thread::sleep(200); + assert (srv.queuedConnections() == 1); + SecureStreamSocket ss6; + ss6.setLazyHandshake(); + ss6.connect(sa); + Thread::sleep(200); + assert (srv.queuedConnections() == 2); + + ss1.close(); + Thread::sleep(300); + assert (srv.currentConnections() == 4); + assert (srv.currentThreads() == 4); + assert (srv.queuedConnections() == 1); + assert (srv.totalConnections() == 5); + + ss2.close(); + Thread::sleep(300); + assert (srv.currentConnections() == 4); + assert (srv.currentThreads() == 4); + assert (srv.queuedConnections() == 0); + assert (srv.totalConnections() == 6); + + ss3.close(); + Thread::sleep(300); + assert (srv.currentConnections() == 3); + assert (srv.currentThreads() == 3); + assert (srv.queuedConnections() == 0); + assert (srv.totalConnections() == 6); + + ss4.close(); + Thread::sleep(300); + assert (srv.currentConnections() == 2); + assert (srv.currentThreads() == 2); + assert (srv.queuedConnections() == 0); + assert (srv.totalConnections() == 6); + + ss5.close(); + ss6.close(); + Thread::sleep(300); + assert (srv.currentConnections() == 0); +} + + +void TCPServerTest::testReuseSocket() +{ + SecureServerSocket svs(0); + TCPServer srv(new TCPServerConnectionFactoryImpl(), svs); + srv.start(); + assert (srv.currentConnections() == 0); + assert (srv.currentThreads() == 0); + assert (srv.queuedConnections() == 0); + assert (srv.totalConnections() == 0); + + SocketAddress sa("localhost", svs.address().port()); + SecureStreamSocket ss1(sa); + std::string data("hello, world"); + ss1.sendBytes(data.data(), (int) data.size()); + char buffer[256]; + int n = ss1.receiveBytes(buffer, sizeof(buffer)); + assert (n > 0); + assert (std::string(buffer, n) == data); + assert (srv.currentConnections() == 1); + assert (srv.currentThreads() == 1); + assert (srv.queuedConnections() == 0); + assert (srv.totalConnections() == 1); + ss1.close(); + Thread::sleep(300); + assert (srv.currentConnections() == 0); + + ss1.connect(sa); + ss1.sendBytes(data.data(), (int) data.size()); + n = ss1.receiveBytes(buffer, sizeof(buffer)); + assert (n > 0); + assert (std::string(buffer, n) == data); + assert (srv.currentConnections() == 1); + assert (srv.queuedConnections() == 0); + assert (srv.totalConnections() == 2); + ss1.close(); + Thread::sleep(300); + assert (srv.currentConnections() == 0); +} + + +void TCPServerTest::testReuseSession() +{ + // ensure SSL machinery is fully setup + Context::Ptr pDefaultServerContext = SSLManager::instance().defaultServerContext(); + Context::Ptr pDefaultClientContext = SSLManager::instance().defaultClientContext(); + + Context::Ptr pServerContext = new Context( + Context::SERVER_USE, + "test.appinf.com"); + //pServerContext->enableSessionCache(true, "TestSuite"); + //pServerContext->setSessionTimeout(10); + //pServerContext->setSessionCacheSize(1000); + //pServerContext->disableStatelessSessionResumption(); + + SecureServerSocket svs(0, 64, pServerContext); + TCPServer srv(new TCPServerConnectionFactoryImpl(), svs); + srv.start(); + assert (srv.currentConnections() == 0); + assert (srv.currentThreads() == 0); + assert (srv.queuedConnections() == 0); + assert (srv.totalConnections() == 0); + + Context::Ptr pClientContext = new Context( + Context::CLIENT_USE, + ""); + //pClientContext->enableSessionCache(true); + + SocketAddress sa("localhost", svs.address().port()); + SecureStreamSocket ss1(sa, pClientContext); + assert (!ss1.sessionWasReused()); + std::string data("hello, world"); + ss1.sendBytes(data.data(), (int) data.size()); + char buffer[256]; + int n = ss1.receiveBytes(buffer, sizeof(buffer)); + assert (n > 0); + assert (std::string(buffer, n) == data); + assert (srv.currentConnections() == 1); + assert (srv.currentThreads() == 1); + assert (srv.queuedConnections() == 0); + assert (srv.totalConnections() == 1); + + Session::Ptr pSession = ss1.currentSession(); + + ss1.close(); + Thread::sleep(300); + assert (srv.currentConnections() == 0); + + ss1.useSession(pSession); + ss1.connect(sa); + assert (ss1.sessionWasReused()); + assert (ss1.currentSession() == pSession); + ss1.sendBytes(data.data(), (int) data.size()); + n = ss1.receiveBytes(buffer, sizeof(buffer)); + assert (n > 0); + assert (std::string(buffer, n) == data); + assert (srv.currentConnections() == 1); + assert (srv.queuedConnections() == 0); + assert (srv.totalConnections() == 2); + ss1.close(); + Thread::sleep(300); + assert (srv.currentConnections() == 0); + + Thread::sleep(15000); // wait for session to expire + //pServerContext->flushSessionCache(); + + ss1.useSession(pSession); + ss1.connect(sa); + assert (!ss1.sessionWasReused()); + assert (ss1.currentSession() != pSession); + ss1.sendBytes(data.data(), (int) data.size()); + n = ss1.receiveBytes(buffer, sizeof(buffer)); + assert (n > 0); + assert (std::string(buffer, n) == data); + assert (srv.currentConnections() == 1); + assert (srv.queuedConnections() == 0); + assert (srv.totalConnections() == 3); + ss1.close(); + Thread::sleep(300); + assert (srv.currentConnections() == 0); +} + + +void TCPServerTest::setUp() +{ +} + + +void TCPServerTest::tearDown() +{ +} + + +CppUnit::Test* TCPServerTest::suite() +{ + CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("TCPServerTest"); + + CppUnit_addTest(pSuite, TCPServerTest, testOneConnection); + CppUnit_addTest(pSuite, TCPServerTest, testTwoConnections); + CppUnit_addTest(pSuite, TCPServerTest, testMultiConnections); + CppUnit_addTest(pSuite, TCPServerTest, testReuseSocket); + //CppUnit_addTest(pSuite, TCPServerTest, testReuseSession); + + return pSuite; +} diff --git a/NetSSL_Win/testsuite/src/TCPServerTest.h b/NetSSL_Win/testsuite/src/TCPServerTest.h new file mode 100644 index 000000000..a71fe40a2 --- /dev/null +++ b/NetSSL_Win/testsuite/src/TCPServerTest.h @@ -0,0 +1,44 @@ +// +// TCPServerTest.h +// +// $Id: //poco/1.4/NetSSL_Win/testsuite/src/TCPServerTest.h#1 $ +// +// Definition of the TCPServerTest class. +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef TCPServerTest_INCLUDED +#define TCPServerTest_INCLUDED + + +#include "Poco/Net/Net.h" +#include "CppUnit/TestCase.h" + + +class TCPServerTest: public CppUnit::TestCase +{ +public: + TCPServerTest(const std::string& name); + ~TCPServerTest(); + + void testOneConnection(); + void testTwoConnections(); + void testMultiConnections(); + void testReuseSocket(); + void testReuseSession(); + + void setUp(); + void tearDown(); + + static CppUnit::Test* suite(); + +private: +}; + + +#endif // TCPServerTest_INCLUDED diff --git a/NetSSL_Win/testsuite/src/TCPServerTestSuite.cpp b/NetSSL_Win/testsuite/src/TCPServerTestSuite.cpp new file mode 100644 index 000000000..4c622980d --- /dev/null +++ b/NetSSL_Win/testsuite/src/TCPServerTestSuite.cpp @@ -0,0 +1,24 @@ +// +// TCPServerTestSuite.cpp +// +// $Id: //poco/1.4/NetSSL_Win/testsuite/src/TCPServerTestSuite.cpp#1 $ +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "TCPServerTestSuite.h" +#include "TCPServerTest.h" + + +CppUnit::Test* TCPServerTestSuite::suite() +{ + CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("TCPServerTestSuite"); + + pSuite->addTest(TCPServerTest::suite()); + + return pSuite; +} diff --git a/NetSSL_Win/testsuite/src/TCPServerTestSuite.h b/NetSSL_Win/testsuite/src/TCPServerTestSuite.h new file mode 100644 index 000000000..e803a85d5 --- /dev/null +++ b/NetSSL_Win/testsuite/src/TCPServerTestSuite.h @@ -0,0 +1,29 @@ +// +// TCPServerTestSuite.h +// +// $Id: //poco/1.4/NetSSL_Win/testsuite/src/TCPServerTestSuite.h#1 $ +// +// Definition of the TCPServerTestSuite class. +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef TCPServerTestSuite_INCLUDED +#define TCPServerTestSuite_INCLUDED + + +#include "CppUnit/TestSuite.h" + + +class TCPServerTestSuite +{ +public: + static CppUnit::Test* suite(); +}; + + +#endif // TCPServerTestSuite_INCLUDED diff --git a/NetSSL_Win/testsuite/src/WinCEDriver.cpp b/NetSSL_Win/testsuite/src/WinCEDriver.cpp new file mode 100644 index 000000000..3365f9bc1 --- /dev/null +++ b/NetSSL_Win/testsuite/src/WinCEDriver.cpp @@ -0,0 +1,91 @@ +// +// WinCEDriver.cpp +// +// $Id: //poco/1.4/NetSSL_OpenSSL/testsuite/src/WinCEDriver.cpp#1 $ +// +// Console-based test driver for Windows CE. +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "CppUnit/TestRunner.h" +#include "NetSSLTestSuite.h" +#include "Poco/Util/Application.h" +#include "Poco/Net/HTTPStreamFactory.h" +#include "Poco/Net/HTTPSStreamFactory.h" +#include +#include + + +class NetSSLApp: public Poco::Util::Application +{ +public: + NetSSLApp() + { + Poco::Net::initializeSSL(); + Poco::Net::HTTPStreamFactory::registerFactory(); + Poco::Net::HTTPSStreamFactory::registerFactory(); + } + + ~NetSSLApp() + { + Poco::Net::uninitializeSSL(); + } + + int main(const std::vector& args) + { + CppUnit::TestRunner runner; + runner.addTest("NetSSLTestSuite", NetSSLTestSuite::suite()); + return runner.run(_targs) ? 0 : 1; + } + + void setup(const std::vector& args) + { + char* argv[] = + { + const_cast(args[0].c_str()) + }; + + init(1, argv); + for (std::size_t i = 0; i < args.size(); ++i) + _targs.push_back(args[i]); + } + +protected: + void initialize(Poco::Util::Application& self) + { + loadConfiguration(); // load default configuration files, if present + Poco::Util::Application::initialize(self); + } + +private: + std::vector _targs; +}; + + +int _tmain(int argc, wchar_t* argv[]) +{ + std::vector args; + for (int i = 0; i < argc; ++i) + { + char buffer[1024]; + std::wcstombs(buffer, argv[i], sizeof(buffer)); + args.push_back(std::string(buffer)); + } + + NetSSLApp app; + try + { + app.setup(args); + return app.run(); + } + catch (Poco::Exception& exc) + { + std::cout << exc.displayText() << std::endl; + return 1; + } +} diff --git a/NetSSL_Win/testsuite/src/WinDriver.cpp b/NetSSL_Win/testsuite/src/WinDriver.cpp new file mode 100644 index 000000000..7873ea0b1 --- /dev/null +++ b/NetSSL_Win/testsuite/src/WinDriver.cpp @@ -0,0 +1,77 @@ +// +// WinDriver.cpp +// +// $Id: //poco/1.4/NetSSL_OpenSSL/testsuite/src/WinDriver.cpp#1 $ +// +// Windows test driver for Poco NetSSL. +// +// Copyright (c) 2006-2014, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "WinTestRunner/WinTestRunner.h" +#include "NetSSLTestSuite.h" +#include "Poco/Util/Application.h" +#include "Poco/Net/HTTPStreamFactory.h" +#include "Poco/Net/HTTPSStreamFactory.h" + + +class NetSSLApp: public Poco::Util::Application +{ +public: + NetSSLApp() + { + Poco::Net::initializeSSL(); + Poco::Net::HTTPStreamFactory::registerFactory(); + Poco::Net::HTTPSStreamFactory::registerFactory(); + } + + ~NetSSLApp() + { + Poco::Net::uninitializeSSL(); + } + + int main(const std::vector& args) + { + CppUnit::WinTestRunner runner; + runner.addTest(NetSSLTestSuite::suite()); + runner.run(); + return 0; + } + +protected: + void initialize(Poco::Util::Application& self) + { + loadConfiguration(); // load default configuration files, if present + Poco::Util::Application::initialize(self); + } + +private: + std::vector _targs; +}; + + +class TestDriver: public CppUnit::WinTestRunnerApp +{ + void TestMain() + { + NetSSLApp app; + std::string argv("TestSuite"); + const char* pArgv = argv.c_str(); + try + { + app.init(1, (char**)&pArgv); + app.run(); + } + catch (Poco::Exception& exc) + { + app.logger().log(exc); + } + } +}; + + +static TestDriver theDriver; diff --git a/NetSSL_Win/testsuite/testrunner.xml b/NetSSL_Win/testsuite/testrunner.xml new file mode 100644 index 000000000..8f78c9490 --- /dev/null +++ b/NetSSL_Win/testsuite/testrunner.xml @@ -0,0 +1,41 @@ + + + + any.pfx + none + false + + KeyFileHandler + + secret + + + + AcceptCertificateHandler + + + + + + relaxed + false + + KeyFileHandler + + secret + + + + AcceptCertificateHandler + + + + + + + + proxy.aon.at + 8080 + + + diff --git a/PDF/PDF_vs100.vcxproj b/PDF/PDF_vs100.vcxproj index daed9fb17..45bcee107 100644 --- a/PDF/PDF_vs100.vcxproj +++ b/PDF/PDF_vs100.vcxproj @@ -81,19 +81,19 @@ <_ProjectFileVersion>10.0.40219.1 ..\bin\ - obj\$(Configuration)\ + obj\PDF\$(Configuration)\ true ..\bin\ - obj\$(Configuration)\ + obj\PDF\$(Configuration)\ false ..\lib\ - obj\$(Configuration)\ + obj\PDF\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\PDF\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\PDF\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\PDF\$(Configuration)\ PocoPDFd PocoPDFmdd PocoPDFmtd @@ -119,6 +119,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) @@ -130,6 +131,7 @@ Console ..\lib\PocoPDFd.lib MachineX86 + %(AdditionalOptions)
    @@ -152,6 +154,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) @@ -164,6 +167,7 @@ true ..\lib\PocoPDF.lib MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib\PocoPDFmtd.lib @@ -210,6 +215,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib\PocoPDFmt.lib @@ -234,6 +240,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib\PocoPDFmdd.lib @@ -260,6 +267,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) diff --git a/PDF/PDF_vs100.vcxproj.filters b/PDF/PDF_vs100.vcxproj.filters index b96332908..2c7334fe8 100644 --- a/PDF/PDF_vs100.vcxproj.filters +++ b/PDF/PDF_vs100.vcxproj.filters @@ -2,40 +2,40 @@ - {c3eede4a-eb63-4d73-a422-8d9ee20ff6bb} + {e59da0d1-8c9f-4d26-83da-87f6273d9f9f} - {9f0c5282-c866-49dd-82df-3776dc3fcab4} + {2de868c4-ca8e-4568-8e63-64ac6dac33cc} - {0084cdb6-239e-47cb-aad3-1d6f8e9adbe0} + {1641afed-beb0-4890-ba06-f00d2ebf412a} - {54efbe88-8267-4d23-8701-195348d003c4} + {400d5449-9644-4ac8-b25a-0e4bab0efe3f} - {79e77e4a-bea6-4e2d-9721-6d9114947ba5} + {b9a85447-fe35-491c-bda0-c3c20c33ad52} - {ae1e04e2-8d5f-4645-9a3e-ecac51429991} + {39ce2f7a-8a0b-47b8-8322-9c36089ff5ec} - {f40110f9-e4aa-405d-b6e7-2f11acec2d05} + {3f3ff976-1a7d-4185-a0d8-b6f665208cc8} - {4d3379fd-d769-45e0-b4cf-fe2cd06f94b2} + {d1643507-3d19-412f-86b2-c88b307f0077} - {0cc35841-b9c6-43fa-bf2b-b5cb27e6e464} + {496239a1-8221-4f47-b237-33bec2832e27} - {7c250f7b-ede0-48ba-9f6b-d7c731fea217} + {8d03917f-d1ea-4fac-8b54-98ec2ffa21d6} - {149d85f9-5a39-4856-9294-1a7bfdadec6f} + {299b585c-6939-4ab6-9b6e-e2953623a65d} - {332b8a6a-8873-4775-8149-3883886dfacc} + {337c2245-2bc2-4f49-9e86-0e4d8e15e9ed} diff --git a/PDF/PDF_vs110.vcxproj b/PDF/PDF_vs110.vcxproj index 3fe8b7c61..707861ea0 100644 --- a/PDF/PDF_vs110.vcxproj +++ b/PDF/PDF_vs110.vcxproj @@ -95,29 +95,29 @@ ..\bin\ - obj\$(Configuration)\ + obj\PDF\$(Configuration)\ true ..\bin\ - obj\$(Configuration)\ + obj\PDF\$(Configuration)\ false ..\lib\ - obj\$(Configuration)\ + obj\PDF\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\PDF\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\PDF\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\PDF\$(Configuration)\ diff --git a/PDF/PDF_vs110.vcxproj.filters b/PDF/PDF_vs110.vcxproj.filters index 3b1739b98..05e23e4f5 100644 --- a/PDF/PDF_vs110.vcxproj.filters +++ b/PDF/PDF_vs110.vcxproj.filters @@ -2,40 +2,40 @@ - {36bb3a72-d6ed-4d7b-b361-79f6cfd911c5} + {6ca5e093-0cba-4a46-bdd1-ce1fd4588c1d} - {f8aff78e-a385-43f3-876e-7301294c4b2c} + {4d6c344a-fa30-482e-af25-7245855e131c} - {8e8bd928-c3ba-47c4-b492-28038db9a5f6} + {2ba0e263-372b-4bba-b6fa-b99d8a932b76} - {377243bc-0851-4e4a-9b32-840b591ff715} + {e6fa2e70-b3be-4ba4-9e04-ed7ea603448e} - {6fc4c12c-96bc-48c4-88de-9a908a73efe5} + {6d4d6b77-6892-4485-93e0-204cc173b853} - {c237cee3-5e12-4b18-b40b-88c4acd052b7} + {e133a246-88db-4656-970c-140886120fab} - {05e0e050-d8db-4b29-9ab6-82f093045a66} + {7b8ec96d-d304-45c4-b0c3-289da888cf87} - {1f4be6a4-7bfc-46ad-8f2a-3e189e760e3e} + {aa04a5c4-4385-4076-ac7f-6a40374ef036} - {71b3ec26-ebc4-4b59-81b8-cf2e9d1ef5d5} + {e01e8986-4289-4920-a01d-72be360f335d} - {5b9ca146-ecc2-4973-b111-cc1a2bdb3999} + {79ce4d77-5c8c-488b-96c6-f633b6b9afb1} - {28efc7ea-91f5-462a-8139-7ce5c15fcae0} + {84fbaac5-134a-4d9f-be9a-50faedf6cae9} - {619bceff-adc1-4025-8082-de73ac1179f5} + {6ffd00a0-e965-4a88-9405-74c7efecc5c6} diff --git a/PDF/PDF_vs120.vcxproj b/PDF/PDF_vs120.vcxproj index 0c5246d74..53dfb5d94 100644 --- a/PDF/PDF_vs120.vcxproj +++ b/PDF/PDF_vs120.vcxproj @@ -95,29 +95,29 @@ ..\bin\ - obj\$(Configuration)\ + obj\PDF\$(Configuration)\ true ..\bin\ - obj\$(Configuration)\ + obj\PDF\$(Configuration)\ false ..\lib\ - obj\$(Configuration)\ + obj\PDF\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\PDF\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\PDF\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\PDF\$(Configuration)\ diff --git a/PDF/PDF_vs120.vcxproj.filters b/PDF/PDF_vs120.vcxproj.filters index b416ba314..967757274 100644 --- a/PDF/PDF_vs120.vcxproj.filters +++ b/PDF/PDF_vs120.vcxproj.filters @@ -2,40 +2,40 @@ - {23cfae8d-a2f9-4518-bef1-fbfb55394f7f} + {2dae3ec7-e239-4744-ab59-a683fcb49352} - {9626bafd-f7c9-4129-8688-62d74edc65a6} + {19d9649a-ddd4-4c8d-b7de-969435d066a5} - {f509bfc0-c837-46ef-b1f2-723c438443c9} + {c6983666-dbfe-48d3-a5f5-9c2dd6b713d1} - {d18b5b8a-3b3d-4318-86cd-028bf292f98b} + {d7796710-1bdd-49ea-987e-79fe595e89de} - {911fb486-9c53-4e78-9fea-4654ae96582b} + {1ce84b56-672c-41fd-8723-90560aefd3e0} - {ffb50f31-86da-41b3-9792-eaa806903bc3} + {d979250b-b34e-42b8-9236-9f954aaeb89b} - {9e900916-0d44-42da-9a6b-4959f5ce0ede} + {e10734bf-b169-453b-8a6f-c50c71de19c3} - {5a9b2e34-0c59-4b57-92ee-154ad4f9ef0e} + {cc0fb011-c9cf-43df-b563-99be0882de22} - {c2c2939d-1fb7-4d1f-a193-f594e744c234} + {7e55f800-6ffc-4140-a805-6211588fee29} - {d35bcd3e-dd4f-4459-b43a-fdf3cb263c41} + {df798bba-bb57-428d-beb0-c8802220a063} - {37238c40-cd04-42bd-aeb6-1e60c9c9805d} + {b083d96e-5afa-49c4-b131-547341f9fb9c} - {c0c1dba4-c873-4e1d-9236-96cccb0120e0} + {c3eca89d-08c3-4769-bc8f-5b918e4a06f0} diff --git a/PDF/PDF_vs71.vcproj b/PDF/PDF_vs71.vcproj index 171347cdb..42e646f25 100644 --- a/PDF/PDF_vs71.vcproj +++ b/PDF/PDF_vs71.vcproj @@ -37,7 +37,8 @@ Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" CompileAs="0" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> @@ -274,7 +280,8 @@ Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" CompileAs="0" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> diff --git a/PDF/PDF_vs80.vcproj b/PDF/PDF_vs80.vcproj index fe3792551..c7067d2f8 100644 --- a/PDF/PDF_vs80.vcproj +++ b/PDF/PDF_vs80.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="4" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 ..\bin64\ - obj64\$(Configuration)\ + obj64\PDF\$(Configuration)\ true ..\bin64\ - obj64\$(Configuration)\ + obj64\PDF\$(Configuration)\ false ..\lib64\ - obj64\$(Configuration)\ + obj64\PDF\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\PDF\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\PDF\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\PDF\$(Configuration)\ PocoPDF64d PocoPDFmdd PocoPDFmtd @@ -119,6 +119,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) @@ -130,6 +131,7 @@ Console ..\lib64\PocoPDFd.lib MachineX64 + %(AdditionalOptions) @@ -152,6 +154,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) @@ -164,6 +167,7 @@ true ..\lib64\PocoPDF.lib MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib64\PocoPDFmtd.lib @@ -210,6 +215,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib64\PocoPDFmt.lib @@ -234,6 +240,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib64\PocoPDFmdd.lib @@ -259,6 +266,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib64\PocoPDFmd.lib diff --git a/PDF/PDF_x64_vs100.vcxproj.filters b/PDF/PDF_x64_vs100.vcxproj.filters index e514195dc..d229e4f0d 100644 --- a/PDF/PDF_x64_vs100.vcxproj.filters +++ b/PDF/PDF_x64_vs100.vcxproj.filters @@ -2,40 +2,40 @@ - {03e11a87-a006-4386-a19a-8ae05dc8ed2e} + {22a10373-f04c-40d2-95c2-4b0bbd45f265} - {fe8ffbd3-4c41-4083-be4a-7e96113ed012} + {5eeda30f-a04e-4d90-83e3-5d233690a009} - {0215e4d4-4092-4e64-b7d4-2f812b4ef4a5} + {8dd32573-2ea8-4aaa-8c37-c710df48a87e} - {84949814-7cf6-40d5-9f1a-dbe01b1dadca} + {16a0c4aa-3859-40e3-b0e4-d93e161b3d56} - {de25c581-e952-49e1-8cb0-954ce38e8b79} + {7fdd327e-2e21-47bc-af80-a333604ef099} - {d09233fd-c1b7-44dd-8b5a-e630fde28489} + {1a0a86b4-5f98-4c78-a3ae-05a63ce7e189} - {4e71cb72-5664-48e6-9786-99678498b183} + {326194e1-6b20-484a-b1f0-a1d3b2dd02e3} - {58d15f60-1f92-4180-bcc9-399bfe456151} + {f9dd8ade-906c-4f0b-bca6-96aa3762d84b} - {95f13367-79e6-4908-b74c-fe7263928af0} + {a0c3cbf4-26a8-4cc0-ac38-0fb2dedc0071} - {2515d742-349b-44c1-9ed0-4206cf3eea7c} + {555abdd7-4d72-498a-b3b7-5c5c26f8552b} - {0f073157-8ef1-45e6-9cd1-c89d332a02c3} + {0fc04e64-5538-4e15-9205-397d5e0f3a6c} - {e8d8dbf6-f4bf-4576-ae29-6c3ce99f0b1e} + {d1d7448a-8612-491f-93a8-0a5a91ddf3c6} diff --git a/PDF/PDF_x64_vs110.vcxproj b/PDF/PDF_x64_vs110.vcxproj index 73baa9a0c..d297318b6 100644 --- a/PDF/PDF_x64_vs110.vcxproj +++ b/PDF/PDF_x64_vs110.vcxproj @@ -95,29 +95,29 @@ ..\bin64\ - obj64\$(Configuration)\ + obj64\PDF\$(Configuration)\ true ..\bin64\ - obj64\$(Configuration)\ + obj64\PDF\$(Configuration)\ false ..\lib64\ - obj64\$(Configuration)\ + obj64\PDF\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\PDF\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\PDF\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\PDF\$(Configuration)\ diff --git a/PDF/PDF_x64_vs110.vcxproj.filters b/PDF/PDF_x64_vs110.vcxproj.filters index bb80e2eb6..c28dd6907 100644 --- a/PDF/PDF_x64_vs110.vcxproj.filters +++ b/PDF/PDF_x64_vs110.vcxproj.filters @@ -2,40 +2,40 @@ - {677351ca-5a29-4dbe-9925-5db63862ed5a} + {c111681a-5565-47c6-9a99-0154eb0d4ce8} - {439e4660-d12d-4852-b931-ce4bdb369500} + {fc2bc451-d268-4225-be64-0c89ac90a507} - {a2c23f53-b9a1-4878-9cbf-0e6b5efd3710} + {bdc474ef-a2aa-4713-aa0a-c59c0e49ac06} - {5313cabf-1086-4eb8-8f72-620f597bf0c9} + {494107cc-0bc9-40ef-b921-0f1dcbb200e4} - {1bb378b4-e950-4f97-bb24-ad21756e5f93} + {ca83bf33-d1b1-41ab-b30a-a864f254d99d} - {ebc0b2f7-2969-4efa-a22f-bcee4e147876} + {5510cc9e-9421-43f6-8b10-69e09c6cd26f} - {b2b3a87f-06df-4419-bacd-cd53669351df} + {b0e29b77-cf9c-41e9-abaa-0ae289e29e2c} - {713529b5-cb08-400a-83d8-2a33e8425546} + {f149dc68-91d2-41a7-8fb6-8acff6fe5a1f} - {7a9f68f4-0ff8-4adc-b364-c7a1ca48561c} + {1550dc81-7015-48ba-85cc-0bd97b223ae2} - {4e070201-b404-49fe-9fcf-b64f68c823f0} + {bba58081-8067-4d83-94fb-bde731d93d9c} - {0b0b5f1c-9e31-47dd-945b-410252cf155a} + {d9817cff-faf3-4588-b869-a5e5c877ed4f} - {08f4e720-44a2-4e70-818b-4b209e6519e5} + {33188221-39b7-434f-922a-912737f9cf94} diff --git a/PDF/PDF_x64_vs120.vcxproj b/PDF/PDF_x64_vs120.vcxproj index 9a940c9fb..3d6fcd001 100644 --- a/PDF/PDF_x64_vs120.vcxproj +++ b/PDF/PDF_x64_vs120.vcxproj @@ -95,29 +95,29 @@ ..\bin64\ - obj64\$(Configuration)\ + obj64\PDF\$(Configuration)\ true ..\bin64\ - obj64\$(Configuration)\ + obj64\PDF\$(Configuration)\ false ..\lib64\ - obj64\$(Configuration)\ + obj64\PDF\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\PDF\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\PDF\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\PDF\$(Configuration)\ diff --git a/PDF/PDF_x64_vs120.vcxproj.filters b/PDF/PDF_x64_vs120.vcxproj.filters index 218ba4d3a..4000b518b 100644 --- a/PDF/PDF_x64_vs120.vcxproj.filters +++ b/PDF/PDF_x64_vs120.vcxproj.filters @@ -2,40 +2,40 @@ - {18d2adca-0592-4429-90a0-1127aa51ed87} + {54cda45d-4307-41ea-9a35-1c452fc9ea98} - {5d4b7862-6e03-4a89-b073-9e6f37df93da} + {3078df20-fc1a-4565-859b-459ec583e281} - {3d3c71d8-6223-400f-bf7f-1a0210517fdd} + {1e4ac92b-d454-4eb9-8f11-523c47445a3d} - {2a1b2310-a82b-4d5b-af12-004c06590d3b} + {e544b4f0-9d16-4570-874f-42c308f5d138} - {2955ff53-bf80-4f45-a968-0efc3fa83dd7} + {a6f66eb7-7d1e-4510-92e3-f895a144bfec} - {eb916107-4537-468c-b14e-0f511ad26655} + {ecaef6c2-570d-4e63-b8a6-5f3d379b6ac1} - {7cc4c062-af80-49a8-91d5-97c4510d7e0f} + {7b190bfd-7343-40ac-9d55-757ae347836e} - {2eff0e00-a12c-4a3f-98a4-aa5dec23ac28} + {ef464bb8-3370-4818-9e4f-de8e943f06fd} - {4a109341-76d5-4fbf-ae21-27b66d8a684d} + {bb0ad1d6-71b8-4390-9a40-9263f21c56fa} - {78cefc89-ba0a-4a3e-9171-6afbf43caedd} + {c5c54e0c-e930-449e-8981-b4c497c1ddc1} - {e5860f7e-8844-4693-a5d9-44b19d6e9c21} + {5bbea81d-934e-464c-bd20-9b37628d799d} - {7360bc42-52e2-47c9-ab74-42da8ef102d0} + {349f56f0-3e34-47b9-bc7a-2eba38e4ad23} diff --git a/PDF/PDF_x64_vs90.vcproj b/PDF/PDF_x64_vs90.vcproj index 0e8415423..17df8176a 100644 --- a/PDF/PDF_x64_vs90.vcproj +++ b/PDF/PDF_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> lookahead ? (uInt)len : s->lookahead; } -#ifdef DEBUG +#ifdef ZLIB_DEBUG /* =========================================================================== * Check that the match at match_start is indeed a match. */ diff --git a/PDF/include/Poco/PDF/deflate.h b/PDF/include/Poco/PDF/deflate.h index e882732a3..4caad87f4 100644 --- a/PDF/include/Poco/PDF/deflate.h +++ b/PDF/include/Poco/PDF/deflate.h @@ -246,7 +246,7 @@ typedef struct internal_state { uInt matches; /* number of string matches in current block */ int last_eob_len; /* bit length of EOB code for last block */ -#ifdef DEBUG +#ifdef ZLIB_DEBUG ulg compressed_len; /* total bit length of compressed file mod 2^32 */ ulg bits_sent; /* bit length of compressed data sent mod 2^32 */ #endif @@ -294,7 +294,7 @@ void _tr_stored_block OF((deflate_state *s, charf *buf, ulg stored_len, * used. */ -#ifndef DEBUG +#ifndef ZLIB_DEBUG /* Inline versions of _tr_tally for speed: */ #if defined(GEN_TREES_H) || !defined(STDC) diff --git a/PDF/include/Poco/PDF/zutil.h b/PDF/include/Poco/PDF/zutil.h index a78d18c85..0cf98140b 100644 --- a/PDF/include/Poco/PDF/zutil.h +++ b/PDF/include/Poco/PDF/zutil.h @@ -238,7 +238,7 @@ extern const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ #endif /* Diagnostic functions */ -#ifdef DEBUG +#ifdef ZLIB_DEBUG # include extern int z_verbose; extern void z_error OF((char *m)); diff --git a/PDF/samples/Image/Image_vs100.vcxproj b/PDF/samples/Image/Image_vs100.vcxproj index c7440a3a9..37fc9a7ec 100644 --- a/PDF/samples/Image/Image_vs100.vcxproj +++ b/PDF/samples/Image/Image_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\Image\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\Image\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\Image\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\Image\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\Image\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\Image\$(Configuration)\ false Imaged Imaged @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\Imaged.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\Imaged.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\Imaged.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/PDF/samples/Image/Image_vs100.vcxproj.filters b/PDF/samples/Image/Image_vs100.vcxproj.filters index 92f1fd107..901c7756e 100644 --- a/PDF/samples/Image/Image_vs100.vcxproj.filters +++ b/PDF/samples/Image/Image_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {887219a2-fb78-4311-958e-0601d815c680} + {7f9f839b-be65-4261-ada0-472d7278b2f8} - {39403f66-f4f9-4450-af1f-7a6690d4cd5e} + {def7351d-7b9a-4cf0-b2c0-679c965a4889} diff --git a/PDF/samples/Image/Image_vs110.vcxproj b/PDF/samples/Image/Image_vs110.vcxproj index c958e2fb2..93c31b69b 100644 --- a/PDF/samples/Image/Image_vs110.vcxproj +++ b/PDF/samples/Image/Image_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\Image\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\Image\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\Image\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\Image\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\Image\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\Image\$(Configuration)\ false diff --git a/PDF/samples/Image/Image_vs110.vcxproj.filters b/PDF/samples/Image/Image_vs110.vcxproj.filters index 530bf5e04..2e7a4743c 100644 --- a/PDF/samples/Image/Image_vs110.vcxproj.filters +++ b/PDF/samples/Image/Image_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {6c57a01f-a9ad-4cab-9d19-c1fe341cd5a0} + {d1d26167-60b5-4d77-9ca3-95bca8c3df5d} - {964e2eb9-4c34-4172-baec-da21d986a5cf} + {20fdd51c-8399-4e21-ae81-a5d32bd36e38} diff --git a/PDF/samples/Image/Image_vs120.vcxproj b/PDF/samples/Image/Image_vs120.vcxproj index fe9deb71f..cac1f96d3 100644 --- a/PDF/samples/Image/Image_vs120.vcxproj +++ b/PDF/samples/Image/Image_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\Image\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\Image\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\Image\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\Image\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\Image\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\Image\$(Configuration)\ false diff --git a/PDF/samples/Image/Image_vs120.vcxproj.filters b/PDF/samples/Image/Image_vs120.vcxproj.filters index 2781aa2af..15a639c6e 100644 --- a/PDF/samples/Image/Image_vs120.vcxproj.filters +++ b/PDF/samples/Image/Image_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {faefb0ee-cfab-437f-9379-82658a416538} + {46960ce0-54a4-4181-bff6-cb37f8cb9455} - {5bfd080d-60d3-4822-8169-956c8b44e5f7} + {cd221c73-6156-4047-9e7b-48d527a1567e} diff --git a/PDF/samples/Image/Image_vs71.vcproj b/PDF/samples/Image/Image_vs71.vcproj index 368ff7535..131739d0a 100644 --- a/PDF/samples/Image/Image_vs71.vcproj +++ b/PDF/samples/Image/Image_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\Image\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\Image\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Image\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Image\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\Image\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\Image\$(Configuration)\ false Imaged Imaged @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\Imaged.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\Imaged.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\Imaged.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/PDF/samples/Image/Image_x64_vs100.vcxproj.filters b/PDF/samples/Image/Image_x64_vs100.vcxproj.filters index 3312b8055..601bb6d4e 100644 --- a/PDF/samples/Image/Image_x64_vs100.vcxproj.filters +++ b/PDF/samples/Image/Image_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {2afdb2fe-b9a4-4a14-8996-f3d4cc301f46} + {1a6ef19c-9506-4d60-8b25-c6b06acc6ceb} - {22796489-894c-402d-a0eb-27883ec624c2} + {c5645afc-1fab-4b85-911f-91fe6d3efe3e} diff --git a/PDF/samples/Image/Image_x64_vs110.vcxproj b/PDF/samples/Image/Image_x64_vs110.vcxproj index a78f652d1..04da439fe 100644 --- a/PDF/samples/Image/Image_x64_vs110.vcxproj +++ b/PDF/samples/Image/Image_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\Image\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\Image\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Image\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Image\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\Image\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\Image\$(Configuration)\ false diff --git a/PDF/samples/Image/Image_x64_vs110.vcxproj.filters b/PDF/samples/Image/Image_x64_vs110.vcxproj.filters index 3ff8c842f..daf76ccef 100644 --- a/PDF/samples/Image/Image_x64_vs110.vcxproj.filters +++ b/PDF/samples/Image/Image_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {11ceb7a7-4024-44de-a7fc-96717bb4acc4} + {8b070897-a2fe-4610-bd88-ae3e6c6fdb0d} - {e1a39244-7d65-4467-8d86-67185e703c86} + {0b99385e-0d8e-43b2-9fea-d64db580f9ea} diff --git a/PDF/samples/Image/Image_x64_vs120.vcxproj b/PDF/samples/Image/Image_x64_vs120.vcxproj index 2b5f10a53..9439f6ed7 100644 --- a/PDF/samples/Image/Image_x64_vs120.vcxproj +++ b/PDF/samples/Image/Image_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\Image\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\Image\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Image\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Image\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\Image\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\Image\$(Configuration)\ false diff --git a/PDF/samples/Image/Image_x64_vs120.vcxproj.filters b/PDF/samples/Image/Image_x64_vs120.vcxproj.filters index 41c62dbc4..6c9322d00 100644 --- a/PDF/samples/Image/Image_x64_vs120.vcxproj.filters +++ b/PDF/samples/Image/Image_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {128910d9-941b-43d0-b409-3b1ba968e58d} + {a08aa18d-a55c-465a-a8c8-d667cb443bc4} - {a34fd54a-83e1-48ad-8e92-0f5c30442851} + {13c9a90a-3f46-4f05-8cce-760026583aac} diff --git a/PDF/samples/Image/Image_x64_vs90.vcproj b/PDF/samples/Image/Image_x64_vs90.vcproj index 944a22e89..ac0218c20 100644 --- a/PDF/samples/Image/Image_x64_vs90.vcproj +++ b/PDF/samples/Image/Image_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\Text\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\Text\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\Text\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\Text\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\Text\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\Text\$(Configuration)\ false Textd Textd @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\Textd.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\Textd.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\Textd.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/PDF/samples/Text/Text_vs100.vcxproj.filters b/PDF/samples/Text/Text_vs100.vcxproj.filters index 446ac8050..b7a369700 100644 --- a/PDF/samples/Text/Text_vs100.vcxproj.filters +++ b/PDF/samples/Text/Text_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {0ad10a6e-4042-401d-8a49-1ceb3a076685} + {782c8110-58ac-4846-b350-49cc2cb071fc} - {84772b1d-c9e2-4676-ae04-e941a4c32a95} + {eaa2cd42-ae91-483b-a5e3-5694db1e7067} diff --git a/PDF/samples/Text/Text_vs110.vcxproj b/PDF/samples/Text/Text_vs110.vcxproj index 57ba6089d..9a64cd009 100644 --- a/PDF/samples/Text/Text_vs110.vcxproj +++ b/PDF/samples/Text/Text_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\Text\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\Text\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\Text\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\Text\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\Text\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\Text\$(Configuration)\ false diff --git a/PDF/samples/Text/Text_vs110.vcxproj.filters b/PDF/samples/Text/Text_vs110.vcxproj.filters index ec46ab318..deb75ec19 100644 --- a/PDF/samples/Text/Text_vs110.vcxproj.filters +++ b/PDF/samples/Text/Text_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {7529093a-3ac7-4d14-b5a4-4cc6e46798d3} + {94c1305a-2159-4b4c-bb28-c86c75c121a8} - {732f051a-9d94-45da-99a0-3b19c4504d16} + {3841efbb-3bf8-4440-9029-cb7f868ec52e} diff --git a/PDF/samples/Text/Text_vs120.vcxproj b/PDF/samples/Text/Text_vs120.vcxproj index c586b1100..20955b409 100644 --- a/PDF/samples/Text/Text_vs120.vcxproj +++ b/PDF/samples/Text/Text_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\Text\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\Text\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\Text\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\Text\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\Text\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\Text\$(Configuration)\ false diff --git a/PDF/samples/Text/Text_vs120.vcxproj.filters b/PDF/samples/Text/Text_vs120.vcxproj.filters index fca9a06da..a01c041e2 100644 --- a/PDF/samples/Text/Text_vs120.vcxproj.filters +++ b/PDF/samples/Text/Text_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {9c16e093-8f1c-48ed-a2b3-8f2ad09e7242} + {8b05bc58-d99c-477b-be4c-64bc7a73c417} - {261434e4-fa6b-44aa-acfc-143434fc3ad9} + {7f1c749c-0985-4ac7-9316-458cc48f3e24} diff --git a/PDF/samples/Text/Text_vs71.vcproj b/PDF/samples/Text/Text_vs71.vcproj index 3878676b4..b0e30adb5 100644 --- a/PDF/samples/Text/Text_vs71.vcproj +++ b/PDF/samples/Text/Text_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\Text\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\Text\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Text\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Text\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\Text\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\Text\$(Configuration)\ false Textd Textd @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\Textd.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\Textd.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\Textd.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/PDF/samples/Text/Text_x64_vs100.vcxproj.filters b/PDF/samples/Text/Text_x64_vs100.vcxproj.filters index d300f4998..6b6ee2afe 100644 --- a/PDF/samples/Text/Text_x64_vs100.vcxproj.filters +++ b/PDF/samples/Text/Text_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {4731bc3d-09b2-456d-8075-c92458e08f1c} + {e03a9410-6fd9-44f3-9098-b4b362cc5404} - {fd21ca81-7985-418b-b7ce-6bdac9a62086} + {f0328522-4f9a-43fa-814d-d81a6271872a} diff --git a/PDF/samples/Text/Text_x64_vs110.vcxproj b/PDF/samples/Text/Text_x64_vs110.vcxproj index 87869cadf..b485e89fd 100644 --- a/PDF/samples/Text/Text_x64_vs110.vcxproj +++ b/PDF/samples/Text/Text_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\Text\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\Text\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Text\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Text\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\Text\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\Text\$(Configuration)\ false diff --git a/PDF/samples/Text/Text_x64_vs110.vcxproj.filters b/PDF/samples/Text/Text_x64_vs110.vcxproj.filters index 0d1cea24b..19713fb01 100644 --- a/PDF/samples/Text/Text_x64_vs110.vcxproj.filters +++ b/PDF/samples/Text/Text_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {dd646794-d4ac-4e6c-b935-7486a624420e} + {38b8201c-5041-440b-b1a7-36d20bcd7267} - {1a50df50-6f9e-4ea1-a208-adb45cbeba22} + {92c967e7-20c0-4b5b-854a-101aa1193b5c} diff --git a/PDF/samples/Text/Text_x64_vs120.vcxproj b/PDF/samples/Text/Text_x64_vs120.vcxproj index 50ee506e0..19fb7bf1b 100644 --- a/PDF/samples/Text/Text_x64_vs120.vcxproj +++ b/PDF/samples/Text/Text_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\Text\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\Text\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Text\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Text\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\Text\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\Text\$(Configuration)\ false diff --git a/PDF/samples/Text/Text_x64_vs120.vcxproj.filters b/PDF/samples/Text/Text_x64_vs120.vcxproj.filters index 1d590ad49..6c202387e 100644 --- a/PDF/samples/Text/Text_x64_vs120.vcxproj.filters +++ b/PDF/samples/Text/Text_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {a5bf0b7c-183c-44a2-98bc-7726a92f3403} + {ae1acd71-75b7-4301-841e-f94fc876539c} - {2e77769e-66e8-427a-a2a4-97878b6fc9dc} + {af445f5b-f0e4-452a-a72d-1efa844c778b} diff --git a/PDF/samples/Text/Text_x64_vs90.vcproj b/PDF/samples/Text/Text_x64_vs90.vcproj index bbdd1ef04..d3a6c16da 100644 --- a/PDF/samples/Text/Text_x64_vs90.vcproj +++ b/PDF/samples/Text/Text_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> lookahead ? (uInt)len : s->lookahead; } -#ifdef DEBUG +#ifdef ZLIB_DEBUG /* =========================================================================== * Check that the match at match_start is indeed a match. */ diff --git a/PDF/src/trees.c b/PDF/src/trees.c index 355ebc05c..9f40d5754 100644 --- a/PDF/src/trees.c +++ b/PDF/src/trees.c @@ -39,7 +39,7 @@ #include "deflate.h" -#ifdef DEBUG +#ifdef ZLIB_DEBUG # include #endif @@ -167,7 +167,7 @@ local void copy_block OF((deflate_state *s, charf *buf, unsigned len, local void gen_trees_header OF((void)); #endif -#ifndef DEBUG +#ifndef ZLIB_DEBUG # define send_code(s, c, tree) send_bits(s, tree[c].Code, tree[c].Len) /* Send a code of the given tree. c and tree must not have side effects */ @@ -190,7 +190,7 @@ local void gen_trees_header OF((void)); * Send a value on a given number of bits. * IN assertion: length <= 16 and value fits in length bits. */ -#ifdef DEBUG +#ifdef ZLIB_DEBUG local void send_bits OF((deflate_state *s, int value, int length)); local void send_bits(s, value, length) @@ -400,7 +400,7 @@ void _tr_init(s) s->bi_buf = 0; s->bi_valid = 0; s->last_eob_len = 8; /* enough lookahead for inflate */ -#ifdef DEBUG +#ifdef ZLIB_DEBUG s->compressed_len = 0L; s->bits_sent = 0L; #endif @@ -875,7 +875,7 @@ void _tr_stored_block(s, buf, stored_len, eof) int eof; /* true if this is the last block for a file */ { send_bits(s, (STORED_BLOCK<<1)+eof, 3); /* send block type */ -#ifdef DEBUG +#ifdef ZLIB_DEBUG s->compressed_len = (s->compressed_len + 3 + 7) & (ulg)~7L; s->compressed_len += (stored_len + 4) << 3; #endif @@ -898,7 +898,7 @@ void _tr_align(s) { send_bits(s, STATIC_TREES<<1, 3); send_code(s, END_BLOCK, static_ltree); -#ifdef DEBUG +#ifdef ZLIB_DEBUG s->compressed_len += 10L; /* 3 for block type, 7 for EOB */ #endif bi_flush(s); @@ -910,7 +910,7 @@ void _tr_align(s) if (1 + s->last_eob_len + 10 - s->bi_valid < 9) { send_bits(s, STATIC_TREES<<1, 3); send_code(s, END_BLOCK, static_ltree); -#ifdef DEBUG +#ifdef ZLIB_DEBUG s->compressed_len += 10L; #endif bi_flush(s); @@ -991,7 +991,7 @@ void _tr_flush_block(s, buf, stored_len, eof) #endif send_bits(s, (STATIC_TREES<<1)+eof, 3); compress_block(s, (ct_data *)static_ltree, (ct_data *)static_dtree); -#ifdef DEBUG +#ifdef ZLIB_DEBUG s->compressed_len += 3 + s->static_len; #endif } else { @@ -999,7 +999,7 @@ void _tr_flush_block(s, buf, stored_len, eof) send_all_trees(s, s->l_desc.max_code+1, s->d_desc.max_code+1, max_blindex+1); compress_block(s, (ct_data *)s->dyn_ltree, (ct_data *)s->dyn_dtree); -#ifdef DEBUG +#ifdef ZLIB_DEBUG s->compressed_len += 3 + s->opt_len; #endif } @@ -1011,7 +1011,7 @@ void _tr_flush_block(s, buf, stored_len, eof) if (eof) { bi_windup(s); -#ifdef DEBUG +#ifdef ZLIB_DEBUG s->compressed_len += 7; /* align on byte boundary */ #endif } @@ -1189,7 +1189,7 @@ local void bi_windup(s) } s->bi_buf = 0; s->bi_valid = 0; -#ifdef DEBUG +#ifdef ZLIB_DEBUG s->bits_sent = (s->bits_sent+7) & ~7; #endif } @@ -1210,11 +1210,11 @@ local void copy_block(s, buf, len, header) if (header) { put_short(s, (ush)len); put_short(s, (ush)~len); -#ifdef DEBUG +#ifdef ZLIB_DEBUG s->bits_sent += 2*16; #endif } -#ifdef DEBUG +#ifdef ZLIB_DEBUG s->bits_sent += (ulg)len<<3; #endif while (len--) { diff --git a/PDF/src/zutil.c b/PDF/src/zutil.c index ba5a75b64..9e2d0536b 100644 --- a/PDF/src/zutil.c +++ b/PDF/src/zutil.c @@ -58,7 +58,7 @@ uLong ZEXPORT zlibCompileFlags() case 8: flags += 2 << 6; break; default: flags += 3 << 6; } -#ifdef DEBUG +#ifdef ZLIB_DEBUG flags += 1 << 8; #endif #if defined(ASMV) || defined(ASMINF) @@ -112,7 +112,7 @@ uLong ZEXPORT zlibCompileFlags() return flags; } -#ifdef DEBUG +#ifdef ZLIB_DEBUG # ifndef verbose # define verbose 0 diff --git a/PDF/testsuite/TestSuite_VS80.vcproj b/PDF/testsuite/TestSuite_VS80.vcproj index bb82aee99..2041bd95b 100644 --- a/PDF/testsuite/TestSuite_VS80.vcproj +++ b/PDF/testsuite/TestSuite_VS80.vcproj @@ -47,7 +47,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="4" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false TestSuited TestSuited @@ -129,6 +129,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitd.lib;WinTestRunnerd.lib;%(AdditionalDependencies) @@ -139,6 +140,7 @@ bin\TestSuited.pdb Windows MachineX86 + %(AdditionalOptions) @@ -161,6 +163,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnit.lib;WinTestRunner.lib;%(AdditionalDependencies) @@ -171,6 +174,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -191,6 +195,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmtd.lib;WinTestRunnermtd.lib;iphlpapi.lib;winmm.lib;nafxcwd.lib;libcmtd.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -202,6 +207,7 @@ bin\static_mt\TestSuited.pdb Windows MachineX86 + %(AdditionalOptions) @@ -224,6 +230,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmt.lib;WinTestRunnermt.lib;iphlpapi.lib;winmm.lib;nafxcw.lib;libcmt.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -235,6 +242,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -255,6 +263,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmdd.lib;WinTestRunnermdd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -265,6 +274,7 @@ bin\static_md\TestSuited.pdb Windows MachineX86 + %(AdditionalOptions) @@ -287,6 +297,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmd.lib;WinTestRunnermd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -297,6 +308,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/PDF/testsuite/TestSuite_vs100.vcxproj.filters b/PDF/testsuite/TestSuite_vs100.vcxproj.filters index dab7d84d2..60d263de9 100644 --- a/PDF/testsuite/TestSuite_vs100.vcxproj.filters +++ b/PDF/testsuite/TestSuite_vs100.vcxproj.filters @@ -2,28 +2,28 @@ - {e64b5e2a-e17d-4c11-8491-0f9727c0676d} + {9caaccaf-0a73-4bb4-b3ef-ce013566d8cd} - {44f7bc74-b96f-4fbf-8c96-2322cc1884ed} + {9460427a-cd38-4084-a431-aed2c01f1518} - {149c76e5-212e-46ab-a3b5-18db1e318efb} + {d9b084a4-55bc-481a-bc89-0fa434b2fc89} - {67f25bf3-b0f4-4bf1-a006-b50dbf6148ed} + {d8e09887-5ada-4b5d-b52e-b9ccb763d6a2} - {fea9dd4e-7569-436f-bdb7-0faa5303d8de} + {48df03f2-47e5-48cc-be97-c3c4915d4319} - {08d160e0-680d-45aa-a7b5-31bc67629ffd} + {0ba7d178-f134-45ed-96b2-f7a816c4f0ff} - {73cb575e-fd48-42e9-8f89-86941b8f8bfd} + {6f0ff5bf-90e4-4f39-a926-72f6daa18805} - {3e9ce34b-c897-4338-84f5-5eb8408c85e3} + {2436a637-018e-4863-961a-17a92bee252a} diff --git a/PDF/testsuite/TestSuite_vs110.vcxproj b/PDF/testsuite/TestSuite_vs110.vcxproj index 78dd342c5..783b0eb56 100644 --- a/PDF/testsuite/TestSuite_vs110.vcxproj +++ b/PDF/testsuite/TestSuite_vs110.vcxproj @@ -101,32 +101,32 @@ bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false diff --git a/PDF/testsuite/TestSuite_vs110.vcxproj.filters b/PDF/testsuite/TestSuite_vs110.vcxproj.filters index d404e82f6..60a381156 100644 --- a/PDF/testsuite/TestSuite_vs110.vcxproj.filters +++ b/PDF/testsuite/TestSuite_vs110.vcxproj.filters @@ -2,28 +2,28 @@ - {ca647567-fd47-4e14-8a7e-71b33f2de4b1} + {8f59ac0a-aa6a-4bef-b777-180ce7bbf279} - {54718711-474b-4b9a-b356-f27aee93b702} + {232ebe8b-5605-4f9c-9d9e-1288767d4db9} - {f479fe9c-398e-40a8-bdb5-285dc382e011} + {ce0bb204-ee0f-4b8a-8f25-9be9878c210c} - {5ecc4862-cd6a-4820-bede-c7b8066cf835} + {b85218c1-3ad5-4be5-82bf-6895279d48f0} - {39519f61-1ddb-475d-a517-42f59cfc8090} + {e52227ef-af48-49e6-ba32-6f331e44258a} - {b3fba789-5279-4964-814f-0a7c219c5c9d} + {2b013e31-38cb-4db6-a1c2-bbe00168bedd} - {52ad8736-0185-4c79-8fca-e976e04d3dbf} + {edd7428d-553a-4d23-a1a8-c281358733bc} - {d6810ac8-5d89-471a-8b73-f59b9a6fcb2c} + {b3c57805-6fa4-45cc-956d-971192edb75a} diff --git a/PDF/testsuite/TestSuite_vs120.vcxproj b/PDF/testsuite/TestSuite_vs120.vcxproj index abb58d950..895c2fcce 100644 --- a/PDF/testsuite/TestSuite_vs120.vcxproj +++ b/PDF/testsuite/TestSuite_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false diff --git a/PDF/testsuite/TestSuite_vs120.vcxproj.filters b/PDF/testsuite/TestSuite_vs120.vcxproj.filters index 56110ff85..327f690ee 100644 --- a/PDF/testsuite/TestSuite_vs120.vcxproj.filters +++ b/PDF/testsuite/TestSuite_vs120.vcxproj.filters @@ -2,28 +2,28 @@ - {bab48020-aa5b-45d5-98bd-8974a9e38eed} + {1941fa4f-8df1-418c-a47f-ee6222d5c485} - {52858575-9bb5-4dfc-981c-71b3cca0274f} + {6aa8ecf8-5dce-4cbb-9939-2e77fb206fed} - {6d9b612c-6bd0-4d05-a710-e86aa379bf05} + {eafc0d6f-9224-4278-a251-d4fbe9b19629} - {7f8ec761-a80a-4f66-90c8-1c628edb6671} + {9d4ac8fb-b347-4ca0-bb53-c806b211bb83} - {256309d5-5748-4b40-a508-dfe96c0a9a70} + {7e1ef0e5-1f1c-4bb3-8142-98e1f61b8a2c} - {81a75ba7-940e-43bc-bc8e-213567d17882} + {573a6358-081b-4353-aad6-a8c714b8cde0} - {8f9ae83d-2e07-4a35-ade9-ec8ae4b69411} + {8d2605b0-1319-4481-a9cd-c8c17ce83090} - {3ffa2a1d-2fea-41e9-a986-7e6b42eba49f} + {f9de3342-c6f5-4220-b8cb-dd5c34fe5a4b} diff --git a/PDF/testsuite/TestSuite_vs71.vcproj b/PDF/testsuite/TestSuite_vs71.vcproj index d987f0ccc..ae39b4a12 100644 --- a/PDF/testsuite/TestSuite_vs71.vcproj +++ b/PDF/testsuite/TestSuite_vs71.vcproj @@ -37,7 +37,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false TestSuited TestSuited @@ -129,6 +129,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitd.lib;WinTestRunnerd.lib;%(AdditionalDependencies) @@ -139,6 +140,7 @@ bin64\TestSuited.pdb Windows MachineX64 + %(AdditionalOptions) @@ -161,6 +163,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnit.lib;WinTestRunner.lib;%(AdditionalDependencies) @@ -171,6 +174,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -191,6 +195,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmtd.lib;WinTestRunnermtd.lib;iphlpapi.lib;winmm.lib;nafxcwd.lib;libcmtd.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -202,6 +207,7 @@ bin64\static_mt\TestSuited.pdb Windows MachineX64 + %(AdditionalOptions) @@ -224,6 +230,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmt.lib;WinTestRunnermt.lib;iphlpapi.lib;winmm.lib;nafxcw.lib;libcmt.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -235,6 +242,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -255,6 +263,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmdd.lib;WinTestRunnermdd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -265,6 +274,7 @@ bin64\static_md\TestSuited.pdb Windows MachineX64 + %(AdditionalOptions) @@ -287,6 +297,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmd.lib;WinTestRunnermd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -297,6 +308,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/PDF/testsuite/TestSuite_x64_vs100.vcxproj.filters b/PDF/testsuite/TestSuite_x64_vs100.vcxproj.filters index 44f928369..cedc6ee60 100644 --- a/PDF/testsuite/TestSuite_x64_vs100.vcxproj.filters +++ b/PDF/testsuite/TestSuite_x64_vs100.vcxproj.filters @@ -2,28 +2,28 @@ - {d25fe761-1cbe-4e72-a5c4-80fad9eba0b3} + {fea33a9a-b4c4-40e8-b8f9-d00a79d0158e} - {2539741e-33e1-46c4-9fc5-c65ca3109082} + {751c5c98-e740-459d-b097-04f1c542b28a} - {c0d7e647-8cb6-4987-9896-f517dd717077} + {48de0a79-cb60-4b78-b9bf-5aa2b613a53b} - {09fa3feb-f7ab-49d8-a248-c33b8e39f1fd} + {a64c9e93-f331-4cc0-b75f-7fecd77e7695} - {251c4d5e-bb21-42fa-809e-af2959d27f22} + {cd0f0f53-ae92-4fd4-9185-8f98d77abaa3} - {dd5a68c7-b4a5-4953-a0e6-5a875f197349} + {9cac3208-bb2d-40ad-9804-af7184e78d0c} - {e2199c8e-208c-4736-b1ed-b71ea0db39e0} + {9ec01899-1cff-43ca-9b75-b9ca7873d6ec} - {ee2dc3a6-f745-4ba2-8f59-07dcdb696e4e} + {9f33f64e-b996-4ee0-803a-e0aab66313f1} diff --git a/PDF/testsuite/TestSuite_x64_vs110.vcxproj b/PDF/testsuite/TestSuite_x64_vs110.vcxproj index 362e08b12..40e51d74c 100644 --- a/PDF/testsuite/TestSuite_x64_vs110.vcxproj +++ b/PDF/testsuite/TestSuite_x64_vs110.vcxproj @@ -101,32 +101,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false diff --git a/PDF/testsuite/TestSuite_x64_vs110.vcxproj.filters b/PDF/testsuite/TestSuite_x64_vs110.vcxproj.filters index a23b2b940..c1f070f25 100644 --- a/PDF/testsuite/TestSuite_x64_vs110.vcxproj.filters +++ b/PDF/testsuite/TestSuite_x64_vs110.vcxproj.filters @@ -2,28 +2,28 @@ - {0785a3ea-0e2e-45ab-8095-cfb419bd32b9} + {4645eb18-f5c9-4abe-9187-250ad67c26fa} - {d01f978e-6218-49a5-8342-d0f9754d42f3} + {94d9ef51-0abb-4ed2-8a1a-dcfa9475b126} - {4f67c454-acd1-4f1f-9503-0fc4ed2a4619} + {afa89e57-a926-49fb-8664-90385d85fe2d} - {8ce972aa-ff6a-4213-8aa4-baf0b09295b3} + {03baf462-8140-4b7c-91f8-e2b32d99ae3f} - {cb0f8f14-2728-47c8-b60d-701c70b89f35} + {7a58a74c-e761-4093-a3de-192ca6873111} - {3739acac-f7fd-4ff0-a2d5-0dbff65e7352} + {b18fae98-cc6b-48f1-8a70-0893f4d4220a} - {594aa609-e55b-4db4-bc3e-8de18f429988} + {6ae4e07f-ec50-448f-9385-1dc979d3f755} - {220d3028-e9a5-4c0d-8353-957ec4cb85c3} + {c350bf69-74c7-41d4-9b45-ef9e6fd4cf48} diff --git a/PDF/testsuite/TestSuite_x64_vs120.vcxproj b/PDF/testsuite/TestSuite_x64_vs120.vcxproj index 61dafc2b6..2c0f869a1 100644 --- a/PDF/testsuite/TestSuite_x64_vs120.vcxproj +++ b/PDF/testsuite/TestSuite_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false diff --git a/PDF/testsuite/TestSuite_x64_vs120.vcxproj.filters b/PDF/testsuite/TestSuite_x64_vs120.vcxproj.filters index 05558f077..0b71b308b 100644 --- a/PDF/testsuite/TestSuite_x64_vs120.vcxproj.filters +++ b/PDF/testsuite/TestSuite_x64_vs120.vcxproj.filters @@ -2,28 +2,28 @@ - {710bc69d-6a63-47e6-ab7d-bf0abd2c1cda} + {b6a25d54-80c7-4c55-af07-0f079e0c2a80} - {f3525b3a-018e-4bb1-bad4-f67dbab1aef6} + {4d4f4214-5791-4b33-8f43-f6e3ec4c999a} - {9cb43411-3898-4cf2-8b51-f7dea66a4595} + {74b0388d-9fd2-4383-bf37-46500f630161} - {fe729857-69cf-4e5a-8481-3aa7cc667654} + {d2175c62-7c0b-41a3-ba0f-af53c8f8befe} - {197104c4-ec27-45af-b676-08eba668b4d9} + {c94c95b6-4d4b-47d8-b909-08b8d759b300} - {58a5e7f3-ae3e-4b6c-b96b-fe6d5f8205fe} + {759fa2c3-ab79-42c9-bd99-c89256d09ef6} - {f15a34d5-1a45-4a6a-b84e-ceb522e2a564} + {8d154d83-5d35-4531-aa5e-8126b73a821e} - {941a1e0f-82c2-4ce0-a4f6-4fc06e775c24} + {09aef71f-15a3-4463-89a3-6e0a18f874fe} diff --git a/PDF/testsuite/TestSuite_x64_vs90.vcproj b/PDF/testsuite/TestSuite_x64_vs90.vcproj index 5f664fe4f..81d5a7201 100644 --- a/PDF/testsuite/TestSuite_x64_vs90.vcproj +++ b/PDF/testsuite/TestSuite_x64_vs90.vcproj @@ -47,7 +47,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\File2Page\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\File2Page\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\File2Page\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\File2Page\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\File2Page\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\File2Page\$(Configuration)\ false f2cpspd f2cpspd @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\f2cpspd.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\f2cpspd.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\f2cpspd.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/PageCompiler/File2Page/File2Page_vs100.vcxproj.filters b/PageCompiler/File2Page/File2Page_vs100.vcxproj.filters index 8a7d26705..787f7241d 100644 --- a/PageCompiler/File2Page/File2Page_vs100.vcxproj.filters +++ b/PageCompiler/File2Page/File2Page_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {8627b7f9-b0e8-4d20-be9f-1b27b96c1493} + {f333a887-36e2-41cf-8258-350eb68db271} - {538a9a47-1258-485a-a707-7a5e174c8edd} + {c1886a61-fcf8-405a-bd7d-50cf60d26f1a} diff --git a/PageCompiler/File2Page/File2Page_vs110.vcxproj b/PageCompiler/File2Page/File2Page_vs110.vcxproj index bbbf5c313..6e5e10776 100644 --- a/PageCompiler/File2Page/File2Page_vs110.vcxproj +++ b/PageCompiler/File2Page/File2Page_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\File2Page\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\File2Page\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\File2Page\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\File2Page\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\File2Page\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\File2Page\$(Configuration)\ false diff --git a/PageCompiler/File2Page/File2Page_vs110.vcxproj.filters b/PageCompiler/File2Page/File2Page_vs110.vcxproj.filters index b5685617c..1e2eacb34 100644 --- a/PageCompiler/File2Page/File2Page_vs110.vcxproj.filters +++ b/PageCompiler/File2Page/File2Page_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {88acec55-bbb5-48b9-a9ed-6a2a724a1447} + {ffba4cf3-9926-464b-8e16-76e9723bd0a3} - {bd8d26f9-b934-4a14-a6fa-9473b8dc6b08} + {552fa4b6-e484-4d05-9ab4-9720dd7dc5b2} diff --git a/PageCompiler/File2Page/File2Page_vs120.vcxproj b/PageCompiler/File2Page/File2Page_vs120.vcxproj index 50197923e..ba6c8a346 100644 --- a/PageCompiler/File2Page/File2Page_vs120.vcxproj +++ b/PageCompiler/File2Page/File2Page_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\File2Page\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\File2Page\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\File2Page\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\File2Page\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\File2Page\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\File2Page\$(Configuration)\ false diff --git a/PageCompiler/File2Page/File2Page_vs120.vcxproj.filters b/PageCompiler/File2Page/File2Page_vs120.vcxproj.filters index 988ce8dbd..7e4bd03b1 100644 --- a/PageCompiler/File2Page/File2Page_vs120.vcxproj.filters +++ b/PageCompiler/File2Page/File2Page_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {6a84f87b-bab1-4cf9-8e8a-2ec426eac51a} + {b886443c-289d-408b-8101-20d6a78d5cfa} - {07568160-c096-4836-912b-38bc4fba3aa4} + {40ef9975-d006-41f2-92f4-fdb1159837f8} diff --git a/PageCompiler/File2Page/File2Page_vs71.vcproj b/PageCompiler/File2Page/File2Page_vs71.vcproj index 5d6e75c6e..7099d987f 100644 --- a/PageCompiler/File2Page/File2Page_vs71.vcproj +++ b/PageCompiler/File2Page/File2Page_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\File2Page\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\File2Page\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\File2Page\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\File2Page\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\File2Page\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\File2Page\$(Configuration)\ false f2cpspd f2cpspd @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\f2cpspd.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\f2cpspd.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\f2cpspd.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/PageCompiler/File2Page/File2Page_x64_vs100.vcxproj.filters b/PageCompiler/File2Page/File2Page_x64_vs100.vcxproj.filters index 8be145001..47cb3594f 100644 --- a/PageCompiler/File2Page/File2Page_x64_vs100.vcxproj.filters +++ b/PageCompiler/File2Page/File2Page_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {b8a2edc0-ef45-4ba9-ba93-b2b2c75cd7b6} + {72cfd994-f2f2-4ac1-a2f0-d748a94eb2c2} - {8f9dc1fe-637b-45f0-bd36-e9a305f77b3c} + {2afe8410-f17a-449a-8703-c5c0cb7dcdf8} diff --git a/PageCompiler/File2Page/File2Page_x64_vs110.vcxproj b/PageCompiler/File2Page/File2Page_x64_vs110.vcxproj index 217468bca..acbd0b2ea 100644 --- a/PageCompiler/File2Page/File2Page_x64_vs110.vcxproj +++ b/PageCompiler/File2Page/File2Page_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\File2Page\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\File2Page\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\File2Page\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\File2Page\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\File2Page\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\File2Page\$(Configuration)\ false diff --git a/PageCompiler/File2Page/File2Page_x64_vs110.vcxproj.filters b/PageCompiler/File2Page/File2Page_x64_vs110.vcxproj.filters index 75aff0c7d..b6ddfeff5 100644 --- a/PageCompiler/File2Page/File2Page_x64_vs110.vcxproj.filters +++ b/PageCompiler/File2Page/File2Page_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {ff84c6c1-7256-4fd4-b636-0a56d35b16e6} + {d49dcd31-d018-48ac-a5dc-66ff74a4e23f} - {a9ee80f7-5be3-423d-863b-c09d480a563a} + {2b89e199-68b1-427d-9b8b-f5e35251cf49} diff --git a/PageCompiler/File2Page/File2Page_x64_vs120.vcxproj b/PageCompiler/File2Page/File2Page_x64_vs120.vcxproj index 84eff3c3c..de2fbbd4e 100644 --- a/PageCompiler/File2Page/File2Page_x64_vs120.vcxproj +++ b/PageCompiler/File2Page/File2Page_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\File2Page\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\File2Page\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\File2Page\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\File2Page\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\File2Page\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\File2Page\$(Configuration)\ false diff --git a/PageCompiler/File2Page/File2Page_x64_vs120.vcxproj.filters b/PageCompiler/File2Page/File2Page_x64_vs120.vcxproj.filters index 0eaf1da1e..80641f283 100644 --- a/PageCompiler/File2Page/File2Page_x64_vs120.vcxproj.filters +++ b/PageCompiler/File2Page/File2Page_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {9d5ac62e-817a-4f75-ae8c-d904a99048a7} + {102ee085-e371-4940-8b90-be2597242c63} - {6bfacec0-6319-4498-88f9-2ef2a962f83a} + {527071b2-f577-4aba-821b-85bd09617251} diff --git a/PageCompiler/File2Page/File2Page_x64_vs90.vcproj b/PageCompiler/File2Page/File2Page_x64_vs90.vcproj index a113e0558..0729584b9 100644 --- a/PageCompiler/File2Page/File2Page_x64_vs90.vcproj +++ b/PageCompiler/File2Page/File2Page_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\PageCompiler\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\PageCompiler\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\PageCompiler\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\PageCompiler\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\PageCompiler\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\PageCompiler\$(Configuration)\ false cpspcd cpspcd @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\cpspcd.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\cpspcd.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\cpspcd.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/PageCompiler/PageCompiler_vs100.vcxproj.filters b/PageCompiler/PageCompiler_vs100.vcxproj.filters index b3f8eb0e8..e9b6d3121 100644 --- a/PageCompiler/PageCompiler_vs100.vcxproj.filters +++ b/PageCompiler/PageCompiler_vs100.vcxproj.filters @@ -2,13 +2,13 @@ - {5b48626f-d0fa-4551-bebf-acf94318674f} + {29468aca-f3c2-4b01-bdc9-4950f34a6709} - {3208a0fe-46b9-407d-8b7c-3a51f1bd2205} + {3200e4fe-d6c3-47c1-ab19-1a20383c5c83} - {b7b135b9-a66d-4979-a8a4-9d77bcbb87bc} + {3272415c-6ad4-4f7d-8c90-02937fe0d0ed} diff --git a/PageCompiler/PageCompiler_vs110.vcxproj b/PageCompiler/PageCompiler_vs110.vcxproj index b244593d1..5ceed079f 100644 --- a/PageCompiler/PageCompiler_vs110.vcxproj +++ b/PageCompiler/PageCompiler_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\PageCompiler\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\PageCompiler\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\PageCompiler\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\PageCompiler\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\PageCompiler\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\PageCompiler\$(Configuration)\ false diff --git a/PageCompiler/PageCompiler_vs110.vcxproj.filters b/PageCompiler/PageCompiler_vs110.vcxproj.filters index 2f0016108..9f4e06cdd 100644 --- a/PageCompiler/PageCompiler_vs110.vcxproj.filters +++ b/PageCompiler/PageCompiler_vs110.vcxproj.filters @@ -2,13 +2,13 @@ - {5d9fab1d-df6e-4a0f-b41b-e6707a1c4a2a} + {54de058e-b2f0-47c8-9c65-f56cc1f87233} - {500257ca-8850-4d9a-b9df-f2d1caa35657} + {39c736e0-b54b-490d-9594-139ad806cf41} - {38f4e17f-52a7-4a8b-9b4c-5cdd5c3c4cf2} + {3a7b5b42-0875-486e-827f-3b7d3ec0c2c4} diff --git a/PageCompiler/PageCompiler_vs120.vcxproj b/PageCompiler/PageCompiler_vs120.vcxproj index 98a8cfc4c..717f84997 100644 --- a/PageCompiler/PageCompiler_vs120.vcxproj +++ b/PageCompiler/PageCompiler_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\PageCompiler\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\PageCompiler\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\PageCompiler\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\PageCompiler\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\PageCompiler\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\PageCompiler\$(Configuration)\ false diff --git a/PageCompiler/PageCompiler_vs120.vcxproj.filters b/PageCompiler/PageCompiler_vs120.vcxproj.filters index 4f0dcaac6..72c8e825c 100644 --- a/PageCompiler/PageCompiler_vs120.vcxproj.filters +++ b/PageCompiler/PageCompiler_vs120.vcxproj.filters @@ -2,13 +2,13 @@ - {15efb261-a5e3-4a3c-bd5a-a7471069d6df} + {12dba16b-e078-453d-994e-4bc2edd2f78b} - {57f2b732-e12c-4666-ae22-d79f796f7c77} + {b92a04c0-51aa-4c00-8dc0-954710370b28} - {e20a4a16-2d7b-461f-b3a7-f59b4610ad23} + {903ce3e8-a0ce-48c6-a0ab-3fafda3e2a9e} diff --git a/PageCompiler/PageCompiler_vs71.vcproj b/PageCompiler/PageCompiler_vs71.vcproj index 5b20db2c7..7f6f71c07 100644 --- a/PageCompiler/PageCompiler_vs71.vcproj +++ b/PageCompiler/PageCompiler_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\PageCompiler\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\PageCompiler\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\PageCompiler\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\PageCompiler\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\PageCompiler\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\PageCompiler\$(Configuration)\ false cpspcd cpspcd @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\cpspcd.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\cpspcd.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\cpspcd.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/PageCompiler/PageCompiler_x64_vs100.vcxproj.filters b/PageCompiler/PageCompiler_x64_vs100.vcxproj.filters index 1ca14e420..a04d2be6e 100644 --- a/PageCompiler/PageCompiler_x64_vs100.vcxproj.filters +++ b/PageCompiler/PageCompiler_x64_vs100.vcxproj.filters @@ -2,13 +2,13 @@ - {1e535882-dc2d-4452-b3a9-5985f1326808} + {fd93e985-3fcc-4155-8a43-188e1170d942} - {d64deee7-9cdb-4f15-a404-856bc5712adb} + {5fc52ab3-5d7c-427e-93f7-bd38a57f0c98} - {d24c5efd-5814-49d3-9854-c5150418770b} + {302ab454-f02d-425c-88de-3ceaabf7890d} diff --git a/PageCompiler/PageCompiler_x64_vs110.vcxproj b/PageCompiler/PageCompiler_x64_vs110.vcxproj index 1dfb98e36..b3077a0f6 100644 --- a/PageCompiler/PageCompiler_x64_vs110.vcxproj +++ b/PageCompiler/PageCompiler_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\PageCompiler\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\PageCompiler\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\PageCompiler\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\PageCompiler\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\PageCompiler\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\PageCompiler\$(Configuration)\ false diff --git a/PageCompiler/PageCompiler_x64_vs110.vcxproj.filters b/PageCompiler/PageCompiler_x64_vs110.vcxproj.filters index 428d252f6..cad241001 100644 --- a/PageCompiler/PageCompiler_x64_vs110.vcxproj.filters +++ b/PageCompiler/PageCompiler_x64_vs110.vcxproj.filters @@ -2,13 +2,13 @@ - {88aabd2d-01e8-4576-b809-2202f81ab1e5} + {ef8392cb-03a8-41a6-9bf8-00a08324e4cd} - {e8fa5a86-f294-4ddd-badf-7352ca0c8711} + {a9e2edbd-e68d-4065-a204-9e6a2a17f9b1} - {4073b61c-0d54-49aa-83ea-7b87c07376f8} + {674cbb58-cc5d-44a4-b665-e6add57a52d5} diff --git a/PageCompiler/PageCompiler_x64_vs120.vcxproj b/PageCompiler/PageCompiler_x64_vs120.vcxproj index 8bca6f491..0566f2e95 100644 --- a/PageCompiler/PageCompiler_x64_vs120.vcxproj +++ b/PageCompiler/PageCompiler_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\PageCompiler\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\PageCompiler\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\PageCompiler\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\PageCompiler\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\PageCompiler\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\PageCompiler\$(Configuration)\ false diff --git a/PageCompiler/PageCompiler_x64_vs120.vcxproj.filters b/PageCompiler/PageCompiler_x64_vs120.vcxproj.filters index ad2c8bf47..e7f9a3216 100644 --- a/PageCompiler/PageCompiler_x64_vs120.vcxproj.filters +++ b/PageCompiler/PageCompiler_x64_vs120.vcxproj.filters @@ -2,13 +2,13 @@ - {925643cf-746b-4b8f-ac40-b4ea8573a066} + {782881b5-5c50-48d0-aadb-e593dba5a532} - {a07e65e8-5bbc-41f7-b6cc-e0739300d343} + {b6d0cf4c-c183-4e45-9b8f-02b2af8b90d6} - {ee280a86-2e80-4929-a4bf-918b52863369} + {e7cc050e-749f-4439-86a7-4edd0fef0276} diff --git a/PageCompiler/PageCompiler_x64_vs90.vcproj b/PageCompiler/PageCompiler_x64_vs90.vcproj index 70544c941..1b31fc55b 100644 --- a/PageCompiler/PageCompiler_x64_vs90.vcproj +++ b/PageCompiler/PageCompiler_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\HTTPTimeServer\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\HTTPTimeServer\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\HTTPTimeServer\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\HTTPTimeServer\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\HTTPTimeServer\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\HTTPTimeServer\$(Configuration)\ false HTTPTimeServerd HTTPTimeServerd @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\HTTPTimeServerd.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\HTTPTimeServerd.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\HTTPTimeServerd.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_vs100.vcxproj.filters b/PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_vs100.vcxproj.filters index 8269072b3..611d8204d 100644 --- a/PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_vs100.vcxproj.filters +++ b/PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_vs100.vcxproj.filters @@ -2,13 +2,13 @@ - {9b783ea4-f6ee-49dc-b44a-6f488f8fc14e} + {2fea8fc9-41a3-4b91-9b5d-80680ed0ce5a} - {c4b62014-51e1-46f2-b607-efdb87fb4730} + {a357abf4-8c9c-465b-9566-2df05d575a4b} - {f181a244-0c75-4f58-b1c2-f0d289be47b2} + {3d65a9d9-65c1-4d33-900e-51942b26171b} diff --git a/PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_vs110.vcxproj b/PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_vs110.vcxproj index 9aec52dac..8289eebc1 100644 --- a/PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_vs110.vcxproj +++ b/PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\HTTPTimeServer\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\HTTPTimeServer\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\HTTPTimeServer\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\HTTPTimeServer\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\HTTPTimeServer\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\HTTPTimeServer\$(Configuration)\ false diff --git a/PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_vs110.vcxproj.filters b/PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_vs110.vcxproj.filters index 4ab185319..42731e64a 100644 --- a/PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_vs110.vcxproj.filters +++ b/PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_vs110.vcxproj.filters @@ -2,13 +2,13 @@ - {ff9f27c0-c243-4c00-8e35-2956e4052a3d} + {d4d02f1d-d682-40c3-b331-867721915922} - {8fa1a789-4b8f-4e83-8f7a-7d459c1cf519} + {6a9982d8-8e95-4763-89f9-9fc4f0769c9b} - {44dec647-da38-43df-a373-4f166c310e97} + {97cd0e37-01bd-41fc-b217-f84dd958d392} diff --git a/PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_vs120.vcxproj b/PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_vs120.vcxproj index aa4b1d892..93e8d7a1f 100644 --- a/PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_vs120.vcxproj +++ b/PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\HTTPTimeServer\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\HTTPTimeServer\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\HTTPTimeServer\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\HTTPTimeServer\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\HTTPTimeServer\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\HTTPTimeServer\$(Configuration)\ false diff --git a/PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_vs120.vcxproj.filters b/PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_vs120.vcxproj.filters index c4e77064d..cbf90f731 100644 --- a/PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_vs120.vcxproj.filters +++ b/PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_vs120.vcxproj.filters @@ -2,13 +2,13 @@ - {56dfdf22-a9fd-4c96-ada9-94fa6cf30a5a} + {82611a3b-fa18-42ca-83ed-3f87a3b4bcec} - {3d48f270-c9fa-4910-8a52-be7b3529161f} + {280a4ca5-64b6-4176-ae97-41622ad63bc6} - {c0a9cf2b-a252-4bb3-8410-824a576e5845} + {febb11f7-fcb0-4410-b43d-b0dd399e2c00} diff --git a/PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_vs71.vcproj b/PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_vs71.vcproj index 962e06580..dd5a8f740 100644 --- a/PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_vs71.vcproj +++ b/PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\HTTPTimeServer\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\HTTPTimeServer\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\HTTPTimeServer\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\HTTPTimeServer\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\HTTPTimeServer\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\HTTPTimeServer\$(Configuration)\ false HTTPTimeServerd HTTPTimeServerd @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\HTTPTimeServerd.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\HTTPTimeServerd.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\HTTPTimeServerd.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_x64_vs100.vcxproj.filters b/PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_x64_vs100.vcxproj.filters index 20eb1a0a5..dc49cb86f 100644 --- a/PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_x64_vs100.vcxproj.filters +++ b/PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_x64_vs100.vcxproj.filters @@ -2,13 +2,13 @@ - {792f7639-3c67-4798-9ff7-272cdf0fb369} + {9fe05a09-aab5-4988-86f3-64b946614a08} - {2d30fc33-c4fa-4d0f-ba92-ed5697a7edd4} + {187b34c6-fabc-4dd1-8a15-68d5b4f147a9} - {8d953f13-47eb-4ee6-8cfe-35af6c4d7a47} + {a7d96e59-66fc-4959-9eac-22af3c16236d} diff --git a/PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_x64_vs110.vcxproj b/PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_x64_vs110.vcxproj index 47bd8f0c5..9eabf671f 100644 --- a/PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_x64_vs110.vcxproj +++ b/PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\HTTPTimeServer\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\HTTPTimeServer\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\HTTPTimeServer\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\HTTPTimeServer\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\HTTPTimeServer\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\HTTPTimeServer\$(Configuration)\ false diff --git a/PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_x64_vs110.vcxproj.filters b/PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_x64_vs110.vcxproj.filters index 728c10d97..2221735fd 100644 --- a/PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_x64_vs110.vcxproj.filters +++ b/PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_x64_vs110.vcxproj.filters @@ -2,13 +2,13 @@ - {e6b66fca-340b-4d60-80c0-73dde45b6f14} + {3a04c577-f831-45fe-a356-714aa4ec8618} - {f995ef54-cddf-443f-9fd3-2a1ee4f8cb51} + {d7407b9a-db64-4231-8a25-0b4442c78f64} - {9eb58865-ed3b-4526-ac3e-b099bc9840ce} + {19ca43a7-885b-4806-8436-8d23fe43e115} diff --git a/PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_x64_vs120.vcxproj b/PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_x64_vs120.vcxproj index e856dbc96..4af1d2e56 100644 --- a/PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_x64_vs120.vcxproj +++ b/PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\HTTPTimeServer\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\HTTPTimeServer\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\HTTPTimeServer\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\HTTPTimeServer\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\HTTPTimeServer\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\HTTPTimeServer\$(Configuration)\ false diff --git a/PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_x64_vs120.vcxproj.filters b/PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_x64_vs120.vcxproj.filters index c09e8be85..d46bfbb31 100644 --- a/PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_x64_vs120.vcxproj.filters +++ b/PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_x64_vs120.vcxproj.filters @@ -2,13 +2,13 @@ - {f31761ce-4edf-48e8-8bba-cbce03109be9} + {8304da41-9359-445a-bdd1-0a7e4068d343} - {916f394c-2b3f-4375-94e9-d40415d8f429} + {00285a00-f0da-4ee6-994c-ef0c55c1912e} - {9340d7e2-0f1e-4e70-ab6f-356187708955} + {0aa3473a-57a7-4e58-8df6-3497a9a54fb2} diff --git a/PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_x64_vs90.vcproj b/PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_x64_vs90.vcproj index 38dead56d..2ad8d71c6 100644 --- a/PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_x64_vs90.vcproj +++ b/PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\PocoDoc\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\PocoDoc\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\PocoDoc\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\PocoDoc\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\PocoDoc\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\PocoDoc\$(Configuration)\ false PocoDocd PocoDocd @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\PocoDocd.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\PocoDocd.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\PocoDocd.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/PocoDoc/PocoDoc_vs100.vcxproj.filters b/PocoDoc/PocoDoc_vs100.vcxproj.filters index e6b9582fa..fef1db586 100644 --- a/PocoDoc/PocoDoc_vs100.vcxproj.filters +++ b/PocoDoc/PocoDoc_vs100.vcxproj.filters @@ -2,22 +2,22 @@ - {a62d5f40-c4d4-4e32-9080-995d99dbef3e} + {b89a6faf-4e1b-4253-a0d4-0b470db08547} - {292df3c4-c6c4-4438-b2ba-c43ee7e68596} + {2e9f5afd-8122-460d-b070-47f3847e8b1a} - {22be23d0-863a-4594-86a3-6e55245c8545} + {2a697456-7e57-4c1d-b1f0-423518eba91d} - {1bd7108b-bb94-41aa-98e4-1f40b602a7eb} + {959c88a4-9865-49f4-89b4-bacff9689961} - {d5bfb481-cdd2-436e-acb2-1dddbf58ffa6} + {0ac9aab0-45d5-44f4-86e0-d58942ce1237} - {20fef02e-de68-4f1d-84cc-a394ce2223e4} + {646370ce-8193-4d92-8a85-ed66b40bcd91} diff --git a/PocoDoc/PocoDoc_vs110.vcxproj b/PocoDoc/PocoDoc_vs110.vcxproj index f66f9a0ec..b92321416 100644 --- a/PocoDoc/PocoDoc_vs110.vcxproj +++ b/PocoDoc/PocoDoc_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\PocoDoc\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\PocoDoc\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\PocoDoc\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\PocoDoc\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\PocoDoc\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\PocoDoc\$(Configuration)\ false diff --git a/PocoDoc/PocoDoc_vs110.vcxproj.filters b/PocoDoc/PocoDoc_vs110.vcxproj.filters index a40c2390c..fadf97996 100644 --- a/PocoDoc/PocoDoc_vs110.vcxproj.filters +++ b/PocoDoc/PocoDoc_vs110.vcxproj.filters @@ -2,22 +2,22 @@ - {35df9446-3a2d-467c-85b6-54ffb865ff90} + {9ad8c569-5ad9-4bc4-ace2-2421685bb59d} - {39810b93-2504-413b-bbdd-daec16fa57a9} + {e55e16ce-8f40-4815-8175-1e7a6ffbdc64} - {e052b8bd-3608-4ee6-b644-0395c9357dfb} + {1927d3ef-273b-4753-a5cd-aef44aa908fa} - {acd2a20d-9af5-4cbf-8d93-5178ba25defc} + {95eff8b4-e088-4c48-ad66-757ea1294fdf} - {6d3fea2b-6d80-47e5-bf06-c4829306ca27} + {0dceee53-9d6c-4b85-9913-20aaa1648add} - {f633142b-cb2c-4ce7-8d4b-9f94d926bfb9} + {f1599fa1-b1c4-4f6e-bf2a-03bd7d735f93} diff --git a/PocoDoc/PocoDoc_vs120.vcxproj b/PocoDoc/PocoDoc_vs120.vcxproj index b29211171..ff7cde878 100644 --- a/PocoDoc/PocoDoc_vs120.vcxproj +++ b/PocoDoc/PocoDoc_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\PocoDoc\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\PocoDoc\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\PocoDoc\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\PocoDoc\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\PocoDoc\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\PocoDoc\$(Configuration)\ false diff --git a/PocoDoc/PocoDoc_vs120.vcxproj.filters b/PocoDoc/PocoDoc_vs120.vcxproj.filters index 57c503646..7a939df01 100644 --- a/PocoDoc/PocoDoc_vs120.vcxproj.filters +++ b/PocoDoc/PocoDoc_vs120.vcxproj.filters @@ -2,22 +2,22 @@ - {21fcb9c6-9b27-4e6d-884b-a6f0a43f5d75} + {3801acbe-708b-43ff-99ac-3a1a2aa6e66e} - {0ea41759-20c8-443e-8dd8-8e6f840c5e6b} + {880bc190-9919-4791-ad95-c9504f8b8b17} - {f00ab12d-7ecb-458f-bf9b-e0346c437624} + {b161ab5a-6340-4e12-b35b-4f14e2efa11c} - {03d39a87-ed61-4e90-b2be-cca4f42a2118} + {e442befb-13d2-4805-ae7a-36278f0fbcc3} - {495e352d-461e-4bdd-afa1-b70169fe2ce4} + {a6cc0bf4-d321-4b44-8648-7668a0e09b82} - {a4b7d23d-ffd0-42a1-97a4-4ad64cbfa90e} + {c93ef726-9b34-42d5-82cf-a3470dd39eb5} diff --git a/PocoDoc/PocoDoc_vs71.vcproj b/PocoDoc/PocoDoc_vs71.vcproj index a91d2ca76..aa2ab5e63 100644 --- a/PocoDoc/PocoDoc_vs71.vcproj +++ b/PocoDoc/PocoDoc_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\PocoDoc\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\PocoDoc\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\PocoDoc\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\PocoDoc\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\PocoDoc\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\PocoDoc\$(Configuration)\ false PocoDocd PocoDocd @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\PocoDocd.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\PocoDocd.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\PocoDocd.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/PocoDoc/PocoDoc_x64_vs100.vcxproj.filters b/PocoDoc/PocoDoc_x64_vs100.vcxproj.filters index e1961a7e5..ffec2a098 100644 --- a/PocoDoc/PocoDoc_x64_vs100.vcxproj.filters +++ b/PocoDoc/PocoDoc_x64_vs100.vcxproj.filters @@ -2,22 +2,22 @@ - {665dd891-1231-4b79-939a-bfc657c9219f} + {44e2d7b9-b7a9-48da-ae1a-f8905895f095} - {9c8a6dcf-1d4d-4e6b-893a-29c0b34820bf} + {54d8ed12-ac38-4937-ae56-496b9de69fb0} - {89a7457c-6428-4014-a166-558c4b26c0bd} + {fd3cd979-cda9-43bd-823a-840ed85bb46d} - {5d35f75e-f74e-4ee8-b565-41571383e6b4} + {77f2e322-52cd-46a5-95ce-059daac0355c} - {64879f18-e62e-45e5-852f-6060637e73b3} + {e6ea0dfc-caee-4e96-a286-61ff3c7b837d} - {131a3ece-1eb5-4dba-ae98-8a9fcd5295b0} + {93946d55-5913-4c79-a546-c006b56ea831} diff --git a/PocoDoc/PocoDoc_x64_vs110.vcxproj b/PocoDoc/PocoDoc_x64_vs110.vcxproj index 9a722b164..25cbb4627 100644 --- a/PocoDoc/PocoDoc_x64_vs110.vcxproj +++ b/PocoDoc/PocoDoc_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\PocoDoc\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\PocoDoc\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\PocoDoc\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\PocoDoc\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\PocoDoc\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\PocoDoc\$(Configuration)\ false diff --git a/PocoDoc/PocoDoc_x64_vs110.vcxproj.filters b/PocoDoc/PocoDoc_x64_vs110.vcxproj.filters index 4977e09e2..71fc415e2 100644 --- a/PocoDoc/PocoDoc_x64_vs110.vcxproj.filters +++ b/PocoDoc/PocoDoc_x64_vs110.vcxproj.filters @@ -2,22 +2,22 @@ - {a52503cf-4846-472e-848b-2a66183b1326} + {80674314-8691-4256-b665-0e3bd7063526} - {851da554-d86e-49f4-9515-c227a7b3a7d0} + {63a4e6a1-3075-4afe-bd65-ef674d6202a9} - {46422457-11c5-4293-a174-b21ade8d8223} + {fc6425c4-d74f-441d-a3c6-44ba591d84ee} - {71aa6c65-f7bb-418f-ac0c-d7a4ca4571da} + {b4693b7a-2381-4f12-b408-28dde5c0abb1} - {0e8aa6cf-7f8c-4974-80e6-f2b1d95b40b6} + {f96eb120-4413-4c9d-8659-3bc4cfc50207} - {b13ed006-f292-4273-9d3f-ae9762d6424f} + {d868abf2-939c-4ef9-b5b9-3c426d19e755} diff --git a/PocoDoc/PocoDoc_x64_vs120.vcxproj b/PocoDoc/PocoDoc_x64_vs120.vcxproj index f379db4ff..b468ed9aa 100644 --- a/PocoDoc/PocoDoc_x64_vs120.vcxproj +++ b/PocoDoc/PocoDoc_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\PocoDoc\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\PocoDoc\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\PocoDoc\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\PocoDoc\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\PocoDoc\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\PocoDoc\$(Configuration)\ false diff --git a/PocoDoc/PocoDoc_x64_vs120.vcxproj.filters b/PocoDoc/PocoDoc_x64_vs120.vcxproj.filters index c41b77952..6b028798a 100644 --- a/PocoDoc/PocoDoc_x64_vs120.vcxproj.filters +++ b/PocoDoc/PocoDoc_x64_vs120.vcxproj.filters @@ -2,22 +2,22 @@ - {44a09b6b-8848-4009-b8a2-e691eed2af04} + {53cdce68-4054-4bcd-b2ef-70b7d3b14565} - {8689d146-83eb-4697-8d8b-839948bdc319} + {23830a4c-3935-42f4-8b6f-c454ce3564db} - {4b6f3e5b-6f99-46e3-b3de-3074e7b760ca} + {1259084b-fc25-4772-8c2b-8c86a86fafb5} - {725220bf-9881-4907-80c1-3b3a4453d10c} + {7db075ba-608d-453a-97ec-b8cba519c23e} - {7cb34e7e-6b7a-4a74-89f0-4c047436d31d} + {b8dbd0a7-f27d-4d41-ac03-93ce82cc3caa} - {eec7cb2d-7619-4108-b001-4ab22169cb14} + {e7804522-be67-4c2e-9637-294c3595fc85} diff --git a/PocoDoc/PocoDoc_x64_vs90.vcproj b/PocoDoc/PocoDoc_x64_vs90.vcproj index 771f82c1d..b96eee7a4 100644 --- a/PocoDoc/PocoDoc_x64_vs90.vcproj +++ b/PocoDoc/PocoDoc_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> ${PocoBase}/PocoDoc/resources/css, + ${PocoBase}/PocoDoc/resources/js, ${PocoBase}/PocoDoc/resources/images, - ${PocoBase}/PocoDoc/resources/index.html, - ${PocoBase}/PocoDoc/resources/welcome.thtml, + ${PocoBase}/PocoDoc/resources/index.thtml, ${PocoBuild}/*/doc/images diff --git a/PocoDoc/cfg/mkdocumentation.xml b/PocoDoc/cfg/mkdocumentation.xml index 5269e64be..3fef56b23 100644 --- a/PocoDoc/cfg/mkdocumentation.xml +++ b/PocoDoc/cfg/mkdocumentation.xml @@ -23,10 +23,9 @@ ${PocoBase}/PocoDoc/resources/css, + ${PocoBase}/PocoDoc/resources/js, ${PocoBase}/PocoDoc/resources/images, - ${PocoBase}/PocoDoc/resources/platform/index.html, - ${PocoBase}/PocoDoc/resources/platform/welcome.thtml, - ${PocoBase}/PocoDoc/resources/platform/images, + ${PocoBase}/PocoDoc/resources/index.thtml, ${PocoBuild}/*/doc/images diff --git a/PocoDoc/resources/css/styles.css b/PocoDoc/resources/css/styles.css index 4a6122212..3d93e082b 100644 --- a/PocoDoc/resources/css/styles.css +++ b/PocoDoc/resources/css/styles.css @@ -1,446 +1 @@ -/* - * styles.css - * - * Style Sheet for Applied Informatics Documentation. - * - * Copyright (c) 2004-2007, Applied Informatics - * - */ - -body -{ - margin-top: 0; - margin-bottom: 0; - margin-left: 0; - margin-right: 0; - color: #000000; - background-color: #ffffff; -} - -p, h1, h2, h3, h4, h5, h6, ul, ol, li, td, th, address, blockquote, strong, b, emph, i -{ - font-family: "Trebuchet MS", Geneva, Arial, Helvetica, SunSans-Regular, sans-serif; -} - -p, ul, ol, address, blockquote, h6 -{ - color: black; - font-size: 9pt; - line-height: 12pt; - margin-top: 6px; - margin-bottom: 4px; -} - -h1 -{ - color: black; - font-size: 18pt; - font-weight: normal; - line-height: 22pt; - margin-top: 12px; - margin-right: 0; - margin-bottom: 12px; -} - -h1.category, h1.namespace -{ - font-size: 10pt; - font-weight: bold; - margin-top: 0px; - margin-bottom: 8px; - margin-left: 16px; - margin-right: 16px; - line-height: 10pt; - background: #0076B8; - color: white; -} - -h1.template -{ - font-size: 11pt; - margin-top: 0px; - margin-bottom: 0px; - margin-left: 16px; - margin-right: 16px; - line-height: 12pt; - background: #0076B8; - color: white; -} - -h1.title, h1.symbol -{ - font-size: 16pt; - margin-top: 0px; - margin-bottom: 0px; - margin-left: 16px; - margin-right: 16px; - line-height: 18pt; - background: #0076B8; - color: white; -} - -div.header -{ - margin-top: 0; - margin-left: 0; - margin-right: 0; - margin-bottom: 0; - background: #0076B8; - color: white; - padding-top: 8px; - padding-bottom: 8px; - border-bottom-width: 1px; - border-bottom-color: #012F50; - border-bottom-style: solid; -} - -div.body -{ - margin-top: 16px; - margin-left: 16px; - margin-right: 16px; -} - -pre -{ - color: #111; - background: #F4F4F4; - font-size: 8pt; - border-bottom-width: 1px; - border-bottom-color: #CCCCCC; - border-bottom-style: solid; - padding-top: 4px; - padding-bottom: 4px; - padding-left: 4px; - padding-right: 4px; -} - -h2 -{ - color: black; - font-size: 16px; - margin-top: 14px; - margin-bottom: 0; -} - -h3 -{ - color: black; - font-size: 10pt; - margin-top: 10px; - margin-right: 0; - margin-bottom: 0px; - background: #CCC; - border-bottom-width: 1px; - border-bottom-color: #AAA; - border-bottom-style: solid; - padding-left: 4px; - padding-right: 4px; - padding-top: 2px; - padding-bottom: 2px; -} - -h3.overview -{ - color: black; - font-size: 12pt; - margin-top: 0; - margin-right: 0; - margin-bottom: 0px; - background: white; - border-bottom-width: 0px; - padding-left: 0px; - padding-right: 0px; - padding-top: 0px; - padding-bottom: 0px; -} - -h4 -{ - color: black; - font-size: 10pt; - margin-top: 10px; - margin-bottom: 0; -} - -p.decl -{ - color: black; - font-size: 8pt; - line-height: 10pt; - margin-top: 0; - margin-right: 0; - margin-bottom: 0; - background: #DDD; - border-bottom-width: 1px; - border-bottom-color: #BBB; - border-bottom-style: solid; - padding-left: 4px; - padding-right: 4px; - padding-top: 3px; - padding-bottom: 3px; -} - -p.index -{ - font-size: 8pt; - line-height: 10pt; -} - -li -{ - font-size: 9pt; - color: #000000; - margin-left: 0px; - margin-bottom: 2px; - margin-top: 4px; -} - -ul -{ - padding-left: 0px; - margin-left: 2em; - list-style-type: disc; - list-style-position: outside; - list-style-image: url(../images/bullet.gif); - margin-top: 4px; -} - -div.toc ul -{ - padding-left: 0px; - margin-left: 2em; - list-style-type: disc; - list-style-position: outside; - list-style-image: url(../images/bullet.gif); - margin-top: 4px; -} - -li.level1 -{ - font-size: 9pt; - color: #000000; - margin-left: 0px; - margin-bottom: 2px; - margin-top: 2px; - font-weight: bold; -} - -li.level2 -{ - font-size: 9pt; - color: #000000; - margin-left: 16px; - margin-bottom: 2px; - margin-top: 2px; -} - -li.level3 -{ - font-size: 9pt; - color: #000000; - margin-left: 32px; - margin-bottom: 2px; - margin-top: 2px; -} - -strong, b -{ - font-weight: bold; -} - -emph, i -{ - font-style: italic; -} - -.address -{ - line-height: 11pt; - margin-bottom: 4px; -} - -.footer -{ - font-size: 7pt; - font-family: Verdana, Arial, Helvetica, sans-serif; - text-align: left; - line-height: 9pt; - margin-top: 16px; - margin-left: 0; - margin-right: 0; - margin-bottom: 10px; -} - -a:link -{ - color: #069; - text-decoration: underline; -} - -a:visited -{ - color: #069; - text-decoration: underline; -} - -a:active -{ - color: #069; - text-decoration: underline; -} - -a:hover -{ - color: #069; - text-decoration: underline; -} - -a.namespace:link -{ - color: white; - text-decoration: none; -} - -a.namespace:visited -{ - color: white; - text-decoration: none; -} - -a.namespace:active -{ - color: white; - text-decoration: underline; -} - -a.namespace:hover -{ - color: white; - text-decoration: underline; -} - -a.class:link -{ - color: black; - text-decoration: none; -} - -a.class:visited -{ - color: black; - text-decoration: none; -} - -a.class:active -{ - color: #069; - text-decoration: underline; -} - -a.class:hover -{ - color: #069; - text-decoration: underline; -} - -a.footer:link -{ - color: #069; - text-decoration: underline; -} - -a.footer:visited -{ - color: #069; - text-decoration: underline; -} - -a.footer:active -{ - color: #069; - text-decoration: underline; -} - -a.footer:hover -{ - color: #069; - text-decoration: underline; -} - -h3.overview a:link, h3.overview a:visited -{ - color: black; - text-decoration: none; -} - -h3.overview a:active, h3.overview a:hover -{ - color: #069; - text-decoration: none; -} - -h2 a:link, h3 a:link, h4 a:link -{ - color: black; - text-decoration: none; -} - -h2 a:visited, h3 a:visited, h4 a:visited -{ - color: black; - text-decoration: none; -} - -h2 a:active, h3 a:active, h4 a:active -{ - color: black; - text-decoration: none; -} - -h2 a:hover, h3 a:hover, h4 a:hover -{ - color: black; - text-decoration: none; -} - -li.level1 a:link, li.level2 a:link, li.level3 a:link -{ - color: #069; - text-decoration: underline; -} - -li.level1 a:visited, li.level2 a:visited, li.level3 a:visited -{ - color: #069; - text-decoration: underline; -} - -li.level1 a:active, li.level2 a:active, li.level3 a:active -{ - color: #069; - text-decoration: underline; -} - -li.level1 a:hover, li.level2 a:hover, li.level3 a:hover -{ - color: #069; - text-decoration: underline; -} - -.image -{ - margin-top: 10px; - margin-bottom: 10px; -} - -.imagecaption -{ - font-family: "Trebuchet MS", Geneva, Arial, Helvetica, SunSans-Regular, sans-serif; - color: black; - font-size: 9pt; - line-height: 12pt; - font-style: italic; - margin-top: 4px; - margin-bottom: 0px; -} +/* * styles.css * * Style Sheet for Applied Informatics Documentation. * * Copyright (c) 2004-2007, Applied Informatics * */ html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video { margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } /* HTML5 display-role reset for older browsers */ article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { display: block; } body { line-height: 1; } ol, ul { list-style: none; } blockquote, q { quotes: none; } blockquote:before, blockquote:after, q:before, q:after { content: ''; content: none; } table { border-collapse: collapse; border-spacing: 0; } body { margin: 0; color: #000000; background-color: #ffffff; font-weight: 300; font-size: 0.95em; line-height: 1.5em; } p, h1, h2, h3, h4, h5, h6, ul, ol, li, td, th, address, blockquote, strong, b, emph, i { font-family: "Trebuchet MS", Geneva, Arial, Helvetica, SunSans-Regular, sans-serif; } p, ul, ol, address, blockquote, h6 { color: black; font-size: 1em; line-height: 1.5em; margin-top: 1.0em; margin-bottom: 1.0em; } h1 { color: black; font-size: 1.5em; line-height: 2em; font-weight: 300; margin-top: 12px; margin-right: 0; margin-bottom: 12px; } h1.category, h1.namespace { font-size: 1.2em; line-height: 1.2em; font-weight: 300; margin-top: 0px; margin-bottom: 8px; margin-left: 16px; margin-right: 16px; background: #0076B8; color: white; } h1.title, h1.symbol { font-size: 1.5em; line-height: 1.2em; font-weight: 300; margin-top: 0; margin-bottom: 0; margin-left: 16px; margin-right: 16px; background: #0076B8; color: white; } h1.template { font-size: 1.2em; line-height: 1.2em; font-weight: 300; margin-top: 0; margin-bottom: 0; margin-left: 16px; margin-right: 16px; background: #0076B8; color: white; } div.header { margin-top: 0; margin-left: 0; margin-right: 0; margin-bottom: 10; background: #0076B8; color: white; padding-top: 8px; padding-bottom: 8px; border-bottom-width: 1px; border-bottom-color: #012F50; border-bottom-style: solid; } div.header img { padding-right: 20px; float: right; } img { vertical-align: baseline; } div.body { margin-top: 16px; margin-left: 0; margin-right: 0; } #navigation { position: absolute; left: 0; width: 300px; padding-left: 16px; padding-right: 16px; overflow-y: visible; border-right: 1px solid #aaa; } #navigation iframe { width: 300px; margin: 0; padding: 0; border: 0; overflow-y: visible; } #content { position: absolute; left: 332px; right: 0; padding-left: 16px; padding-right: 16px; min-width: 600px; border-left: 1px solid #aaa; } pre { color: #141414; background: #F4F4F4; font-size: 0.9em; line-height: 1.5em; font-family: "Lucida Console", "Monaco", Courier, "Courier New", monospace; border-bottom-width: 1px; border-bottom-color: #CCCCCC; border-bottom-style: solid; padding-top: 4px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; margin-top: 8px; margin-bottom: 32px; display: block; white-space: pre; overflow: auto; word-wrap: normal; } h2 { color: black; font-size: 1.25em; font-weight: 600; margin-top: 1.5em; margin-bottom: 0em; } h3 { color: black; font-size: 1.15em; font-weight: 600; margin-top: 1.0em; margin-right: 0; margin-bottom: 0; background: #CCC; border-bottom-width: 1px; border-bottom-color: #AAA; border-bottom-style: solid; padding-left: 4px; padding-right: 4px; padding-top: 2px; padding-bottom: 2px; } h3.overview { color: black; font-size: 1.25em; margin-top: 1.5em; margin-right: 0; margin-bottom: 0; background: white; border-bottom-width: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; padding-bottom: 0px; } h4 { color: #444; font-size: 1.1em; font-weight: 600; margin-top: 1.0em; margin-bottom: 0; } p.decl { color: black; font-size: 0.9em; line-height: 1.4em; margin-top: 0; margin-right: 0; margin-bottom: 0; background: #DDD; border-bottom-width: 1px; border-bottom-color: #BBB; border-bottom-style: solid; padding-left: 4px; padding-right: 4px; padding-top: 3px; padding-bottom: 3px; } p.index { font-size: 1em; line-height: 1.5em; } li { color: #000000; margin-left: 0px; margin-bottom: 2px; margin-top: 0px; } ul { padding-left: 0px; margin-left: 1.4em; list-style-type: disc; list-style-position: outside; list-style-image: url(../images/bullet.png); margin-top: 1em; margin-bottom: 1em; } ul ul { margin-top: 0.5em; margin-bottom: 0.5em; } div.toc ul { padding-left: 0px; margin-left: 1.4em; list-style-type: disc; list-style-position: outside; list-style-image: url(../images/bullet.png); margin-top: 1em; margin-bottom: 1em; } div.toc ul ul { margin-top: 0.0em; margin-bottom: 0.0em; } .collapsibleList > li { list-style-image: url(../images/triangle_left.png); cursor: auto; } li.collapsibleListOpen { list-style-image: url(../images/triangle_down.png); cursor: pointer; } li.collapsibleListClosed { list-style-image: url(../images/triangle_left.png); cursor: pointer; } li.level1 { color: #000000; margin-left: 0; margin-bottom: 2px; margin-top: 2px; font-weight: 600; } li.level2 { color: #000000; margin-left: 0; margin-bottom: 2px; margin-top: 2px; font-weight: 300; } li.level3 { color: #000000; margin-left: 0; margin-bottom: 2px; margin-top: 2px; font-weight: 300; } table { margin-top: 1em; margin-bottom: 1em; } td { padding-right: 2em; padding-left: 0; padding-top: 0.4em; padding-bottom: 0.4em; } strong, b { font-weight: 900; } emph, i { font-style: italic; } .address { line-height: 11pt; margin-bottom: 4px; } .footer { font-size: 0.8em; font-family: Verdana, Arial, Helvetica, sans-serif; text-align: left; line-height: 1.4em; margin-top: 32px; margin-left: 0; margin-right: 0; margin-bottom: 10px; } a:link { color: #138AC4; text-decoration: underline; } a:visited { color: #138AC4; text-decoration: underline; } a:active { color: #138AC4; text-decoration: underline; } a:hover { color: #138AC4; text-decoration: underline; } a.namespace:link { color: white; text-decoration: none; } a.namespace:visited { color: white; text-decoration: none; } a.namespace:active { color: white; text-decoration: underline; } a.namespace:hover { color: white; text-decoration: underline; } a.class:link { color: black; text-decoration: none; } a.class:visited { color: black; text-decoration: none; } a.class:active { color: #138AC4; text-decoration: underline; } a.class:hover { color: #138AC4; text-decoration: underline; } a.footer:link { color: #138AC4; text-decoration: underline; } a.footer:visited { color: #138AC4; text-decoration: underline; } a.footer:active { color: #138AC4; text-decoration: underline; } a.footer:hover { color: #138AC4; text-decoration: underline; } h3.overview a:link, h3.overview a:visited { color: black; text-decoration: none; } h3.overview a:active, h3.overview a:hover { color: #138AC4; text-decoration: none; } h2 a:link, h3 a:link, h4 a:link { color: black; text-decoration: none; } h2 a:visited, h3 a:visited, h4 a:visited { color: black; text-decoration: none; } h2 a:active, h3 a:active, h4 a:active { color: black; text-decoration: none; } h2 a:hover, h3 a:hover, h4 a:hover { color: black; text-decoration: none; } li.level1 a:link, li.level2 a:link, li.level3 a:link { color: #138AC4; text-decoration: underline; } li.level1 a:visited, li.level2 a:visited, li.level3 a:visited { color: #138AC4; text-decoration: underline; } li.level1 a:active, li.level2 a:active, li.level3 a:active { color: #138AC4; text-decoration: underline; } li.level1 a:hover, li.level2 a:hover, li.level3 a:hover { color: #138AC4; text-decoration: underline; } .image { margin-top: 10px; margin-bottom: 10px; } .imagecaption { font-family: "Trebuchet MS", Geneva, Arial, Helvetica, SunSans-Regular, sans-serif; color: black; font-size: 0.8em; line-height: 1.4em; font-style: italic; margin-top: 4px; margin-bottom: 0px; } \ No newline at end of file diff --git a/PocoDoc/resources/go.php b/PocoDoc/resources/go.php deleted file mode 100644 index ad2271c11..000000000 --- a/PocoDoc/resources/go.php +++ /dev/null @@ -1,30 +0,0 @@ - - - - -POCO C++ Libraries - - - - - - - - - -<h1>Frames Required</h1> -<p>This document is designed to be viewed using the frames feature. -If you see this message, you are using a non-frame-capable web client.</p> - - diff --git a/PocoDoc/resources/images/arrow.gif b/PocoDoc/resources/images/arrow.gif deleted file mode 100644 index 191c7cfa6..000000000 Binary files a/PocoDoc/resources/images/arrow.gif and /dev/null differ diff --git a/PocoDoc/resources/images/arrow.png b/PocoDoc/resources/images/arrow.png new file mode 100644 index 000000000..48dee5070 Binary files /dev/null and b/PocoDoc/resources/images/arrow.png differ diff --git a/PocoDoc/resources/images/bullet.gif b/PocoDoc/resources/images/bullet.gif deleted file mode 100644 index 0bd6fca23..000000000 Binary files a/PocoDoc/resources/images/bullet.gif and /dev/null differ diff --git a/PocoDoc/resources/images/bullet.png b/PocoDoc/resources/images/bullet.png new file mode 100644 index 000000000..ed9915653 Binary files /dev/null and b/PocoDoc/resources/images/bullet.png differ diff --git a/PocoDoc/resources/images/inline.gif b/PocoDoc/resources/images/inline.gif deleted file mode 100644 index bcc711896..000000000 Binary files a/PocoDoc/resources/images/inline.gif and /dev/null differ diff --git a/PocoDoc/resources/images/inline.png b/PocoDoc/resources/images/inline.png new file mode 100644 index 000000000..4744ead9f Binary files /dev/null and b/PocoDoc/resources/images/inline.png differ diff --git a/PocoDoc/resources/images/protected.gif b/PocoDoc/resources/images/protected.gif deleted file mode 100644 index 2cc9bdc5b..000000000 Binary files a/PocoDoc/resources/images/protected.gif and /dev/null differ diff --git a/PocoDoc/resources/images/protected.png b/PocoDoc/resources/images/protected.png new file mode 100644 index 000000000..a373d0fdf Binary files /dev/null and b/PocoDoc/resources/images/protected.png differ diff --git a/PocoDoc/resources/images/static.gif b/PocoDoc/resources/images/static.gif deleted file mode 100644 index 4f2222f22..000000000 Binary files a/PocoDoc/resources/images/static.gif and /dev/null differ diff --git a/PocoDoc/resources/images/static.png b/PocoDoc/resources/images/static.png new file mode 100644 index 000000000..305b45f9b Binary files /dev/null and b/PocoDoc/resources/images/static.png differ diff --git a/PocoDoc/resources/images/triangle_down.png b/PocoDoc/resources/images/triangle_down.png new file mode 100644 index 000000000..9212dba66 Binary files /dev/null and b/PocoDoc/resources/images/triangle_down.png differ diff --git a/PocoDoc/resources/images/triangle_left.png b/PocoDoc/resources/images/triangle_left.png new file mode 100644 index 000000000..b0a32fdb6 Binary files /dev/null and b/PocoDoc/resources/images/triangle_left.png differ diff --git a/PocoDoc/resources/images/virtual.gif b/PocoDoc/resources/images/virtual.gif deleted file mode 100644 index e475060ed..000000000 Binary files a/PocoDoc/resources/images/virtual.gif and /dev/null differ diff --git a/PocoDoc/resources/images/virtual.png b/PocoDoc/resources/images/virtual.png new file mode 100644 index 000000000..d447e8c9c Binary files /dev/null and b/PocoDoc/resources/images/virtual.png differ diff --git a/PocoDoc/resources/index.html b/PocoDoc/resources/index.html deleted file mode 100644 index ce640d469..000000000 --- a/PocoDoc/resources/index.html +++ /dev/null @@ -1,18 +0,0 @@ - - - -POCO C++ Libraries - - - - - - - - - -<h1>Frames Required</h1> -<p>This document is designed to be viewed using the frames feature. -If you see this message, you are using a non-frame-capable web client.</p> - - diff --git a/PocoDoc/resources/index.thtml b/PocoDoc/resources/index.thtml new file mode 100644 index 000000000..715b253a1 --- /dev/null +++ b/PocoDoc/resources/index.thtml @@ -0,0 +1,32 @@ + + + +${PocoDoc.software} - Reference Library + + + + + + + +
    +

    ${PocoDoc.software}

    +

    Reference Library

    +
    +
    + +
    +

    User Guides And Tutorials

    +${PocoDoc.pageIndex} + +

    API Reference by Namespace

    +${PocoDoc.nameSpaceIndex} + + +
    +
    + + diff --git a/PocoDoc/resources/js/CollapsibleLists.compressed.js b/PocoDoc/resources/js/CollapsibleLists.compressed.js new file mode 100644 index 000000000..2adcd52d0 --- /dev/null +++ b/PocoDoc/resources/js/CollapsibleLists.compressed.js @@ -0,0 +1,16 @@ +/* + +CollapsibleLists.js + +An object allowing lists to dynamically expand and collapse + +Created by Stephen Morley - http://code.stephenmorley.org/ - and released under +the terms of the CC0 1.0 Universal legal code: + +http://creativecommons.org/publicdomain/zero/1.0/legalcode + +Modified by Guenter Obiltschnig (added expansion via URI query string) + +*/ + +var CollapsibleLists=new function(){function e(e){var t=e.getElementsByTagName("ul");for(var n=0;n0){e.className+=" collapsibleList"+(open?"Open":"Closed")}}function t(e){return function(t){if(!t)t=window.event;var r=t.target?t.target:t.srcElement;while(r.nodeName!="LI")r=r.parentNode;if(r==e)n(e)}}function n(e){var t=e.className.match(/(^| )collapsibleListClosed( |$)/);var n=e.getElementsByTagName("ul");for(var r=0;r0){e.className+=" collapsibleList"+(t?"Open":"Closed")}}function r(e){e=e.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");var t=new RegExp("[\\?&]"+e+"=([^&#]*)"),n=t.exec(location.search);return n===null?"":decodeURIComponent(n[1].replace(/\+/g," "))}this.apply=function(t){var n=document.getElementsByTagName("ul");for(var i=0;iY?q():a():(d("MutationObserver not supported in this browser!"),q())}function t(){function a(a){function b(a){var b=/^\d+(px)?$/i;if(b.test(a))return parseInt(a,K);var d=c.style.left,e=c.runtimeStyle.left;return c.runtimeStyle.left=c.currentStyle.left,c.style.left=a||0,a=c.style.pixelLeft,c.style.left=d,c.runtimeStyle.left=e,a}var c=document.body,d=0;return"defaultView"in document&&"getComputedStyle"in document.defaultView?(d=document.defaultView.getComputedStyle(c,null),d=null!==d?d[a]:0):d=b(c.currentStyle[a]),parseInt(d,K)}return document.body.offsetHeight+a("marginTop")+a("marginBottom")}function u(){return document.body.scrollHeight}function v(){return document.documentElement.offsetHeight}function w(){return document.documentElement.scrollHeight}function x(){for(var a=document.querySelectorAll("body *"),b=a.length,d=0,e=(new Date).getTime(),f=0;b>f;f++)a[f].getBoundingClientRect().bottom>d&&(d=a[f].getBoundingClientRect().bottom);return e=(new Date).getTime()-e,c("Parsed "+b+" HTML elements"),c("LowestElement bottom position calculated in "+e+"ms"),d}function y(){return[t(),u(),v(),w()]}function z(){return Math.max.apply(null,y())}function A(){return Math.min.apply(null,y())}function B(){return Math.max(t(),x())}function C(){return Math.max(document.documentElement.scrollWidth,document.body.scrollWidth)}function D(a,b,d,e){function f(){a in{reset:1,resetPage:1,init:1}||c("Trigger event: "+b)}function g(){S=n,ib=o,H(S,ib,a)}function h(){return gb&&a in Q}function i(){function a(a,b){var c=Math.abs(a-b)<=fb;return!c}return n=void 0!==d?d:jb[V](),o=void 0!==e?e:C(),a(S,n)||P&&a(ib,o)}function j(){return!(a in{init:1,interval:1,size:1})}function k(){return V in cb}function l(){c("No change in size detected")}function m(){j()&&k()?G(b):a in{interval:1}||(f(),l())}var n,o;h()?c("Trigger event cancelled: "+a):i()?(f(),E(),g()):m()}function E(){gb||(gb=!0,c("Trigger event lock on")),clearTimeout(hb),hb=setTimeout(function(){gb=!1,c("Trigger event lock off"),c("--")},R)}function F(a){S=jb[V](),ib=C(),H(S,ib,a)}function G(a){var b=V;V=U,c("Reset trigger event: "+a),E(),F("reset"),V=b}function H(a,b,d,e,f){function g(){void 0===f?f=db:c("Message targetOrigin: "+f)}function h(){var g=a+":"+b,h=ab+":"+g+":"+d+(void 0!==e?":"+e:"");c("Sending message to host page ("+h+")"),eb.postMessage($+h,f)}g(),h()}function I(a){function b(){return $===(""+a.data).substr(0,_)}function f(){X=a.data,eb=a.source,e(),T=!1,setTimeout(function(){W=!1},R)}function g(){W?c("Page reset ignored by init"):(c("Page size reset by host page"),F("resetPage"))}function h(){return a.data.split("]")[1]}function i(){return"iFrameResize"in window}function j(){return a.data.split(":")[2]in{"true":1,"false":1}}b()&&(T&&j()?f():"reset"===h()?g():a.data===X||i()||d("Unexpected message ("+a.data+")"))}var J=!0,K=10,L="",M=0,N="",O="",P=!1,Q={resize:1,click:1},R=128,S=1,T=!0,U="offset",V=U,W=!0,X="",Y=32,Z=!1,$="[iFrameSizer]",_=$.length,ab="",bb=!1,cb={max:1,scroll:1,bodyScroll:1,documentElementScroll:1},db="*",eb=window.parent,fb=0,gb=!1,hb=null,ib=1,jb={offset:t,bodyOffset:t,bodyScroll:u,documentElementOffset:v,scroll:w,documentElementScroll:w,max:z,min:A,grow:z,lowestElement:B};a(window,"message",I)}(); +//# sourceMappingURL=../src/iframeResizer.contentWindow.map \ No newline at end of file diff --git a/PocoDoc/resources/js/iframeResizer.min.js b/PocoDoc/resources/js/iframeResizer.min.js new file mode 100755 index 000000000..7ed1bae0e --- /dev/null +++ b/PocoDoc/resources/js/iframeResizer.min.js @@ -0,0 +1,9 @@ +/*! iFrame Resizer (iframeSizer.min.js ) - v2.6.2 - 2014-10-11 + * Desc: Force cross domain iframes to size to content. + * Requires: iframeResizer.contentWindow.min.js to be loaded into the target frame. + * Copyright: (c) 2014 David J. Bradshaw - dave@bradshaw.net + * License: MIT + */ + +!function(){"use strict";function a(a,b,c){"addEventListener"in window?a.addEventListener(b,c,!1):"attachEvent"in window&&a.attachEvent("on"+b,c)}function b(){var a,b=["moz","webkit","o","ms"];for(a=0;ab)throw new Error("Value for min"+a+" can not be greater than max"+a);c(" Checking "+e+" is in range "+d+"-"+b),d>f&&(f=d,c(" Set "+e+" to min value")),f>b&&(f=b,c(" Set "+e+" to max value")),z[e]=""+f}function k(){var b=a.origin,d=z.iframe.src.split("/").slice(0,3).join("/");if(y.checkOrigin&&(c(" Checking connection is from: "+d),""+b!="null"&&b!==d))throw new Error("Unexpected message received from: "+b+" for "+z.iframe.id+". Message was: "+a.data+". This error can be disabled by adding the checkOrigin: false option.");return!0}function l(){return s===(""+x).substr(0,t)}function m(){var a=z.type in{"true":1,"false":1};return a&&c(" Ignoring init message from meta parent page"),a}function n(){var a=x.substr(x.indexOf(":")+r+6);c(" MessageCallback passed: {iframe: "+z.iframe.id+", message: "+a+"}"),y.messageCallback({iframe:z.iframe,message:a}),c(" --")}function o(){if(null===z.iframe)throw new Error("iFrame ("+z.id+") does not exist on "+u);return!0}function q(){c(" Reposition requested from iFrame"),v={x:z.width,y:z.height},f()}function w(){switch(z.type){case"close":d(z.iframe),y.resizedCallback(z);break;case"message":n();break;case"scrollTo":q();break;case"reset":g(z);break;case"init":b(),y.initCallback(z.iframe);break;default:b()}}var x=a.data,z={};l()&&(c(" Received: "+x),z=e(),j("Height"),j("Width"),!m()&&o()&&k()&&(w(),p=!1))}function e(){null===v&&(v={x:void 0!==window.pageXOffset?window.pageXOffset:document.documentElement.scrollLeft,y:void 0!==window.pageYOffset?window.pageYOffset:document.documentElement.scrollTop},c(" Get position: "+v.x+","+v.y))}function f(){null!==v&&(window.scrollTo(v.x,v.y),c(" Set position: "+v.x+","+v.y),v=null)}function g(a){function b(){h(a),j("reset","reset",a.iframe)}c(" Size reset requested by "+("init"===a.type?"host page":"iFrame")),e(),i(b,a,"init")}function h(a){function b(b){a.iframe.style[b]=a[b]+"px",c(" IFrame ("+a.iframe.id+") "+b+" set to "+a[b]+"px")}y.sizeHeight&&b("height"),y.sizeWidth&&b("width")}function i(a,b,d){d!==b.type&&w?(c(" Requesting animation frame"),w(a)):a()}function j(a,b,d){c("["+a+"] Sending msg to iframe ("+b+")"),d.contentWindow.postMessage(s+b,"*")}function k(){function b(){function a(a){1/0!==y[a]&&0!==y[a]&&(k.style[a]=y[a]+"px",c(" Set "+a+" = "+y[a]+"px"))}a("maxHeight"),a("minHeight"),a("maxWidth"),a("minWidth")}function d(a){return""===a&&(k.id=a="iFrameResizer"+o++,c(" Added missing iframe ID: "+a+" ("+k.src+")")),a}function e(){c(" IFrame scrolling "+(y.scrolling?"enabled":"disabled")+" for "+l),k.style.overflow=!1===y.scrolling?"hidden":"auto",k.scrolling=!1===y.scrolling?"no":"yes"}function f(){("number"==typeof y.bodyMargin||"0"===y.bodyMargin)&&(y.bodyMarginV1=y.bodyMargin,y.bodyMargin=""+y.bodyMargin+"px")}function h(){return l+":"+y.bodyMarginV1+":"+y.sizeWidth+":"+y.log+":"+y.interval+":"+y.enablePublicMethods+":"+y.autoResize+":"+y.bodyMargin+":"+y.heightCalculationMethod+":"+y.bodyBackground+":"+y.bodyPadding+":"+y.tolerance}function i(b){a(k,"load",function(){var a=p;j("iFrame.onload",b,k),!a&&y.heightCalculationMethod in x&&g({iframe:k,height:0,width:0,type:"init"})}),j("init",b,k)}var k=this,l=d(k.id);e(),b(),f(),i(h())}function l(a){if("object"!=typeof a)throw new TypeError("Options is not an object.")}function m(){function a(a){if("IFRAME"!==a.tagName.toUpperCase())throw new TypeError("Expected \n"; + ostr << "\n"; +} + + void DocWriter::beginBody(std::ostream& ostr) { ostr << "
    \n"; @@ -777,6 +810,18 @@ void DocWriter::endBody(std::ostream& ostr) } +void DocWriter::beginContent(std::ostream& ostr) +{ + ostr << "
    \n"; +} + + +void DocWriter::endContent(std::ostream& ostr) +{ + ostr << "\n
    \n"; +} + + void DocWriter::writeDescription(std::ostream& ostr, const std::string& text) { ostr << "
    \n" @@ -959,7 +1004,7 @@ void DocWriter::writeSummary(std::ostream& ostr, const std::string& text, const if (!uri.empty()) { ostr << " "; - writeImageLink(ostr, uri, "arrow.gif", tr("more")); + writeImageLink(ostr, uri, "arrow.png", tr("more")); } ostr << "

    \n"; } @@ -1024,7 +1069,7 @@ void DocWriter::writeText(std::ostream& ostr, const std::string& text) ++it; } while (it != end && std::isspace(*it)) ++it; - ostr << "

    <" << heading << ">" << format("", _titleId++) << htmlize(std::string(it, end)) << "

    " << std::endl; + ostr << "

    <" << heading << ">" << format("", _titleId++) << htmlize(std::string(it, end)) << "

    " << std::endl; return; } } @@ -1954,7 +1999,7 @@ void DocWriter::writeTargetLink(std::ostream& ostr, const std::string& uri, cons void DocWriter::writeImageLink(std::ostream& ostr, const std::string& uri, const std::string& image, const std::string& alt) { ostr << ""; - ostr << "\"" "; + ostr << "\"" "; ostr << ""; } @@ -1962,7 +2007,7 @@ void DocWriter::writeImageLink(std::ostream& ostr, const std::string& uri, const void DocWriter::writeImage(std::ostream& ostr, const std::string& uri, const std::string& caption) { ostr << "

    " << std::endl; - ostr << "\"" " << std::endl; + ostr << "\"" " << std::endl; if (!caption.empty()) { ostr << "
    " << htmlize(caption) << "
    "; @@ -1973,13 +2018,13 @@ void DocWriter::writeImage(std::ostream& ostr, const std::string& uri, const std void DocWriter::writeIcon(std::ostream& ostr, const std::string& icon) { - ostr << " \"" "; + ostr << " \"" "; } void DocWriter::writeAnchor(std::ostream& ostr, const std::string& text, const Symbol* pSymbol) { - ostr << "id() << "\">" << htmlize(text) << ""; + ostr << "id() << "\">" << htmlize(text) << ""; } @@ -2134,15 +2179,19 @@ void DocWriter::writePage(Page& page) std::string path(pathFor(page.fileName)); std::ofstream ostr(path.c_str()); if (!ostr.good()) throw Poco::CreateFileException(path); - writeHeader(ostr, title); + writeHeader(ostr, title, "js/iframeResizer.min.js"); writeTitle(ostr, tr(category), title); beginBody(ostr); + writeNavigationFrame(ostr, "category", category); + beginContent(ostr); if (!toc.empty()) { writeTOC(ostr, toc); } writeDescription(ostr, text); writeCopyright(ostr); + endContent(ostr); + endBody(ostr); writeFooter(ostr); } @@ -2181,12 +2230,34 @@ void DocWriter::scanTOC(const std::string& text, TOC& toc) void DocWriter::writeTOC(std::ostream& ostr, const TOC& toc) { ostr << "

    " << tr("TOC") << "

    " << std::endl; - ostr << "
      " << std::endl; + ostr << "
      " << std::endl; + int lastLevel = 0; for (TOC::const_iterator it = toc.begin(); it != toc.end(); ++it) { - ostr << "
    • level << "\">id << "\">" << htmlize(it->title) << "
    • " << std::endl; + int level = it->level; + if (level > lastLevel) + { + ostr << "
        " << std::endl; + } + else if (level < lastLevel) + { + for (int i = level; i < lastLevel; i++) + { + ostr << "
      " << std::endl; + } + } + else + { + ostr << "" << std::endl; + } + ostr << "
    • id << "\">" << htmlize(it->title) << "" << std::endl; + lastLevel = level; } - ostr << "
    " << std::endl; + while (lastLevel-- > 1) + { + ostr << "
  • " << std::endl; + } + ostr << "
  • " << std::endl; } @@ -2196,7 +2267,8 @@ void DocWriter::writeCategoryIndex(const std::string& category, const std::strin if (!ostr.good()) throw Poco::CreateFileException(fileName); writeHeader(ostr, tr(category)); beginBody(ostr); - writeCategoryIndex(ostr, category, "detailsFrame"); + ostr << "

    " << htmlize(tr(category)) << "

    "; + writeCategoryIndex(ostr, category, "_top"); endBody(ostr); writeFooter(ostr); } @@ -2204,9 +2276,7 @@ void DocWriter::writeCategoryIndex(const std::string& category, const std::strin void DocWriter::writeCategoryIndex(std::ostream& ostr, const std::string& category, const std::string& target) { - ostr << "

    " << htmlize(tr(category)) << "

    "; - ostr << "
      "; - + ostr << "
        \n"; for (PageMap::const_iterator it = _pages.begin(); it != _pages.end(); ++it) { if (it->second.category == category) @@ -2216,7 +2286,7 @@ void DocWriter::writeCategoryIndex(std::ostream& ostr, const std::string& catego ostr << "\n"; } } - ostr << "
      "; + ostr << "
    \n"; } diff --git a/PocoDoc/src/DocWriter.h b/PocoDoc/src/DocWriter.h index 9342cb4bc..7f1943cb7 100644 --- a/PocoDoc/src/DocWriter.h +++ b/PocoDoc/src/DocWriter.h @@ -1,7 +1,7 @@ // // DocWriter.h // -// $Id: //poco/1.4/PocoDoc/src/DocWriter.h#1 $ +// $Id: //poco/1.4/PocoDoc/src/DocWriter.h#2 $ // // Definition of the DocWriter class. // @@ -108,10 +108,8 @@ protected: void writeClass(const Poco::CppParser::Struct* pStruct); void writeNameSpace(const Poco::CppParser::NameSpace* pNameSpace); - void writeOverview(); - void writeIndex(); - void writeNameSpaceIndex(const Poco::CppParser::NameSpace* pNameSpace); - void writePackageIndex(const std::string& file, const std::string& library, const std::string& package); + void writeNavigation(); + void writePackage(const std::string& file, const std::string& library, const std::string& package); std::string pathFor(const std::string& file); static std::string fileNameFor(const Poco::CppParser::Symbol* pNameSpace); @@ -121,7 +119,8 @@ protected: static std::string headerFor(const Poco::CppParser::Symbol* pSymbol); static std::string titleFor(const Poco::CppParser::Symbol* pSymbol); - void writeHeader(std::ostream& ostr, const std::string& title); + void writeHeader(std::ostream& ostr, const std::string& title, const std::string& extraScript = ""); + void writeNavigationFrame(std::ostream& ostr, const std::string& group, const std::string& item); static void writeFooter(std::ostream& ostr); void writeCopyright(std::ostream& ostr); static void writeTitle(std::ostream& ostr, const std::string& category, const std::string& title); @@ -129,6 +128,8 @@ protected: static void writeSubTitle(std::ostream& ostr, const std::string& title); static void beginBody(std::ostream& ostr); static void endBody(std::ostream& ostr); + static void beginContent(std::ostream& ostr); + static void endContent(std::ostream& ostr); void writeDescription(std::ostream& ostr, const std::string& text); void writeDescriptionLine(std::ostream& ostr, const std::string& text, TextState& state); void writeSummary(std::ostream& ostr, const std::string& text, const std::string& uri); diff --git a/PocoDoc/src/PocoDoc.cpp b/PocoDoc/src/PocoDoc.cpp index 5cd689a7f..a734fd8a1 100644 --- a/PocoDoc/src/PocoDoc.cpp +++ b/PocoDoc/src/PocoDoc.cpp @@ -3,7 +3,7 @@ // // $Id: //poco/1.4/PocoDoc/src/PocoDoc.cpp#2 $ // -// Copyright (c) 2005-2007, Applied Informatics Software Engineering GmbH. +// Copyright (c) 2005-2014, Applied Informatics Software Engineering GmbH. // and Contributors. // // SPDX-License-Identifier: BSL-1.0 diff --git a/ProGen/ProGen_vs100.vcxproj b/ProGen/ProGen_vs100.vcxproj index 2fc9cb045..ad57dd002 100644 --- a/ProGen/ProGen_vs100.vcxproj +++ b/ProGen/ProGen_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\ProGen\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\ProGen\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\ProGen\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\ProGen\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\ProGen\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\ProGen\$(Configuration)\ false progend progend @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions)
    ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\progend.pdb Console MachineX86 + %(AdditionalOptions)
    @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions)
    ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions)
    @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\progend.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\progend.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/ProGen/ProGen_vs100.vcxproj.filters b/ProGen/ProGen_vs100.vcxproj.filters index 20048a4d8..7e6ff0d59 100644 --- a/ProGen/ProGen_vs100.vcxproj.filters +++ b/ProGen/ProGen_vs100.vcxproj.filters @@ -2,13 +2,13 @@ - {92d832c8-b634-467c-90bf-4a2ff99b92d2} + {05b9c1cf-1cc3-4abb-bd8d-b9c4a1e11220} - {ecb07171-c8ab-4792-8ceb-3385754a84e4} + {513b2b32-4922-4619-8f51-61c2b352cdec} - {34f1e9c2-5372-4240-9474-25f436f44e7c} + {7f399574-9d4e-435e-ba8d-33ea7e3050e5} diff --git a/ProGen/ProGen_vs110.vcxproj b/ProGen/ProGen_vs110.vcxproj index 4a87e0951..e7c008a1f 100644 --- a/ProGen/ProGen_vs110.vcxproj +++ b/ProGen/ProGen_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\ProGen\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\ProGen\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\ProGen\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\ProGen\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\ProGen\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\ProGen\$(Configuration)\ false diff --git a/ProGen/ProGen_vs110.vcxproj.filters b/ProGen/ProGen_vs110.vcxproj.filters index 28dc3a8df..f2406a952 100644 --- a/ProGen/ProGen_vs110.vcxproj.filters +++ b/ProGen/ProGen_vs110.vcxproj.filters @@ -2,13 +2,13 @@ - {d75043a8-de01-400b-b711-081b63166a18} + {6f36d806-8888-45a1-8606-d366e0e8dc35} - {e9b43d86-38dd-40a5-a824-a9a80ea797f1} + {8430bf29-4e57-4db4-ba1d-600a6547b683} - {a3059927-141c-4f0a-9e24-006b875a7f39} + {a111f8a7-7150-4b16-9eeb-57d3db4a9e92} diff --git a/ProGen/ProGen_vs120.vcxproj b/ProGen/ProGen_vs120.vcxproj index c948ba46a..97c1bbd22 100644 --- a/ProGen/ProGen_vs120.vcxproj +++ b/ProGen/ProGen_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\ProGen\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\ProGen\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\ProGen\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\ProGen\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\ProGen\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\ProGen\$(Configuration)\ false diff --git a/ProGen/ProGen_vs120.vcxproj.filters b/ProGen/ProGen_vs120.vcxproj.filters index a9cca68f5..dce2792e7 100644 --- a/ProGen/ProGen_vs120.vcxproj.filters +++ b/ProGen/ProGen_vs120.vcxproj.filters @@ -2,13 +2,13 @@ - {444c955d-be7d-43f9-a547-bd64c51ba818} + {244e24e6-fba4-411a-8a29-72b82ec0ceeb} - {06d63c74-d3ae-4c69-b533-60fd71641e9d} + {e5704712-d99e-4be4-bae0-158a6e4e5a1e} - {dedf5828-8ae8-4878-ac45-3212a25098b9} + {4c163c48-cb6e-45ae-a005-308d0c5cf558} diff --git a/ProGen/ProGen_vs71.vcproj b/ProGen/ProGen_vs71.vcproj index cd8e95d16..baab1b23e 100644 --- a/ProGen/ProGen_vs71.vcproj +++ b/ProGen/ProGen_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\ProGen\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\ProGen\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\ProGen\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\ProGen\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\ProGen\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\ProGen\$(Configuration)\ false progend progend @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\progend.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\progend.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\progend.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/ProGen/ProGen_x64_vs100.vcxproj.filters b/ProGen/ProGen_x64_vs100.vcxproj.filters index a981020e7..e8609f7d7 100644 --- a/ProGen/ProGen_x64_vs100.vcxproj.filters +++ b/ProGen/ProGen_x64_vs100.vcxproj.filters @@ -2,13 +2,13 @@ - {4c5702e2-9e80-4237-98e8-18b334a38396} + {a6af43a8-bdb7-4e9d-a4a8-4421fb389045} - {517b5dc8-8ebc-4081-a57c-044fdae798a4} + {4c1cd4e6-47d1-445a-9e43-324e3315f855} - {a03d0760-cfdb-4f9a-abda-a60d0ce0bea6} + {6849da99-7b6d-4a4f-bc4b-c2ef57fa07da} diff --git a/ProGen/ProGen_x64_vs110.vcxproj b/ProGen/ProGen_x64_vs110.vcxproj index 532f3554c..5a6ff4c01 100644 --- a/ProGen/ProGen_x64_vs110.vcxproj +++ b/ProGen/ProGen_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\ProGen\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\ProGen\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\ProGen\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\ProGen\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\ProGen\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\ProGen\$(Configuration)\ false diff --git a/ProGen/ProGen_x64_vs110.vcxproj.filters b/ProGen/ProGen_x64_vs110.vcxproj.filters index fdabf4fde..63b967766 100644 --- a/ProGen/ProGen_x64_vs110.vcxproj.filters +++ b/ProGen/ProGen_x64_vs110.vcxproj.filters @@ -2,13 +2,13 @@ - {8d2b4c9b-0812-4698-9a6f-19ec60ba4fb5} + {c5a1bf06-0d0d-48c1-82b5-49b986650b77} - {80ad7c1c-15b5-4183-92d0-db623644d434} + {025205e4-e983-44bd-a687-d71b5140e7cd} - {600158f2-3726-4e0e-9451-5adf0696c823} + {157cf154-9f2c-4a8d-9ae6-d4177cacf576} diff --git a/ProGen/ProGen_x64_vs120.vcxproj b/ProGen/ProGen_x64_vs120.vcxproj index d380aec4b..3ae7dd020 100644 --- a/ProGen/ProGen_x64_vs120.vcxproj +++ b/ProGen/ProGen_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\ProGen\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\ProGen\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\ProGen\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\ProGen\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\ProGen\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\ProGen\$(Configuration)\ false diff --git a/ProGen/ProGen_x64_vs120.vcxproj.filters b/ProGen/ProGen_x64_vs120.vcxproj.filters index 300b4115b..3344b0515 100644 --- a/ProGen/ProGen_x64_vs120.vcxproj.filters +++ b/ProGen/ProGen_x64_vs120.vcxproj.filters @@ -2,13 +2,13 @@ - {00913cf2-97fa-47a6-9cac-b460954a8f90} + {2f0a8458-9aab-4eeb-afd5-aeef1005610f} - {2228444a-af40-47d4-8293-3c5209a49b15} + {8b297184-af86-42c5-9d8c-b32f6949d3b1} - {ababc171-7c3d-4c67-948a-95551ec81ff7} + {c2df847b-473f-444e-9648-94f7c799a4c2} diff --git a/ProGen/ProGen_x64_vs90.vcproj b/ProGen/ProGen_x64_vs90.vcproj index 0f41f2760..275321e0e 100644 --- a/ProGen/ProGen_x64_vs90.vcproj +++ b/ProGen/ProGen_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> diff --git a/ProGen/templates/vs100/Win32/executable/debug_static_md.template b/ProGen/templates/vs100/Win32/executable/debug_static_md.template index 18911d49f..c907586df 100644 --- a/ProGen/templates/vs100/Win32/executable/debug_static_md.template +++ b/ProGen/templates/vs100/Win32/executable/debug_static_md.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs100/Win32/executable/debug_static_mt.template b/ProGen/templates/vs100/Win32/executable/debug_static_mt.template index b2383cf10..9efbee4ed 100644 --- a/ProGen/templates/vs100/Win32/executable/debug_static_mt.template +++ b/ProGen/templates/vs100/Win32/executable/debug_static_mt.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs100/Win32/executable/release_shared.template b/ProGen/templates/vs100/Win32/executable/release_shared.template index 567fd23ea..e4c93717f 100644 --- a/ProGen/templates/vs100/Win32/executable/release_shared.template +++ b/ProGen/templates/vs100/Win32/executable/release_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs100/Win32/executable/release_static_md.template b/ProGen/templates/vs100/Win32/executable/release_static_md.template index f079a42ea..56f3b1d9a 100644 --- a/ProGen/templates/vs100/Win32/executable/release_static_md.template +++ b/ProGen/templates/vs100/Win32/executable/release_static_md.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs100/Win32/executable/release_static_mt.template b/ProGen/templates/vs100/Win32/executable/release_static_mt.template index f7598a889..6637f2a03 100644 --- a/ProGen/templates/vs100/Win32/executable/release_static_mt.template +++ b/ProGen/templates/vs100/Win32/executable/release_static_mt.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs100/Win32/library/debug_shared.template b/ProGen/templates/vs100/Win32/library/debug_shared.template index edd3e29ae..ce677746c 100644 --- a/ProGen/templates/vs100/Win32/library/debug_shared.template +++ b/ProGen/templates/vs100/Win32/library/debug_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs100/Win32/library/debug_static_md.template b/ProGen/templates/vs100/Win32/library/debug_static_md.template index 837c13d00..4f67e18e4 100644 --- a/ProGen/templates/vs100/Win32/library/debug_static_md.template +++ b/ProGen/templates/vs100/Win32/library/debug_static_md.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs100/Win32/library/debug_static_mt.template b/ProGen/templates/vs100/Win32/library/debug_static_mt.template index c9554e4ec..637356845 100644 --- a/ProGen/templates/vs100/Win32/library/debug_static_mt.template +++ b/ProGen/templates/vs100/Win32/library/debug_static_mt.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs100/Win32/library/release_shared.template b/ProGen/templates/vs100/Win32/library/release_shared.template index c0796c143..e4047bf4e 100644 --- a/ProGen/templates/vs100/Win32/library/release_shared.template +++ b/ProGen/templates/vs100/Win32/library/release_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs100/Win32/library/release_static_md.template b/ProGen/templates/vs100/Win32/library/release_static_md.template index 129b3caad..617131f98 100644 --- a/ProGen/templates/vs100/Win32/library/release_static_md.template +++ b/ProGen/templates/vs100/Win32/library/release_static_md.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs100/Win32/library/release_static_mt.template b/ProGen/templates/vs100/Win32/library/release_static_mt.template index babc05075..9f228a492 100644 --- a/ProGen/templates/vs100/Win32/library/release_static_mt.template +++ b/ProGen/templates/vs100/Win32/library/release_static_mt.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs100/Win32/plugin/debug_shared.template b/ProGen/templates/vs100/Win32/plugin/debug_shared.template index ff9a2c889..8d04dccbb 100644 --- a/ProGen/templates/vs100/Win32/plugin/debug_shared.template +++ b/ProGen/templates/vs100/Win32/plugin/debug_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs100/Win32/plugin/release_shared.template b/ProGen/templates/vs100/Win32/plugin/release_shared.template index c828a4a40..d0c86110f 100644 --- a/ProGen/templates/vs100/Win32/plugin/release_shared.template +++ b/ProGen/templates/vs100/Win32/plugin/release_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs100/Win32/testsuite/debug_shared.template b/ProGen/templates/vs100/Win32/testsuite/debug_shared.template index 2f4db8ebf..30945951e 100644 --- a/ProGen/templates/vs100/Win32/testsuite/debug_shared.template +++ b/ProGen/templates/vs100/Win32/testsuite/debug_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs100/x64/executable/debug_static_md.template b/ProGen/templates/vs100/x64/executable/debug_static_md.template index 36c93b6e0..69f43b343 100644 --- a/ProGen/templates/vs100/x64/executable/debug_static_md.template +++ b/ProGen/templates/vs100/x64/executable/debug_static_md.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs100/x64/executable/debug_static_mt.template b/ProGen/templates/vs100/x64/executable/debug_static_mt.template index 29d246c25..85424ca5c 100644 --- a/ProGen/templates/vs100/x64/executable/debug_static_mt.template +++ b/ProGen/templates/vs100/x64/executable/debug_static_mt.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs100/x64/executable/release_shared.template b/ProGen/templates/vs100/x64/executable/release_shared.template index 81406703b..f6a521206 100644 --- a/ProGen/templates/vs100/x64/executable/release_shared.template +++ b/ProGen/templates/vs100/x64/executable/release_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs100/x64/executable/release_static_md.template b/ProGen/templates/vs100/x64/executable/release_static_md.template index 52937f373..c2d84a470 100644 --- a/ProGen/templates/vs100/x64/executable/release_static_md.template +++ b/ProGen/templates/vs100/x64/executable/release_static_md.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs100/x64/executable/release_static_mt.template b/ProGen/templates/vs100/x64/executable/release_static_mt.template index f74494e1f..2ff4a24c4 100644 --- a/ProGen/templates/vs100/x64/executable/release_static_mt.template +++ b/ProGen/templates/vs100/x64/executable/release_static_mt.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs100/x64/library/debug_shared.template b/ProGen/templates/vs100/x64/library/debug_shared.template index d4a717b0d..69308d3cc 100644 --- a/ProGen/templates/vs100/x64/library/debug_shared.template +++ b/ProGen/templates/vs100/x64/library/debug_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs100/x64/library/debug_static_md.template b/ProGen/templates/vs100/x64/library/debug_static_md.template index a80b6e0d7..196774eb1 100644 --- a/ProGen/templates/vs100/x64/library/debug_static_md.template +++ b/ProGen/templates/vs100/x64/library/debug_static_md.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs100/x64/library/debug_static_mt.template b/ProGen/templates/vs100/x64/library/debug_static_mt.template index 7068a2f52..e04f4aeeb 100644 --- a/ProGen/templates/vs100/x64/library/debug_static_mt.template +++ b/ProGen/templates/vs100/x64/library/debug_static_mt.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs100/x64/library/release_shared.template b/ProGen/templates/vs100/x64/library/release_shared.template index 9b0dc937d..0016514ed 100644 --- a/ProGen/templates/vs100/x64/library/release_shared.template +++ b/ProGen/templates/vs100/x64/library/release_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs100/x64/library/release_static_md.template b/ProGen/templates/vs100/x64/library/release_static_md.template index 68e0ae3f3..913768ce1 100644 --- a/ProGen/templates/vs100/x64/library/release_static_md.template +++ b/ProGen/templates/vs100/x64/library/release_static_md.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs100/x64/library/release_static_mt.template b/ProGen/templates/vs100/x64/library/release_static_mt.template index b5e678e2b..b6eddb3b2 100644 --- a/ProGen/templates/vs100/x64/library/release_static_mt.template +++ b/ProGen/templates/vs100/x64/library/release_static_mt.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs100/x64/plugin/debug_shared.template b/ProGen/templates/vs100/x64/plugin/debug_shared.template index c6aa11b0c..3390a15db 100644 --- a/ProGen/templates/vs100/x64/plugin/debug_shared.template +++ b/ProGen/templates/vs100/x64/plugin/debug_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs100/x64/plugin/release_shared.template b/ProGen/templates/vs100/x64/plugin/release_shared.template index bbed02d0a..060d15350 100644 --- a/ProGen/templates/vs100/x64/plugin/release_shared.template +++ b/ProGen/templates/vs100/x64/plugin/release_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs100/x64/testsuite/debug_shared.template b/ProGen/templates/vs100/x64/testsuite/debug_shared.template index 86e2793b4..a21e1513d 100644 --- a/ProGen/templates/vs100/x64/testsuite/debug_shared.template +++ b/ProGen/templates/vs100/x64/testsuite/debug_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs110/Win32/executable/debug_static_md.template b/ProGen/templates/vs110/Win32/executable/debug_static_md.template index 18911d49f..c907586df 100644 --- a/ProGen/templates/vs110/Win32/executable/debug_static_md.template +++ b/ProGen/templates/vs110/Win32/executable/debug_static_md.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs110/Win32/executable/debug_static_mt.template b/ProGen/templates/vs110/Win32/executable/debug_static_mt.template index b2383cf10..9efbee4ed 100644 --- a/ProGen/templates/vs110/Win32/executable/debug_static_mt.template +++ b/ProGen/templates/vs110/Win32/executable/debug_static_mt.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs110/Win32/executable/release_shared.template b/ProGen/templates/vs110/Win32/executable/release_shared.template index 567fd23ea..e4c93717f 100644 --- a/ProGen/templates/vs110/Win32/executable/release_shared.template +++ b/ProGen/templates/vs110/Win32/executable/release_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs110/Win32/executable/release_static_md.template b/ProGen/templates/vs110/Win32/executable/release_static_md.template index f079a42ea..56f3b1d9a 100644 --- a/ProGen/templates/vs110/Win32/executable/release_static_md.template +++ b/ProGen/templates/vs110/Win32/executable/release_static_md.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs110/Win32/executable/release_static_mt.template b/ProGen/templates/vs110/Win32/executable/release_static_mt.template index f7598a889..6637f2a03 100644 --- a/ProGen/templates/vs110/Win32/executable/release_static_mt.template +++ b/ProGen/templates/vs110/Win32/executable/release_static_mt.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs110/Win32/library/debug_shared.template b/ProGen/templates/vs110/Win32/library/debug_shared.template index edd3e29ae..ce677746c 100644 --- a/ProGen/templates/vs110/Win32/library/debug_shared.template +++ b/ProGen/templates/vs110/Win32/library/debug_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs110/Win32/library/debug_static_md.template b/ProGen/templates/vs110/Win32/library/debug_static_md.template index 837c13d00..4f67e18e4 100644 --- a/ProGen/templates/vs110/Win32/library/debug_static_md.template +++ b/ProGen/templates/vs110/Win32/library/debug_static_md.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs110/Win32/library/debug_static_mt.template b/ProGen/templates/vs110/Win32/library/debug_static_mt.template index c9554e4ec..637356845 100644 --- a/ProGen/templates/vs110/Win32/library/debug_static_mt.template +++ b/ProGen/templates/vs110/Win32/library/debug_static_mt.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs110/Win32/library/release_shared.template b/ProGen/templates/vs110/Win32/library/release_shared.template index c0796c143..e4047bf4e 100644 --- a/ProGen/templates/vs110/Win32/library/release_shared.template +++ b/ProGen/templates/vs110/Win32/library/release_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs110/Win32/library/release_static_md.template b/ProGen/templates/vs110/Win32/library/release_static_md.template index 129b3caad..617131f98 100644 --- a/ProGen/templates/vs110/Win32/library/release_static_md.template +++ b/ProGen/templates/vs110/Win32/library/release_static_md.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs110/Win32/library/release_static_mt.template b/ProGen/templates/vs110/Win32/library/release_static_mt.template index babc05075..9f228a492 100644 --- a/ProGen/templates/vs110/Win32/library/release_static_mt.template +++ b/ProGen/templates/vs110/Win32/library/release_static_mt.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs110/Win32/plugin/debug_shared.template b/ProGen/templates/vs110/Win32/plugin/debug_shared.template index ff9a2c889..8d04dccbb 100644 --- a/ProGen/templates/vs110/Win32/plugin/debug_shared.template +++ b/ProGen/templates/vs110/Win32/plugin/debug_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs110/Win32/plugin/release_shared.template b/ProGen/templates/vs110/Win32/plugin/release_shared.template index c828a4a40..d0c86110f 100644 --- a/ProGen/templates/vs110/Win32/plugin/release_shared.template +++ b/ProGen/templates/vs110/Win32/plugin/release_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs110/Win32/testsuite/debug_shared.template b/ProGen/templates/vs110/Win32/testsuite/debug_shared.template index 2f4db8ebf..30945951e 100644 --- a/ProGen/templates/vs110/Win32/testsuite/debug_shared.template +++ b/ProGen/templates/vs110/Win32/testsuite/debug_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs110/WinCE/executable/debug_static_md.template b/ProGen/templates/vs110/WinCE/executable/debug_static_md.template index d2b5f3779..de6d8a05d 100644 --- a/ProGen/templates/vs110/WinCE/executable/debug_static_md.template +++ b/ProGen/templates/vs110/WinCE/executable/debug_static_md.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs110/WinCE/executable/debug_static_mt.template b/ProGen/templates/vs110/WinCE/executable/debug_static_mt.template index 6e50e55ff..2d0008db6 100644 --- a/ProGen/templates/vs110/WinCE/executable/debug_static_mt.template +++ b/ProGen/templates/vs110/WinCE/executable/debug_static_mt.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs110/WinCE/executable/release_shared.template b/ProGen/templates/vs110/WinCE/executable/release_shared.template index 138e322d8..8f782cda9 100644 --- a/ProGen/templates/vs110/WinCE/executable/release_shared.template +++ b/ProGen/templates/vs110/WinCE/executable/release_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs110/WinCE/executable/release_static_md.template b/ProGen/templates/vs110/WinCE/executable/release_static_md.template index dd9ff2842..59b8a738c 100644 --- a/ProGen/templates/vs110/WinCE/executable/release_static_md.template +++ b/ProGen/templates/vs110/WinCE/executable/release_static_md.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs110/WinCE/executable/release_static_mt.template b/ProGen/templates/vs110/WinCE/executable/release_static_mt.template index b8ce3c926..1a1f794cb 100644 --- a/ProGen/templates/vs110/WinCE/executable/release_static_mt.template +++ b/ProGen/templates/vs110/WinCE/executable/release_static_mt.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs110/WinCE/library/debug_shared.template b/ProGen/templates/vs110/WinCE/library/debug_shared.template index a73e76281..caddd0636 100644 --- a/ProGen/templates/vs110/WinCE/library/debug_shared.template +++ b/ProGen/templates/vs110/WinCE/library/debug_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs110/WinCE/library/debug_static_md.template b/ProGen/templates/vs110/WinCE/library/debug_static_md.template index 20f45cea5..c446c2320 100644 --- a/ProGen/templates/vs110/WinCE/library/debug_static_md.template +++ b/ProGen/templates/vs110/WinCE/library/debug_static_md.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs110/WinCE/library/debug_static_mt.template b/ProGen/templates/vs110/WinCE/library/debug_static_mt.template index 035551be1..c91723f5b 100644 --- a/ProGen/templates/vs110/WinCE/library/debug_static_mt.template +++ b/ProGen/templates/vs110/WinCE/library/debug_static_mt.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs110/WinCE/library/release_shared.template b/ProGen/templates/vs110/WinCE/library/release_shared.template index 89ef62c78..f0e7f3dec 100644 --- a/ProGen/templates/vs110/WinCE/library/release_shared.template +++ b/ProGen/templates/vs110/WinCE/library/release_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs110/WinCE/library/release_static_md.template b/ProGen/templates/vs110/WinCE/library/release_static_md.template index d0f67dfd8..b270d1b3e 100644 --- a/ProGen/templates/vs110/WinCE/library/release_static_md.template +++ b/ProGen/templates/vs110/WinCE/library/release_static_md.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs110/WinCE/library/release_static_mt.template b/ProGen/templates/vs110/WinCE/library/release_static_mt.template index ff234ac6a..8efcefee8 100644 --- a/ProGen/templates/vs110/WinCE/library/release_static_mt.template +++ b/ProGen/templates/vs110/WinCE/library/release_static_mt.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs110/WinCE/plugin/debug_shared.template b/ProGen/templates/vs110/WinCE/plugin/debug_shared.template index 3c336841f..7f42c744a 100644 --- a/ProGen/templates/vs110/WinCE/plugin/debug_shared.template +++ b/ProGen/templates/vs110/WinCE/plugin/debug_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs110/WinCE/plugin/release_shared.template b/ProGen/templates/vs110/WinCE/plugin/release_shared.template index 82cd3a2ba..586e9492f 100644 --- a/ProGen/templates/vs110/WinCE/plugin/release_shared.template +++ b/ProGen/templates/vs110/WinCE/plugin/release_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs110/WinCE/testsuite/debug_shared.template b/ProGen/templates/vs110/WinCE/testsuite/debug_shared.template index 955aedd7a..631d1e21a 100644 --- a/ProGen/templates/vs110/WinCE/testsuite/debug_shared.template +++ b/ProGen/templates/vs110/WinCE/testsuite/debug_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs110/WinCE/testsuite/debug_static_md.template b/ProGen/templates/vs110/WinCE/testsuite/debug_static_md.template index 66ad4ce74..026aae978 100644 --- a/ProGen/templates/vs110/WinCE/testsuite/debug_static_md.template +++ b/ProGen/templates/vs110/WinCE/testsuite/debug_static_md.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs110/WinCE/testsuite/debug_static_mt.template b/ProGen/templates/vs110/WinCE/testsuite/debug_static_mt.template index 751d2936c..c43b39613 100644 --- a/ProGen/templates/vs110/WinCE/testsuite/debug_static_mt.template +++ b/ProGen/templates/vs110/WinCE/testsuite/debug_static_mt.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs110/WinCE/testsuite/release_shared.template b/ProGen/templates/vs110/WinCE/testsuite/release_shared.template index 0accdc084..dee0fcfc6 100644 --- a/ProGen/templates/vs110/WinCE/testsuite/release_shared.template +++ b/ProGen/templates/vs110/WinCE/testsuite/release_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs110/WinCE/testsuite/release_static_md.template b/ProGen/templates/vs110/WinCE/testsuite/release_static_md.template index 5e45f3c8a..b332ec728 100644 --- a/ProGen/templates/vs110/WinCE/testsuite/release_static_md.template +++ b/ProGen/templates/vs110/WinCE/testsuite/release_static_md.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs110/WinCE/testsuite/release_static_mt.template b/ProGen/templates/vs110/WinCE/testsuite/release_static_mt.template index 159d69c2c..36f67d69a 100644 --- a/ProGen/templates/vs110/WinCE/testsuite/release_static_mt.template +++ b/ProGen/templates/vs110/WinCE/testsuite/release_static_mt.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs110/x64/executable/debug_shared.template b/ProGen/templates/vs110/x64/executable/debug_shared.template index 9b312a2f5..149a8b599 100644 --- a/ProGen/templates/vs110/x64/executable/debug_shared.template +++ b/ProGen/templates/vs110/x64/executable/debug_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs110/x64/executable/debug_static_md.template b/ProGen/templates/vs110/x64/executable/debug_static_md.template index 36c93b6e0..69f43b343 100644 --- a/ProGen/templates/vs110/x64/executable/debug_static_md.template +++ b/ProGen/templates/vs110/x64/executable/debug_static_md.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs110/x64/executable/debug_static_mt.template b/ProGen/templates/vs110/x64/executable/debug_static_mt.template index 29d246c25..85424ca5c 100644 --- a/ProGen/templates/vs110/x64/executable/debug_static_mt.template +++ b/ProGen/templates/vs110/x64/executable/debug_static_mt.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs110/x64/executable/release_shared.template b/ProGen/templates/vs110/x64/executable/release_shared.template index 81406703b..f6a521206 100644 --- a/ProGen/templates/vs110/x64/executable/release_shared.template +++ b/ProGen/templates/vs110/x64/executable/release_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs110/x64/executable/release_static_md.template b/ProGen/templates/vs110/x64/executable/release_static_md.template index 52937f373..c2d84a470 100644 --- a/ProGen/templates/vs110/x64/executable/release_static_md.template +++ b/ProGen/templates/vs110/x64/executable/release_static_md.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs110/x64/executable/release_static_mt.template b/ProGen/templates/vs110/x64/executable/release_static_mt.template index f74494e1f..2ff4a24c4 100644 --- a/ProGen/templates/vs110/x64/executable/release_static_mt.template +++ b/ProGen/templates/vs110/x64/executable/release_static_mt.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs110/x64/library/debug_shared.template b/ProGen/templates/vs110/x64/library/debug_shared.template index d4a717b0d..69308d3cc 100644 --- a/ProGen/templates/vs110/x64/library/debug_shared.template +++ b/ProGen/templates/vs110/x64/library/debug_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs110/x64/library/debug_static_md.template b/ProGen/templates/vs110/x64/library/debug_static_md.template index a80b6e0d7..196774eb1 100644 --- a/ProGen/templates/vs110/x64/library/debug_static_md.template +++ b/ProGen/templates/vs110/x64/library/debug_static_md.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs110/x64/library/debug_static_mt.template b/ProGen/templates/vs110/x64/library/debug_static_mt.template index 7068a2f52..e04f4aeeb 100644 --- a/ProGen/templates/vs110/x64/library/debug_static_mt.template +++ b/ProGen/templates/vs110/x64/library/debug_static_mt.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs110/x64/library/release_shared.template b/ProGen/templates/vs110/x64/library/release_shared.template index 9b0dc937d..0016514ed 100644 --- a/ProGen/templates/vs110/x64/library/release_shared.template +++ b/ProGen/templates/vs110/x64/library/release_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs110/x64/library/release_static_md.template b/ProGen/templates/vs110/x64/library/release_static_md.template index 68e0ae3f3..913768ce1 100644 --- a/ProGen/templates/vs110/x64/library/release_static_md.template +++ b/ProGen/templates/vs110/x64/library/release_static_md.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs110/x64/library/release_static_mt.template b/ProGen/templates/vs110/x64/library/release_static_mt.template index b5e678e2b..b6eddb3b2 100644 --- a/ProGen/templates/vs110/x64/library/release_static_mt.template +++ b/ProGen/templates/vs110/x64/library/release_static_mt.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs110/x64/plugin/debug_shared.template b/ProGen/templates/vs110/x64/plugin/debug_shared.template index c6aa11b0c..3390a15db 100644 --- a/ProGen/templates/vs110/x64/plugin/debug_shared.template +++ b/ProGen/templates/vs110/x64/plugin/debug_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs110/x64/plugin/release_shared.template b/ProGen/templates/vs110/x64/plugin/release_shared.template index bbed02d0a..060d15350 100644 --- a/ProGen/templates/vs110/x64/plugin/release_shared.template +++ b/ProGen/templates/vs110/x64/plugin/release_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs110/x64/testsuite/debug_shared.template b/ProGen/templates/vs110/x64/testsuite/debug_shared.template index 86e2793b4..a21e1513d 100644 --- a/ProGen/templates/vs110/x64/testsuite/debug_shared.template +++ b/ProGen/templates/vs110/x64/testsuite/debug_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/Win32/executable/debug_static_md.template b/ProGen/templates/vs120/Win32/executable/debug_static_md.template index 591cef85b..2ec6c33ed 100644 --- a/ProGen/templates/vs120/Win32/executable/debug_static_md.template +++ b/ProGen/templates/vs120/Win32/executable/debug_static_md.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/Win32/executable/debug_static_mt.template b/ProGen/templates/vs120/Win32/executable/debug_static_mt.template index cb4b2cc80..bd326898a 100644 --- a/ProGen/templates/vs120/Win32/executable/debug_static_mt.template +++ b/ProGen/templates/vs120/Win32/executable/debug_static_mt.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/Win32/executable/release_shared.template b/ProGen/templates/vs120/Win32/executable/release_shared.template index 20eaab8ed..f6dfbee78 100644 --- a/ProGen/templates/vs120/Win32/executable/release_shared.template +++ b/ProGen/templates/vs120/Win32/executable/release_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/Win32/executable/release_static_md.template b/ProGen/templates/vs120/Win32/executable/release_static_md.template index e2857a3fe..6781b8c13 100644 --- a/ProGen/templates/vs120/Win32/executable/release_static_md.template +++ b/ProGen/templates/vs120/Win32/executable/release_static_md.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/Win32/executable/release_static_mt.template b/ProGen/templates/vs120/Win32/executable/release_static_mt.template index e66d9d0fd..2efc4b188 100644 --- a/ProGen/templates/vs120/Win32/executable/release_static_mt.template +++ b/ProGen/templates/vs120/Win32/executable/release_static_mt.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/Win32/library/debug_shared.template b/ProGen/templates/vs120/Win32/library/debug_shared.template index edd3e29ae..ce677746c 100644 --- a/ProGen/templates/vs120/Win32/library/debug_shared.template +++ b/ProGen/templates/vs120/Win32/library/debug_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/Win32/library/debug_static_md.template b/ProGen/templates/vs120/Win32/library/debug_static_md.template index 837c13d00..4f67e18e4 100644 --- a/ProGen/templates/vs120/Win32/library/debug_static_md.template +++ b/ProGen/templates/vs120/Win32/library/debug_static_md.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/Win32/library/debug_static_mt.template b/ProGen/templates/vs120/Win32/library/debug_static_mt.template index c9554e4ec..637356845 100644 --- a/ProGen/templates/vs120/Win32/library/debug_static_mt.template +++ b/ProGen/templates/vs120/Win32/library/debug_static_mt.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/Win32/library/release_shared.template b/ProGen/templates/vs120/Win32/library/release_shared.template index c0796c143..e4047bf4e 100644 --- a/ProGen/templates/vs120/Win32/library/release_shared.template +++ b/ProGen/templates/vs120/Win32/library/release_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/Win32/library/release_static_md.template b/ProGen/templates/vs120/Win32/library/release_static_md.template index 129b3caad..617131f98 100644 --- a/ProGen/templates/vs120/Win32/library/release_static_md.template +++ b/ProGen/templates/vs120/Win32/library/release_static_md.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/Win32/library/release_static_mt.template b/ProGen/templates/vs120/Win32/library/release_static_mt.template index babc05075..9f228a492 100644 --- a/ProGen/templates/vs120/Win32/library/release_static_mt.template +++ b/ProGen/templates/vs120/Win32/library/release_static_mt.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/Win32/plugin/debug_shared.template b/ProGen/templates/vs120/Win32/plugin/debug_shared.template index ff9a2c889..8d04dccbb 100644 --- a/ProGen/templates/vs120/Win32/plugin/debug_shared.template +++ b/ProGen/templates/vs120/Win32/plugin/debug_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/Win32/plugin/release_shared.template b/ProGen/templates/vs120/Win32/plugin/release_shared.template index c828a4a40..d0c86110f 100644 --- a/ProGen/templates/vs120/Win32/plugin/release_shared.template +++ b/ProGen/templates/vs120/Win32/plugin/release_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/Win32/testsuite/debug_shared.template b/ProGen/templates/vs120/Win32/testsuite/debug_shared.template index 69f5a3b22..54d4a14cc 100644 --- a/ProGen/templates/vs120/Win32/testsuite/debug_shared.template +++ b/ProGen/templates/vs120/Win32/testsuite/debug_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/Win32/testsuite/debug_static_md.template b/ProGen/templates/vs120/Win32/testsuite/debug_static_md.template index e6359f70f..9369c345a 100644 --- a/ProGen/templates/vs120/Win32/testsuite/debug_static_md.template +++ b/ProGen/templates/vs120/Win32/testsuite/debug_static_md.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/Win32/testsuite/debug_static_mt.template b/ProGen/templates/vs120/Win32/testsuite/debug_static_mt.template index 002c5a166..378a97e19 100644 --- a/ProGen/templates/vs120/Win32/testsuite/debug_static_mt.template +++ b/ProGen/templates/vs120/Win32/testsuite/debug_static_mt.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/Win32/testsuite/release_shared.template b/ProGen/templates/vs120/Win32/testsuite/release_shared.template index f85718517..ff38ef3b9 100644 --- a/ProGen/templates/vs120/Win32/testsuite/release_shared.template +++ b/ProGen/templates/vs120/Win32/testsuite/release_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/Win32/testsuite/release_static_md.template b/ProGen/templates/vs120/Win32/testsuite/release_static_md.template index c18fed320..45f0bf3aa 100644 --- a/ProGen/templates/vs120/Win32/testsuite/release_static_md.template +++ b/ProGen/templates/vs120/Win32/testsuite/release_static_md.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/Win32/testsuite/release_static_mt.template b/ProGen/templates/vs120/Win32/testsuite/release_static_mt.template index c293ab252..6ef43d9de 100644 --- a/ProGen/templates/vs120/Win32/testsuite/release_static_mt.template +++ b/ProGen/templates/vs120/Win32/testsuite/release_static_mt.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/WinCE/executable/debug_shared.template b/ProGen/templates/vs120/WinCE/executable/debug_shared.template index af4cf1328..ec628412e 100644 --- a/ProGen/templates/vs120/WinCE/executable/debug_shared.template +++ b/ProGen/templates/vs120/WinCE/executable/debug_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/WinCE/executable/debug_static_md.template b/ProGen/templates/vs120/WinCE/executable/debug_static_md.template index d2b5f3779..de6d8a05d 100644 --- a/ProGen/templates/vs120/WinCE/executable/debug_static_md.template +++ b/ProGen/templates/vs120/WinCE/executable/debug_static_md.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/WinCE/executable/debug_static_mt.template b/ProGen/templates/vs120/WinCE/executable/debug_static_mt.template index 6e50e55ff..2d0008db6 100644 --- a/ProGen/templates/vs120/WinCE/executable/debug_static_mt.template +++ b/ProGen/templates/vs120/WinCE/executable/debug_static_mt.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/WinCE/executable/release_shared.template b/ProGen/templates/vs120/WinCE/executable/release_shared.template index 138e322d8..8f782cda9 100644 --- a/ProGen/templates/vs120/WinCE/executable/release_shared.template +++ b/ProGen/templates/vs120/WinCE/executable/release_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/WinCE/executable/release_static_md.template b/ProGen/templates/vs120/WinCE/executable/release_static_md.template index dd9ff2842..59b8a738c 100644 --- a/ProGen/templates/vs120/WinCE/executable/release_static_md.template +++ b/ProGen/templates/vs120/WinCE/executable/release_static_md.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/WinCE/executable/release_static_mt.template b/ProGen/templates/vs120/WinCE/executable/release_static_mt.template index b8ce3c926..1a1f794cb 100644 --- a/ProGen/templates/vs120/WinCE/executable/release_static_mt.template +++ b/ProGen/templates/vs120/WinCE/executable/release_static_mt.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/WinCE/library/debug_shared.template b/ProGen/templates/vs120/WinCE/library/debug_shared.template index a73e76281..caddd0636 100644 --- a/ProGen/templates/vs120/WinCE/library/debug_shared.template +++ b/ProGen/templates/vs120/WinCE/library/debug_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/WinCE/library/debug_static_md.template b/ProGen/templates/vs120/WinCE/library/debug_static_md.template index 20f45cea5..c446c2320 100644 --- a/ProGen/templates/vs120/WinCE/library/debug_static_md.template +++ b/ProGen/templates/vs120/WinCE/library/debug_static_md.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/WinCE/library/debug_static_mt.template b/ProGen/templates/vs120/WinCE/library/debug_static_mt.template index 035551be1..c91723f5b 100644 --- a/ProGen/templates/vs120/WinCE/library/debug_static_mt.template +++ b/ProGen/templates/vs120/WinCE/library/debug_static_mt.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/WinCE/library/release_shared.template b/ProGen/templates/vs120/WinCE/library/release_shared.template index 89ef62c78..f0e7f3dec 100644 --- a/ProGen/templates/vs120/WinCE/library/release_shared.template +++ b/ProGen/templates/vs120/WinCE/library/release_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/WinCE/library/release_static_md.template b/ProGen/templates/vs120/WinCE/library/release_static_md.template index d0f67dfd8..b270d1b3e 100644 --- a/ProGen/templates/vs120/WinCE/library/release_static_md.template +++ b/ProGen/templates/vs120/WinCE/library/release_static_md.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/WinCE/library/release_static_mt.template b/ProGen/templates/vs120/WinCE/library/release_static_mt.template index ff234ac6a..8efcefee8 100644 --- a/ProGen/templates/vs120/WinCE/library/release_static_mt.template +++ b/ProGen/templates/vs120/WinCE/library/release_static_mt.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/WinCE/plugin/debug_shared.template b/ProGen/templates/vs120/WinCE/plugin/debug_shared.template index 3c336841f..7f42c744a 100644 --- a/ProGen/templates/vs120/WinCE/plugin/debug_shared.template +++ b/ProGen/templates/vs120/WinCE/plugin/debug_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/WinCE/plugin/release_shared.template b/ProGen/templates/vs120/WinCE/plugin/release_shared.template index 82cd3a2ba..586e9492f 100644 --- a/ProGen/templates/vs120/WinCE/plugin/release_shared.template +++ b/ProGen/templates/vs120/WinCE/plugin/release_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/WinCE/testsuite/debug_shared.template b/ProGen/templates/vs120/WinCE/testsuite/debug_shared.template index 955aedd7a..631d1e21a 100644 --- a/ProGen/templates/vs120/WinCE/testsuite/debug_shared.template +++ b/ProGen/templates/vs120/WinCE/testsuite/debug_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/WinCE/testsuite/debug_static_md.template b/ProGen/templates/vs120/WinCE/testsuite/debug_static_md.template index 66ad4ce74..026aae978 100644 --- a/ProGen/templates/vs120/WinCE/testsuite/debug_static_md.template +++ b/ProGen/templates/vs120/WinCE/testsuite/debug_static_md.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/WinCE/testsuite/debug_static_mt.template b/ProGen/templates/vs120/WinCE/testsuite/debug_static_mt.template index 751d2936c..c43b39613 100644 --- a/ProGen/templates/vs120/WinCE/testsuite/debug_static_mt.template +++ b/ProGen/templates/vs120/WinCE/testsuite/debug_static_mt.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/WinCE/testsuite/release_shared.template b/ProGen/templates/vs120/WinCE/testsuite/release_shared.template index 0accdc084..dee0fcfc6 100644 --- a/ProGen/templates/vs120/WinCE/testsuite/release_shared.template +++ b/ProGen/templates/vs120/WinCE/testsuite/release_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/WinCE/testsuite/release_static_md.template b/ProGen/templates/vs120/WinCE/testsuite/release_static_md.template index 5e45f3c8a..b332ec728 100644 --- a/ProGen/templates/vs120/WinCE/testsuite/release_static_md.template +++ b/ProGen/templates/vs120/WinCE/testsuite/release_static_md.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/WinCE/testsuite/release_static_mt.template b/ProGen/templates/vs120/WinCE/testsuite/release_static_mt.template index 159d69c2c..36f67d69a 100644 --- a/ProGen/templates/vs120/WinCE/testsuite/release_static_mt.template +++ b/ProGen/templates/vs120/WinCE/testsuite/release_static_mt.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/x64/executable/debug_shared.template b/ProGen/templates/vs120/x64/executable/debug_shared.template index 013d57d10..cc3939d71 100644 --- a/ProGen/templates/vs120/x64/executable/debug_shared.template +++ b/ProGen/templates/vs120/x64/executable/debug_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/x64/executable/debug_static_md.template b/ProGen/templates/vs120/x64/executable/debug_static_md.template index bc217adad..e38a47edc 100644 --- a/ProGen/templates/vs120/x64/executable/debug_static_md.template +++ b/ProGen/templates/vs120/x64/executable/debug_static_md.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/x64/executable/debug_static_mt.template b/ProGen/templates/vs120/x64/executable/debug_static_mt.template index 2ff3a832d..95790d638 100644 --- a/ProGen/templates/vs120/x64/executable/debug_static_mt.template +++ b/ProGen/templates/vs120/x64/executable/debug_static_mt.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/x64/executable/release_shared.template b/ProGen/templates/vs120/x64/executable/release_shared.template index f36942745..6ab140316 100644 --- a/ProGen/templates/vs120/x64/executable/release_shared.template +++ b/ProGen/templates/vs120/x64/executable/release_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/x64/executable/release_static_md.template b/ProGen/templates/vs120/x64/executable/release_static_md.template index 18c66c4de..e8102d3fd 100644 --- a/ProGen/templates/vs120/x64/executable/release_static_md.template +++ b/ProGen/templates/vs120/x64/executable/release_static_md.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/x64/executable/release_static_mt.template b/ProGen/templates/vs120/x64/executable/release_static_mt.template index eadbc437a..26e9c9eb7 100644 --- a/ProGen/templates/vs120/x64/executable/release_static_mt.template +++ b/ProGen/templates/vs120/x64/executable/release_static_mt.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/x64/library/debug_shared.template b/ProGen/templates/vs120/x64/library/debug_shared.template index d4a717b0d..69308d3cc 100644 --- a/ProGen/templates/vs120/x64/library/debug_shared.template +++ b/ProGen/templates/vs120/x64/library/debug_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/x64/library/debug_static_md.template b/ProGen/templates/vs120/x64/library/debug_static_md.template index a80b6e0d7..196774eb1 100644 --- a/ProGen/templates/vs120/x64/library/debug_static_md.template +++ b/ProGen/templates/vs120/x64/library/debug_static_md.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/x64/library/debug_static_mt.template b/ProGen/templates/vs120/x64/library/debug_static_mt.template index 7068a2f52..e04f4aeeb 100644 --- a/ProGen/templates/vs120/x64/library/debug_static_mt.template +++ b/ProGen/templates/vs120/x64/library/debug_static_mt.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/x64/library/release_shared.template b/ProGen/templates/vs120/x64/library/release_shared.template index 9b0dc937d..0016514ed 100644 --- a/ProGen/templates/vs120/x64/library/release_shared.template +++ b/ProGen/templates/vs120/x64/library/release_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/x64/library/release_static_md.template b/ProGen/templates/vs120/x64/library/release_static_md.template index 68e0ae3f3..913768ce1 100644 --- a/ProGen/templates/vs120/x64/library/release_static_md.template +++ b/ProGen/templates/vs120/x64/library/release_static_md.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/x64/library/release_static_mt.template b/ProGen/templates/vs120/x64/library/release_static_mt.template index b5e678e2b..b6eddb3b2 100644 --- a/ProGen/templates/vs120/x64/library/release_static_mt.template +++ b/ProGen/templates/vs120/x64/library/release_static_mt.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/x64/plugin/debug_shared.template b/ProGen/templates/vs120/x64/plugin/debug_shared.template index c6aa11b0c..3390a15db 100644 --- a/ProGen/templates/vs120/x64/plugin/debug_shared.template +++ b/ProGen/templates/vs120/x64/plugin/debug_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/x64/plugin/release_shared.template b/ProGen/templates/vs120/x64/plugin/release_shared.template index bbed02d0a..060d15350 100644 --- a/ProGen/templates/vs120/x64/plugin/release_shared.template +++ b/ProGen/templates/vs120/x64/plugin/release_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/x64/testsuite/debug_shared.template b/ProGen/templates/vs120/x64/testsuite/debug_shared.template index c1dcd13e2..94c39f852 100644 --- a/ProGen/templates/vs120/x64/testsuite/debug_shared.template +++ b/ProGen/templates/vs120/x64/testsuite/debug_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/x64/testsuite/debug_static_md.template b/ProGen/templates/vs120/x64/testsuite/debug_static_md.template index a5bf9915c..49a37233e 100644 --- a/ProGen/templates/vs120/x64/testsuite/debug_static_md.template +++ b/ProGen/templates/vs120/x64/testsuite/debug_static_md.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/x64/testsuite/debug_static_mt.template b/ProGen/templates/vs120/x64/testsuite/debug_static_mt.template index 8a1e41dfe..1cfaf5d15 100644 --- a/ProGen/templates/vs120/x64/testsuite/debug_static_mt.template +++ b/ProGen/templates/vs120/x64/testsuite/debug_static_mt.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/x64/testsuite/release_shared.template b/ProGen/templates/vs120/x64/testsuite/release_shared.template index 1e0868b9f..99b86937f 100644 --- a/ProGen/templates/vs120/x64/testsuite/release_shared.template +++ b/ProGen/templates/vs120/x64/testsuite/release_shared.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/x64/testsuite/release_static_md.template b/ProGen/templates/vs120/x64/testsuite/release_static_md.template index 394b01953..353361023 100644 --- a/ProGen/templates/vs120/x64/testsuite/release_static_md.template +++ b/ProGen/templates/vs120/x64/testsuite/release_static_md.template @@ -1,7 +1,7 @@ diff --git a/ProGen/templates/vs120/x64/testsuite/release_static_mt.template b/ProGen/templates/vs120/x64/testsuite/release_static_mt.template index 9d0352cfb..bff1e5211 100644 --- a/ProGen/templates/vs120/x64/testsuite/release_static_mt.template +++ b/ProGen/templates/vs120/x64/testsuite/release_static_mt.template @@ -1,7 +1,7 @@ diff --git a/README.md b/README.md index a70bb16ef..93c344743 100644 --- a/README.md +++ b/README.md @@ -11,16 +11,17 @@ POrtable COmponents C++ Libraries are: - Highly portable and available on many different platforms. - Open Source, licensed under the Boost Software License. -In regards to Boost, in spite of some functional overlapping, -POCO is best thought of as a Boost complement (rather than replacement). -Side-by-side use of Boost and POCO is a very common occurence. +---- +To start using POCO, see the [Guided Tour](http://pocoproject.org/docs-1.5.3/00100-GuidedTour.html) and [Getting Started](http://pocoproject.org/docs-1.5.3/00200-GettingStarted.html) documents. ---- - POCO has an active user and contributing community, please visit our [web site](http://pocoproject.org), [forum](http://pocoproject.org/forum) and [blog](http://pocoproject.org/blog). Answers to POCO-related questions can also be found on [Stack Overflow](http://stackoverflow.com/questions/tagged/poco-libraries). ---- +In regards to Boost, in spite of some functional overlapping, +POCO is best thought of as a Boost complement (rather than replacement). +Side-by-side use of Boost and POCO is a very common occurence. When contributing to POCO, please adhere to our [coding styleguide](http://www.appinf.com/download/CppCodingStyleGuide.pdf). diff --git a/SevenZip/SevenZip_CE_vs90.vcproj b/SevenZip/SevenZip_CE_vs90.vcproj index ac58f7720..19c94c790 100644 --- a/SevenZip/SevenZip_CE_vs90.vcproj +++ b/SevenZip/SevenZip_CE_vs90.vcproj @@ -44,7 +44,8 @@ DebugInformationFormat="3" DisableSpecificWarnings="4800;4244;4267" CompileForArchitecture="2" - InterworkCalls="false"/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> ..\bin\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\SevenZip\$(Platform)\$(Configuration)\ true true ..\bin\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\SevenZip\$(Platform)\$(Configuration)\ false true ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\SevenZip\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\SevenZip\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\SevenZip\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\SevenZip\$(Platform)\$(Configuration)\ diff --git a/SevenZip/SevenZip_WEC2013_vs110.vcxproj.filters b/SevenZip/SevenZip_WEC2013_vs110.vcxproj.filters index 1ec0b3612..d3a79c913 100644 --- a/SevenZip/SevenZip_WEC2013_vs110.vcxproj.filters +++ b/SevenZip/SevenZip_WEC2013_vs110.vcxproj.filters @@ -2,31 +2,31 @@ - {ae7c51fb-5858-4943-ae8c-683d5f5e5fe5} + {2fa4bad4-f85e-4745-9b1d-8ab0b4f225c6} - {145511f5-c627-43c1-be73-17b99a5b50e6} + {17766e49-3bbd-4200-8a0d-f4858338a21e} - {0a0b6ae9-49ae-4890-873f-70a4ae04a6d2} + {5a45fb55-7dc5-4e41-a7e0-2d19a3e6857e} - {84756f60-652b-4354-98b9-953351d768a8} + {0e3c7a95-ae29-49d5-a7bd-3223c6a013e3} - {b5be1d14-056e-48a2-9bfe-07122c1024e0} + {6fdeb74d-6ffc-49c7-8e8b-7e7ac42e9248} - {bc79ba36-3c5c-4d29-8593-4b0c38c7cbad} + {0c16052b-4a89-4101-982c-f355352ce22c} - {0696f567-520d-4c46-bb7f-a474c541d5ac} + {d8d4b43f-25ed-4f58-8a09-29c1e67085c2} - {24f0bb20-708a-49cc-a82e-03c65ac83d67} + {fd76214f-1e69-4a7a-a742-82776e566974} - {e1eb9883-b62e-4863-8b58-0b399a153ddb} + {ba56d3cb-98bb-472d-b974-371adb501fa3} diff --git a/SevenZip/SevenZip_WEC2013_vs120.vcxproj b/SevenZip/SevenZip_WEC2013_vs120.vcxproj index 33dba3b3a..05de7a495 100644 --- a/SevenZip/SevenZip_WEC2013_vs120.vcxproj +++ b/SevenZip/SevenZip_WEC2013_vs120.vcxproj @@ -98,31 +98,31 @@ ..\bin\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\SevenZip\$(Platform)\$(Configuration)\ true true ..\bin\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\SevenZip\$(Platform)\$(Configuration)\ false true ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\SevenZip\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\SevenZip\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\SevenZip\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\SevenZip\$(Platform)\$(Configuration)\ diff --git a/SevenZip/SevenZip_WEC2013_vs120.vcxproj.filters b/SevenZip/SevenZip_WEC2013_vs120.vcxproj.filters index 5aa49c142..cbdaf68c3 100644 --- a/SevenZip/SevenZip_WEC2013_vs120.vcxproj.filters +++ b/SevenZip/SevenZip_WEC2013_vs120.vcxproj.filters @@ -2,31 +2,31 @@ - {e41ff670-c9a5-4f30-8e58-60a9939d3200} + {68dff581-e841-4658-b875-9d8b0ed722c0} - {429232ab-14e6-4754-85a4-5757fa0044a6} + {2ecd9f5a-a761-4775-b868-9789e67afac2} - {344d7a99-b687-4937-9e5c-47a1da344929} + {80b2b7bf-67b9-4499-ae2c-1b5bfb9926fc} - {ccd97e96-d837-4299-82eb-ad8cb809e2d2} + {7fe53f98-1229-4433-b4fb-fcaccdf66ad8} - {a66c29d4-fd67-4e05-bfa3-bb37143c0296} + {fc114679-034c-4ad9-ba04-d3328ab1218e} - {1be294df-787d-4877-91dc-56a653e4c433} + {768391cc-78f5-45c8-aad9-39e3ec500049} - {2d2d4206-30a7-4371-a6e8-9b57b848c45d} + {c03f5a26-5f38-4eae-a820-aca19e07e5e5} - {dfb32f89-ff7f-44e3-bdb5-d7448a0fbfef} + {45b7f858-f973-48d5-a1ba-1d0ed5e608d6} - {deba0be4-ff47-40f9-856f-80781a526893} + {a22de71a-62ec-426a-834a-482292344670} diff --git a/SevenZip/SevenZip_vs100.vcxproj b/SevenZip/SevenZip_vs100.vcxproj index 42bf3ecb5..0c208f51c 100644 --- a/SevenZip/SevenZip_vs100.vcxproj +++ b/SevenZip/SevenZip_vs100.vcxproj @@ -81,19 +81,19 @@ <_ProjectFileVersion>10.0.40219.1 ..\bin\ - obj\$(Configuration)\ + obj\SevenZip\$(Configuration)\ true ..\bin\ - obj\$(Configuration)\ + obj\SevenZip\$(Configuration)\ false ..\lib\ - obj\$(Configuration)\ + obj\SevenZip\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\SevenZip\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\SevenZip\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\SevenZip\$(Configuration)\ PocoSevenZipd PocoSevenZipmdd PocoSevenZipmtd @@ -119,6 +119,7 @@ EditAndContinue Default 4244;4267;%(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) @@ -130,6 +131,7 @@ Console ..\lib\PocoSevenZipd.lib MachineX86 + %(AdditionalOptions) @@ -152,6 +154,7 @@ Default 4244;4267;%(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) @@ -164,6 +167,7 @@ true ..\lib\PocoSevenZip.lib MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default 4244;4267;%(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib\PocoSevenZipmtd.lib @@ -210,6 +215,7 @@ Default 4244;4267;%(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib\PocoSevenZipmt.lib @@ -234,6 +240,7 @@ EditAndContinue Default 4244;4267;%(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib\PocoSevenZipmdd.lib @@ -260,6 +267,7 @@ Default 4244;4267;%(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) diff --git a/SevenZip/SevenZip_vs100.vcxproj.filters b/SevenZip/SevenZip_vs100.vcxproj.filters index 1ef03a4cb..910d1edd5 100644 --- a/SevenZip/SevenZip_vs100.vcxproj.filters +++ b/SevenZip/SevenZip_vs100.vcxproj.filters @@ -2,31 +2,31 @@ - {6ee1d2f6-1c62-44f7-b3ad-742fa077fc88} + {0118f463-bb36-42d6-b77d-5f1be9fb174b} - {c6376506-e205-4909-a558-a2f926fc8cdb} + {74d16f00-ee45-4a8b-999c-09625095a83e} - {31caa056-4ac5-4582-988f-686a8a7738d6} + {9ac66d3c-4df1-460e-a253-c85f8be409ca} - {fbe74a48-7c34-4631-aa0c-1493d2dd20bf} + {5247a18d-b515-4bd8-9a95-a1e7de6f85a5} - {28753c5e-f177-4859-a348-e45ecc2e21c8} + {24ec1efc-4e33-4083-a8a6-0c313f8f3a8e} - {db0b7225-9f79-4d8e-8bb5-b7ceae714812} + {8315e5a9-7c96-420c-b030-c63dcc7ca2a4} - {8fb79113-de0a-44bf-9d27-adb941567324} + {f0bf340f-79e5-48dc-b204-09fb0280544f} - {a8c2a14e-5dda-417a-8ac7-c5f1f2e80fa5} + {3ab87999-efb8-4588-945b-d99b3c50f13c} - {a68ce0e0-3e0f-455c-82e8-371bf6e797e3} + {d30da595-246a-433d-b866-f498103aba2e} diff --git a/SevenZip/SevenZip_vs110.vcxproj b/SevenZip/SevenZip_vs110.vcxproj index e8ebc8fb6..2070235fb 100644 --- a/SevenZip/SevenZip_vs110.vcxproj +++ b/SevenZip/SevenZip_vs110.vcxproj @@ -95,29 +95,29 @@ ..\bin\ - obj\$(Configuration)\ + obj\SevenZip\$(Configuration)\ true ..\bin\ - obj\$(Configuration)\ + obj\SevenZip\$(Configuration)\ false ..\lib\ - obj\$(Configuration)\ + obj\SevenZip\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\SevenZip\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\SevenZip\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\SevenZip\$(Configuration)\ diff --git a/SevenZip/SevenZip_vs110.vcxproj.filters b/SevenZip/SevenZip_vs110.vcxproj.filters index 7d8e2e968..b1f79a891 100644 --- a/SevenZip/SevenZip_vs110.vcxproj.filters +++ b/SevenZip/SevenZip_vs110.vcxproj.filters @@ -2,31 +2,31 @@ - {26a9922c-89f5-402b-8ffb-32860daad2b8} + {39fdbc5e-af13-4969-a6ac-c2c38f1b4efd} - {605f706d-d6be-40fd-8b1b-b8f79f46c470} + {fa2bae59-30a6-4142-85b0-cd81f980bb43} - {beb77a1b-6c22-4fe7-9d85-f873813aa5ad} + {b8e71f6b-dfd7-4230-8019-193fbf1c0f3f} - {676f4f9f-2168-4203-94bf-6174b37fa998} + {cc0a419b-b646-44df-a31b-61738bcd1cc5} - {eef4c2d6-ae7a-4d14-ad38-99022139ae6f} + {6cb8910e-d7bd-4973-9ce9-a3e65543ce87} - {d20f7164-9c9c-44dd-9499-a536c8f22d61} + {5d080c57-bcba-451f-a186-e4e25a300d29} - {9889f1bd-8880-4dbd-a6ad-ecfee2927992} + {e9ca5e64-3b0a-46be-86f1-5d74bcf31ceb} - {2aece944-3d31-44b3-b334-f111c2824a8b} + {2bcca268-4987-4c0f-b880-63258feec34b} - {327e2c48-aca1-4e61-9074-4c48cd99e893} + {05098292-c6ab-48c4-a7a3-6b2f9853fe8c} diff --git a/SevenZip/SevenZip_vs120.vcxproj b/SevenZip/SevenZip_vs120.vcxproj index 8f286b330..f1b3dfac4 100644 --- a/SevenZip/SevenZip_vs120.vcxproj +++ b/SevenZip/SevenZip_vs120.vcxproj @@ -95,29 +95,29 @@ ..\bin\ - obj\$(Configuration)\ + obj\SevenZip\$(Configuration)\ true ..\bin\ - obj\$(Configuration)\ + obj\SevenZip\$(Configuration)\ false ..\lib\ - obj\$(Configuration)\ + obj\SevenZip\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\SevenZip\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\SevenZip\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\SevenZip\$(Configuration)\ diff --git a/SevenZip/SevenZip_vs120.vcxproj.filters b/SevenZip/SevenZip_vs120.vcxproj.filters index 86fb65720..6d0156b7c 100644 --- a/SevenZip/SevenZip_vs120.vcxproj.filters +++ b/SevenZip/SevenZip_vs120.vcxproj.filters @@ -2,31 +2,31 @@ - {f4f0e24d-a516-4f1f-bf26-bb8c8e2d5df3} + {59b2fb4a-c66f-482c-88f3-394942360c38} - {3462fdf6-f0f2-4a06-a470-db73600d52ec} + {8650e48b-6131-42b6-8221-45c49390483a} - {63f87468-6bd9-4997-85a1-f1eb0509aead} + {0db42dcf-042b-4ec6-8a07-f5975f3b89c4} - {b62dfe33-c05c-454f-986b-da639ab2d39f} + {4b413b64-004a-4df4-b060-d08c5f5cc5f2} - {24fe59eb-6f84-4143-8acf-17dbd2ea1e60} + {5928171f-4d74-4dd6-bc81-bdfca28848e2} - {d62fcb81-288d-4631-a49e-6088a3e7c77d} + {3664b00e-e27b-4fbb-a8d6-73b95a90839a} - {44080fd1-ebfa-46d4-9032-8601304e6d5f} + {db39db69-2cac-4d79-b233-b8b9bf3c04b3} - {e799951a-64a8-4f0a-a261-c82894ceb938} + {550c71bc-7c4d-4804-9073-52ebc7aa28ec} - {a7c20490-1f7f-403e-a85f-e31040fef384} + {8172681c-9e6a-4ee4-be97-9c9dde08dd99} diff --git a/SevenZip/SevenZip_vs71.vcproj b/SevenZip/SevenZip_vs71.vcproj index 7a4230a78..80ed4e8b3 100644 --- a/SevenZip/SevenZip_vs71.vcproj +++ b/SevenZip/SevenZip_vs71.vcproj @@ -37,7 +37,8 @@ Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" CompileAs="0" - DisableSpecificWarnings="4800;4244;4267"/> + DisableSpecificWarnings="4800;4244;4267" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;4244;4267" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;4244;4267" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;4244;4267" + AdditionalOptions=""/> @@ -274,7 +280,8 @@ Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" CompileAs="0" - DisableSpecificWarnings="4800;4244;4267"/> + DisableSpecificWarnings="4800;4244;4267" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;4244;4267" + AdditionalOptions=""/> diff --git a/SevenZip/SevenZip_vs80.vcproj b/SevenZip/SevenZip_vs80.vcproj index 4abc304ca..f66fcc570 100644 --- a/SevenZip/SevenZip_vs80.vcproj +++ b/SevenZip/SevenZip_vs80.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="4" CompileAs="0" - DisableSpecificWarnings="4244;4267"/> + DisableSpecificWarnings="4244;4267" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4244;4267" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4244;4267" + AdditionalOptions=""/> + DisableSpecificWarnings="4244;4267" + AdditionalOptions=""/> + DisableSpecificWarnings="4244;4267" + AdditionalOptions=""/> + DisableSpecificWarnings="4244;4267" + AdditionalOptions=""/> + DisableSpecificWarnings="4244;4267" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4244;4267" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4244;4267" + AdditionalOptions=""/> + DisableSpecificWarnings="4244;4267" + AdditionalOptions=""/> + DisableSpecificWarnings="4244;4267" + AdditionalOptions=""/> + DisableSpecificWarnings="4244;4267" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 ..\bin64\ - obj64\$(Configuration)\ + obj64\SevenZip\$(Configuration)\ true ..\bin64\ - obj64\$(Configuration)\ + obj64\SevenZip\$(Configuration)\ false ..\lib64\ - obj64\$(Configuration)\ + obj64\SevenZip\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\SevenZip\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\SevenZip\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\SevenZip\$(Configuration)\ PocoSevenZip64d PocoSevenZipmdd PocoSevenZipmtd @@ -119,6 +119,7 @@ ProgramDatabase Default 4244;4267;%(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) @@ -130,6 +131,7 @@ Console ..\lib64\PocoSevenZipd.lib MachineX64 + %(AdditionalOptions) @@ -152,6 +154,7 @@ Default 4244;4267;%(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) @@ -164,6 +167,7 @@ true ..\lib64\PocoSevenZip.lib MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default 4244;4267;%(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib64\PocoSevenZipmtd.lib @@ -210,6 +215,7 @@ Default 4244;4267;%(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib64\PocoSevenZipmt.lib @@ -234,6 +240,7 @@ ProgramDatabase Default 4244;4267;%(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib64\PocoSevenZipmdd.lib @@ -259,6 +266,7 @@ Default 4244;4267;%(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib64\PocoSevenZipmd.lib diff --git a/SevenZip/SevenZip_x64_vs100.vcxproj.filters b/SevenZip/SevenZip_x64_vs100.vcxproj.filters index c627e86b6..4a12ee08e 100644 --- a/SevenZip/SevenZip_x64_vs100.vcxproj.filters +++ b/SevenZip/SevenZip_x64_vs100.vcxproj.filters @@ -2,31 +2,31 @@ - {d0fdab13-e26a-43e2-98c3-fa8e8a81f97a} + {0ad54a96-0800-4ac9-ad40-a3de9c895bd6} - {3a8482be-af8a-4fe5-ab1b-40490bdbe450} + {05944bb6-2067-4bca-83a0-5e38112124ae} - {709e485d-f314-407f-ba06-6d76dc16256f} + {c61443d1-be6d-44ba-b669-12856cf504d0} - {e19cbb81-d587-43f8-90ea-609043f9d574} + {1e901f2e-fb42-4893-80bf-fcdf50b73307} - {8a3742e6-a6ad-4361-a6bb-a379789fc57e} + {2ed592b8-748a-4c36-8b76-4e67d545b35c} - {c37d4e73-270d-41f3-a506-89e054f06d12} + {4de865db-2a3f-40b1-b103-51f8cce9c9be} - {4e0662f8-5669-42e3-aab4-4f7e35c4930f} + {a8d45474-e0ac-478d-9211-e806a82b54d8} - {3893dd36-2db1-45ff-920c-d55100bb7846} + {00809e75-b427-4d6d-a7d7-724e43f20c66} - {6d00a762-639c-41b9-9513-270b8073280c} + {253b91bf-2c44-4ed0-a024-6fd24155a7fa} diff --git a/SevenZip/SevenZip_x64_vs110.vcxproj b/SevenZip/SevenZip_x64_vs110.vcxproj index e06937c1b..efdabb9c7 100644 --- a/SevenZip/SevenZip_x64_vs110.vcxproj +++ b/SevenZip/SevenZip_x64_vs110.vcxproj @@ -95,29 +95,29 @@ ..\bin64\ - obj64\$(Configuration)\ + obj64\SevenZip\$(Configuration)\ true ..\bin64\ - obj64\$(Configuration)\ + obj64\SevenZip\$(Configuration)\ false ..\lib64\ - obj64\$(Configuration)\ + obj64\SevenZip\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\SevenZip\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\SevenZip\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\SevenZip\$(Configuration)\ diff --git a/SevenZip/SevenZip_x64_vs110.vcxproj.filters b/SevenZip/SevenZip_x64_vs110.vcxproj.filters index 7fca64e86..ea6650c82 100644 --- a/SevenZip/SevenZip_x64_vs110.vcxproj.filters +++ b/SevenZip/SevenZip_x64_vs110.vcxproj.filters @@ -2,31 +2,31 @@ - {408ad738-7969-41fe-ad9d-698769081d0b} + {d6b7262d-b7ae-4132-bc8f-579f8ab34ffc} - {6c423ca9-bf4b-4050-8fca-6ab5fc416c88} + {a3b9cf35-b360-4258-b148-d40bed1c0bdf} - {fe263f95-196d-4204-8436-1cd39902cd74} + {3c10896b-923f-4435-a8c7-0d82964032eb} - {2743b4ce-826a-4d15-bf40-7c5e30274539} + {46ab0d51-03e2-481c-b20b-01dfeac7a241} - {90677a9a-c34d-4d09-bdab-58b0d7af7abb} + {855edf7b-2939-4a3b-954c-d426b5970aa5} - {96f13c25-dc41-4704-a17a-ab8d9f41ca54} + {ab610e5e-5139-4d58-b10c-c63cdca34bff} - {c3b82ef9-8b18-4d70-8611-496c89819e07} + {7c069b1c-89a8-401e-9188-91b74275a56e} - {bdbcf3ea-6f7e-438c-b878-cc691624a027} + {257f60d8-f93c-48a3-a9b8-1a7cb5a14f5d} - {174bb444-d999-4d5e-89c7-e8200fb8b74b} + {1f861ff3-9d35-407c-a7bd-029322aec6a4} diff --git a/SevenZip/SevenZip_x64_vs120.vcxproj b/SevenZip/SevenZip_x64_vs120.vcxproj index 8b9ae2b88..88588e5cb 100644 --- a/SevenZip/SevenZip_x64_vs120.vcxproj +++ b/SevenZip/SevenZip_x64_vs120.vcxproj @@ -95,29 +95,29 @@ ..\bin64\ - obj64\$(Configuration)\ + obj64\SevenZip\$(Configuration)\ true ..\bin64\ - obj64\$(Configuration)\ + obj64\SevenZip\$(Configuration)\ false ..\lib64\ - obj64\$(Configuration)\ + obj64\SevenZip\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\SevenZip\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\SevenZip\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\SevenZip\$(Configuration)\ diff --git a/SevenZip/SevenZip_x64_vs120.vcxproj.filters b/SevenZip/SevenZip_x64_vs120.vcxproj.filters index 5d9b20336..ff7f56ed4 100644 --- a/SevenZip/SevenZip_x64_vs120.vcxproj.filters +++ b/SevenZip/SevenZip_x64_vs120.vcxproj.filters @@ -2,31 +2,31 @@ - {200596bd-4cf2-4666-8a9a-fd07ff8029df} + {ed4a26f6-92ab-4520-ac51-26dc0c1f1889} - {93f54c47-7811-4eb1-a41b-3e8c8c0dc8b7} + {e33d5351-020a-43c3-bebf-1515ad9ffd6f} - {0a5d5085-4928-4f90-a587-fbda48a0504e} + {3095cc93-3997-401f-aaf8-41e3bbfebfae} - {c47c515b-9cf7-4e00-b5b9-22380c387b7f} + {740e1bff-b049-4adc-aa87-aaa346e04008} - {3780882b-1de4-46d5-831a-445aee4e279d} + {aae5e8b7-5b57-4435-9060-cbf1f5fdcabc} - {2bc83d84-e129-490f-bfbd-603a3dffcfce} + {83da0fd7-2083-40ec-9811-f19b3956cd47} - {b0513d94-2731-4408-93ba-8fa3dabe862a} + {6a49e735-b314-4629-946a-25e473bfdf40} - {f70aff6f-6e97-414e-b4b3-64b9f7dca326} + {2ca65493-b1a3-484b-8803-523c56d7b3c3} - {1516b04f-a42f-49e0-b3cf-c378aa27b36b} + {ff1c3fe2-f12c-49af-81db-ffc97f2ddd4f} diff --git a/SevenZip/SevenZip_x64_vs90.vcproj b/SevenZip/SevenZip_x64_vs90.vcproj index 1bfe4c458..0dce26330 100644 --- a/SevenZip/SevenZip_x64_vs90.vcproj +++ b/SevenZip/SevenZip_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings="4244;4267"/> + DisableSpecificWarnings="4244;4267" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="4244;4267" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="4244;4267" + AdditionalOptions=""/> + DisableSpecificWarnings="4244;4267" + AdditionalOptions=""/> + DisableSpecificWarnings="4244;4267" + AdditionalOptions=""/> + DisableSpecificWarnings="4244;4267" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\un7zip\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\un7zip\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\un7zip\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\un7zip\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\un7zip\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\un7zip\$(Platform)\$(Configuration)\ false diff --git a/SevenZip/samples/un7zip/un7zip_WEC2013_vs110.vcxproj.filters b/SevenZip/samples/un7zip/un7zip_WEC2013_vs110.vcxproj.filters index 499bb036a..c55eb6321 100644 --- a/SevenZip/samples/un7zip/un7zip_WEC2013_vs110.vcxproj.filters +++ b/SevenZip/samples/un7zip/un7zip_WEC2013_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {9c57ffb1-8c63-4d2e-908d-ce0b90f07708} + {f7a65e3d-3ab3-4286-ace6-09576b556f79} - {6cedcc0e-82f8-47a4-99b2-41b4967c2fa0} + {33849b89-17b5-44c9-8c6f-ad9f994abb01} diff --git a/SevenZip/samples/un7zip/un7zip_WEC2013_vs120.vcxproj b/SevenZip/samples/un7zip/un7zip_WEC2013_vs120.vcxproj index 598557982..8908bac94 100644 --- a/SevenZip/samples/un7zip/un7zip_WEC2013_vs120.vcxproj +++ b/SevenZip/samples/un7zip/un7zip_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\un7zip\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\un7zip\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\un7zip\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\un7zip\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\un7zip\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\un7zip\$(Platform)\$(Configuration)\ false diff --git a/SevenZip/samples/un7zip/un7zip_WEC2013_vs120.vcxproj.filters b/SevenZip/samples/un7zip/un7zip_WEC2013_vs120.vcxproj.filters index 7846f5349..4e39b02ea 100644 --- a/SevenZip/samples/un7zip/un7zip_WEC2013_vs120.vcxproj.filters +++ b/SevenZip/samples/un7zip/un7zip_WEC2013_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {c4838413-cca3-4ac6-842c-864fe949f521} + {52811454-692d-41a0-8fc4-dfa2fab4b399} - {906b6ff9-bc78-4c67-820e-22a3e52c0af0} + {9c9560cb-2c23-4b83-8edf-47c6e4a9d5ba} diff --git a/SevenZip/samples/un7zip/un7zip_vs100.vcxproj b/SevenZip/samples/un7zip/un7zip_vs100.vcxproj index 9f8951632..a517ffe4c 100644 --- a/SevenZip/samples/un7zip/un7zip_vs100.vcxproj +++ b/SevenZip/samples/un7zip/un7zip_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\un7zip\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\un7zip\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\un7zip\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\un7zip\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\un7zip\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\un7zip\$(Configuration)\ false un7zipd un7zipd @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\un7zipd.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\un7zipd.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\un7zipd.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/SevenZip/samples/un7zip/un7zip_vs100.vcxproj.filters b/SevenZip/samples/un7zip/un7zip_vs100.vcxproj.filters index c8ee9c3e0..aa8c7bdf1 100644 --- a/SevenZip/samples/un7zip/un7zip_vs100.vcxproj.filters +++ b/SevenZip/samples/un7zip/un7zip_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {d5737612-8f66-495f-b5dd-a992ce311031} + {fe9cb3e6-c3c7-46b1-9dc7-d26ac483cbe0} - {a13b5353-1d17-4231-8fbb-400ab083f11b} + {195cf82a-e779-4198-818d-04bb48fbd3dd} diff --git a/SevenZip/samples/un7zip/un7zip_vs110.vcxproj b/SevenZip/samples/un7zip/un7zip_vs110.vcxproj index ca3673956..9a06c84c0 100644 --- a/SevenZip/samples/un7zip/un7zip_vs110.vcxproj +++ b/SevenZip/samples/un7zip/un7zip_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\un7zip\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\un7zip\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\un7zip\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\un7zip\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\un7zip\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\un7zip\$(Configuration)\ false diff --git a/SevenZip/samples/un7zip/un7zip_vs110.vcxproj.filters b/SevenZip/samples/un7zip/un7zip_vs110.vcxproj.filters index 94b28c7e2..f0ff2ceaa 100644 --- a/SevenZip/samples/un7zip/un7zip_vs110.vcxproj.filters +++ b/SevenZip/samples/un7zip/un7zip_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {aa400e99-38da-4510-a178-89514ae3164e} + {f8bb1f00-9a98-406a-9a8f-083a9454aef8} - {6b038e88-f83f-4aee-b033-3b2095da933a} + {c48bb429-8335-4a89-a29c-cd107a22359f} diff --git a/SevenZip/samples/un7zip/un7zip_vs120.vcxproj b/SevenZip/samples/un7zip/un7zip_vs120.vcxproj index 82819eb77..5c985f9e9 100644 --- a/SevenZip/samples/un7zip/un7zip_vs120.vcxproj +++ b/SevenZip/samples/un7zip/un7zip_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\un7zip\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\un7zip\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\un7zip\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\un7zip\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\un7zip\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\un7zip\$(Configuration)\ false diff --git a/SevenZip/samples/un7zip/un7zip_vs120.vcxproj.filters b/SevenZip/samples/un7zip/un7zip_vs120.vcxproj.filters index f36796f5f..caea47fbb 100644 --- a/SevenZip/samples/un7zip/un7zip_vs120.vcxproj.filters +++ b/SevenZip/samples/un7zip/un7zip_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {826598a1-02f5-4ab6-b0ce-62e4f89f810d} + {ea1c0fcc-4447-465e-a2f2-54c4824cbb12} - {13b7fcfd-1b6a-45b7-9d77-5b8f15326bef} + {4af642ef-5e96-4091-b757-e8f974d7d42d} diff --git a/SevenZip/samples/un7zip/un7zip_vs71.vcproj b/SevenZip/samples/un7zip/un7zip_vs71.vcproj index 44b0aad98..fc7e9b415 100644 --- a/SevenZip/samples/un7zip/un7zip_vs71.vcproj +++ b/SevenZip/samples/un7zip/un7zip_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\un7zip\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\un7zip\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\un7zip\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\un7zip\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\un7zip\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\un7zip\$(Configuration)\ false un7zipd un7zipd @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\un7zipd.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\un7zipd.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\un7zipd.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/SevenZip/samples/un7zip/un7zip_x64_vs100.vcxproj.filters b/SevenZip/samples/un7zip/un7zip_x64_vs100.vcxproj.filters index f4f714c1b..aa98d086d 100644 --- a/SevenZip/samples/un7zip/un7zip_x64_vs100.vcxproj.filters +++ b/SevenZip/samples/un7zip/un7zip_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {5ff0f6d3-78cc-42ef-abab-62e1f8287147} + {fdab952b-8aa3-41c8-8862-c4b4b0f7c2e3} - {70081758-1dd7-43c6-b461-a2b58bffcdd8} + {b9a77192-e0bb-4643-8015-cdb41e6b49d8} diff --git a/SevenZip/samples/un7zip/un7zip_x64_vs110.vcxproj b/SevenZip/samples/un7zip/un7zip_x64_vs110.vcxproj index f97b46b6e..8e7273349 100644 --- a/SevenZip/samples/un7zip/un7zip_x64_vs110.vcxproj +++ b/SevenZip/samples/un7zip/un7zip_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\un7zip\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\un7zip\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\un7zip\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\un7zip\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\un7zip\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\un7zip\$(Configuration)\ false diff --git a/SevenZip/samples/un7zip/un7zip_x64_vs110.vcxproj.filters b/SevenZip/samples/un7zip/un7zip_x64_vs110.vcxproj.filters index ea96d711e..4e3f792bc 100644 --- a/SevenZip/samples/un7zip/un7zip_x64_vs110.vcxproj.filters +++ b/SevenZip/samples/un7zip/un7zip_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {9f63f3bf-5536-4031-a698-39886aa40cb7} + {bee31407-341a-4270-aad5-2862408f268d} - {0a8aeed3-83d1-4be4-8b3e-3c5f2e7d039e} + {48a71ed3-017c-40b0-a680-3e4caa6de247} diff --git a/SevenZip/samples/un7zip/un7zip_x64_vs120.vcxproj b/SevenZip/samples/un7zip/un7zip_x64_vs120.vcxproj index c83385235..97a2f60ca 100644 --- a/SevenZip/samples/un7zip/un7zip_x64_vs120.vcxproj +++ b/SevenZip/samples/un7zip/un7zip_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\un7zip\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\un7zip\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\un7zip\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\un7zip\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\un7zip\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\un7zip\$(Configuration)\ false diff --git a/SevenZip/samples/un7zip/un7zip_x64_vs120.vcxproj.filters b/SevenZip/samples/un7zip/un7zip_x64_vs120.vcxproj.filters index 72fe1564c..1fe79d5a6 100644 --- a/SevenZip/samples/un7zip/un7zip_x64_vs120.vcxproj.filters +++ b/SevenZip/samples/un7zip/un7zip_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {05ace24e-82bc-45dc-b865-458026814d26} + {5c3afb68-090b-4d11-919f-14b913f6abef} - {a0cd68af-72a1-4333-9868-8fe223633c36} + {62ab8840-d500-48b3-a458-633aff9c572f} diff --git a/SevenZip/samples/un7zip/un7zip_x64_vs90.vcproj b/SevenZip/samples/un7zip/un7zip_x64_vs90.vcproj index 1038de737..d1ce08542 100644 --- a/SevenZip/samples/un7zip/un7zip_x64_vs90.vcproj +++ b/SevenZip/samples/un7zip/un7zip_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> ..\bin\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Util\$(Platform)\$(Configuration)\ true true ..\bin\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Util\$(Platform)\$(Configuration)\ false true ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Util\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Util\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Util\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Util\$(Platform)\$(Configuration)\ diff --git a/Util/Util_WEC2013_vs110.vcxproj.filters b/Util/Util_WEC2013_vs110.vcxproj.filters index def83fbc2..5cab15b0e 100644 --- a/Util/Util_WEC2013_vs110.vcxproj.filters +++ b/Util/Util_WEC2013_vs110.vcxproj.filters @@ -2,58 +2,58 @@ - {9ca7c308-47a8-4acf-99bf-7b4e15dda4ad} + {38c15b80-928e-46e2-a74a-325b69750535} - {d12121b5-b60a-44ee-9830-caa502195086} + {c18b3f7f-c4b7-4266-855c-69dfbf323b75} - {2b910781-4062-4037-a50c-a5f6fe1126fc} + {d84a6d03-4b78-4b4e-ae3c-1922bdb6dd34} - {5c519b11-f9e9-469b-a850-2b5a2a36fa81} + {52e96ad0-7f42-426a-9e85-c2dc03a886a9} - {83caab94-22b8-4ecc-8b10-848f309734ab} + {7c30b155-5644-43ea-a22a-5f0e77c75740} - {d155a648-1d2e-41d3-96c3-a0d5431ecd5d} + {8dc5a3cb-97b6-4826-be80-301f84ebe4e7} - {b2d4ec3d-e66c-4b20-93e8-a80c91cf1920} + {2f1c6ae2-33cc-43e8-8191-805e6f4d1a02} - {bb08579f-4977-45c8-ba0c-8950bcca9d76} + {6688bb39-a224-4ca4-8a0c-e4f924cdb32d} - {98533849-34b1-4243-838b-9490268df13a} + {a10af73c-a68c-4c6f-8c8e-c4509b610edb} - {0849ea06-0e39-4a8c-a744-c9d6cee23eae} + {69cbfcd5-5066-40fe-8cce-95958780dcd1} - {86e4d16e-19bb-4a12-94a0-c4bed7361875} + {2f245cc5-e117-42d5-8c1c-7c44e4012ef7} - {4a030fd4-f140-4c96-b564-4a313252c94b} + {4dd4ad0c-92c3-490b-8bc0-95c269eaa062} - {10694634-f876-47ec-ac45-56d5ccc80013} + {c5f3cb96-c55b-4e8b-9fcb-5a544be944df} - {a861e4e1-b4e5-47fc-9572-a3de990a1337} + {18dd4478-61a2-4649-a3cd-c220c7943e98} - {36ae6d11-e01e-4be0-9b9c-15c41260fda9} + {8a419df9-c4dd-44dd-b8ec-1bf6a6ec0ea9} - {d9ff0131-412e-4f97-804b-aac9c7ea1001} + {f9b17e66-96d1-41b4-87c2-199a1c075f5c} - {1f02df3b-bdfa-4b41-bdf3-45357f18deaf} + {2c5bd1a9-3c3c-4cc5-a6d9-483e332135ef} - {06ee9132-593c-415e-b64b-4b348faa5a61} + {12561013-8f9f-4513-bb7c-eb4f0c89838d} diff --git a/Util/Util_WEC2013_vs120.vcxproj b/Util/Util_WEC2013_vs120.vcxproj index 8dbf491a1..a5a61016e 100644 --- a/Util/Util_WEC2013_vs120.vcxproj +++ b/Util/Util_WEC2013_vs120.vcxproj @@ -98,31 +98,31 @@ ..\bin\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Util\$(Platform)\$(Configuration)\ true true ..\bin\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Util\$(Platform)\$(Configuration)\ false true ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Util\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Util\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Util\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Util\$(Platform)\$(Configuration)\ diff --git a/Util/Util_WEC2013_vs120.vcxproj.filters b/Util/Util_WEC2013_vs120.vcxproj.filters index 3fb88d6bf..9cc8139b3 100644 --- a/Util/Util_WEC2013_vs120.vcxproj.filters +++ b/Util/Util_WEC2013_vs120.vcxproj.filters @@ -2,58 +2,58 @@ - {28f1cf79-c052-4c9b-a904-927ae3f2d457} + {cf6499f4-120a-4e2e-b556-b3166079553d} - {bcccdca8-e3c1-46dc-8603-c6149ab5245f} + {443ce834-0cdc-4809-b045-a4489ce2ba82} - {4acf9d54-c6c7-4f56-ad9f-17479963b564} + {601596ba-1383-4cfd-93ae-528c0a621275} - {4612db1d-6fc3-470e-9259-cfeace0d6de1} + {966f9777-6d59-4067-8a81-d8465bcfd802} - {bf2bbb02-5427-42fe-a4a3-464aba30c57e} + {58fd1a26-316e-4c10-9415-a7f03141fd77} - {7e611692-55fc-4536-9ba8-e03354bbd0b2} + {1060b5b6-b021-4d65-97c7-9620a6794f92} - {742a78c9-ae28-4931-8b1d-8d9a1b20398e} + {b6a68722-a27f-40f0-bf74-b29c868335fd} - {106b5199-3dca-4262-834f-803248307b9d} + {22063287-fb6d-447a-aaed-a498320e0db4} - {bae16187-f56c-485a-8e52-2c60de768df2} + {4b441e68-19ca-4302-af28-54d9b372772c} - {71cf60d6-7ace-43c4-b170-5aed7b1255f2} + {f2a20536-db36-4003-92a6-2119bc5ecec3} - {fadc111f-540c-4ba7-9623-ad9985e70863} + {f6a21045-9dd7-46bd-9405-a6750c43c6dc} - {e91c7f9a-dd6e-4ffe-a70b-74c8265f7736} + {a8daeb58-aece-4159-adad-6314fd6affff} - {a62a0e44-28e1-4eb6-ad4c-90dd7b42ccd1} + {4800054b-9deb-4171-ad7c-a264c525dfda} - {fbb97a49-e782-4f57-9d1e-efc73a438c6d} + {80ca6a21-a688-41a6-85eb-ede00a57627c} - {9de1a5ee-23f7-4126-9792-d27481550794} + {9aa0b930-c82f-451b-8fa1-c250f7b8b652} - {a90d18aa-acb1-4f24-b5b3-74e3666f483d} + {f53e8211-22d1-4727-9f18-73b139387159} - {46b1e32b-0a55-416a-9469-fa5f11056247} + {c127a146-59f2-470a-b640-3d4eb2eddd14} - {b833c26a-95b1-4e14-8cb4-cb0b6c177d75} + {da870ff2-187d-4dd6-833d-b4fadbe2766e} diff --git a/Util/Util_vs100.vcxproj b/Util/Util_vs100.vcxproj index 449b736c7..070ecc4b8 100644 --- a/Util/Util_vs100.vcxproj +++ b/Util/Util_vs100.vcxproj @@ -81,19 +81,19 @@ <_ProjectFileVersion>10.0.40219.1 ..\bin\ - obj\$(Configuration)\ + obj\Util\$(Configuration)\ true ..\bin\ - obj\$(Configuration)\ + obj\Util\$(Configuration)\ false ..\lib\ - obj\$(Configuration)\ + obj\Util\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Util\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Util\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Util\$(Configuration)\ PocoUtild PocoUtilmdd PocoUtilmtd @@ -119,6 +119,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) @@ -130,6 +131,7 @@ Console ..\lib\PocoUtild.lib MachineX86 + %(AdditionalOptions) @@ -152,6 +154,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) @@ -164,6 +167,7 @@ true ..\lib\PocoUtil.lib MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib\PocoUtilmtd.lib @@ -210,6 +215,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib\PocoUtilmt.lib @@ -234,6 +240,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib\PocoUtilmdd.lib @@ -260,6 +267,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) diff --git a/Util/Util_vs100.vcxproj.filters b/Util/Util_vs100.vcxproj.filters index 02140bbfc..524ffbcc7 100644 --- a/Util/Util_vs100.vcxproj.filters +++ b/Util/Util_vs100.vcxproj.filters @@ -2,58 +2,58 @@ - {e639b443-9658-4c63-a16f-e32949633187} + {818d0af9-8b3a-4a0e-ac14-5b3872e2d368} - {99f70bd7-0d14-4c98-aa3e-f49c3e942398} + {c72e8eae-c59b-40aa-b19b-a7f800e43b4a} - {2e16dda6-7c65-4db7-b226-4eb2d1c5843e} + {2ec83d3d-2196-43a1-a9ee-6f3eb58f1e7d} - {e97183dd-1186-4873-9ef6-234f36d46707} + {6f187e3f-f93e-422e-b606-7b69e0fc7c2b} - {6dd790cf-9670-47c4-bd76-aefe9c335c54} + {2e339e6a-232f-46b4-af9a-195050d1b5f0} - {bba1eb0c-3f4f-4367-8bf6-d67ee4ab3a99} + {1df11011-1c37-41a1-a5fc-c6ecc5af4e2f} - {fad64497-d45d-4158-bed6-bcca36ff6f45} + {712c39c2-39f0-4a3c-ac6a-8f840ebd164a} - {96079cfc-d6fa-4875-b66c-4b1c80c7ebd7} + {9e1f6c26-2de4-4deb-87db-82e52a387a13} - {1d92247f-e3b3-4610-87d1-b81c4b771895} + {27a9ce16-1590-43b6-8ace-d661bfeb8540} - {3cce744f-ccf9-461b-8ec6-8147b74cff28} + {20462562-f7fb-43f2-86d1-a96d89cbc1c8} - {cf65119c-d20b-425b-9cc3-f2042cf68aba} + {067c02ec-f6ab-4af9-a065-5bf1e0c3de80} - {5c5172fb-2d89-4d6a-a7f0-f1365b3de014} + {5d7472d5-1036-445f-8572-30b59179f512} - {23ce979e-498a-44e9-9077-65e1035ab4d7} + {effeba86-cc5a-4b8c-9d04-5876332a5572} - {d875e696-9a43-40a7-a978-e845977492ec} + {c3f17680-953d-4848-a754-c47bb20db330} - {656e0a21-7f38-49ea-84cf-917bf04ac75b} + {5dabbb90-1ecb-4fcd-bcc0-957c5329c9b8} - {274a66c7-1de6-4c44-916b-351ab566b51f} + {30d2be8c-e289-4dfe-a372-7d1286175b3f} - {82a2607c-3f90-4e2f-861e-92fe0ddc231f} + {76177e5b-300f-41f4-b273-ed186c8f5c11} - {443b8524-248d-4d12-8bcc-c8fe7b41b123} + {67db0ba0-b8ab-40f0-8ba2-b729f9c08895} diff --git a/Util/Util_vs110.vcxproj b/Util/Util_vs110.vcxproj index a71a800b3..3cefe6517 100644 --- a/Util/Util_vs110.vcxproj +++ b/Util/Util_vs110.vcxproj @@ -95,29 +95,29 @@ ..\bin\ - obj\$(Configuration)\ + obj\Util\$(Configuration)\ true ..\bin\ - obj\$(Configuration)\ + obj\Util\$(Configuration)\ false ..\lib\ - obj\$(Configuration)\ + obj\Util\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Util\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Util\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Util\$(Configuration)\ diff --git a/Util/Util_vs110.vcxproj.filters b/Util/Util_vs110.vcxproj.filters index cd220a9bc..04a398c69 100644 --- a/Util/Util_vs110.vcxproj.filters +++ b/Util/Util_vs110.vcxproj.filters @@ -2,58 +2,58 @@ - {d353cdc3-cf72-4c6b-a2a7-c5e625f1e3b2} + {5b939ee4-d9a8-44a1-9ed2-49baa66540db} - {9cbc77bd-5976-417c-81b4-dafa0aa1cc5b} + {34201140-33c0-41c4-906d-6ce8a40caaa7} - {1c4df7b2-a3a6-4e30-953b-be9464e62304} + {18a50e03-773b-4e95-bcc4-2c8ff1e6ea39} - {294fe5cd-6364-4084-8ed8-fe63d69418bc} + {50b1815b-6514-4efa-b015-562aa3944146} - {0cb131b9-9d77-4479-9a6c-ece63f9d8878} + {d3e8f4ef-1802-4444-9f26-3c2b745d0706} - {5b9fe9c9-88a8-4622-bd97-05f350229df6} + {1671a158-87bf-4921-b5e7-d02b97a14a2b} - {ad7fc36a-61b9-4fcb-828f-22a2a3e28ae5} + {62fcd041-0883-41cd-a002-66acb6311d98} - {5e3ba74f-9a5e-439b-8136-51d21602cf67} + {1560672d-9bc6-418e-bd5e-cc1e698dae0d} - {b5cedcde-d245-4f94-8f48-4976ca335919} + {986365cf-204d-4c5f-8fa2-50b658579874} - {0047424a-0647-4147-aef7-1ba41ab7ffb5} + {13b48383-4dc9-4a2b-b432-60f7fba6b9db} - {9de5adb4-f603-4f9d-865a-f4016b6744ff} + {41f6634a-a294-4dea-b124-ab45096631c9} - {dcf377a4-86da-4f6f-a748-7f926944396a} + {64a74e52-660e-4839-a28c-05f7fb998c67} - {91f60abc-5474-4394-abed-712382206c4f} + {25f4d43b-4ba0-42b4-b2d8-f54d4057231e} - {26c37e33-6295-4129-81b4-74dc603c055f} + {70f25e6c-4b55-4431-b941-b46b49ae59e4} - {e1cfb85e-86f3-4794-9e7f-9ec520bacc5e} + {1bd0ccd0-ba06-4b4b-99ae-dcb57ef6dd9c} - {487185c7-77a3-49a4-afb3-353348c1cdc8} + {a074a3be-72a6-4eb1-9e34-66ec54766af2} - {d1a76ba2-3ccf-40b0-a4d3-ea0c4f1fb6d1} + {638e9540-d53a-4cd0-b584-e1e81960422e} - {7c7bdecc-859f-45f4-8424-4b817891ef50} + {f7e839f9-7f58-40e5-a5cb-b03d3c2a816e} diff --git a/Util/Util_vs120.vcxproj b/Util/Util_vs120.vcxproj index 3a87478c1..6decb7e09 100644 --- a/Util/Util_vs120.vcxproj +++ b/Util/Util_vs120.vcxproj @@ -95,29 +95,29 @@ ..\bin\ - obj\$(Configuration)\ + obj\Util\$(Configuration)\ true ..\bin\ - obj\$(Configuration)\ + obj\Util\$(Configuration)\ false ..\lib\ - obj\$(Configuration)\ + obj\Util\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Util\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Util\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Util\$(Configuration)\ diff --git a/Util/Util_vs120.vcxproj.filters b/Util/Util_vs120.vcxproj.filters index 4301c86d2..3f858add6 100644 --- a/Util/Util_vs120.vcxproj.filters +++ b/Util/Util_vs120.vcxproj.filters @@ -2,58 +2,58 @@ - {92a4ddf2-902b-4dfc-aed8-3bad946615a6} + {8f27a9af-50c6-4d0f-a273-532158d40914} - {81d9c725-f8d5-4a86-baaf-d1f932ab647b} + {01f04752-b9d9-49ab-9e5f-efba089e1d59} - {c71c2b9c-c8ae-49ca-a185-6bd37a7f6fa9} + {97cebe48-b50c-427b-8221-683888c6617a} - {f1725d3b-327a-45a0-9e46-206a67eb88b4} + {2bfc7b4f-0526-40b4-9ee4-d3fe809bc65a} - {a30b0ac9-d66b-4f37-9642-0be034131452} + {a713efe0-17f6-427b-8d9c-6fd2d947bf1e} - {adfbfcd7-d32b-4d3a-883a-a9788d4c1a7b} + {5e7a4316-7e40-47ac-a077-112ac4e1e9b3} - {bd72bfa2-5344-4342-a880-32dbe937fa3c} + {301099ff-a5ab-41af-bdb2-881775bcd0ad} - {3c834a7e-0e65-48a2-a239-adbf7378ad17} + {2de71ba1-1648-4fab-a513-395dfe35e9ea} - {3a564c75-830a-4a34-8ff0-7e7b5a08452d} + {cdf66d24-20b4-4c3b-86eb-22a3d93dc02b} - {20395508-cfef-447f-8eb4-c8ce58252acd} + {a453c4ee-2c6e-4a03-88b5-538cd72a71e2} - {434dd862-91ae-48e7-918e-435516abe08a} + {c7b30b69-86be-4071-992f-4d196af9b6d4} - {e70e9937-bdba-4fbf-9749-205d8a1cb4eb} + {91828ba7-c477-4e5d-b260-1e926e587b04} - {99b8f1a0-b9f2-4344-b3ca-2b71be65cc43} + {ef1b3e8d-6712-4ed6-90bb-fa21f80d356a} - {246dc47f-6a8f-478c-a21a-5cc0b1d11fac} + {c45b11b3-3547-46fd-85ed-8d8d13287bcf} - {ce76e60e-d34d-46f1-9500-814a5b9b57b2} + {83d78bd4-b7bd-41f7-a4b5-0f37d62ff1ff} - {87c7f790-c345-49de-8e31-2e993b7bdc98} + {c92145d4-f510-4e91-b988-5a2be16d451d} - {3ccb0429-5135-40ce-8d91-3b5fb57faf21} + {42ca46e6-2f0b-4b1f-a3d6-a5050b6e2a0f} - {f3055998-c867-4109-b775-0dddc99159dd} + {b2aac329-2293-4a25-891e-509859a1f97b} diff --git a/Util/Util_vs71.vcproj b/Util/Util_vs71.vcproj index 560bdaeba..7a3ec404c 100644 --- a/Util/Util_vs71.vcproj +++ b/Util/Util_vs71.vcproj @@ -37,7 +37,8 @@ Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" CompileAs="0" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> @@ -274,7 +280,8 @@ Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" CompileAs="0" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> diff --git a/Util/Util_vs80.vcproj b/Util/Util_vs80.vcproj index c3c5a1260..ac7d021fb 100644 --- a/Util/Util_vs80.vcproj +++ b/Util/Util_vs80.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="4" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 ..\bin64\ - obj64\$(Configuration)\ + obj64\Util\$(Configuration)\ true ..\bin64\ - obj64\$(Configuration)\ + obj64\Util\$(Configuration)\ false ..\lib64\ - obj64\$(Configuration)\ + obj64\Util\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Util\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Util\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Util\$(Configuration)\ PocoUtil64d PocoUtilmdd PocoUtilmtd @@ -119,6 +119,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) @@ -130,6 +131,7 @@ Console ..\lib64\PocoUtild.lib MachineX64 + %(AdditionalOptions) @@ -152,6 +154,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) @@ -164,6 +167,7 @@ true ..\lib64\PocoUtil.lib MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib64\PocoUtilmtd.lib @@ -210,6 +215,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib64\PocoUtilmt.lib @@ -234,6 +240,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib64\PocoUtilmdd.lib @@ -259,6 +266,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib64\PocoUtilmd.lib diff --git a/Util/Util_x64_vs100.vcxproj.filters b/Util/Util_x64_vs100.vcxproj.filters index f65208d82..6bfc8cc5a 100644 --- a/Util/Util_x64_vs100.vcxproj.filters +++ b/Util/Util_x64_vs100.vcxproj.filters @@ -2,58 +2,58 @@ - {e29128f1-d6f6-4ef3-b027-f6b47041d1e5} + {131b80fb-8348-4f3d-9210-9b5d36f9692c} - {80380b42-7193-4823-8849-7b774de93543} + {df698c20-ea59-4822-a471-2d6f5046e5c4} - {d0b9636a-bb74-4ce5-bee4-92a7aea9a9cb} + {592a5091-bedd-4cf0-a7ce-55a0493778ad} - {658f7323-3e1a-42a7-871f-2487ce617ba5} + {649a4d70-2604-407b-b66a-37c487d3eaee} - {178acd0f-2412-4866-9e59-8a4a2bd7a84d} + {24e1ef9d-8cd8-4b4c-989f-b0cc00f44510} - {d1a010f6-b167-42cc-ae2d-edcc9a7b539e} + {2f29ab23-7099-46b7-8694-533bba6e3801} - {4c62b9ce-3b25-4a37-9569-585d4a9c7e75} + {c051efcf-b587-4a2e-a668-b160baddd0d2} - {37e2ed07-4174-4a46-92e0-010510347335} + {0a308fb9-000d-40bf-afb6-fe153b35bbf1} - {26896373-4756-436e-9e88-56c51614912c} + {366a0051-3f11-46d8-9e5b-02899fd19539} - {8998a259-f0c6-4cff-b607-288cd7b16cd4} + {1c088164-1f95-4e0a-9089-cbcf4a3c3198} - {bd9037bb-46b8-4918-bf82-ef41a2843662} + {0faed843-3725-4087-9a36-680652544fbb} - {7acf9a1e-2d3e-44a4-9781-ece1d9d48c49} + {c4d844bb-d895-41b1-acfe-c94f983295d6} - {49e9821a-06ff-4eff-99e6-0e31eeeaa7a6} + {e3509f4d-6d12-4fe3-818f-5bd395b91431} - {8617c6cb-3d22-4bf0-8a6e-48847aac4002} + {c1d1b953-63d7-4e1d-b3b2-ac099774b8b5} - {9032a619-9b3b-480e-8eab-ac35c69444fa} + {831a7f26-c15f-4e31-9f0b-b1dd1ee794e3} - {add2c140-a5d6-4d00-9a1f-36f019b43414} + {76916042-d847-47cd-9d31-0201a7477a2a} - {06591c6a-80bc-4913-a8df-a6ddae628e85} + {c732e9a9-8f70-4756-9de6-d6589349a6eb} - {b8fab848-f2aa-481c-badd-c0e3d1b293ff} + {682b5ec3-f512-4381-becf-2c127fc4bbd5} diff --git a/Util/Util_x64_vs110.vcxproj b/Util/Util_x64_vs110.vcxproj index 6f9e51946..c9a521cda 100644 --- a/Util/Util_x64_vs110.vcxproj +++ b/Util/Util_x64_vs110.vcxproj @@ -95,29 +95,29 @@ ..\bin64\ - obj64\$(Configuration)\ + obj64\Util\$(Configuration)\ true ..\bin64\ - obj64\$(Configuration)\ + obj64\Util\$(Configuration)\ false ..\lib64\ - obj64\$(Configuration)\ + obj64\Util\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Util\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Util\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Util\$(Configuration)\ diff --git a/Util/Util_x64_vs110.vcxproj.filters b/Util/Util_x64_vs110.vcxproj.filters index 779dad0b6..e37b02e93 100644 --- a/Util/Util_x64_vs110.vcxproj.filters +++ b/Util/Util_x64_vs110.vcxproj.filters @@ -2,58 +2,58 @@ - {b41c5e00-6924-4102-96ef-7b3ea07a9f92} + {366f52b7-7a98-428e-a479-f4520d344966} - {61ed8eaf-f58a-4c49-965c-f02a3be711c9} + {975ae117-77b9-41ba-b590-490358497943} - {6bc7a22b-1d50-48f4-8304-c78e877a8ec3} + {adeab4de-b074-4866-bd7c-a951cd1bea7f} - {67996293-dd39-4f45-9319-7b232e760e1f} + {18397199-cd4c-449b-89fa-d72518dc92ad} - {0a733f40-6ff2-4d7e-8097-6595eda39db6} + {06489814-f8d7-4d0e-bb54-3203cc6596d6} - {d81886c2-7cea-4062-bc7c-5ec6df7c8bd2} + {0e2a3084-3786-40a7-8d01-25a70f93c82f} - {82382782-64ac-4a38-be7b-14f6809cba43} + {38284d64-77a6-4cef-95b9-2cdb62f7d78b} - {c41e00f6-675d-4012-b52e-6b99b68ab264} + {bdde4c37-9f08-4fde-b9fb-3bbebdb4998f} - {cf289fee-3288-4a15-bb79-905f497b87f2} + {1997155f-d3ea-41e3-82ae-f7bf39a032cf} - {b8053e8a-9294-4850-946a-d49c465e4e87} + {b3281947-40f4-46dd-9af2-a4c7d3b2f0c0} - {bbe77455-37d8-4b4e-a647-822a32561b93} + {5b49edeb-c940-4b9d-889f-73360036a529} - {d5058507-9dfa-4c9c-8033-5ec1bc226b8d} + {8140a01d-2fbe-468d-8644-3dced20fb83e} - {cd11c027-520d-4109-965b-e90dfe1f733c} + {0cd66b7f-68d0-4245-806b-c86bd9dd301a} - {fa805d59-2974-4dd0-b6e2-2e03ca802e0a} + {4539140a-6378-47f0-98b0-96a1301ab727} - {937d6ff2-7637-44c7-b300-4f7cb7ae4c4e} + {01a18f05-d58e-4c28-a679-c8d6f2d92061} - {9e5d7e32-02bd-48c0-b058-63acf3535523} + {d60c920d-5b99-4dc6-b914-f52530203543} - {7ce35864-cb01-4bc7-9233-493c7b928033} + {293d5416-1ab8-408c-a1c3-cf793cee96d8} - {5ff7686d-51a2-4ada-b554-d870e2344cf4} + {869d8d8c-6a39-4c06-8b65-59d7f4db4dfa} diff --git a/Util/Util_x64_vs120.vcxproj b/Util/Util_x64_vs120.vcxproj index ae4eab1a7..0708a288d 100644 --- a/Util/Util_x64_vs120.vcxproj +++ b/Util/Util_x64_vs120.vcxproj @@ -95,29 +95,29 @@ ..\bin64\ - obj64\$(Configuration)\ + obj64\Util\$(Configuration)\ true ..\bin64\ - obj64\$(Configuration)\ + obj64\Util\$(Configuration)\ false ..\lib64\ - obj64\$(Configuration)\ + obj64\Util\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Util\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Util\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Util\$(Configuration)\ diff --git a/Util/Util_x64_vs120.vcxproj.filters b/Util/Util_x64_vs120.vcxproj.filters index 98a9ce242..7772bc0d8 100644 --- a/Util/Util_x64_vs120.vcxproj.filters +++ b/Util/Util_x64_vs120.vcxproj.filters @@ -2,58 +2,58 @@ - {b400c6fc-9ef0-4004-9fd2-6305bf171571} + {c7c2ed20-6229-45de-a0a2-1c7f7a66b57b} - {a873f75e-df65-474d-b53e-428efc021ab5} + {13abd09b-04f1-4f89-a351-c4fdb6429302} - {c79d5117-95ff-484c-ba11-511e5392cd3c} + {0baf1251-8a33-4cba-ae81-2d49cc66d958} - {77cba271-8db9-421a-9aba-0c5e55d50a23} + {4df49576-bdb2-42bc-bb22-4a9a02837d58} - {8c77580e-73a6-407f-aa55-7ee49490951c} + {163a9079-9219-4690-84d0-8d66066c12b2} - {905a18e2-817d-4306-b996-236622988ab6} + {7c71b988-3079-4323-be6a-7e90eee53146} - {fb5c33c3-4a7d-4144-a60f-85d90149f844} + {170bcc0a-79e1-4acd-b235-9520d344972d} - {57f118bc-bd49-4ff6-8873-bd7891fee4b6} + {118d88b1-10cd-425e-ba02-150cb262efc5} - {1ef4d5f1-dc90-49e2-bf99-7291c52766b3} + {efcf7be3-d9e7-4901-b70d-35bcd8b3a1c6} - {b38fc85b-70b7-4aa2-b474-d71ce35649b5} + {cf3de269-19a8-4142-af92-a44f10efd786} - {aad7d956-f7fa-4e99-989a-278e60dfc6f5} + {aad367d5-c9df-4c63-ab0b-28ce1c2fee7e} - {9c4e5523-adae-495a-a7b6-ca7618cfbc55} + {f21e18a4-9e1e-448b-928d-0cb0aea6ca86} - {06e4b6be-dc93-4bfb-8e28-4a282cc9b885} + {f624cce7-74ff-4960-b17d-cb7aa6ec2c67} - {c327731e-783e-4ba3-8c3d-907ff9d0aa87} + {ebe66114-b261-4dea-9848-56a1a4fbbd74} - {6dbf8684-b459-41ff-8366-f2c32c1bbd45} + {3dbfae9f-4e55-4ea4-be6c-64a0af7c497c} - {a316fe01-3790-40c3-b83c-dde825d4bd39} + {eda75bfa-3d56-47bb-8708-9704d42a2fc5} - {a899188f-0737-4339-b4ba-409638cdc5b2} + {7bf59ba0-0617-4b82-84d6-f8cd6ac35331} - {f6e3e25d-6eff-4aad-b8fd-16041655bc3a} + {dd34cdff-4694-42dc-82f3-e0558485aa19} diff --git a/Util/Util_x64_vs90.vcproj b/Util/Util_x64_vs90.vcproj index 6d52577ad..b55425748 100644 --- a/Util/Util_x64_vs90.vcproj +++ b/Util/Util_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> & value); + /// Sets the string value (REG_BINARY) with the given name. + /// An empty name denotes the default value. + + std::vector getBinary(const std::string& name); + /// Returns the string value (REG_BINARY) with the given name. + /// An empty name denotes the default value. + /// + /// Throws a NotFoundException if the value does not exist. + void setInt(const std::string& name, int value); /// Sets the numeric (REG_DWORD) value with the given name. /// An empty name denotes the default value. @@ -108,6 +119,10 @@ public: #if defined(POCO_HAVE_INT64) + void setInt64(const std::string& name, Poco::Int64 value); + /// Sets the numeric (REG_QWORD) value with the given name. + /// An empty name denotes the default value. + Poco::Int64 getInt64(const std::string& name); /// Returns the numeric value (REG_QWORD) with the given name. /// An empty name denotes the default value. diff --git a/Util/samples/SampleApp/SampleApp_CE_vs90.vcproj b/Util/samples/SampleApp/SampleApp_CE_vs90.vcproj index 95390c72a..db69e12a5 100644 --- a/Util/samples/SampleApp/SampleApp_CE_vs90.vcproj +++ b/Util/samples/SampleApp/SampleApp_CE_vs90.vcproj @@ -46,7 +46,8 @@ CompileAs="0" DisableSpecificWarnings="4800;" CompileForArchitecture="2" - InterworkCalls="false"/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\SampleApp\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\SampleApp\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\SampleApp\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\SampleApp\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\SampleApp\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\SampleApp\$(Platform)\$(Configuration)\ false diff --git a/Util/samples/SampleApp/SampleApp_WEC2013_vs110.vcxproj.filters b/Util/samples/SampleApp/SampleApp_WEC2013_vs110.vcxproj.filters index e0f83ef11..3f9cbae04 100644 --- a/Util/samples/SampleApp/SampleApp_WEC2013_vs110.vcxproj.filters +++ b/Util/samples/SampleApp/SampleApp_WEC2013_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {d4fcb507-8973-4f0a-bb2d-8b15cfbfab81} + {da7bfe38-f393-4f0e-8bb3-3ab493675066} - {102feb19-465f-4ab6-a841-6d04353a3f30} + {69228175-1e77-4dd0-bf11-7fc912429b59} diff --git a/Util/samples/SampleApp/SampleApp_WEC2013_vs120.vcxproj b/Util/samples/SampleApp/SampleApp_WEC2013_vs120.vcxproj index d87f0a386..72f7c9949 100644 --- a/Util/samples/SampleApp/SampleApp_WEC2013_vs120.vcxproj +++ b/Util/samples/SampleApp/SampleApp_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\SampleApp\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\SampleApp\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\SampleApp\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\SampleApp\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\SampleApp\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\SampleApp\$(Platform)\$(Configuration)\ false diff --git a/Util/samples/SampleApp/SampleApp_WEC2013_vs120.vcxproj.filters b/Util/samples/SampleApp/SampleApp_WEC2013_vs120.vcxproj.filters index 6b3d68796..417761a02 100644 --- a/Util/samples/SampleApp/SampleApp_WEC2013_vs120.vcxproj.filters +++ b/Util/samples/SampleApp/SampleApp_WEC2013_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {dc28d610-230f-4e77-a668-e8128f7d48ea} + {71238eef-1335-470a-a7f2-0515cc7b8552} - {c4cb6f57-5b3b-4374-867e-9970b0be7360} + {a915df53-e1c2-402a-976c-d8c67ffa0769} diff --git a/Util/samples/SampleApp/SampleApp_vs100.vcxproj b/Util/samples/SampleApp/SampleApp_vs100.vcxproj index 526257954..e7d9de8de 100644 --- a/Util/samples/SampleApp/SampleApp_vs100.vcxproj +++ b/Util/samples/SampleApp/SampleApp_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\SampleApp\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\SampleApp\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\SampleApp\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\SampleApp\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\SampleApp\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\SampleApp\$(Configuration)\ false SampleAppd SampleAppd @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\SampleAppd.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\SampleAppd.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\SampleAppd.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Util/samples/SampleApp/SampleApp_vs100.vcxproj.filters b/Util/samples/SampleApp/SampleApp_vs100.vcxproj.filters index 38a29e845..190cbb0b4 100644 --- a/Util/samples/SampleApp/SampleApp_vs100.vcxproj.filters +++ b/Util/samples/SampleApp/SampleApp_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {a7b02bc7-3a7e-4c3d-bda9-ec0251081112} + {754772a3-5a3d-4fc9-9410-ba14d1c02e3e} - {91ee6d2f-7012-4d27-96cf-ab05630c33a4} + {3414676e-ac4e-4f4e-b10b-ef2720017478} diff --git a/Util/samples/SampleApp/SampleApp_vs110.vcxproj b/Util/samples/SampleApp/SampleApp_vs110.vcxproj index 6b8aa471a..4141dc537 100644 --- a/Util/samples/SampleApp/SampleApp_vs110.vcxproj +++ b/Util/samples/SampleApp/SampleApp_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\SampleApp\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\SampleApp\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\SampleApp\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\SampleApp\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\SampleApp\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\SampleApp\$(Configuration)\ false diff --git a/Util/samples/SampleApp/SampleApp_vs110.vcxproj.filters b/Util/samples/SampleApp/SampleApp_vs110.vcxproj.filters index e5538da36..8a00c4b91 100644 --- a/Util/samples/SampleApp/SampleApp_vs110.vcxproj.filters +++ b/Util/samples/SampleApp/SampleApp_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {401353f1-46f4-478c-a0a9-f7aed66a8086} + {b5f3e704-3ba2-4c9d-b676-7109424b8bc3} - {211249c5-0075-452b-a3a3-2cd1b26bd4bc} + {54fd8880-a81e-4e21-8c98-37ea238f3531} diff --git a/Util/samples/SampleApp/SampleApp_vs120.vcxproj b/Util/samples/SampleApp/SampleApp_vs120.vcxproj index ece5c063f..eda621892 100644 --- a/Util/samples/SampleApp/SampleApp_vs120.vcxproj +++ b/Util/samples/SampleApp/SampleApp_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\SampleApp\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\SampleApp\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\SampleApp\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\SampleApp\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\SampleApp\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\SampleApp\$(Configuration)\ false diff --git a/Util/samples/SampleApp/SampleApp_vs120.vcxproj.filters b/Util/samples/SampleApp/SampleApp_vs120.vcxproj.filters index 7e878c600..a7171009c 100644 --- a/Util/samples/SampleApp/SampleApp_vs120.vcxproj.filters +++ b/Util/samples/SampleApp/SampleApp_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {4900b689-4a66-47a6-b160-da24b5dfeabc} + {1882fc3b-43be-442c-a2b9-8155e941649a} - {7902418e-6c61-4d40-be50-7d1728f7d1a3} + {1b574dc8-417a-4c49-a30a-a17e275e36b2} diff --git a/Util/samples/SampleApp/SampleApp_vs71.vcproj b/Util/samples/SampleApp/SampleApp_vs71.vcproj index 1a0e5c881..52615b33d 100644 --- a/Util/samples/SampleApp/SampleApp_vs71.vcproj +++ b/Util/samples/SampleApp/SampleApp_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\SampleApp\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\SampleApp\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\SampleApp\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\SampleApp\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\SampleApp\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\SampleApp\$(Configuration)\ false SampleAppd SampleAppd @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\SampleAppd.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\SampleAppd.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\SampleAppd.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Util/samples/SampleApp/SampleApp_x64_vs100.vcxproj.filters b/Util/samples/SampleApp/SampleApp_x64_vs100.vcxproj.filters index ff126d7bd..731d07368 100644 --- a/Util/samples/SampleApp/SampleApp_x64_vs100.vcxproj.filters +++ b/Util/samples/SampleApp/SampleApp_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {dd29089f-60db-413a-b7c9-b820e8381fda} + {e6cccccc-9466-4db0-99d9-be6dd51a2774} - {124c46b8-8c51-4c41-9156-4af2defcfe29} + {20267685-50ef-41e9-85e4-fa6554e28a79} diff --git a/Util/samples/SampleApp/SampleApp_x64_vs110.vcxproj b/Util/samples/SampleApp/SampleApp_x64_vs110.vcxproj index e15fa6ee9..9e2f437e8 100644 --- a/Util/samples/SampleApp/SampleApp_x64_vs110.vcxproj +++ b/Util/samples/SampleApp/SampleApp_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\SampleApp\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\SampleApp\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\SampleApp\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\SampleApp\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\SampleApp\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\SampleApp\$(Configuration)\ false diff --git a/Util/samples/SampleApp/SampleApp_x64_vs110.vcxproj.filters b/Util/samples/SampleApp/SampleApp_x64_vs110.vcxproj.filters index c0f2b1975..d8d056851 100644 --- a/Util/samples/SampleApp/SampleApp_x64_vs110.vcxproj.filters +++ b/Util/samples/SampleApp/SampleApp_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {34e20060-99cd-4ffb-ae74-691f2c5647bb} + {87cc2472-1a59-4fde-8561-52d7303e86fe} - {45e85cfe-9fb7-41d6-bbe9-481f915d3d64} + {4fac145f-d3d4-4860-8585-82238895f658} diff --git a/Util/samples/SampleApp/SampleApp_x64_vs120.vcxproj b/Util/samples/SampleApp/SampleApp_x64_vs120.vcxproj index 2f06bca4a..48363d8e6 100644 --- a/Util/samples/SampleApp/SampleApp_x64_vs120.vcxproj +++ b/Util/samples/SampleApp/SampleApp_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\SampleApp\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\SampleApp\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\SampleApp\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\SampleApp\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\SampleApp\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\SampleApp\$(Configuration)\ false diff --git a/Util/samples/SampleApp/SampleApp_x64_vs120.vcxproj.filters b/Util/samples/SampleApp/SampleApp_x64_vs120.vcxproj.filters index 429cf9a0b..b99d9c7de 100644 --- a/Util/samples/SampleApp/SampleApp_x64_vs120.vcxproj.filters +++ b/Util/samples/SampleApp/SampleApp_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {01f83f6f-b486-4378-b1a3-e0df714a5a92} + {b4dbcf94-7788-4367-8c98-22cbb37ababe} - {d6c278c1-30a5-4a8f-b9e4-93460c1aa4c4} + {912f2125-68a5-49ea-b19e-1a7ceacacf38} diff --git a/Util/samples/SampleApp/SampleApp_x64_vs90.vcproj b/Util/samples/SampleApp/SampleApp_x64_vs90.vcproj index d7288ddbd..b1e342510 100644 --- a/Util/samples/SampleApp/SampleApp_x64_vs90.vcproj +++ b/Util/samples/SampleApp/SampleApp_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\SampleServer\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\SampleServer\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\SampleServer\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\SampleServer\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\SampleServer\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\SampleServer\$(Platform)\$(Configuration)\ false diff --git a/Util/samples/SampleServer/SampleServer_WEC2013_vs110.vcxproj.filters b/Util/samples/SampleServer/SampleServer_WEC2013_vs110.vcxproj.filters index ae496ccb9..a84f118f0 100644 --- a/Util/samples/SampleServer/SampleServer_WEC2013_vs110.vcxproj.filters +++ b/Util/samples/SampleServer/SampleServer_WEC2013_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {79f837ef-557b-4176-b83a-d8b6b4118942} + {0de4a732-40fa-43ff-a07b-145f00bc75a4} - {361ee6f3-2994-4e97-9e92-46fa44d47f3e} + {5bb30d03-917f-47b2-a24b-c712edd653a5} diff --git a/Util/samples/SampleServer/SampleServer_WEC2013_vs120.vcxproj b/Util/samples/SampleServer/SampleServer_WEC2013_vs120.vcxproj index 5e8d7d8f3..d6253e77a 100644 --- a/Util/samples/SampleServer/SampleServer_WEC2013_vs120.vcxproj +++ b/Util/samples/SampleServer/SampleServer_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\SampleServer\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\SampleServer\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\SampleServer\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\SampleServer\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\SampleServer\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\SampleServer\$(Platform)\$(Configuration)\ false diff --git a/Util/samples/SampleServer/SampleServer_WEC2013_vs120.vcxproj.filters b/Util/samples/SampleServer/SampleServer_WEC2013_vs120.vcxproj.filters index 9e1a1351c..39b7dce56 100644 --- a/Util/samples/SampleServer/SampleServer_WEC2013_vs120.vcxproj.filters +++ b/Util/samples/SampleServer/SampleServer_WEC2013_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {6d90149a-4076-4656-9118-00a6fc9a2799} + {14867058-0b99-42c9-be31-ae66ac07a5eb} - {00d2ca48-2ced-457e-b518-901ac0fcf905} + {9e8bd30c-c59e-41c4-9585-e831f12105c8} diff --git a/Util/samples/SampleServer/SampleServer_vs100.vcxproj b/Util/samples/SampleServer/SampleServer_vs100.vcxproj index 7e63d503b..af0921d8a 100644 --- a/Util/samples/SampleServer/SampleServer_vs100.vcxproj +++ b/Util/samples/SampleServer/SampleServer_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\SampleServer\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\SampleServer\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\SampleServer\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\SampleServer\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\SampleServer\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\SampleServer\$(Configuration)\ false SampleServerd SampleServerd @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\SampleServerd.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\SampleServerd.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\SampleServerd.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Util/samples/SampleServer/SampleServer_vs100.vcxproj.filters b/Util/samples/SampleServer/SampleServer_vs100.vcxproj.filters index e93e8d56c..f0414fe90 100644 --- a/Util/samples/SampleServer/SampleServer_vs100.vcxproj.filters +++ b/Util/samples/SampleServer/SampleServer_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {ddd06775-118b-4f58-ad02-fdb452397326} + {af4cfb37-c8be-4b52-b922-5212011333a0} - {34b96c40-5d34-4b36-a612-dc74730c373c} + {34350827-5e9d-4a77-bc96-106f1abfd7bb} diff --git a/Util/samples/SampleServer/SampleServer_vs110.vcxproj b/Util/samples/SampleServer/SampleServer_vs110.vcxproj index dcec1e68a..a7f645377 100644 --- a/Util/samples/SampleServer/SampleServer_vs110.vcxproj +++ b/Util/samples/SampleServer/SampleServer_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\SampleServer\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\SampleServer\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\SampleServer\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\SampleServer\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\SampleServer\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\SampleServer\$(Configuration)\ false diff --git a/Util/samples/SampleServer/SampleServer_vs110.vcxproj.filters b/Util/samples/SampleServer/SampleServer_vs110.vcxproj.filters index 7d4271239..41c003ec8 100644 --- a/Util/samples/SampleServer/SampleServer_vs110.vcxproj.filters +++ b/Util/samples/SampleServer/SampleServer_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {1ae5d70d-752d-4537-8a96-ff358d8a6f9e} + {51b9ef8c-2b42-4c70-8a5e-ddbd37701748} - {fbbba72c-6a2b-41f9-8df9-4b181903cb59} + {6c15b894-9053-4f9f-8545-59e968ebcb49} diff --git a/Util/samples/SampleServer/SampleServer_vs120.vcxproj b/Util/samples/SampleServer/SampleServer_vs120.vcxproj index 4b2f933ce..282ebc8f7 100644 --- a/Util/samples/SampleServer/SampleServer_vs120.vcxproj +++ b/Util/samples/SampleServer/SampleServer_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\SampleServer\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\SampleServer\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\SampleServer\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\SampleServer\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\SampleServer\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\SampleServer\$(Configuration)\ false diff --git a/Util/samples/SampleServer/SampleServer_vs120.vcxproj.filters b/Util/samples/SampleServer/SampleServer_vs120.vcxproj.filters index 09fe7ea08..c3c6bd3ba 100644 --- a/Util/samples/SampleServer/SampleServer_vs120.vcxproj.filters +++ b/Util/samples/SampleServer/SampleServer_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {d73792c8-777c-4d2f-90f8-e8ef9c502258} + {7127c765-5db0-4c90-8f7c-30f0d22cfc52} - {5713d959-c891-41bb-a2c3-51b6f46a3c0b} + {af82fdcc-2dbe-41e7-9363-ca9d297a97ff} diff --git a/Util/samples/SampleServer/SampleServer_vs71.vcproj b/Util/samples/SampleServer/SampleServer_vs71.vcproj index bd5b718b6..059cc32ab 100644 --- a/Util/samples/SampleServer/SampleServer_vs71.vcproj +++ b/Util/samples/SampleServer/SampleServer_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\SampleServer\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\SampleServer\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\SampleServer\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\SampleServer\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\SampleServer\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\SampleServer\$(Configuration)\ false SampleServerd SampleServerd @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\SampleServerd.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\SampleServerd.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\SampleServerd.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Util/samples/SampleServer/SampleServer_x64_vs100.vcxproj.filters b/Util/samples/SampleServer/SampleServer_x64_vs100.vcxproj.filters index 049b82a38..19f4eef90 100644 --- a/Util/samples/SampleServer/SampleServer_x64_vs100.vcxproj.filters +++ b/Util/samples/SampleServer/SampleServer_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {7b4207a9-aee2-4083-bc1c-f5ebbd16d219} + {0e1e9b35-2bed-451b-b098-64b7019e80fc} - {e4c68038-4b06-4c87-a012-da3339fe48ca} + {5548e3fa-3bdc-448c-b563-1971ec8e6272} diff --git a/Util/samples/SampleServer/SampleServer_x64_vs110.vcxproj b/Util/samples/SampleServer/SampleServer_x64_vs110.vcxproj index e38f503a1..3fba23fa5 100644 --- a/Util/samples/SampleServer/SampleServer_x64_vs110.vcxproj +++ b/Util/samples/SampleServer/SampleServer_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\SampleServer\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\SampleServer\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\SampleServer\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\SampleServer\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\SampleServer\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\SampleServer\$(Configuration)\ false diff --git a/Util/samples/SampleServer/SampleServer_x64_vs110.vcxproj.filters b/Util/samples/SampleServer/SampleServer_x64_vs110.vcxproj.filters index 15c825f5c..7b36d43e3 100644 --- a/Util/samples/SampleServer/SampleServer_x64_vs110.vcxproj.filters +++ b/Util/samples/SampleServer/SampleServer_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {cb07cf6d-0435-4312-8556-007badfd865f} + {7a37c54c-61d5-4c16-a15b-503c141dfb3f} - {42d2d280-5855-4294-8ef7-b35315151159} + {eb8ee115-c411-4646-bf38-f4eb6ec71523} diff --git a/Util/samples/SampleServer/SampleServer_x64_vs120.vcxproj b/Util/samples/SampleServer/SampleServer_x64_vs120.vcxproj index 9a9069d65..e2d7ad7bd 100644 --- a/Util/samples/SampleServer/SampleServer_x64_vs120.vcxproj +++ b/Util/samples/SampleServer/SampleServer_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\SampleServer\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\SampleServer\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\SampleServer\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\SampleServer\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\SampleServer\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\SampleServer\$(Configuration)\ false diff --git a/Util/samples/SampleServer/SampleServer_x64_vs120.vcxproj.filters b/Util/samples/SampleServer/SampleServer_x64_vs120.vcxproj.filters index 1c508405b..f19dc62c3 100644 --- a/Util/samples/SampleServer/SampleServer_x64_vs120.vcxproj.filters +++ b/Util/samples/SampleServer/SampleServer_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {56f2e8a0-f3a5-4f8b-8ed5-9f0d08b7712d} + {16c204ea-816b-47e8-a203-2fd43bf8c509} - {855b0155-f998-490c-8019-a9ee57a2bf8d} + {347483f4-cf23-4873-b543-b216f325b226} diff --git a/Util/samples/SampleServer/SampleServer_x64_vs90.vcproj b/Util/samples/SampleServer/SampleServer_x64_vs90.vcproj index 0e5f4b9a1..65de49b6a 100644 --- a/Util/samples/SampleServer/SampleServer_x64_vs90.vcproj +++ b/Util/samples/SampleServer/SampleServer_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\Units\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\Units\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\Units\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\Units\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\Units\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\Units\$(Platform)\$(Configuration)\ false diff --git a/Util/samples/Units/Units_WEC2013_vs110.vcxproj.filters b/Util/samples/Units/Units_WEC2013_vs110.vcxproj.filters index 044b50f7b..a810324d7 100644 --- a/Util/samples/Units/Units_WEC2013_vs110.vcxproj.filters +++ b/Util/samples/Units/Units_WEC2013_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {4df59e07-4869-40b6-a79e-31d884457c97} + {de258c1a-485a-40a4-886c-4bfdf46ac619} - {b44c43a9-6866-4812-a795-3e1f8e440c3e} + {5fb1e3b4-2675-4b35-92b5-0a9169c11349} diff --git a/Util/samples/Units/Units_WEC2013_vs120.vcxproj b/Util/samples/Units/Units_WEC2013_vs120.vcxproj index bf6c191d0..66111d17d 100644 --- a/Util/samples/Units/Units_WEC2013_vs120.vcxproj +++ b/Util/samples/Units/Units_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\Units\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\Units\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\Units\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\Units\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\Units\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\Units\$(Platform)\$(Configuration)\ false diff --git a/Util/samples/Units/Units_WEC2013_vs120.vcxproj.filters b/Util/samples/Units/Units_WEC2013_vs120.vcxproj.filters index fb620f71b..09951b4c8 100644 --- a/Util/samples/Units/Units_WEC2013_vs120.vcxproj.filters +++ b/Util/samples/Units/Units_WEC2013_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {6171172d-ca69-4d6a-9149-c01b31bf6e1c} + {257c803b-f80f-4a2e-a671-3df68abc5e54} - {aa6de685-e111-4c89-9e6e-c72c5d7bbddc} + {ee88320b-270f-4aaf-8135-37a852829f08} diff --git a/Util/samples/Units/Units_vs100.vcxproj b/Util/samples/Units/Units_vs100.vcxproj index 79acbba5f..2fca2ca05 100644 --- a/Util/samples/Units/Units_vs100.vcxproj +++ b/Util/samples/Units/Units_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\Units\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\Units\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\Units\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\Units\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\Units\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\Units\$(Configuration)\ false Unitsd Unitsd @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\Unitsd.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\Unitsd.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\Unitsd.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Util/samples/Units/Units_vs100.vcxproj.filters b/Util/samples/Units/Units_vs100.vcxproj.filters index 8136ba61e..cfd5cd00b 100644 --- a/Util/samples/Units/Units_vs100.vcxproj.filters +++ b/Util/samples/Units/Units_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {ea715075-2ff3-404e-b569-7f912bf6d73e} + {9df67c45-d628-471b-a1ec-bd03acbf7569} - {2fc4e557-ea22-48bf-b434-04ef4e0fa365} + {82ff81f9-b23e-4a7a-b866-32736747d288} diff --git a/Util/samples/Units/Units_vs110.vcxproj b/Util/samples/Units/Units_vs110.vcxproj index 6dfb723f6..3d2a634bf 100644 --- a/Util/samples/Units/Units_vs110.vcxproj +++ b/Util/samples/Units/Units_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\Units\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\Units\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\Units\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\Units\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\Units\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\Units\$(Configuration)\ false diff --git a/Util/samples/Units/Units_vs110.vcxproj.filters b/Util/samples/Units/Units_vs110.vcxproj.filters index ac0fc27c9..03545913a 100644 --- a/Util/samples/Units/Units_vs110.vcxproj.filters +++ b/Util/samples/Units/Units_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {af10826d-7765-4130-9814-afcbaa76690a} + {f75a7160-31a0-42ae-b439-1eb9c749863a} - {aeef1088-b333-4d60-9fbf-5ce99b9384f9} + {e260f25f-7693-43cc-81a7-e9e8d691e50d} diff --git a/Util/samples/Units/Units_vs120.vcxproj b/Util/samples/Units/Units_vs120.vcxproj index 6c78d4c4f..df738264a 100644 --- a/Util/samples/Units/Units_vs120.vcxproj +++ b/Util/samples/Units/Units_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\Units\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\Units\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\Units\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\Units\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\Units\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\Units\$(Configuration)\ false diff --git a/Util/samples/Units/Units_vs120.vcxproj.filters b/Util/samples/Units/Units_vs120.vcxproj.filters index f29d3c36a..cbb0c0abd 100644 --- a/Util/samples/Units/Units_vs120.vcxproj.filters +++ b/Util/samples/Units/Units_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {2125e591-52ee-4f82-96c1-6bb0b65f8f88} + {aa4f3672-6136-4d4d-ae4c-f4674bc9a972} - {f74b0b82-1bdb-4d6e-86b5-2142c61c5b2b} + {f41477e7-a773-4600-9212-8c9dbb155757} diff --git a/Util/samples/Units/Units_vs71.vcproj b/Util/samples/Units/Units_vs71.vcproj index ee9c4ff13..cadf12a4c 100644 --- a/Util/samples/Units/Units_vs71.vcproj +++ b/Util/samples/Units/Units_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\Units\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\Units\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Units\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Units\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\Units\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\Units\$(Configuration)\ false Unitsd Unitsd @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\Unitsd.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\Unitsd.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\Unitsd.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Util/samples/Units/Units_x64_vs100.vcxproj.filters b/Util/samples/Units/Units_x64_vs100.vcxproj.filters index dcf5f293c..d869a9b93 100644 --- a/Util/samples/Units/Units_x64_vs100.vcxproj.filters +++ b/Util/samples/Units/Units_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {fa0c1b23-17e9-458e-8874-c109e5cf6c49} + {818e44b6-140f-4ddf-bb47-411d3eff7896} - {5d33ccca-6b11-4a53-83c6-5c7e87e822b1} + {551c6ee1-71ec-4f3e-95a7-d6b3630f09a5} diff --git a/Util/samples/Units/Units_x64_vs110.vcxproj b/Util/samples/Units/Units_x64_vs110.vcxproj index c99a34c96..22cf87de2 100644 --- a/Util/samples/Units/Units_x64_vs110.vcxproj +++ b/Util/samples/Units/Units_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\Units\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\Units\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Units\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Units\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\Units\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\Units\$(Configuration)\ false diff --git a/Util/samples/Units/Units_x64_vs110.vcxproj.filters b/Util/samples/Units/Units_x64_vs110.vcxproj.filters index 43154d941..5e13c31a2 100644 --- a/Util/samples/Units/Units_x64_vs110.vcxproj.filters +++ b/Util/samples/Units/Units_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {1738b2a8-a266-4ef3-8a93-5c250e8f1074} + {b55ff4ff-071f-4fcf-aeb8-690d09005694} - {5592bbe2-e505-4bf4-a2db-55310e87e583} + {60f2f6ea-4583-4065-9b15-0cb911e0287d} diff --git a/Util/samples/Units/Units_x64_vs120.vcxproj b/Util/samples/Units/Units_x64_vs120.vcxproj index 8146f72c6..4e4aa6214 100644 --- a/Util/samples/Units/Units_x64_vs120.vcxproj +++ b/Util/samples/Units/Units_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\Units\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\Units\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Units\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\Units\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\Units\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\Units\$(Configuration)\ false diff --git a/Util/samples/Units/Units_x64_vs120.vcxproj.filters b/Util/samples/Units/Units_x64_vs120.vcxproj.filters index 2dc0f9b46..f101ddfa3 100644 --- a/Util/samples/Units/Units_x64_vs120.vcxproj.filters +++ b/Util/samples/Units/Units_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {5db0ca4f-d9af-4294-8f92-644a6fb6474c} + {48ec4ef1-b3ef-4f3c-914f-3be241d94e10} - {5503f20f-76a8-4aa2-9e7c-d541b9c1a09b} + {1991db39-8dc0-42be-803a-c8eedb1c9352} diff --git a/Util/samples/Units/Units_x64_vs90.vcproj b/Util/samples/Units/Units_x64_vs90.vcproj index a3efba918..6141695a5 100644 --- a/Util/samples/Units/Units_x64_vs90.vcproj +++ b/Util/samples/Units/Units_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\pkill\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\pkill\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\pkill\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\pkill\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\pkill\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\pkill\$(Platform)\$(Configuration)\ false diff --git a/Util/samples/pkill/pkill_WEC2013_vs110.vcxproj.filters b/Util/samples/pkill/pkill_WEC2013_vs110.vcxproj.filters index e39e9e875..19702295b 100644 --- a/Util/samples/pkill/pkill_WEC2013_vs110.vcxproj.filters +++ b/Util/samples/pkill/pkill_WEC2013_vs110.vcxproj.filters @@ -2,7 +2,7 @@ - {5a761db5-fc86-49bb-abc1-0551a1533f94} + {cf5d21d6-cdf9-48f7-a72b-0747a08bf7fa} diff --git a/Util/samples/pkill/pkill_WEC2013_vs120.vcxproj b/Util/samples/pkill/pkill_WEC2013_vs120.vcxproj index b1d5bbc53..83f23d1e5 100644 --- a/Util/samples/pkill/pkill_WEC2013_vs120.vcxproj +++ b/Util/samples/pkill/pkill_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\pkill\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\pkill\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\pkill\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\pkill\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\pkill\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\pkill\$(Platform)\$(Configuration)\ false diff --git a/Util/samples/pkill/pkill_WEC2013_vs120.vcxproj.filters b/Util/samples/pkill/pkill_WEC2013_vs120.vcxproj.filters index 9383054af..d94d57976 100644 --- a/Util/samples/pkill/pkill_WEC2013_vs120.vcxproj.filters +++ b/Util/samples/pkill/pkill_WEC2013_vs120.vcxproj.filters @@ -2,7 +2,7 @@ - {f9d6cf70-dfa6-44c0-a88c-5abc6981ae6e} + {02cf06b9-211c-4da0-9fe9-e623983b3dbd} diff --git a/Util/samples/pkill/pkill_vs100.vcxproj b/Util/samples/pkill/pkill_vs100.vcxproj index 0ccffaee2..45fd4a544 100644 --- a/Util/samples/pkill/pkill_vs100.vcxproj +++ b/Util/samples/pkill/pkill_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\pkill\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\pkill\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\pkill\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\pkill\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\pkill\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\pkill\$(Configuration)\ false pkilld pkilld @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\pkilld.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\pkilld.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\pkilld.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Util/samples/pkill/pkill_vs100.vcxproj.filters b/Util/samples/pkill/pkill_vs100.vcxproj.filters index 762348a5e..8fb8a746b 100644 --- a/Util/samples/pkill/pkill_vs100.vcxproj.filters +++ b/Util/samples/pkill/pkill_vs100.vcxproj.filters @@ -2,7 +2,7 @@ - {f16b4c51-53d0-40c1-8646-9087085a2dae} + {45ec9c03-4308-45a1-8da0-af154a22311c} diff --git a/Util/samples/pkill/pkill_vs110.vcxproj b/Util/samples/pkill/pkill_vs110.vcxproj index 816dbd0c4..84d9e23e5 100644 --- a/Util/samples/pkill/pkill_vs110.vcxproj +++ b/Util/samples/pkill/pkill_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\pkill\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\pkill\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\pkill\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\pkill\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\pkill\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\pkill\$(Configuration)\ false diff --git a/Util/samples/pkill/pkill_vs110.vcxproj.filters b/Util/samples/pkill/pkill_vs110.vcxproj.filters index 41d2ae0e8..c63d50f18 100644 --- a/Util/samples/pkill/pkill_vs110.vcxproj.filters +++ b/Util/samples/pkill/pkill_vs110.vcxproj.filters @@ -2,7 +2,7 @@ - {464058e9-147b-4df5-9c83-91bb999a8a9c} + {3ed34fc9-f157-4c59-94b9-edf23ee26bd5} diff --git a/Util/samples/pkill/pkill_vs120.vcxproj b/Util/samples/pkill/pkill_vs120.vcxproj index 8bee3d490..95a69b0fb 100644 --- a/Util/samples/pkill/pkill_vs120.vcxproj +++ b/Util/samples/pkill/pkill_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\pkill\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\pkill\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\pkill\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\pkill\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\pkill\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\pkill\$(Configuration)\ false diff --git a/Util/samples/pkill/pkill_vs120.vcxproj.filters b/Util/samples/pkill/pkill_vs120.vcxproj.filters index 3573a8b98..afc34365b 100644 --- a/Util/samples/pkill/pkill_vs120.vcxproj.filters +++ b/Util/samples/pkill/pkill_vs120.vcxproj.filters @@ -2,7 +2,7 @@ - {78baa5bf-0a19-4531-8906-2cb538d96858} + {8766e851-274b-4c4f-b380-dca9f42a5e92} diff --git a/Util/samples/pkill/pkill_vs71.vcproj b/Util/samples/pkill/pkill_vs71.vcproj index 7c044fb5c..bc26ab807 100644 --- a/Util/samples/pkill/pkill_vs71.vcproj +++ b/Util/samples/pkill/pkill_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\pkill\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\pkill\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\pkill\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\pkill\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\pkill\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\pkill\$(Configuration)\ false pkilld pkilld @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\pkilld.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\pkilld.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\pkilld.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Util/samples/pkill/pkill_x64_vs100.vcxproj.filters b/Util/samples/pkill/pkill_x64_vs100.vcxproj.filters index 2c1641558..2d7793dd0 100644 --- a/Util/samples/pkill/pkill_x64_vs100.vcxproj.filters +++ b/Util/samples/pkill/pkill_x64_vs100.vcxproj.filters @@ -2,7 +2,7 @@ - {4dcceba5-159c-469e-ac06-7b55f1f27e00} + {29116c43-2fc7-40fd-b395-3b44b5ad6974} diff --git a/Util/samples/pkill/pkill_x64_vs110.vcxproj b/Util/samples/pkill/pkill_x64_vs110.vcxproj index 21a7c43fb..26977b585 100644 --- a/Util/samples/pkill/pkill_x64_vs110.vcxproj +++ b/Util/samples/pkill/pkill_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\pkill\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\pkill\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\pkill\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\pkill\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\pkill\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\pkill\$(Configuration)\ false diff --git a/Util/samples/pkill/pkill_x64_vs110.vcxproj.filters b/Util/samples/pkill/pkill_x64_vs110.vcxproj.filters index 739cb6fc8..211b5c7d5 100644 --- a/Util/samples/pkill/pkill_x64_vs110.vcxproj.filters +++ b/Util/samples/pkill/pkill_x64_vs110.vcxproj.filters @@ -2,7 +2,7 @@ - {1e20782b-4994-4005-a6ed-6f46108fe650} + {8ce05b01-161e-4762-b8b2-6627cdeee39b} diff --git a/Util/samples/pkill/pkill_x64_vs120.vcxproj b/Util/samples/pkill/pkill_x64_vs120.vcxproj index 8d876248f..22c2ef323 100644 --- a/Util/samples/pkill/pkill_x64_vs120.vcxproj +++ b/Util/samples/pkill/pkill_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\pkill\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\pkill\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\pkill\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\pkill\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\pkill\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\pkill\$(Configuration)\ false diff --git a/Util/samples/pkill/pkill_x64_vs120.vcxproj.filters b/Util/samples/pkill/pkill_x64_vs120.vcxproj.filters index d79382ddf..567af05ef 100644 --- a/Util/samples/pkill/pkill_x64_vs120.vcxproj.filters +++ b/Util/samples/pkill/pkill_x64_vs120.vcxproj.filters @@ -2,7 +2,7 @@ - {5de38506-e112-490f-a971-5b114fc6a572} + {cd6dd315-fe26-46f4-8afe-d6886da3813f} diff --git a/Util/samples/pkill/pkill_x64_vs90.vcproj b/Util/samples/pkill/pkill_x64_vs90.vcproj index b64a75404..e2a4ea09b 100644 --- a/Util/samples/pkill/pkill_x64_vs90.vcproj +++ b/Util/samples/pkill/pkill_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> tmp = aKey.getBinary(keyName); + value.assign(tmp.begin(), tmp.end()); + } + break; case WinRegistryKey::REGT_DWORD: value = Poco::NumberFormatter::format(aKey.getInt(keyName)); break; diff --git a/Util/src/WinRegistryKey.cpp b/Util/src/WinRegistryKey.cpp index 6eaf31229..b0e6a54b5 100644 --- a/Util/src/WinRegistryKey.cpp +++ b/Util/src/WinRegistryKey.cpp @@ -19,6 +19,7 @@ #include "Poco/Util/WinRegistryKey.h" #include "Poco/Exception.h" +#include "Poco/Buffer.h" #if defined(POCO_WIN32_UTF8) #include "Poco/UnicodeConverter.h" #endif @@ -121,11 +122,10 @@ std::string WinRegistryKey::getString(const std::string& name) if (size > 0) { DWORD len = size/2; - wchar_t* buffer = new wchar_t[len + 1]; - RegQueryValueExW(_hKey, uname.c_str(), NULL, NULL, (BYTE*) buffer, &size); + Poco::Buffer buffer(len + 1); + RegQueryValueExW(_hKey, uname.c_str(), NULL, NULL, (BYTE*) buffer.begin(), &size); buffer[len] = 0; - std::wstring uresult(buffer); - delete [] buffer; + std::wstring uresult(buffer.begin()); std::string result; Poco::UnicodeConverter::toUTF8(uresult, result); return result; @@ -135,11 +135,10 @@ std::string WinRegistryKey::getString(const std::string& name) throw NotFoundException(key(name)); if (size > 0) { - char* buffer = new char[size + 1]; - RegQueryValueExA(_hKey, name.c_str(), NULL, NULL, (BYTE*) buffer, &size); + Poco::Buffer buffer(size + 1); + RegQueryValueExA(_hKey, name.c_str(), NULL, NULL, (BYTE*) buffer.begin(), &size); buffer[size] = 0; - std::string result(buffer); - delete [] buffer; + std::string result(buffer.begin()); return result; } #endif @@ -212,6 +211,52 @@ std::string WinRegistryKey::getStringExpand(const std::string& name) } + +void WinRegistryKey::setBinary( const std::string& name, const std::vector& value ) +{ + open(); +#if defined(POCO_WIN32_UTF8) + std::wstring uname; + Poco::UnicodeConverter::toUTF16(name, uname); + if (RegSetValueExW(_hKey, uname.c_str(), 0, REG_BINARY, (CONST BYTE*) &value[0], (DWORD) value.size()) != ERROR_SUCCESS) + handleSetError(name); +#else + if (RegSetValueExA(_hKey, name.c_str(), 0, REG_BINARY, (CONST BYTE*) &value[0], (DWORD) value.size()) != ERROR_SUCCESS) + handleSetError(name); +#endif +} + + +std::vector WinRegistryKey::getBinary( const std::string& name ) +{ + open(); + DWORD type; + DWORD size; + std::vector result; + +#if defined(POCO_WIN32_UTF8) + std::wstring uname; + Poco::UnicodeConverter::toUTF16(name, uname); + if (RegQueryValueExW(_hKey, uname.c_str(), NULL, &type, NULL, &size) != ERROR_SUCCESS || type != REG_BINARY) + throw NotFoundException(key(name)); + if (size > 0) + { + result.resize(size); + RegQueryValueExW(_hKey, uname.c_str(), NULL, NULL, (BYTE*) &result[0], &size); + } +#else + if (RegQueryValueExA(_hKey, name.c_str(), NULL, &type, NULL, &size) != ERROR_SUCCESS || type != REG_BINARY) + throw NotFoundException(key(name)); + if (size > 0) + { + result.resize(size); + RegQueryValueExA(_hKey, name.c_str(), NULL, NULL, (BYTE*) &result[0], &size); + } +#endif + return result; +} + + void WinRegistryKey::setInt(const std::string& name, int value) { open(); @@ -248,6 +293,20 @@ int WinRegistryKey::getInt(const std::string& name) #if defined(POCO_HAVE_INT64) +void WinRegistryKey::setInt64(const std::string& name, Poco::Int64 value) +{ + open(); +#if defined(POCO_WIN32_UTF8) + std::wstring uname; + Poco::UnicodeConverter::toUTF16(name, uname); + if (RegSetValueExW(_hKey, uname.c_str(), 0, REG_QWORD, (CONST BYTE*) &value, sizeof(value)) != ERROR_SUCCESS) + handleSetError(name); +#else + if (RegSetValueExA(_hKey, name.c_str(), 0, REG_QWORD, (CONST BYTE*) &value, sizeof(value)) != ERROR_SUCCESS) + handleSetError(name); +#endif +} + Poco::Int64 WinRegistryKey::getInt64(const std::string& name) { open(); @@ -257,10 +316,10 @@ Poco::Int64 WinRegistryKey::getInt64(const std::string& name) #if defined(POCO_WIN32_UTF8) std::wstring uname; Poco::UnicodeConverter::toUTF16(name, uname); - if (RegQueryValueExW(_hKey, uname.c_str(), NULL, &type, (BYTE*) &data, &size) != ERROR_SUCCESS || type != REG_DWORD) + if (RegQueryValueExW(_hKey, uname.c_str(), NULL, &type, (BYTE*) &data, &size) != ERROR_SUCCESS || type != REG_QWORD) throw NotFoundException(key(name)); #else - if (RegQueryValueExA(_hKey, name.c_str(), NULL, &type, (BYTE*) &data, &size) != ERROR_SUCCESS || type != REG_DWORD) + if (RegQueryValueExA(_hKey, name.c_str(), NULL, &type, (BYTE*) &data, &size) != ERROR_SUCCESS || type != REG_QWORD) throw NotFoundException(key(name)); #endif return data; @@ -380,7 +439,7 @@ WinRegistryKey::Type WinRegistryKey::type(const std::string& name) if (RegQueryValueExA(_hKey, name.c_str(), NULL, &type, NULL, &size) != ERROR_SUCCESS) throw NotFoundException(key(name)); #endif - if (type != REG_SZ && type != REG_EXPAND_SZ && type != REG_DWORD) + if (type != REG_SZ && type != REG_EXPAND_SZ && type != REG_DWORD && type != REG_QWORD && type != REG_BINARY) throw NotFoundException(key(name)+": type not supported"); Type aType = (Type)type; diff --git a/Util/testsuite/TestSuite_CE_vs90.vcproj b/Util/testsuite/TestSuite_CE_vs90.vcproj index aef3b30f3..e44090baf 100644 --- a/Util/testsuite/TestSuite_CE_vs90.vcproj +++ b/Util/testsuite/TestSuite_CE_vs90.vcproj @@ -46,7 +46,8 @@ CompileAs="0" DisableSpecificWarnings="4800;" CompileForArchitecture="2" - InterworkCalls="false"/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false diff --git a/Util/testsuite/TestSuite_WEC2013_vs110.vcxproj.filters b/Util/testsuite/TestSuite_WEC2013_vs110.vcxproj.filters index 3db12b7bd..c073f0789 100644 --- a/Util/testsuite/TestSuite_WEC2013_vs110.vcxproj.filters +++ b/Util/testsuite/TestSuite_WEC2013_vs110.vcxproj.filters @@ -2,64 +2,64 @@ - {be2d865c-3c64-46d7-97ad-97776ca8ad45} + {aa8cd91b-1ed5-4847-aca1-989e4beff3b5} - {a25955a5-0ab4-429c-89ef-0b30ded85214} + {21b5f610-045d-4e50-a25b-60ebe6b49a19} - {65f8fb60-db36-4b32-8e93-b65029ff3633} + {e22fdeb5-2478-4edf-be94-b93e59df61f7} - {b4e15bb6-16e2-47fd-ba15-4b1652e3dbd0} + {aa42124f-d839-4d84-8ab2-e921fec223ee} - {f2c49467-8ede-4598-a7c5-1e04570fa3c9} + {1a33b90c-d008-4be5-b8d5-2234316895e5} - {61112306-50e2-4be8-be76-c44fb15f6614} + {91605f81-1ccd-480e-9499-8c8e00746afb} - {e1e61883-1845-40c3-b783-7d4366c94618} + {c697a2c5-4259-4c18-8ea8-c1c49b2f2091} - {17936256-9422-4083-a054-9cc87e2710b5} + {2c4dbd81-1c45-401d-beb1-26bbc0b02481} - {e460a092-f188-4607-bfe0-221c80a6ad87} + {db55899b-a627-4292-8a8b-880e78b42611} - {be799bd5-fed1-4c41-8152-df8e5831173b} + {3825ca75-5aa1-46ff-89f0-8a3c6a59ae36} - {f1c77111-a361-485a-813b-015febafd193} + {373eea95-c038-47f0-9d92-17f9193a7d4a} - {51445f35-39a6-4d46-b857-ba2ace86df24} + {a8f876cf-b2e4-432f-b059-4519161e43e0} - {9044cd39-794b-48db-b5f8-78665ef11e74} + {3246dae9-40a6-4932-a0e0-c7cc0ac557d6} - {c49e1ed9-e42c-4167-aa70-27a0bdf6cdd6} + {57f59433-33d5-4122-882a-c9cbe89f7198} - {fcab84c4-206d-4447-b789-12ccf8a45232} + {82628589-23fd-43a4-b8d2-56daf0cc3dea} - {372338f1-6826-4b39-81b6-ff38b4bcabf3} + {cdee27f8-cb52-435d-a6a6-e4698dcd89a7} - {b14f5e12-15e6-4102-930c-11f62fdbe194} + {94425188-b175-47cf-843f-b6d9ecdddb9f} - {8a94833e-d619-4cf3-b40e-a2e7ac9f3f66} + {722c23af-93c6-411d-acc4-937a2cfad807} - {ac517692-d9d7-4ed2-961a-028d26214ee3} + {fcbbd0fa-e37c-4de3-a01a-b46901b3c30d} - {fe8ac6e4-93b9-47a3-8adf-3f33762af484} + {ef40e675-0c18-4389-882c-d1c32817b426} diff --git a/Util/testsuite/TestSuite_WEC2013_vs120.vcxproj b/Util/testsuite/TestSuite_WEC2013_vs120.vcxproj index 1ae1ab62b..99ba8111d 100644 --- a/Util/testsuite/TestSuite_WEC2013_vs120.vcxproj +++ b/Util/testsuite/TestSuite_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false diff --git a/Util/testsuite/TestSuite_WEC2013_vs120.vcxproj.filters b/Util/testsuite/TestSuite_WEC2013_vs120.vcxproj.filters index e7a99e912..bb23d22a1 100644 --- a/Util/testsuite/TestSuite_WEC2013_vs120.vcxproj.filters +++ b/Util/testsuite/TestSuite_WEC2013_vs120.vcxproj.filters @@ -2,64 +2,64 @@ - {f95f7075-0a1e-4461-98fe-218dbe1de834} + {dd4426c7-43d3-4aa4-af81-6021fd0792b7} - {c6ceed1e-9aad-4b5c-a405-53d840f22382} + {3b588439-580b-4a5a-8b7b-6432c1048f37} - {8eee9557-fddb-4346-9574-3e94f394566b} + {7e77a7df-f611-407c-a876-a9f2f9a98590} - {334dae19-2799-45bb-9772-ad0143b83c39} + {9874c080-d280-4ef8-871d-4d54fe20e99c} - {a6b68767-53bf-4cf3-8dfb-b68e1c84d8f6} + {143aee51-040a-464a-977a-18ca286ed5f5} - {ba193e3e-cb29-4400-8d05-8d83510f8bd5} + {296021e3-78f2-456a-9825-d7d005f8f8aa} - {bca1f4da-6631-4a8b-90e7-18045524c9f6} + {8cdf22f4-a1a1-4225-91ad-bfc01ca89c97} - {b9da9d4b-a7a9-4a2b-8341-f67c528108e9} + {ff74eb92-5523-4438-a6a3-1b681dd01b92} - {845a0212-a535-4661-a617-03afe3764571} + {c6b6091e-739c-42bd-862a-b3c7cb80850e} - {738a4e20-6502-4c02-915a-35a39b45354f} + {7482bee2-72a0-4db0-9540-a7fc3263c136} - {b1e4e11f-6a8b-4f25-8d4e-3a4ae21693db} + {aa05c5de-2ae1-489a-a2f8-4c9407ff822d} - {507bbb1b-e8ac-465b-9452-1434290c4a21} + {c2a653ec-d91d-4438-9a16-34de96ee66f9} - {8fe5d243-77ac-4c0e-baf3-0ad21914621a} + {58bcaf03-db58-461e-9dec-a77ea2a3b49f} - {b9d2757d-c670-41bf-ab2f-79e0b5a56524} + {7a3bd360-965c-41b3-9f00-c75e81a53eca} - {b38ba023-8bf4-4845-8b9e-77eb557bf8d6} + {7d80ff26-d0bd-4557-aa6a-5ebf63bbd7a7} - {293ed121-0997-4f62-94c4-2be35d1c45e5} + {2bc6b6f8-9abb-4a6f-9466-4d8cdfd7b86d} - {7166df51-496e-4559-becb-2ad8fc93ae89} + {386ab18f-6c0e-4b6e-bf51-ea9b6577d04c} - {12f8689b-b649-4111-a6c9-9c105db869e7} + {481f4bd6-0e8f-4759-b827-f0e03e94c818} - {17449bf9-3515-4534-8a91-6366bc8960e5} + {1db252ca-74ab-4350-99a6-dbc6911b86d8} - {516fb7f0-9eac-4968-83fb-807cdde4cc8c} + {20220666-31cc-4d8d-b124-281533491c99} diff --git a/Util/testsuite/TestSuite_vs100.vcxproj b/Util/testsuite/TestSuite_vs100.vcxproj index 98518b3d7..af0ef6131 100644 --- a/Util/testsuite/TestSuite_vs100.vcxproj +++ b/Util/testsuite/TestSuite_vs100.vcxproj @@ -87,22 +87,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false TestSuited TestSuited @@ -129,6 +129,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitd.lib;WinTestRunnerd.lib;%(AdditionalDependencies) @@ -139,6 +140,7 @@ bin\TestSuited.pdb Windows MachineX86 + %(AdditionalOptions) @@ -161,6 +163,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnit.lib;WinTestRunner.lib;%(AdditionalDependencies) @@ -171,6 +174,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -191,6 +195,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmtd.lib;WinTestRunnermtd.lib;iphlpapi.lib;winmm.lib;nafxcwd.lib;libcmtd.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -202,6 +207,7 @@ bin\static_mt\TestSuited.pdb Windows MachineX86 + %(AdditionalOptions) @@ -224,6 +230,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmt.lib;WinTestRunnermt.lib;iphlpapi.lib;winmm.lib;nafxcw.lib;libcmt.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -235,6 +242,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -255,6 +263,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmdd.lib;WinTestRunnermdd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -265,6 +274,7 @@ bin\static_md\TestSuited.pdb Windows MachineX86 + %(AdditionalOptions) @@ -287,6 +297,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmd.lib;WinTestRunnermd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -297,6 +308,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Util/testsuite/TestSuite_vs100.vcxproj.filters b/Util/testsuite/TestSuite_vs100.vcxproj.filters index 3fc868afd..08017f3e5 100644 --- a/Util/testsuite/TestSuite_vs100.vcxproj.filters +++ b/Util/testsuite/TestSuite_vs100.vcxproj.filters @@ -2,64 +2,64 @@ - {b1e97ee0-7e39-4f1a-aff5-e52dc49f9ce3} + {12ffbdf7-a3be-4426-88b7-2dfdffa948a9} - {1cf07bcf-3ab7-42ef-89e9-46b9852222b2} + {52347868-0e9e-4ef5-89dc-0e5f17b9747c} - {1bd4d37e-a99a-49de-af1c-9cd1298c1871} + {77175637-597c-439f-b6e8-0dbfea2c2c69} - {656c6728-b6ab-4353-8777-140c1178bffb} + {133b91a8-bd30-4644-b0d8-1dae12c5167d} - {1c9585d3-7a62-4d68-b0f4-a837f541408c} + {e8fdbe9e-446f-4719-a827-ec7dbc9a1f6f} - {95ec605f-5697-49fe-bdc4-6f7ab45c33d3} + {8700e275-1c90-4fe2-b40e-3668b81eaf5f} - {29e3e891-ab3f-4d11-a8b4-994fc696d67f} + {24e0ff29-24bb-46e4-863c-f9b58d224d4f} - {f5b532be-d0e6-4a89-8b50-02f244d0ae1b} + {3aa22bc3-8f64-4ec3-96be-72dcefe0ff4b} - {f7c00b3d-5140-496c-af9a-5c3984b75cb3} + {c2ddcee8-162d-4f54-9654-82732030093d} - {8513d55c-f68e-43db-a0a2-fe206bbb0eb5} + {7ebb7975-2d92-40a6-9029-21f23516ba24} - {2a057d43-0a75-4c16-a4d4-7eb144465eda} + {96a536c9-f743-4371-9610-7a09d240bc28} - {5875d27f-b029-47cb-9221-84d888ec8d4c} + {6a533a84-6462-4369-b71e-10ebd028b333} - {8f293cb4-5744-488a-9426-5eddb68f8904} + {303f7bc6-0c6b-43bb-a27b-85ff11b78c96} - {c98ad119-4517-45f0-9c62-4d7f8678d5b1} + {54766351-9548-4daa-a16f-139797583604} - {04d43a07-d3c4-4413-9c3c-327e126ffef8} + {6f060fce-cba0-41ca-951f-0cc801e4d6d0} - {abd74990-0118-4d51-9f4c-97706cb8c022} + {e7c5a178-baff-4749-bf0e-ebfff739c07e} - {96194904-0750-4f5e-b1b5-c9b4c0037fd5} + {5c26db7c-73bf-495c-af59-837bc019f601} - {705a903e-5a62-4daa-88ab-e5ea919bba78} + {c86770e4-c1de-40c1-b51d-d7ee7139171c} - {a747d857-9a5f-4eb5-abda-f5643a0fa229} + {6d54ba15-dc32-4056-8fe2-3980f460e32a} - {b7520c92-5b41-4e78-86dc-0112b0422bd7} + {e9fc06d5-b0e0-44e9-804c-2264c2275d43} diff --git a/Util/testsuite/TestSuite_vs110.vcxproj b/Util/testsuite/TestSuite_vs110.vcxproj index aac6bb27b..91325fe13 100644 --- a/Util/testsuite/TestSuite_vs110.vcxproj +++ b/Util/testsuite/TestSuite_vs110.vcxproj @@ -101,32 +101,32 @@ bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false diff --git a/Util/testsuite/TestSuite_vs110.vcxproj.filters b/Util/testsuite/TestSuite_vs110.vcxproj.filters index 28e0a1547..e7f60751a 100644 --- a/Util/testsuite/TestSuite_vs110.vcxproj.filters +++ b/Util/testsuite/TestSuite_vs110.vcxproj.filters @@ -2,64 +2,64 @@ - {3d99b31f-b463-4841-8c7e-f82cd7474343} + {e6f7f337-063d-474b-a570-e0cb54440842} - {2ff3fd4e-6932-44c2-8e21-30fb3bd9f12d} + {100491c9-a0e0-41e2-b58d-58ed2e6d44e2} - {60e0395c-52ce-4ad5-beea-4f7b96c034b1} + {7783bc60-690b-4176-b245-930eb8050708} - {875ae24c-381d-4033-8717-0f596d75d386} + {a3594026-d861-4723-8890-e1e049f3862b} - {c5064aae-eb2a-4b1c-bd8a-91a19bf63eb5} + {090453c3-e01e-475a-afff-d5465b881d5b} - {23139ed8-c710-4318-bf12-aa487190454b} + {7ed7bbf3-2aa4-4edf-ba20-5e09c74aed25} - {f77d1007-fcd2-4851-b07d-34ba19c15800} + {7532114d-aaad-4bfe-b6ce-681b5465927b} - {89abeade-6fd4-4e99-b804-dea2ceb05943} + {b8a01012-cded-4333-b52b-7f0f73ca4e5a} - {56f76a9d-6ec6-4ece-b2f0-10146143ccb6} + {08ed57ce-7d0a-4a6d-a045-501e00e99bf6} - {6fbb52d5-a1b3-4075-bdc8-168961cdd644} + {b34d061b-67f2-4f6b-a2a7-f8dd44a7556c} - {32b861d6-bf38-4f2a-bd19-96f06b922616} + {89c077ee-237c-4875-8a81-3c86721306e6} - {360cdc97-3e04-4657-a9a3-48a3ba0f168f} + {ba547cdc-db03-424d-9e54-3e5a3127811f} - {bc28e887-8016-440d-8c1e-695290b85374} + {c2414454-08c7-48f1-9b16-f0d6d7843214} - {782c5660-93df-4c42-9b70-6f2bedad80af} + {d7e0e3b1-f91a-4d25-8a59-b590cf78b792} - {66576355-6427-4cba-bb04-f024bcb311fd} + {2019a1c6-2038-4e3c-a9aa-d09ff571390e} - {223f5171-8d8d-4058-bfb2-f8fcd9229fcf} + {b016b826-35fd-400e-ae9f-3ed49bf06711} - {b7ce890c-79fa-42e7-b77d-6a94e9577e88} + {79ef0807-667b-438e-af6e-1745cdb1a57f} - {f672d31f-51ba-4933-9fff-b3991eef3213} + {65ddc191-63cd-4192-8126-09dae8f62c62} - {2823a1a2-043a-4c33-a08e-36e5207a8c31} + {f5197101-b971-4eb7-8cc7-01deee6a5d49} - {dd233ece-bf90-4cb3-805c-1af6aad3b12c} + {bd5e78d1-5c88-4b76-875b-0fb94395d851} diff --git a/Util/testsuite/TestSuite_vs120.vcxproj b/Util/testsuite/TestSuite_vs120.vcxproj index 100429b02..855a15dde 100644 --- a/Util/testsuite/TestSuite_vs120.vcxproj +++ b/Util/testsuite/TestSuite_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false diff --git a/Util/testsuite/TestSuite_vs120.vcxproj.filters b/Util/testsuite/TestSuite_vs120.vcxproj.filters index c397ade0f..3bc70cb0b 100644 --- a/Util/testsuite/TestSuite_vs120.vcxproj.filters +++ b/Util/testsuite/TestSuite_vs120.vcxproj.filters @@ -2,64 +2,64 @@ - {352cb467-41d5-4c94-812f-3abfac78eee2} + {4a6f40c9-1424-4a2e-970f-6d562ca9f5a3} - {4ef0970b-6fc6-4eef-8212-e51821003aca} + {2ba2980b-f0d4-4d39-bbbc-9a788ebf04d6} - {10a5962c-4932-4bf2-8080-3c0ff484e509} + {b90465e5-f76b-49b0-ad20-ed7cbcce1487} - {06240d71-ee08-4d83-8198-c4a33d61101b} + {d9c28f0e-e0d0-405b-bafc-5d6995bf9d1b} - {7668c6c6-5d32-48f1-8578-240843570973} + {78332335-fdf0-4cc5-9f92-91aa32357df3} - {d1743454-2838-4b13-8480-93f46820f3bf} + {d242d63c-f9e0-4645-87dd-7bdc479905ee} - {b8dca979-2eba-4fe3-8e74-b24d31e89a8a} + {f11708d6-aef2-4110-ba6b-c88e0f093867} - {294b5ac3-6843-476b-b0ca-c6ae6897676d} + {0be5b367-b255-4430-84cf-948081273f74} - {901d9722-40c6-4e3d-b002-b2b6d0ea9d24} + {098753c5-7845-4007-b244-5ec1cbb8120e} - {22bad78f-46dd-4f81-85ab-80650f615f7b} + {95a7a776-c934-474b-967c-5da7df3684d7} - {28cef8cb-adf4-4c54-81c3-7f082fdadfca} + {81eb7f6f-ff29-48c5-9500-815855b130d6} - {17ce797e-6b88-4bd0-aaad-eeae4939c010} + {b2bd79c7-bb16-435d-a1d5-bd6da13d43d8} - {fc464d30-d7e3-4cf1-8c8e-4a692fbd9c48} + {1983194c-67b8-4553-8503-c5f310161525} - {9b57f300-e46d-45b2-8afb-e4ff0bdac8fa} + {98accecd-c289-4f20-8fc9-0cba39177a8f} - {7983226d-7149-4153-bd4d-c5d1f5233f64} + {89929c7f-f2d7-4abd-93dc-973b8d9377f4} - {3834fee6-3948-4ce2-bf7a-019e443b4446} + {a84fe4c6-6df0-452a-b55f-940bf791fba6} - {2c1c9fb6-96f3-476a-99ac-566f56b0c29e} + {e1a4974b-737e-4063-ab58-5d7fc1d6c7e3} - {bc6984a9-ab67-4136-9af4-ab7c0c624ff3} + {a9ee35c3-801f-4978-a04f-aa87bff0569b} - {8c1135dd-40cf-475d-8cc3-9e8f94bcf359} + {31eb8b3e-94f9-4f7a-b64e-8faabc116b3f} - {e0f18377-089e-420a-b2d7-5ae48d7e0a7c} + {adcb32d9-9791-4246-8c16-8d686dd57a9f} diff --git a/Util/testsuite/TestSuite_vs71.vcproj b/Util/testsuite/TestSuite_vs71.vcproj index 885cc933a..911cae125 100644 --- a/Util/testsuite/TestSuite_vs71.vcproj +++ b/Util/testsuite/TestSuite_vs71.vcproj @@ -37,7 +37,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false TestSuited TestSuited @@ -129,6 +129,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitd.lib;WinTestRunnerd.lib;%(AdditionalDependencies) @@ -139,6 +140,7 @@ bin64\TestSuited.pdb Windows MachineX64 + %(AdditionalOptions) @@ -161,6 +163,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnit.lib;WinTestRunner.lib;%(AdditionalDependencies) @@ -171,6 +174,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -191,6 +195,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmtd.lib;WinTestRunnermtd.lib;iphlpapi.lib;winmm.lib;nafxcwd.lib;libcmtd.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -202,6 +207,7 @@ bin64\static_mt\TestSuited.pdb Windows MachineX64 + %(AdditionalOptions) @@ -224,6 +230,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmt.lib;WinTestRunnermt.lib;iphlpapi.lib;winmm.lib;nafxcw.lib;libcmt.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -235,6 +242,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -255,6 +263,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmdd.lib;WinTestRunnermdd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -265,6 +274,7 @@ bin64\static_md\TestSuited.pdb Windows MachineX64 + %(AdditionalOptions) @@ -287,6 +297,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmd.lib;WinTestRunnermd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -297,6 +308,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Util/testsuite/TestSuite_x64_vs100.vcxproj.filters b/Util/testsuite/TestSuite_x64_vs100.vcxproj.filters index 606e3c12e..9b9941e3f 100644 --- a/Util/testsuite/TestSuite_x64_vs100.vcxproj.filters +++ b/Util/testsuite/TestSuite_x64_vs100.vcxproj.filters @@ -2,64 +2,64 @@ - {f5888ecc-b3de-4ca7-8a97-a6ff2b64b0c4} + {3278e020-f3fa-4536-b2ca-a5e9c3f55c76} - {4993df64-9478-40ad-8703-119a2171c3cb} + {6c134eca-9d6f-4b51-bf88-e5a89b8b7306} - {59d934c9-c2c7-4efd-b4a2-cd00bc448116} + {1da0f8ef-15df-4e0a-a55e-aacec79e1a3f} - {7626ddce-1f11-4f8a-b7bf-41d40db79877} + {9e1673c5-fadd-4f84-b6cc-13f2b2e4dab8} - {63bf4b96-c28f-464d-94e4-3c4f0895b723} + {c02b3a66-e6e6-4065-bb6c-e5767b9754a6} - {d21df2fd-86fd-433e-aede-78ecab7fb2a5} + {37abe6cb-c120-4916-95e7-22f9f30c86c8} - {ed1b87cb-d4e0-4858-aed6-39719dc8392d} + {2e281bfd-eb8f-4f21-b49b-a812800f2a8e} - {d96ca0de-e1b8-431d-800c-c48c3707693d} + {c7ea0de3-5861-401f-bc5a-f33d8951549e} - {0ad8ebc9-93fb-4db4-ab85-de7d3732937c} + {4e2fa72a-f6dd-4ab5-a197-6a75caca6ee4} - {1cbce5c6-1732-4b29-961e-96a8e537fa08} + {e6bf5ad6-b924-4708-bea3-ab8fca600fa0} - {f265b414-4131-4b22-9f94-e44eefd701c0} + {d66cd5d5-5595-4ba6-9191-8f041c62770f} - {59950f6a-2f89-4575-8f78-9d6cd9cb78f0} + {f14b3c88-3f0d-454a-ac8c-097035833bf0} - {e222208b-fd4e-4907-b243-de702d46c58e} + {1e6902be-1067-49f8-a7bc-2d3b959878e5} - {865cd831-8359-4e81-be50-0862701c618a} + {c8c0e52f-7d00-4ba4-89a1-3afba2008474} - {09b33877-71dc-4d68-8143-5ad167b5058a} + {fb746640-67b2-4753-bbe8-415344b6db4e} - {315c9f94-6767-4df0-8613-278d3888571b} + {5b2fc495-06d8-4b61-b473-e4b5f0cea742} - {719ee9fb-5e41-4d33-9618-66f77c8d3227} + {659f8c6c-32d5-4315-8e62-bd938f84f736} - {79c0b30d-e4c2-43bf-82be-76e79489f455} + {8df5f59a-59b2-47ea-8d6a-363ce484064e} - {985c58cf-af6f-4cf0-a7a2-c8cb3960596b} + {031e2f7a-0995-48e9-867c-1049f0c53646} - {ed3f9ba4-e1f3-41ec-906c-d2ef10582e9f} + {c862efd2-d03a-4b05-89bf-4e590059edc7} diff --git a/Util/testsuite/TestSuite_x64_vs110.vcxproj b/Util/testsuite/TestSuite_x64_vs110.vcxproj index 6bed03529..34a02adc1 100644 --- a/Util/testsuite/TestSuite_x64_vs110.vcxproj +++ b/Util/testsuite/TestSuite_x64_vs110.vcxproj @@ -101,32 +101,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false diff --git a/Util/testsuite/TestSuite_x64_vs110.vcxproj.filters b/Util/testsuite/TestSuite_x64_vs110.vcxproj.filters index b228c4b23..3e36f826f 100644 --- a/Util/testsuite/TestSuite_x64_vs110.vcxproj.filters +++ b/Util/testsuite/TestSuite_x64_vs110.vcxproj.filters @@ -2,64 +2,64 @@ - {3950d402-46d3-4060-9ada-2d2c9fc36c5b} + {d17fad2a-217d-4f19-83ab-8c4c266226e8} - {7227d92a-258d-406e-97f1-abe79b539699} + {ca387b84-6870-4c27-adc3-867408a69d69} - {9794bc79-6254-4026-b16d-73d1c1c92f33} + {2163d04c-dbef-42c6-b7c8-9503c6eaabdc} - {4f5f3bd8-2df7-4b3c-aab1-d9937ca706a4} + {cd176711-3310-445b-8259-60f8e004b04e} - {27b4fed1-dd60-4fcb-ab5e-2be1b91afa64} + {d39a7e1d-e7b0-414e-a80b-b3a2f52743ba} - {d4cd6911-4442-4a75-bf74-a2daf921e75d} + {ea87e07c-fe42-4156-894b-fceb0833a935} - {8fe72910-573b-4c17-988b-b317b98accdb} + {cab776ad-536b-4c47-b1dc-ec53cadb9d33} - {d62de5c4-7149-4452-9194-fe55d5ca7f23} + {55ba007f-5b27-48d3-890b-51033f140ad3} - {b63f1e18-7fd1-4b62-b6f9-6e9251b1e284} + {e0e75921-03ff-47fb-8210-8d2d3dc4f6d7} - {8fc5942d-719e-4bd5-aeb2-4f0b7eef7436} + {b18b1db6-1cf8-42b9-9d41-856fb0d8eecf} - {d32b644c-72de-4c0c-88a8-62c03ef97dc3} + {8f55a495-8ccb-42d6-aaf5-8c910ecfc682} - {7711d4df-9d96-49fc-ae54-b03ec2d2394d} + {337736b5-7ffe-4e94-abb8-d61edc8b576d} - {5027dccd-eb7e-4383-9ee8-8841957a6641} + {535b9145-3c1f-4ee7-9e05-084ce9d284cc} - {515e52ce-4076-45a5-b2e6-f65ebf768d3b} + {1954c472-5aad-4f4a-b7bf-4f96eb27ad6d} - {d1fe7aed-050f-4635-a3e2-5d1ed4b80c65} + {f4d1cae6-73b7-4129-a223-328bdf7133d4} - {66285443-b05a-4d81-805b-54ecc02f36a2} + {274c5433-b41a-4ebc-bf81-c93e65753160} - {b623e3cf-eacc-4adb-aace-e2f5894626b9} + {d6c6c03b-9f18-426c-9e19-5fb1c44929ab} - {1cbf2616-73f1-4a16-9236-e3f2220dea1f} + {14748cd5-915d-4f56-93e4-9866c3d1ddac} - {7d31f1ed-7ea6-4ec3-858e-ac1efbea61cc} + {f5c2a96f-bda7-4995-a536-cc5a2828a2e1} - {9ee166e4-7e27-4f43-9908-6f3fbcf9088c} + {3a412fbd-3daf-4be0-a32b-2bafc493ee7a} diff --git a/Util/testsuite/TestSuite_x64_vs120.vcxproj b/Util/testsuite/TestSuite_x64_vs120.vcxproj index 3ec46b3f7..8008314fa 100644 --- a/Util/testsuite/TestSuite_x64_vs120.vcxproj +++ b/Util/testsuite/TestSuite_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false diff --git a/Util/testsuite/TestSuite_x64_vs120.vcxproj.filters b/Util/testsuite/TestSuite_x64_vs120.vcxproj.filters index cd79b7b18..a2e50f78b 100644 --- a/Util/testsuite/TestSuite_x64_vs120.vcxproj.filters +++ b/Util/testsuite/TestSuite_x64_vs120.vcxproj.filters @@ -2,64 +2,64 @@ - {cccc004f-4c1e-4915-b055-7d5297732c1d} + {1105f160-c34e-4310-b7a1-b3ba3ef2398c} - {19ff2e3a-2381-4b3a-a3fc-39ef0db2d1d1} + {3dcb5827-2ec5-4c13-9d38-cc060a6cbbfc} - {3a5ae6ed-fbf5-4daf-b665-fc21e5dd1a06} + {531615bb-c364-4c3a-82b7-13b5ee208953} - {e542aede-e2c6-47f6-bf19-79fc05cb109d} + {13eca946-b606-456f-bddb-ab3c72178c0c} - {3b7f0f13-6b26-4ed4-94f4-b3b40bf40007} + {f118db8a-a07b-4416-a6d6-997142414d1a} - {dd0b7ef0-e878-485d-ac03-542dc590ea31} + {2e03b832-72b0-427a-9d2f-077f99a6c0e8} - {29f3ae8e-7109-4abf-ae01-f7a70fdeb38c} + {d43b404c-c41f-478e-ae8b-3f79adfdb651} - {170beee5-e46f-4a2c-8ec4-cedac5777add} + {97a6c9ac-3bd4-4b19-8402-826e2e4da017} - {3e0fe2e5-d735-446d-a958-7e401f6a5171} + {57a2f933-a566-44f8-b1dd-adfc14ca58b5} - {ea4bc1cf-dabf-4a09-8a11-b63e14124694} + {e1e09855-285a-462d-8e5b-888d11d8f3a3} - {cc287b6a-fadd-4fe3-b6c9-9b19a78d58b7} + {3678d690-6481-4a88-b081-4f57a7c675a8} - {2ff287bc-eca5-4d16-9ac9-f386ad3032f9} + {505abe3a-4d53-4e9c-85b2-6041d8a4a5fe} - {ef908267-9c9b-4d08-8543-e35679576496} + {f2b5ea55-7f92-41e6-b6c0-b4269766d0ab} - {b25f88a5-ab83-4404-a511-37d50af2af10} + {3ecd2b6f-a097-433c-a337-3ac96ae38aba} - {a04f7cfe-ca86-43a3-a27b-28c9a6403328} + {73813df1-050a-4f4b-b6fb-7d18582db544} - {54a00b1c-e2a4-465e-8f79-85702496a82d} + {6b70e909-dd2b-4bbb-b69e-cd9c9abbb3ff} - {11a24e5a-823b-463c-8c89-da41f0f0a15c} + {97b04e6d-d032-4ceb-8657-df96e41a8532} - {dd1dc6a3-4789-4d8e-b850-d853d7a9046e} + {ea9218a2-5c00-4857-9ee8-8f8b4093f8c8} - {4a9f85ac-59cd-46c1-bb28-8333198091b2} + {356dd4f9-2722-4865-b348-2aa1b8f83074} - {9f781f49-738d-4a10-a94a-484e5b09871d} + {38d278b8-e105-4fa8-89e5-179d07331592} diff --git a/Util/testsuite/TestSuite_x64_vs90.vcproj b/Util/testsuite/TestSuite_x64_vs90.vcproj index 359a2fa29..76bf5ae69 100644 --- a/Util/testsuite/TestSuite_x64_vs90.vcproj +++ b/Util/testsuite/TestSuite_x64_vs90.vcproj @@ -47,7 +47,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> getUInt64("name2") == std::numeric_limits::max()); pReg->setInt64("name2", std::numeric_limits::min()); assert (pReg->getInt64("name2") == std::numeric_limits::min()); + + /// write real int64 value type + regKey.setInt64("name3", std::numeric_limits::max()); + assert (pReg->getInt64("name3") == std::numeric_limits::max()); #endif + + /// create fake binary data + const int dataSize = 127; + std::vector data(dataSize); + for (int i = 0; i < dataSize; ++i) + data[i] = rand() % 256; + + regKey.setBinary("name4", data); + assert (pReg->getString("name4") == std::string(data.begin(), data.end())); + + assert (pReg->hasProperty("name1")); assert (pReg->hasProperty("name2")); @@ -82,9 +97,11 @@ void WinConfigurationTest::testConfiguration() Poco::Util::AbstractConfiguration::Keys keys; pReg->keys(keys); - assert (keys.size() == 3); + assert (keys.size() == 5); assert (std::find(keys.begin(), keys.end(), "name1") != keys.end()); assert (std::find(keys.begin(), keys.end(), "name2") != keys.end()); + assert (std::find(keys.begin(), keys.end(), "name3") != keys.end()); + assert (std::find(keys.begin(), keys.end(), "name4") != keys.end()); assert (std::find(keys.begin(), keys.end(), "config") != keys.end()); pReg->keys("config", keys); @@ -105,9 +122,11 @@ void WinConfigurationTest::testConfiguration() assert (std::find(keys.begin(), keys.end(), "HKEY_USERS") != keys.end()); pRootReg->keys("HKEY_CURRENT_USER.Software.Applied Informatics.Test", keys); - assert (keys.size() == 3); + assert (keys.size() == 5); assert (std::find(keys.begin(), keys.end(), "name1") != keys.end()); assert (std::find(keys.begin(), keys.end(), "name2") != keys.end()); + assert (std::find(keys.begin(), keys.end(), "name3") != keys.end()); + assert (std::find(keys.begin(), keys.end(), "name4") != keys.end()); assert (std::find(keys.begin(), keys.end(), "config") != keys.end()); } diff --git a/Util/testsuite/src/WinRegistryTest.cpp b/Util/testsuite/src/WinRegistryTest.cpp index 8fc415cb4..6d1c38243 100644 --- a/Util/testsuite/src/WinRegistryTest.cpp +++ b/Util/testsuite/src/WinRegistryTest.cpp @@ -19,12 +19,19 @@ #include "Poco/Util/WinRegistryKey.h" #include "Poco/Environment.h" #include "Poco/Exception.h" +#undef min +#undef max +#include +#if defined(POCO_HAVE_INT64) +using Poco::Int64; +#endif using Poco::Util::WinRegistryKey; using Poco::Environment; + WinRegistryTest::WinRegistryTest(const std::string& name): CppUnit::TestCase(name) { } @@ -81,6 +88,26 @@ void WinRegistryTest::testRegistry() regKey.deleteValue("name4"); assert (!regKey.exists("name4")); +#if defined(POCO_HAVE_INT64) + regKey.setInt64("name5", std::numeric_limits::max()); + assert (regKey.getInt64("name5") == std::numeric_limits::max()); + + assert (regKey.exists("name5")); + regKey.deleteValue("name5"); + assert (!regKey.exists("name5")); +#endif + + const int dataSize = 127; + std::vector data(dataSize); + for (int i = 0; i < dataSize; ++i) + data[i] = rand() % 256; + regKey.setBinary("binary", data); + assert (regKey.getBinary("binary") == data); + + assert (regKey.exists("binary")); + regKey.deleteValue("binary"); + assert (!regKey.exists("binary")); + regKey.deleteKey(); assert (!regKey.exists()); } diff --git a/VERSION b/VERSION index 8af85beb5..94fe62c27 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.5.3 +1.5.4 diff --git a/XML/XML_CE_vs90.vcproj b/XML/XML_CE_vs90.vcproj index bfd95e32b..b5991e17c 100644 --- a/XML/XML_CE_vs90.vcproj +++ b/XML/XML_CE_vs90.vcproj @@ -44,7 +44,8 @@ DebugInformationFormat="3" DisableSpecificWarnings="4800;" CompileForArchitecture="2" - InterworkCalls="false"/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> ..\bin\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\XML\$(Platform)\$(Configuration)\ true true ..\bin\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\XML\$(Platform)\$(Configuration)\ false true ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\XML\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\XML\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\XML\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\XML\$(Platform)\$(Configuration)\ diff --git a/XML/XML_WEC2013_vs110.vcxproj.filters b/XML/XML_WEC2013_vs110.vcxproj.filters index a98cfc744..115082f7d 100644 --- a/XML/XML_WEC2013_vs110.vcxproj.filters +++ b/XML/XML_WEC2013_vs110.vcxproj.filters @@ -2,40 +2,40 @@ - {b8db42bc-e358-4774-a88d-8344466a5efd} + {914468b2-f354-40de-93d9-65c7cc18e59e} - {040a1c14-0246-4842-8c11-eba19e3e94f0} + {c74e9d2a-5287-4b87-bcd4-b89b1b1a7723} - {2223b9ec-8148-446c-8b79-41b386dcdf6c} + {43d3e3d8-6888-441c-8329-dff8b0b22ae3} - {a06a6ef7-1f48-4de0-95ff-5835b617403f} + {52366e9f-0fc8-4a0c-9ec5-a0af35719a15} - {af68edce-6f69-47c0-9dfc-aa4e4a57bb4c} + {61a70b91-f797-441a-8136-824728604392} - {3c50bd5e-06e8-479a-8ced-6bdd7d6c2d3e} + {7655f696-a3ea-4b70-8182-56b3d565b9f0} - {40b81b93-eded-40f0-bf8b-d81fe1e491fa} + {3142d9e6-1f7a-464b-8774-4eae9092eb5a} - {a2d956bf-ac32-4eaf-b86b-6616ca8dc412} + {4ce3ad51-9322-4af4-b57e-8de28c9d79c7} - {78e187e7-3a2d-431a-83a0-649724b9860a} + {0aff1b2e-b936-4600-9cd3-88ef750aa1ab} - {dd51de33-41e2-48d0-8a58-da7f46045b3e} + {dcd82e8a-493e-40a5-aa0e-957a4cbfdee5} - {b6b4444d-de4d-45a7-b298-db4883ba791d} + {2773dc35-eef1-49e4-8e7f-e7252d3a9f60} - {77d103fa-c6f2-44a5-91d6-e01a4a21db9b} + {b1480794-01cc-469d-a61b-356d443583dc} diff --git a/XML/XML_WEC2013_vs120.vcxproj b/XML/XML_WEC2013_vs120.vcxproj index 5be82354c..3e8cebca9 100644 --- a/XML/XML_WEC2013_vs120.vcxproj +++ b/XML/XML_WEC2013_vs120.vcxproj @@ -98,31 +98,31 @@ ..\bin\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\XML\$(Platform)\$(Configuration)\ true true ..\bin\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\XML\$(Platform)\$(Configuration)\ false true ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\XML\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\XML\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\XML\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\XML\$(Platform)\$(Configuration)\ diff --git a/XML/XML_WEC2013_vs120.vcxproj.filters b/XML/XML_WEC2013_vs120.vcxproj.filters index ba7ec116b..fb0c2878c 100644 --- a/XML/XML_WEC2013_vs120.vcxproj.filters +++ b/XML/XML_WEC2013_vs120.vcxproj.filters @@ -2,40 +2,40 @@ - {3b7a6e88-5949-4c68-aef3-0e905035d594} + {1e31af50-3be4-4a7c-a7e6-f2d95fb5ba44} - {5011e43e-b7ad-4578-bb41-6fb17a37b2ea} + {e5f07a07-29bd-42cd-aed4-be180f244f6d} - {23593808-37d1-4fcf-90e8-f231ca340ba9} + {d76446fb-5fa3-4cb6-b7fb-c51ed67ec52e} - {315e56f0-8e32-4727-8698-8e5c53398b69} + {bed08c13-1443-4d9a-9ba6-351b63836197} - {7c29807d-63cd-4305-b839-4fff05d0d512} + {ab26e3e7-10f2-4fa2-baef-6d43206007f8} - {d8b88d78-5ccf-4b68-b4a2-dcbc7c649f85} + {46e1c652-1fa9-4b92-8b98-b2efb7883795} - {bfe655f3-fd73-4549-8da7-af342b144633} + {98357157-e088-4816-b967-4067b62f5228} - {546e0e10-a0b9-4d5f-928f-014a906af082} + {ddc025be-37cd-49ac-849c-a80095bed9a4} - {c1c6dafd-5ebb-4273-a097-1ac151d9043e} + {c312bac7-e486-41fa-b99c-2e4e6a87333c} - {2879a3db-f713-4057-a92b-9ea5f2cf07ef} + {0adc398b-ac27-42d7-b48b-a3791d15184c} - {febaf456-404b-4f62-b745-1f91f6533e93} + {f4b5bd4a-06c7-4600-ba72-5db88dd509bc} - {823051b2-abf3-4091-a245-f5f17fded826} + {1946e2ef-bfc6-49fe-abd3-622274841ebb} diff --git a/XML/XML_vs100.vcxproj b/XML/XML_vs100.vcxproj index b482645a5..505bbb64f 100644 --- a/XML/XML_vs100.vcxproj +++ b/XML/XML_vs100.vcxproj @@ -81,19 +81,19 @@ <_ProjectFileVersion>10.0.40219.1 ..\bin\ - obj\$(Configuration)\ + obj\XML\$(Configuration)\ true ..\bin\ - obj\$(Configuration)\ + obj\XML\$(Configuration)\ false ..\lib\ - obj\$(Configuration)\ + obj\XML\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\XML\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\XML\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\XML\$(Configuration)\ PocoXMLd PocoXMLmdd PocoXMLmtd @@ -119,6 +119,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) @@ -130,6 +131,7 @@ Console ..\lib\PocoXMLd.lib MachineX86 + %(AdditionalOptions) @@ -152,6 +154,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) @@ -164,6 +167,7 @@ true ..\lib\PocoXML.lib MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib\PocoXMLmtd.lib @@ -210,6 +215,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib\PocoXMLmt.lib @@ -234,6 +240,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib\PocoXMLmdd.lib @@ -260,6 +267,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) diff --git a/XML/XML_vs100.vcxproj.filters b/XML/XML_vs100.vcxproj.filters index 8a560ff97..4d1ab581d 100644 --- a/XML/XML_vs100.vcxproj.filters +++ b/XML/XML_vs100.vcxproj.filters @@ -2,40 +2,40 @@ - {3f4ba71d-90df-4bf5-ab9c-b5dee3138cf6} + {a4faf9fd-ec3c-4e47-ba43-01392717c5ab} - {9e228f47-5d5e-4efe-90dc-0ff0ef2f36ff} + {2618955e-c385-4831-b34c-5be0785f8ced} - {44362291-a50f-4204-a866-4f82126918da} + {d3114bdb-49df-49ce-9ee2-ea847aa5541e} - {c650d5d9-a18a-4022-b14d-eb7fe78d4854} + {35b47d48-b213-41b8-ab46-610b72067cb4} - {0af1b0ae-3256-4f2b-9cd3-363401147a11} + {f22d231d-0275-420c-878e-d91a8486f73a} - {50148e26-5279-4489-9b82-9d8a0689670a} + {d72a3d84-7db6-49c9-9597-defbf47cbe34} - {6c6bbc31-5d2a-4097-a22b-c06dfe7e0606} + {471ea66e-06b6-4453-a431-71d040e83e90} - {09f6d0a8-814f-473d-ae75-55fd5e220767} + {b619e041-3932-42db-9294-f7faae7386ce} - {adfdd931-47c9-49c0-91e6-800e397c3dd2} + {5bb33646-4027-4957-a0b5-b7338b7c371d} - {49487134-190a-4554-b4d5-57838e4def50} + {4d538946-ad1e-4862-bef2-2628b3cb99c5} - {dd2899aa-d822-4ba2-b0bd-7f7e18505578} + {8ea3b9e1-8d97-4c23-aaf7-af3a11b72ca6} - {00e7462f-1fda-4d76-be4c-7a6069e01686} + {aeb8d72a-cb33-4d57-92ce-9c5964c14c1b} diff --git a/XML/XML_vs110.vcxproj b/XML/XML_vs110.vcxproj index ebe6f02e7..63c608b81 100644 --- a/XML/XML_vs110.vcxproj +++ b/XML/XML_vs110.vcxproj @@ -95,29 +95,29 @@ ..\bin\ - obj\$(Configuration)\ + obj\XML\$(Configuration)\ true ..\bin\ - obj\$(Configuration)\ + obj\XML\$(Configuration)\ false ..\lib\ - obj\$(Configuration)\ + obj\XML\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\XML\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\XML\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\XML\$(Configuration)\ diff --git a/XML/XML_vs110.vcxproj.filters b/XML/XML_vs110.vcxproj.filters index b76d04637..09539c9db 100644 --- a/XML/XML_vs110.vcxproj.filters +++ b/XML/XML_vs110.vcxproj.filters @@ -2,40 +2,40 @@ - {cbbfc934-794b-47aa-b749-db3cbbd8b377} + {fc797588-f3ab-4e6f-93ff-a05648722453} - {c6994c13-891b-4848-94cd-b1c6b6a57b17} + {40055447-9ce1-45a4-af08-fe3e8c3e04b6} - {de885fd5-0c16-4b49-b886-29a60fae333f} + {f1238f2f-d1dc-4403-a9b7-ab0373e27db7} - {d267849f-00ef-4559-a00c-a89eafb804f6} + {90253361-b28a-41d2-9cbe-54660711864f} - {fbddbcb0-cb28-494b-8f58-44c42db964e4} + {eda51579-7c60-42c3-a9dc-65ada29a5cf3} - {8338b9e7-87a4-4a97-b2bc-6ca751e54599} + {7f791622-20ff-4a6a-bd80-c9302009b903} - {47730228-ed35-4af7-91c7-778915d59d3a} + {eb4aab6d-e81c-4327-8445-bdca22e110ff} - {cc5f8115-9186-4b28-b7b3-4025395fb356} + {19c27b0a-c564-4ac3-ba29-16eeed15b6e3} - {ec075743-c2b2-42d4-8eb0-4aa01c0aad2b} + {7ce17501-7701-4367-bc90-eb04c34fef2c} - {8f7e1a68-1d34-46ad-b245-c11bf396a890} + {6a5d55ff-d414-4f15-b85e-278a49381b9c} - {16c88117-38e1-4bc2-8914-47efa7767960} + {1a2fcb26-f2fd-4c7b-aae2-b68542cfea63} - {54c3033a-525a-4d49-918b-92c29893836b} + {9a2367cf-ef3b-4b32-98f2-cc573fb79bc9} diff --git a/XML/XML_vs120.vcxproj b/XML/XML_vs120.vcxproj index d0d3a51ef..2ea998ed2 100644 --- a/XML/XML_vs120.vcxproj +++ b/XML/XML_vs120.vcxproj @@ -95,29 +95,29 @@ ..\bin\ - obj\$(Configuration)\ + obj\XML\$(Configuration)\ true ..\bin\ - obj\$(Configuration)\ + obj\XML\$(Configuration)\ false ..\lib\ - obj\$(Configuration)\ + obj\XML\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\XML\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\XML\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\XML\$(Configuration)\ diff --git a/XML/XML_vs120.vcxproj.filters b/XML/XML_vs120.vcxproj.filters index f7155023d..0cbe34538 100644 --- a/XML/XML_vs120.vcxproj.filters +++ b/XML/XML_vs120.vcxproj.filters @@ -2,40 +2,40 @@ - {9abc6fb3-1d0b-4df9-ac0d-e71db8708a8e} + {2490e44d-ffca-4fdd-8b08-e4aed135269c} - {a62bc1bd-ae15-4009-9a92-c22f0dddff8d} + {036c0056-851c-4ef7-9222-5c8b32c94b81} - {f2125a05-55e8-4a2b-9033-a7d6d57c6094} + {8d95144a-5bc3-4013-a683-539e86d05416} - {affcb0ff-166a-449c-82e0-cf81c75e33bf} + {43c0dea7-dd03-4769-b621-e5a17d8526c3} - {ae25f434-395f-4641-93c1-43a00a1bf221} + {496e14fb-c775-4829-8af5-f9de68fe3a7a} - {bda010d3-7f70-4aa7-ace2-52b500c1a7af} + {7d574830-60cb-4563-bdaf-01610922e7ce} - {474a8d74-b9c3-4323-bfcd-ffef2621745b} + {69fc56f9-07c4-43c3-b807-52a3b057a77f} - {1116a551-4821-43ab-9a7d-5eef579a5c18} + {7b988f84-5c91-49b4-b72d-d8d426f1cfe2} - {299bf061-a9f6-4dea-ba33-6daa6f16a65c} + {a0fe6949-b9ae-4184-a5ec-3a5617c05b40} - {2c52c749-45ae-4d95-a15a-bc92f0f19f7d} + {4be6a73b-c8fc-4c90-b3d0-2a2352fa7fd2} - {7e83d5f7-15d4-4b29-872c-220eecc3e20e} + {934d4e5c-ef2c-4390-9d5b-786776125e94} - {c6346b0d-5365-46b8-a1d3-2379d3b7ce26} + {a76d7659-8641-4fac-aea2-61910e82630c} diff --git a/XML/XML_vs71.vcproj b/XML/XML_vs71.vcproj index 5fdb0e911..92937a723 100644 --- a/XML/XML_vs71.vcproj +++ b/XML/XML_vs71.vcproj @@ -37,7 +37,8 @@ Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" CompileAs="0" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> @@ -274,7 +280,8 @@ Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" CompileAs="0" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> diff --git a/XML/XML_vs80.vcproj b/XML/XML_vs80.vcproj index 99c84ce34..26bf17cfb 100644 --- a/XML/XML_vs80.vcproj +++ b/XML/XML_vs80.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="4" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 ..\bin64\ - obj64\$(Configuration)\ + obj64\XML\$(Configuration)\ true ..\bin64\ - obj64\$(Configuration)\ + obj64\XML\$(Configuration)\ false ..\lib64\ - obj64\$(Configuration)\ + obj64\XML\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\XML\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\XML\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\XML\$(Configuration)\ PocoXML64d PocoXMLmdd PocoXMLmtd @@ -119,6 +119,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) @@ -130,6 +131,7 @@ Console ..\lib64\PocoXMLd.lib MachineX64 + %(AdditionalOptions) @@ -152,6 +154,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) %(AdditionalDependencies) @@ -164,6 +167,7 @@ true ..\lib64\PocoXML.lib MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib64\PocoXMLmtd.lib @@ -210,6 +215,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib64\PocoXMLmt.lib @@ -234,6 +240,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib64\PocoXMLmdd.lib @@ -259,6 +266,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib64\PocoXMLmd.lib diff --git a/XML/XML_x64_vs100.vcxproj.filters b/XML/XML_x64_vs100.vcxproj.filters index 3e87850d5..acd16c09b 100644 --- a/XML/XML_x64_vs100.vcxproj.filters +++ b/XML/XML_x64_vs100.vcxproj.filters @@ -2,40 +2,40 @@ - {fe477e1f-5873-4034-946e-6d7e6d446018} + {1c261c2f-b1bc-451e-8912-559bd73111dc} - {30d28702-6453-4b73-91e6-972a285f1dc7} + {774a610c-1ef6-4301-941d-be2a4d17b766} - {d89a0225-9b8b-4867-a85c-1a15f15a18f4} + {62622fee-0002-4c2d-8d0b-9bc6ba48bc9f} - {d0e7e346-77af-4d19-afd3-81961d98a713} + {685e76b5-590c-42e5-8215-d818154481c1} - {081097af-eaee-429c-8aac-fa9ec728e8d5} + {2c708bed-dd25-4152-9b77-064eab6bcba8} - {9f204dd6-9330-43a9-b573-b1d5ffbd80ed} + {2ac493ce-8aca-4f82-aa3b-c0965a3b44e6} - {5e728400-6fe4-483f-9836-e5143c6f324b} + {10a79931-fc22-4b54-ad2c-34b78e3e0d68} - {3008b7cb-9dee-484f-b05d-a9105b017190} + {e820f83e-ffd2-4753-ae52-aef613e11097} - {c4e9e3d0-b455-4245-a984-979bec3e2448} + {2900a13b-3299-484a-857d-6c3029d5bbc4} - {a0116970-d16e-4b47-8c30-da7eb7bfda1f} + {b842cb04-dd5f-492d-be73-a329560e61b9} - {5da9294f-2cf2-4102-8d00-d86d0899f213} + {4d23cbb4-65cb-4fc2-b0aa-7da7bad9f048} - {ea38c98c-4d5b-46ca-aba4-7fa482bd2d68} + {86d2df4c-1e74-493e-bc6d-73859c367334} diff --git a/XML/XML_x64_vs110.vcxproj b/XML/XML_x64_vs110.vcxproj index e0a1efbd5..d7ccc9ae5 100644 --- a/XML/XML_x64_vs110.vcxproj +++ b/XML/XML_x64_vs110.vcxproj @@ -95,29 +95,29 @@ ..\bin64\ - obj64\$(Configuration)\ + obj64\XML\$(Configuration)\ true ..\bin64\ - obj64\$(Configuration)\ + obj64\XML\$(Configuration)\ false ..\lib64\ - obj64\$(Configuration)\ + obj64\XML\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\XML\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\XML\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\XML\$(Configuration)\ diff --git a/XML/XML_x64_vs110.vcxproj.filters b/XML/XML_x64_vs110.vcxproj.filters index c465f2d0f..eed0c8384 100644 --- a/XML/XML_x64_vs110.vcxproj.filters +++ b/XML/XML_x64_vs110.vcxproj.filters @@ -2,40 +2,40 @@ - {5d236948-84f7-47a8-8678-ea6b698cd78c} + {c6b91b4f-13e1-4cba-b3fd-7de7fbab7c60} - {4074402e-8177-4070-9bd6-f4f44c8960a2} + {e2c8ba4f-8c4a-481c-9e78-ebf718c8f0bd} - {17591cb3-1fae-4510-91bb-dec40eec9815} + {cc2ab579-6083-4f06-8ddc-500803ea9d8c} - {82fc5ac2-3bf9-4554-b87a-b99bce1d0459} + {14f41601-d381-477a-89ad-308b3604b3d9} - {52b02da6-9d1a-4965-9fa1-f3a66837eb9e} + {016e5e98-c2dc-4cc4-b48e-df6444d986c3} - {3eafef93-7819-429a-a890-cee935a5e706} + {a41a8b70-b1d4-4dbd-acb7-359a03042303} - {36b54b62-b9ae-410d-bef3-1c9e2982f39d} + {0e30ce03-ccb9-4b93-9f0d-b4c37b7a6ade} - {84ca2e59-5cbc-47e8-92df-70c65e08c2c7} + {d3cf816c-495f-4fef-9564-ce031fc94d16} - {33c3905e-45fb-4b58-922c-daecd6b5ff6b} + {576521e4-0f88-42a1-9598-7a012fd5e7e2} - {fe000506-d867-4fcc-a85c-17b71eba4146} + {7f83d483-325d-4edb-8605-3aa8dbe79a12} - {7ff8bdc8-efb7-43d6-9605-3e914a14f3a9} + {00f27b21-028d-4884-b9e9-0884083ed9e0} - {73c1bd2d-dc91-476b-b0a4-407c34473dae} + {98e53cc9-8e69-499a-9787-a88ae61aee9b} diff --git a/XML/XML_x64_vs120.vcxproj b/XML/XML_x64_vs120.vcxproj index 78782bc16..d7e51e9cb 100644 --- a/XML/XML_x64_vs120.vcxproj +++ b/XML/XML_x64_vs120.vcxproj @@ -95,29 +95,29 @@ ..\bin64\ - obj64\$(Configuration)\ + obj64\XML\$(Configuration)\ true ..\bin64\ - obj64\$(Configuration)\ + obj64\XML\$(Configuration)\ false ..\lib64\ - obj64\$(Configuration)\ + obj64\XML\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\XML\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\XML\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\XML\$(Configuration)\ diff --git a/XML/XML_x64_vs120.vcxproj.filters b/XML/XML_x64_vs120.vcxproj.filters index 379fad055..1b3b3e75e 100644 --- a/XML/XML_x64_vs120.vcxproj.filters +++ b/XML/XML_x64_vs120.vcxproj.filters @@ -2,40 +2,40 @@ - {25d2e27c-0e2c-4edc-9c0b-8efe25dd28c9} + {874fe242-244d-401a-b8b3-04bda4a095b3} - {e5cb2e5c-c1f6-4193-8035-2b68b37a67c9} + {c5458017-743a-4eb7-a87b-2429b73b328b} - {aadec6b4-6997-438d-bd12-cf494ff4c3dc} + {a40eb93e-741e-4fee-ad56-5db1738255a8} - {02f31227-a836-4087-8627-a36f32698ba4} + {d3883394-d125-4af1-a710-325680472d97} - {23a2887e-07e6-4cba-b4f7-aa0f41d85d7c} + {bcd73bd5-ad3c-43f7-97e2-e3b044c0b28b} - {1d87636f-1fd8-4c1a-9047-7a96c4c5f122} + {b2f89ae9-04c3-4264-9dcd-70b7ccc85e62} - {93045684-aa8c-43b2-9496-acbe4c14b9c2} + {ad10dc1d-0c60-47aa-93c1-87215db0c7e8} - {a7de001f-0151-438c-9cbe-39b1b68262f1} + {5bbbfd9d-dcac-4dac-b957-588f34a7418f} - {a81ef1c7-9b65-489b-a0d3-9d3a3e0628c1} + {f39ecd07-2752-49c4-a55c-aa1dc6874901} - {870dd765-675a-416e-b400-c3d9e83fc68b} + {5991a3d3-353f-48f0-93a1-6fe0880b5d9e} - {d53562b4-119b-4992-b349-6fc8d97a6b60} + {7cb1d18c-55f9-443c-94a7-1b51515d5ca7} - {aa86ec33-3fa3-4e7d-a202-abbed42aa2b9} + {19f4fb88-de6d-4250-80fb-70a8464ef5da} diff --git a/XML/XML_x64_vs90.vcproj b/XML/XML_x64_vs90.vcproj index 112ea03d4..805eac68d 100644 --- a/XML/XML_x64_vs90.vcproj +++ b/XML/XML_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\DOMParser\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\DOMParser\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\DOMParser\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\DOMParser\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\DOMParser\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\DOMParser\$(Platform)\$(Configuration)\ false diff --git a/XML/samples/DOMParser/DOMParser_WEC2013_vs110.vcxproj.filters b/XML/samples/DOMParser/DOMParser_WEC2013_vs110.vcxproj.filters index d0af1b334..bcba7574f 100644 --- a/XML/samples/DOMParser/DOMParser_WEC2013_vs110.vcxproj.filters +++ b/XML/samples/DOMParser/DOMParser_WEC2013_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {cdca636d-02b3-4724-98db-923427d34339} + {7e574264-13e0-4291-b719-7b7bd924a515} - {9f3f530e-9258-4707-9a1e-5dd8987debb1} + {54c285a3-f6da-4736-bdf3-346fd6c052f8} diff --git a/XML/samples/DOMParser/DOMParser_WEC2013_vs120.vcxproj b/XML/samples/DOMParser/DOMParser_WEC2013_vs120.vcxproj index de9f97c6f..31a404d75 100644 --- a/XML/samples/DOMParser/DOMParser_WEC2013_vs120.vcxproj +++ b/XML/samples/DOMParser/DOMParser_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\DOMParser\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\DOMParser\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\DOMParser\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\DOMParser\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\DOMParser\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\DOMParser\$(Platform)\$(Configuration)\ false diff --git a/XML/samples/DOMParser/DOMParser_WEC2013_vs120.vcxproj.filters b/XML/samples/DOMParser/DOMParser_WEC2013_vs120.vcxproj.filters index cb12a2bf9..2c672a878 100644 --- a/XML/samples/DOMParser/DOMParser_WEC2013_vs120.vcxproj.filters +++ b/XML/samples/DOMParser/DOMParser_WEC2013_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {091a3c63-b600-4545-bb49-f54fac0421ab} + {a4b0f470-a0d6-43d7-94cf-db11a11d5912} - {f05c7c88-55da-486b-9a3f-4c71b090fed9} + {1e8ccd9f-7a1b-4c68-9bdc-92e0ead368db} diff --git a/XML/samples/DOMParser/DOMParser_vs100.vcxproj b/XML/samples/DOMParser/DOMParser_vs100.vcxproj index a603c8e0c..611abc23e 100644 --- a/XML/samples/DOMParser/DOMParser_vs100.vcxproj +++ b/XML/samples/DOMParser/DOMParser_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\DOMParser\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\DOMParser\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\DOMParser\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\DOMParser\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\DOMParser\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\DOMParser\$(Configuration)\ false DOMParserd DOMParserd @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\DOMParserd.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\DOMParserd.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\DOMParserd.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/XML/samples/DOMParser/DOMParser_vs100.vcxproj.filters b/XML/samples/DOMParser/DOMParser_vs100.vcxproj.filters index c87c5bdaa..7a205bc42 100644 --- a/XML/samples/DOMParser/DOMParser_vs100.vcxproj.filters +++ b/XML/samples/DOMParser/DOMParser_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {91166035-6337-4ebe-9ffa-ab7462cae8fb} + {20e2bee6-58fd-4ec2-ab3e-5252a21bdf1f} - {de12a9bc-2d21-4bd9-95f1-1b4aae0d25d1} + {9c93e639-789e-4ece-96db-183d6aaf82a4} diff --git a/XML/samples/DOMParser/DOMParser_vs110.vcxproj b/XML/samples/DOMParser/DOMParser_vs110.vcxproj index 66694f723..765d7883b 100644 --- a/XML/samples/DOMParser/DOMParser_vs110.vcxproj +++ b/XML/samples/DOMParser/DOMParser_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\DOMParser\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\DOMParser\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\DOMParser\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\DOMParser\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\DOMParser\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\DOMParser\$(Configuration)\ false diff --git a/XML/samples/DOMParser/DOMParser_vs110.vcxproj.filters b/XML/samples/DOMParser/DOMParser_vs110.vcxproj.filters index 0bca7fa4a..8ad0a164d 100644 --- a/XML/samples/DOMParser/DOMParser_vs110.vcxproj.filters +++ b/XML/samples/DOMParser/DOMParser_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {14ee681e-da5e-4b20-baca-07fdf004e725} + {1dab5705-70fc-4856-b5b4-b13414677f01} - {89c7359e-aae7-47cb-ae3f-05d4a404df75} + {896854ae-c938-476a-aebc-6de77ebb9736} diff --git a/XML/samples/DOMParser/DOMParser_vs120.vcxproj b/XML/samples/DOMParser/DOMParser_vs120.vcxproj index 081f1c032..f318540af 100644 --- a/XML/samples/DOMParser/DOMParser_vs120.vcxproj +++ b/XML/samples/DOMParser/DOMParser_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\DOMParser\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\DOMParser\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\DOMParser\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\DOMParser\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\DOMParser\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\DOMParser\$(Configuration)\ false diff --git a/XML/samples/DOMParser/DOMParser_vs120.vcxproj.filters b/XML/samples/DOMParser/DOMParser_vs120.vcxproj.filters index 0c0c4fd82..0da614748 100644 --- a/XML/samples/DOMParser/DOMParser_vs120.vcxproj.filters +++ b/XML/samples/DOMParser/DOMParser_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {a0e6c3ef-5536-4034-8f68-f2b5aa877975} + {11e4522e-224c-432e-89df-5409a0066993} - {afdaa3cc-0783-40c2-9322-71a277dd0a93} + {b932a84c-b56b-4e72-97d3-b6eac90880db} diff --git a/XML/samples/DOMParser/DOMParser_vs71.vcproj b/XML/samples/DOMParser/DOMParser_vs71.vcproj index 0abc03428..1e66f195b 100644 --- a/XML/samples/DOMParser/DOMParser_vs71.vcproj +++ b/XML/samples/DOMParser/DOMParser_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\DOMParser\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\DOMParser\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\DOMParser\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\DOMParser\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\DOMParser\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\DOMParser\$(Configuration)\ false DOMParserd DOMParserd @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\DOMParserd.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\DOMParserd.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\DOMParserd.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/XML/samples/DOMParser/DOMParser_x64_vs100.vcxproj.filters b/XML/samples/DOMParser/DOMParser_x64_vs100.vcxproj.filters index 2d91ed8b7..c64387bd4 100644 --- a/XML/samples/DOMParser/DOMParser_x64_vs100.vcxproj.filters +++ b/XML/samples/DOMParser/DOMParser_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {655e81c6-4f85-48a3-87f9-fe656729fa25} + {631d1ff0-1869-4d5e-82c0-ae2a29919682} - {396c4722-b612-4057-a838-b0147cdcdf8e} + {8acd3436-6119-428e-803a-53182b4545ec} diff --git a/XML/samples/DOMParser/DOMParser_x64_vs110.vcxproj b/XML/samples/DOMParser/DOMParser_x64_vs110.vcxproj index dd8d4d128..a00f5fa7f 100644 --- a/XML/samples/DOMParser/DOMParser_x64_vs110.vcxproj +++ b/XML/samples/DOMParser/DOMParser_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\DOMParser\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\DOMParser\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\DOMParser\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\DOMParser\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\DOMParser\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\DOMParser\$(Configuration)\ false diff --git a/XML/samples/DOMParser/DOMParser_x64_vs110.vcxproj.filters b/XML/samples/DOMParser/DOMParser_x64_vs110.vcxproj.filters index 851e3cc49..0f78cb98d 100644 --- a/XML/samples/DOMParser/DOMParser_x64_vs110.vcxproj.filters +++ b/XML/samples/DOMParser/DOMParser_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {58f07361-bd53-4765-b48b-c3d7755af195} + {4c9205fd-35db-457b-a561-76531a6effb3} - {34c2c2f8-e8a4-4a45-a0c2-0c2332b2fba2} + {a3dfd18f-d3eb-47b5-b0ce-92577a1f8d44} diff --git a/XML/samples/DOMParser/DOMParser_x64_vs120.vcxproj b/XML/samples/DOMParser/DOMParser_x64_vs120.vcxproj index c158fdb3f..f4eae9547 100644 --- a/XML/samples/DOMParser/DOMParser_x64_vs120.vcxproj +++ b/XML/samples/DOMParser/DOMParser_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\DOMParser\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\DOMParser\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\DOMParser\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\DOMParser\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\DOMParser\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\DOMParser\$(Configuration)\ false diff --git a/XML/samples/DOMParser/DOMParser_x64_vs120.vcxproj.filters b/XML/samples/DOMParser/DOMParser_x64_vs120.vcxproj.filters index db3235f62..3fe0b2f89 100644 --- a/XML/samples/DOMParser/DOMParser_x64_vs120.vcxproj.filters +++ b/XML/samples/DOMParser/DOMParser_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {e0e76bc5-33b3-4913-90cb-49e28b0ab057} + {8f6955c6-f408-4a62-88d9-a8449e81df06} - {0de6e4ef-9f78-443f-8434-11eb3340e778} + {524c0dbc-bc5f-4e9e-9c2c-51c2961c3c4b} diff --git a/XML/samples/DOMParser/DOMParser_x64_vs90.vcproj b/XML/samples/DOMParser/DOMParser_x64_vs90.vcproj index dee98ff3b..9d2d64bb7 100644 --- a/XML/samples/DOMParser/DOMParser_x64_vs90.vcproj +++ b/XML/samples/DOMParser/DOMParser_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\DOMWriter\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\DOMWriter\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\DOMWriter\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\DOMWriter\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\DOMWriter\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\DOMWriter\$(Platform)\$(Configuration)\ false diff --git a/XML/samples/DOMWriter/DOMWriter_WEC2013_vs110.vcxproj.filters b/XML/samples/DOMWriter/DOMWriter_WEC2013_vs110.vcxproj.filters index 4f49a8c60..d01a90e22 100644 --- a/XML/samples/DOMWriter/DOMWriter_WEC2013_vs110.vcxproj.filters +++ b/XML/samples/DOMWriter/DOMWriter_WEC2013_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {0a98e4df-2a60-41ee-b9d7-dfaee3270d42} + {f0693c2c-1ea4-4045-8140-110a899ddb6d} - {e363ec25-5b7f-4f9f-aa0f-1ac189f70eb4} + {eb446f67-03ed-4cbe-a8c0-8d9183e7650d} diff --git a/XML/samples/DOMWriter/DOMWriter_WEC2013_vs120.vcxproj b/XML/samples/DOMWriter/DOMWriter_WEC2013_vs120.vcxproj index 6839ef1d7..9c88a882d 100644 --- a/XML/samples/DOMWriter/DOMWriter_WEC2013_vs120.vcxproj +++ b/XML/samples/DOMWriter/DOMWriter_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\DOMWriter\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\DOMWriter\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\DOMWriter\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\DOMWriter\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\DOMWriter\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\DOMWriter\$(Platform)\$(Configuration)\ false diff --git a/XML/samples/DOMWriter/DOMWriter_WEC2013_vs120.vcxproj.filters b/XML/samples/DOMWriter/DOMWriter_WEC2013_vs120.vcxproj.filters index 81a609494..b55b4d69d 100644 --- a/XML/samples/DOMWriter/DOMWriter_WEC2013_vs120.vcxproj.filters +++ b/XML/samples/DOMWriter/DOMWriter_WEC2013_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {5682d8a3-0f68-4988-bdcc-aa413d25016c} + {2eb0a1c5-cdf3-434e-89fb-1fb325db5b72} - {f055ed7d-6724-4358-8c06-77fbefc53b33} + {6b5eff8a-3e35-440f-9cf3-4dc845341233} diff --git a/XML/samples/DOMWriter/DOMWriter_vs100.vcxproj b/XML/samples/DOMWriter/DOMWriter_vs100.vcxproj index 722ed23bd..160874e44 100644 --- a/XML/samples/DOMWriter/DOMWriter_vs100.vcxproj +++ b/XML/samples/DOMWriter/DOMWriter_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\DOMWriter\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\DOMWriter\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\DOMWriter\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\DOMWriter\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\DOMWriter\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\DOMWriter\$(Configuration)\ false DOMWriterd DOMWriterd @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\DOMWriterd.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\DOMWriterd.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\DOMWriterd.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/XML/samples/DOMWriter/DOMWriter_vs100.vcxproj.filters b/XML/samples/DOMWriter/DOMWriter_vs100.vcxproj.filters index 8cdae9bc3..ba737b8d7 100644 --- a/XML/samples/DOMWriter/DOMWriter_vs100.vcxproj.filters +++ b/XML/samples/DOMWriter/DOMWriter_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {61617bff-c57a-4352-98d3-7486b17beb71} + {751d39d8-2278-49f3-8c4d-ec01d806c436} - {aa6c4843-800c-403f-9135-dc5eb5e3ad1f} + {4625ef45-0a84-4d7e-a06c-0d10864aba55} diff --git a/XML/samples/DOMWriter/DOMWriter_vs110.vcxproj b/XML/samples/DOMWriter/DOMWriter_vs110.vcxproj index 200d988b5..d61765d31 100644 --- a/XML/samples/DOMWriter/DOMWriter_vs110.vcxproj +++ b/XML/samples/DOMWriter/DOMWriter_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\DOMWriter\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\DOMWriter\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\DOMWriter\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\DOMWriter\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\DOMWriter\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\DOMWriter\$(Configuration)\ false diff --git a/XML/samples/DOMWriter/DOMWriter_vs110.vcxproj.filters b/XML/samples/DOMWriter/DOMWriter_vs110.vcxproj.filters index 63740afe3..c86779fe4 100644 --- a/XML/samples/DOMWriter/DOMWriter_vs110.vcxproj.filters +++ b/XML/samples/DOMWriter/DOMWriter_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {75d012fc-4758-4bbe-8b45-94898100fb1a} + {ea0fde50-94a8-402f-ac6a-dce286b5ad32} - {7050404e-043a-4170-b7c2-92481abf66e7} + {327fe4a2-7598-48c1-8eb6-b00369fe3348} diff --git a/XML/samples/DOMWriter/DOMWriter_vs120.vcxproj b/XML/samples/DOMWriter/DOMWriter_vs120.vcxproj index 50cd259b6..531e09d7c 100644 --- a/XML/samples/DOMWriter/DOMWriter_vs120.vcxproj +++ b/XML/samples/DOMWriter/DOMWriter_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\DOMWriter\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\DOMWriter\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\DOMWriter\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\DOMWriter\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\DOMWriter\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\DOMWriter\$(Configuration)\ false diff --git a/XML/samples/DOMWriter/DOMWriter_vs120.vcxproj.filters b/XML/samples/DOMWriter/DOMWriter_vs120.vcxproj.filters index ee0f68a8b..d93018002 100644 --- a/XML/samples/DOMWriter/DOMWriter_vs120.vcxproj.filters +++ b/XML/samples/DOMWriter/DOMWriter_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {85afca80-983c-45d9-8171-cf11033fcca1} + {2e1a511f-1a52-484c-b8a2-85637d7fa721} - {ae053908-a127-4467-975a-54181f8c20ce} + {15e4ff8e-0033-4e77-a870-d9746abcb910} diff --git a/XML/samples/DOMWriter/DOMWriter_vs71.vcproj b/XML/samples/DOMWriter/DOMWriter_vs71.vcproj index 96df679cb..5373bd9c0 100644 --- a/XML/samples/DOMWriter/DOMWriter_vs71.vcproj +++ b/XML/samples/DOMWriter/DOMWriter_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\DOMWriter\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\DOMWriter\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\DOMWriter\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\DOMWriter\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\DOMWriter\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\DOMWriter\$(Configuration)\ false DOMWriterd DOMWriterd @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\DOMWriterd.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\DOMWriterd.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\DOMWriterd.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/XML/samples/DOMWriter/DOMWriter_x64_vs100.vcxproj.filters b/XML/samples/DOMWriter/DOMWriter_x64_vs100.vcxproj.filters index 720b92d4b..edbf4460c 100644 --- a/XML/samples/DOMWriter/DOMWriter_x64_vs100.vcxproj.filters +++ b/XML/samples/DOMWriter/DOMWriter_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {429a32f0-3dd6-4314-a650-773f6d1d1316} + {0f41228f-772b-465c-9565-21d88244e67d} - {28262e4b-fc21-4186-b558-2d9596093407} + {0acb5a4e-eeff-43fa-bd0d-22e358cbc649} diff --git a/XML/samples/DOMWriter/DOMWriter_x64_vs110.vcxproj b/XML/samples/DOMWriter/DOMWriter_x64_vs110.vcxproj index ac9f648bb..526a51b16 100644 --- a/XML/samples/DOMWriter/DOMWriter_x64_vs110.vcxproj +++ b/XML/samples/DOMWriter/DOMWriter_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\DOMWriter\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\DOMWriter\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\DOMWriter\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\DOMWriter\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\DOMWriter\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\DOMWriter\$(Configuration)\ false diff --git a/XML/samples/DOMWriter/DOMWriter_x64_vs110.vcxproj.filters b/XML/samples/DOMWriter/DOMWriter_x64_vs110.vcxproj.filters index 7a581c4f5..d99395e7b 100644 --- a/XML/samples/DOMWriter/DOMWriter_x64_vs110.vcxproj.filters +++ b/XML/samples/DOMWriter/DOMWriter_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {6c9feb34-c212-482d-8eb1-6b304b29e3f3} + {1227a9da-368a-4277-b0ea-3453fd50ee72} - {5f1dd34b-c44b-46a3-b12c-1c1a03b159e0} + {f3bc4217-bad4-493c-818a-35b027699617} diff --git a/XML/samples/DOMWriter/DOMWriter_x64_vs120.vcxproj b/XML/samples/DOMWriter/DOMWriter_x64_vs120.vcxproj index 2bfd0f64a..ff9e96342 100644 --- a/XML/samples/DOMWriter/DOMWriter_x64_vs120.vcxproj +++ b/XML/samples/DOMWriter/DOMWriter_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\DOMWriter\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\DOMWriter\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\DOMWriter\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\DOMWriter\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\DOMWriter\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\DOMWriter\$(Configuration)\ false diff --git a/XML/samples/DOMWriter/DOMWriter_x64_vs120.vcxproj.filters b/XML/samples/DOMWriter/DOMWriter_x64_vs120.vcxproj.filters index 65b29d1cc..099d2f367 100644 --- a/XML/samples/DOMWriter/DOMWriter_x64_vs120.vcxproj.filters +++ b/XML/samples/DOMWriter/DOMWriter_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {5e79decf-4b0b-4518-b2b9-1e921049dc13} + {571cc6bd-9751-43b0-a014-db8dfd8d468c} - {ce8f3bb5-ee5a-4ccf-8a3a-af39e872c468} + {171cb295-6b59-47c7-a909-3bdad5b04d25} diff --git a/XML/samples/DOMWriter/DOMWriter_x64_vs90.vcproj b/XML/samples/DOMWriter/DOMWriter_x64_vs90.vcproj index 9652fa09e..92c9fa3ba 100644 --- a/XML/samples/DOMWriter/DOMWriter_x64_vs90.vcproj +++ b/XML/samples/DOMWriter/DOMWriter_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\PrettyPrint\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\PrettyPrint\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\PrettyPrint\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\PrettyPrint\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\PrettyPrint\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\PrettyPrint\$(Platform)\$(Configuration)\ false diff --git a/XML/samples/PrettyPrint/PrettyPrint_WEC2013_vs110.vcxproj.filters b/XML/samples/PrettyPrint/PrettyPrint_WEC2013_vs110.vcxproj.filters index 623d6bb1a..29ec3b6e1 100644 --- a/XML/samples/PrettyPrint/PrettyPrint_WEC2013_vs110.vcxproj.filters +++ b/XML/samples/PrettyPrint/PrettyPrint_WEC2013_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {400d32d4-1fb8-403c-841b-28d5d02e8215} + {5e1b1647-406f-42fa-8fb3-03993980c379} - {0b6490e6-62a5-43b5-8cc9-2d0d8857d315} + {8ffa7a39-3b82-4d50-9df9-40daa8b19f09} diff --git a/XML/samples/PrettyPrint/PrettyPrint_WEC2013_vs120.vcxproj b/XML/samples/PrettyPrint/PrettyPrint_WEC2013_vs120.vcxproj index a1e84a78b..b05bc088f 100644 --- a/XML/samples/PrettyPrint/PrettyPrint_WEC2013_vs120.vcxproj +++ b/XML/samples/PrettyPrint/PrettyPrint_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\PrettyPrint\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\PrettyPrint\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\PrettyPrint\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\PrettyPrint\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\PrettyPrint\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\PrettyPrint\$(Platform)\$(Configuration)\ false diff --git a/XML/samples/PrettyPrint/PrettyPrint_WEC2013_vs120.vcxproj.filters b/XML/samples/PrettyPrint/PrettyPrint_WEC2013_vs120.vcxproj.filters index 270ac2c4d..7565f587c 100644 --- a/XML/samples/PrettyPrint/PrettyPrint_WEC2013_vs120.vcxproj.filters +++ b/XML/samples/PrettyPrint/PrettyPrint_WEC2013_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {750f49f8-7ab9-4494-921b-6300c9fd8dc7} + {9e402adf-b485-4aa7-b386-d6bf18129ded} - {a4ab3875-97e1-4dba-aabe-06dfb87fed5b} + {6722dc98-630a-43bb-ad62-90776fc8ad10} diff --git a/XML/samples/PrettyPrint/PrettyPrint_vs100.vcxproj b/XML/samples/PrettyPrint/PrettyPrint_vs100.vcxproj index a659edc5f..e6427819e 100644 --- a/XML/samples/PrettyPrint/PrettyPrint_vs100.vcxproj +++ b/XML/samples/PrettyPrint/PrettyPrint_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\PrettyPrint\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\PrettyPrint\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\PrettyPrint\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\PrettyPrint\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\PrettyPrint\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\PrettyPrint\$(Configuration)\ false PrettyPrintd PrettyPrintd @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\PrettyPrintd.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\PrettyPrintd.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\PrettyPrintd.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/XML/samples/PrettyPrint/PrettyPrint_vs100.vcxproj.filters b/XML/samples/PrettyPrint/PrettyPrint_vs100.vcxproj.filters index 0e4d5fcf7..cd5e869c4 100644 --- a/XML/samples/PrettyPrint/PrettyPrint_vs100.vcxproj.filters +++ b/XML/samples/PrettyPrint/PrettyPrint_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {ec0090b1-53c0-4549-92d4-92c2ace91bad} + {044cf39c-cb38-400a-bd53-257389dac9e5} - {8e1489bf-be35-4fbb-8087-bf3ad332ee10} + {2d881dc4-9194-4aa8-a881-57cb514c44f1} diff --git a/XML/samples/PrettyPrint/PrettyPrint_vs110.vcxproj b/XML/samples/PrettyPrint/PrettyPrint_vs110.vcxproj index 50abf3e38..ac9c28d5f 100644 --- a/XML/samples/PrettyPrint/PrettyPrint_vs110.vcxproj +++ b/XML/samples/PrettyPrint/PrettyPrint_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\PrettyPrint\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\PrettyPrint\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\PrettyPrint\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\PrettyPrint\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\PrettyPrint\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\PrettyPrint\$(Configuration)\ false diff --git a/XML/samples/PrettyPrint/PrettyPrint_vs110.vcxproj.filters b/XML/samples/PrettyPrint/PrettyPrint_vs110.vcxproj.filters index 80276857a..58c7f6aef 100644 --- a/XML/samples/PrettyPrint/PrettyPrint_vs110.vcxproj.filters +++ b/XML/samples/PrettyPrint/PrettyPrint_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {61bef701-8506-4fc0-9599-45a2abcfab49} + {2e97b571-4b45-4439-b50d-7ace43bdac45} - {c90c0537-7117-4cd9-bd00-513a8a4750ca} + {74099f17-bc40-487c-a7ef-f3a9e0a2586e} diff --git a/XML/samples/PrettyPrint/PrettyPrint_vs120.vcxproj b/XML/samples/PrettyPrint/PrettyPrint_vs120.vcxproj index 63df4d85a..0f55598cd 100644 --- a/XML/samples/PrettyPrint/PrettyPrint_vs120.vcxproj +++ b/XML/samples/PrettyPrint/PrettyPrint_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\PrettyPrint\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\PrettyPrint\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\PrettyPrint\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\PrettyPrint\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\PrettyPrint\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\PrettyPrint\$(Configuration)\ false diff --git a/XML/samples/PrettyPrint/PrettyPrint_vs120.vcxproj.filters b/XML/samples/PrettyPrint/PrettyPrint_vs120.vcxproj.filters index ae1c5baec..022867099 100644 --- a/XML/samples/PrettyPrint/PrettyPrint_vs120.vcxproj.filters +++ b/XML/samples/PrettyPrint/PrettyPrint_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {d150e596-7d27-456d-a9c5-db2bccfbfd0e} + {1adf38ba-6c76-473a-900f-f98cba3b052e} - {273714d7-7b74-464c-bec5-7f82718c54ba} + {07d0ba7e-c365-47be-907a-9b6861f2296b} diff --git a/XML/samples/PrettyPrint/PrettyPrint_vs71.vcproj b/XML/samples/PrettyPrint/PrettyPrint_vs71.vcproj index b85de4d6c..4c62ed5a9 100644 --- a/XML/samples/PrettyPrint/PrettyPrint_vs71.vcproj +++ b/XML/samples/PrettyPrint/PrettyPrint_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\PrettyPrint\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\PrettyPrint\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\PrettyPrint\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\PrettyPrint\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\PrettyPrint\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\PrettyPrint\$(Configuration)\ false PrettyPrintd PrettyPrintd @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\PrettyPrintd.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\PrettyPrintd.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\PrettyPrintd.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/XML/samples/PrettyPrint/PrettyPrint_x64_vs100.vcxproj.filters b/XML/samples/PrettyPrint/PrettyPrint_x64_vs100.vcxproj.filters index c1cc23965..4be34cf81 100644 --- a/XML/samples/PrettyPrint/PrettyPrint_x64_vs100.vcxproj.filters +++ b/XML/samples/PrettyPrint/PrettyPrint_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {38c4f813-69d5-4e23-bdde-1aa732c0447e} + {91bd03c2-ef76-4a6c-b66e-9bdef3d5c0e8} - {910a9dd6-2a51-4d6c-83fd-ecacd934a420} + {ff9bf6af-0211-4242-a2e1-74e9c07f4350} diff --git a/XML/samples/PrettyPrint/PrettyPrint_x64_vs110.vcxproj b/XML/samples/PrettyPrint/PrettyPrint_x64_vs110.vcxproj index 891a740ed..1189bba20 100644 --- a/XML/samples/PrettyPrint/PrettyPrint_x64_vs110.vcxproj +++ b/XML/samples/PrettyPrint/PrettyPrint_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\PrettyPrint\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\PrettyPrint\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\PrettyPrint\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\PrettyPrint\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\PrettyPrint\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\PrettyPrint\$(Configuration)\ false diff --git a/XML/samples/PrettyPrint/PrettyPrint_x64_vs110.vcxproj.filters b/XML/samples/PrettyPrint/PrettyPrint_x64_vs110.vcxproj.filters index 4e565e593..51148e3d7 100644 --- a/XML/samples/PrettyPrint/PrettyPrint_x64_vs110.vcxproj.filters +++ b/XML/samples/PrettyPrint/PrettyPrint_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {76a04cae-548f-41f3-8db6-ccc99054dd27} + {72ca5e7c-89c0-4b60-9724-e26df56b4b20} - {4b199476-7294-48f0-9b90-199e48758caf} + {8a3935c1-fefd-454b-9ac2-e6e3de28d75f} diff --git a/XML/samples/PrettyPrint/PrettyPrint_x64_vs120.vcxproj b/XML/samples/PrettyPrint/PrettyPrint_x64_vs120.vcxproj index 7cdfec946..33789eb6a 100644 --- a/XML/samples/PrettyPrint/PrettyPrint_x64_vs120.vcxproj +++ b/XML/samples/PrettyPrint/PrettyPrint_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\PrettyPrint\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\PrettyPrint\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\PrettyPrint\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\PrettyPrint\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\PrettyPrint\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\PrettyPrint\$(Configuration)\ false diff --git a/XML/samples/PrettyPrint/PrettyPrint_x64_vs120.vcxproj.filters b/XML/samples/PrettyPrint/PrettyPrint_x64_vs120.vcxproj.filters index 7751c7420..8badfd748 100644 --- a/XML/samples/PrettyPrint/PrettyPrint_x64_vs120.vcxproj.filters +++ b/XML/samples/PrettyPrint/PrettyPrint_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {bff3897c-0698-48fa-b5ec-eba890e1ea43} + {a5a9aa86-792c-4976-bf36-2ade20419246} - {a9a84311-ca2c-4b5c-bde6-ff46d485300e} + {359b2400-4e72-4062-9748-e29260ce5098} diff --git a/XML/samples/PrettyPrint/PrettyPrint_x64_vs90.vcproj b/XML/samples/PrettyPrint/PrettyPrint_x64_vs90.vcproj index 32047750c..b038b20c7 100644 --- a/XML/samples/PrettyPrint/PrettyPrint_x64_vs90.vcproj +++ b/XML/samples/PrettyPrint/PrettyPrint_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\SAXParser\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\SAXParser\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\SAXParser\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\SAXParser\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\SAXParser\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\SAXParser\$(Platform)\$(Configuration)\ false diff --git a/XML/samples/SAXParser/SAXParser_WEC2013_vs110.vcxproj.filters b/XML/samples/SAXParser/SAXParser_WEC2013_vs110.vcxproj.filters index 6ac82e81d..0a89378eb 100644 --- a/XML/samples/SAXParser/SAXParser_WEC2013_vs110.vcxproj.filters +++ b/XML/samples/SAXParser/SAXParser_WEC2013_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {026b69ca-22cf-4b0e-975f-b113eae98900} + {27991fb4-889f-4c70-a0da-36a4d47373aa} - {f8453def-0255-4117-871b-6f2a9b7af76e} + {2956cb7b-a8b9-49e4-89bc-6fd2b2f4714c} diff --git a/XML/samples/SAXParser/SAXParser_WEC2013_vs120.vcxproj b/XML/samples/SAXParser/SAXParser_WEC2013_vs120.vcxproj index 26bb1593d..3bc5cf352 100644 --- a/XML/samples/SAXParser/SAXParser_WEC2013_vs120.vcxproj +++ b/XML/samples/SAXParser/SAXParser_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\SAXParser\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\SAXParser\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\SAXParser\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\SAXParser\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\SAXParser\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\SAXParser\$(Platform)\$(Configuration)\ false diff --git a/XML/samples/SAXParser/SAXParser_WEC2013_vs120.vcxproj.filters b/XML/samples/SAXParser/SAXParser_WEC2013_vs120.vcxproj.filters index 09f6672b1..87f965134 100644 --- a/XML/samples/SAXParser/SAXParser_WEC2013_vs120.vcxproj.filters +++ b/XML/samples/SAXParser/SAXParser_WEC2013_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {052a18b1-32ea-4b80-806e-e0f59b5f41d5} + {4aaf7b10-2167-4c96-914a-a3065da0dbeb} - {0f63cb9d-c15a-4362-9a73-cd914abb1fb3} + {00e5e03f-5655-47af-95dc-b4c9a788a9c9} diff --git a/XML/samples/SAXParser/SAXParser_vs100.vcxproj b/XML/samples/SAXParser/SAXParser_vs100.vcxproj index f238def69..2de21f9ae 100644 --- a/XML/samples/SAXParser/SAXParser_vs100.vcxproj +++ b/XML/samples/SAXParser/SAXParser_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\SAXParser\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\SAXParser\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\SAXParser\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\SAXParser\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\SAXParser\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\SAXParser\$(Configuration)\ false SAXParserd SAXParserd @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\SAXParserd.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\SAXParserd.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\SAXParserd.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/XML/samples/SAXParser/SAXParser_vs100.vcxproj.filters b/XML/samples/SAXParser/SAXParser_vs100.vcxproj.filters index 9ae265a49..8e275e875 100644 --- a/XML/samples/SAXParser/SAXParser_vs100.vcxproj.filters +++ b/XML/samples/SAXParser/SAXParser_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {f39f8369-1816-4f7d-86ae-fafa88d90671} + {65c7b94d-acbe-4e51-be10-8e89552fc927} - {1b299161-33d0-43de-8e98-5e87a142da94} + {cfa02233-e407-4fa4-80ef-c48fcb9cbfef} diff --git a/XML/samples/SAXParser/SAXParser_vs110.vcxproj b/XML/samples/SAXParser/SAXParser_vs110.vcxproj index 58a96e3a3..13c0f59b9 100644 --- a/XML/samples/SAXParser/SAXParser_vs110.vcxproj +++ b/XML/samples/SAXParser/SAXParser_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\SAXParser\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\SAXParser\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\SAXParser\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\SAXParser\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\SAXParser\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\SAXParser\$(Configuration)\ false diff --git a/XML/samples/SAXParser/SAXParser_vs110.vcxproj.filters b/XML/samples/SAXParser/SAXParser_vs110.vcxproj.filters index ddd54848f..b6a6a718f 100644 --- a/XML/samples/SAXParser/SAXParser_vs110.vcxproj.filters +++ b/XML/samples/SAXParser/SAXParser_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {fdadca74-4658-495a-95c6-eff3b5f52ed4} + {c22fc01d-9a01-42d8-ba24-bb9c01371fdb} - {ac2ca265-ea1b-440e-8730-102b9e87e9e7} + {8f06cc92-e574-4e25-8549-a7e578d1a5dd} diff --git a/XML/samples/SAXParser/SAXParser_vs120.vcxproj b/XML/samples/SAXParser/SAXParser_vs120.vcxproj index 79ee1679c..11032e376 100644 --- a/XML/samples/SAXParser/SAXParser_vs120.vcxproj +++ b/XML/samples/SAXParser/SAXParser_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\SAXParser\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\SAXParser\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\SAXParser\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\SAXParser\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\SAXParser\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\SAXParser\$(Configuration)\ false diff --git a/XML/samples/SAXParser/SAXParser_vs120.vcxproj.filters b/XML/samples/SAXParser/SAXParser_vs120.vcxproj.filters index a258384bd..e6c053634 100644 --- a/XML/samples/SAXParser/SAXParser_vs120.vcxproj.filters +++ b/XML/samples/SAXParser/SAXParser_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {fff2c739-d478-4959-81fe-d78ef3c2fd6e} + {d08a0f20-d356-4561-b710-7d796f13a576} - {157ff854-f904-4bde-9a0c-607dc015154f} + {db3b5293-30dd-443c-aeb5-2c1f1b25ca2f} diff --git a/XML/samples/SAXParser/SAXParser_vs71.vcproj b/XML/samples/SAXParser/SAXParser_vs71.vcproj index f04038e49..07d019496 100644 --- a/XML/samples/SAXParser/SAXParser_vs71.vcproj +++ b/XML/samples/SAXParser/SAXParser_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\SAXParser\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\SAXParser\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\SAXParser\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\SAXParser\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\SAXParser\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\SAXParser\$(Configuration)\ false SAXParserd SAXParserd @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\SAXParserd.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\SAXParserd.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\SAXParserd.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/XML/samples/SAXParser/SAXParser_x64_vs100.vcxproj.filters b/XML/samples/SAXParser/SAXParser_x64_vs100.vcxproj.filters index 535c8f789..fd39714bc 100644 --- a/XML/samples/SAXParser/SAXParser_x64_vs100.vcxproj.filters +++ b/XML/samples/SAXParser/SAXParser_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {582272a5-5bba-443b-ad31-04385b26aebe} + {d60bca55-f85b-4952-be5b-3ef0b236fbcc} - {5beaeabb-a476-41c4-88db-dda382c4e109} + {9bcf22ff-d46a-4380-b203-70ab19f9101a} diff --git a/XML/samples/SAXParser/SAXParser_x64_vs110.vcxproj b/XML/samples/SAXParser/SAXParser_x64_vs110.vcxproj index e4ec9143c..01ea16b71 100644 --- a/XML/samples/SAXParser/SAXParser_x64_vs110.vcxproj +++ b/XML/samples/SAXParser/SAXParser_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\SAXParser\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\SAXParser\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\SAXParser\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\SAXParser\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\SAXParser\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\SAXParser\$(Configuration)\ false diff --git a/XML/samples/SAXParser/SAXParser_x64_vs110.vcxproj.filters b/XML/samples/SAXParser/SAXParser_x64_vs110.vcxproj.filters index 8427527c3..f408d6b42 100644 --- a/XML/samples/SAXParser/SAXParser_x64_vs110.vcxproj.filters +++ b/XML/samples/SAXParser/SAXParser_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {73163741-ef34-4c97-978d-8aba986dfbbc} + {5d42dc55-198e-4154-ab67-d370c38bac04} - {24228dab-f115-4872-9984-1b672f4aa6c1} + {8157b5bb-adde-4873-a8fa-eb5da3796e31} diff --git a/XML/samples/SAXParser/SAXParser_x64_vs120.vcxproj b/XML/samples/SAXParser/SAXParser_x64_vs120.vcxproj index 04bf6c0c2..5c3fae0d8 100644 --- a/XML/samples/SAXParser/SAXParser_x64_vs120.vcxproj +++ b/XML/samples/SAXParser/SAXParser_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\SAXParser\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\SAXParser\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\SAXParser\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\SAXParser\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\SAXParser\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\SAXParser\$(Configuration)\ false diff --git a/XML/samples/SAXParser/SAXParser_x64_vs120.vcxproj.filters b/XML/samples/SAXParser/SAXParser_x64_vs120.vcxproj.filters index 73fdc1358..24ff1d3cb 100644 --- a/XML/samples/SAXParser/SAXParser_x64_vs120.vcxproj.filters +++ b/XML/samples/SAXParser/SAXParser_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {f1782c97-a10f-4d83-a685-157ca713d1d5} + {97b6a9c0-9dd8-4b04-9bc0-7e9f71ba3539} - {a897faeb-b1d4-4c85-a031-f57b9a73da55} + {5ff0a1cf-a038-419a-be13-628392fbf9fd} diff --git a/XML/samples/SAXParser/SAXParser_x64_vs90.vcproj b/XML/samples/SAXParser/SAXParser_x64_vs90.vcproj index 5878336cb..f8efb33a7 100644 --- a/XML/samples/SAXParser/SAXParser_x64_vs90.vcproj +++ b/XML/samples/SAXParser/SAXParser_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false diff --git a/XML/testsuite/TestSuite_WEC2013_vs110.vcxproj.filters b/XML/testsuite/TestSuite_WEC2013_vs110.vcxproj.filters index 6c6b0c1d1..0d0edc809 100644 --- a/XML/testsuite/TestSuite_WEC2013_vs110.vcxproj.filters +++ b/XML/testsuite/TestSuite_WEC2013_vs110.vcxproj.filters @@ -2,46 +2,46 @@ - {af49e28e-9a37-4de1-979c-ce319760e2bb} + {cb2c1a07-13ad-46a1-a4d3-e2c826dbe11e} - {638d5090-b9cc-41d0-88dc-93596584c78a} + {81e9d7a3-cdbb-4270-8cf1-e183a427cc37} - {00a96117-4ecf-4950-b60c-6e8290418c39} + {6f8b0af7-27cd-4dc9-ba18-2b91b6a77a2e} - {af4e55ed-10e9-4d39-94f1-0d0a319c1a0c} + {c09a92ae-1fc2-4453-932b-89cd93731998} - {a19d26f0-e18a-47fb-be73-c422b2d1e6bd} + {b0176370-a8c7-4a4e-8196-fdddb4257cf7} - {3ce532e6-99ff-4d60-b885-a902500cf20b} + {2458b291-c09d-495d-bb2e-dd00719ae93d} - {ba841587-65bf-4a6f-a738-6c870f27665e} + {6d74c272-38ad-4a06-ba6e-eb86f5b415c6} - {6baa3996-1a18-4bed-b7e4-6697d75cb37c} + {ce2e1e64-1612-455b-8db8-31d79a3af944} - {c8e50b0d-c417-4109-bd0c-edfa41e7a395} + {eb74452c-ae22-4541-9f23-a83ba0ae4f1b} - {909a4900-518f-418c-8c3e-baa4078704f8} + {c68f5d77-8723-4c29-8254-446e51345d82} - {bc3f4bd9-ad4f-43a1-825d-8c9d7677b2bc} + {a0edae98-639f-43db-906e-4ec1627b3b06} - {efa76a0f-0187-41fa-80f5-4a2a64cf0f3f} + {027649c8-fff9-45c4-9e00-e832f23e40bc} - {6a759823-df9f-4f8d-ab84-1c086f20b0d3} + {ed56bd4c-9513-4737-95c2-7c93924fa337} - {ef048472-e9ea-4466-b198-ad99816369a5} + {01df6fa5-75fc-49fb-9845-32f25749128c} diff --git a/XML/testsuite/TestSuite_WEC2013_vs120.vcxproj b/XML/testsuite/TestSuite_WEC2013_vs120.vcxproj index 99dc17925..86354f705 100644 --- a/XML/testsuite/TestSuite_WEC2013_vs120.vcxproj +++ b/XML/testsuite/TestSuite_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false diff --git a/XML/testsuite/TestSuite_WEC2013_vs120.vcxproj.filters b/XML/testsuite/TestSuite_WEC2013_vs120.vcxproj.filters index 887ca9cb9..697ff47c1 100644 --- a/XML/testsuite/TestSuite_WEC2013_vs120.vcxproj.filters +++ b/XML/testsuite/TestSuite_WEC2013_vs120.vcxproj.filters @@ -2,46 +2,46 @@ - {01be1bfd-4ba5-4d97-acba-a272646f5c5a} + {283918a2-9af8-48f9-a1c4-c7e072ad4632} - {af323b6b-b653-4479-afd6-4807805066f3} + {9c3f94f5-fe26-46e8-9a99-3656f6abbb73} - {5d4b6a46-fa53-48de-aff0-41910c6ea4b3} + {a1756c6a-b64e-4314-8dc2-cb689877da82} - {52b56603-dd83-43fe-8474-703671215fce} + {401d50ba-8ed4-4f3e-82b4-521ec0dc6c95} - {2b31c6c4-3b2d-41ed-b48b-76220be085ae} + {2cc0b520-3c93-4a62-87d4-b6cacd376ec9} - {01573597-a5e9-4f2c-be2f-7df84ced7b16} + {e4ff2200-b680-461c-84b1-4c4a0fd2e3ff} - {3923fd8b-dcf4-4d11-a0e8-fa65a5daca1d} + {e471ab3d-3fc8-46fc-8c1b-1dd61e0c86ac} - {c44f3d02-d09d-4a34-be4e-2e968e59e517} + {fc433bdc-5b8c-4f33-ac9f-292873c10021} - {ca63a7b9-7f40-4a1b-9c9e-e948f0879892} + {151d7d46-3bc2-46eb-afc4-5868f8875637} - {e64d2364-f2ec-42ec-95a1-5853c714597e} + {983fc957-4d72-4d7c-b140-60b5d7db6994} - {148355da-68b0-4863-a951-b92a3ca8b272} + {44b8fbb7-d0d5-47b9-8de7-04511f147e09} - {49dc2fdc-3478-4984-b3df-a6983421dc33} + {d046ee25-2f9a-4e56-933a-9634846c604f} - {36f6ca16-fecb-48e5-99dd-773ce745ed39} + {acbdc4be-16be-40c4-ac9c-e1583e15b97b} - {7b0d1120-0b3b-455d-8313-0419f2e2a202} + {492ae7b2-f5e3-4cf1-9e43-a6ac40d5abb5} diff --git a/XML/testsuite/TestSuite_vs100.vcxproj b/XML/testsuite/TestSuite_vs100.vcxproj index 4ef96237d..8bfd7347e 100644 --- a/XML/testsuite/TestSuite_vs100.vcxproj +++ b/XML/testsuite/TestSuite_vs100.vcxproj @@ -87,22 +87,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false TestSuited TestSuited @@ -129,6 +129,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitd.lib;WinTestRunnerd.lib;%(AdditionalDependencies) @@ -139,6 +140,7 @@ bin\TestSuited.pdb Windows MachineX86 + %(AdditionalOptions) @@ -161,6 +163,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnit.lib;WinTestRunner.lib;%(AdditionalDependencies) @@ -171,6 +174,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -191,6 +195,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmtd.lib;WinTestRunnermtd.lib;iphlpapi.lib;winmm.lib;nafxcwd.lib;libcmtd.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -202,6 +207,7 @@ bin\static_mt\TestSuited.pdb Windows MachineX86 + %(AdditionalOptions) @@ -224,6 +230,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmt.lib;WinTestRunnermt.lib;iphlpapi.lib;winmm.lib;nafxcw.lib;libcmt.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -235,6 +242,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -255,6 +263,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmdd.lib;WinTestRunnermdd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -265,6 +274,7 @@ bin\static_md\TestSuited.pdb Windows MachineX86 + %(AdditionalOptions) @@ -287,6 +297,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmd.lib;WinTestRunnermd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -297,6 +308,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/XML/testsuite/TestSuite_vs100.vcxproj.filters b/XML/testsuite/TestSuite_vs100.vcxproj.filters index 36af81563..082af0f6d 100644 --- a/XML/testsuite/TestSuite_vs100.vcxproj.filters +++ b/XML/testsuite/TestSuite_vs100.vcxproj.filters @@ -2,46 +2,46 @@ - {9cb0aad3-eabd-47a7-83ee-74a7ee07d87a} + {41e0e420-e6e8-482c-822c-9c24d757bdd3} - {2e45caa4-4f49-43ce-aeb6-0b1bb582d2d4} + {a59b2545-9d40-497f-91e4-5948bada644d} - {43e3994b-5a8d-4fc0-b577-208b82a13fa4} + {57ff6506-0135-4cec-820b-1774890d2ead} - {04b972ed-12d9-45ab-a231-6fa6feafc94f} + {dc905434-b0c9-4cb0-8d7e-39a7f0df5388} - {6c9e3263-badf-49ff-9cdf-c251ca4a8b6f} + {7540fea8-be79-472c-85fa-8075b37145b6} - {1edd4574-b685-4e0a-b03b-5e1b57dd890d} + {16001c16-e6cd-4f5c-a5fb-2afcac0793e5} - {750c5c60-c97b-470a-86a8-dd9693a68611} + {c64e5353-5e2e-43fe-9fd6-1dfd52f0273e} - {51ea54b5-4d52-47d7-ba70-818c9ed5ebd6} + {03716d6a-e9c2-4486-b4eb-e470eec9a552} - {6a3d1214-68d0-4413-9e7a-9cb2f0db803c} + {66400f69-2602-484d-8dbb-38d6a3cdf9af} - {993cccdf-b199-4e02-8d22-01788ccc1168} + {9c44d94d-3225-464e-95bf-581b4477538a} - {39e2ddf9-9e26-4e64-abcc-2f9c007f8194} + {a323d0fd-a276-4684-ab42-c8daa127f8f1} - {441219a5-7089-4da0-8a68-733fe1109680} + {7bed047d-ebc5-47f3-b2b4-129659104a13} - {4e886610-a0cc-4339-a1ff-f1a412b3c934} + {e9996a10-c00d-430b-aa4c-4e680830b93c} - {10f4fb1a-9ffc-40ac-b504-12ea05c812c4} + {f3183fbc-d7e1-4991-9e9f-26b2379b48f5} diff --git a/XML/testsuite/TestSuite_vs110.vcxproj b/XML/testsuite/TestSuite_vs110.vcxproj index 154eaf85f..068c54305 100644 --- a/XML/testsuite/TestSuite_vs110.vcxproj +++ b/XML/testsuite/TestSuite_vs110.vcxproj @@ -101,32 +101,32 @@ bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false diff --git a/XML/testsuite/TestSuite_vs110.vcxproj.filters b/XML/testsuite/TestSuite_vs110.vcxproj.filters index e6aa61a56..f3adcb9de 100644 --- a/XML/testsuite/TestSuite_vs110.vcxproj.filters +++ b/XML/testsuite/TestSuite_vs110.vcxproj.filters @@ -2,46 +2,46 @@ - {802da046-03bd-41c2-8922-1cf5a76a14f2} + {a29b35ba-9faa-44cb-834a-9ea3cdff3871} - {10e7aa72-1600-4b12-9611-371cc2a34c5b} + {3fbabfd7-8480-4270-a4ad-55f2ba0ed137} - {6e5a5afa-d80c-4da1-9685-07415811bc3a} + {e03f56c2-c273-4cb4-9559-62e7732d4536} - {20dedd00-79c6-4962-aac9-bf0db65c4e4b} + {4c0e40f5-26e3-40bb-b3aa-6c8091b90dcf} - {095c99ab-524a-44ac-a57a-9e9e4f7f4331} + {54248760-19dc-482d-95da-9b6e7bd625b0} - {7ec67327-e6d5-4855-a543-9d3e42ff96e9} + {735529a8-4e97-4cc5-a74d-5b0fe80e9301} - {1bb49b2c-814b-40b7-bb86-af7848c2a467} + {bc5d8fb9-2ec0-4fa0-bd3b-640b6d3861ae} - {38a7352a-421d-4328-b5fb-12312fd265b0} + {bb58df1a-304e-4107-b2f9-367887e0007f} - {c61dbac7-f76f-4e4b-945a-e4a6274f6b48} + {8b62b3a5-588e-40ee-b2f6-c42713cd2dd9} - {90cfc347-801a-4698-8384-fb72f33104fe} + {adbc05e9-132f-4063-9a0e-c6fa039dda2c} - {c14ac98c-f94e-48d4-bf46-68aa87ceb47f} + {67406c29-baac-4a23-83d8-9f42a496ead4} - {52976393-db09-416f-87e7-0e18d94895ae} + {1f0a2d7b-0023-420e-bb75-09473ea4df51} - {ce60aa94-d4c0-4bd2-8929-2b312dc6dc93} + {d2cb403e-d49b-4bfa-a568-75481d19c467} - {ccf495af-fad3-497b-a53a-770d50eadc7a} + {4c01ba56-dc50-484e-b58c-6265b6b76c2e} diff --git a/XML/testsuite/TestSuite_vs120.vcxproj b/XML/testsuite/TestSuite_vs120.vcxproj index 79a3ef772..f718a5ff6 100644 --- a/XML/testsuite/TestSuite_vs120.vcxproj +++ b/XML/testsuite/TestSuite_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false diff --git a/XML/testsuite/TestSuite_vs120.vcxproj.filters b/XML/testsuite/TestSuite_vs120.vcxproj.filters index c44e9fc36..9b150d122 100644 --- a/XML/testsuite/TestSuite_vs120.vcxproj.filters +++ b/XML/testsuite/TestSuite_vs120.vcxproj.filters @@ -2,46 +2,46 @@ - {b84a2957-b363-4cf2-bd10-f1434dd0d378} + {84a02f8b-c7c4-4877-a66e-356deeb573aa} - {80d582b3-a4f1-42da-8049-9ddf56b89233} + {dcbd6cdf-5811-4538-a96c-064d362555af} - {6febf01b-4f17-43f2-8caa-8cd5493b9898} + {4760e845-478b-4930-8be3-7b66d34ac580} - {ab5e118e-125f-42b6-9f06-33053666706b} + {27eb9bb3-5555-4ea8-af89-d2458c3471d6} - {38881354-386c-4159-b3b5-4abe1690dce0} + {69a5e74f-86ff-4a5a-b7d5-7c33a47d37a4} - {2f84fdc4-4b36-4fab-baa3-80bcfd11ba5a} + {3e9f65d9-2eba-4cfe-a51a-2b798218d1da} - {d444ef97-4144-41a5-a712-5a0b8a4e0192} + {1cdf0c78-47fc-4272-890f-910985db2732} - {b3c1a544-aa32-40f0-9107-f3b00814adb1} + {d229b804-3bb8-4a1e-a1b4-c1a72f4641bb} - {1988339d-1189-48ba-a629-281660450f18} + {0d20b896-76fc-48e3-8455-10c1f1e89b12} - {a61f7981-5953-46d0-b6c8-334b82afe5e0} + {3c46c93f-2cd5-4258-8b91-24521a0c9bb3} - {7ff46609-fca5-4803-94bc-1056cb87470d} + {07a7e3b5-5df8-46b6-bd90-7a7cd0b8902c} - {abbf2583-8e20-48a1-bc55-eec162c301fb} + {33ce5d77-a5f1-4fa7-b7ec-ebe9acabb1cd} - {6cda9876-ab3b-45f3-84b7-05e1c7eec2ef} + {6a96c62a-992c-4e0a-9a70-e9f7d89289e4} - {79663cd0-7d8a-4463-9a81-79bd44e43f0c} + {1ff1f6b2-b550-4bc8-a041-274e69958764} diff --git a/XML/testsuite/TestSuite_vs71.vcproj b/XML/testsuite/TestSuite_vs71.vcproj index f5053a71c..426d1a51b 100644 --- a/XML/testsuite/TestSuite_vs71.vcproj +++ b/XML/testsuite/TestSuite_vs71.vcproj @@ -37,7 +37,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false TestSuited TestSuited @@ -129,6 +129,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitd.lib;WinTestRunnerd.lib;%(AdditionalDependencies) @@ -139,6 +140,7 @@ bin64\TestSuited.pdb Windows MachineX64 + %(AdditionalOptions) @@ -161,6 +163,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnit.lib;WinTestRunner.lib;%(AdditionalDependencies) @@ -171,6 +174,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -191,6 +195,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmtd.lib;WinTestRunnermtd.lib;iphlpapi.lib;winmm.lib;nafxcwd.lib;libcmtd.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -202,6 +207,7 @@ bin64\static_mt\TestSuited.pdb Windows MachineX64 + %(AdditionalOptions) @@ -224,6 +230,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmt.lib;WinTestRunnermt.lib;iphlpapi.lib;winmm.lib;nafxcw.lib;libcmt.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -235,6 +242,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -255,6 +263,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmdd.lib;WinTestRunnermdd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -265,6 +274,7 @@ bin64\static_md\TestSuited.pdb Windows MachineX64 + %(AdditionalOptions) @@ -287,6 +297,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmd.lib;WinTestRunnermd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -297,6 +308,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/XML/testsuite/TestSuite_x64_vs100.vcxproj.filters b/XML/testsuite/TestSuite_x64_vs100.vcxproj.filters index 71ee56b65..f1fdf9504 100644 --- a/XML/testsuite/TestSuite_x64_vs100.vcxproj.filters +++ b/XML/testsuite/TestSuite_x64_vs100.vcxproj.filters @@ -2,46 +2,46 @@ - {032db3fc-8e84-4ca2-8f5b-22a89cd772c4} + {0b6a0e3d-ef03-4906-baef-a72819bf8d66} - {f8bd6553-11b4-4f27-9ab6-b62c37b631d4} + {809f363d-2892-47de-9f86-91cf9a412abb} - {a3da5bf1-314f-4b4e-8998-e086b9bbbbdb} + {9651f9e0-c656-4a28-a0ce-348c468d5fa9} - {a4fec080-1393-45a7-a83b-2794d036e2b3} + {cf22f099-b399-4606-8f92-72e0eaf8ce7e} - {eab1cb51-79cf-431b-9522-0c5e507a1dba} + {3506726d-1bfa-465c-a93d-75fbb8626878} - {2e9eb668-d818-4832-9a94-a62c6ac4fa2f} + {a83de990-c9ea-4929-b86c-dd59d313f1b1} - {966f07e3-15b1-4469-9ff3-0f1e0816bb6a} + {e5e9539e-ba90-4564-b686-63cb3c4ca302} - {a79f9452-e61e-45e3-af4a-309f80e6f11c} + {42f059db-f5c7-4f83-8f5c-a488c7514b70} - {1638fb39-a239-4154-b374-8bbfac2f5b0d} + {8828c2bf-ffb3-4406-ab02-3db753111f1e} - {d98bcf69-7c51-4bcc-b646-ee43aeaf215d} + {3c8e270c-f415-415e-a289-b0a763b4c15b} - {09366f97-38c0-4156-9934-b06be3dd32a7} + {cf702960-6d96-4256-9b2c-8fa4c1afc6c9} - {7ed6dd4a-57ba-4aca-a10c-5da68345c30f} + {b77d65bc-381a-496c-9b1f-0ce76149c47d} - {f2ffdcbc-f3ba-4515-a922-c5f3e0e2c3ae} + {faf8e574-6f94-471b-8f18-9a268838fd73} - {aeb3e3b8-e78c-40d7-8ba2-2292ef2d8bce} + {2367aaef-6770-47be-83f2-f2717bb07651} diff --git a/XML/testsuite/TestSuite_x64_vs110.vcxproj b/XML/testsuite/TestSuite_x64_vs110.vcxproj index 665e6b44c..d15ebd432 100644 --- a/XML/testsuite/TestSuite_x64_vs110.vcxproj +++ b/XML/testsuite/TestSuite_x64_vs110.vcxproj @@ -101,32 +101,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false diff --git a/XML/testsuite/TestSuite_x64_vs110.vcxproj.filters b/XML/testsuite/TestSuite_x64_vs110.vcxproj.filters index f049a6a2c..fba646993 100644 --- a/XML/testsuite/TestSuite_x64_vs110.vcxproj.filters +++ b/XML/testsuite/TestSuite_x64_vs110.vcxproj.filters @@ -2,46 +2,46 @@ - {c17b1ff8-7471-4f5e-b030-c3f4721ec5b0} + {c0c0c86a-3159-4139-b23f-47e0de8164ca} - {991c2e3c-b6b8-4bbc-bca6-ef2fb3a3cd08} + {26b53401-5b33-48b6-880c-e5155a19385f} - {ea89c253-3d5f-4f3f-8bb1-ac873fe92e70} + {3e3ffe16-05bc-41db-a405-5c5c654fe1ff} - {2fda21b8-3fc0-4151-9261-472baed48432} + {03e14113-c09d-4a3f-b09f-466dcc1fe72b} - {f1af6a92-6d31-4438-9f9b-c0f2cd421043} + {c3cb2fb3-1270-40af-b5eb-b9f1d8529f2e} - {e07e3a40-1f90-42b5-bfd1-da702670d740} + {e8020289-f354-4e6d-9f4f-e0c273bc8a64} - {6b15dcdf-8fb5-4e27-8971-cd83c2915fd1} + {5c433dbe-4efb-461d-8f02-c946f4e925d9} - {4415c57f-c0bf-4b2b-b33a-a865aa9c646c} + {82309e72-0a75-48c9-a807-ce58b2fabdaa} - {9009ab2e-0774-4263-842c-aeb9395fb689} + {a4972b7c-9d37-493e-9b3a-905db988354c} - {ed9f21bd-26f8-4a05-b770-0007068cc308} + {e346e631-c3bc-4fb1-a390-91992eace472} - {1df7369d-1137-45bd-b245-86e8f7024bfb} + {ae0fb9a8-b3a3-46c3-ad23-2bc71b9b8d87} - {5e384ae6-552d-4013-9886-eb20a759d0ac} + {ff8fb608-8af9-4e7f-91fc-95746d64aeab} - {38f4530f-1a0c-4c7e-8fc0-5a1a27c6f1ad} + {2bfa9044-79e3-4e5b-b90b-95dc2e64967a} - {c8d93eb7-cc61-4e28-805a-94d87fde40eb} + {0349609e-7136-46f2-8cea-f9f378fdbe30} diff --git a/XML/testsuite/TestSuite_x64_vs120.vcxproj b/XML/testsuite/TestSuite_x64_vs120.vcxproj index a5865a501..835f3d377 100644 --- a/XML/testsuite/TestSuite_x64_vs120.vcxproj +++ b/XML/testsuite/TestSuite_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false diff --git a/XML/testsuite/TestSuite_x64_vs120.vcxproj.filters b/XML/testsuite/TestSuite_x64_vs120.vcxproj.filters index cb7a9a0ab..1da2c1175 100644 --- a/XML/testsuite/TestSuite_x64_vs120.vcxproj.filters +++ b/XML/testsuite/TestSuite_x64_vs120.vcxproj.filters @@ -2,46 +2,46 @@ - {e2461c20-65ae-4dd9-86cd-562c6497cf57} + {dcd578b7-b9e1-49e7-babc-148dc392270e} - {ca41dbf5-291f-4a6a-8dc1-0fb4656c209d} + {6f1f6c4c-c130-44ea-b17b-4cc819d8df39} - {c0a3f32f-b93a-46c6-bc8e-20c424098743} + {a058edc8-49eb-4dca-a26c-08d445c1ec19} - {dbfb5f61-b513-42d9-bdaa-126977779fd9} + {89c45201-779a-4870-a854-e655f564d894} - {1142e207-e8ec-46ab-8814-7044c9b148c1} + {92635bd4-1277-472b-bd11-ff6b3eb9eeb7} - {91a5c5f1-b966-4d69-b303-b5d917a3ee3d} + {a7b49fbb-a529-4d1b-abd6-82c91edb6363} - {517983b3-3a1c-4319-9ed6-7dac3cfe6fa7} + {1e911caa-1f06-4c51-bca5-bfd8f511f9fd} - {c7493088-fc71-45f2-83fd-008fd50699b7} + {967ad50f-811f-4623-9fa3-85c448b6af5d} - {86145b98-0bb1-4adc-894f-feb6565bfb2e} + {1139d89d-3030-4156-842c-a2b60edef8be} - {310f4a06-1d00-4132-a131-dfda70724c0b} + {094240fa-ee2e-4219-989e-865eb1914bcf} - {88803a7e-6d21-4afe-8780-48ddaf0fb9bb} + {ce85316e-b8bc-40a2-907b-462b66094e53} - {ef920f88-29e6-4cc8-8147-0082e2838b85} + {ab507759-0324-4e17-a0f0-484bc2e16dd1} - {44c4fcc7-4f63-42ef-874a-94462893cae7} + {eaa21f2d-c33c-4f02-b5c3-1f2d9833139e} - {62a0f226-a358-443d-bfb2-c85a01f74576} + {6f9dfff2-d114-412f-a754-d1c6a5e3c8a4} diff --git a/XML/testsuite/TestSuite_x64_vs90.vcproj b/XML/testsuite/TestSuite_x64_vs90.vcproj index 4a8400fa5..29d76dcc1 100644 --- a/XML/testsuite/TestSuite_x64_vs90.vcproj +++ b/XML/testsuite/TestSuite_x64_vs90.vcproj @@ -47,7 +47,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;4244;4267" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;4244;4267" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;4244;4267" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;4244;4267" + AdditionalOptions=""/> @@ -274,7 +280,8 @@ Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" CompileAs="0" - DisableSpecificWarnings="4800;4244;4267"/> + DisableSpecificWarnings="4800;4244;4267" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;4244;4267" + AdditionalOptions=""/> diff --git a/Zip/Zip_VS80.vcproj b/Zip/Zip_VS80.vcproj index c819b16b7..81d78160a 100644 --- a/Zip/Zip_VS80.vcproj +++ b/Zip/Zip_VS80.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="4" CompileAs="0" - DisableSpecificWarnings="4244;4267"/> + DisableSpecificWarnings="4244;4267" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4244;4267" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4244;4267" + AdditionalOptions=""/> + DisableSpecificWarnings="4244;4267" + AdditionalOptions=""/> + DisableSpecificWarnings="4244;4267" + AdditionalOptions=""/> + DisableSpecificWarnings="4244;4267" + AdditionalOptions=""/> ..\bin\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Zip\$(Platform)\$(Configuration)\ true true ..\bin\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Zip\$(Platform)\$(Configuration)\ false true ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Zip\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Zip\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Zip\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Zip\$(Platform)\$(Configuration)\ diff --git a/Zip/Zip_WEC2013_vs110.vcxproj.filters b/Zip/Zip_WEC2013_vs110.vcxproj.filters index 7018bc8ec..3f908a230 100644 --- a/Zip/Zip_WEC2013_vs110.vcxproj.filters +++ b/Zip/Zip_WEC2013_vs110.vcxproj.filters @@ -2,22 +2,22 @@ - {d046c399-896a-4cc4-a9d2-5202144c1a96} + {9a3480a0-372f-4d20-b1bd-c3a0dd0d4b5c} - {1d8ed6ae-68ff-4c5a-88b8-385737b96a7a} + {b46a6005-b61c-4303-b34e-890cae208fb7} - {52243e4a-dd29-46d4-a89b-82adc85d23f7} + {f6699e47-4f74-4eda-8ff1-4097e5987155} - {be65a7a3-37da-4dc7-ab65-8e2578ac2b37} + {364c256e-9ae9-43a4-93d8-6b9771e3eda2} - {2d866ad0-fc06-4399-8763-c6a80e890bf4} + {bce08830-2171-457b-a203-582e21d33a2b} - {6d64ebd1-3eed-4c12-af13-6c1b8304c201} + {2938a8eb-fa2e-448e-b24b-c4ea9c2b2e91} diff --git a/Zip/Zip_WEC2013_vs120.vcxproj b/Zip/Zip_WEC2013_vs120.vcxproj index 1df63b6b2..fbf8203bc 100644 --- a/Zip/Zip_WEC2013_vs120.vcxproj +++ b/Zip/Zip_WEC2013_vs120.vcxproj @@ -98,31 +98,31 @@ ..\bin\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Zip\$(Platform)\$(Configuration)\ true true ..\bin\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Zip\$(Platform)\$(Configuration)\ false true ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Zip\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Zip\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Zip\$(Platform)\$(Configuration)\ ..\lib\$(Platform)\ - obj\$(Platform)\$(Configuration)\ + obj\Zip\$(Platform)\$(Configuration)\ diff --git a/Zip/Zip_WEC2013_vs120.vcxproj.filters b/Zip/Zip_WEC2013_vs120.vcxproj.filters index 0cf8f5426..ab8abbbeb 100644 --- a/Zip/Zip_WEC2013_vs120.vcxproj.filters +++ b/Zip/Zip_WEC2013_vs120.vcxproj.filters @@ -2,22 +2,22 @@ - {82b2cf5e-981b-46ec-bf21-3f5056e33a86} + {d2beea59-26ef-43d0-8276-ae6643c699df} - {ea147c88-bba5-49ac-af64-1228515e2584} + {16245365-1e37-4e15-a0f7-6c69de47eb2c} - {f4180fab-1395-40a2-87eb-836a2dcac478} + {337666d8-d767-4f5d-a731-a695d2db419b} - {884a077d-872d-44b1-a4bc-ddf50cf41e59} + {dffe8c25-f5a4-4c80-a6e8-98dc6ce16a6f} - {583c699d-e581-44ab-a7ea-f57865b1c132} + {c35779cd-ff44-4b55-b3bb-2c43a695eb31} - {b47a75e6-b862-493b-8f54-c97314c58667} + {04e071de-c849-4492-913b-9b26141a326c} diff --git a/Zip/Zip_vs100.vcxproj b/Zip/Zip_vs100.vcxproj index 207a7913d..15ff99068 100644 --- a/Zip/Zip_vs100.vcxproj +++ b/Zip/Zip_vs100.vcxproj @@ -81,19 +81,19 @@ <_ProjectFileVersion>10.0.40219.1 ..\bin\ - obj\$(Configuration)\ + obj\Zip\$(Configuration)\ true ..\bin\ - obj\$(Configuration)\ + obj\Zip\$(Configuration)\ false ..\lib\ - obj\$(Configuration)\ + obj\Zip\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Zip\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Zip\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Zip\$(Configuration)\ PocoZipd PocoZipmdd PocoZipmtd @@ -119,6 +119,7 @@ EditAndContinue Default 4244;4267;%(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -130,6 +131,7 @@ Console ..\lib\PocoZipd.lib MachineX86 + %(AdditionalOptions) @@ -152,6 +154,7 @@ Default 4244;4267;%(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -164,6 +167,7 @@ true ..\lib\PocoZip.lib MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default 4244;4267;%(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib\PocoZipmtd.lib @@ -210,6 +215,7 @@ Default 4244;4267;%(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib\PocoZipmt.lib @@ -234,6 +240,7 @@ EditAndContinue Default 4244;4267;%(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib\PocoZipmdd.lib @@ -260,6 +267,7 @@ Default 4244;4267;%(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) diff --git a/Zip/Zip_vs100.vcxproj.filters b/Zip/Zip_vs100.vcxproj.filters index 48da58cbb..0d858e885 100644 --- a/Zip/Zip_vs100.vcxproj.filters +++ b/Zip/Zip_vs100.vcxproj.filters @@ -2,22 +2,22 @@ - {b9e32382-3426-4c78-8e23-5492a8ad417d} + {61318628-35ff-4210-9c65-d395ffe272b7} - {39163c32-aa7d-4da9-8ffe-b75b519cff43} + {904107c1-759f-40e5-b1bc-95e89cb84bdf} - {fb389246-d3ff-4d44-bf8f-22bbe1cf7747} + {ca2dd7d1-a3bc-42f5-8995-10ec20c287f2} - {39ef85f5-e1cd-426a-8364-d77f5b37259f} + {d080fbc5-cd82-4d27-823f-6fa3ae35cee2} - {47313818-e3ba-40b0-b8fe-9f242af8e5c2} + {1c83332c-af36-4110-b482-5032e8d5052d} - {457352f0-d1b9-4e32-a7a2-cea96dca7e6e} + {2bdf606b-b77e-41d1-84a4-5ae3670f8ad7} diff --git a/Zip/Zip_vs110.vcxproj b/Zip/Zip_vs110.vcxproj index 53219b592..b46c9699f 100644 --- a/Zip/Zip_vs110.vcxproj +++ b/Zip/Zip_vs110.vcxproj @@ -95,29 +95,29 @@ ..\bin\ - obj\$(Configuration)\ + obj\Zip\$(Configuration)\ true ..\bin\ - obj\$(Configuration)\ + obj\Zip\$(Configuration)\ false ..\lib\ - obj\$(Configuration)\ + obj\Zip\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Zip\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Zip\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Zip\$(Configuration)\ diff --git a/Zip/Zip_vs110.vcxproj.filters b/Zip/Zip_vs110.vcxproj.filters index 54aaf092c..0cb96a5e2 100644 --- a/Zip/Zip_vs110.vcxproj.filters +++ b/Zip/Zip_vs110.vcxproj.filters @@ -2,22 +2,22 @@ - {0f6f04b1-86f6-48fd-a5b8-9b9dab4b553e} + {982dacda-6d3e-4484-ad98-d09d2fd48bab} - {6e8caa5a-c919-400f-9c8d-4ff268302d23} + {5e450478-df5c-479e-b20a-57d29d48e494} - {7ef16a17-b17d-4d0a-828d-1724e4aa3941} + {64033654-3570-42a5-b344-04bdf6333798} - {bd7abbe2-412e-4368-b10d-e4541cfad3fc} + {64640aa5-7a85-4353-abf6-6d83efd73f69} - {c8006b51-d832-45f2-9541-4e26d62345af} + {82ed9705-6e29-44a8-b2ba-ee8f7d281204} - {29ae293a-1a64-4c01-85ee-6e748d008a32} + {54154295-94ef-4639-84c1-50b9f409c933} diff --git a/Zip/Zip_vs120.vcxproj b/Zip/Zip_vs120.vcxproj index 611840fe9..20cae9a03 100644 --- a/Zip/Zip_vs120.vcxproj +++ b/Zip/Zip_vs120.vcxproj @@ -95,29 +95,29 @@ ..\bin\ - obj\$(Configuration)\ + obj\Zip\$(Configuration)\ true ..\bin\ - obj\$(Configuration)\ + obj\Zip\$(Configuration)\ false ..\lib\ - obj\$(Configuration)\ + obj\Zip\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Zip\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Zip\$(Configuration)\ ..\lib\ - obj\$(Configuration)\ + obj\Zip\$(Configuration)\ diff --git a/Zip/Zip_vs120.vcxproj.filters b/Zip/Zip_vs120.vcxproj.filters index d0c69cae5..db61019e0 100644 --- a/Zip/Zip_vs120.vcxproj.filters +++ b/Zip/Zip_vs120.vcxproj.filters @@ -2,22 +2,22 @@ - {cb6deb40-8fe4-419f-94db-30686ab4fcc7} + {cae520a6-8d53-4014-be05-2d3cafb9169c} - {96ac666a-d3c6-4843-a799-3a0752dd10a6} + {0648b32d-503e-4270-9d34-fb85b1157663} - {bcbab83b-8f1c-4b65-8cc4-50e1f415ed98} + {058fa56f-1eec-496b-82f7-ece4b3c7555b} - {394cc9ca-e1ee-441a-8e14-cf4e390d057a} + {a55ec2ae-9890-4c56-b39d-7e212f940074} - {ea28d953-6266-4341-b4d6-960b8913d86a} + {0e6cdaad-e57b-40b4-9ebf-279cdc71bc19} - {cb1ef7c5-34a4-4692-a1b8-c71ffef4c96d} + {ace3c0b7-a1d9-4f17-9459-6177c13e17ad} diff --git a/Zip/Zip_vs90.vcproj b/Zip/Zip_vs90.vcproj index 957726f49..a13545693 100644 --- a/Zip/Zip_vs90.vcproj +++ b/Zip/Zip_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="4" CompileAs="0" - DisableSpecificWarnings="4244;4267"/> + DisableSpecificWarnings="4244;4267" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4244;4267" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4244;4267" + AdditionalOptions=""/> + DisableSpecificWarnings="4244;4267" + AdditionalOptions=""/> + DisableSpecificWarnings="4244;4267" + AdditionalOptions=""/> + DisableSpecificWarnings="4244;4267" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 ..\bin64\ - obj64\$(Configuration)\ + obj64\Zip\$(Configuration)\ true ..\bin64\ - obj64\$(Configuration)\ + obj64\Zip\$(Configuration)\ false ..\lib64\ - obj64\$(Configuration)\ + obj64\Zip\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Zip\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Zip\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Zip\$(Configuration)\ PocoZip64d PocoZipmdd PocoZipmtd @@ -119,6 +119,7 @@ ProgramDatabase Default 4244;4267;%(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -130,6 +131,7 @@ Console ..\lib64\PocoZipd.lib MachineX64 + %(AdditionalOptions) @@ -152,6 +154,7 @@ Default 4244;4267;%(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -164,6 +167,7 @@ true ..\lib64\PocoZip.lib MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default 4244;4267;%(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib64\PocoZipmtd.lib @@ -210,6 +215,7 @@ Default 4244;4267;%(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib64\PocoZipmt.lib @@ -234,6 +240,7 @@ ProgramDatabase Default 4244;4267;%(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib64\PocoZipmdd.lib @@ -259,6 +266,7 @@ Default 4244;4267;%(DisableSpecificWarnings) + %(AdditionalOptions) ..\lib64\PocoZipmd.lib diff --git a/Zip/Zip_x64_vs100.vcxproj.filters b/Zip/Zip_x64_vs100.vcxproj.filters index 969773430..d9f75246f 100644 --- a/Zip/Zip_x64_vs100.vcxproj.filters +++ b/Zip/Zip_x64_vs100.vcxproj.filters @@ -2,22 +2,22 @@ - {b15e3001-e886-4707-88b5-47a3b13ff762} + {f4602261-f610-4976-8c7a-c84db68bf967} - {18bd923b-f929-4012-9f30-e65883b0ad14} + {fcbb409a-ccca-46f0-9b47-bde874e3db25} - {b0debdfb-1f18-48c5-ae25-603ad318e80a} + {4634cc5a-5644-4b21-ae16-883f5e4a8a7a} - {d7a9f619-c58b-4973-8aa5-ddcd5e975ccf} + {812f4e4e-0d10-4992-ad14-9e3dc17a9dd8} - {cbecb6f0-94e5-4b39-b45d-a0fe71201553} + {e7478867-228c-43c6-9afd-eb145323f8cb} - {8597fa15-e082-485c-bc1c-29655c633004} + {4a51ea02-82f3-446c-9651-f3fdcaba6658} diff --git a/Zip/Zip_x64_vs110.vcxproj b/Zip/Zip_x64_vs110.vcxproj index 57b98ed41..23454e1a0 100644 --- a/Zip/Zip_x64_vs110.vcxproj +++ b/Zip/Zip_x64_vs110.vcxproj @@ -95,29 +95,29 @@ ..\bin64\ - obj64\$(Configuration)\ + obj64\Zip\$(Configuration)\ true ..\bin64\ - obj64\$(Configuration)\ + obj64\Zip\$(Configuration)\ false ..\lib64\ - obj64\$(Configuration)\ + obj64\Zip\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Zip\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Zip\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Zip\$(Configuration)\ diff --git a/Zip/Zip_x64_vs110.vcxproj.filters b/Zip/Zip_x64_vs110.vcxproj.filters index 4c9fbf3a2..479af8f69 100644 --- a/Zip/Zip_x64_vs110.vcxproj.filters +++ b/Zip/Zip_x64_vs110.vcxproj.filters @@ -2,22 +2,22 @@ - {53818047-0ff6-40b2-be59-eac6935dcf4c} + {97181ef4-479c-4427-8d1e-78c735a7ebbc} - {853d1545-3c0d-4cff-a7cb-9f969f8be79b} + {c4a7e1e3-e3b7-482f-a381-98feeb7546f4} - {8f80327e-2f30-4992-9693-d0dc25aea27b} + {12f25a0f-5718-43a8-9ddc-b9f8435e89b5} - {a4797a75-cbc0-4d59-af48-648428d16165} + {b521444b-1b71-416d-b839-90d440902534} - {e5b077ce-d628-4cbc-8675-0dafa9b80863} + {44539d5e-affa-4433-9354-63be717809af} - {ca6d92ba-cc99-4ead-a127-7eb819a68da5} + {8841e518-5652-49e4-9ca0-2a373d3f8eab} diff --git a/Zip/Zip_x64_vs120.vcxproj b/Zip/Zip_x64_vs120.vcxproj index 8b11c7d1e..fd51b3c20 100644 --- a/Zip/Zip_x64_vs120.vcxproj +++ b/Zip/Zip_x64_vs120.vcxproj @@ -95,29 +95,29 @@ ..\bin64\ - obj64\$(Configuration)\ + obj64\Zip\$(Configuration)\ true ..\bin64\ - obj64\$(Configuration)\ + obj64\Zip\$(Configuration)\ false ..\lib64\ - obj64\$(Configuration)\ + obj64\Zip\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Zip\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Zip\$(Configuration)\ ..\lib64\ - obj64\$(Configuration)\ + obj64\Zip\$(Configuration)\ diff --git a/Zip/Zip_x64_vs120.vcxproj.filters b/Zip/Zip_x64_vs120.vcxproj.filters index d33020157..95e70012a 100644 --- a/Zip/Zip_x64_vs120.vcxproj.filters +++ b/Zip/Zip_x64_vs120.vcxproj.filters @@ -2,22 +2,22 @@ - {ef9d2d00-4c6d-4cde-8122-a778fd9945b9} + {f8fef38e-4ea5-43bd-818a-09e254bd2781} - {f305d1cb-8de2-4cb2-9420-d386f6824d59} + {15f662be-c951-4fce-a69e-5e58d9acb32e} - {f2cb3cac-0f27-41e9-9e38-e3afc18ea87e} + {dd7da81e-2612-440b-931a-e6501fa69ed4} - {9299a3da-3b84-4cbb-bef8-2491590b77ce} + {ed7a5a38-2b20-40c0-ba21-e6eecd47e08b} - {56122c6a-aa70-4ef1-989f-51ced91c8974} + {fb62b858-283c-4211-9498-baeb5fe186d7} - {99ef965c-f232-47a9-b3fe-7cfc419bc904} + {bc27d046-7bda-48a9-b79b-9fee194d6325} diff --git a/Zip/Zip_x64_vs90.vcproj b/Zip/Zip_x64_vs90.vcproj index 2b8040262..21a93ae47 100644 --- a/Zip/Zip_x64_vs90.vcproj +++ b/Zip/Zip_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings="4244;4267"/> + DisableSpecificWarnings="4244;4267" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="4244;4267" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="4244;4267" + AdditionalOptions=""/> + DisableSpecificWarnings="4244;4267" + AdditionalOptions=""/> + DisableSpecificWarnings="4244;4267" + AdditionalOptions=""/> + DisableSpecificWarnings="4244;4267" + AdditionalOptions=""/> #include +#include namespace Poco { @@ -69,6 +70,25 @@ public: ZipArchive close(); /// Finalizes the ZipArchive, closes it. + void setStoreExtensions(const std::set& extensions); + /// Sets the file extensions for which the CM_STORE compression method + /// is used if CM_AUTO is specified in addFile() or addRecursive(). + /// For all other extensions, CM_DEFLATE is used. This is used to avoid + /// double compression of already compressed file formats, which usually + /// leads to worse results. Extensions will be converted to lower case. + /// + /// The default extensions are: + /// - gif + /// - jpg + /// - jpeg + /// - png + + const std::set& getStoreExtensions() const; + /// Returns the file extensions for which the CM_STORE compression method + /// is used if CM_AUTO is specified in addFile() or addRecursive(). + /// + /// See setStoreExtensions() for more information. + private: enum { @@ -86,6 +106,7 @@ private: /// copys an already compressed ZipEntry from in private: + std::set _storeExtensions; std::ostream& _out; bool _seekableOut; ZipArchive::FileHeaders _files; @@ -114,6 +135,12 @@ inline const std::string& Compress::getZipComment() const } +inline const std::set& Compress::getStoreExtensions() const +{ + return _storeExtensions; +} + + } } // namespace Poco::Zip diff --git a/Zip/include/Poco/Zip/ZipCommon.h b/Zip/include/Poco/Zip/ZipCommon.h index 108622495..a9e0d2390 100644 --- a/Zip/include/Poco/Zip/ZipCommon.h +++ b/Zip/include/Poco/Zip/ZipCommon.h @@ -49,7 +49,8 @@ public: CM_DEFLATE = 8, CM_ENHANCEDDEFLATE = 9, CM_DATECOMPRIMPLODING = 10, - CM_UNUSED = 11 + CM_UNUSED = 11, + CM_AUTO = 255 /// automatically select DM_DEFLATE or CM_STORE based on file type (extension) }; enum CompressionLevel diff --git a/Zip/samples/unzip/unzip_CE_vs90.vcproj b/Zip/samples/unzip/unzip_CE_vs90.vcproj index 9e207f445..e7754c17d 100644 --- a/Zip/samples/unzip/unzip_CE_vs90.vcproj +++ b/Zip/samples/unzip/unzip_CE_vs90.vcproj @@ -46,7 +46,8 @@ CompileAs="0" DisableSpecificWarnings="4800;" CompileForArchitecture="2" - InterworkCalls="false"/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\unzip\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\unzip\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\unzip\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\unzip\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\unzip\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\unzip\$(Platform)\$(Configuration)\ false diff --git a/Zip/samples/unzip/unzip_WEC2013_vs110.vcxproj.filters b/Zip/samples/unzip/unzip_WEC2013_vs110.vcxproj.filters index 59b08359d..879ad44a1 100644 --- a/Zip/samples/unzip/unzip_WEC2013_vs110.vcxproj.filters +++ b/Zip/samples/unzip/unzip_WEC2013_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {474f0b2c-132a-4766-9162-0153774f989e} + {37d70f4b-8251-4205-a6f9-9ac344700ac9} - {79da0d8a-a80b-47f8-be06-4fe1d0ab0bd7} + {39f220aa-8870-4654-b32f-0f88f5096f9f} diff --git a/Zip/samples/unzip/unzip_WEC2013_vs120.vcxproj b/Zip/samples/unzip/unzip_WEC2013_vs120.vcxproj index f55859bb2..24e2d67c3 100644 --- a/Zip/samples/unzip/unzip_WEC2013_vs120.vcxproj +++ b/Zip/samples/unzip/unzip_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\unzip\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\unzip\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\unzip\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\unzip\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\unzip\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\unzip\$(Platform)\$(Configuration)\ false diff --git a/Zip/samples/unzip/unzip_WEC2013_vs120.vcxproj.filters b/Zip/samples/unzip/unzip_WEC2013_vs120.vcxproj.filters index d3b3e1f19..1e243660f 100644 --- a/Zip/samples/unzip/unzip_WEC2013_vs120.vcxproj.filters +++ b/Zip/samples/unzip/unzip_WEC2013_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {5ffd260c-bd15-40a7-9062-a6b8cb9eb723} + {2efb409d-8b00-4c1f-b6e1-8a00301c2b15} - {4853174f-698e-475c-adcd-5c2dc2824b94} + {bcdc3b90-3725-435c-bbbc-d09568f41e00} diff --git a/Zip/samples/unzip/unzip_vs100.vcxproj b/Zip/samples/unzip/unzip_vs100.vcxproj index e4bb2055b..07e7735f7 100644 --- a/Zip/samples/unzip/unzip_vs100.vcxproj +++ b/Zip/samples/unzip/unzip_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\unzip\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\unzip\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\unzip\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\unzip\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\unzip\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\unzip\$(Configuration)\ false unzipd unzipd @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\unzipd.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\unzipd.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\unzipd.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Zip/samples/unzip/unzip_vs100.vcxproj.filters b/Zip/samples/unzip/unzip_vs100.vcxproj.filters index a6e5cb9ea..36c123563 100644 --- a/Zip/samples/unzip/unzip_vs100.vcxproj.filters +++ b/Zip/samples/unzip/unzip_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {02f63ecf-0dd3-45a6-8f8c-9aa4b1d79968} + {5109c253-b5ee-471b-874c-01e7f22eac5b} - {427c1f3c-0b2f-474c-a726-6c9c59c0b262} + {97311025-3ad9-4a3d-87ee-9c48676c2b67} diff --git a/Zip/samples/unzip/unzip_vs110.vcxproj b/Zip/samples/unzip/unzip_vs110.vcxproj index 685bc274d..e403fc9a3 100644 --- a/Zip/samples/unzip/unzip_vs110.vcxproj +++ b/Zip/samples/unzip/unzip_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\unzip\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\unzip\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\unzip\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\unzip\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\unzip\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\unzip\$(Configuration)\ false diff --git a/Zip/samples/unzip/unzip_vs110.vcxproj.filters b/Zip/samples/unzip/unzip_vs110.vcxproj.filters index d1faaaf4d..5d03ce18d 100644 --- a/Zip/samples/unzip/unzip_vs110.vcxproj.filters +++ b/Zip/samples/unzip/unzip_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {74b7ad3a-2573-4f5d-861b-de2468c7bdf5} + {0effa5d8-f8eb-4460-881e-c7afa80867e3} - {097e888e-3c04-4db1-a0ae-868828ab2680} + {cd85b871-a8fe-4118-922a-fd66d097c29a} diff --git a/Zip/samples/unzip/unzip_vs120.vcxproj b/Zip/samples/unzip/unzip_vs120.vcxproj index 476329cd4..fb8cb17d3 100644 --- a/Zip/samples/unzip/unzip_vs120.vcxproj +++ b/Zip/samples/unzip/unzip_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\unzip\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\unzip\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\unzip\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\unzip\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\unzip\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\unzip\$(Configuration)\ false diff --git a/Zip/samples/unzip/unzip_vs120.vcxproj.filters b/Zip/samples/unzip/unzip_vs120.vcxproj.filters index b45a38995..5c477220a 100644 --- a/Zip/samples/unzip/unzip_vs120.vcxproj.filters +++ b/Zip/samples/unzip/unzip_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {42ba3c31-e0f4-4ac6-9a9f-05687646a308} + {6f7ff1fc-6dc9-42cd-9cc9-ab158946f168} - {6821a53a-d957-47ec-99e5-a0df8f426b4a} + {8d387be6-cd2d-4c44-a09b-900ae11fb344} diff --git a/Zip/samples/unzip/unzip_vs71.vcproj b/Zip/samples/unzip/unzip_vs71.vcproj index 080fb0ac3..c3777c5fe 100644 --- a/Zip/samples/unzip/unzip_vs71.vcproj +++ b/Zip/samples/unzip/unzip_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\unzip\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\unzip\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\unzip\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\unzip\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\unzip\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\unzip\$(Configuration)\ false unzipd unzipd @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\unzipd.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\unzipd.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\unzipd.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Zip/samples/unzip/unzip_x64_vs100.vcxproj.filters b/Zip/samples/unzip/unzip_x64_vs100.vcxproj.filters index 37ecdd216..a51b51838 100644 --- a/Zip/samples/unzip/unzip_x64_vs100.vcxproj.filters +++ b/Zip/samples/unzip/unzip_x64_vs100.vcxproj.filters @@ -2,10 +2,10 @@ - {be761c2b-b1cd-4a02-a56c-5ff5ed2a2357} + {027ed930-a582-4d84-98f4-f3429b2d80e8} - {26144994-1c84-4177-861d-8359aec9930c} + {2174fd71-84e2-440d-acef-ad626b8131d7} diff --git a/Zip/samples/unzip/unzip_x64_vs110.vcxproj b/Zip/samples/unzip/unzip_x64_vs110.vcxproj index 77931a12c..5aafb8ae5 100644 --- a/Zip/samples/unzip/unzip_x64_vs110.vcxproj +++ b/Zip/samples/unzip/unzip_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\unzip\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\unzip\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\unzip\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\unzip\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\unzip\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\unzip\$(Configuration)\ false diff --git a/Zip/samples/unzip/unzip_x64_vs110.vcxproj.filters b/Zip/samples/unzip/unzip_x64_vs110.vcxproj.filters index e49852b56..cb5ab10aa 100644 --- a/Zip/samples/unzip/unzip_x64_vs110.vcxproj.filters +++ b/Zip/samples/unzip/unzip_x64_vs110.vcxproj.filters @@ -2,10 +2,10 @@ - {a54ca608-cef7-427a-84fb-51c335aa2ad0} + {55ec1ade-d2a9-4ebc-adab-f5207aea380b} - {fdd2889e-108b-43f1-b848-b831fd43852f} + {c156e59d-38f0-4585-82df-64f60e49ac77} diff --git a/Zip/samples/unzip/unzip_x64_vs120.vcxproj b/Zip/samples/unzip/unzip_x64_vs120.vcxproj index 86eddf9bc..46d53f5cf 100644 --- a/Zip/samples/unzip/unzip_x64_vs120.vcxproj +++ b/Zip/samples/unzip/unzip_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\unzip\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\unzip\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\unzip\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\unzip\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\unzip\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\unzip\$(Configuration)\ false diff --git a/Zip/samples/unzip/unzip_x64_vs120.vcxproj.filters b/Zip/samples/unzip/unzip_x64_vs120.vcxproj.filters index 88f6ee13d..c94659448 100644 --- a/Zip/samples/unzip/unzip_x64_vs120.vcxproj.filters +++ b/Zip/samples/unzip/unzip_x64_vs120.vcxproj.filters @@ -2,10 +2,10 @@ - {18492c20-48eb-4a40-9b00-30c25f40a3ee} + {63f9615c-156c-4c06-b81c-9cf42308a613} - {361bf062-1ba6-42cf-b29a-643d7e4311d8} + {41185cf6-94cd-4f74-aa73-149afd16f2ee} diff --git a/Zip/samples/unzip/unzip_x64_vs90.vcproj b/Zip/samples/unzip/unzip_x64_vs90.vcproj index 3bb7614d0..39fbf428d 100644 --- a/Zip/samples/unzip/unzip_x64_vs90.vcproj +++ b/Zip/samples/unzip/unzip_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\zip\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\zip\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\zip\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\zip\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\zip\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\zip\$(Platform)\$(Configuration)\ false diff --git a/Zip/samples/zip/zip_WEC2013_vs110.vcxproj.filters b/Zip/samples/zip/zip_WEC2013_vs110.vcxproj.filters index 5391da100..2c5ab9f71 100644 --- a/Zip/samples/zip/zip_WEC2013_vs110.vcxproj.filters +++ b/Zip/samples/zip/zip_WEC2013_vs110.vcxproj.filters @@ -2,7 +2,7 @@ - {11948073-a7d6-4edb-a8ca-d52f85d7b9cf} + {fafbf5dc-6c1f-4ba8-ad2d-f4c65c8abc88} diff --git a/Zip/samples/zip/zip_WEC2013_vs120.vcxproj b/Zip/samples/zip/zip_WEC2013_vs120.vcxproj index 4e48fb361..a1851dae8 100644 --- a/Zip/samples/zip/zip_WEC2013_vs120.vcxproj +++ b/Zip/samples/zip/zip_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\zip\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\zip\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\zip\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\zip\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\zip\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\zip\$(Platform)\$(Configuration)\ false diff --git a/Zip/samples/zip/zip_WEC2013_vs120.vcxproj.filters b/Zip/samples/zip/zip_WEC2013_vs120.vcxproj.filters index 630e93074..7718a83e0 100644 --- a/Zip/samples/zip/zip_WEC2013_vs120.vcxproj.filters +++ b/Zip/samples/zip/zip_WEC2013_vs120.vcxproj.filters @@ -2,7 +2,7 @@ - {3c93e88f-a20a-4fb2-aca7-59417117e583} + {ebf005e0-dd30-4827-a7f9-b8b90838abb1} diff --git a/Zip/samples/zip/zip_vs100.vcxproj b/Zip/samples/zip/zip_vs100.vcxproj index 213db0201..36407f91f 100644 --- a/Zip/samples/zip/zip_vs100.vcxproj +++ b/Zip/samples/zip/zip_vs100.vcxproj @@ -81,22 +81,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\zip\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\zip\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\zip\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\zip\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\zip\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\zip\$(Configuration)\ false zipd zipd @@ -123,6 +123,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin\zipd.pdb Console MachineX86 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -185,6 +189,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin\static_mt\zipd.pdb Console MachineX86 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -247,6 +255,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin\static_md\zipd.pdb Console MachineX86 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Zip/samples/zip/zip_vs100.vcxproj.filters b/Zip/samples/zip/zip_vs100.vcxproj.filters index 6d9738417..db23051f4 100644 --- a/Zip/samples/zip/zip_vs100.vcxproj.filters +++ b/Zip/samples/zip/zip_vs100.vcxproj.filters @@ -2,7 +2,7 @@ - {022e9a3e-b47f-46b5-b865-27a961e15226} + {b439ddfc-a165-473d-9391-69dc6f789c9e} diff --git a/Zip/samples/zip/zip_vs110.vcxproj b/Zip/samples/zip/zip_vs110.vcxproj index e170d0d8b..fac8068da 100644 --- a/Zip/samples/zip/zip_vs110.vcxproj +++ b/Zip/samples/zip/zip_vs110.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\zip\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\zip\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\zip\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\zip\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\zip\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\zip\$(Configuration)\ false diff --git a/Zip/samples/zip/zip_vs110.vcxproj.filters b/Zip/samples/zip/zip_vs110.vcxproj.filters index 2ed771d85..b9e524a08 100644 --- a/Zip/samples/zip/zip_vs110.vcxproj.filters +++ b/Zip/samples/zip/zip_vs110.vcxproj.filters @@ -2,7 +2,7 @@ - {8e511e03-71db-4ad8-ae7f-fe4034a648ef} + {3b423397-eeb0-459b-813c-c9ee340baf98} diff --git a/Zip/samples/zip/zip_vs120.vcxproj b/Zip/samples/zip/zip_vs120.vcxproj index 78a449c0e..e5e24a3e6 100644 --- a/Zip/samples/zip/zip_vs120.vcxproj +++ b/Zip/samples/zip/zip_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\zip\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\zip\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\zip\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\zip\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\zip\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\zip\$(Configuration)\ false diff --git a/Zip/samples/zip/zip_vs120.vcxproj.filters b/Zip/samples/zip/zip_vs120.vcxproj.filters index eed971362..668c93f3c 100644 --- a/Zip/samples/zip/zip_vs120.vcxproj.filters +++ b/Zip/samples/zip/zip_vs120.vcxproj.filters @@ -2,7 +2,7 @@ - {f063a974-5ae4-49c9-98b7-9c91a33d10a2} + {a52fc678-e0da-4c98-8977-3beca15bed0b} diff --git a/Zip/samples/zip/zip_vs71.vcproj b/Zip/samples/zip/zip_vs71.vcproj index b4d3130a9..525685c18 100644 --- a/Zip/samples/zip/zip_vs71.vcproj +++ b/Zip/samples/zip/zip_vs71.vcproj @@ -36,7 +36,8 @@ WarningLevel="3" Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="4" - DisableSpecificWarnings="4800;"/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\zip\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\zip\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\zip\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\zip\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\zip\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\zip\$(Configuration)\ false zipd zipd @@ -123,6 +123,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -133,6 +134,7 @@ bin64\zipd.pdb Console MachineX64 + %(AdditionalOptions) @@ -155,6 +157,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -165,6 +168,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -185,6 +189,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -195,6 +200,7 @@ bin64\static_mt\zipd.pdb Console MachineX64 + %(AdditionalOptions) @@ -217,6 +223,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -227,6 +234,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -247,6 +255,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -257,6 +266,7 @@ bin64\static_md\zipd.pdb Console MachineX64 + %(AdditionalOptions) @@ -279,6 +289,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -289,6 +300,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Zip/samples/zip/zip_x64_vs100.vcxproj.filters b/Zip/samples/zip/zip_x64_vs100.vcxproj.filters index 1f438b8c6..206dcf7d5 100644 --- a/Zip/samples/zip/zip_x64_vs100.vcxproj.filters +++ b/Zip/samples/zip/zip_x64_vs100.vcxproj.filters @@ -2,7 +2,7 @@ - {7970c626-b15e-4e9b-b9a5-0e368a90b6ce} + {cfd78e02-a8c5-4dd1-a3c8-c0c2c9b5b568} diff --git a/Zip/samples/zip/zip_x64_vs110.vcxproj b/Zip/samples/zip/zip_x64_vs110.vcxproj index d28b7c506..3dc779420 100644 --- a/Zip/samples/zip/zip_x64_vs110.vcxproj +++ b/Zip/samples/zip/zip_x64_vs110.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\zip\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\zip\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\zip\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\zip\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\zip\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\zip\$(Configuration)\ false diff --git a/Zip/samples/zip/zip_x64_vs110.vcxproj.filters b/Zip/samples/zip/zip_x64_vs110.vcxproj.filters index 76c02c06f..48536664f 100644 --- a/Zip/samples/zip/zip_x64_vs110.vcxproj.filters +++ b/Zip/samples/zip/zip_x64_vs110.vcxproj.filters @@ -2,7 +2,7 @@ - {4ea72f61-d6ef-4728-a1b2-5c141a2ab1d3} + {2ef1a05f-e669-4a8b-89fe-96bcb69dfd6f} diff --git a/Zip/samples/zip/zip_x64_vs120.vcxproj b/Zip/samples/zip/zip_x64_vs120.vcxproj index 90adb39f6..d299c6467 100644 --- a/Zip/samples/zip/zip_x64_vs120.vcxproj +++ b/Zip/samples/zip/zip_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\zip\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\zip\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\zip\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\zip\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\zip\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\zip\$(Configuration)\ false diff --git a/Zip/samples/zip/zip_x64_vs120.vcxproj.filters b/Zip/samples/zip/zip_x64_vs120.vcxproj.filters index afc992886..034887268 100644 --- a/Zip/samples/zip/zip_x64_vs120.vcxproj.filters +++ b/Zip/samples/zip/zip_x64_vs120.vcxproj.filters @@ -2,7 +2,7 @@ - {5bdd8e64-40f1-4d85-846d-323ddd83bbe6} + {f0b55d7b-ab95-4594-bb99-29449c2cb842} diff --git a/Zip/samples/zip/zip_x64_vs90.vcproj b/Zip/samples/zip/zip_x64_vs90.vcproj index 0d969a1fa..2f40bc8eb 100644 --- a/Zip/samples/zip/zip_x64_vs90.vcproj +++ b/Zip/samples/zip/zip_x64_vs90.vcproj @@ -46,7 +46,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> = 65535) @@ -300,4 +314,14 @@ ZipArchive Compress::close() } +void Compress::setStoreExtensions(const std::set& extensions) +{ + _storeExtensions.clear(); + for (std::set::const_iterator it = extensions.begin(); it != extensions.end(); ++it) + { + _storeExtensions.insert(Poco::toLower(*it)); + } +} + + } } // namespace Poco::Zip diff --git a/Zip/src/Decompress.cpp b/Zip/src/Decompress.cpp index 656922899..b14ae1d11 100644 --- a/Zip/src/Decompress.cpp +++ b/Zip/src/Decompress.cpp @@ -54,7 +54,14 @@ Decompress::Decompress(std::istream& in, const Poco::Path& outputDir, bool flatt Decompress::~Decompress() { - EOk -= Poco::Delegate >(this, &Decompress::onOk); + try + { + EOk -= Poco::Delegate >(this, &Decompress::onOk); + } + catch (...) + { + poco_unexpected(); + } } diff --git a/Zip/src/PartialStream.cpp b/Zip/src/PartialStream.cpp index fd786aa18..85587278e 100644 --- a/Zip/src/PartialStream.cpp +++ b/Zip/src/PartialStream.cpp @@ -242,7 +242,14 @@ PartialOutputStream::PartialOutputStream(std::ostream& ostr, std::size_t start, PartialOutputStream::~PartialOutputStream() { - close(); + try + { + close(); + } + catch (...) + { + poco_unexpected(); + } } diff --git a/Zip/testsuite/TestSuite_CE_vs90.vcproj b/Zip/testsuite/TestSuite_CE_vs90.vcproj index c4dea5b7c..5fb753afc 100644 --- a/Zip/testsuite/TestSuite_CE_vs90.vcproj +++ b/Zip/testsuite/TestSuite_CE_vs90.vcproj @@ -46,7 +46,8 @@ CompileAs="0" DisableSpecificWarnings="4800;" CompileForArchitecture="2" - InterworkCalls="false"/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + InterworkCalls="false" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="4800;" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false diff --git a/Zip/testsuite/TestSuite_WEC2013_vs110.vcxproj.filters b/Zip/testsuite/TestSuite_WEC2013_vs110.vcxproj.filters index 1a5b9d220..8fde41bd0 100644 --- a/Zip/testsuite/TestSuite_WEC2013_vs110.vcxproj.filters +++ b/Zip/testsuite/TestSuite_WEC2013_vs110.vcxproj.filters @@ -2,28 +2,28 @@ - {053fbce0-5d0e-4dc9-b497-22220c0c2acb} + {24116d70-ccac-4316-a9c9-eed39d2b2c7d} - {8e373acf-d000-428e-8b53-ecefc2dc2f83} + {3e70de58-e63b-4e85-9b00-aa3636ccc919} - {11888bf6-238a-4028-9d0c-b3420fe1205e} + {2abc93e9-8d49-4dec-8225-a1734828e099} - {68a9236b-eea6-4808-9b0e-0e42ee25773f} + {1da1d1f3-d896-4535-aab6-8ca630baba1b} - {fc3d9fcf-4b66-4075-b2c8-9b0354e4b61b} + {2f3d941a-dfb1-4328-9bdb-47d94db2ef3a} - {a4368243-e381-4d86-9a5d-f57ccd680111} + {eb3ccd55-5eb3-4968-bf28-8f2b8ac78a98} - {fd159f00-71e5-4850-b8a4-a3d0e5187f27} + {77372f33-ba9b-427a-a19a-a2caecb6599f} - {c08cd712-a9eb-427c-a1bb-4a7ed6019724} + {430a94d7-b7ec-4fa6-b1b2-c611b97ac85a} diff --git a/Zip/testsuite/TestSuite_WEC2013_vs120.vcxproj b/Zip/testsuite/TestSuite_WEC2013_vs120.vcxproj index c0cf7dc6b..910ef3836 100644 --- a/Zip/testsuite/TestSuite_WEC2013_vs120.vcxproj +++ b/Zip/testsuite/TestSuite_WEC2013_vs120.vcxproj @@ -98,32 +98,32 @@ bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\shared\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_mt\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ true bin\$(Platform)\static_md\ - obj\$(Platform)\$(Configuration)\ + obj\TestSuite\$(Platform)\$(Configuration)\ false diff --git a/Zip/testsuite/TestSuite_WEC2013_vs120.vcxproj.filters b/Zip/testsuite/TestSuite_WEC2013_vs120.vcxproj.filters index 8e51d3599..0b521527e 100644 --- a/Zip/testsuite/TestSuite_WEC2013_vs120.vcxproj.filters +++ b/Zip/testsuite/TestSuite_WEC2013_vs120.vcxproj.filters @@ -2,28 +2,28 @@ - {31909f91-db78-49b3-ac62-51a3c8806dba} + {1b8d654a-e166-4e3b-8838-8cdfbc72c3b9} - {4eba037c-540e-4105-9898-14acb7330612} + {d34ea856-5fc5-4033-94f9-60ff638dfc64} - {521081b6-ecab-4258-8391-1cc154624b83} + {f5a5631a-2e79-4b72-bc0b-1a363737f6af} - {43e90da1-6744-4a02-aa29-ac4f23c30b89} + {74d376b5-ef2c-444e-899f-b6886c9cea6c} - {32903f99-9955-42a0-a81e-3e0ff028069d} + {23711e1b-4262-4703-bd9d-95d8721ab66d} - {e6ff723e-823f-42c8-aa45-a4d3878220dc} + {8ebcae80-c511-4130-a718-41b7fe10089a} - {fe31fb81-de96-4309-b4a7-4235de42f1a6} + {e195a903-9526-4b11-a44f-6c69f34f910a} - {49399f4b-d380-42b3-8444-43d1e8528a9e} + {b5039549-b1cc-4b95-9d98-65b5969c120a} diff --git a/Zip/testsuite/TestSuite_vs100.vcxproj b/Zip/testsuite/TestSuite_vs100.vcxproj index 48e096469..20d745cec 100644 --- a/Zip/testsuite/TestSuite_vs100.vcxproj +++ b/Zip/testsuite/TestSuite_vs100.vcxproj @@ -87,22 +87,22 @@ <_ProjectFileVersion>10.0.40219.1 bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false TestSuited TestSuited @@ -129,6 +129,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitd.lib;WinTestRunnerd.lib;%(AdditionalDependencies) @@ -139,6 +140,7 @@ bin\TestSuited.pdb Windows MachineX86 + %(AdditionalOptions) @@ -161,6 +163,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnit.lib;WinTestRunner.lib;%(AdditionalDependencies) @@ -171,6 +174,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -191,6 +195,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmtd.lib;WinTestRunnermtd.lib;iphlpapi.lib;winmm.lib;nafxcwd.lib;libcmtd.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -202,6 +207,7 @@ bin\static_mt\TestSuited.pdb Windows MachineX86 + %(AdditionalOptions) @@ -224,6 +230,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmt.lib;WinTestRunnermt.lib;iphlpapi.lib;winmm.lib;nafxcw.lib;libcmt.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -235,6 +242,7 @@ true true MachineX86 + %(AdditionalOptions) @@ -255,6 +263,7 @@ EditAndContinue Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmdd.lib;WinTestRunnermdd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -265,6 +274,7 @@ bin\static_md\TestSuited.pdb Windows MachineX86 + %(AdditionalOptions) @@ -287,6 +297,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmd.lib;WinTestRunnermd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -297,6 +308,7 @@ true true MachineX86 + %(AdditionalOptions) diff --git a/Zip/testsuite/TestSuite_vs100.vcxproj.filters b/Zip/testsuite/TestSuite_vs100.vcxproj.filters index 267f409ae..592299fa8 100644 --- a/Zip/testsuite/TestSuite_vs100.vcxproj.filters +++ b/Zip/testsuite/TestSuite_vs100.vcxproj.filters @@ -2,28 +2,28 @@ - {29630e4f-4ccd-4fe8-9839-69b904b66536} + {f6dbb361-0acb-43fe-bc68-acdf0cc1beb2} - {31e04ecc-3b01-4140-b26c-869b11c38c0e} + {99c8aeca-5ecd-4360-b518-31952b2d0306} - {dcf11b4f-e838-450f-99b7-9b5d3a4badaf} + {35219f8d-c529-4c4e-8383-5ca0387a5e88} - {6510ddd1-20bf-45ee-957f-d0f4cf05c50b} + {6255510d-c19d-4367-b21f-340578161d66} - {1720bb4c-1212-46ef-b2a8-ba1a1ae00ebb} + {eb11ab95-abb1-4b60-a060-b829e3eb088f} - {5e9b0487-ed91-44bb-a5b1-2edb4658c3de} + {b9cb9211-9c4b-4174-aaf9-743060e152fa} - {f28201f3-12b1-4c18-bfbd-889349f8d44a} + {359fb0c4-4207-41bf-b6e3-e9991ebd7337} - {c3004490-73cc-44ee-9ca4-cad4044f130f} + {b148169b-54e1-4249-aca1-fbf284000636} diff --git a/Zip/testsuite/TestSuite_vs110.vcxproj b/Zip/testsuite/TestSuite_vs110.vcxproj index 980e79421..6f63309a4 100644 --- a/Zip/testsuite/TestSuite_vs110.vcxproj +++ b/Zip/testsuite/TestSuite_vs110.vcxproj @@ -101,32 +101,32 @@ bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false diff --git a/Zip/testsuite/TestSuite_vs110.vcxproj.filters b/Zip/testsuite/TestSuite_vs110.vcxproj.filters index c07d6b97e..732de9129 100644 --- a/Zip/testsuite/TestSuite_vs110.vcxproj.filters +++ b/Zip/testsuite/TestSuite_vs110.vcxproj.filters @@ -2,28 +2,28 @@ - {3bcbc442-f822-4ae6-a30b-c8756b328a9e} + {567bb0a4-c4ce-4dc6-b070-2a2b7437407d} - {11a98128-d579-4e6a-9af5-a72cb1422d5d} + {37704dab-aa82-4df8-91c9-027a0d26b636} - {4820946e-d7c5-4c0c-88e4-47cc90945bc0} + {6a78d13b-7fab-4b83-830a-31d2dde4d13a} - {77a17daf-f2cc-4d13-9899-d03d68991780} + {673391f6-7aa2-478b-bf7f-55f50b1ad9a8} - {cb65bb91-92d6-4b83-b00f-be1cc70f5074} + {eb6a6738-a3e6-405d-b4a5-2108b1e496b6} - {008273b6-9eef-4e92-8fb3-d4a1aefaed57} + {bb3119ed-ec4f-4e9c-ad2c-97df52ef2c3e} - {2902916a-78c5-4461-b887-d03241fa05b1} + {2e8b983b-352c-485e-b04d-b811998eaba0} - {98662f08-1e6a-4e61-8fba-fcd971c7467e} + {33beda10-0f1f-4b53-a82b-c45d5d910267} diff --git a/Zip/testsuite/TestSuite_vs120.vcxproj b/Zip/testsuite/TestSuite_vs120.vcxproj index ec0b159af..1d66d12c8 100644 --- a/Zip/testsuite/TestSuite_vs120.vcxproj +++ b/Zip/testsuite/TestSuite_vs120.vcxproj @@ -95,32 +95,32 @@ bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_mt\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ true bin\static_md\ - obj\$(Configuration)\ + obj\TestSuite\$(Configuration)\ false diff --git a/Zip/testsuite/TestSuite_vs120.vcxproj.filters b/Zip/testsuite/TestSuite_vs120.vcxproj.filters index 9110c7bf3..38515d37f 100644 --- a/Zip/testsuite/TestSuite_vs120.vcxproj.filters +++ b/Zip/testsuite/TestSuite_vs120.vcxproj.filters @@ -2,28 +2,28 @@ - {307384a2-df77-4e4a-9917-59d7d622cb6d} + {648c75a2-2f3a-491d-8710-64468aacc071} - {25b0f076-8330-4240-845f-b49d33fd23a9} + {f73ef33d-7133-4774-a5a7-30740e500ae3} - {946015f5-b93e-4fc8-9230-b68eaf11097a} + {cdfcedb8-6f0c-45fc-b9ea-60e5894ae40e} - {e5f74728-d2bf-4019-a9a9-c0aad91fb6c0} + {f9a58630-c203-4b88-baad-b81473dd5bc0} - {e6091205-9b69-400e-94f6-399a2592c66d} + {9eb335f0-7cb2-416c-9383-e6c10a05b1b4} - {8ee0e32e-d8c1-4fd5-b36c-7b875cbd457f} + {d135064c-7697-4387-b817-cca51bc0aa71} - {a0700988-4eeb-4f46-9098-2cd7f28e2a01} + {2517713e-f339-48e3-9efe-35c5669723db} - {487d1681-412a-4e68-b584-4a68488ab52b} + {5d89a313-ca0a-412b-a86b-032997625081} diff --git a/Zip/testsuite/TestSuite_vs90.vcproj b/Zip/testsuite/TestSuite_vs90.vcproj index cc6443bf7..5ac498d20 100644 --- a/Zip/testsuite/TestSuite_vs90.vcproj +++ b/Zip/testsuite/TestSuite_vs90.vcproj @@ -47,7 +47,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="4" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="1" + AdditionalOptions=""/> <_ProjectFileVersion>10.0.40219.1 bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false TestSuited TestSuited @@ -129,6 +129,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitd.lib;WinTestRunnerd.lib;%(AdditionalDependencies) @@ -139,6 +140,7 @@ bin64\TestSuited.pdb Windows MachineX64 + %(AdditionalOptions) @@ -161,6 +163,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnit.lib;WinTestRunner.lib;%(AdditionalDependencies) @@ -171,6 +174,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -191,6 +195,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmtd.lib;WinTestRunnermtd.lib;iphlpapi.lib;winmm.lib;nafxcwd.lib;libcmtd.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -202,6 +207,7 @@ bin64\static_mt\TestSuited.pdb Windows MachineX64 + %(AdditionalOptions) @@ -224,6 +230,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmt.lib;WinTestRunnermt.lib;iphlpapi.lib;winmm.lib;nafxcw.lib;libcmt.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -235,6 +242,7 @@ true true MachineX64 + %(AdditionalOptions) @@ -255,6 +263,7 @@ ProgramDatabase Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmdd.lib;WinTestRunnermdd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -265,6 +274,7 @@ bin64\static_md\TestSuited.pdb Windows MachineX64 + %(AdditionalOptions) @@ -287,6 +297,7 @@ Default %(DisableSpecificWarnings) + %(AdditionalOptions) CppUnitmd.lib;WinTestRunnermd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;%(AdditionalDependencies) @@ -297,6 +308,7 @@ true true MachineX64 + %(AdditionalOptions) diff --git a/Zip/testsuite/TestSuite_x64_vs100.vcxproj.filters b/Zip/testsuite/TestSuite_x64_vs100.vcxproj.filters index 39c44af6d..69c2da97f 100644 --- a/Zip/testsuite/TestSuite_x64_vs100.vcxproj.filters +++ b/Zip/testsuite/TestSuite_x64_vs100.vcxproj.filters @@ -2,28 +2,28 @@ - {4fd19591-4d92-4fca-ac8f-7adbf569ffbc} + {0388c678-965d-4627-af1b-25e77284f97c} - {29777fb3-e3d0-414b-8ab6-4c3d36f2fca6} + {d2db3dc6-b9d4-4df2-a0ba-f49f74f812c8} - {5c5ef6c1-264d-4692-b082-200827432199} + {edb13fec-aafb-45f9-92b6-34be2dc393f6} - {37a0fe52-4aa4-4a7a-a874-cc69894e3959} + {28dbed62-f1fc-49f9-bd17-0b86afdcc7f7} - {30b5fe22-a228-4564-8ece-ea15517c2472} + {d842e7b8-9a15-4ca1-a254-60e1c182a957} - {bc03c5b4-a4f3-490b-9ea2-965cea26b478} + {4d58f718-2b3c-417f-9091-89ec0cb60c4c} - {41fb22cf-5ff9-4bcb-a9cf-795d34e5fb7b} + {d1560744-b629-4a90-94ae-d1091a0183ff} - {e427de5a-12d4-40b0-9d68-fdea795b7298} + {3830b060-d032-48ed-a636-b6f9c4587a7d} diff --git a/Zip/testsuite/TestSuite_x64_vs110.vcxproj b/Zip/testsuite/TestSuite_x64_vs110.vcxproj index db1f1f39e..46d3c6ab7 100644 --- a/Zip/testsuite/TestSuite_x64_vs110.vcxproj +++ b/Zip/testsuite/TestSuite_x64_vs110.vcxproj @@ -101,32 +101,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false diff --git a/Zip/testsuite/TestSuite_x64_vs110.vcxproj.filters b/Zip/testsuite/TestSuite_x64_vs110.vcxproj.filters index 96d2caf64..d0c871261 100644 --- a/Zip/testsuite/TestSuite_x64_vs110.vcxproj.filters +++ b/Zip/testsuite/TestSuite_x64_vs110.vcxproj.filters @@ -2,28 +2,28 @@ - {e0da30ac-7af1-4921-8b84-48aed6dda6d0} + {0ed1ec6a-2bf9-4b64-9309-e59e4d354230} - {35027242-0833-40a3-8f3a-4d5ad935af4b} + {3e1acb24-195e-47c8-81d1-aff7a3a31d98} - {8bb1cfe0-99d1-40e0-9d01-99615b832a99} + {bda74232-09ac-483d-ad90-0e36532971b6} - {700b5fe6-da43-4929-918e-b6e7bc0e805e} + {4a3263e5-684d-4fbe-873f-27665585ce83} - {2cf61eff-bc60-463f-965e-a60f644872ae} + {813e8108-feab-4e7e-aa96-a07f8680c421} - {3d65bcd4-9773-493d-a168-bf97be8da5e5} + {357b376f-5c8c-4389-9ea9-3c62467564ee} - {3c65d136-2c77-4e43-bb8b-c394cf89716d} + {2747043f-a3a9-4e53-94c8-3fc81cabb7e3} - {d3ef5ff8-eb79-480e-b74f-d7ea0e7a40c1} + {9f172548-6939-417e-979d-ec35f557fa71} diff --git a/Zip/testsuite/TestSuite_x64_vs120.vcxproj b/Zip/testsuite/TestSuite_x64_vs120.vcxproj index 4f7ca04fe..928713ab5 100644 --- a/Zip/testsuite/TestSuite_x64_vs120.vcxproj +++ b/Zip/testsuite/TestSuite_x64_vs120.vcxproj @@ -95,32 +95,32 @@ bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_mt\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ true bin64\static_md\ - obj64\$(Configuration)\ + obj64\TestSuite\$(Configuration)\ false diff --git a/Zip/testsuite/TestSuite_x64_vs120.vcxproj.filters b/Zip/testsuite/TestSuite_x64_vs120.vcxproj.filters index c1dc8714b..ae22af53f 100644 --- a/Zip/testsuite/TestSuite_x64_vs120.vcxproj.filters +++ b/Zip/testsuite/TestSuite_x64_vs120.vcxproj.filters @@ -2,28 +2,28 @@ - {21159307-aef2-4dc0-9921-edaed719438f} + {b4787b30-44c0-486c-ace5-87cc04961918} - {63dec842-f70e-429e-960b-782c0d5a2373} + {c4831bdd-db80-41dd-a1cf-8e7629da7c26} - {7a1451cc-5fe6-4df7-a317-e47af03df15a} + {b8a50853-956b-423d-9f8b-212cb257de2b} - {e2ac29e5-c943-4f9d-aff9-f0e3282c26ce} + {bfcdeace-5dfd-48ae-90a3-ccd6f89b0446} - {45ed62ee-89e4-4f51-822e-27052d3e9028} + {f060e54b-7bd7-4b6b-9e46-3b908c89b480} - {006b0def-7176-4059-87f3-ca2616835558} + {8e600a65-357f-48a1-a8b8-cdb5a3c4bb2e} - {635514a8-eb74-4707-a40b-73b07071c562} + {cedfb40f-d885-41a5-b3d9-326c3d2c590c} - {5bb907e8-090d-4b64-8ef6-66d23165eb88} + {fd5f8f84-bde6-4597-9308-4c3825a927cb} diff --git a/Zip/testsuite/TestSuite_x64_vs90.vcproj b/Zip/testsuite/TestSuite_x64_vs90.vcproj index 8d345d927..0ea678b05 100644 --- a/Zip/testsuite/TestSuite_x64_vs90.vcproj +++ b/Zip/testsuite/TestSuite_x64_vs90.vcproj @@ -47,7 +47,8 @@ Detect64BitPortabilityProblems="false" DebugInformationFormat="3" CompileAs="0" - DisableSpecificWarnings=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> + DisableSpecificWarnings="" + AdditionalOptions=""/> + TargetMachine="17" + AdditionalOptions=""/> ) +# (see ) # # @@ -12,7 +12,7 @@ # LINKMODE ?= STATIC POCO_TARGET_OSNAME = MinGW -POCO_TARGET_OSARCH = ia32 +POCO_TARGET_OSARCH = i686 CROSSENV = i686-pc-mingw32 # @@ -23,9 +23,9 @@ CXX = $(CROSSENV)-g++ LINK = $(CXX) LIB = $(CROSSENV)-ar -cr RANLIB = $(CROSSENV)-ranlib -SHLIB = $(CXX) -shared -mno-cygwin -o $@ -Wl,--out-implib=$(dir $@)$(subst cyg,lib,$(basename $(notdir $@))).a +SHLIB = $(CXX) -shared -o $@ -Wl,--out-implib=$(dir $@)$(subst cyg,lib,$(basename $(notdir $@))).a SHLIBLN = $(POCO_BASE)/build/script/shlibln -STRIP = +STRIP = $(CROSSENV)-strip DEP = $(POCO_BASE)/build/script/makedepend.gcc SHELL = sh RM = rm -rf @@ -68,9 +68,9 @@ RELEASEOPT_LINK = -O2 # # System Specific Flags # -SYSFLAGS = -mno-cygwin -D_WIN32 -DMINGW32 -DWINVER=0x500 -DPOCO_NO_FPENVIRONMENT -DPCRE_STATIC -DPOCO_THREAD_STACK_SIZE -DFoundation_Config_INCLUDED +SYSFLAGS = -D_WIN32 -DMINGW32 -DWINVER=0x501 -DPOCO_NO_FPENVIRONMENT -DPCRE_STATIC -DPOCO_THREAD_STACK_SIZE # # System Specific Libraries # -SYSLIBS = -liphlpapi -lws2_32 -lssl -lcrypto -lws2_32 -lgdi32 +SYSLIBS = -liphlpapi -lssl -lcrypto -lws2_32 diff --git a/build_wdexpress2013.cmd b/build_wdexpress2013.cmd new file mode 100644 index 000000000..0f5f36292 --- /dev/null +++ b/build_wdexpress2013.cmd @@ -0,0 +1,2 @@ +@echo off +buildwin 120 build shared both Win32 samples tests wdexpress diff --git a/doc/99100-ReleaseNotes.page b/doc/99100-ReleaseNotes.page index 90b2ac5f6..102de940d 100644 --- a/doc/99100-ReleaseNotes.page +++ b/doc/99100-ReleaseNotes.page @@ -1,6 +1,52 @@ POCO C++ Libraries Release Notes AAAIntroduction +!!!Release 1.5.4 + +!!Summary of Changes + + - fixed GH #326: compile Net lib 1.5.2 without UTF8 support enabled + - fixed GH #518: NetworkInterface.cpp compile error w/ POCO_NO_WSTRING (1.5.3) + - Fixed MSVC 2010 warnings on large alignment + - make HTTPAuthenticationParams::parse() add value on end of string + - fixed GH #482: Poco::JSON::Stringifier::stringify bad behaviour + - fixed GH #508: Can't compile for arm64 architecture + - fixed GH #510: Incorrect RSAKey construction from istream + - fix SharedMemory for WinCE/WEC2013 + - Add NIOS2 double conversion detection, fixes compile errors + - added VS2013 project/solution files for Windows Embedded Compact 2013 + - added Process::isRunning() + - NetSSL: Fix typo in documentation + - NetSSL_OpenSSL: support for TLS 1.1 and 1.2 + - Zip: Added CM_AUTO, which automatically selects CM_STORE or CM_DEFLATE based + on file extension. Used to avoid double-compression of already compressed file + formats such as images. + - added %L modifier to PatternFormatter to switch to local time + - removed unnecessary explicit in some multi-arg constructors + - Allow SecureStreamSocket::attach() to be used in server connections + - added Var::isBoolean() and fixed JSON stringifier + - added poco_unexpected() macro invoking Bugcheck::unexpected() to deal + with unexpected exceptions in destructors + - fixed GH #538 prevent destructors from throwing exceptions + - improved HTTP server handling of errors while reading header + - fixed GH #545: use short for sign + - upgraded SQLite to 3.8.6 + - fixed GH #550 WebSocket fragmented message problem + - improved HTTPClientSession handling of network errors while sending the request + - updated bundled PCRE to 8.35.0 + - fixed GH #552: FIFOBuffer drain() problem + - fixed GH #402: StreamSocket::receiveBytes(FIFOBuffer&) and sendBytes(FIFOBuffer&) are + not thread safe + - HTTPCookie: fix documentation for max age + - added Timestamp::raw() and Clock::raw() + - Poco::Buffer properly handles zero-sized buffers + - GH #512: Poco:Data:ODBC:Binder.h causes a crash + - Added Crypto_Win and NetSSL_Win libraries which are re-implementations of existing + Crypto and NetSSL_OpenSSL libraries based on WinCrypt/Schannel. The new libraries + can be used as an almost drop-in replacement for the OpenSSL based libraries on + Windows and Windows Embedded Compact platforms. Only available from GitHub for now. + + !!!Release 1.5.3 !!Summary of Changes @@ -82,8 +128,7 @@ AAAIntroduction - fixed GH #176: Poco::JSON::Stringifier UTF encoding - fixed GH #458: Broadcast address and subnet mask for IEEE802.11 network interface - fixed GH #456: poco: library install dirs per RUNTIME/LIBRARY/ARCHIVE - - + !!Incompatible Changes and Possible Transition Issues - Data::ODBC: UTF-16 Unicode is now directly mapped and recognized as type by ODBC. @@ -96,7 +141,8 @@ AAAIntroduction change, and backwards compatibility with the stable 1.4 release series is not guaranteed. There may also be some rough edges. The next stable release incorporating 1.5 features will be 1.6. - + + !!!Release 1.5.2 !!Summary of Changes diff --git a/libversion b/libversion index 409940768..a45fd52cc 100644 --- a/libversion +++ b/libversion @@ -1 +1 @@ -23 +24