diff options
author | Tor Lillqvist <tml@collabora.com> | 2015-08-13 13:22:28 +0300 |
---|---|---|
committer | Tor Lillqvist <tml@collabora.com> | 2015-08-13 13:24:54 +0300 |
commit | 94cdcaa4d8db8f03ac9a84dac54357efff3eb123 (patch) | |
tree | 5d85963e8e135e3bbdaf49dc6cc691088e90de8e /include | |
parent | 54f10a9654b617c4c993044e52e7bd40d0151c53 (diff) |
Add a globally usable WindowsErrorString function
Is comphelper the right place for this? Is having it as "inline" the right
way?
Change-Id: I973dbde108f89b6cab17e5d88db2390d6f18a672
Diffstat (limited to 'include')
-rw-r--r-- | include/comphelper/windowserrorstring.hxx | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/include/comphelper/windowserrorstring.hxx b/include/comphelper/windowserrorstring.hxx new file mode 100644 index 000000000000..1da7e9c90630 --- /dev/null +++ b/include/comphelper/windowserrorstring.hxx @@ -0,0 +1,46 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#ifndef INCLUDED_COMPHELPER_WINDOWSERRORSTRING_HXX +#define INCLUDED_COMPHELPER_WINDOWSERRORSTRING_HXX + +#include <prewin.h> +#include <postwin.h> +#include <rtl/ustring.hxx> + +namespace { + +inline OUString WindowsErrorString(DWORD nErrorCode) +{ + LPWSTR pMsgBuf; + + if (FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, + NULL, + nErrorCode, + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), + (LPWSTR)&pMsgBuf, + 0, + NULL) == 0) + return OUString::number(nErrorCode, 16); + + if (pMsgBuf[wcslen(pMsgBuf)-1] == '\n') + pMsgBuf[wcslen(pMsgBuf)-1] = '\0'; + + OUString result(pMsgBuf); + + LocalFree(pMsgBuf); + + return result; +} + +} // anonymous namespace + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |