void getAvailableItems(CollectionItemType type, std::list<std::vector<std::string> > & list, KIM::Log * const log) { std::list<std::pair<std::string, std::string> > paths; searchPaths(type, &paths, log); std::list<std::pair<std::string, std::string> >::const_iterator itr; for (itr = paths.begin(); itr != paths.end(); ++itr) { std::list<std::string> items; getSubDirectories(itr->second, items); std::string collection = itr->first; std::list<std::string>::const_iterator itemItr; for (itemItr = items.begin(); itemItr != items.end(); ++itemItr) { std::vector<std::string> entry(5); entry[IE_COLLECTION] = collection; std::size_t split = itemItr->find_last_of("/"); entry[IE_NAME] = itemItr->substr(split + 1); entry[IE_DIR] = itemItr->substr(0, split); std::string lib = entry[IE_DIR] + "/" + entry[IE_NAME] + "/" KIM_SHARED_MODULE_PREFIX + KIM_PROJECT_NAME "-"; switch (type) { case KIM_MODEL_DRIVERS: lib.append(KIM_MODEL_DRIVER_IDENTIFIER); break; case KIM_MODELS: lib.append(KIM_MODEL_IDENTIFIER); break; case KIM_SIMULATOR_MODELS: lib.append(KIM_SIMULATOR_MODEL_IDENTIFIER); break; } lib.append(KIM_SHARED_MODULE_SUFFIX); entry[IE_FULLPATH] = lib; KIM::SharedLibrary sharedLibrary(log); int error = sharedLibrary.Open(lib); if (!error) { std::string versionString; error = sharedLibrary.GetCompiledWithVersion(&versionString); if (error) { entry[IE_VER] = "unknown"; } else { entry[IE_VER] = versionString; } list.push_back(entry); sharedLibrary.Close(); } } } list.sort(lessThan); }
Item *ItemReader::readFile(const QString &filePath) { AccumulatingTimer readFileTimer(m_elapsedTime != -1 ? &m_elapsedTime : nullptr); return m_visitorState->readFile(filePath, searchPaths(), m_pool); }
Item *ItemReader::readFile(const QString &filePath) { return m_visitorState->readFile(filePath, searchPaths(), m_pool); }
void gfxFT2FontList::FindFonts() { #ifdef XP_WIN nsTArray<nsString> searchPaths(3); nsTArray<nsString> fontPatterns(3); fontPatterns.AppendElement(NS_LITERAL_STRING("\\*.ttf")); fontPatterns.AppendElement(NS_LITERAL_STRING("\\*.ttc")); fontPatterns.AppendElement(NS_LITERAL_STRING("\\*.otf")); wchar_t pathBuf[256]; SHGetSpecialFolderPathW(0, pathBuf, CSIDL_WINDOWS, 0); searchPaths.AppendElement(pathBuf); SHGetSpecialFolderPathW(0, pathBuf, CSIDL_FONTS, 0); searchPaths.AppendElement(pathBuf); nsCOMPtr<nsIFile> resDir; NS_GetSpecialDirectory(NS_APP_RES_DIR, getter_AddRefs(resDir)); if (resDir) { resDir->Append(NS_LITERAL_STRING("fonts")); nsAutoString resPath; resDir->GetPath(resPath); searchPaths.AppendElement(resPath); } WIN32_FIND_DATAW results; for (PRUint32 i = 0; i < searchPaths.Length(); i++) { const nsString& path(searchPaths[i]); for (PRUint32 j = 0; j < fontPatterns.Length(); j++) { nsAutoString pattern(path); pattern.Append(fontPatterns[j]); HANDLE handle = FindFirstFileExW(pattern.get(), FindExInfoStandard, &results, FindExSearchNameMatch, NULL, 0); PRBool moreFiles = handle != INVALID_HANDLE_VALUE; while (moreFiles) { nsAutoString filePath(path); filePath.AppendLiteral("\\"); filePath.Append(results.cFileName); AppendFacesFromFontFile(static_cast<const PRUnichar*>(filePath.get())); moreFiles = FindNextFile(handle, &results); } if (handle != INVALID_HANDLE_VALUE) FindClose(handle); } } #elif defined(ANDROID) gfxFontCache *fc = gfxFontCache::GetCache(); if (fc) fc->AgeAllGenerations(); mPrefFonts.Clear(); mCodepointsWithNoFonts.reset(); DIR *d = opendir("/system/fonts"); struct dirent *ent = NULL; while(d && (ent = readdir(d)) != NULL) { int namelen = strlen(ent->d_name); if (namelen > 4 && strcasecmp(ent->d_name + namelen - 4, ".ttf") == 0) { nsCString s("/system/fonts"); s.Append("/"); s.Append(nsDependentCString(ent->d_name)); AppendFacesFromFontFile(nsPromiseFlatCString(s).get()); } } if (d) { closedir(d); } mCodepointsWithNoFonts.SetRange(0,0x1f); // C0 controls mCodepointsWithNoFonts.SetRange(0x7f,0x9f); // C1 controls #endif // XP_WIN && ANDROID }