// Преобразование корявого формата PATHEXT в ФАРовский :-) // Функции передается нужные расширения, она лишь добавляет то, что есть // в %PATHEXT% // IS: Сравнений на совпадение очередной маски с тем, что имеется в Dest // IS: не делается, т.к. дубли сами уберутся при компиляции маски string &Add_PATHEXT(string &strDest) { string strBuf; size_t curpos=strDest.GetLength()-1; UserDefinedList MaskList(0,0,ULF_UNIQUE); if (apiGetEnvironmentVariable(L"PATHEXT" ,strBuf) && MaskList.Set(strBuf)) { /* $ 13.10.2002 IS проверка на '|' (маски исключения) */ if (!strDest.IsEmpty() && (strDest.At(curpos)!=L',' && strDest.At(curpos)!=L';') && strDest.At(curpos)!=L'|') strDest += L","; const wchar_t *Ptr; MaskList.Reset(); while (nullptr!=(Ptr=MaskList.GetNext())) { strDest += L"*"; strDest += Ptr; strDest += L","; } } // лишняя запятая - в морг! curpos=strDest.GetLength()-1; if (strDest.At(curpos) == L',' || strDest.At(curpos)==L';') strDest.SetLength(curpos); return strDest; }
bool D5DModule::Load() { string strPluginsPath = Info.ModuleName; CutToSlash(strPluginsPath); strPluginsPath += _T("Formats"); FSF.FarRecursiveSearch(strPluginsPath, _T("*.d5d"), (FRSUSERFUNC)LoadD5DPlugins, FRS_RECUR, this); m_pPluginInfo = new ArchivePluginInfo[m_Plugins.count()]; for (int i = 0; i < m_Plugins.count(); i++) { D5DPlugin* pPlugin = m_Plugins[i]; ArchivePluginInfo* info = &m_pPluginInfo[i]; info->dwFlags = 0; info->uid = pPlugin->GetUID(); info->lpModuleName = StrDuplicate(pPlugin->GetModuleName()); info->uFormats = pPlugin->GetNumberOfFormats(); info->pFormats = pPlugin->GetFormats(); } string strLanguageFilePath = Info.ModuleName; CutToSlash(strLanguageFilePath); string strLanguageFileName = strLanguageFilePath; string strLanguage; apiGetEnvironmentVariable(_T("FARLANG"), strLanguage); strLanguageFileName += strLanguage; strLanguageFileName += _T(".lng"); if ( !lng.Load(strLanguageFileName) ) { strLanguageFileName = strLanguageFilePath; strLanguageFileName += _T("english.lng"); lng.Load(strLanguageFileName); } return (m_Plugins.count() > 0); }