Exemple #1
0
int ArchiveFilter::QueryFilters(const TCHAR* lpFileName, ArchiveFilterArray& filters, bool& bStopped)
{
	bStopped = false;

	for (unsigned int i = 0; i < m_pFilters.count(); i++)
	{
		ArchiveFilterEntry* pFE = m_pFilters[i];

		if ( !pFE->IsEnabled() || !pFE->IsValid() )
			continue;

#ifdef UNICODE
		if ( FSF.ProcessName(pFE->GetMask(), (TCHAR*)lpFileName, 0, PN_CMPNAME|PN_SKIPPATH) )
#else
		if ( FSF.ProcessName(pFE->GetMask(), (TCHAR*)lpFileName, PN_CMPNAME|PN_SKIPPATH) )
#endif
		{
			if ( !pFE->IsExclude() )
				filters.add(pFE);
			else
				m_pStopFilters.add(pFE);

			if ( !pFE->IsContinueProcessing() )
			{
				bStopped = true;
				break;
			}
		}
	}

	return 0;
}