diff options
author | Eliot Horowitz <eliot@10gen.com> | 2011-12-24 15:33:26 -0500 |
---|---|---|
committer | Eliot Horowitz <eliot@10gen.com> | 2011-12-24 15:33:45 -0500 |
commit | ae1ecd9c786911f9f1f0242f0f7d702b3e5dfeba (patch) | |
tree | 92f8e1649e6f080b251ff5f1763679a72eb59b34 /src/mongo/util/winutil.h | |
parent | dfa4cd7e2cf109b072440155fabc08a93c8045a0 (diff) | |
download | mongo-ae1ecd9c786911f9f1f0242f0f7d702b3e5dfeba.tar.gz |
bulk move of code to src/ SERVER-4551
Diffstat (limited to 'src/mongo/util/winutil.h')
-rw-r--r-- | src/mongo/util/winutil.h | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/mongo/util/winutil.h b/src/mongo/util/winutil.h new file mode 100644 index 00000000000..b69b69a630d --- /dev/null +++ b/src/mongo/util/winutil.h @@ -0,0 +1,44 @@ +// @file winutil.cpp : Windows related utility functions +// +// /** +// * 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 "pch.h" + +#pragma once + +#if defined(_WIN32) +#include <windows.h> +#include "text.h" + +namespace mongo { + + inline string GetWinErrMsg(DWORD err) { + LPTSTR errMsg; + ::FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, err, 0, (LPTSTR)&errMsg, 0, NULL ); + std::string errMsgStr = toUtf8String( errMsg ); + ::LocalFree( errMsg ); + // FormatMessage() appends a newline to the end of error messages, we trim it because endl flushes the buffer. + errMsgStr = errMsgStr.erase( errMsgStr.length() - 2 ); + std::ostringstream output; + output << errMsgStr << " (" << err << ")"; + + return output.str(); + } +} + +#endif + |