switching narrow char system calls to wide char in windows b=418703 r=bsmedberg r=dougt also looked at by stuart and roc a=beltzner and a=damon

git-svn-id: svn://10.0.0.236/trunk@247573 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
blassey%mozilla.com
2008-03-11 21:49:58 +00:00
parent c49061d16f
commit 8ccd9a7db0
59 changed files with 566 additions and 590 deletions

View File

@@ -66,14 +66,14 @@ ClearVersion(verBlock *ver)
}
static BOOL
FileExists(LPCSTR szFile)
FileExists(wchar_t* szFile)
{
return GetFileAttributes(szFile) != 0xFFFFFFFF;
return GetFileAttributesW(szFile) != 0xFFFFFFFF;
}
// Get file version information from a file
static BOOL
GetFileVersion(LPSTR szFile, verBlock *vbVersion)
GetFileVersion(wchar_t* szFile, verBlock *vbVersion)
{
UINT uLen;
UINT dwLen;
@@ -86,12 +86,12 @@ GetFileVersion(LPSTR szFile, verBlock *vbVersion)
ClearVersion(vbVersion);
if (FileExists(szFile)) {
bRv = TRUE;
dwLen = GetFileVersionInfoSize(szFile, &dwHandle);
dwLen = GetFileVersionInfoSizeW(szFile, &dwHandle);
lpData = (LPVOID)malloc(dwLen);
uLen = 0;
if (lpData && GetFileVersionInfo(szFile, dwHandle, dwLen, lpData) != 0) {
if (VerQueryValue(lpData, "\\", &lpBuffer, &uLen) != 0) {
if (lpData && GetFileVersionInfoW(szFile, dwHandle, dwLen, lpData) != 0) {
if (VerQueryValueW(lpData, L"\\", &lpBuffer, &uLen) != 0) {
lpBuffer2 = (VS_FIXEDFILEINFO *)lpBuffer;
vbVersion->wMajor = HIWORD(lpBuffer2->dwFileVersionMS);
@@ -124,15 +124,15 @@ CopyVersion(verBlock *ver1, verBlock *ver2)
static void
TranslateVersionStr(const char* szVersion, verBlock *vbVersion)
{
LPSTR szNum1 = NULL;
LPSTR szNum2 = NULL;
LPSTR szNum3 = NULL;
LPSTR szNum4 = NULL;
LPSTR szJavaBuild = NULL;
char* szNum1 = NULL;
char* szNum2 = NULL;
char* szNum3 = NULL;
char* szNum4 = NULL;
char* szJavaBuild = NULL;
char *strVer = nsnull;
char* strVer = nsnull;
if (szVersion) {
strVer = PL_strdup(szVersion);
strVer = strdup(szVersion);
}
if (!strVer) {
@@ -157,7 +157,7 @@ TranslateVersionStr(const char* szVersion, verBlock *vbVersion)
vbVersion->wRelease = szNum3 ? atoi(szNum3) : 0;
vbVersion->wBuild = szNum4 ? atoi(szNum4) : 0;
PL_strfree(strVer);
free(strVer);
}
// Compare two version struct, return zero if the same
@@ -195,26 +195,28 @@ CompareVersion(verBlock vbVersionOld, verBlock vbVersionNew)
// Indicate whether we should try to use the new NPRuntime-based Java
// Plug-In if it's available
static PRBool
TryToUseNPRuntimeJavaPlugIn(const char* javaVersion)
TryToUseNPRuntimeJavaPlugIn(const wchar_t* javaVersion)
{
HKEY javaKey = NULL;
char keyName[_MAX_PATH];
keyName[0] = 0;
PL_strcat(keyName, "Software\\JavaSoft\\Java Plug-in\\");
PL_strcat(keyName, javaVersion);
wchar_t keyName[_MAX_PATH];
wcsncpy(keyName, L"Software\\JavaSoft\\Java Plug-in\\", wcslen(L"Software\\JavaSoft\\Java Plug-in\\"));
wcscpy(keyName, javaVersion);
DWORD val;
DWORD valSize = sizeof(DWORD);
if (ERROR_SUCCESS != ::RegOpenKeyEx(HKEY_LOCAL_MACHINE,
if (ERROR_SUCCESS != ::RegOpenKeyExW(HKEY_LOCAL_MACHINE,
keyName, 0, KEY_READ, &javaKey)) {
return FALSE;
}
// Look for "UseNewJavaPlugin"
if (ERROR_SUCCESS != ::RegQueryValueEx(javaKey, "UseNewJavaPlugin",
NULL, NULL,
(LPBYTE) &val,
&valSize)) {
if (ERROR_SUCCESS != ::RegQueryValueExW(javaKey,
L"UseNewJavaPlugin",
NULL, NULL,
(LPBYTE) &val,
&valSize)) {
val = 0;
}
@@ -262,7 +264,7 @@ nsPluginDirServiceProvider::GetFile(const char *prop, PRBool *persistant,
return rv;
}
if (nsCRT::strcmp(prop, NS_WIN_4DOTX_SCAN_KEY) == 0) {
if (strcmp(prop, NS_WIN_4DOTX_SCAN_KEY) == 0) {
// Check our prefs to see if scanning the 4.x folder has been
// explictly overriden failure to get the pref is okay, we'll do
// what we've been doing -- a filtered scan
@@ -277,38 +279,38 @@ nsPluginDirServiceProvider::GetFile(const char *prop, PRBool *persistant,
HKEY keyloc;
long result;
DWORD type;
char szKey[_MAX_PATH] = "Software\\Netscape\\Netscape Navigator";
char path[_MAX_PATH];
wchar_t szKey[_MAX_PATH] = L"Software\\Netscape\\Netscape Navigator";
wchar_t path[_MAX_PATH];
result = ::RegOpenKeyEx(HKEY_LOCAL_MACHINE, szKey, 0, KEY_READ, &keyloc);
result = ::RegOpenKeyExW(HKEY_LOCAL_MACHINE, szKey, 0, KEY_READ, &keyloc);
if (result == ERROR_SUCCESS) {
char current_version[80];
wchar_t current_version[80];
DWORD length = sizeof(current_version);
result = ::RegQueryValueEx(keyloc, "CurrentVersion", NULL, &type,
result = ::RegQueryValueExW(keyloc, L"CurrentVersion", NULL, &type,
(LPBYTE)&current_version, &length);
::RegCloseKey(keyloc);
PL_strcat(szKey, "\\");
PL_strcat(szKey, current_version);
PL_strcat(szKey, "\\Main");
result = ::RegOpenKeyEx(HKEY_LOCAL_MACHINE, szKey, 0, KEY_READ, &keyloc);
wcscat(szKey, L"\\");
wcscat(szKey, current_version);
wcscat(szKey, L"\\Main");
result = ::RegOpenKeyExW(HKEY_LOCAL_MACHINE, szKey, 0, KEY_READ, &keyloc);
if (result == ERROR_SUCCESS) {
DWORD pathlen = sizeof(path);
result = ::RegQueryValueEx(keyloc, "Plugins Directory", NULL, &type,
result = ::RegQueryValueExW(keyloc, L"Plugins Directory", NULL, &type,
(LPBYTE)&path, &pathlen);
if (result == ERROR_SUCCESS) {
rv = NS_NewNativeLocalFile(nsDependentCString(path), PR_TRUE,
getter_AddRefs(localFile));
rv = NS_NewLocalFile(nsDependentString(path), PR_TRUE,
getter_AddRefs(localFile));
}
::RegCloseKey(keyloc);
}
}
} else if (nsCRT::strcmp(prop, NS_WIN_JRE_SCAN_KEY) == 0) {
} else if (strcmp(prop, NS_WIN_JRE_SCAN_KEY) == 0) {
nsXPIDLCString strVer;
#ifdef OJI
if (NS_FAILED(prefs->GetCharPref(prop, getter_Copies(strVer))))
@@ -328,24 +330,25 @@ nsPluginDirServiceProvider::GetFile(const char *prop, PRBool *persistant,
DWORD pathlen;
verBlock maxVer;
ClearVersion(&maxVer);
char curKey[_MAX_PATH] = "Software\\JavaSoft\\Java Runtime Environment";
char path[_MAX_PATH];
wchar_t curKey[_MAX_PATH] = L"Software\\JavaSoft\\Java Runtime Environment";
wchar_t path[_MAX_PATH];
// Add + 15 to prevent buffer overrun when adding \bin (+ optionally
// \new_plugin)
#define JAVA_PATH_SIZE _MAX_PATH + 15
char newestPath[JAVA_PATH_SIZE];
const char mozPath[_MAX_PATH] = "Software\\mozilla.org\\Mozilla";
char browserJavaVersion[_MAX_PATH];
wchar_t newestPath[JAVA_PATH_SIZE];
const wchar_t mozPath[_MAX_PATH] = L"Software\\mozilla.org\\Mozilla";
wchar_t browserJavaVersion[_MAX_PATH];
PRBool tryNPRuntimeJavaPlugIn = PR_FALSE;
newestPath[0] = 0;
LONG result = ::RegOpenKeyEx(HKEY_LOCAL_MACHINE, curKey, 0, KEY_READ,
LONG result = ::RegOpenKeyExW(HKEY_LOCAL_MACHINE, curKey, 0, KEY_READ,
&baseloc);
if (ERROR_SUCCESS != result)
return NS_ERROR_FAILURE;
// Look for "BrowserJavaVersion"
if (ERROR_SUCCESS != ::RegQueryValueEx(baseloc, "BrowserJavaVersion", NULL,
if (ERROR_SUCCESS != ::RegQueryValueExW(baseloc, L"BrowserJavaVersion", NULL,
NULL, (LPBYTE)&browserJavaVersion,
&numChars))
browserJavaVersion[0] = 0;
@@ -356,13 +359,13 @@ nsPluginDirServiceProvider::GetFile(const char *prop, PRBool *persistant,
path[0] = 0;
numChars = _MAX_PATH;
pathlen = sizeof(path);
result = ::RegEnumKeyEx(baseloc, index, curKey, &numChars, NULL, NULL,
result = ::RegEnumKeyExW(baseloc, index, curKey, &numChars, NULL, NULL,
NULL, &modTime);
index++;
// Skip major.minor as it always points to latest in its family
numChars = 0;
for (char *p = curKey; *p; p++) {
for (wchar_t *p = curKey; *p; p++) { // can I do this with wchar_t xxx?
if (*p == '.') {
numChars++;
}
@@ -371,24 +374,24 @@ nsPluginDirServiceProvider::GetFile(const char *prop, PRBool *persistant,
continue;
if (ERROR_SUCCESS == result) {
if (ERROR_SUCCESS == ::RegOpenKeyEx(baseloc, curKey, 0,
if (ERROR_SUCCESS == ::RegOpenKeyExW(baseloc, curKey, 0,
KEY_QUERY_VALUE, &keyloc)) {
// We have a sub key
if (ERROR_SUCCESS == ::RegQueryValueEx(keyloc, "JavaHome", NULL,
if (ERROR_SUCCESS == ::RegQueryValueExW(keyloc, L"JavaHome", NULL,
&type, (LPBYTE)&path,
&pathlen)) {
verBlock curVer;
TranslateVersionStr(curKey, &curVer);
TranslateVersionStr(NS_ConvertUTF16toUTF8(curKey).get(), &curVer);
if (CompareVersion(curVer, minVer) >= 0) {
if (!strncmp(browserJavaVersion, curKey, _MAX_PATH)) {
PL_strcpy(newestPath, path);
if (!wcsncmp(browserJavaVersion, curKey, _MAX_PATH)) {
wcscpy(newestPath, path);
tryNPRuntimeJavaPlugIn = TryToUseNPRuntimeJavaPlugIn(curKey);
::RegCloseKey(keyloc);
break;
}
if (CompareVersion(curVer, maxVer) >= 0) {
PL_strcpy(newestPath, path);
wcscpy(newestPath, path);
CopyVersion(&maxVer, &curVer);
tryNPRuntimeJavaPlugIn = TryToUseNPRuntimeJavaPlugIn(curKey);
}
@@ -404,20 +407,20 @@ nsPluginDirServiceProvider::GetFile(const char *prop, PRBool *persistant,
// If nothing is found, then don't add \bin dir and don't set
// CurrentVersion for Mozilla
if (newestPath[0] != 0) {
if (ERROR_SUCCESS == ::RegCreateKeyEx(HKEY_LOCAL_MACHINE, mozPath, 0,
if (ERROR_SUCCESS == ::RegCreateKeyExW(HKEY_LOCAL_MACHINE, mozPath, 0,
NULL, REG_OPTION_NON_VOLATILE,
KEY_SET_VALUE|KEY_QUERY_VALUE,
NULL, &entryloc, NULL)) {
if (ERROR_SUCCESS != ::RegQueryValueEx(entryloc, "CurrentVersion", 0,
if (ERROR_SUCCESS != ::RegQueryValueExW(entryloc, L"CurrentVersion", 0,
NULL, NULL, NULL)) {
::RegSetValueEx(entryloc, "CurrentVersion", 0, REG_SZ,
::RegSetValueExW(entryloc, L"CurrentVersion", 0, REG_SZ,
(const BYTE*)MOZILLA_VERSION,
sizeof(MOZILLA_VERSION));
}
::RegCloseKey(entryloc);
}
PL_strcat(newestPath,"\\bin");
wcscat(newestPath,L"\\bin");
// See whether we should use the new NPRuntime-based Java Plug-In:
// - If tryNPRuntimeJavaPlugIn is true, and
@@ -427,13 +430,13 @@ nsPluginDirServiceProvider::GetFile(const char *prop, PRBool *persistant,
// one any more.
if (tryNPRuntimeJavaPlugIn) {
// See whether the "new_plugin" directory exists
char tmpPath[JAVA_PATH_SIZE];
PL_strcpy(tmpPath, newestPath);
PL_strcat(tmpPath, "\\new_plugin");
wchar_t tmpPath[JAVA_PATH_SIZE];
wcscpy(tmpPath, newestPath);
wcscat(tmpPath, L"\\new_plugin");
nsCOMPtr<nsILocalFile> tmpFile;
if (NS_SUCCEEDED(NS_NewNativeLocalFile(nsDependentCString(tmpPath),
PR_TRUE,
getter_AddRefs(tmpFile))) &&
if (NS_SUCCEEDED(NS_NewLocalFile(nsDependentString(tmpPath),
PR_TRUE,
getter_AddRefs(tmpFile))) &&
tmpFile) {
PRBool exists = PR_FALSE;
PRBool isDir = PR_FALSE;
@@ -442,15 +445,15 @@ nsPluginDirServiceProvider::GetFile(const char *prop, PRBool *persistant,
// Assume we're supposed to use this as the search
// directory for the Java Plug-In instead of the normal
// one
PL_strcpy(newestPath, tmpPath);
wcscpy(newestPath, tmpPath);
}
}
}
rv = NS_NewNativeLocalFile(nsDependentCString(newestPath), PR_TRUE,
getter_AddRefs(localFile));
rv = NS_NewLocalFile(nsDependentString(newestPath), PR_TRUE,
getter_AddRefs(localFile));
}
} else if (nsCRT::strcmp(prop, NS_WIN_QUICKTIME_SCAN_KEY) == 0) {
} else if (strcmp(prop, NS_WIN_QUICKTIME_SCAN_KEY) == 0) {
nsXPIDLCString strVer;
if (NS_FAILED(prefs->GetCharPref(prop, getter_Copies(strVer))))
return NS_ERROR_FAILURE;
@@ -463,33 +466,33 @@ nsPluginDirServiceProvider::GetFile(const char *prop, PRBool *persistant,
DWORD type;
verBlock qtVer;
ClearVersion(&qtVer);
char path[_MAX_PATH];
wchar_t path[_MAX_PATH];
DWORD pathlen = sizeof(path);
// First we need to check the version of Quicktime via checking
// the EXE's version table
if (ERROR_SUCCESS == ::RegOpenKeyEx(HKEY_LOCAL_MACHINE, "software\\Microsoft\\Windows\\CurrentVersion\\App Paths\\QuickTimePlayer.exe", 0, KEY_READ, &keyloc)) {
if (ERROR_SUCCESS == ::RegQueryValueEx(keyloc, NULL, NULL, &type,
(LPBYTE)&path, &pathlen)) {
GetFileVersion((char*)path, &qtVer);
if (ERROR_SUCCESS == ::RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"software\\Microsoft\\Windows\\CurrentVersion\\App Paths\\QuickTimePlayer.exe", 0, KEY_READ, &keyloc)) {
if (ERROR_SUCCESS == ::RegQueryValueExW(keyloc, NULL, NULL, &type,
(LPBYTE)&path, &pathlen)) {
GetFileVersion(path, &qtVer);
}
::RegCloseKey(keyloc);
}
if (CompareVersion(qtVer, minVer) < 0)
return rv;
if (ERROR_SUCCESS == ::RegOpenKeyEx(HKEY_LOCAL_MACHINE, "software\\Apple Computer, Inc.\\QuickTime", 0, KEY_READ, &keyloc)) {
if (ERROR_SUCCESS == ::RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"software\\Apple Computer, Inc.\\QuickTime", 0, KEY_READ, &keyloc)) {
DWORD pathlen = sizeof(path);
result = ::RegQueryValueEx(keyloc, "InstallDir", NULL, &type,
result = ::RegQueryValueExW(keyloc, L"InstallDir", NULL, &type,
(LPBYTE)&path, &pathlen);
PL_strcat(path, "\\Plugins");
wcscat(path, L"\\Plugins");
if (result == ERROR_SUCCESS)
rv = NS_NewNativeLocalFile(nsDependentCString(path), PR_TRUE,
getter_AddRefs(localFile));
rv = NS_NewLocalFile(nsDependentString(path), PR_TRUE,
getter_AddRefs(localFile));
::RegCloseKey(keyloc);
}
} else if (nsCRT::strcmp(prop, NS_WIN_WMP_SCAN_KEY) == 0) {
} else if (strcmp(prop, NS_WIN_WMP_SCAN_KEY) == 0) {
nsXPIDLCString strVer;
if (NS_FAILED(prefs->GetCharPref(prop, getter_Copies(strVer))))
return NS_ERROR_FAILURE;
@@ -501,33 +504,33 @@ nsPluginDirServiceProvider::GetFile(const char *prop, PRBool *persistant,
DWORD type;
verBlock wmpVer;
ClearVersion(&wmpVer);
char path[_MAX_PATH];
wchar_t path[_MAX_PATH];
DWORD pathlen = sizeof(path);
// First we need to check the version of WMP
if (ERROR_SUCCESS == ::RegOpenKeyEx(HKEY_LOCAL_MACHINE, "software\\Microsoft\\Windows\\CurrentVersion\\App Paths\\wmplayer.exe", 0, KEY_READ, &keyloc)) {
if (ERROR_SUCCESS == ::RegQueryValueEx(keyloc, NULL, NULL, &type,
(LPBYTE)&path, &pathlen)) {
GetFileVersion((char*)path, &wmpVer);
if (ERROR_SUCCESS == ::RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"software\\Microsoft\\Windows\\CurrentVersion\\App Paths\\wmplayer.exe", 0, KEY_READ, &keyloc)) {
if (ERROR_SUCCESS == ::RegQueryValueExW(keyloc, NULL, NULL, &type,
(LPBYTE)&path, &pathlen)) {
GetFileVersion(path, &wmpVer);
}
::RegCloseKey(keyloc);
}
if (CompareVersion(wmpVer, minVer) < 0)
return rv;
if (ERROR_SUCCESS == ::RegOpenKeyEx(HKEY_LOCAL_MACHINE,
"software\\Microsoft\\MediaPlayer", 0,
if (ERROR_SUCCESS == ::RegOpenKeyExW(HKEY_LOCAL_MACHINE,
L"software\\Microsoft\\MediaPlayer", 0,
KEY_READ, &keyloc)) {
if (ERROR_SUCCESS == ::RegQueryValueEx(keyloc, "Installation Directory",
if (ERROR_SUCCESS == ::RegQueryValueExW(keyloc, L"Installation Directory",
NULL, &type, (LPBYTE)&path,
&pathlen)) {
rv = NS_NewNativeLocalFile(nsDependentCString(path), PR_TRUE,
getter_AddRefs(localFile));
rv = NS_NewLocalFile(nsDependentString(path), PR_TRUE,
getter_AddRefs(localFile));
}
::RegCloseKey(keyloc);
}
} else if (nsCRT::strcmp(prop, NS_WIN_ACROBAT_SCAN_KEY) == 0) {
} else if (strcmp(prop, NS_WIN_ACROBAT_SCAN_KEY) == 0) {
nsXPIDLCString strVer;
if (NS_FAILED(prefs->GetCharPref(prop, getter_Copies(strVer)))) {
return NS_ERROR_FAILURE;
@@ -546,16 +549,16 @@ nsPluginDirServiceProvider::GetFile(const char *prop, PRBool *persistant,
DWORD pathlen;
verBlock maxVer;
ClearVersion(&maxVer);
char curKey[_MAX_PATH] = "software\\Adobe\\Acrobat Reader";
char path[_MAX_PATH];
wchar_t curKey[_MAX_PATH] = L"software\\Adobe\\Acrobat Reader";
wchar_t path[_MAX_PATH];
// Add + 8 to prevent buffer overrun when adding \browser
char newestPath[_MAX_PATH + 8];
wchar_t newestPath[_MAX_PATH + 8];
newestPath[0] = 0;
if (ERROR_SUCCESS != ::RegOpenKeyEx(HKEY_LOCAL_MACHINE, curKey, 0,
if (ERROR_SUCCESS != ::RegOpenKeyExW(HKEY_LOCAL_MACHINE, curKey, 0,
KEY_READ, &baseloc)) {
PL_strcpy(curKey, "software\\Adobe\\Adobe Acrobat");
if (ERROR_SUCCESS != ::RegOpenKeyEx(HKEY_LOCAL_MACHINE, curKey, 0,
wcscpy(curKey, L"software\\Adobe\\Adobe Acrobat");
if (ERROR_SUCCESS != ::RegOpenKeyExW(HKEY_LOCAL_MACHINE, curKey, 0,
KEY_READ, &baseloc)) {
return NS_ERROR_FAILURE;
}
@@ -568,22 +571,22 @@ nsPluginDirServiceProvider::GetFile(const char *prop, PRBool *persistant,
path[0] = 0;
numChars = _MAX_PATH;
pathlen = sizeof(path);
result = ::RegEnumKeyEx(baseloc, index, curKey, &numChars, NULL, NULL,
result = ::RegEnumKeyExW(baseloc, index, curKey, &numChars, NULL, NULL,
NULL, &modTime);
index++;
if (ERROR_SUCCESS == result) {
verBlock curVer;
TranslateVersionStr(curKey, &curVer);
PL_strcat(curKey, "\\InstallPath");
if (ERROR_SUCCESS == ::RegOpenKeyEx(baseloc, curKey, 0,
TranslateVersionStr(NS_ConvertUTF16toUTF8(curKey).get(), &curVer);
wcscat(curKey, L"\\InstallPath");
if (ERROR_SUCCESS == ::RegOpenKeyExW(baseloc, curKey, 0,
KEY_QUERY_VALUE, &keyloc)) {
// We have a sub key
if (ERROR_SUCCESS == ::RegQueryValueEx(keyloc, NULL, NULL, &type,
if (ERROR_SUCCESS == ::RegQueryValueExW(keyloc, NULL, NULL, &type,
(LPBYTE)&path, &pathlen)) {
if (CompareVersion(curVer, maxVer) >= 0 &&
CompareVersion(curVer, minVer) >= 0) {
PL_strcpy(newestPath, path);
wcscpy(newestPath, path);
CopyVersion(&maxVer, &curVer);
}
}
@@ -596,9 +599,9 @@ nsPluginDirServiceProvider::GetFile(const char *prop, PRBool *persistant,
::RegCloseKey(baseloc);
if (newestPath[0] != 0) {
PL_strcat(newestPath,"\\browser");
rv = NS_NewNativeLocalFile(nsDependentCString(newestPath), PR_TRUE,
getter_AddRefs(localFile));
wcscat(newestPath, L"\\browser");
rv = NS_NewLocalFile(nsDependentString(newestPath), PR_TRUE,
getter_AddRefs(localFile));
}
}
@@ -626,32 +629,32 @@ nsPluginDirServiceProvider::GetPLIDDirectories(nsISimpleEnumerator **aEnumerator
nsresult
nsPluginDirServiceProvider::GetPLIDDirectoriesWithHKEY(HKEY aKey, nsCOMArray<nsILocalFile> &aDirs)
{
char subkey[_MAX_PATH] = "Software\\MozillaPlugins";
wchar_t subkey[_MAX_PATH] = L"Software\\MozillaPlugins";
HKEY baseloc;
if (ERROR_SUCCESS != ::RegOpenKeyEx(aKey, subkey, 0, KEY_READ, &baseloc))
if (ERROR_SUCCESS != ::RegOpenKeyExW(aKey, subkey, 0, KEY_READ, &baseloc))
return NS_ERROR_FAILURE;
DWORD index = 0;
DWORD subkeylen = _MAX_PATH;
FILETIME modTime;
while (ERROR_SUCCESS == ::RegEnumKeyEx(baseloc, index++, subkey, &subkeylen,
while (ERROR_SUCCESS == ::RegEnumKeyExW(baseloc, index++, subkey, &subkeylen,
NULL, NULL, NULL, &modTime)) {
subkeylen = _MAX_PATH;
HKEY keyloc;
if (ERROR_SUCCESS == ::RegOpenKeyEx(baseloc, subkey, 0, KEY_QUERY_VALUE,
if (ERROR_SUCCESS == ::RegOpenKeyExW(baseloc, subkey, 0, KEY_QUERY_VALUE,
&keyloc)) {
DWORD type;
char path[_MAX_PATH];
wchar_t path[_MAX_PATH];
DWORD pathlen = sizeof(path);
if (ERROR_SUCCESS == ::RegQueryValueEx(keyloc, "Path", NULL, &type,
if (ERROR_SUCCESS == ::RegQueryValueExW(keyloc, L"Path", NULL, &type,
(LPBYTE)&path, &pathlen)) {
nsCOMPtr<nsILocalFile> localFile;
if (NS_SUCCEEDED(NS_NewNativeLocalFile(nsDependentCString(path),
PR_TRUE,
getter_AddRefs(localFile))) &&
if (NS_SUCCEEDED(NS_NewLocalFile(nsDependentString(path),
PR_TRUE,
getter_AddRefs(localFile))) &&
localFile) {
// Some vendors use a path directly to the DLL so chop off
// the filename

View File

@@ -4052,18 +4052,18 @@ nsPluginHostImpl::TrySetUpPluginInstance(const char *aMimeType,
#ifdef XP_WIN
static BOOL firstJavaPlugin = FALSE;
BOOL restoreOrigDir = FALSE;
char origDir[_MAX_PATH];
PRUnichar origDir[_MAX_PATH];
if (isJavaPlugin && !firstJavaPlugin) {
DWORD dw = ::GetCurrentDirectory(_MAX_PATH, origDir);
DWORD dw = ::GetCurrentDirectoryW(_MAX_PATH, origDir);
NS_ASSERTION(dw <= _MAX_PATH, "Falied to obtain the current directory, which may leads to incorrect class laoding");
nsCOMPtr<nsIFile> binDirectory;
result = NS_GetSpecialDirectory(NS_XPCOM_CURRENT_PROCESS_DIR,
getter_AddRefs(binDirectory));
if (NS_SUCCEEDED(result)) {
nsCAutoString path;
binDirectory->GetNativePath(path);
restoreOrigDir = ::SetCurrentDirectory(path.get());
nsAutoString path;
binDirectory->GetPath(path);
restoreOrigDir = ::SetCurrentDirectoryW(path.get());
}
}
#endif
@@ -4071,7 +4071,7 @@ nsPluginHostImpl::TrySetUpPluginInstance(const char *aMimeType,
#ifdef XP_WIN
if (!firstJavaPlugin && restoreOrigDir) {
BOOL bCheck = ::SetCurrentDirectory(origDir);
BOOL bCheck = ::SetCurrentDirectoryW(origDir);
NS_ASSERTION(bCheck, " Error restoring driectoy");
firstJavaPlugin = TRUE;
}

View File

@@ -62,7 +62,7 @@
static NS_DEFINE_CID(kCPluginManagerCID, NS_PLUGINMANAGER_CID); // needed for NS_TRY_SAFE_CALL
#define NS_PLUGIN_WINDOW_PROPERTY_ASSOCIATION "MozillaPluginWindowPropertyAssociation"
#define NS_PLUGIN_WINDOW_PROPERTY_ASSOCIATION L"MozillaPluginWindowPropertyAssociation"
typedef nsTWeakRef<class nsPluginNativeWindowWin> PluginWindowWeakRef;
@@ -203,7 +203,7 @@ NS_IMETHODIMP nsDelayedPopupsEnabledEvent::Run()
*/
static LRESULT CALLBACK PluginWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
nsPluginNativeWindowWin * win = (nsPluginNativeWindowWin *)::GetProp(hWnd, NS_PLUGIN_WINDOW_PROPERTY_ASSOCIATION);
nsPluginNativeWindowWin * win = (nsPluginNativeWindowWin *)::GetPropW(hWnd, NS_PLUGIN_WINDOW_PROPERTY_ASSOCIATION);
if (!win)
return TRUE;
@@ -526,10 +526,10 @@ nsresult nsPluginNativeWindowWin::SubclassAndAssociateWindow()
if (!mPluginWinProc)
return NS_ERROR_FAILURE;
nsPluginNativeWindowWin * win = (nsPluginNativeWindowWin *)::GetProp(hWnd, NS_PLUGIN_WINDOW_PROPERTY_ASSOCIATION);
nsPluginNativeWindowWin * win = (nsPluginNativeWindowWin *)::GetPropW(hWnd, NS_PLUGIN_WINDOW_PROPERTY_ASSOCIATION);
NS_ASSERTION(!win || (win == this), "plugin window already has property and this is not us");
if (!::SetProp(hWnd, NS_PLUGIN_WINDOW_PROPERTY_ASSOCIATION, (HANDLE)this))
if (!::SetPropW(hWnd, NS_PLUGIN_WINDOW_PROPERTY_ASSOCIATION, (HANDLE)this))
return NS_ERROR_FAILURE;
return NS_OK;
@@ -543,7 +543,7 @@ nsresult nsPluginNativeWindowWin::UndoSubclassAndAssociateWindow()
// remove window property
HWND hWnd = (HWND)window;
if (IsWindow(hWnd))
::RemoveProp(hWnd, NS_PLUGIN_WINDOW_PROPERTY_ASSOCIATION);
::RemovePropW(hWnd, NS_PLUGIN_WINDOW_PROPERTY_ASSOCIATION);
// restore the original win proc
// but only do this if this were us last time

View File

@@ -58,25 +58,18 @@
/* Local helper functions */
static char* GetKeyValue(char* verbuf, char* key)
static char* GetKeyValue(wchar_t* verbuf, wchar_t* key)
{
char *buf = NULL;
wchar_t *buf = NULL;
UINT blen;
::VerQueryValue(verbuf,
TEXT(key),
::VerQueryValueW(verbuf,
key,
(void **)&buf, &blen);
if(buf != NULL)
{
#ifdef WINCE
// On windows CE, the verbuf is wide and the shunt
// layer can't do much about it. So, here we
// convert the wide string.
return PL_strdup(NS_ConvertUTF16toUTF8((PRUnichar*)buf).get());
#else
return PL_strdup(buf);
#endif
return strdup(NS_ConvertUTF16toUTF8(buf).get());
}
return nsnull;
@@ -216,35 +209,35 @@ nsresult nsPluginFile::LoadPlugin(PRLibrary* &outLibrary)
if (!mPlugin)
return NS_ERROR_NULL_POINTER;
nsCAutoString temp;
mPlugin->GetNativePath(temp);
nsAutoString temp;
mPlugin->GetPath(temp);
char* index;
char* pluginFolderPath = PL_strdup(temp.get());
PRUnichar* index;
PRUnichar* pluginFolderPath = _wcsdup(temp.get());
index = PL_strrchr(pluginFolderPath, '\\');
index = wcsrchr(pluginFolderPath, '\\');
*index = 0;
BOOL restoreOrigDir = FALSE;
char aOrigDir[MAX_PATH + 1];
DWORD dwCheck = ::GetCurrentDirectory(sizeof(aOrigDir), aOrigDir);
PRUnichar aOrigDir[MAX_PATH + 1];
DWORD dwCheck = ::GetCurrentDirectoryW(sizeof(aOrigDir), aOrigDir);
NS_ASSERTION(dwCheck <= MAX_PATH + 1, "Error in Loading plugin");
if (dwCheck <= MAX_PATH + 1)
{
restoreOrigDir = ::SetCurrentDirectory(pluginFolderPath);
restoreOrigDir = ::SetCurrentDirectoryW(pluginFolderPath);
NS_ASSERTION(restoreOrigDir, "Error in Loading plugin");
}
outLibrary = PR_LoadLibrary(temp.get());
outLibrary = PR_LoadLibrary(NS_ConvertUTF16toUTF8(temp).get());
if (restoreOrigDir)
{
BOOL bCheck = ::SetCurrentDirectory(aOrigDir);
BOOL bCheck = ::SetCurrentDirectoryW(aOrigDir);
NS_ASSERTION(bCheck, "Error in Loading plugin");
}
PL_strfree(pluginFolderPath);
free(pluginFolderPath);
return NS_OK;
}
@@ -256,37 +249,39 @@ nsresult nsPluginFile::GetPluginInfo(nsPluginInfo& info)
{
nsresult res = NS_OK;
DWORD zerome, versionsize;
char* verbuf = nsnull;
PRUnichar* verbuf = nsnull;
const char* path;
const PRUnichar* path;
if (!mPlugin)
return NS_ERROR_NULL_POINTER;
nsCAutoString temp;
mPlugin->GetNativePath(temp);
nsAutoString temp;
mPlugin->GetPath(temp);
path = temp.get();
versionsize = ::GetFileVersionInfoSize((char*)path, &zerome);
versionsize = ::GetFileVersionInfoSizeW(path, &zerome);
if (versionsize > 0)
verbuf = (char *)PR_Malloc(versionsize);
verbuf = (wchar_t *)PR_Malloc(versionsize);
if(!verbuf)
return NS_ERROR_OUT_OF_MEMORY;
if(::GetFileVersionInfo((char*)path, NULL, versionsize, verbuf))
if(::GetFileVersionInfoW(path, NULL, versionsize, verbuf))
{
info.fName = GetKeyValue(verbuf, "\\StringFileInfo\\040904E4\\ProductName");
info.fDescription = GetKeyValue(verbuf, "\\StringFileInfo\\040904E4\\FileDescription");
info.fName = GetKeyValue(verbuf, L"\\StringFileInfo\\040904E4\\ProductName");
info.fDescription = GetKeyValue(verbuf, L"\\StringFileInfo\\040904E4\\FileDescription");
char *mimeType = GetKeyValue(verbuf, "\\StringFileInfo\\040904E4\\MIMEType");
char *mimeDescription = GetKeyValue(verbuf, "\\StringFileInfo\\040904E4\\FileOpenName");
char *extensions = GetKeyValue(verbuf, "\\StringFileInfo\\040904E4\\FileExtents");
char *mimeType = GetKeyValue(verbuf, L"\\StringFileInfo\\040904E4\\MIMEType");
char *mimeDescription = GetKeyValue(verbuf, L"\\StringFileInfo\\040904E4\\FileOpenName");
char *extensions = GetKeyValue(verbuf, L"\\StringFileInfo\\040904E4\\FileExtents");
info.fVariantCount = CalculateVariantCount(mimeType);
info.fMimeTypeArray = MakeStringArray(info.fVariantCount, mimeType);
info.fMimeDescriptionArray = MakeStringArray(info.fVariantCount, mimeDescription);
info.fExtensionArray = MakeStringArray(info.fVariantCount, extensions);
info.fFileName = PL_strdup(path);
// fFileName is narrow. fix?
info.fFileName = PL_strdup(NS_ConvertUTF16toUTF8(path).get());
PL_strfree(mimeType);
PL_strfree(mimeDescription);

View File

@@ -79,17 +79,18 @@ static BOOL onInitDialog(HWND hWnd, HWND hWndFocus, LPARAM lParam)
pPlugin->m_hWndDialog = hWnd;
char szString[512];
LoadString(hInst, IDS_TITLE, szString, sizeof(szString));
SetWindowText(hWnd, szString);
wchar_t szString[512];
LoadStringW(hInst, IDS_TITLE, szString, sizeof(szString));
SetWindowTextW(hWnd, szString);
LoadString(hInst, IDS_INFO, szString, sizeof(szString));
SetDlgItemText(hWnd, IDC_STATIC_INFO, szString);
LoadStringW(hInst, IDS_INFO, szString, sizeof(szString));
SetDlgItemTextW(hWnd, IDC_STATIC_INFO, szString);
SetDlgItemText(hWnd, IDC_STATIC_INFOTYPE, (LPSTR)pPlugin->m_pNPMIMEType);
// convert m_pNPMIMEType dougt
SetDlgItemTextA(hWnd, IDC_STATIC_INFOTYPE, pPlugin->m_pNPMIMEType);
LoadString(hInst, IDS_LOCATION, szString, sizeof(szString));
SetDlgItemText(hWnd, IDC_STATIC_LOCATION, szString);
LoadStringW(hInst, IDS_LOCATION, szString, sizeof(szString));
SetDlgItemTextW(hWnd, IDC_STATIC_LOCATION, szString);
char contentTypeIsJava = 0;
@@ -99,30 +100,36 @@ static BOOL onInitDialog(HWND hWnd, HWND hWndFocus, LPARAM lParam)
}
if(pPlugin->m_szPageURL == NULL || contentTypeIsJava)
LoadString(hInst, IDS_FINDER_PAGE, szString, sizeof(szString));
LoadStringW(hInst, IDS_FINDER_PAGE, szString, sizeof(szString));
else
strncpy(szString, pPlugin->m_szPageURL,511); // defect #362738
{
MultiByteToWideChar( CP_ACP, 0,
pPlugin->m_szPageURL,
strlen(pPlugin->m_szPageURL)+1,
szString,
511 ); // defect #362738
}
SetDlgItemTextWrapped(hWnd, IDC_STATIC_URL, szString);
LoadString(hInst, IDS_QUESTION, szString, sizeof(szString));
SetDlgItemText(hWnd, IDC_STATIC_QUESTION, szString);
LoadStringW(hInst, IDS_QUESTION, szString, sizeof(szString));
SetDlgItemTextW(hWnd, IDC_STATIC_QUESTION, szString);
SetDlgItemText(hWnd, IDC_STATIC_WARNING, "");
SetDlgItemTextW(hWnd, IDC_STATIC_WARNING, L"");
if(!pPlugin->m_bOnline)
{
EnableWindow(GetDlgItem(hWnd, IDC_GET_PLUGIN), FALSE);
LoadString(hInst, IDS_WARNING_OFFLINE, szString, sizeof(szString));
SetDlgItemText(hWnd, IDC_STATIC_WARNING, szString);
SetDlgItemText(hWnd, IDC_STATIC_QUESTION, "");
LoadStringW(hInst, IDS_WARNING_OFFLINE, szString, sizeof(szString));
SetDlgItemTextW(hWnd, IDC_STATIC_WARNING, szString);
SetDlgItemTextW(hWnd, IDC_STATIC_QUESTION, L"");
return TRUE;
}
if((!pPlugin->m_bJava) || (!pPlugin->m_bJavaScript) || (!pPlugin->m_bSmartUpdate))
{
LoadString(hInst, IDS_WARNING_JS, szString, sizeof(szString));
SetDlgItemText(hWnd, IDC_STATIC_WARNING, szString);
LoadStringW(hInst, IDS_WARNING_JS, szString, sizeof(szString));
SetDlgItemTextW(hWnd, IDC_STATIC_WARNING, szString);
return TRUE;
}

View File

@@ -86,18 +86,18 @@ NPError NP_LOADDS NPP_New(NPMIMEType pluginType,
for(int i = 0; i < argc; i++)
{
if(lstrcmpi(argn[i],"pluginspage") == 0 && argv[i] != NULL)
if(strcmpi(argn[i],"pluginspage") == 0 && argv[i] != NULL)
szPageURL = (char *)argv[i];
else if(lstrcmpi(argn[i],"codebase") == 0 && argv[i] != NULL)
else if(strcmpi(argn[i],"codebase") == 0 && argv[i] != NULL)
szPageURL = (char *)argv[i];
else if(lstrcmpi(argn[i],"pluginurl") == 0 && argv[i] != NULL)
else if(strcmpi(argn[i],"pluginurl") == 0 && argv[i] != NULL)
szFileURL = (char *)argv[i];
else if(lstrcmpi(argn[i],"classid") == 0 && argv[i] != NULL)
else if(strcmpi(argn[i],"classid") == 0 && argv[i] != NULL)
szFileURL = (char *)argv[i];
else if(lstrcmpi(argn[i],"SRC") == 0 && argv[i] != NULL)
else if(strcmpi(argn[i],"SRC") == 0 && argv[i] != NULL)
buf = (char *)argv[i];
else if(lstrcmpi(argn[i],"HIDDEN") == 0 && argv[i] != NULL)
bHidden = (lstrcmp((char *)argv[i], "TRUE") == 0);
else if(strcmpi(argn[i],"HIDDEN") == 0 && argv[i] != NULL)
bHidden = (strcmp((char *)argv[i], "TRUE") == 0);
}
/* some post-processing on the filename to attempt to extract the extension: */

View File

@@ -51,7 +51,7 @@
nsIServiceManager * gServiceManager = NULL;
static char szNullPluginWindowClassName[] = CLASS_NULL_PLUGIN;
static wchar_t szNullPluginWindowClassName[] = CLASS_NULL_PLUGIN;
static LRESULT CALLBACK NP_LOADDS PluginWndProc(HWND, UINT, WPARAM, LPARAM);
@@ -66,7 +66,7 @@ BOOL RegisterNullPluginWindowClass()
{
assert(hInst != NULL);
WNDCLASS wc;
WNDCLASSW wc;
memset(&wc, 0, sizeof(wc));
@@ -78,14 +78,14 @@ BOOL RegisterNullPluginWindowClass()
wc.hbrBackground = HBRUSH(COLOR_WINDOW + 1);
wc.lpszClassName = szNullPluginWindowClassName;
ATOM aRet = RegisterClass(&wc);
ATOM aRet = RegisterClassW(&wc);
return (aRet != NULL);
}
void UnregisterNullPluginWindowClass()
{
assert(hInst != NULL);
UnregisterClass(szNullPluginWindowClassName, hInst);
UnregisterClassW(szNullPluginWindowClassName, hInst);
}
/*********************************************/
@@ -129,41 +129,41 @@ CPlugin::CPlugin(HINSTANCE hInst,
if(pluginType && *pluginType)
{
m_pNPMIMEType = (NPMIMEType)new char[lstrlen((LPSTR)pluginType) + 1];
m_pNPMIMEType = (NPMIMEType) new char[strlen(pluginType) + 1];
if(m_pNPMIMEType != NULL)
lstrcpy((LPSTR)m_pNPMIMEType, pluginType);
strcpy(m_pNPMIMEType, pluginType);
}
if(szPageURL && *szPageURL)
{
m_szPageURL = new char[lstrlen(szPageURL) + 1];
m_szPageURL = new char[strlen(szPageURL) + 1];
if(m_szPageURL != NULL)
lstrcpy(m_szPageURL, szPageURL);
strcpy(m_szPageURL, szPageURL);
}
if(szFileURL && *szFileURL)
{
m_szFileURL = new char[lstrlen(szFileURL) + 1];
m_szFileURL = new char[strlen(szFileURL) + 1];
if(m_szFileURL != NULL)
lstrcpy(m_szFileURL, szFileURL);
strcpy(m_szFileURL, szFileURL);
}
if(szFileExtension && *szFileExtension)
{
m_szFileExtension = new char[lstrlen(szFileExtension) + 1];
m_szFileExtension = new char[strlen(szFileExtension) + 1];
if(m_szFileExtension != NULL)
lstrcpy(m_szFileExtension, szFileExtension);
strcpy(m_szFileExtension, szFileExtension);
}
m_hIcon = LoadIcon(m_hInst, MAKEINTRESOURCE(IDI_PLUGICON));
char szString[1024] = {'\0'};
LoadString(m_hInst, IDS_CLICK_TO_GET, szString, sizeof(szString));
wchar_t szString[1024] = {'\0'};
LoadStringW(m_hInst, IDS_CLICK_TO_GET, szString, sizeof(szString));
if(*szString)
{
m_szCommandMessage = new char[lstrlen(szString) + 1];
m_szCommandMessage = new wchar_t[wcslen(szString) + 1];
if(m_szCommandMessage != NULL)
lstrcpy(m_szCommandMessage, szString);
wcscpy(m_szCommandMessage, szString);
}
}
@@ -253,8 +253,8 @@ BOOL CPlugin::init(HWND hWndParent)
RECT rcParent;
GetClientRect(m_hWndParent, &rcParent);
CreateWindow(szNullPluginWindowClassName,
"NULL Plugin",
CreateWindowW(szNullPluginWindowClassName,
L"NULL Plugin",
WS_CHILD,
0,0, rcParent.right, rcParent.bottom,
m_hWndParent,
@@ -332,10 +332,10 @@ LPSTR CPlugin::createURLString()
// check if there is file URL first
if(!m_bSmartUpdate && m_szFileURL != NULL)
{
m_szURLString = new char[lstrlen(m_szFileURL) + 1];
m_szURLString = new char[strlen(m_szFileURL) + 1];
if(m_szURLString == NULL)
return NULL;
lstrcpy(m_szURLString, m_szFileURL);
strcpy(m_szURLString, m_szFileURL);
return m_szURLString;
}
@@ -351,18 +351,18 @@ LPSTR CPlugin::createURLString()
if(!m_bSmartUpdate && m_szPageURL != NULL && !contentTypeIsJava)
{
szAddress = new char[lstrlen(m_szPageURL) + 1];
szAddress = new char[strlen(m_szPageURL) + 1];
if(szAddress == NULL)
return NULL;
lstrcpy(szAddress, m_szPageURL);
strcpy(szAddress, m_szPageURL);
m_szURLString = new char[lstrlen(szAddress) + 1 + lstrlen((LPSTR)m_pNPMIMEType) + 1];
m_szURLString = new char[strlen(szAddress) + 1 + strlen(m_pNPMIMEType) + 1];
if(m_szURLString == NULL)
return NULL;
// Append the MIME type to the URL
wsprintf(m_szURLString, "%s?%s", szAddress, (LPSTR)m_pNPMIMEType);
sprintf(m_szURLString, "%s?%s", szAddress, (LPSTR)m_pNPMIMEType);
}
else // default
{
@@ -374,20 +374,20 @@ LPSTR CPlugin::createURLString()
urlToOpen = szPageUrlForJVM;
}
szAddress = new char[lstrlen(urlToOpen) + 1];
szAddress = new char[strlen(urlToOpen) + 1];
if(szAddress == NULL)
return NULL;
lstrcpy(szAddress, urlToOpen);
strcpy(szAddress, urlToOpen);
m_szURLString = new char[lstrlen(szAddress) + 10 +
lstrlen((LPSTR)m_pNPMIMEType) + 1];
m_szURLString = new char[strlen(szAddress) + 10 +
strlen(m_pNPMIMEType) + 1];
if(m_szURLString == NULL)
return NULL;
// Append the MIME type to the URL
wsprintf(m_szURLString, "%s?mimetype=%s",
szAddress, (LPSTR)m_pNPMIMEType);
sprintf(m_szURLString, "%s?mimetype=%s",
szAddress, m_pNPMIMEType);
}
else
{
@@ -409,14 +409,15 @@ LPSTR CPlugin::createURLString()
m_szFileURL[0] = '\0';
}
m_szURLString = new char[lstrlen(szPluginFinderCommandBeginning) + lstrlen(urlToOpen) + 10 +
lstrlen((LPSTR)m_pNPMIMEType) + 13 +
lstrlen((LPSTR)m_szPageURL) + 11 +
lstrlen((LPSTR)m_szFileURL) +
lstrlen(szPluginFinderCommandEnd) + 1];
wsprintf(m_szURLString, "%s%s?mimetype=%s&pluginspage=%s&pluginurl=%s%s",
szPluginFinderCommandBeginning, urlToOpen,
(LPSTR)m_pNPMIMEType, m_szPageURL, m_szFileURL, szPluginFinderCommandEnd);
m_szURLString = new char[strlen(szPluginFinderCommandBeginning) + strlen(urlToOpen) + 10 +
strlen((LPSTR)m_pNPMIMEType) + 13 +
strlen((LPSTR)m_szPageURL) + 11 +
strlen((LPSTR)m_szFileURL) +
strlen(szPluginFinderCommandEnd) + 1];
sprintf(m_szURLString, "%s%s?mimetype=%s&pluginspage=%s&pluginurl=%s%s",
szPluginFinderCommandBeginning, urlToOpen,
m_pNPMIMEType, m_szPageURL, m_szFileURL,
szPluginFinderCommandEnd);
}
}
@@ -512,13 +513,13 @@ void CPlugin::getPlugin()
m_szCommandMessage = NULL;
}
char szString[1024] = {'\0'};
LoadString(m_hInst, IDS_CLICK_WHEN_DONE, szString, sizeof(szString));
wchar_t szString[1024] = {'\0'};
LoadStringW(m_hInst, IDS_CLICK_WHEN_DONE, szString, sizeof(szString));
if(*szString)
{
m_szCommandMessage = new char[lstrlen(szString) + 1];
m_szCommandMessage = new wchar_t[wcslen(szString) + 1];
if(m_szCommandMessage != NULL)
lstrcpy(m_szCommandMessage, szString);
wcscpy(m_szCommandMessage, szString);
}
InvalidateRect(m_hWnd, NULL, TRUE);
@@ -548,20 +549,20 @@ void CPlugin::URLNotify(const char * szURL)
dbgOut2("CPlugin::URLNotify(), URL '%s'", szURL);
NPStream * pStream = NULL;
char buf[256];
wchar_t buf[256];
assert(m_hInst != NULL);
assert(m_pNPInstance != NULL);
int iSize = LoadString(m_hInst, IDS_GOING2HTML, buf, sizeof(buf));
int iSize = LoadStringW(m_hInst, IDS_GOING2HTML, buf, sizeof(buf));
NPError rc = NPN_NewStream(m_pNPInstance, "text/html", "asd_plugin_finder", &pStream);
if (rc != NPERR_NO_ERROR)
return;
//char buf[] = "<html>\n<body>\n\n<h2 align=center>NPN_NewStream / NPN_Write - This seems to work.</h2>\n\n</body>\n</html>";
//wchar_t buf[] = L"<html>\n<body>\n\n<h2 align=center>NPN_NewStream / NPN_Write - This seems to work.</h2>\n\n</body>\n</html>";
NPN_Write(m_pNPInstance, pStream, iSize, buf);
NPN_Write(m_pNPInstance, pStream, iSize, buf); // buf is unicode now.
NPN_DestroyStream(m_pNPInstance, pStream, NPRES_DONE);
}
@@ -594,12 +595,12 @@ NPError CPlugin::destroyStream(NPStream *stream, NPError reason)
BOOL CPlugin::readyToRefresh()
{
char szString[1024] = {'\0'};
LoadString(m_hInst, IDS_CLICK_WHEN_DONE, szString, sizeof(szString));
wchar_t szString[1024] = {'\0'};
LoadStringW(m_hInst, IDS_CLICK_WHEN_DONE, szString, sizeof(szString));
if(m_szCommandMessage == NULL)
return FALSE;
return (lstrcmp(m_szCommandMessage, szString) == 0);
return (wcscmp(m_szCommandMessage, szString) == 0);
}
//***************************
@@ -626,7 +627,7 @@ void CPlugin::onRButtonUp(HWND hWnd, int x, int y, UINT keyFlags)
NPN_GetURL(m_pNPInstance, "javascript:navigator.plugins.refresh(true)", "_self");
}
static void DrawCommandMessage(HDC hDC, LPSTR szString, LPRECT lprc)
static void DrawCommandMessage(HDC hDC, wchar_t* szString, LPRECT lprc)
{
if(szString == NULL)
return;
@@ -637,7 +638,7 @@ static void DrawCommandMessage(HDC hDC, LPSTR szString, LPRECT lprc)
HFONT hFontOld = SelectFont(hDC, hFont);
SIZE sz;
GetTextExtentPoint32(hDC, szString, lstrlen(szString), &sz);
GetTextExtentPoint32W(hDC, szString, wcslen(szString), &sz);
POINT pt;
pt.x = sz.cx;
pt.y = sz.cy;
@@ -659,7 +660,7 @@ static void DrawCommandMessage(HDC hDC, LPSTR szString, LPRECT lprc)
int iModeOld = SetBkMode(hDC, TRANSPARENT);
COLORREF crColorOld = SetTextColor(hDC, RGB(0,0,0));
DrawText(hDC, szString, lstrlen(szString), &rcText, DT_CENTER|DT_VCENTER);
DrawTextW(hDC, szString, wcslen(szString), &rcText, DT_CENTER|DT_VCENTER);
SetTextColor(hDC, crColorOld);
SetBkMode(hDC, iModeOld);
SelectFont(hDC, hFontOld);

View File

@@ -51,7 +51,7 @@ private:
HICON m_hIcon;
char* m_szURLString;
char* m_szCommandMessage;
wchar_t* m_szCommandMessage;
BOOL m_bWaitingStreamFromPFS;
NPStream* m_PFSStream;
@@ -118,7 +118,7 @@ public:
#define JVM_SMARTUPDATE_URL "http://java.com/download"
#ifdef WIN32
#define REGISTRY_PLACE "Software\\Netscape\\Netscape Navigator\\Default Plugin"
#define REGISTRY_PLACE L"Software\\Netscape\\Netscape Navigator\\Default Plugin"
#else
#define GWL_USERDATA 0
#define COLOR_3DSHADOW COLOR_BTNFACE
@@ -126,7 +126,7 @@ public:
#define COLOR_3DDKSHADOW COLOR_BTNSHADOW
#endif
#define CLASS_NULL_PLUGIN "NullPluginClass"
#define CLASS_NULL_PLUGIN L"NullPluginClass"
BOOL RegisterNullPluginWindowClass();
void UnregisterNullPluginWindowClass();

View File

@@ -45,8 +45,8 @@ HKEY openRegistry()
{
HKEY phkResult;
if(RegCreateKey(HKEY_CURRENT_USER, REGISTRY_PLACE, &phkResult) != ERROR_SUCCESS)
MessageBox(0, "Error creating Default Plugin registry key", "Default Plugin", MB_OK);
if(RegCreateKeyW(HKEY_CURRENT_USER, REGISTRY_PLACE, &phkResult) != ERROR_SUCCESS)
MessageBoxW(0, L"Error creating Default Plugin registry key", L"Default Plugin", MB_OK);
return phkResult;
}
@@ -56,30 +56,37 @@ BOOL IsNewMimeType(LPSTR mime)
{
HKEY hkey = openRegistry();
DWORD dwType, keysize = 512;
char keybuf[512];
wchar_t keybuf[512];
wchar_t wideMime[64];
if(RegQueryValueEx(hkey, mime, 0, &dwType, (LPBYTE) &keybuf, &keysize) == ERROR_SUCCESS)
MultiByteToWideChar(CP_ACP, 0,
mime,
strlen(mime) + 1,
wideMime,
64);
if(RegQueryValueExW(hkey, wideMime, 0, &dwType, (LPBYTE) &keybuf, &keysize) == ERROR_SUCCESS)
{
// key exists, must have already been here...
return FALSE;
}
else
{
if(RegSetValueEx(hkey, mime, 0, REG_SZ, (LPBYTE) "(none)", 7) != ERROR_SUCCESS)
MessageBox(0, "Error adding MIME type value", "Default Plugin", MB_OK);
if(RegSetValueExW(hkey, wideMime, 0, REG_SZ, (LPBYTE) L"(none)", 7) != ERROR_SUCCESS)
MessageBoxW(0, L"Error adding MIME type value", L"Default Plugin", MB_OK);
return TRUE;
}
}
// string length in pixels for the specific window (selected font)
static int getWindowStringLength(HWND hWnd, LPSTR lpsz)
static int getWindowStringLength(HWND hWnd, wchar_t* lpsz)
{
SIZE sz;
HDC hDC = GetDC(hWnd);
HFONT hWindowFont = GetWindowFont(hWnd);
HFONT hFontOld = SelectFont(hDC, hWindowFont);
GetTextExtentPoint32(hDC, lpsz, lstrlen(lpsz), &sz);
GetTextExtentPoint32W(hDC, lpsz, wcslen(lpsz), &sz);
POINT pt;
pt.x = sz.cx;
pt.y = sz.cy;
@@ -89,20 +96,20 @@ static int getWindowStringLength(HWND hWnd, LPSTR lpsz)
return (int)pt.x;
}
/****************************************************************/
/* */
/* void SetDlgItemTextWrapped(HWND hWnd, int iID, LPSTR szText) */
/* */
/* helper to wrap long lines in a static control, which do not */
/* wrap automatically if they do not have space characters */
/* */
/****************************************************************/
void SetDlgItemTextWrapped(HWND hWnd, int iID, LPSTR szText)
/*******************************************************************/
/* */
/* void SetDlgItemTextWrapped(HWND hWnd, int iID, wchar_t* szText) */
/* */
/* helper to wrap long lines in a static control, which do not */
/* wrap automatically if they do not have space characters */
/* */
/*******************************************************************/
void SetDlgItemTextWrapped(HWND hWnd, int iID, wchar_t* szText)
{
HWND hWndStatic = GetDlgItem(hWnd, iID);
if((szText == NULL) || (lstrlen(szText) == 0))
if((szText == NULL) || (wcslen(szText) == 0))
{
SetDlgItemText(hWnd, iID, "");
SetDlgItemTextW(hWnd, iID, L"");
return;
}
@@ -114,7 +121,7 @@ void SetDlgItemTextWrapped(HWND hWnd, int iID, LPSTR szText)
if(iStringLength <= iStaticLength)
{
SetDlgItemText(hWnd, iID, szText);
SetDlgItemTextW(hWnd, iID, szText);
return;
}
@@ -122,19 +129,19 @@ void SetDlgItemTextWrapped(HWND hWnd, int iID, LPSTR szText)
if(iBreaks <= 0)
return;
char * pBuf = new char[iStringLength + iBreaks + 1];
wchar_t * pBuf = new wchar_t[iStringLength + iBreaks + 1];
if(pBuf == NULL)
return;
lstrcpy(pBuf, "");
wcscpy(pBuf, L"");
int iStart = 0;
int iLines = 0;
for(int i = 0; i < iStringLength; i++)
{
char * sz = &szText[iStart];
wchar_t* sz = &szText[iStart];
int iIndex = i - iStart;
char ch = sz[iIndex + 1];
wchar_t ch = sz[iIndex + 1];
sz[iIndex + 1] = '\0';
@@ -145,7 +152,7 @@ void SetDlgItemTextWrapped(HWND hWnd, int iID, LPSTR szText)
sz[iIndex + 1] = ch;
if(iLines == iBreaks)
{
lstrcat(pBuf, sz);
wcscat(pBuf, sz);
break;
}
continue;
@@ -157,15 +164,15 @@ void SetDlgItemTextWrapped(HWND hWnd, int iID, LPSTR szText)
ch = sz[iIndex];
sz[iIndex] = '\0'; // terminate string one char shorter
lstrcat(pBuf, sz); // append the string
lstrcat(pBuf, " "); // append space character for successful wrapping
wcscat(pBuf, sz); // append the string
wcscat(pBuf, L" "); // append space character for successful wrapping
iStart += lstrlen(sz);// shift new start position
iStart += wcslen(sz); // shift new start position
sz[iIndex] = ch; // restore zeroed element
iLines++; // count lines
}
SetDlgItemText(hWnd, iID, pBuf);
SetDlgItemTextW(hWnd, iID, pBuf);
delete [] pBuf;
}

View File

@@ -40,6 +40,6 @@
HKEY openRegistry();
BOOL IsNewMimeType(LPSTR szMimeType);
void SetDlgItemTextWrapped(HWND hWnd, int iID, LPSTR szText);
void SetDlgItemTextWrapped(HWND hWnd, int iID, wchar_t* szText);
#endif // __UTILS_H__

View File

@@ -146,11 +146,11 @@ static LRESULT CALLBACK PluginWinProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM
nsPluginInstance *plugin = (nsPluginInstance *)GetWindowLong(hWnd, GWL_USERDATA);
if (plugin) {
const char * string = plugin->getVersion();
DrawText(hdc, string, strlen(string), &rc, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
DrawTextA(hdc, string, strlen(string), &rc, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
}
else {
char string[] = "Error occured";
DrawText(hdc, string, strlen(string), &rc, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
DrawTextA(hdc, string, strlen(string), &rc, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
}
EndPaint(hWnd, &ps);

View File

@@ -220,10 +220,10 @@ static LRESULT CALLBACK PluginWinProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM
// get our plugin instance object and ask it for the version string
nsPluginInstance *plugin = (nsPluginInstance *)GetWindowLong(hWnd, GWL_USERDATA);
if (plugin)
DrawText(hdc, plugin->mString, strlen(plugin->mString), &rc, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
DrawTextA(hdc, plugin->mString, strlen(plugin->mString), &rc, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
else {
char string[] = "Error occured";
DrawText(hdc, string, strlen(string), &rc, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
DrawTextA(hdc, string, strlen(string), &rc, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
}
EndPaint(hWnd, &ps);