Exemple #1
0
ArchiveMemberPtr SearchSet::getMember(const String &name) {
	if (name.empty())
		return ArchiveMemberPtr();

	ArchiveNodeList::iterator it = _list.begin();
	for ( ; it != _list.end(); ++it) {
		if (it->_arc->hasFile(name))
			return it->_arc->getMember(name);
	}

	return ArchiveMemberPtr();
}
Exemple #2
0
const ArchiveMemberPtr FSDirectory::getMember(const String &name) const {
    if (name.empty() || !_node.isDirectory())
        return ArchiveMemberPtr();

    FSNode *node = lookupCache(_fileCache, name);

    if (!node || !node->exists()) {
        warning("FSDirectory::getMember: '%s' does not exist", name.c_str());
        return ArchiveMemberPtr();
    } else if (node->isDirectory()) {
        warning("FSDirectory::getMember: '%s' is a directory", name.c_str());
        return ArchiveMemberPtr();
    }

    return ArchiveMemberPtr(new FSNode(*node));
}
Exemple #3
0
int FSDirectory::listMembers(ArchiveMemberList &list) const {
    if (!_node.isDirectory())
        return 0;

    // Cache dir data
    ensureCached();

    int files = 0;
    for (NodeCache::const_iterator it = _fileCache.begin(); it != _fileCache.end(); ++it) {
        list.push_back(ArchiveMemberPtr(new FSNode(it->_value)));
        ++files;
    }

    return files;
}
Exemple #4
0
int FSDirectory::listMatchingMembers(ArchiveMemberList &list, const String &pattern) {
	if (!_node.isDirectory())
		return 0;

	// Cache dir data
	ensureCached();

	String lowercasePattern(pattern);
	lowercasePattern.toLowercase();

	int matches = 0;
	NodeCache::iterator it = _fileCache.begin();
	for ( ; it != _fileCache.end(); ++it) {
		if (it->_key.matchString(lowercasePattern, true)) {
			list.push_back(ArchiveMemberPtr(new FSNode(it->_value)));
			matches++;
		}
	}
	return matches;
}
Exemple #5
0
int FSDirectory::listMatchingMembers(ArchiveMemberList &list, const String &pattern) const {
    if (!_node.isDirectory())
        return 0;

    // Cache dir data
    ensureCached();

    // need to match lowercase key, since all entries in our file cache are
    // stored as lowercase.
    String lowercasePattern(pattern);
    lowercasePattern.toLowercase();

    int matches = 0;
    NodeCache::const_iterator it = _fileCache.begin();
    for ( ; it != _fileCache.end(); ++it) {
        if (it->_key.matchString(lowercasePattern, false, true)) {
            list.push_back(ArchiveMemberPtr(new FSNode(it->_value)));
            matches++;
        }
    }
    return matches;
}
Exemple #6
0
const ArchiveMemberPtr CdfArchive::getMember(const String &name) const
{
	return hasFile(name) ? ArchiveMemberPtr(new GenericArchiveMember(name, this)) : ArchiveMemberPtr();
}
Exemple #7
0
ArchiveMemberPtr ZipArchive::getMember(const String &name) {
	if (!hasFile(name))
		return ArchiveMemberPtr();

	return ArchiveMemberPtr(new GenericArchiveMember(name, this));
}