diff options
Diffstat (limited to 'src/libcrawler/win32')
-rwxr-xr-x | src/libcrawler/win32/errormsg.cpp | 27 | ||||
-rwxr-xr-x | src/libcrawler/win32/stringutils.cpp | 21 |
2 files changed, 48 insertions, 0 deletions
diff --git a/src/libcrawler/win32/errormsg.cpp b/src/libcrawler/win32/errormsg.cpp new file mode 100755 index 0000000..c0a65d8 --- /dev/null +++ b/src/libcrawler/win32/errormsg.cpp @@ -0,0 +1,27 @@ +#include "win32/errormsg.hpp" + +using namespace std; + +#define WIN32_MEAN_AND_LEAN +#include <windows.h> + +string getLastError( ) +{ + LPTSTR buf; + DWORD size; + + DWORD lastErr = GetLastError( ); + + if( !FormatMessage( + FORMAT_MESSAGE_ALLOCATE_BUFFER | + FORMAT_MESSAGE_FROM_SYSTEM | + FORMAT_MESSAGE_IGNORE_INSERTS | + FORMAT_MESSAGE_MAX_WIDTH_MASK, + NULL, lastErr, 0, (LPTSTR)&buf, + 0, NULL ) ) { + return "<no message available>"; + } + + return string( buf ); +} + diff --git a/src/libcrawler/win32/stringutils.cpp b/src/libcrawler/win32/stringutils.cpp new file mode 100755 index 0000000..607735c --- /dev/null +++ b/src/libcrawler/win32/stringutils.cpp @@ -0,0 +1,21 @@ +#include "win32/stringutils.hpp" + +using namespace std; + +#define WIN32_MEAN_AND_LEAN +#include <windows.h> + +std::wstring s2ws( const std::string &s ) +{ + // get size for buffer and allocate it + int len; + int slength = (int)s.length( )+1; + len = MultiByteToWideChar( CP_ACP, 0, s.c_str( ), slength, 0, 0 ); + wchar_t *buf = new wchar_t[len]; + + // convert + MultiByteToWideChar( CP_ACP, 0, s.c_str( ), slength, buf, len ); + std::wstring res( buf ); + delete[] buf; + return res; +} |