/*
	ANT_DIRECTORY_ITERATOR_TREC_RECURSIVE::NEXT()
	---------------------------------------------
*/
ANT_directory_iterator_object *ANT_directory_iterator_trec_recursive::next(ANT_directory_iterator_object *object)
{
ANT_directory_iterator_object *got;

while (more_files != NULL)
	{
	if (first_time)
		got = detrecer->first(object);
	else
		got = detrecer->next(object);

	first_time = false;

	if (got == NULL)
		{
		if ((more_files = filename_provider->next(object)) != NULL)
			{
			new_provider(object->filename);
			first_time = true;
			}
		}
	else
		return got;
	}

return NULL;
}
Example #2
0
static provider_t * get_provider(const char *command) {
        provider_t *p;
        for (p = providers; p; p = p->next) {
                if (!strcmp(p->command, command))
                        return p;
        }

        return new_provider(command);
}
/*
	ANT_DIRECTORY_ITERATOR_TREC_RECURSIVE::ANT_DIRECTORY_ITERATOR_TREC_RECURSIVE()
	------------------------------------------------------------------------------
*/
ANT_directory_iterator_trec_recursive::ANT_directory_iterator_trec_recursive(char *source, long get_file, long long scrubbing_options) : ANT_directory_iterator("", get_file)
{
ANT_directory_iterator_object filename;

this->source = source;
filename_provider = new ANT_directory_iterator_recursive(source, 0);

this->scrubbing_options = scrubbing_options;

more_files = filename_provider->first(&filename);
first_time = true;

file_stream = NULL;
decompressor = NULL;
instream_buffer = NULL;
scrubber = NULL;
detrecer = NULL;
memory = NULL;

new_provider(filename.filename);
}