// static EntryVector HTMLInputElementFileSystem::webkitEntries(ExecutionContext* executionContext, HTMLInputElement& input) { EntryVector entries; FileList* files = input.files(); if (!files) return entries; RefPtr<DOMFileSystem> filesystem = DOMFileSystem::createIsolatedFileSystem(executionContext, input.droppedFileSystemId()); if (!filesystem) { // Drag-drop isolated filesystem is not available. return entries; } for (unsigned i = 0; i < files->length(); ++i) { File* file = files->item(i); // FIXME: This involves synchronous file operation. FileMetadata metadata; if (!getFileMetadata(file->path(), metadata)) continue; // The dropped entries are mapped as top-level entries in the isolated filesystem. String virtualPath = DOMFilePath::append("/", file->name()); if (metadata.type == FileMetadata::TypeDirectory) entries.append(DirectoryEntry::create(filesystem, virtualPath)); else entries.append(FileEntry::create(filesystem, virtualPath)); } return entries; }
FolderModel::EntryVector FolderModel::_InitializeEntries() const { EntryVector result; auto tstrPath = GetPath(); FileFinder finder(tstrPath); while (finder.FindNext()) { result.push_back(make_unique<FolderEntry>( tstrPath, finder.GetFileName(), finder.IsDirectory(), finder.GetSize(), finder.GetAccessed(), finder.GetModified(), finder.GetCreated())); } return result; }
void KernelEntry::updateDatabase( const std::string& name ) { typedef std::deque< KernelEntry > EntryVector; int error = system( "touch KernelEntry_lock" ); if( error < 0 ) { throw hydrazine::Exception( "Failed to create KernelEntry_lock"); } boost::interprocess::file_lock flock( "KernelEntry_lock" ); report( "Updating databsse " << name ); flock.lock(); std::ifstream ifile( name.c_str() ); EntryVector entries; if( ifile.is_open() ) { boost::archive::text_iarchive archive( ifile ); unsigned int count; archive >> count; for( unsigned int i = 0; i < count; ++i ) { KernelEntry entry; archive >> entry; if( entry.header != header ) { entries.push_back(entry); } } }