From e0f87f7d9ac30737eb5e04ec4ce3a47eb8e1cc3d Mon Sep 17 00:00:00 2001 From: George Hazan Date: Mon, 16 Jul 2018 13:31:00 +0300 Subject: AssocMgr: code cleaning --- plugins/AssocMgr/src/assoclist.cpp | 18 ++++++------- plugins/AssocMgr/src/reg.cpp | 47 +++++++++++++++------------------ plugins/AssocMgr/src/utils.cpp | 54 +++++--------------------------------- plugins/AssocMgr/src/utils.h | 6 ----- 4 files changed, 35 insertions(+), 90 deletions(-) (limited to 'plugins/AssocMgr/src') diff --git a/plugins/AssocMgr/src/assoclist.cpp b/plugins/AssocMgr/src/assoclist.cpp index a55e200092..9b2db86cbd 100644 --- a/plugins/AssocMgr/src/assoclist.cpp +++ b/plugins/AssocMgr/src/assoclist.cpp @@ -408,7 +408,7 @@ static BOOL AddNewAssocItem_Worker(char *pszClassName, const TYPEDESCHEAD *tdh, // init new item assoc = &pAssocList[nAssocListCount]; assoc->pszClassName = pszClassName; // no dup here - assoc->pszDescription = s2t(tdh->pszDescription, tdh->flags&FTDF_UNICODE, TRUE); // does NULL check + assoc->pszDescription = s2t(tdh->pszDescription, tdh->flags & FTDF_UNICODE, TRUE); // does NULL check assoc->hInstance = tdh->hInstance; // hInstance is allowed to be NULL for miranda32.exe assoc->nIconResID = (WORD)tdh->nIconResID; // default icon selected later on assoc->pszService = mir_strdup(tdh->pszService); // does NULL check @@ -483,7 +483,7 @@ static INT_PTR ServiceAddNewFileType(WPARAM, LPARAM lParam) char *pszFileExt = mir_strdup(ftd->pszFileExt); char *pszClassName = MakeFileClassName(ftd->pszFileExt); if (pszFileExt != nullptr && pszClassName != nullptr) { - wchar_t *pszVerbDesc = s2t(ftd->pwszVerbDesc, ftd->flags&FTDF_UNICODE, TRUE); // does NULL check + wchar_t *pszVerbDesc = s2t(ftd->pwszVerbDesc, ftd->flags & FTDF_UNICODE, TRUE); // does NULL check char *pszMimeType = mir_strdup(ftd->pszMimeType); // does NULL check if (AddNewAssocItem_Worker(pszClassName, (TYPEDESCHEAD*)ftd, pszFileExt, pszVerbDesc, pszMimeType)) // no need to free pszClassName, pszFileExt, pszVerbDesc and pszMimeType, @@ -565,7 +565,7 @@ static BOOL InvokeHandler_Worker(const char *pszClassName, const wchar_t *pszPar } // get params pszService = mir_strdup(assoc->pszService); - pvParam = t2s(pszParam, assoc->flags&FTDF_UNICODE, FALSE); + pvParam = t2s(pszParam, assoc->flags & FTDF_UNICODE, FALSE); // call service if (pszService != nullptr && pvParam != nullptr) @@ -577,16 +577,15 @@ static BOOL InvokeHandler_Worker(const char *pszClassName, const wchar_t *pszPar INT_PTR InvokeFileHandler(const wchar_t *pszFileName) { - char *pszClassName, *pszFileExt; INT_PTR res = CALLSERVICE_NOTFOUND; // find extension wchar_t *p = (wchar_t*)wcsrchr(pszFileName, '.'); if (p != nullptr) { - pszFileExt = t2a(p); + char *pszFileExt = mir_u2a(p); if (pszFileExt != nullptr) { // class name - pszClassName = MakeFileClassName(pszFileExt); + char *pszClassName = MakeFileClassName(pszFileExt); if (pszClassName != nullptr) if (!InvokeHandler_Worker(pszClassName, pszFileName, &res)) { // correct registry on error (no longer in list) @@ -602,17 +601,16 @@ INT_PTR InvokeFileHandler(const wchar_t *pszFileName) INT_PTR InvokeUrlHandler(const wchar_t *pszUrl) { - char *pszClassName, *pszProtoPrefix, *p; INT_PTR res = CALLSERVICE_NOTFOUND; // find prefix - pszProtoPrefix = t2a(pszUrl); + char *pszProtoPrefix = mir_u2a(pszUrl); if (pszProtoPrefix != nullptr) { - p = strchr(pszProtoPrefix, ':'); + char *p = strchr(pszProtoPrefix, ':'); if (p != nullptr) { *(++p) = 0; // remove trailing : // class name - pszClassName = MakeUrlClassName(pszProtoPrefix); + char *pszClassName = MakeUrlClassName(pszProtoPrefix); if (pszClassName != nullptr) if (!InvokeHandler_Worker(pszClassName, pszUrl, &res)) // correct registry on error (no longer in list) diff --git a/plugins/AssocMgr/src/reg.cpp b/plugins/AssocMgr/src/reg.cpp index eb8db987b2..5a96d02582 100644 --- a/plugins/AssocMgr/src/reg.cpp +++ b/plugins/AssocMgr/src/reg.cpp @@ -314,13 +314,9 @@ static BOOL IsRegStrValue(HKEY hKey, const wchar_t *pszValName, const wchar_t *p static BOOL IsRegStrValueA(HKEY hKey, const wchar_t *pszValName, const char *pszCmpVal) { BOOL fSame = FALSE; - char *pszValA; wchar_t *pszVal = GetRegStrValue(hKey, pszValName); if (pszVal != nullptr) { - pszValA = t2a(pszVal); - if (pszValA != nullptr) - fSame = !mir_strcmp(pszValA, pszCmpVal); - mir_free(pszValA); // does NULL check + fSame = !mir_strcmp(_T2A(pszVal), pszCmpVal); mir_free(pszVal); } return fSame; @@ -399,10 +395,8 @@ static void BackupRegTree_Worker(HKEY hKey, const char *pszSubKey, struct Backup if ((res = RegEnumValueA(hKey, index++, pszName, &cchName, nullptr, nullptr, nullptr, nullptr)) == ERROR_SUCCESS) { (*param->ppszDbPrefix)[nDbPrefixLen] = 0; mir_strcat(*param->ppszDbPrefix, pszName); // buffer safe - ptrW ptszName(a2t(pszName)); - if (ptszName != NULL) - if (!RegQueryValueEx(hKey, ptszName, nullptr, &dwType, pData, &cbData)) - WriteDbBackupData(*param->ppszDbPrefix, dwType, pData, cbData); + if (!RegQueryValueEx(hKey, _A2T(pszName), nullptr, &dwType, pData, &cbData)) + WriteDbBackupData(*param->ppszDbPrefix, dwType, pData, cbData); } } if (res == ERROR_NO_MORE_ITEMS) @@ -476,18 +470,22 @@ static LONG RestoreRegTree(HKEY hKey, const char *pszSubKey, const char *pszDbPr if (ReadDbBackupData(ppszSettings[i], &dwType, &pData, &cbData)) { // set value if (!(dwType & REGF_ANSI)) { - WCHAR *pwszValName = a2u(pszValName, FALSE); - if (pwszValName != nullptr) res = RegSetValueExW(hSubKey, pwszValName, 0, dwType, pData, cbData); - else res = ERROR_NOT_ENOUGH_MEMORY; - mir_free(pwszValName); // does NULL check + ptrW pwszValName(mir_a2u(pszValName)); + if (pwszValName != nullptr) + res = RegSetValueExW(hSubKey, pwszValName, 0, dwType, pData, cbData); + else + res = ERROR_NOT_ENOUGH_MEMORY; } else res = RegSetValueExA(hSubKey, pszValName, 0, dwType&~REGF_ANSI, pData, cbData); mir_free(pData); } else res = ERROR_INVALID_DATA; - if (res) break; + if (res) + break; + db_unset(NULL, MODULENAME, ppszSettings[i]); - if (hSubKey != hKey) RegCloseKey(hSubKey); + if (hSubKey != hKey) + RegCloseKey(hSubKey); } mir_free(ppszSettings[i]); } @@ -672,20 +670,18 @@ BOOL AddRegClass(const char *pszClassName, const wchar_t *pszTypeDescription, co BOOL RemoveRegClass(const char *pszClassName) { - LONG res; HKEY hRootKey, hClassKey, hShellKey, hVerbKey; - wchar_t *ptszClassName, *ptszPrevRunCmd; + wchar_t *ptszPrevRunCmd; + + if (pszClassName == nullptr) + return ERROR_BAD_ARGUMENTS; // try to open interactive user's classes key if (RegOpenKeyEx(HKEY_CURRENT_USER, L"Software\\Classes", 0, DELETE, &hRootKey)) hRootKey = HKEY_CLASSES_ROOT; // class name - ptszClassName = a2t(pszClassName); - if (ptszClassName != nullptr) - res = DeleteRegSubTree(hRootKey, ptszClassName); - else res = ERROR_OUTOFMEMORY; - mir_free(ptszClassName); // does NULL check + LONG res = DeleteRegSubTree(hRootKey, _A2T(pszClassName)); // backup only saved/restored for fUrlProto if (!res) { @@ -699,7 +695,7 @@ BOOL RemoveRegClass(const char *pszClassName) // command ptszPrevRunCmd = GetRegStrValue(hVerbKey, L"command"); if (ptszPrevRunCmd != nullptr && !IsValidRunCommand(ptszPrevRunCmd)) - res = DeleteRegSubTree(hRootKey, ptszClassName); // backup outdated, remove all + res = DeleteRegSubTree(hRootKey, _A2T(pszClassName)); // backup outdated, remove all mir_free(ptszPrevRunCmd); // does NULL check RegCloseKey(hVerbKey); } @@ -1096,10 +1092,9 @@ void AddRegOpenWithExtEntry(const wchar_t *pszAppFileName, const char *pszFileEx if (!RegOpenKeyEx(hAppsKey, pszAppFileName, 0, KEY_CREATE_SUB_KEY, &hExeKey)) { // supported types if (!RegCreateKeyEx(hExeKey, L"SupportedTypes", 0, nullptr, 0, KEY_SET_VALUE, nullptr, &hTypesKey, nullptr)) { - wchar_t *ptszFileExt; - ptszFileExt = a2t(pszFileExt); + ptrW ptszFileExt(mir_a2u(pszFileExt)); if (ptszFileExt != nullptr) - RegSetValueEx(hTypesKey, ptszFileExt, 0, REG_SZ, (BYTE*)pszFileDesc, (int)(mir_wstrlen(pszFileDesc) + 1) * sizeof(wchar_t)); + RegSetValueEx(hTypesKey, ptszFileExt, 0, REG_SZ, (BYTE*)ptszFileExt.get(), (int)(mir_wstrlen(pszFileDesc) + 1) * sizeof(wchar_t)); mir_free(ptszFileExt); // does NULL check RegCloseKey(hTypesKey); } diff --git a/plugins/AssocMgr/src/utils.cpp b/plugins/AssocMgr/src/utils.cpp index a97d257fc8..cafa234e87 100644 --- a/plugins/AssocMgr/src/utils.cpp +++ b/plugins/AssocMgr/src/utils.cpp @@ -41,63 +41,21 @@ void DynamicLoadInit() /************************* String Conv ****************************/ -// mir_free() the return value -WCHAR* a2u(const char *pszAnsi, BOOL fMirCp) -{ - UINT codepage, cch; - WCHAR *psz; - - if (pszAnsi == nullptr) return nullptr; - codepage = fMirCp ? Langpack_GetDefaultCodePage() : CP_ACP; - cch = MultiByteToWideChar(codepage, 0, pszAnsi, -1, nullptr, 0); - if (!cch) return nullptr; - - psz = (WCHAR*)mir_alloc(cch * sizeof(WCHAR)); - if (psz != nullptr && !MultiByteToWideChar(codepage, 0, pszAnsi, -1, psz, cch)) { - mir_free(psz); - return nullptr; - } - return psz; -} - -// mir_free() the return value -char* u2a(const WCHAR *pszUnicode, BOOL fMirCp) -{ - UINT codepage, cch; - char *psz; - DWORD flags; - - if (pszUnicode == nullptr) return nullptr; - codepage = fMirCp ? Langpack_GetDefaultCodePage() : CP_ACP; - /* without WC_COMPOSITECHECK some characters might get out strange (see MS blog) */ - cch = WideCharToMultiByte(codepage, flags = WC_COMPOSITECHECK, pszUnicode, -1, nullptr, 0, nullptr, nullptr); - if (!cch) cch = WideCharToMultiByte(codepage, flags = 0, pszUnicode, -1, nullptr, 0, nullptr, nullptr); - if (!cch) return nullptr; - - psz = (char*)mir_alloc(cch); - if (psz != nullptr && !WideCharToMultiByte(codepage, flags, pszUnicode, -1, psz, cch, nullptr, nullptr)) { - mir_free(psz); - return nullptr; - } - return psz; -} - // mir_free() the return value wchar_t* s2t(const void *pszStr, DWORD fUnicode, BOOL fMirCp) { - - if (fUnicode) return mir_wstrdup((WCHAR*)pszStr); - return a2u((char*)pszStr, fMirCp); + if (fUnicode) + return mir_wstrdup((WCHAR*)pszStr); + return mir_a2u_cp((char*)pszStr, fMirCp); } // mir_free() the return value void* t2s(const wchar_t *pszStr, DWORD fUnicode, BOOL fMirCp) { - - if (!fUnicode) return (void*)u2a(pszStr, fMirCp); + if (!fUnicode) + return (void*)mir_u2a_cp(pszStr, fMirCp); return (void*)mir_wstrdup(pszStr); - } /************************* Database *******************************/ @@ -170,7 +128,7 @@ void ShowInfoMessage(BYTE flags, const char *pszTitle, const char *pszTextFmt, . mbp->lpszText = mir_strdup(szText); mbp->dwStyle = MB_OK | MB_SETFOREGROUND | MB_TASKMODAL; mbp->dwLanguageId = LANGIDFROMLCID(Langpack_GetDefaultLocale()); - switch (flags&NIIF_ICON_MASK) { + switch (flags & NIIF_ICON_MASK) { case NIIF_INFO: mbp->dwStyle |= MB_ICONINFORMATION; break; case NIIF_WARNING: mbp->dwStyle |= MB_ICONWARNING; break; case NIIF_ERROR: mbp->dwStyle |= MB_ICONERROR; diff --git a/plugins/AssocMgr/src/utils.h b/plugins/AssocMgr/src/utils.h index 7a07827944..03e818e0c5 100644 --- a/plugins/AssocMgr/src/utils.h +++ b/plugins/AssocMgr/src/utils.h @@ -24,15 +24,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. void DynamicLoadInit(); /* String Conv */ -WCHAR* a2u(const char *pszAnsi,BOOL fMirCp); -char* u2a(const WCHAR *pszUnicode,BOOL fMirCp); wchar_t* s2t(const void *pszStr,DWORD fUnicode,BOOL fMirCp); void* t2s(const wchar_t *pszStr,DWORD fUnicode,BOOL fMirCp); - #define t2a(s) u2a(s,FALSE) - #define a2t(s) a2u(s,FALSE) - - /* Database */ BOOL EnumDbPrefixSettings(const char *pszModule,const char *pszSettingPrefix,char ***pSettings,int *pnSettingsCount); -- cgit v1.2.3