summaryrefslogtreecommitdiff
path: root/shell
diff options
context:
space:
mode:
authorMike Kaganski <mike.kaganski@collabora.com>2017-09-27 14:20:25 +0300
committerMike Kaganski <mike.kaganski@collabora.com>2017-09-28 08:55:04 +0200
commite80aef4e032f08ef0c4cfbb028bf83b81002f112 (patch)
treeabb1d7e2ae7f46623d2769b5820e716ad063b4eb /shell
parent09917566b6ce86ea65a246f2055b5d1f41df4e76 (diff)
shell: use Unicode on Windows
Change-Id: I9f7962db320f8832879ba327108425a7592b4b77 Reviewed-on: https://gerrit.libreoffice.org/42885 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Diffstat (limited to 'shell')
-rw-r--r--shell/inc/basereader.hxx3
-rw-r--r--shell/inc/contentreader.hxx3
-rw-r--r--shell/inc/fileextensions.hxx12
-rw-r--r--shell/inc/filepath.hxx29
-rw-r--r--shell/inc/infotips.hxx7
-rw-r--r--shell/inc/metainforeader.hxx3
-rw-r--r--shell/inc/propsheets.hxx3
-rw-r--r--shell/inc/registry.hxx11
-rw-r--r--shell/inc/stream_helper.hxx3
-rw-r--r--shell/inc/utilities.hxx10
-rw-r--r--shell/inc/zipfile.hxx8
-rw-r--r--shell/qa/zip/ziptest.cxx10
-rw-r--r--shell/source/backends/localebe/localebackend.cxx10
-rw-r--r--shell/source/backends/wininetbe/wininetbackend.cxx14
-rw-r--r--shell/source/tools/regsvrex/regsvrex.cxx12
-rw-r--r--shell/source/win32/SysShExec.cxx4
-rw-r--r--shell/source/win32/ooofilereader/basereader.cxx2
-rw-r--r--shell/source/win32/ooofilereader/contentreader.cxx2
-rw-r--r--shell/source/win32/ooofilereader/metainforeader.cxx2
-rw-r--r--shell/source/win32/shlxthandler/columninfo/columninfo.cxx4
-rw-r--r--shell/source/win32/shlxthandler/infotips/infotips.cxx24
-rw-r--r--shell/source/win32/shlxthandler/ooofilt/ooofilt.cxx4
-rw-r--r--shell/source/win32/shlxthandler/ooofilt/stream_helper.cxx4
-rw-r--r--shell/source/win32/shlxthandler/prophdl/propertyhdl.cxx36
-rw-r--r--shell/source/win32/shlxthandler/propsheets/document_statistic.cxx12
-rw-r--r--shell/source/win32/shlxthandler/propsheets/document_statistic.hxx22
-rw-r--r--shell/source/win32/shlxthandler/propsheets/propsheets.cxx31
-rw-r--r--shell/source/win32/shlxthandler/shlxthdl.cxx115
-rw-r--r--shell/source/win32/shlxthandler/thumbviewer/thumbviewer.cxx8
-rw-r--r--shell/source/win32/shlxthandler/util/fileextensions.cxx90
-rw-r--r--shell/source/win32/shlxthandler/util/registry.cxx50
-rw-r--r--shell/source/win32/shlxthandler/util/utilities.cxx6
-rw-r--r--shell/source/win32/simplemail/simplemapi.cxx2
-rw-r--r--shell/source/win32/simplemail/smplmailsuppl.cxx2
-rw-r--r--shell/source/win32/zipfile/zipfile.cxx6
35 files changed, 300 insertions, 264 deletions
diff --git a/shell/inc/basereader.hxx b/shell/inc/basereader.hxx
index 125f49d9773f..0acd5e9e615d 100644
--- a/shell/inc/basereader.hxx
+++ b/shell/inc/basereader.hxx
@@ -28,6 +28,7 @@
#include "xml_parser.hxx"
#include "zipfile.hxx"
+#include <filepath.hxx>
class CBaseReader : public i_xml_parser_event_handler
{
@@ -35,7 +36,7 @@ public:
virtual ~CBaseReader() override;
protected: // protected because its only an implementation relevant class
- CBaseReader( const std::string& DocumentName );
+ CBaseReader( const Filepath_t& DocumentName );
CBaseReader( StreamInterface *stream );
diff --git a/shell/inc/contentreader.hxx b/shell/inc/contentreader.hxx
index d73f4d093741..d2d943e5517d 100644
--- a/shell/inc/contentreader.hxx
+++ b/shell/inc/contentreader.hxx
@@ -22,6 +22,7 @@
#include "basereader.hxx"
#include <stack>
+#include <filepath.hxx>
class ITag;
class StreamInterface;
@@ -31,7 +32,7 @@ class CContentReader : public CBaseReader
public:
virtual ~CContentReader() override;
- CContentReader( const std::string& DocumentName, LocaleSet_t const & DocumentLocale );
+ CContentReader( const Filepath_t& DocumentName, LocaleSet_t const & DocumentLocale );
CContentReader( StreamInterface* stream, LocaleSet_t const & DocumentLocale );
diff --git a/shell/inc/fileextensions.hxx b/shell/inc/fileextensions.hxx
index 0c46a40dd1af..677a7b58a9ea 100644
--- a/shell/inc/fileextensions.hxx
+++ b/shell/inc/fileextensions.hxx
@@ -23,6 +23,7 @@
#include "global.hxx"
#include <string>
+#include <filepath.hxx>
// A simple table with information about the currently used OO file extensions
// for instance ".sxw" and information about windows registry keys which are
@@ -34,20 +35,19 @@
*/
struct FileExtensionEntry
{
- const char* ExtensionAnsi; // e.g. ".sxw"
- const wchar_t* ExtensionUnicode; // e.g. L".sxw"
- const char* RegistryForwardKey; // e.g. "soffice.StarWriterDocument.6"
+ const char* ExtensionA; // e.g. ".sxw"
+ const wchar_t* ExtensionU; // e.g. L".sxw"
+ const wchar_t* RegistryForwardKey; // e.g. "soffice.StarWriterDocument.6"
};
extern const FileExtensionEntry OOFileExtensionTable[];
extern const size_t OOFileExtensionTableSize;
-
/** Return the extension of a file
name without the '.'
*/
-std::string get_file_name_extension(const std::string& file_name);
+Filepath_t get_file_name_extension(const Filepath_t& file_name);
/** Return the type of a file
@@ -55,7 +55,7 @@ std::string get_file_name_extension(const std::string& file_name);
enum File_Type_t { UNKNOWN, WRITER, CALC, DRAW, IMPRESS, MATH, WEB, DATABASE };
-File_Type_t get_file_type(const std::string& file_name);
+File_Type_t get_file_type(const Filepath_t& file_name);
#endif
diff --git a/shell/inc/filepath.hxx b/shell/inc/filepath.hxx
new file mode 100644
index 000000000000..cc1d42a1ccef
--- /dev/null
+++ b/shell/inc/filepath.hxx
@@ -0,0 +1,29 @@
+/* -*- 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_SHELL_INC_INTERNAL_FILEPATH_HXX
+#define INCLUDED_SHELL_INC_INTERNAL_FILEPATH_HXX
+
+
+// typedefs to allow using Unicode paths on Windows
+
+
+#include <string>
+
+#if defined _WIN32
+typedef wchar_t Filepath_char_t;
+typedef std::wstring Filepath_t;
+#else
+typedef char Filepath_char_t;
+typedef std::string Filepath_t;
+#endif
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/shell/inc/infotips.hxx b/shell/inc/infotips.hxx
index df583614557c..a14569baf1c6 100644
--- a/shell/inc/infotips.hxx
+++ b/shell/inc/infotips.hxx
@@ -30,6 +30,7 @@
#pragma warning(pop)
#endif
#include <string>
+#include <filepath.hxx>
class CInfoTip : public IQueryInfo, public IPersistFile
{
@@ -84,9 +85,9 @@ public:
/* [out] */ LPOLESTR __RPC_FAR *ppszFileName) override;
private:
- long m_RefCnt;
- char m_szFileName[MAX_PATH];
- std::wstring m_FileNameOnly;
+ long m_RefCnt;
+ Filepath_char_t m_szFileName[MAX_PATH];
+ std::wstring m_FileNameOnly;
};
#endif
diff --git a/shell/inc/metainforeader.hxx b/shell/inc/metainforeader.hxx
index 3b82af374dd3..436a70f287d8 100644
--- a/shell/inc/metainforeader.hxx
+++ b/shell/inc/metainforeader.hxx
@@ -23,6 +23,7 @@
#include "basereader.hxx"
#include "types.hxx"
#include <stack>
+#include <filepath.hxx>
class ITag;
class CKeywordsTag;
@@ -34,7 +35,7 @@ class CMetaInfoReader : public CBaseReader
public:
virtual ~CMetaInfoReader() override;
- CMetaInfoReader( const std::string& DocumentName );
+ CMetaInfoReader( const Filepath_t& DocumentName );
CMetaInfoReader( StreamInterface* stream );
diff --git a/shell/inc/propsheets.hxx b/shell/inc/propsheets.hxx
index 53423733c298..8bb77bac45bc 100644
--- a/shell/inc/propsheets.hxx
+++ b/shell/inc/propsheets.hxx
@@ -31,6 +31,7 @@
#endif
#include <string>
#include <memory>
+#include <filepath.hxx>
class CPropertySheet : public IShellExtInit, public IShellPropSheetExt
{
@@ -80,7 +81,7 @@ private:
private:
long m_RefCnt;
- char m_szFileName[MAX_PATH];
+ Filepath_char_t m_szFileName[MAX_PATH];
};
#endif
diff --git a/shell/inc/registry.hxx b/shell/inc/registry.hxx
index 5738064658e8..4a6d6c843c89 100644
--- a/shell/inc/registry.hxx
+++ b/shell/inc/registry.hxx
@@ -32,30 +32,31 @@
#pragma warning(pop)
#endif
#include <string>
+#include <filepath.hxx>
/** Sets a value of the specified registry key, an empty ValueName sets the default
value
Returns true on success
*/
-bool SetRegistryKey(HKEY RootKey, const char* KeyName, const char* ValueName, const char* Value);
+bool SetRegistryKey(HKEY RootKey, const Filepath_char_t* KeyName, const Filepath_char_t* ValueName, const Filepath_char_t* Value);
/** Deletes the specified registry key and all of its subkeys
Returns true on success
*/
-bool DeleteRegistryKey(HKEY RootKey, const char* KeyName);
+bool DeleteRegistryKey(HKEY RootKey, const Filepath_char_t* KeyName);
/** May be used to determine if the specified registry key has subkeys
The function returns true on success else if an error occurs false
*/
-bool HasSubkeysRegistryKey(HKEY RootKey, const char* KeyName, bool& bResult);
+bool HasSubkeysRegistryKey(HKEY RootKey, const Filepath_char_t* KeyName, bool& bResult);
/** Converts a GUID to its string representation
*/
-std::string ClsidToString(const CLSID& clsid);
+Filepath_t ClsidToString(const CLSID& clsid);
/** Get the content of a specific key.
*/
-bool QueryRegistryKey(HKEY RootKey, const char* KeyName, const char* ValueName, char *pszData, DWORD dwBufLen);
+bool QueryRegistryKey(HKEY RootKey, const Filepath_char_t* KeyName, const Filepath_char_t* ValueName, Filepath_char_t *pszData, DWORD dwBufLen);
#endif
diff --git a/shell/inc/stream_helper.hxx b/shell/inc/stream_helper.hxx
index 2fad7bc88eca..65667d6fe6ce 100644
--- a/shell/inc/stream_helper.hxx
+++ b/shell/inc/stream_helper.hxx
@@ -21,6 +21,7 @@
#define INCLUDED_SHELL_INC_INTERNAL_STREAM_HELPER_HXX
#include "types.hxx"
+#include <filepath.hxx>
struct IStream;
@@ -39,7 +40,7 @@ private:
class FileStream : public StreamInterface
{
public:
- FileStream(const char *filename);
+ FileStream(const Filepath_char_t *filename);
~FileStream() override;
unsigned long sread (unsigned char *buf, unsigned long size) override;
long stell () override;
diff --git a/shell/inc/utilities.hxx b/shell/inc/utilities.hxx
index d72f6b66fdd9..eb6c289d5023 100644
--- a/shell/inc/utilities.hxx
+++ b/shell/inc/utilities.hxx
@@ -92,18 +92,18 @@ LCID LocaleSetToLCID( const LocaleSet_t & Locale );
#ifdef DEBUG
-inline void OutputDebugStringFormatA( LPCSTR pFormat, ... )
+inline void OutputDebugStringFormatW( LPCWSTR pFormat, ... )
{
- CHAR buffer[1024];
+ WCHAR buffer[1024];
va_list args;
va_start( args, pFormat );
- StringCchVPrintfA( buffer, sizeof(buffer), pFormat, args );
+ StringCchVPrintfW( buffer, sizeof(buffer)/sizeof(*buffer), pFormat, args );
va_end( args );
- OutputDebugStringA( buffer );
+ OutputDebugStringW( buffer );
}
#else
-static inline void OutputDebugStringFormatA( LPCSTR, ... )
+static inline void OutputDebugStringFormatW( LPCWSTR, ... )
{
}
#endif
diff --git a/shell/inc/zipfile.hxx b/shell/inc/zipfile.hxx
index 4f4b4c2331b1..4e31ca7ef246 100644
--- a/shell/inc/zipfile.hxx
+++ b/shell/inc/zipfile.hxx
@@ -25,6 +25,7 @@
#include <string>
#include <vector>
#include <memory>
+#include <filepath.hxx>
class StreamInterface;
@@ -34,7 +35,6 @@ class StreamInterface;
class ZipFile
{
public:
-
typedef std::vector<std::string> Directory_t;
typedef std::unique_ptr<Directory_t> DirectoryPtr_t;
typedef std::vector<char> ZipContentBuffer_t;
@@ -54,7 +54,7 @@ public:
IOException if the specified file doesn't exist
AccessViolationException if read access to the file is denied
*/
- static bool IsZipFile(const std::string &FileName);
+ static bool IsZipFile(const Filepath_t &FileName);
static bool IsZipFile(void *stream);
@@ -74,7 +74,7 @@ public:
IOException if the specified file doesn't exist or is no zip file
AccessViolationException if read access to the file is denied
*/
- static bool IsValidZipFileVersionNumber(const std::string &FileName);
+ static bool IsValidZipFileVersionNumber(const Filepath_t &FileName);
static bool IsValidZipFileVersionNumber(void *stream);
@@ -92,7 +92,7 @@ public:
WrongZipVersionException if the zip file cannot be uncompressed
with the used zlib version
*/
- ZipFile(const std::string &FileName);
+ ZipFile(const Filepath_t &FileName);
ZipFile(StreamInterface *stream);
diff --git a/shell/qa/zip/ziptest.cxx b/shell/qa/zip/ziptest.cxx
index 2bcfef30c84e..f554e6da71d0 100644
--- a/shell/qa/zip/ziptest.cxx
+++ b/shell/qa/zip/ziptest.cxx
@@ -42,7 +42,7 @@ using namespace std;
class Test : public CppUnit::TestFixture
{
private:
- string documentName;
+ wstring documentName;
LPSTREAM pStream;
public:
Test();
@@ -66,16 +66,16 @@ CPPUNIT_TEST_SUITE_REGISTRATION(Test);
Test::Test() : documentName(), pStream(nullptr)
{
- const char* pSrcRoot = getenv( "SRC_ROOT" );
+ const wchar_t* pSrcRoot = _wgetenv(L"SRC_ROOT");
if (pSrcRoot)
{
documentName.append(pSrcRoot);
- documentName.append("/");
+ documentName.append(L"/");
}
- documentName.append("shell/qa/zip/simpledocument.odt");
+ documentName.append(L"shell/qa/zip/simpledocument.odt");
// Create an IStream pointer from the file
- HANDLE hFile = CreateFileA(documentName.c_str(), GENERIC_READ, 0, nullptr, OPEN_EXISTING, 0, nullptr);
+ HANDLE hFile = CreateFileW(documentName.c_str(), GENERIC_READ, 0, nullptr, OPEN_EXISTING, 0, nullptr);
DWORD dwFileSize = GetFileSize(hFile, nullptr);
HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, dwFileSize);
diff --git a/shell/source/backends/localebe/localebackend.cxx b/shell/source/backends/localebe/localebackend.cxx
index ff9b81b406b6..0b896a3fadc6 100644
--- a/shell/source/backends/localebe/localebackend.cxx
+++ b/shell/source/backends/localebe/localebackend.cxx
@@ -44,17 +44,17 @@
css::beans::Optional<css::uno::Any> ImplGetLocale(LCID lcid)
{
- CHAR buffer[8];
- PSTR cp = buffer;
+ WCHAR buffer[8];
+ PWSTR cp = buffer;
- cp += GetLocaleInfoA( lcid, LOCALE_SISO639LANGNAME , buffer, 4 );
+ cp += GetLocaleInfoW( lcid, LOCALE_SISO639LANGNAME, buffer, 4 );
if( cp > buffer )
{
- if( 0 < GetLocaleInfoA( lcid, LOCALE_SISO3166CTRYNAME, cp, buffer + 8 - cp) )
+ if( 0 < GetLocaleInfoW( lcid, LOCALE_SISO3166CTRYNAME, cp, buffer + 8 - cp) )
// #i50822# minus character must be written before cp
*(cp - 1) = '-';
- return {true, css::uno::Any(OUString::createFromAscii(buffer))};
+ return {true, css::uno::Any(OUString(SAL_U(buffer)))};
}
return {false, {}};
diff --git a/shell/source/backends/wininetbe/wininetbackend.cxx b/shell/source/backends/wininetbe/wininetbackend.cxx
index 9f4f2d8f9556..56b85de4befc 100644
--- a/shell/source/backends/wininetbe/wininetbackend.cxx
+++ b/shell/source/backends/wininetbe/wininetbackend.cxx
@@ -35,7 +35,7 @@
#pragma warning(pop)
#endif
-#define WININET_DLL_NAME "wininet.dll"
+#define WININET_DLL_NAME L"wininet.dll"
#define EQUAL_SIGN '='
#define COLON ':'
#define SPACE ' '
@@ -102,14 +102,14 @@ namespace
WinInetBackend::WinInetBackend()
{
- Library hWinInetDll( LoadLibrary( WININET_DLL_NAME ) );
+ Library hWinInetDll( LoadLibraryW( WININET_DLL_NAME ) );
if( hWinInetDll.module )
{
typedef BOOL ( WINAPI *InternetQueryOption_Proc_T )( HINTERNET, DWORD, LPVOID, LPDWORD );
InternetQueryOption_Proc_T lpfnInternetQueryOption =
reinterpret_cast< InternetQueryOption_Proc_T >(
- GetProcAddress( hWinInetDll.module, "InternetQueryOptionA" ) );
+ GetProcAddress( hWinInetDll.module, "InternetQueryOptionW" ) );
if (lpfnInternetQueryOption)
{
// Some Windows versions would fail the InternetQueryOption call
@@ -120,7 +120,7 @@ WinInetBackend::WinInetBackend()
// reallocation:
INTERNET_PROXY_INFO pi;
LPINTERNET_PROXY_INFO lpi = &pi;
- DWORD dwLength = sizeof (INTERNET_PROXY_INFO);
+ DWORD dwLength = sizeof (pi);
BOOL ok = lpfnInternetQueryOption(
nullptr,
INTERNET_OPTION_PROXY,
@@ -165,8 +165,10 @@ WinInetBackend::WinInetBackend()
// an empty proxy list, so we don't have to check if
// proxy is enabled or not
- OUString aProxyList = OUString::createFromAscii( lpi->lpszProxy );
- OUString aProxyBypassList = OUString::createFromAscii( lpi->lpszProxyBypass );
+ // We use a W-version of InternetQueryOption; it returns struct with pointers to wide strings
+ // There's no INTERNET_PROXY_INFOW, so we simply cast returned struct's members
+ OUString aProxyList = reinterpret_cast<const sal_Unicode*>( lpi->lpszProxy );
+ OUString aProxyBypassList = reinterpret_cast<const sal_Unicode*>( lpi->lpszProxyBypass );
// override default for ProxyType, which is "0" meaning "No proxies".
valueProxyType_.IsPresent = true;
diff --git a/shell/source/tools/regsvrex/regsvrex.cxx b/shell/source/tools/regsvrex/regsvrex.cxx
index 0add6ae1788e..032267f4dcfc 100644
--- a/shell/source/tools/regsvrex/regsvrex.cxx
+++ b/shell/source/tools/regsvrex/regsvrex.cxx
@@ -30,19 +30,19 @@
typedef HRESULT (__stdcall *lpfnDllRegisterServer)();
typedef HRESULT (__stdcall *lpfnDllUnregisterServer)();
-bool IsUnregisterParameter(const char* Param)
+bool IsUnregisterParameter(const wchar_t* Param)
{
- return ((0 == _stricmp(Param, "/u")) ||
- (0 == _stricmp(Param, "-u")));
+ return ((0 == _wcsicmp(Param, L"/u")) ||
+ (0 == _wcsicmp(Param, L"-u")));
}
-int main(int argc, char* argv[])
+int wmain(int argc, wchar_t* argv[])
{
HMODULE hmod;
if (2 == argc)
{
- hmod = LoadLibraryA(argv[1]);
+ hmod = LoadLibraryW(argv[1]);
if (hmod)
{
@@ -57,7 +57,7 @@ int main(int argc, char* argv[])
}
else if (3 == argc && IsUnregisterParameter(argv[1]))
{
- hmod = LoadLibraryA(argv[2]);
+ hmod = LoadLibraryW(argv[2]);
if (hmod)
{
diff --git a/shell/source/win32/SysShExec.cxx b/shell/source/win32/SysShExec.cxx
index 15f063d0d23c..3b569ed7c7c1 100644
--- a/shell/source/win32/SysShExec.cxx
+++ b/shell/source/win32/SysShExec.cxx
@@ -297,8 +297,8 @@ void SAL_CALL CSysShExec::execute( const OUString& aCommand, const OUString& aPa
ZeroMemory(&sei, sizeof( sei));
sei.cbSize = sizeof(sei);
- sei.lpFile = reinterpret_cast<LPCWSTR>(preprocessed_command.getStr());
- sei.lpParameters = reinterpret_cast<LPCWSTR>(aParameter.getStr());
+ sei.lpFile = SAL_W(preprocessed_command.getStr());
+ sei.lpParameters = SAL_W(aParameter.getStr());
sei.nShow = SW_SHOWNORMAL;
if (NO_SYSTEM_ERROR_MESSAGE & nFlags)
diff --git a/shell/source/win32/ooofilereader/basereader.cxx b/shell/source/win32/ooofilereader/basereader.cxx
index 9b05cc5a7c99..e4a64e3384c0 100644
--- a/shell/source/win32/ooofilereader/basereader.cxx
+++ b/shell/source/win32/ooofilereader/basereader.cxx
@@ -26,7 +26,7 @@
/** constructor of CBaseReader.
*/
-CBaseReader::CBaseReader(const std::string& DocumentName):
+CBaseReader::CBaseReader(const std::wstring& DocumentName):
m_ZipFile( DocumentName )
{
}
diff --git a/shell/source/win32/ooofilereader/contentreader.cxx b/shell/source/win32/ooofilereader/contentreader.cxx
index 1ecaf60a9c18..68781097dada 100644
--- a/shell/source/win32/ooofilereader/contentreader.cxx
+++ b/shell/source/win32/ooofilereader/contentreader.cxx
@@ -26,7 +26,7 @@
/** constructor.
*/
-CContentReader::CContentReader( const std::string& DocumentName, LocaleSet_t const & DocumentLocale ):
+CContentReader::CContentReader( const std::wstring& DocumentName, LocaleSet_t const & DocumentLocale ):
CBaseReader( DocumentName )
{
try
diff --git a/shell/source/win32/ooofilereader/metainforeader.cxx b/shell/source/win32/ooofilereader/metainforeader.cxx
index 2b523d6e9aaf..afdf3418fd07 100644
--- a/shell/source/win32/ooofilereader/metainforeader.cxx
+++ b/shell/source/win32/ooofilereader/metainforeader.cxx
@@ -26,7 +26,7 @@
/** constructor.
*/
-CMetaInfoReader::CMetaInfoReader( const std::string& DocumentName ):
+CMetaInfoReader::CMetaInfoReader( const std::wstring& DocumentName ):
CBaseReader( DocumentName )
{
try
diff --git a/shell/source/win32/shlxthandler/columninfo/columninfo.cxx b/shell/source/win32/shlxthandler/columninfo/columninfo.cxx
index 7f91a1f01c6f..933d695f98fe 100644
--- a/shell/source/win32/shlxthandler/columninfo/columninfo.cxx
+++ b/shell/source/win32/shlxthandler/columninfo/columninfo.cxx
@@ -45,7 +45,7 @@ bool IsOOFileExtension(wchar_t const * Extension)
{
for (size_t i = 0; i < OOFileExtensionTableSize; i++)
{
- if (0 == _wcsicmp(Extension, OOFileExtensionTable[i].ExtensionUnicode))
+ if (0 == _wcsicmp(Extension, OOFileExtensionTable[i].ExtensionU))
return true;
}
@@ -139,7 +139,7 @@ HRESULT STDMETHODCALLTYPE CColumnInfo::GetItemData(LPCSHCOLUMNID pscid, LPCSHCOL
{
std::wstring fname = getShortPathName( std::wstring( pscd->wszFile ) );
- CMetaInfoReader meta_info_accessor(WStringToString(fname));
+ CMetaInfoReader meta_info_accessor(fname);
VariantClear(pvarData);
diff --git a/shell/source/win32/shlxthandler/infotips/infotips.cxx b/shell/source/win32/shlxthandler/infotips/infotips.cxx
index 7985cb19bc25..c15f9723deb7 100644
--- a/shell/source/win32/shlxthandler/infotips/infotips.cxx
+++ b/shell/source/win32/shlxthandler/infotips/infotips.cxx
@@ -101,23 +101,23 @@ ULONG STDMETHODCALLTYPE CInfoTip::Release()
/** get file type information from registry.
*/
-std::wstring getFileTypeInfo(const std::string& file_extension)
+std::wstring getFileTypeInfo(const std::wstring& file_extension)
{
- char extKeyValue[MAX_STRING];
- char typeKeyValue[MAX_STRING];
- ::std::string sDot(".");
- if (QueryRegistryKey(HKEY_CLASSES_ROOT, (sDot.append(file_extension)).c_str(), "", extKeyValue, MAX_STRING))
- if (QueryRegistryKey( HKEY_CLASSES_ROOT, extKeyValue, "",typeKeyValue, MAX_STRING))
- return StringToWString(typeKeyValue);
+ wchar_t extKeyValue[MAX_STRING];
+ wchar_t typeKeyValue[MAX_STRING];
+ ::std::wstring sDot(L".");
+ if (QueryRegistryKey(HKEY_CLASSES_ROOT, (sDot.append(file_extension)).c_str(), L"", extKeyValue, MAX_STRING))
+ if (QueryRegistryKey( HKEY_CLASSES_ROOT, extKeyValue, L"",typeKeyValue, MAX_STRING))
+ return typeKeyValue;
return EMPTY_STRING;
}
/** get file size.
*/
-DWORD getSizeOfFile( char const * FileName )
+DWORD getSizeOfFile( wchar_t const * FileName )
{
- HANDLE hFile = CreateFile(StringToWString(FileName).c_str(), // open file
+ HANDLE hFile = CreateFileW(FileName, // open file
GENERIC_READ, // open for reading
FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE, // share for all operations
nullptr, // no security
@@ -178,7 +178,7 @@ std::wstring formatSizeOfFile( DWORD dwSize )
/** get file size information.
*/
-std::wstring getFileSizeInfo(char const * FileName)
+std::wstring getFileSizeInfo(wchar_t const * FileName)
{
DWORD dwSize=getSizeOfFile(FileName);
if (dwSize != INVALID_FILE_SIZE)
@@ -329,13 +329,11 @@ HRESULT STDMETHODCALLTYPE CInfoTip::Load(LPCOLESTR pszFileName, DWORD /*dwMode*/
fname = getShortPathName( fname );
- std::string fnameA = WStringToString(fname);
-
// ZeroMemory because strncpy doesn't '\0'-terminates the destination
// string; reserve the last place in the buffer for the final '\0'
// that's why '(sizeof(m_szFileName) - 1)'
ZeroMemory(m_szFileName, sizeof(m_szFileName));
- strncpy(m_szFileName, fnameA.c_str(), (sizeof(m_szFileName) - 1));
+ wcsncpy(m_szFileName, fname.c_str(), (sizeof(m_szFileName)/sizeof(*m_szFileName) - 1));
return S_OK;
}
diff --git a/shell/source/win32/shlxthandler/ooofilt/ooofilt.cxx b/shell/source/win32/shlxthandler/ooofilt/ooofilt.cxx
index c1df310962cc..f74473b5e3f4 100644
--- a/shell/source/win32/shlxthandler/ooofilt/ooofilt.cxx
+++ b/shell/source/win32/shlxthandler/ooofilt/ooofilt.cxx
@@ -571,10 +571,10 @@ SCODE STDMETHODCALLTYPE COooFilter::Load(LPCWSTR pszFileName, DWORD /*dwMode*/)
try
{
delete m_pMetaInfoReader;
- m_pMetaInfoReader = new CMetaInfoReader(WStringToString(m_pwszFileName));
+ m_pMetaInfoReader = new CMetaInfoReader(m_pwszFileName);
delete m_pContentReader;
- m_pContentReader = new CContentReader(WStringToString(m_pwszFileName), m_pMetaInfoReader->getDefaultLocale());
+ m_pContentReader = new CContentReader(m_pwszFileName, m_pMetaInfoReader->getDefaultLocale());
}
catch (const std::exception&)
{
diff --git a/shell/source/win32/shlxthandler/ooofilt/stream_helper.cxx b/shell/source/win32/shlxthandler/ooofilt/stream_helper.cxx
index 5d8e67c58b0f..133dcd1d8008 100644
--- a/shell/source/win32/shlxthandler/ooofilt/stream_helper.cxx
+++ b/shell/source/win32/shlxthandler/ooofilt/stream_helper.cxx
@@ -106,11 +106,11 @@ long BufferStream::sseek (long offset, int origin)
return -1;
}
-FileStream::FileStream(const char *filename) :
+FileStream::FileStream(const wchar_t *filename) :
file(nullptr)
{
// fdo#67534: avoid locking to not interfere with soffice opening the file
- file = _fsopen(filename, "rb", _SH_DENYNO);
+ file = _wfsopen(filename, L"rb", _SH_DENYNO);
}
FileStream::~FileStream()
diff --git a/shell/source/win32/shlxthandler/prophdl/propertyhdl.cxx b/shell/source/win32/shlxthandler/prophdl/propertyhdl.cxx
index 340985a0f239..41b100413f14 100644
--- a/shell/source/win32/shlxthandler/prophdl/propertyhdl.cxx
+++ b/shell/source/win32/shlxthandler/prophdl/propertyhdl.cxx
@@ -63,7 +63,7 @@ CPropertyHdl::CPropertyHdl( long nRefCnt ) :
m_RefCnt( nRefCnt ),
m_pCache( nullptr )
{
- OutputDebugStringFormatA( "CPropertyHdl: CTOR\n" );
+ OutputDebugStringFormatW( L"CPropertyHdl: CTOR\n" );
InterlockedIncrement( &g_DllRefCnt );
}
@@ -87,7 +87,7 @@ HRESULT STDMETHODCALLTYPE CPropertyHdl::QueryInterface(REFIID riid, void __RPC_F
if (IID_IUnknown == riid || IID_IPropertyStore == riid)
{
- OutputDebugStringFormatA( "CPropertyHdl: QueryInterface (IID_IPropertyStore)\n" );
+ OutputDebugStringFormatW( L"CPropertyHdl: QueryInterface (IID_IPropertyStore)\n" );
IUnknown* pUnk = static_cast<IPropertyStore*>(this);
pUnk->AddRef();
*ppvObject = pUnk;
@@ -95,7 +95,7 @@ HRESULT STDMETHODCALLTYPE CPropertyHdl::QueryInterface(REFIID riid, void __RPC_F
}
else if (IID_IPropertyStoreCapabilities == riid)
{
- OutputDebugStringFormatA( "CPropertyHdl: QueryInterface (IID_IPropertyStoreCapabilities)\n" );
+ OutputDebugStringFormatW( L"CPropertyHdl: QueryInterface (IID_IPropertyStoreCapabilities)\n" );
IUnknown* pUnk = static_cast<IPropertyStore*>(this);
pUnk->AddRef();
*ppvObject = pUnk;
@@ -103,13 +103,13 @@ HRESULT STDMETHODCALLTYPE CPropertyHdl::QueryInterface(REFIID riid, void __RPC_F
}
else if (IID_IInitializeWithStream == riid)
{
- OutputDebugStringFormatA( "CPropertyHdl: QueryInterface (IID_IInitializeWithStream)\n" );
+ OutputDebugStringFormatW( L"CPropertyHdl: QueryInterface (IID_IInitializeWithStream)\n" );
IUnknown* pUnk = static_cast<IInitializeWithStream*>(this);
pUnk->AddRef();
*ppvObject = pUnk;
return S_OK;
}
- OutputDebugStringFormatA( "CPropertyHdl: QueryInterface (something different)\n" );
+ OutputDebugStringFormatW( L"CPropertyHdl: QueryInterface (something different)\n" );
return E_NOINTERFACE;
}
@@ -208,7 +208,7 @@ HRESULT STDMETHODCALLTYPE CPropertyHdl::Initialize( IStream *pStream, DWORD grfM
if ( !m_pCache )
{
if ( FAILED( PSCreateMemoryPropertyStore( IID_PPV_ARGS( &m_pCache ) ) ) )
- OutputDebugStringFormatA( "CPropertyHdl::Initialize: PSCreateMemoryPropertyStore failed" );
+ OutputDebugStringFormatW( L"CPropertyHdl::Initialize: PSCreateMemoryPropertyStore failed" );
BufferStream tmpStream(pStream);
@@ -222,7 +222,9 @@ HRESULT STDMETHODCALLTYPE CPropertyHdl::Initialize( IStream *pStream, DWORD grfM
}
catch (const std::exception& e)
{
- OutputDebugStringFormatA( "CPropertyHdl::Initialize: Caught exception [%s]", e.what() );
+ // To output 8-bit string using unicode version of formatting functions, use capital %S type
+ // see https://msdn.microsoft.com/en-us/library/hf4y5e3w
+ OutputDebugStringFormatW( L"CPropertyHdl::Initialize: Caught exception [%S]", e.what() );
return E_FAIL;
}
}
@@ -238,37 +240,37 @@ HRESULT GetItemData( CMetaInfoReader *pMetaInfoReader, UINT nIndex, PROPVARIANT
case 0: {
pVarData->vt = VT_BSTR;
pVarData->bstrVal = SysAllocString( pMetaInfoReader->getTagData( META_INFO_TITLE ).c_str() );
- OutputDebugStringFormatA( "CPropertyHdl::GetItemData: Title=%S.\n", pMetaInfoReader->getTagData( META_INFO_TITLE ).c_str() );
+ OutputDebugStringFormatW( L"CPropertyHdl::GetItemData: Title=%s.\n", pMetaInfoReader->getTagData( META_INFO_TITLE ).c_str() );
return S_OK;
}
case 1: {
pVarData->vt = VT_BSTR;
pVarData->bstrVal = SysAllocString( pMetaInfoReader->getTagData( META_INFO_AUTHOR ).c_str() );
- OutputDebugStringFormatA( "CPropertyHdl::GetItemData: Author=%S.\n", pMetaInfoReader->getTagData( META_INFO_AUTHOR ).c_str() );
+ OutputDebugStringFormatW( L"CPropertyHdl::GetItemData: Author=%s.\n", pMetaInfoReader->getTagData( META_INFO_AUTHOR ).c_str() );
return S_OK;
}
case 2: {
pVarData->vt = VT_BSTR;
pVarData->bstrVal = SysAllocString( pMetaInfoReader->getTagData( META_INFO_SUBJECT ).c_str() );
- OutputDebugStringFormatA( "CPropertyHdl::GetItemData: Subject=%S.\n", pMetaInfoReader->getTagData( META_INFO_SUBJECT ).c_str() );
+ OutputDebugStringFormatW( L"CPropertyHdl::GetItemData: Subject=%s.\n", pMetaInfoReader->getTagData( META_INFO_SUBJECT ).c_str() );
return S_OK;
}
case 3: {
pVarData->vt = VT_BSTR;
pVarData->bstrVal = SysAllocString( pMetaInfoReader->getTagData( META_INFO_KEYWORDS ).c_str() );
- OutputDebugStringFormatA( "CPropertyHdl::GetItemData: Keywords=%S.\n", pMetaInfoReader->getTagData( META_INFO_KEYWORDS ).c_str() );
+ OutputDebugStringFormatW( L"CPropertyHdl::GetItemData: Keywords=%s.\n", pMetaInfoReader->getTagData( META_INFO_KEYWORDS ).c_str() );
return S_OK;
}
case 4: {
pVarData->vt = VT_BSTR;
pVarData->bstrVal = SysAllocString( pMetaInfoReader->getTagData( META_INFO_DESCRIPTION ).c_str() );
- OutputDebugStringFormatA( "CPropertyHdl::GetItemData: Description=%S.\n", pMetaInfoReader->getTagData( META_INFO_DESCRIPTION ).c_str() );
+ OutputDebugStringFormatW( L"CPropertyHdl::GetItemData: Description=%s.\n", pMetaInfoReader->getTagData( META_INFO_DESCRIPTION ).c_str() );
return S_OK;
}
case 5: {
pVarData->vt = VT_BSTR;
pVarData->bstrVal = SysAllocString( pMetaInfoReader->getTagAttribute( META_INFO_DOCUMENT_STATISTIC, META_INFO_PAGES ).c_str() );
- OutputDebugStringFormatA( "CPropertyHdl::GetItemData: Pages=%S.\n", pMetaInfoReader->getTagAttribute( META_INFO_DOCUMENT_STATISTIC, META_INFO_PAGES ).c_str() );
+ OutputDebugStringFormatW( L"CPropertyHdl::GetItemData: Pages=%s.\n", pMetaInfoReader->getTagAttribute( META_INFO_DOCUMENT_STATISTIC, META_INFO_PAGES ).c_str() );
return S_OK;
}
}
@@ -280,7 +282,7 @@ HRESULT GetItemData( CMetaInfoReader *pMetaInfoReader, UINT nIndex, PROPVARIANT
void CPropertyHdl::LoadProperties( CMetaInfoReader *pMetaInfoReader )
{
- OutputDebugStringFormatA( "CPropertyHdl: LoadProperties\n" );
+ OutputDebugStringFormatW( L"CPropertyHdl: LoadProperties\n" );
PROPVARIANT propvarValues;
for ( UINT i = 0; i < (UINT)gPropertyMapTableSize; ++i )
@@ -403,7 +405,7 @@ bool CClassFactory::IsLocked()
STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, void** ppv)
{
- OutputDebugStringFormatA( "DllGetClassObject.\n" );
+ OutputDebugStringFormatW( L"DllGetClassObject.\n" );
*ppv = nullptr;
if ( rclsid != CLSID_PROPERTY_HANDLER )
@@ -420,7 +422,7 @@ STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, void** ppv)
STDAPI DllCanUnloadNow()
{
- OutputDebugStringFormatA( "DllCanUnloadNow.\n" );
+ OutputDebugStringFormatW( L"DllCanUnloadNow.\n" );
if (CClassFactory::IsLocked() || g_DllRefCnt > 0)
return S_FALSE;
@@ -430,7 +432,7 @@ STDAPI DllCanUnloadNow()
BOOL WINAPI DllMain( HINSTANCE hInst, ULONG /*ul_reason_for_call*/, LPVOID /*lpReserved*/ )
{
- OutputDebugStringFormatA( "DllMain.\n" );
+ OutputDebugStringFormatW( L"DllMain.\n" );
g_hModule = hInst;
return TRUE;
}
diff --git a/shell/source/win32/shlxthandler/propsheets/document_statistic.cxx b/shell/source/win32/shlxthandler/propsheets/document_statistic.cxx
index 668f253a757a..ce1b74565393 100644
--- a/shell/source/win32/shlxthandler/propsheets/document_statistic.cxx
+++ b/shell/source/win32/shlxthandler/propsheets/document_statistic.cxx
@@ -31,7 +31,7 @@
const bool READONLY = false;
-document_statistic_reader_ptr create_document_statistic_reader(const std::string& document_name, CMetaInfoReader* meta_info_accessor)
+document_statistic_reader_ptr create_document_statistic_reader(const std::wstring& document_name, CMetaInfoReader* meta_info_accessor)
{
File_Type_t file_type = get_file_type(document_name);
@@ -44,7 +44,7 @@ document_statistic_reader_ptr create_document_statistic_reader(const std::string
}
-document_statistic_reader::document_statistic_reader(const std::string& document_name, CMetaInfoReader* meta_info_accessor) :
+document_statistic_reader::document_statistic_reader(const std::wstring& document_name, CMetaInfoReader* meta_info_accessor) :
document_name_(document_name),
meta_info_accessor_(meta_info_accessor)
{}
@@ -59,7 +59,7 @@ void document_statistic_reader::read(statistic_group_list_t* group_list)
fill_origin_section(meta_info_accessor_, group_list);
}
-std::string document_statistic_reader::get_document_name() const
+std::wstring document_statistic_reader::get_document_name() const
{
return document_name_;
}
@@ -81,7 +81,7 @@ void document_statistic_reader::fill_origin_section(CMetaInfoReader *meta_info_a
group_list->push_back(statistic_group_t(GetResString(IDS_ORIGIN), il));
}
-writer_document_statistic_reader::writer_document_statistic_reader(const std::string& document_name, CMetaInfoReader* meta_info_accessor) :
+writer_document_statistic_reader::writer_document_statistic_reader(const std::wstring& document_name, CMetaInfoReader* meta_info_accessor) :
document_statistic_reader(document_name, meta_info_accessor)
{}
@@ -105,7 +105,7 @@ void writer_document_statistic_reader::fill_description_section(CMetaInfoReader
}
calc_document_statistic_reader::calc_document_statistic_reader(
- const std::string& document_name, CMetaInfoReader* meta_info_accessor) :
+ const std::wstring& document_name, CMetaInfoReader* meta_info_accessor) :
document_statistic_reader(document_name, meta_info_accessor)
{}
@@ -126,7 +126,7 @@ void calc_document_statistic_reader::fill_description_section(
}
draw_impress_math_document_statistic_reader::draw_impress_math_document_statistic_reader(
- const std::string& document_name, CMetaInfoReader* meta_info_accessor) :
+ const std::wstring& document_name, CMetaInfoReader* meta_info_accessor) :
document_statistic_reader(document_name, meta_info_accessor)
{}
diff --git a/shell/source/win32/shlxthandler/propsheets/document_statistic.hxx b/shell/source/win32/shlxthandler/propsheets/document_statistic.hxx
index 93967a253668..424dbe4c4649 100644
--- a/shell/source/win32/shlxthandler/propsheets/document_statistic.hxx
+++ b/shell/source/win32/shlxthandler/propsheets/document_statistic.hxx
@@ -54,7 +54,7 @@ typedef std::vector<statistic_group_t> statistic_group_list_t;
class document_statistic_reader;
typedef std::unique_ptr<document_statistic_reader> document_statistic_reader_ptr;
-document_statistic_reader_ptr create_document_statistic_reader(const std::string& document_name, CMetaInfoReader* meta_info_accessor);
+document_statistic_reader_ptr create_document_statistic_reader(const std::wstring& document_name, CMetaInfoReader* meta_info_accessor);
class document_statistic_reader
@@ -64,57 +64,57 @@ public:
void read(statistic_group_list_t* group_list);
- std::string get_document_name() const;
+ std::wstring get_document_name() const;
protected:
- document_statistic_reader(const std::string& document_name, CMetaInfoReader* meta_info_accessor);
+ document_statistic_reader(const std::wstring& document_name, CMetaInfoReader* meta_info_accessor);
virtual void fill_description_section(CMetaInfoReader *meta_info_accessor,statistic_group_list_t* group_list) = 0;
virtual void fill_origin_section( CMetaInfoReader *meta_info_accessor,statistic_group_list_t* group_list);
private:
- std::string document_name_;
+ std::wstring document_name_;
CMetaInfoReader* meta_info_accessor_;
friend document_statistic_reader_ptr create_document_statistic_reader(
- const std::string& document_name, CMetaInfoReader* meta_info_accessor);
+ const std::wstring& document_name, CMetaInfoReader* meta_info_accessor);
};
class writer_document_statistic_reader : public document_statistic_reader
{
protected:
- writer_document_statistic_reader(const std::string& document_name, CMetaInfoReader* meta_info_accessor);
+ writer_document_statistic_reader(const std::wstring& document_name, CMetaInfoReader* meta_info_accessor);
virtual void fill_description_section(CMetaInfoReader *meta_info_accessor, statistic_group_list_t* group_list) override;
friend document_statistic_reader_ptr create_document_statistic_reader(
- const std::string& document_name, CMetaInfoReader* meta_info_accessor);
+ const std::wstring& document_name, CMetaInfoReader* meta_info_accessor);
};
class calc_document_statistic_reader : public document_statistic_reader
{
protected:
- calc_document_statistic_reader(const std::string& document_name, CMetaInfoReader* meta_info_accessor);
+ calc_document_statistic_reader(const std::wstring& document_name, CMetaInfoReader* meta_info_accessor);
virtual void fill_description_section( CMetaInfoReader *meta_info_accessor,statistic_group_list_t* group_list) override;
friend document_statistic_reader_ptr create_document_statistic_reader(
- const std::string& document_name, CMetaInfoReader* meta_info_accessor);
+ const std::wstring& document_name, CMetaInfoReader* meta_info_accessor);
};
class draw_impress_math_document_statistic_reader : public document_statistic_reader
{
protected:
- draw_impress_math_document_statistic_reader(const std::string& document_name, CMetaInfoReader* meta_info_accessor);
+ draw_impress_math_document_statistic_reader(const std::wstring& document_name, CMetaInfoReader* meta_info_accessor);
virtual void fill_description_section(CMetaInfoReader *meta_info_accessor, statistic_group_list_t* group_list) override;
friend document_statistic_reader_ptr create_document_statistic_reader(
- const std::string& document_name, CMetaInfoReader* meta_info_accessor);
+ const std::wstring& document_name, CMetaInfoReader* meta_info_accessor);
};
#endif
diff --git a/shell/source/win32/shlxthandler/propsheets/propsheets.cxx b/shell/source/win32/shlxthandler/propsheets/propsheets.cxx
index a6802ff787ad..4c9fff083d14 100644
--- a/shell/source/win32/shlxthandler/propsheets/propsheets.cxx
+++ b/shell/source/win32/shlxthandler/propsheets/propsheets.cxx
@@ -57,14 +57,14 @@
CPropertySheet::CPropertySheet(long RefCnt) :
m_RefCnt(RefCnt)
{
- OutputDebugStringFormatA("CPropertySheet::CTor [%d], [%d]", m_RefCnt, g_DllRefCnt );
+ OutputDebugStringFormatW(L"CPropertySheet::CTor [%d], [%d]", m_RefCnt, g_DllRefCnt );
InterlockedIncrement(&g_DllRefCnt);
}
CPropertySheet::~CPropertySheet()
{
- OutputDebugStringFormatA("CPropertySheet::DTor [%d], [%d]", m_RefCnt, g_DllRefCnt );
+ OutputDebugStringFormatW(L"CPropertySheet::DTor [%d], [%d]", m_RefCnt, g_DllRefCnt );
InterlockedDecrement(&g_DllRefCnt);
}
@@ -99,14 +99,14 @@ HRESULT STDMETHODCALLTYPE CPropertySheet::QueryInterface(
ULONG STDMETHODCALLTYPE CPropertySheet::AddRef()
{
- OutputDebugStringFormatA("CPropertySheet::AddRef [%d]", m_RefCnt );
+ OutputDebugStringFormatW(L"CPropertySheet::AddRef [%d]", m_RefCnt );
return InterlockedIncrement(&m_RefCnt);
}
ULONG STDMETHODCALLTYPE CPropertySheet::Release()
{
- OutputDebugStringFormatA("CPropertySheet::Release [%d]", m_RefCnt );
+ OutputDebugStringFormatW(L"CPropertySheet::Release [%d]", m_RefCnt );
long refcnt = InterlockedDecrement(&m_RefCnt);
if (0 == refcnt)
@@ -131,7 +131,7 @@ HRESULT STDMETHODCALLTYPE CPropertySheet::Initialize(
// save the file name
if (SUCCEEDED(hr) &&
- (1 == DragQueryFileA(
+ (1 == DragQueryFileW(
static_cast<HDROP>(medium.hGlobal),
0xFFFFFFFF,
nullptr,
@@ -146,9 +146,8 @@ HRESULT STDMETHODCALLTYPE CPropertySheet::Initialize(
if ( result_size != 0 )
{
std::wstring fname = getShortPathName( buffer.get() );
- std::string fnameA = WStringToString( fname );
ZeroMemory( m_szFileName, sizeof( m_szFileName ) );
- strncpy( m_szFileName, fnameA.c_str(), ( sizeof( m_szFileName ) - 1 ) );
+ wcsncpy( m_szFileName, fname.c_str(), ( SAL_N_ELEMENTS( m_szFileName ) - 1 ) );
hr = S_OK;
}
else
@@ -176,11 +175,11 @@ HRESULT STDMETHODCALLTYPE CPropertySheet::AddPages(LPFNADDPROPSHEETPAGE lpfnAddP
bool bIsVistaOrLater = IsWindowsVistaOrGreater();
#else
// Get OS version (we don't need the summary page on Windows Vista or later)
- OSVERSIONINFO sInfoOS;
+ OSVERSIONINFOW sInfoOS;
- ZeroMemory( &sInfoOS, sizeof(OSVERSIONINFO) );
- sInfoOS.dwOSVersionInfoSize = sizeof( OSVERSIONINFO );
- GetVersionEx( &sInfoOS );
+ ZeroMemory( &sInfoOS, sizeof(sInfoOS) );
+ sInfoOS.dwOSVersionInfoSize = sizeof( sInfoOS );
+ GetVersionExW( &sInfoOS );
bool bIsVistaOrLater = (sInfoOS.dwMajorVersion >= 6);
#endif
@@ -303,10 +302,10 @@ void CPropertySheet::InitPropPageSummary(HWND hwnd, LPPROPSHEETPAGE /*lppsp*/)
{
CMetaInfoReader metaInfo(m_szFileName);
- SetWindowText(GetDlgItem(hwnd,IDC_TITLE), metaInfo.getTagData( META_INFO_TITLE ).c_str() );
- SetWindowText(GetDlgItem(hwnd,IDC_AUTHOR), metaInfo.getTagData( META_INFO_AUTHOR ).c_str() );
- SetWindowText(GetDlgItem(hwnd,IDC_SUBJECT), metaInfo.getTagData( META_INFO_SUBJECT ).c_str() );
- SetWindowText(GetDlgItem(hwnd,IDC_KEYWORDS), metaInfo.getTagData( META_INFO_KEYWORDS ).c_str() );
+ SetWindowTextW(GetDlgItem(hwnd,IDC_TITLE), metaInfo.getTagData( META_INFO_TITLE ).c_str() );
+ SetWindowTextW(GetDlgItem(hwnd,IDC_AUTHOR), metaInfo.getTagData( META_INFO_AUTHOR ).c_str() );
+ SetWindowTextW(GetDlgItem(hwnd,IDC_SUBJECT), metaInfo.getTagData( META_INFO_SUBJECT ).c_str() );
+ SetWindowTextW(GetDlgItem(hwnd,IDC_KEYWORDS), metaInfo.getTagData( META_INFO_KEYWORDS ).c_str() );
// comments read from meta.xml use "\n" for return, but this will not displayable in Edit control, add
// "\r" before "\n" to form "\r\n" in order to display return in Edit control.
@@ -317,7 +316,7 @@ void CPropertySheet::InitPropPageSummary(HWND hwnd, LPPROPSHEETPAGE /*lppsp*/)
tempStr.insert(itor, L"\r");
itor = tempStr.find(L"\n", itor + 2);
}
- SetWindowText(GetDlgItem(hwnd,IDC_COMMENTS), tempStr.c_str());
+ SetWindowTextW(GetDlgItem(hwnd,IDC_COMMENTS), tempStr.c_str());
}
catch (const std::exception&)
{
diff --git a/shell/source/win32/shlxthandler/shlxthdl.cxx b/shell/source/win32/shlxthandler/shlxthdl.cxx
index ff8b83670904..47d93d054c25 100644
--- a/shell/source/win32/shlxthandler/shlxthdl.cxx
+++ b/shell/source/win32/shlxthandler/shlxthdl.cxx
@@ -36,29 +36,29 @@ HINSTANCE g_hModule = nullptr;
namespace /* private */
{
- const char* const GUID_PLACEHOLDER = "{GUID}";
- const char* const EXTENSION_PLACEHOLDER = "{EXT}";
- const char* const FORWARDKEY_PLACEHOLDER = "{FWDKEY}";
+ const wchar_t* const GUID_PLACEHOLDER = L"{GUID}";
+ const wchar_t* const EXTENSION_PLACEHOLDER = L"{EXT}";
+ const wchar_t* const FORWARDKEY_PLACEHOLDER = L"{FWDKEY}";
- const char* const CLSID_ENTRY = "CLSID\\{GUID}\\InProcServer32";
- const char* const SHELLEX_IID_ENTRY = "{EXT}\\shellex\\{GUID}";
- const char* const SHELLEX_ENTRY = "{EXT}\\shellex";
- const char* const FORWARD_PROPSHEET_MYPROPSHEET_ENTRY = "{FWDKEY}\\shellex\\PropertySheetHandlers\\MyPropSheet1";
- const char* const FORWARD_PROPSHEET_ENTRY = "{FWDKEY}\\shellex\\PropertySheetHandlers";
- const char* const FORWARD_SHELLEX_ENTRY = "{FWDKEY}\\shellex";
+ const wchar_t* const CLSID_ENTRY = L"CLSID\\{GUID}\\InProcServer32";
+ const wchar_t* const SHELLEX_IID_ENTRY = L"{EXT}\\shellex\\{GUID}";
+ const wchar_t* const SHELLEX_ENTRY = L"{EXT}\\shellex";
+ const wchar_t* const FORWARD_PROPSHEET_MYPROPSHEET_ENTRY = L"{FWDKEY}\\shellex\\PropertySheetHandlers\\MyPropSheet1";
+ const wchar_t* const FORWARD_PROPSHEET_ENTRY = L"{FWDKEY}\\shellex\\PropertySheetHandlers";
+ const wchar_t* const FORWARD_SHELLEX_ENTRY = L"{FWDKEY}\\shellex";
- const char* const SHELL_EXTENSION_APPROVED_KEY_NAME = "Software\\Microsoft\\Windows\\CurrentVersion\\Shell Extensions\\Approved";
+ const wchar_t* const SHELL_EXTENSION_APPROVED_KEY_NAME = L"Software\\Microsoft\\Windows\\CurrentVersion\\Shell Extensions\\Approved";
// "String Placeholder" ->
// "String Replacement"
- void SubstitutePlaceholder(std::string& String, const std::string& Placeholder, const std::string& Replacement)
+ void SubstitutePlaceholder(std::wstring& String, const std::wstring& Placeholder, const std::wstring& Replacement)
{
- std::string::size_type idx = String.find(Placeholder);
- std::string::size_type len = Placeholder.length();
+ std::wstring::size_type idx = String.find(Placeholder);
+ std::wstring::size_type len = Placeholder.length();
- while (std::string::npos != idx)
+ while (std::wstring::npos != idx)
{
String.replace(idx, len, Replacement);
idx = String.find(Placeholder);
@@ -70,15 +70,15 @@ namespace /* private */
InProcServer32 = Path\shlxthdl.dll
ThreadingModel = Apartment
*/
- HRESULT RegisterComComponent(const char* FilePath, const CLSID& Guid)
+ HRESULT RegisterComComponent(const wchar_t* FilePath, const CLSID& Guid)
{
- std::string ClsidEntry = CLSID_ENTRY;
+ std::wstring ClsidEntry = CLSID_ENTRY;
SubstitutePlaceholder(ClsidEntry, GUID_PLACEHOLDER, ClsidToString(Guid));
- if (!SetRegistryKey(HKEY_CLASSES_ROOT, ClsidEntry.c_str(), "", FilePath))
+ if (!SetRegistryKey(HKEY_CLASSES_ROOT, ClsidEntry.c_str(), L"", FilePath))
return E_FAIL;
- if (!SetRegistryKey(HKEY_CLASSES_ROOT, ClsidEntry.c_str(), "ThreadingModel", "Apartment"))
+ if (!SetRegistryKey(HKEY_CLASSES_ROOT, ClsidEntry.c_str(), L"ThreadingModel", L"Apartment"))
return E_FAIL;
return S_OK;
@@ -86,29 +86,29 @@ namespace /* private */
HRESULT UnregisterComComponent(const CLSID& Guid)
{
- std::string tmp = "CLSID\\";
+ std::wstring tmp = L"CLSID\\";
tmp += ClsidToString(Guid);
return DeleteRegistryKey(HKEY_CLASSES_ROOT, tmp.c_str()) ? S_OK : E_FAIL;
}
- HRESULT RegisterColumnHandler(const char* ModuleFileName)
+ HRESULT RegisterColumnHandler(const wchar_t* ModuleFileName)
{
if (FAILED(RegisterComComponent(ModuleFileName, CLSID_COLUMN_HANDLER)))
return E_FAIL;
- std::string tmp = "Folder\\shellex\\ColumnHandlers\\";
+ std::wstring tmp = L"Folder\\shellex\\ColumnHandlers\\";
tmp += ClsidToString(CLSID_COLUMN_HANDLER);
return SetRegistryKey(
HKEY_CLASSES_ROOT,
tmp.c_str(),
- "",
- WStringToString(COLUMN_HANDLER_DESCRIPTIVE_NAME).c_str()) ? S_OK : E_FAIL;
+ L"",
+ COLUMN_HANDLER_DESCRIPTIVE_NAME) ? S_OK : E_FAIL;
}
HRESULT UnregisterColumnHandler()
{
- std::string tmp = "Folder\\shellex\\ColumnHandlers\\";
+ std::wstring tmp = L"Folder\\shellex\\ColumnHandlers\\";
tmp += ClsidToString(CLSID_COLUMN_HANDLER);
if (!DeleteRegistryKey(HKEY_CLASSES_ROOT, tmp.c_str()))
@@ -117,21 +117,21 @@ namespace /* private */
return UnregisterComComponent(CLSID_COLUMN_HANDLER);
}
- HRESULT RegisterInfotipHandler(const char* ModuleFileName)
+ HRESULT RegisterInfotipHandler(const wchar_t* ModuleFileName)
{
if (FAILED(RegisterComComponent(ModuleFileName, CLSID_INFOTIP_HANDLER)))
return E_FAIL;
- std::string iid = ClsidToString(IID_IQueryInfo);
- std::string tmp;
+ std::wstring iid = ClsidToString(IID_IQueryInfo);
+ std::wstring tmp;
for(size_t i = 0; i < OOFileExtensionTableSize; i++)
{
tmp = SHELLEX_IID_ENTRY;
- SubstitutePlaceholder(tmp, EXTENSION_PLACEHOLDER, OOFileExtensionTable[i].ExtensionAnsi);
+ SubstitutePlaceholder(tmp, EXTENSION_PLACEHOLDER, OOFileExtensionTable[i].ExtensionU);
SubstitutePlaceholder(tmp, GUID_PLACEHOLDER, iid);
- if (!SetRegistryKey(HKEY_CLASSES_ROOT, tmp.c_str(), "", ClsidToString(CLSID_INFOTIP_HANDLER).c_str()))
+ if (!SetRegistryKey(HKEY_CLASSES_ROOT, tmp.c_str(), L"", ClsidToString(CLSID_INFOTIP_HANDLER).c_str()))
return E_FAIL;
}
return S_OK;
@@ -139,14 +139,14 @@ namespace /* private */
HRESULT UnregisterInfotipHandler()
{
- std::string iid = ClsidToString(IID_IQueryInfo);
- std::string tmp;
+ std::wstring iid = ClsidToString(IID_IQueryInfo);
+ std::wstring tmp;
for (size_t i = 0; i < OOFileExtensionTableSize; i++)
{
tmp = SHELLEX_IID_ENTRY;
- SubstitutePlaceholder(tmp, EXTENSION_PLACEHOLDER, OOFileExtensionTable[i].ExtensionAnsi);
+ SubstitutePlaceholder(tmp, EXTENSION_PLACEHOLDER, OOFileExtensionTable[i].ExtensionU);
SubstitutePlaceholder(tmp, GUID_PLACEHOLDER, iid);
DeleteRegistryKey(HKEY_CLASSES_ROOT, tmp.c_str());
@@ -154,7 +154,7 @@ namespace /* private */
// if there are no further subkey below .ext\\shellex
// delete the whole subkey
tmp = SHELLEX_ENTRY;
- SubstitutePlaceholder(tmp, EXTENSION_PLACEHOLDER, OOFileExtensionTable[i].ExtensionAnsi);
+ SubstitutePlaceholder(tmp, EXTENSION_PLACEHOLDER, OOFileExtensionTable[i].ExtensionU);
bool HasSubKeys = true;
if (HasSubkeysRegistryKey(HKEY_CLASSES_ROOT, tmp.c_str(), HasSubKeys) && !HasSubKeys)
@@ -163,9 +163,9 @@ namespace /* private */
return UnregisterComComponent(CLSID_INFOTIP_HANDLER);
}
- HRESULT RegisterPropSheetHandler(const char* ModuleFileName)
+ HRESULT RegisterPropSheetHandler(const wchar_t* ModuleFileName)
{
- std::string FwdKeyEntry;
+ std::wstring FwdKeyEntry;
if (FAILED(RegisterComComponent(ModuleFileName, CLSID_PROPERTYSHEET_HANDLER)))
return E_FAIL;
@@ -175,7 +175,7 @@ namespace /* private */
FwdKeyEntry = FORWARD_PROPSHEET_MYPROPSHEET_ENTRY;
SubstitutePlaceholder(FwdKeyEntry, FORWARDKEY_PLACEHOLDER, OOFileExtensionTable[i].RegistryForwardKey);
- if (!SetRegistryKey(HKEY_CLASSES_ROOT, FwdKeyEntry.c_str(), "", ClsidToString(CLSID_PROPERTYSHEET_HANDLER).c_str()))
+ if (!SetRegistryKey(HKEY_CLASSES_ROOT, FwdKeyEntry.c_str(), L"", ClsidToString(CLSID_PROPERTYSHEET_HANDLER).c_str()))
return E_FAIL;
}
return S_OK;
@@ -183,7 +183,7 @@ namespace /* private */
HRESULT UnregisterPropSheetHandler()
{
- std::string FwdKeyEntry;
+ std::wstring FwdKeyEntry;
for (size_t i = 0; i < OOFileExtensionTableSize; i++)
{
@@ -210,22 +210,22 @@ namespace /* private */
return UnregisterComComponent(CLSID_PROPERTYSHEET_HANDLER);
}
- HRESULT RegisterThumbviewerHandler(const char* ModuleFileName)
+ HRESULT RegisterThumbviewerHandler(const wchar_t* ModuleFileName)
{
if (FAILED(RegisterComComponent(ModuleFileName, CLSID_THUMBVIEWER_HANDLER)))
return E_FAIL;
- std::string iid = ClsidToString(IID_IExtractImage);
- std::string tmp;
+ std::wstring iid = ClsidToString(IID_IExtractImage);
+ std::wstring tmp;
for(size_t i = 0; i < OOFileExtensionTableSize; i++)
{
tmp = SHELLEX_IID_ENTRY;
- SubstitutePlaceholder(tmp, EXTENSION_PLACEHOLDER, OOFileExtensionTable[i].ExtensionAnsi);
+ SubstitutePlaceholder(tmp, EXTENSION_PLACEHOLDER, OOFileExtensionTable[i].ExtensionU);
SubstitutePlaceholder(tmp, GUID_PLACEHOLDER, iid);
- if (!SetRegistryKey(HKEY_CLASSES_ROOT, tmp.c_str(), "", ClsidToString(CLSID_THUMBVIEWER_HANDLER).c_str()))
+ if (!SetRegistryKey(HKEY_CLASSES_ROOT, tmp.c_str(), L"", ClsidToString(CLSID_THUMBVIEWER_HANDLER).c_str()))
return E_FAIL;
}
return S_OK;
@@ -233,14 +233,14 @@ namespace /* private */
HRESULT UnregisterThumbviewerHandler()
{
- std::string iid = ClsidToString(IID_IExtractImage);
- std::string tmp;
+ std::wstring iid = ClsidToString(IID_IExtractImage);
+ std::wstring tmp;
for (size_t i = 0; i < OOFileExtensionTableSize; i++)
{
tmp = SHELLEX_IID_ENTRY;
- SubstitutePlaceholder(tmp, EXTENSION_PLACEHOLDER, OOFileExtensionTable[i].ExtensionAnsi);
+ SubstitutePlaceholder(tmp, EXTENSION_PLACEHOLDER, OOFileExtensionTable[i].ExtensionU);
SubstitutePlaceholder(tmp, GUID_PLACEHOLDER, iid);
DeleteRegistryKey(HKEY_CLASSES_ROOT, tmp.c_str());
@@ -248,7 +248,7 @@ namespace /* private */
// if there are no further subkey below .ext\\shellex
// delete the whole subkey
tmp = SHELLEX_ENTRY;
- SubstitutePlaceholder(tmp, EXTENSION_PLACEHOLDER, OOFileExtensionTable[i].ExtensionAnsi);
+ SubstitutePlaceholder(tmp, EXTENSION_PLACEHOLDER, OOFileExtensionTable[i].ExtensionU);
bool HasSubKeys = true;
if (HasSubkeysRegistryKey(HKEY_CLASSES_ROOT, tmp.c_str(), HasSubKeys) && !HasSubKeys)
@@ -265,7 +265,7 @@ namespace /* private */
HKEY_LOCAL_MACHINE,
SHELL_EXTENSION_APPROVED_KEY_NAME,
ClsidToString(clsid).c_str(),
- WStringToString(Description).c_str());
+ Description.c_str());
return bRet ? S_OK : E_FAIL;
}
@@ -274,14 +274,14 @@ namespace /* private */
{
HKEY hkey;
- LONG rc = RegOpenKeyA(
+ LONG rc = RegOpenKeyW(
HKEY_LOCAL_MACHINE,
SHELL_EXTENSION_APPROVED_KEY_NAME,
&hkey);
if (ERROR_SUCCESS == rc)
{
- rc = RegDeleteValueA(
+ rc = RegDeleteValueW(
hkey,
ClsidToString(Clsid).c_str());
@@ -306,25 +306,24 @@ STDAPI DllRegisterServer()
ModuleFileName,
sizeof(ModuleFileName)/sizeof(ModuleFileName[0]));
- std::string module_path = WStringToString(ModuleFileName);
HRESULT hr = S_OK;
- if (SUCCEEDED(RegisterColumnHandler(module_path.c_str())))
+ if (SUCCEEDED(RegisterColumnHandler(ModuleFileName)))
ApproveShellExtension(CLSID_COLUMN_HANDLER, COLUMN_HANDLER_DESCRIPTIVE_NAME);
else
hr = E_FAIL;
- if (SUCCEEDED(RegisterInfotipHandler(module_path.c_str())))
+ if (SUCCEEDED(RegisterInfotipHandler(ModuleFileName)))
ApproveShellExtension(CLSID_INFOTIP_HANDLER, INFOTIP_HANDLER_DESCRIPTIVE_NAME);
else
hr = E_FAIL;
- if (SUCCEEDED(RegisterPropSheetHandler(module_path.c_str())))
+ if (SUCCEEDED(RegisterPropSheetHandler(ModuleFileName)))
ApproveShellExtension(CLSID_PROPERTYSHEET_HANDLER, PROPSHEET_HANDLER_DESCRIPTIVE_NAME);
else
hr = E_FAIL;
- if (SUCCEEDED(RegisterThumbviewerHandler(module_path.c_str())))
+ if (SUCCEEDED(RegisterThumbviewerHandler(ModuleFileName)))
ApproveShellExtension(CLSID_THUMBVIEWER_HANDLER, THUMBVIEWER_HANDLER_DESCRIPTIVE_NAME);
else
hr = E_FAIL;
@@ -379,13 +378,13 @@ STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, void** ppv)
return E_NOINTERFACE;
if ( rclsid == CLSID_INFOTIP_HANDLER )
- OutputDebugStringFormatA( "DllGetClassObject: Create CLSID_INFOTIP_HANDLER\n" );
+ OutputDebugStringFormatW( L"DllGetClassObject: Create CLSID_INFOTIP_HANDLER\n" );
else if ( rclsid == CLSID_COLUMN_HANDLER )
- OutputDebugStringFormatA( "DllGetClassObject: Create CLSID_COLUMN_HANDLER\n" );
+ OutputDebugStringFormatW( L"DllGetClassObject: Create CLSID_COLUMN_HANDLER\n" );
else if ( rclsid == CLSID_PROPERTYSHEET_HANDLER )
- OutputDebugStringFormatA( "DllGetClassObject: Create CLSID_PROPERTYSHEET_HANDLER\n" );
+ OutputDebugStringFormatW( L"DllGetClassObject: Create CLSID_PROPERTYSHEET_HANDLER\n" );
else if ( rclsid == CLSID_THUMBVIEWER_HANDLER )
- OutputDebugStringFormatA( "DllGetClassObject: Create CLSID_THUMBVIEWER_HANDLER\n" );
+ OutputDebugStringFormatW( L"DllGetClassObject: Create CLSID_THUMBVIEWER_HANDLER\n" );
IUnknown* pUnk = new CClassFactory(rclsid);
*ppv = pUnk;
diff --git a/shell/source/win32/shlxthandler/thumbviewer/thumbviewer.cxx b/shell/source/win32/shlxthandler/thumbviewer/thumbviewer.cxx
index 740ae5708c93..360f89cacab0 100644
--- a/shell/source/win32/shlxthandler/thumbviewer/thumbviewer.cxx
+++ b/shell/source/win32/shlxthandler/thumbviewer/thumbviewer.cxx
@@ -73,10 +73,10 @@ namespace internal
#ifdef _WIN32_WINNT_WINBLUE
return IsWindowsXPOrGreater();
#else
- OSVERSIONINFO osvi;
+ OSVERSIONINFOW osvi;
ZeroMemory(&osvi, sizeof(osvi));
osvi.dwOSVersionInfoSize = sizeof(osvi);
- GetVersionEx(&osvi);
+ GetVersionExW(&osvi);
return ((osvi.dwPlatformId == VER_PLATFORM_WIN32_NT) &&
((osvi.dwMajorVersion >= 5) && (osvi.dwMinorVersion >= 1)));
@@ -376,7 +376,7 @@ HRESULT STDMETHODCALLTYPE CThumbviewer::Extract(HBITMAP *phBmpImage)
try
{
std::wstring fname = getShortPathName( filename_ );
- std::unique_ptr<ZipFile> zipfile( new ZipFile( WStringToString( fname ) ) );
+ std::unique_ptr<ZipFile> zipfile( new ZipFile( fname ) );
if (zipfile->HasContent(THUMBNAIL_CONTENT))
{
@@ -477,7 +477,7 @@ HRESULT STDMETHODCALLTYPE CThumbviewer::Extract(HBITMAP *phBmpImage)
}
catch(std::exception&)
{
- OutputDebugStringFormatA( "CThumbviewer Extract ERROR!\n" );
+ OutputDebugStringFormatW( L"CThumbviewer Extract ERROR!\n" );
hr = E_FAIL;
}
return hr;
diff --git a/shell/source/win32/shlxthandler/util/fileextensions.cxx b/shell/source/win32/shlxthandler/util/fileextensions.cxx
index cb73b1af9796..af13af50d469 100644
--- a/shell/source/win32/shlxthandler/util/fileextensions.cxx
+++ b/shell/source/win32/shlxthandler/util/fileextensions.cxx
@@ -23,37 +23,37 @@
#include <sal/macros.h>
-const std::string WRITER_FILE_EXTENSIONS = "sxwstwsxgodtottodm";
-const std::string CALC_FILE_EXTENSIONS = "sxcstcodsots";
-const std::string DRAW_FILE_EXTENSIONS = "sxdstdodgotg";
-const std::string IMPRESS_FILE_EXTENSIONS = "sxistiodpotp";
-const std::string MATH_FILE_EXTENSIONS = "sxmodf";
-const std::string WEB_FILE_EXTENSIONS = "oth";
-const std::string DATABASE_FILE_EXTENSIONS = "odb";
+const std::wstring WRITER_FILE_EXTENSIONS = L"sxwstwsxgodtottodm";
+const std::wstring CALC_FILE_EXTENSIONS = L"sxcstcodsots";
+const std::wstring DRAW_FILE_EXTENSIONS = L"sxdstdodgotg";
+const std::wstring IMPRESS_FILE_EXTENSIONS = L"sxistiodpotp";
+const std::wstring MATH_FILE_EXTENSIONS = L"sxmodf";
+const std::wstring WEB_FILE_EXTENSIONS = L"oth";
+const std::wstring DATABASE_FILE_EXTENSIONS = L"odb";
const FileExtensionEntry OOFileExtensionTable[] = {
- { ".sxw", L".sxw", "soffice.StarWriterDocument.6" },
- { ".sxc", L".sxc", "soffice.StarCalcDocument.6" },
- { ".sxi", L".sxi", "soffice.StarImpressDocument.6" },
- { ".sxd", L".sxd", "soffice.StarDrawDocument.6" },
- { ".sxm", L".sxm", "soffice.StarMathDocument.6" },
- { ".stw", L".stw", "soffice.StarWriterTemplate.6" },
- { ".sxg", L".sxg", "soffice.StarWriterGlobalDocument.6" },
- { ".std", L".std", "soffice.StarDrawTemplate.6" },
- { ".sti", L".sti", "soffice.StarImpressTemplate.6" },
- { ".stc", L".stc", "soffice.StarCalcTemplate.6" },
- { ".odt", L".odt", "LibreOffice.WriterDocument.1" },
- { ".ott", L".ott", "LibreOffice.WriterTemplate.1" },
- { ".odm", L".odm", "LibreOffice.WriterGlobalDocument.1" },
- { ".oth", L".oth", "LibreOffice.WriterWebTemplate.1" },
- { ".ods", L".ods", "LibreOffice.CalcDocument.1" },
- { ".ots", L".ots", "LibreOffice.CalcTemplate.1" },
- { ".odg", L".odg", "LibreOffice.DrawDocument.1" },
- { ".otg", L".otg", "LibreOffice.DrawTemplate.1" },
- { ".odp", L".odp", "LibreOffice.ImpressDocument.1" },
- { ".otp", L".otp", "LibreOffice.ImpressTemplate.1" },
- { ".odf", L".odf", "LibreOffice.MathDocument.1" },
- { ".odb", L".odb", "LibreOffice.DatabaseDocument.1" }
+ { ".sxw", L".sxw", L"soffice.StarWriterDocument.6" },
+ { ".sxc", L".sxc", L"soffice.StarCalcDocument.6" },
+ { ".sxi", L".sxi", L"soffice.StarImpressDocument.6" },
+ { ".sxd", L".sxd", L"soffice.StarDrawDocument.6" },
+ { ".sxm", L".sxm", L"soffice.StarMathDocument.6" },
+ { ".stw", L".stw", L"soffice.StarWriterTemplate.6" },
+ { ".sxg", L".sxg", L"soffice.StarWriterGlobalDocument.6" },
+ { ".std", L".std", L"soffice.StarDrawTemplate.6" },
+ { ".sti", L".sti", L"soffice.StarImpressTemplate.6" },
+ { ".stc", L".stc", L"soffice.StarCalcTemplate.6" },
+ { ".odt", L".odt", L"LibreOffice.WriterDocument.1" },
+ { ".ott", L".ott", L"LibreOffice.WriterTemplate.1" },
+ { ".odm", L".odm", L"LibreOffice.WriterGlobalDocument.1" },
+ { ".oth", L".oth", L"LibreOffice.WriterWebTemplate.1" },
+ { ".ods", L".ods", L"LibreOffice.CalcDocument.1" },
+ { ".ots", L".ots", L"LibreOffice.CalcTemplate.1" },
+ { ".odg", L".odg", L"LibreOffice.DrawDocument.1" },
+ { ".otg", L".otg", L"LibreOffice.DrawTemplate.1" },
+ { ".odp", L".odp", L"LibreOffice.ImpressDocument.1" },
+ { ".otp", L".otp", L"LibreOffice.ImpressTemplate.1" },
+ { ".odf", L".odf", L"LibreOffice.MathDocument.1" },
+ { ".odb", L".odb", L"LibreOffice.DatabaseDocument.1" }
};
@@ -63,41 +63,41 @@ const size_t OOFileExtensionTableSize = SAL_N_ELEMENTS(OOFileExtensionTable);
/** Return the extension of a file
name without the '.'
*/
-std::string get_file_name_extension(const std::string& file_name)
+std::wstring get_file_name_extension(const std::wstring& file_name)
{
- std::string::size_type idx = file_name.find_last_of(".");
+ std::wstring::size_type idx = file_name.find_last_of(L".");
- if (std::string::npos != idx++)
- return std::string(file_name.begin() + idx, file_name.end());
+ if (std::wstring::npos != idx++)
+ return std::wstring(file_name.begin() + idx, file_name.end());
- return std::string();
+ return std::wstring();
}
/** Return the type of a file
*/
-File_Type_t get_file_type(const std::string& file_name)
+File_Type_t get_file_type(const std::wstring& file_name)
{
- std::string fext = get_file_name_extension(file_name);
+ std::wstring fext = get_file_name_extension(file_name);
std::transform(
fext.begin(), fext.end(), fext.begin(),
- [](char c) {
- return rtl::toAsciiLowerCase(static_cast<unsigned char>(c)); });
+ [](wchar_t c) {
+ return rtl::toAsciiLowerCase(c); });
- if (std::string::npos != WRITER_FILE_EXTENSIONS.find(fext))
+ if (std::wstring::npos != WRITER_FILE_EXTENSIONS.find(fext))
return WRITER;
- else if (std::string::npos != CALC_FILE_EXTENSIONS.find(fext))
+ else if (std::wstring::npos != CALC_FILE_EXTENSIONS.find(fext))
return CALC;
- else if (std::string::npos != DRAW_FILE_EXTENSIONS.find(fext))
+ else if (std::wstring::npos != DRAW_FILE_EXTENSIONS.find(fext))
return DRAW;
- else if (std::string::npos != IMPRESS_FILE_EXTENSIONS.find(fext))
+ else if (std::wstring::npos != IMPRESS_FILE_EXTENSIONS.find(fext))
return IMPRESS;
- else if (std::string::npos != MATH_FILE_EXTENSIONS.find(fext))
+ else if (std::wstring::npos != MATH_FILE_EXTENSIONS.find(fext))
return MATH;
- else if (std::string::npos != WEB_FILE_EXTENSIONS.find(fext))
+ else if (std::wstring::npos != WEB_FILE_EXTENSIONS.find(fext))
return WEB;
- else if (std::string::npos != DATABASE_FILE_EXTENSIONS.find(fext))
+ else if (std::wstring::npos != DATABASE_FILE_EXTENSIONS.find(fext))
return DATABASE;
else
return UNKNOWN;
diff --git a/shell/source/win32/shlxthandler/util/registry.cxx b/shell/source/win32/shlxthandler/util/registry.cxx
index 9c76be19cab2..f7dc281c9818 100644
--- a/shell/source/win32/shlxthandler/util/registry.cxx
+++ b/shell/source/win32/shlxthandler/util/registry.cxx
@@ -39,20 +39,20 @@
#pragma warning(pop)
#endif
-bool SetRegistryKey(HKEY RootKey, const char* KeyName, const char* ValueName, const char* Value)
+bool SetRegistryKey(HKEY RootKey, const wchar_t* KeyName, const wchar_t* ValueName, const wchar_t* Value)
{
HKEY hSubKey;
// open or create the desired key
- char dummy[] = "";
- int rc = RegCreateKeyExA(
+ wchar_t dummy[] = L"";
+ int rc = RegCreateKeyExW(
RootKey, KeyName, 0, dummy, REG_OPTION_NON_VOLATILE, KEY_WRITE, nullptr, &hSubKey, nullptr);
if (ERROR_SUCCESS == rc)
{
- rc = RegSetValueExA(
+ rc = RegSetValueExW(
hSubKey, ValueName, 0, REG_SZ, reinterpret_cast<const BYTE*>(Value),
- static_cast<DWORD>(strlen(Value) + 1));
+ static_cast<DWORD>((wcslen(Value) + 1) * sizeof(*Value)));
RegCloseKey(hSubKey);
}
@@ -61,11 +61,11 @@ bool SetRegistryKey(HKEY RootKey, const char* KeyName, const char* ValueName, co
}
-bool DeleteRegistryKey(HKEY RootKey, const char* KeyName)
+bool DeleteRegistryKey(HKEY RootKey, const wchar_t* KeyName)
{
HKEY hKey;
- int rc = RegOpenKeyExA(
+ int rc = RegOpenKeyExW(
RootKey,
KeyName,
0,
@@ -77,24 +77,24 @@ bool DeleteRegistryKey(HKEY RootKey, const char* KeyName)
if (ERROR_SUCCESS == rc)
{
- char* SubKey;
+ wchar_t* SubKey;
DWORD nMaxSubKeyLen;
- rc = RegQueryInfoKeyA(
+ rc = RegQueryInfoKeyW(
hKey, nullptr, nullptr, nullptr, nullptr,
&nMaxSubKeyLen,
nullptr, nullptr, nullptr, nullptr, nullptr, nullptr);
nMaxSubKeyLen++; // space for trailing '\0'
- SubKey = static_cast<char*>(
- _alloca(nMaxSubKeyLen*sizeof(char)));
+ SubKey = static_cast<wchar_t*>(
+ _alloca(nMaxSubKeyLen*sizeof(wchar_t)));
while (ERROR_SUCCESS == rc)
{
DWORD nLen = nMaxSubKeyLen;
- rc = RegEnumKeyExA(
+ rc = RegEnumKeyExW(
hKey,
0, // always index zero
SubKey,
@@ -103,7 +103,7 @@ bool DeleteRegistryKey(HKEY RootKey, const char* KeyName)
if (ERROR_NO_MORE_ITEMS == rc)
{
- rc = RegDeleteKeyA(RootKey, KeyName);
+ rc = RegDeleteKeyW(RootKey, KeyName);
break;
}
else if (rc == ERROR_SUCCESS)
@@ -123,18 +123,19 @@ bool DeleteRegistryKey(HKEY RootKey, const char* KeyName)
/** May be used to determine if the specified registry key has subkeys
The function returns true on success else if an error occurs false
*/
-bool HasSubkeysRegistryKey(HKEY RootKey, const char* KeyName, /* out */ bool& bResult)
+bool HasSubkeysRegistryKey(HKEY RootKey, const wchar_t* KeyName, /* out */ bool& bResult)
{
HKEY hKey;
- LONG rc = RegOpenKeyExA(RootKey, KeyName, 0, KEY_READ, &hKey);
+ LONG rc = RegOpenKeyExW(RootKey, KeyName, 0, KEY_READ, &hKey);
if (ERROR_SUCCESS == rc)
{
DWORD nSubKeys = 0;
- rc = RegQueryInfoKeyA(hKey, nullptr, nullptr, nullptr, &nSubKeys, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr);
+ rc = RegQueryInfoKeyW(hKey, nullptr, nullptr, nullptr, &nSubKeys, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr);
+ RegCloseKey(hKey);
bResult = (nSubKeys > 0);
}
@@ -142,28 +143,26 @@ bool HasSubkeysRegistryKey(HKEY RootKey, const char* KeyName, /* out */ bool& bR
}
// Convert a CLSID to a char string.
-std::string ClsidToString(const CLSID& clsid)
+std::wstring ClsidToString(const CLSID& clsid)
{
// Get CLSID
LPOLESTR wszCLSID = nullptr;
StringFromCLSID(clsid, &wszCLSID);
- char buff[39];
- // Covert from wide characters to non-wide.
- wcstombs(buff, wszCLSID, sizeof(buff));
+ std::wstring sResult = wszCLSID;
// Free memory.
CoTaskMemFree(wszCLSID) ;
- return std::string(buff);
+ return sResult;
}
-bool QueryRegistryKey(HKEY RootKey, const char* KeyName, const char* ValueName, char *pszData, DWORD dwBufLen)
+bool QueryRegistryKey(HKEY RootKey, const wchar_t* KeyName, const wchar_t* ValueName, wchar_t *pszData, DWORD dwBufLen)
{
HKEY hKey;
- int rc = RegOpenKeyExA(
+ int rc = RegOpenKeyExW(
RootKey,
KeyName,
0,
@@ -172,8 +171,9 @@ bool QueryRegistryKey(HKEY RootKey, const char* KeyName, const char* ValueName,
if (ERROR_SUCCESS == rc)
{
- rc = RegQueryValueExA(
- hKey, ValueName, nullptr, nullptr, reinterpret_cast<LPBYTE>(pszData),&dwBufLen);
+ DWORD dwBytes = dwBufLen * sizeof(*pszData);
+ rc = RegQueryValueExW(
+ hKey, ValueName, nullptr, nullptr, reinterpret_cast<LPBYTE>(pszData),&dwBytes);
RegCloseKey(hKey);
}
diff --git a/shell/source/win32/shlxthandler/util/utilities.cxx b/shell/source/win32/shlxthandler/util/utilities.cxx
index 03e013602699..9468b33a71c4 100644
--- a/shell/source/win32/shlxthandler/util/utilities.cxx
+++ b/shell/source/win32/shlxthandler/util/utilities.cxx
@@ -87,7 +87,7 @@ std::wstring GetResString(int ResId)
int rc = LoadStringW( GetModuleHandleW(MODULE_NAME), ResId, szResStr, sizeof(szResStr) );
- OutputDebugStringFormatA( "GetResString: read %d chars\n", rc );
+ OutputDebugStringFormatW( L"GetResString: read %d chars\n", rc );
// OSL_ENSURE(rc, "String resource not found");
return std::wstring(szResStr);
@@ -100,10 +100,10 @@ bool is_windows_xp_or_above()
#ifdef _WIN32_WINNT_WINBLUE
return IsWindowsXPOrGreater();
#else
- OSVERSIONINFO osvi;
+ OSVERSIONINFOW osvi;
ZeroMemory(&osvi, sizeof(osvi));
osvi.dwOSVersionInfoSize = sizeof(osvi);
- GetVersionEx(&osvi);
+ GetVersionExW(&osvi);
// LLA: check for windows xp or above (Vista)
if (osvi.dwMajorVersion > 5 ||
diff --git a/shell/source/win32/simplemail/simplemapi.cxx b/shell/source/win32/simplemail/simplemapi.cxx
index 316cb70660de..e7680048c220 100644
--- a/shell/source/win32/simplemail/simplemapi.cxx
+++ b/shell/source/win32/simplemail/simplemapi.cxx
@@ -27,7 +27,7 @@ CSimpleMapi::CSimpleMapi() :
m_lpfnMapiLogoff(nullptr),
m_lpfnMapiSendMail(nullptr)
{
- m_hMapiDll = LoadLibrary("mapi32.dll");
+ m_hMapiDll = LoadLibraryW(L"mapi32.dll");
if ((m_hMapiDll == INVALID_HANDLE_VALUE) || (m_hMapiDll == nullptr))
throw std::runtime_error("Couldn't load MAPI library");
diff --git a/shell/source/win32/simplemail/smplmailsuppl.cxx b/shell/source/win32/simplemail/smplmailsuppl.cxx
index 0ade1644f1ea..22410f80216c 100644
--- a/shell/source/win32/simplemail/smplmailsuppl.cxx
+++ b/shell/source/win32/simplemail/smplmailsuppl.cxx
@@ -56,7 +56,7 @@ Reference<XSimpleMailClient> SAL_CALL CSmplMailSuppl::querySimpleMailClient()
/* We just try to load the MAPI dll as a test
if a mail client is available */
Reference<XSimpleMailClient> xSmplMailClient;
- HMODULE handle = LoadLibrary("mapi32.dll");
+ HMODULE handle = LoadLibraryW(L"mapi32.dll");
if ((handle != INVALID_HANDLE_VALUE) && (handle != nullptr))
{
FreeLibrary(handle);
diff --git a/shell/source/win32/zipfile/zipfile.cxx b/shell/source/win32/zipfile/zipfile.cxx
index 3bff687982dc..f1fca5276d30 100644
--- a/shell/source/win32/zipfile/zipfile.cxx
+++ b/shell/source/win32/zipfile/zipfile.cxx
@@ -351,7 +351,7 @@ struct stricmp
IOException if the specified file doesn't exist
AccessViolationException if read access to the file is denied
*/
-bool ZipFile::IsZipFile(const std::string& /*FileName*/)
+bool ZipFile::IsZipFile(const std::wstring& /*FileName*/)
{
return true;
}
@@ -377,7 +377,7 @@ bool ZipFile::IsZipFile(void* /*stream*/)
IOException if the specified file doesn't exist or is no zip file
AccessViolationException if read access to the file is denied
*/
-bool ZipFile::IsValidZipFileVersionNumber(const std::string& /*FileName*/)
+bool ZipFile::IsValidZipFileVersionNumber(const std::wstring& /*FileName*/)
{
return true;
}
@@ -400,7 +400,7 @@ bool ZipFile::IsValidZipFileVersionNumber(void* /* stream*/)
WrongZipVersionException if the zip file cannot be uncompressed
with the used zlib version
*/
-ZipFile::ZipFile(const std::string &FileName) :
+ZipFile::ZipFile(const std::wstring &FileName) :
m_pStream(nullptr),
m_bShouldFree(true)
{