diff options
author | alanw <alanwright.atex@googlemail.com> | 2009-06-04 12:25:58 +0100 |
---|---|---|
committer | alanw <alanwright.atex@googlemail.com> | 2009-06-04 12:25:58 +0100 |
commit | 3224ad222a1439e5d70af1d18b46596ed80da437 (patch) | |
tree | 355f81d31e6b8847212a10113004cf60f1f220c0 | |
parent | ad297c79c7e6fadd96729fa682834ce876295220 (diff) | |
download | mongo-3224ad222a1439e5d70af1d18b46596ed80da437.tar.gz |
Moved implementation code from stdafx to correct pre-compiled headers
-rw-r--r-- | SConstruct | 2 | ||||
-rw-r--r-- | msvc/core_server/core_server.vcproj | 28 | ||||
-rw-r--r-- | msvc/mongo/mongo.vcproj | 28 | ||||
-rw-r--r-- | msvc/mongo_common/mongo_common.vcproj | 20 | ||||
-rw-r--r-- | msvc/mongobridge/mongobridge.vcproj | 28 | ||||
-rw-r--r-- | msvc/mongoclient/mongoclient.vcproj | 28 | ||||
-rw-r--r-- | msvc/mongod/mongod.vcproj | 28 | ||||
-rw-r--r-- | msvc/mongodump/mongodump.vcproj | 28 | ||||
-rw-r--r-- | msvc/mongoexport/mongoexport.vcproj | 28 | ||||
-rw-r--r-- | msvc/mongofiles/mongofiles.vcproj | 28 | ||||
-rw-r--r-- | msvc/mongoimportjson/mongoimportjson.vcproj | 28 | ||||
-rw-r--r-- | msvc/mongorestore/mongorestore.vcproj | 28 | ||||
-rw-r--r-- | msvc/mongos/mongos.vcproj | 28 | ||||
-rw-r--r-- | msvc/server_only/server_only.vcproj | 28 | ||||
-rw-r--r-- | msvc/shard_server/shard_server.vcproj | 28 | ||||
-rw-r--r-- | stdafx.cpp | 115 | ||||
-rw-r--r-- | stdafx.h | 328 | ||||
-rw-r--r-- | util/allocator.h | 52 | ||||
-rw-r--r-- | util/assert_util.cpp | 81 | ||||
-rw-r--r-- | util/assert_util.h | 169 | ||||
-rw-r--r-- | util/debug_util.h | 66 | ||||
-rw-r--r-- | util/goodies.h | 9 | ||||
-rw-r--r-- | util/log.h | 2 | ||||
-rw-r--r-- | util/util.cpp | 43 |
24 files changed, 819 insertions, 432 deletions
diff --git a/SConstruct b/SConstruct index 647e6f24e4f..e3ed4e2c45f 100644 --- a/SConstruct +++ b/SConstruct @@ -185,7 +185,7 @@ if ( not ( usesm or usejvm ) ): # ------ SOURCE FILE SETUP ----------- commonFiles = Split( "stdafx.cpp buildinfo.cpp db/jsobj.cpp db/json.cpp db/commands.cpp db/lasterror.cpp db/nonce.cpp db/queryutil.cpp shell/mongo.cpp" ) -commonFiles += [ "util/background.cpp" , "util/mmap.cpp" , "util/sock.cpp" , "util/util.cpp" , "util/message.cpp" ] +commonFiles += [ "util/background.cpp" , "util/mmap.cpp" , "util/sock.cpp" , "util/util.cpp" , "util/message.cpp" , "util/assert_util.cpp" ] commonFiles += Glob( "util/*.c" ) commonFiles += Split( "client/connpool.cpp client/dbclient.cpp client/model.cpp" ) commonFiles += [ "scripting/engine.cpp" ] diff --git a/msvc/core_server/core_server.vcproj b/msvc/core_server/core_server.vcproj index 6ac3aa669e6..5def1339cfc 100644 --- a/msvc/core_server/core_server.vcproj +++ b/msvc/core_server/core_server.vcproj @@ -47,7 +47,7 @@ MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
- UsePrecompiledHeader="0"
+ UsePrecompiledHeader="2"
WarningLevel="3"
DebugInformationFormat="4"
/>
@@ -113,7 +113,7 @@ PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
- UsePrecompiledHeader="0"
+ UsePrecompiledHeader="2"
WarningLevel="3"
DebugInformationFormat="3"
/>
@@ -210,6 +210,30 @@ >
</File>
</Filter>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\stdafx.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="1"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="1"
+ />
+ </FileConfiguration>
+ </File>
+ </Filter>
</Files>
<Globals>
</Globals>
diff --git a/msvc/mongo/mongo.vcproj b/msvc/mongo/mongo.vcproj index 1b96fd17a2d..1dd951d27d8 100644 --- a/msvc/mongo/mongo.vcproj +++ b/msvc/mongo/mongo.vcproj @@ -47,7 +47,7 @@ MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
- UsePrecompiledHeader="0"
+ UsePrecompiledHeader="2"
WarningLevel="3"
DebugInformationFormat="4"
/>
@@ -125,7 +125,7 @@ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
- UsePrecompiledHeader="0"
+ UsePrecompiledHeader="2"
WarningLevel="3"
DebugInformationFormat="3"
/>
@@ -282,6 +282,30 @@ </FileConfiguration>
</File>
</Filter>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\stdafx.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="1"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="1"
+ />
+ </FileConfiguration>
+ </File>
+ </Filter>
</Files>
<Globals>
</Globals>
diff --git a/msvc/mongo_common/mongo_common.vcproj b/msvc/mongo_common/mongo_common.vcproj index 7883419cde5..e1077239a0d 100644 --- a/msvc/mongo_common/mongo_common.vcproj +++ b/msvc/mongo_common/mongo_common.vcproj @@ -790,6 +790,18 @@ Name="util"
>
<File
+ RelativePath="..\..\util\allocator.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\util\assert_util.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\util\assert_util.h"
+ >
+ </File>
+ <File
RelativePath="..\..\util\background.cpp"
>
</File>
@@ -798,6 +810,14 @@ >
</File>
<File
+ RelativePath="..\..\util\debug_util.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\util\goodies.h"
+ >
+ </File>
+ <File
RelativePath="..\..\util\md5.c"
>
<FileConfiguration
diff --git a/msvc/mongobridge/mongobridge.vcproj b/msvc/mongobridge/mongobridge.vcproj index 1b2115c7ae0..250f5693d62 100644 --- a/msvc/mongobridge/mongobridge.vcproj +++ b/msvc/mongobridge/mongobridge.vcproj @@ -47,7 +47,7 @@ MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
- UsePrecompiledHeader="0"
+ UsePrecompiledHeader="2"
WarningLevel="3"
DebugInformationFormat="4"
/>
@@ -125,7 +125,7 @@ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
- UsePrecompiledHeader="0"
+ UsePrecompiledHeader="2"
WarningLevel="3"
DebugInformationFormat="3"
/>
@@ -266,6 +266,30 @@ >
</File>
</Filter>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\stdafx.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="1"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="1"
+ />
+ </FileConfiguration>
+ </File>
+ </Filter>
</Files>
<Globals>
</Globals>
diff --git a/msvc/mongoclient/mongoclient.vcproj b/msvc/mongoclient/mongoclient.vcproj index f3b3faea1b7..ad2703cc380 100644 --- a/msvc/mongoclient/mongoclient.vcproj +++ b/msvc/mongoclient/mongoclient.vcproj @@ -46,7 +46,7 @@ MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
- UsePrecompiledHeader="0"
+ UsePrecompiledHeader="2"
WarningLevel="3"
DebugInformationFormat="4"
/>
@@ -111,7 +111,7 @@ PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
- UsePrecompiledHeader="0"
+ UsePrecompiledHeader="2"
WarningLevel="3"
DebugInformationFormat="3"
/>
@@ -210,6 +210,30 @@ >
</File>
</Filter>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\stdafx.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="1"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="1"
+ />
+ </FileConfiguration>
+ </File>
+ </Filter>
</Files>
<Globals>
</Globals>
diff --git a/msvc/mongod/mongod.vcproj b/msvc/mongod/mongod.vcproj index 7bc0f21e854..4ff3db088e7 100644 --- a/msvc/mongod/mongod.vcproj +++ b/msvc/mongod/mongod.vcproj @@ -47,7 +47,7 @@ MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
- UsePrecompiledHeader="0"
+ UsePrecompiledHeader="2"
WarningLevel="3"
DebugInformationFormat="4"
/>
@@ -127,7 +127,7 @@ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
- UsePrecompiledHeader="0"
+ UsePrecompiledHeader="2"
WarningLevel="3"
DebugInformationFormat="3"
/>
@@ -202,6 +202,30 @@ >
</File>
</Filter>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\stdafx.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="1"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="1"
+ />
+ </FileConfiguration>
+ </File>
+ </Filter>
</Files>
<Globals>
</Globals>
diff --git a/msvc/mongodump/mongodump.vcproj b/msvc/mongodump/mongodump.vcproj index 8b3408a3778..7d331b055e6 100644 --- a/msvc/mongodump/mongodump.vcproj +++ b/msvc/mongodump/mongodump.vcproj @@ -47,7 +47,7 @@ MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
- UsePrecompiledHeader="0"
+ UsePrecompiledHeader="2"
WarningLevel="3"
DebugInformationFormat="4"
/>
@@ -125,7 +125,7 @@ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
- UsePrecompiledHeader="0"
+ UsePrecompiledHeader="2"
WarningLevel="3"
DebugInformationFormat="3"
/>
@@ -266,6 +266,30 @@ >
</File>
</Filter>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\stdafx.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="1"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="1"
+ />
+ </FileConfiguration>
+ </File>
+ </Filter>
</Files>
<Globals>
</Globals>
diff --git a/msvc/mongoexport/mongoexport.vcproj b/msvc/mongoexport/mongoexport.vcproj index 375e45d32e3..0225031205e 100644 --- a/msvc/mongoexport/mongoexport.vcproj +++ b/msvc/mongoexport/mongoexport.vcproj @@ -47,7 +47,7 @@ MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
- UsePrecompiledHeader="0"
+ UsePrecompiledHeader="2"
WarningLevel="3"
DebugInformationFormat="4"
/>
@@ -125,7 +125,7 @@ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
- UsePrecompiledHeader="0"
+ UsePrecompiledHeader="2"
WarningLevel="3"
DebugInformationFormat="3"
/>
@@ -266,6 +266,30 @@ >
</File>
</Filter>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\stdafx.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="1"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="1"
+ />
+ </FileConfiguration>
+ </File>
+ </Filter>
</Files>
<Globals>
</Globals>
diff --git a/msvc/mongofiles/mongofiles.vcproj b/msvc/mongofiles/mongofiles.vcproj index 604075b3b18..a36f4421067 100644 --- a/msvc/mongofiles/mongofiles.vcproj +++ b/msvc/mongofiles/mongofiles.vcproj @@ -47,7 +47,7 @@ MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
- UsePrecompiledHeader="0"
+ UsePrecompiledHeader="2"
WarningLevel="3"
DebugInformationFormat="4"
/>
@@ -125,7 +125,7 @@ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
- UsePrecompiledHeader="0"
+ UsePrecompiledHeader="2"
WarningLevel="3"
DebugInformationFormat="3"
/>
@@ -266,6 +266,30 @@ >
</File>
</Filter>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\stdafx.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="1"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="1"
+ />
+ </FileConfiguration>
+ </File>
+ </Filter>
</Files>
<Globals>
</Globals>
diff --git a/msvc/mongoimportjson/mongoimportjson.vcproj b/msvc/mongoimportjson/mongoimportjson.vcproj index 1c292477a10..f2b2f7f8b0f 100644 --- a/msvc/mongoimportjson/mongoimportjson.vcproj +++ b/msvc/mongoimportjson/mongoimportjson.vcproj @@ -47,7 +47,7 @@ MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
- UsePrecompiledHeader="0"
+ UsePrecompiledHeader="2"
WarningLevel="3"
DebugInformationFormat="4"
/>
@@ -125,7 +125,7 @@ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
- UsePrecompiledHeader="0"
+ UsePrecompiledHeader="2"
WarningLevel="3"
DebugInformationFormat="3"
/>
@@ -266,6 +266,30 @@ >
</File>
</Filter>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\stdafx.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="1"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="1"
+ />
+ </FileConfiguration>
+ </File>
+ </Filter>
</Files>
<Globals>
</Globals>
diff --git a/msvc/mongorestore/mongorestore.vcproj b/msvc/mongorestore/mongorestore.vcproj index 54117b10fc2..e40ea927e93 100644 --- a/msvc/mongorestore/mongorestore.vcproj +++ b/msvc/mongorestore/mongorestore.vcproj @@ -47,7 +47,7 @@ MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
- UsePrecompiledHeader="0"
+ UsePrecompiledHeader="2"
WarningLevel="3"
DebugInformationFormat="4"
/>
@@ -125,7 +125,7 @@ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
- UsePrecompiledHeader="0"
+ UsePrecompiledHeader="2"
WarningLevel="3"
DebugInformationFormat="3"
/>
@@ -266,6 +266,30 @@ >
</File>
</Filter>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\stdafx.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="1"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="1"
+ />
+ </FileConfiguration>
+ </File>
+ </Filter>
</Files>
<Globals>
</Globals>
diff --git a/msvc/mongos/mongos.vcproj b/msvc/mongos/mongos.vcproj index 0ad3ca05699..058fa1ee375 100644 --- a/msvc/mongos/mongos.vcproj +++ b/msvc/mongos/mongos.vcproj @@ -46,7 +46,7 @@ MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
- UsePrecompiledHeader="0"
+ UsePrecompiledHeader="2"
WarningLevel="3"
DebugInformationFormat="4"
/>
@@ -122,7 +122,7 @@ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
- UsePrecompiledHeader="0"
+ UsePrecompiledHeader="2"
WarningLevel="3"
DebugInformationFormat="3"
/>
@@ -198,6 +198,30 @@ >
</File>
</Filter>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\stdafx.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="1"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="1"
+ />
+ </FileConfiguration>
+ </File>
+ </Filter>
</Files>
<Globals>
</Globals>
diff --git a/msvc/server_only/server_only.vcproj b/msvc/server_only/server_only.vcproj index cbafeff1b0f..eb192ab2107 100644 --- a/msvc/server_only/server_only.vcproj +++ b/msvc/server_only/server_only.vcproj @@ -47,7 +47,7 @@ MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
- UsePrecompiledHeader="0"
+ UsePrecompiledHeader="2"
WarningLevel="3"
DebugInformationFormat="4"
/>
@@ -113,7 +113,7 @@ PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
- UsePrecompiledHeader="0"
+ UsePrecompiledHeader="2"
WarningLevel="3"
DebugInformationFormat="3"
/>
@@ -356,6 +356,30 @@ >
</File>
</Filter>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\stdafx.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="1"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="1"
+ />
+ </FileConfiguration>
+ </File>
+ </Filter>
</Files>
<Globals>
</Globals>
diff --git a/msvc/shard_server/shard_server.vcproj b/msvc/shard_server/shard_server.vcproj index 1335b321d5f..e2089033b74 100644 --- a/msvc/shard_server/shard_server.vcproj +++ b/msvc/shard_server/shard_server.vcproj @@ -47,7 +47,7 @@ MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
- UsePrecompiledHeader="0"
+ UsePrecompiledHeader="2"
WarningLevel="3"
DebugInformationFormat="4"
/>
@@ -113,7 +113,7 @@ PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
- UsePrecompiledHeader="0"
+ UsePrecompiledHeader="2"
WarningLevel="3"
DebugInformationFormat="3"
/>
@@ -232,6 +232,30 @@ >
</File>
</Filter>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\stdafx.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="1"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="1"
+ />
+ </FileConfiguration>
+ </File>
+ </Filter>
</Files>
<Globals>
</Globals>
diff --git a/stdafx.cpp b/stdafx.cpp index 74444f3ea04..60255274d9c 100644 --- a/stdafx.cpp +++ b/stdafx.cpp @@ -1,6 +1,4 @@ // stdafx.cpp : source file that includes just the standard includes -// db.pch will be the pre-compiled header -// stdafx.obj will contain the pre-compiled type information /** * Copyright (C) 2008 10gen Inc. @@ -24,117 +22,4 @@ namespace mongo { const char versionString[] = "0.9.3+"; -// TODO: reference any additional headers you need in STDAFX.H -// and not in this file - - Assertion lastAssert[4]; - -#undef assert - -#undef yassert - -} // namespace mongo - -#include "assert.h" -#include "db/lasterror.h" - -namespace mongo { - - string getDbContext(); - - /* "warning" assert -- safe to continue, so we don't throw exception. */ - void wasserted(const char *msg, const char *file, unsigned line) { - problem() << "Assertion failure " << msg << ' ' << file << ' ' << dec << line << endl; - sayDbContext(); - raiseError(msg && *msg ? msg : "wassertion failure"); - lastAssert[1].set(msg, getDbContext().c_str(), file, line); - } - - void asserted(const char *msg, const char *file, unsigned line) { - problem() << "Assertion failure " << msg << ' ' << file << ' ' << dec << line << endl; - sayDbContext(); - raiseError(msg && *msg ? msg : "assertion failure"); - lastAssert[0].set(msg, getDbContext().c_str(), file, line); - throw AssertionException(); - } - - void uassert_nothrow(const char *msg) { - lastAssert[3].set(msg, getDbContext().c_str(), "", 0); - raiseError(msg); - } - - int uacount = 0; - void uasserted(const char *msg) { - if ( ++uacount < 100 ) - log() << "User Exception " << msg << endl; - else - RARELY log() << "User Exception " << msg << endl; - lastAssert[3].set(msg, getDbContext().c_str(), "", 0); - raiseError(msg); - throw UserException(msg); - } - - void msgasserted(const char *msg) { - log() << "Assertion: " << msg << '\n'; - lastAssert[2].set(msg, getDbContext().c_str(), "", 0); - raiseError(msg && *msg ? msg : "massert failure"); - throw MsgAssertionException(msg); - } - - string Assertion::toString() { - if ( !isSet() ) - return ""; - - stringstream ss; - ss << msg << '\n'; - if ( *context ) - ss << context << '\n'; - if ( *file ) - ss << file << ' ' << line << '\n'; - return ss.str(); - } - - /* this is a good place to set a breakpoint when debugging, as lots of warning things - (assert, wassert) call it. - */ - void sayDbContext(const char *errmsg) { - if ( errmsg ) { - problem() << errmsg << endl; - } - printStackTrace(); - } - - void exit( int status ){ - dbexit( status ); - } - - void rawOut( const string &s ) { - if( s.empty() ) return; - char now[64]; - time_t_to_String(time(0), now); - now[20] = 0; -#if defined(_WIN32) - (std::cout << now << " " << s).flush(); -#else - write( STDOUT_FILENO, now, 20 ); - write( STDOUT_FILENO, " ", 1 ); - write( STDOUT_FILENO, s.c_str(), s.length() ); - fsync( STDOUT_FILENO ); -#endif - } - -#ifndef _SCONS - // only works in scons - const char * gitVersion(){ return ""; } - const char * sysInfo(){ return ""; } -#endif - - void printGitVersion() { log() << "git version: " << gitVersion() << endl; } - void printSysInfo() { log() << "sys info: " << sysInfo() << endl; } - string mongodVersion() { - stringstream ss; - ss << "db version v" << versionString << ", pdfile version " << VERSION << "." << VERSION_MINOR; - return ss.str(); - } - } // namespace mongo @@ -31,301 +31,33 @@ namespace mongo { const bool debug=false; #endif - extern const char versionString[]; // pdfile versions const int VERSION = 4; const int VERSION_MINOR = 4; -} // namespace mongo - -#include <memory> -#include "stdlib.h" -#include "string.h" -#include "limits.h" - -namespace mongo { - - void sayDbContext(const char *msg = 0); - void dbexit(int returnCode, const char *whyMsg = ""); - void exit( int status ); + // mongo version + extern const char versionString[]; - inline void * ourmalloc(size_t size) { - void *x = malloc(size); - if ( x == 0 ) dbexit(42, "malloc fails"); - return x; - } - - inline void * ourrealloc(void *ptr, size_t size) { - void *x = realloc(ptr, size); - if ( x == 0 ) dbexit(43, "realloc fails"); - return x; - } - -#define malloc mongo::ourmalloc -#define realloc mongo::ourrealloc - } // namespace mongo -#include "targetver.h" - +#include <memory> #include <string> -#include "time.h" - -using namespace std; - -namespace mongo { - - const char * gitVersion(); - const char * sysInfo(); - string mongodVersion(); - - void printGitVersion(); - void printSysInfo(); - - /* these are manipulated outside of mutexes, so be careful */ - struct Assertion { - Assertion() { - msg[0] = msg[127] = 0; - context[0] = context[127] = 0; - file = ""; - line = 0; - when = 0; - } - char msg[128]; - char context[128]; - const char *file; - unsigned line; - time_t when; - void set(const char *m, const char *ctxt, const char *f, unsigned l) { - strncpy(msg, m, 127); - strncpy(context, ctxt, 127); - file = f; - line = l; - when = time(0); - } - string toString(); - bool isSet() { - return when != 0; - } - }; - - enum { - AssertRegular = 0, - AssertW = 1, - AssertMsg = 2, - AssertUser = 3 - }; - - /* last assert of diff types: regular, wassert, msgassert, uassert: */ - extern Assertion lastAssert[4]; - - class DBException : public exception { - public: - virtual const char* what() const throw() = 0; - virtual string toString() const { - return what(); - } - operator string() const { return toString(); } - }; - - class AssertionException : public DBException { - public: - string msg; - AssertionException() { } - virtual ~AssertionException() throw() { } - virtual bool severe() { - return true; - } - virtual bool isUserAssertion() { - return false; - } - virtual const char* what() const throw() { return msg.c_str(); } - }; - - /* UserExceptions are valid errors that a user can cause, like out of disk space or duplicate key */ - class UserException : public AssertionException { - public: - UserException(const char *_msg) { - msg = _msg; - } - UserException(string _msg) { - msg = _msg; - } - virtual bool severe() { - return false; - } - virtual bool isUserAssertion() { - return true; - } - virtual string toString() const { - return "userassert:" + msg; - } - }; - - class MsgAssertionException : public AssertionException { - public: - MsgAssertionException(const char *_msg) { - msg = _msg; - } - virtual bool severe() { - return false; - } - virtual string toString() const { - return "massert:" + msg; - } - }; - - void asserted(const char *msg, const char *file, unsigned line); - void wasserted(const char *msg, const char *file, unsigned line); - void uasserted(const char *msg); - inline void uasserted(string msg) { uasserted(msg.c_str()); } - void uassert_nothrow(const char *msg); // reported via lasterror, but don't throw exception - void msgasserted(const char *msg); - inline void msgasserted(string msg) { msgasserted(msg.c_str()); } - -#ifdef assert -#undef assert -#endif - -#define assert(_Expression) (void)( (!!(_Expression)) || (asserted(#_Expression, __FILE__, __LINE__), 0) ) - - /* "user assert". if asserts, user did something wrong, not our code */ -//#define uassert(_Expression) (void)( (!!(_Expression)) || (uasserted(#_Expression, __FILE__, __LINE__), 0) ) -#define uassert(msg,_Expression) (void)( (!!(_Expression)) || (uasserted(msg), 0) ) - -#define xassert(_Expression) (void)( (!!(_Expression)) || (asserted(#_Expression, __FILE__, __LINE__), 0) ) - -#define yassert 1 - - /* warning only - keeps going */ -#define wassert(_Expression) (void)( (!!(_Expression)) || (wasserted(#_Expression, __FILE__, __LINE__), 0) ) - - /* display a message, no context, and throw assertionexception - - easy way to throw an exception and log something without our stack trace - display happening. - */ -#define massert(msg,_Expression) (void)( (!!(_Expression)) || (msgasserted(msg), 0) ) - - /* dassert is 'debug assert' -- might want to turn off for production as these - could be slow. - */ -#if defined(_DEBUG) -#define dassert assert -#else -#define dassert(x) -#endif - -} // namespace mongo - -#include <stdio.h> -#include <sstream> -#include <signal.h> - -namespace mongo { - - typedef char _TCHAR; - -} // namespace mongo - #include <iostream> #include <fstream> #include <map> #include <vector> #include <set> +#include <stdio.h> +#include <stdlib.h> +#include <sstream> +#include <signal.h> -namespace mongo { - -//using namespace std; - -#if !defined(_WIN32) - typedef int HANDLE; - inline void strcpy_s(char *dst, unsigned len, const char *src) { - strcpy(dst, src); - } -#else - typedef void *HANDLE; -#endif - -//#if defined(CHAR) -//#error CHAR already defined? -//#endif - -//#if defined(_WIN32_WINNT) -//typedef wchar_t CHAR; -//#else -// more to be done...linux unicode is 32 bit. -//typedef unsigned short CHAR; // 16 bit unicode -//#endif - -#define null (0) - - void rawOut( const string &s ); - -} // namespace mongo - -#include <vector> - -namespace mongo { - -// for debugging - typedef struct _Ints { - int i[100]; - } *Ints; - typedef struct _Chars { - char c[200]; - } *Chars; - - typedef char CHARS[400]; - - typedef struct _OWS { - int size; - char type; - char string[400]; - } *OWS; - - class Database; - //extern Database *database; - extern const char *curNs; - - /* for now, running on win32 means development not production -- - use this to log things just there. - */ -#if defined(_WIN32) -#define WIN if( 1 ) -#else -#define WIN if( 0 ) -#endif - -#if defined(_DEBUG) -#define DEV if( 1 ) -#else -#define DEV if( 0 ) -#endif - -#define DEBUGGING if( 0 ) - - // The following declare one unique counter per enclosing function. - // NOTE The implementation double-increments on a match, but we don't really care. -#define SOMETIMES( occasion, howOften ) for( static unsigned occasion = 0; ++occasion % howOften == 0; ) -#define OCCASIONALLY SOMETIMES( occasionally, 16 ) -#define RARELY SOMETIMES( rarely, 128 ) -#define ONCE for( static bool undone = true; undone; undone = false ) - -#if defined(_WIN32) -#define strcasecmp _stricmp - inline void our_debug_free(void *p) { -#if 0 -// this is not safe if you malloc < 4 bytes so we don't use anymore - unsigned *u = (unsigned *) p; - u[0] = 0xEEEEEEEE; -#endif - free(p); - } -#define free our_debug_free -#endif +#include "targetver.h" +#include "time.h" +#include "string.h" +#include "limits.h" -} // namespace mongo +using namespace std; #undef yassert #include <boost/archive/iterators/base64_from_binary.hpp> @@ -338,7 +70,6 @@ namespace mongo { #include <boost/shared_ptr.hpp> #include <boost/smart_ptr.hpp> #define BOOST_SPIRIT_THREADSAFE -//#define BOOST_SPIRIT_DEBUG #include <boost/spirit/core.hpp> #include <boost/spirit/utility/loops.hpp> #include <boost/tuple/tuple.hpp> @@ -347,15 +78,32 @@ namespace mongo { #define yassert 1 using namespace boost::filesystem; +#include "util/debug_util.h" #include "util/goodies.h" #include "util/log.h" +#include "util/allocator.h" +#include "util/assert_util.h" + +namespace mongo { + + void sayDbContext(const char *msg = 0); + void dbexit(int returnCode, const char *whyMsg = ""); + void exit( int status ); + void rawOut( const string &s ); -#define BOOST_CHECK_EXCEPTION( expression ) \ - try { \ - expression; \ - } catch ( const std::exception &e ) { \ - problem() << "caught boost exception: " << e.what() << endl; \ - assert( false ); \ - } catch ( ... ) { \ - assert( false ); \ - } +} // namespace mongo + +namespace mongo { + + const char * gitVersion(); + const char * sysInfo(); + string mongodVersion(); + + void printGitVersion(); + void printSysInfo(); + + typedef char _TCHAR; + +#define null (0) + +} // namespace mongo diff --git a/util/allocator.h b/util/allocator.h new file mode 100644 index 00000000000..ec8c6c92ba7 --- /dev/null +++ b/util/allocator.h @@ -0,0 +1,52 @@ +// allocator.h + +/** +* Copyright (C) 2008 10gen Inc. +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License, version 3, +* as published by the Free Software Foundation. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#pragma once + +namespace mongo { + + void dbexit(int returnCode, const char *whyMsg); + + inline void * ourmalloc(size_t size) { + void *x = malloc(size); + if ( x == 0 ) dbexit(42, "malloc fails"); + return x; + } + + inline void * ourrealloc(void *ptr, size_t size) { + void *x = realloc(ptr, size); + if ( x == 0 ) dbexit(43, "realloc fails"); + return x; + } + +#define malloc mongo::ourmalloc +#define realloc mongo::ourrealloc + +#if defined(_WIN32) + inline void our_debug_free(void *p) { +#if 0 +// this is not safe if you malloc < 4 bytes so we don't use anymore + unsigned *u = (unsigned *) p; + u[0] = 0xEEEEEEEE; +#endif + free(p); + } +#define free our_debug_free +#endif + +} // namespace mongo
\ No newline at end of file diff --git a/util/assert_util.cpp b/util/assert_util.cpp new file mode 100644 index 00000000000..6adb3d424fb --- /dev/null +++ b/util/assert_util.cpp @@ -0,0 +1,81 @@ +// assert_util.cpp + +/** +* Copyright (C) 2008 10gen Inc. +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License, version 3, +* as published by the Free Software Foundation. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#include "stdafx.h" +#include "assert_util.h" +#include "assert.h" + +namespace mongo { + + string getDbContext(); + + Assertion lastAssert[4]; + + /* "warning" assert -- safe to continue, so we don't throw exception. */ + void wasserted(const char *msg, const char *file, unsigned line) { + problem() << "Assertion failure " << msg << ' ' << file << ' ' << dec << line << endl; + sayDbContext(); + raiseError(msg && *msg ? msg : "wassertion failure"); + lastAssert[1].set(msg, getDbContext().c_str(), file, line); + } + + void asserted(const char *msg, const char *file, unsigned line) { + problem() << "Assertion failure " << msg << ' ' << file << ' ' << dec << line << endl; + sayDbContext(); + raiseError(msg && *msg ? msg : "assertion failure"); + lastAssert[0].set(msg, getDbContext().c_str(), file, line); + throw AssertionException(); + } + + void uassert_nothrow(const char *msg) { + lastAssert[3].set(msg, getDbContext().c_str(), "", 0); + raiseError(msg); + } + + int uacount = 0; + void uasserted(const char *msg) { + if ( ++uacount < 100 ) + log() << "User Exception " << msg << endl; + else + RARELY log() << "User Exception " << msg << endl; + lastAssert[3].set(msg, getDbContext().c_str(), "", 0); + raiseError(msg); + throw UserException(msg); + } + + void msgasserted(const char *msg) { + log() << "Assertion: " << msg << '\n'; + lastAssert[2].set(msg, getDbContext().c_str(), "", 0); + raiseError(msg && *msg ? msg : "massert failure"); + throw MsgAssertionException(msg); + } + + string Assertion::toString() { + if ( !isSet() ) + return ""; + + stringstream ss; + ss << msg << '\n'; + if ( *context ) + ss << context << '\n'; + if ( *file ) + ss << file << ' ' << line << '\n'; + return ss.str(); + } + +}
\ No newline at end of file diff --git a/util/assert_util.h b/util/assert_util.h new file mode 100644 index 00000000000..4b519407261 --- /dev/null +++ b/util/assert_util.h @@ -0,0 +1,169 @@ +// assert_util.h + +/** +* Copyright (C) 2008 10gen Inc. +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License, version 3, +* as published by the Free Software Foundation. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#pragma once + +#include "db/lasterror.h" + +namespace mongo { + + /* these are manipulated outside of mutexes, so be careful */ + struct Assertion { + Assertion() { + msg[0] = msg[127] = 0; + context[0] = context[127] = 0; + file = ""; + line = 0; + when = 0; + } + char msg[128]; + char context[128]; + const char *file; + unsigned line; + time_t when; + void set(const char *m, const char *ctxt, const char *f, unsigned l) { + strncpy(msg, m, 127); + strncpy(context, ctxt, 127); + file = f; + line = l; + when = time(0); + } + std::string toString(); + bool isSet() { + return when != 0; + } + }; + + enum { + AssertRegular = 0, + AssertW = 1, + AssertMsg = 2, + AssertUser = 3 + }; + + /* last assert of diff types: regular, wassert, msgassert, uassert: */ + extern Assertion lastAssert[4]; + + class DBException : public exception { + public: + virtual const char* what() const throw() = 0; + virtual string toString() const { + return what(); + } + operator string() const { return toString(); } + }; + + class AssertionException : public DBException { + public: + string msg; + AssertionException() { } + virtual ~AssertionException() throw() { } + virtual bool severe() { + return true; + } + virtual bool isUserAssertion() { + return false; + } + virtual const char* what() const throw() { return msg.c_str(); } + }; + + /* UserExceptions are valid errors that a user can cause, like out of disk space or duplicate key */ + class UserException : public AssertionException { + public: + UserException(const char *_msg) { + msg = _msg; + } + UserException(string _msg) { + msg = _msg; + } + virtual bool severe() { + return false; + } + virtual bool isUserAssertion() { + return true; + } + virtual string toString() const { + return "userassert:" + msg; + } + }; + + class MsgAssertionException : public AssertionException { + public: + MsgAssertionException(const char *_msg) { + msg = _msg; + } + virtual bool severe() { + return false; + } + virtual string toString() const { + return "massert:" + msg; + } + }; + + void asserted(const char *msg, const char *file, unsigned line); + void wasserted(const char *msg, const char *file, unsigned line); + void uasserted(const char *msg); + inline void uasserted(string msg) { uasserted(msg.c_str()); } + void uassert_nothrow(const char *msg); // reported via lasterror, but don't throw exception + void msgasserted(const char *msg); + inline void msgasserted(string msg) { msgasserted(msg.c_str()); } + +#ifdef assert +#undef assert +#endif + +#define assert(_Expression) (void)( (!!(_Expression)) || (asserted(#_Expression, __FILE__, __LINE__), 0) ) + + /* "user assert". if asserts, user did something wrong, not our code */ +//#define uassert(_Expression) (void)( (!!(_Expression)) || (uasserted(#_Expression, __FILE__, __LINE__), 0) ) +#define uassert(msg,_Expression) (void)( (!!(_Expression)) || (uasserted(msg), 0) ) + +#define xassert(_Expression) (void)( (!!(_Expression)) || (asserted(#_Expression, __FILE__, __LINE__), 0) ) + +#define yassert 1 + + /* warning only - keeps going */ +#define wassert(_Expression) (void)( (!!(_Expression)) || (wasserted(#_Expression, __FILE__, __LINE__), 0) ) + + /* display a message, no context, and throw assertionexception + + easy way to throw an exception and log something without our stack trace + display happening. + */ +#define massert(msg,_Expression) (void)( (!!(_Expression)) || (msgasserted(msg), 0) ) + + /* dassert is 'debug assert' -- might want to turn off for production as these + could be slow. + */ +#if defined(_DEBUG) +#define dassert assert +#else +#define dassert(x) +#endif + +} // namespace mongo + +#define BOOST_CHECK_EXCEPTION( expression ) \ + try { \ + expression; \ + } catch ( const std::exception &e ) { \ + problem() << "caught boost exception: " << e.what() << endl; \ + assert( false ); \ + } catch ( ... ) { \ + assert( false ); \ + } diff --git a/util/debug_util.h b/util/debug_util.h new file mode 100644 index 00000000000..7fe3fee9f36 --- /dev/null +++ b/util/debug_util.h @@ -0,0 +1,66 @@ +// debug_util.h + +/** +* Copyright (C) 2008 10gen Inc. +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License, version 3, +* as published by the Free Software Foundation. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#pragma once + +namespace mongo { + +// for debugging + typedef struct _Ints { + int i[100]; + } *Ints; + typedef struct _Chars { + char c[200]; + } *Chars; + + typedef char CHARS[400]; + + typedef struct _OWS { + int size; + char type; + char string[400]; + } *OWS; + +// for now, running on win32 means development not production -- +// use this to log things just there. +#if defined(_WIN32) +#define WIN if( 1 ) +#else +#define WIN if( 0 ) +#endif + +#if defined(_DEBUG) +#define DEV if( 1 ) +#else +#define DEV if( 0 ) +#endif + +#define DEBUGGING if( 0 ) + +// The following declare one unique counter per enclosing function. +// NOTE The implementation double-increments on a match, but we don't really care. +#define SOMETIMES( occasion, howOften ) for( static unsigned occasion = 0; ++occasion % howOften == 0; ) +#define OCCASIONALLY SOMETIMES( occasionally, 16 ) +#define RARELY SOMETIMES( rarely, 128 ) +#define ONCE for( static bool undone = true; undone; undone = false ) + +#if defined(_WIN32) +#define strcasecmp _stricmp +#endif + +} // namespace mongo diff --git a/util/goodies.h b/util/goodies.h index 7a68682aa7a..a0bf512f355 100644 --- a/util/goodies.h +++ b/util/goodies.h @@ -307,5 +307,14 @@ namespace mongo { return i; return -1; } + +#if !defined(_WIN32) + typedef int HANDLE; + inline void strcpy_s(char *dst, unsigned len, const char *src) { + strcpy(dst, src); + } +#else + typedef void *HANDLE; +#endif } // namespace mongo diff --git a/util/log.h b/util/log.h index 5f8d7589f87..6d2b73f790d 100644 --- a/util/log.h +++ b/util/log.h @@ -20,6 +20,8 @@ namespace mongo { + extern const char *curNs; + // Utility interface for stringifying object only when val() called. class LazyString { public: diff --git a/util/util.cpp b/util/util.cpp index efc8746b3fb..9cc23fd4f8c 100644 --- a/util/util.cpp +++ b/util/util.cpp @@ -102,4 +102,47 @@ namespace mongo { OpTime OpTime::last(0, 0); + /* this is a good place to set a breakpoint when debugging, as lots of warning things + (assert, wassert) call it. + */ + void sayDbContext(const char *errmsg) { + if ( errmsg ) { + problem() << errmsg << endl; + } + printStackTrace(); + } + + void exit( int status ){ + dbexit( status ); + } + + void rawOut( const string &s ) { + if( s.empty() ) return; + char now[64]; + time_t_to_String(time(0), now); + now[20] = 0; +#if defined(_WIN32) + (std::cout << now << " " << s).flush(); +#else + write( STDOUT_FILENO, now, 20 ); + write( STDOUT_FILENO, " ", 1 ); + write( STDOUT_FILENO, s.c_str(), s.length() ); + fsync( STDOUT_FILENO ); +#endif + } + +#ifndef _SCONS + // only works in scons + const char * gitVersion(){ return ""; } + const char * sysInfo(){ return ""; } +#endif + + void printGitVersion() { log() << "git version: " << gitVersion() << endl; } + void printSysInfo() { log() << "sys info: " << sysInfo() << endl; } + string mongodVersion() { + stringstream ss; + ss << "db version v" << versionString << ", pdfile version " << VERSION << "." << VERSION_MINOR; + return ss.str(); + } + } // namespace mongo |