Пример #1
0
// 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;
}
Пример #2
0
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;
}
Пример #3
0
	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);
				}
			}
		}