// Common, group Files
// Copyright Alexander Liss
#include <string.h>
#include "findfile.h"
// FindFile
FindFile::FindFile(char * mask):search_handle(-1),first(true)
{
search_handle=_findfirst(mask,&find_data);
}
FindFile::~FindFile()
{
if(search_handle==-1) return;
_findclose(search_handle);
}
int FindFile::name(StrBuffer& z)
{
if(!first) return -1;
if(search_handle==-1) return 1;
z.set(find_data.name);
first=false;
return 0;
}
int FindFile::next_name(StrBuffer& z)
{
if(first || search_handle==-1) return -1;
int g=_findnext(search_handle,&find_data);
if(g==-1) return 1;
z.set(find_data.name);
return 0;
}
// FUNCTIONS
int find_file(StrBuffer& found_name, const char *name_mask,const char *directory)
{
StrBuffer file_mask(strlen(directory)+strlen(name_mask) + 10);
file_mask.set(directory);
file_mask.append("\\");
file_mask.append(name_mask);
_finddata_t find_data;
long search_handle=-1;
search_handle=_findfirst(file_mask.data,&find_data);
if(search_handle==-1) return 1;
found_name.set(find_data.name);
int g=_findclose(search_handle);
if(g) return 2;
return 0;
}
int count_files(long& number, long limit, const char *name_mask,const char *directory)
{
StrBuffer file_mask(strlen(directory)+strlen(name_mask) + 10);
file_mask.set(directory);
file_mask.append("\\");
file_mask.append(name_mask);
_finddata_t find_data;
long search_handle=-1;
number=0;
search_handle=_findfirst(file_mask.data,&find_data);
if(search_handle==-1) return 1;
number=1;
for(;number<limit+2;++number)
{
int g=_findnext(search_handle,&find_data);
if(g==-1) break;
}
int g=_findclose(search_handle);
if(g) return 2;
return 0;
}
int remove_files(long limit,const char *name_mask,const char *directory)
{
StrBuffer file_mask(strlen(directory)+strlen(name_mask) + 10);
file_mask.set(directory);
file_mask.append("\\");
file_mask.append(name_mask);
_finddata_t find_data;
long search_handle=-1;
search_handle=_findfirst(file_mask.data,&find_data);
if(search_handle==-1) return 1;
for(long number=0;number<limit+1;++number)
{
int g=_findnext(search_handle,&find_data);
if(g==-1) break;
// DELETE FILE
StrBuffer path(strlen(directory)+strlen(find_data.name) + 10);
path.set(directory);
path.append("\\");
path.append(find_data.name);
remove(path.data);
}
int g=_findclose(search_handle);
if(g) return 2;
return 0;
}