Feed::PopulatedFiles StaticLibraryFeed::populate(Folder const &folder) { PopulatedFiles files; #if defined (DENG_STATIC_LINK) for (String name : Library::staticLibraries()) { if (!folder.has(name)) { files << new LibraryFile(NativePath(name)); } } #else DENG2_UNUSED(folder); #endif return files; }
void populate(Folder &folder) { // Get a list of the files in this directory. Archive::Names names; archive().listFiles(names, basePath); DENG2_FOR_EACH(Archive::Names, i, names) { if(folder.has(*i)) { // Already has an entry for this, skip it (wasn't pruned so it's OK). continue; } String entry = basePath / *i; std::auto_ptr<ArchiveEntryFile> archFile(new ArchiveEntryFile(*i, archive(), entry)); // Write access is inherited from the main source file. if(allowWrite) archFile->setMode(File::Write); // Use the status of the entry within the archive. archFile->setStatus(archive().entryStatus(entry)); // Create a new file that accesses this feed's archive and interpret the contents. File *f = folder.fileSystem().interpret(archFile.release()); folder.add(f); // We will decide on pruning this. f->setOriginFeed(&self); // Include the file in the main index. folder.fileSystem().index(*f); } // Also populate subfolders. archive().listFolders(names, basePath); for(Archive::Names::iterator i = names.begin(); i != names.end(); ++i) { folder.fileSystem().makeFolder(folder.path() / *i, FS::InheritPrimaryFeed); } }