void FilesFromDirectory::Process()
{
Filenames.clear();
+ SimpleFilenames.clear();
DirName = bbGetInputIn();
bool rec = bbGetInputRecursive();
- /*int nbFiles = */ Explore(DirName, rec);
+ /*int nbFiles = */ Explore(DirName, rec);
CleanFilenames( bbGetInputIn() );
bbSetOutputOut(Filenames);
bbSetOutputOutSimple(SimpleFilenames);
//assert( dirName[dirName.size()-1] == '' );
HANDLE hFile = FindFirstFile((dirName+"*").c_str(), &fileData);
-
for(BOOL b = (hFile != INVALID_HANDLE_VALUE); b;
b = FindNextFile(hFile, &fileData))
{
{
if (bbGetInputType()==1)
{
- Filenames.push_back(fileName);
- numberOfFiles++;
+ std::string temp = dirName+fileName;
+ Filenames.push_back(temp);
+ numberOfFiles++;
} // Type ALL_directories
tmpNumberOfFiles = Explore(dirName+fileName, recursive);
if ((bbGetInputType()==2)&&tmpNumberOfFiles==0)
{
- Filenames.push_back(fileName);
+ std::string temp = dirName+fileName;
+ Filenames.push_back(temp);
numberOfFiles++;
} // Type Lsast_directories
numberOfFiles = numberOfFiles + tmpNumberOfFiles;
- } // if
+ } // if recursive
+ if ( fileName != "." && fileName != ".." && !recursive )
+ {
+ if ((bbGetInputType()==1) || (bbGetInputType()==2))
+ {
+ std::string temp = dirName+fileName;
+ Filenames.push_back(temp);
+ numberOfFiles++;
+ } // Type All_directories
+ }// fileName && !recursive
} else {
// std::string temp = "\"" +dirName+fileName + "\"";
std::string temp = dirName+fileName;
// Real POSIX implementation: scandir is a BSD extension only, and doesn't
// work on debian for example
- DIR* dir = opendir(dirName.c_str());
+ DIR* dir = opendir( dirName.c_str() );
if (!dir)
{
return 0;
} // Type files
} // d_name
} else if ( S_ISDIR(buf.st_mode) ) { //directory?
- if ( d->d_name[0] != '.' && recursive ) //we also skip hidden files
+ if ( (d->d_name[0]!='.') && recursive ) //we also skip hidden files
{
if (bbGetInputType()==1)
{
numberOfFiles++;
} // Type Lsast_directories
numberOfFiles = numberOfFiles+tmpNumberOfFiles;
- } // d_name
+ }// d_name && recursive
+ if ( (d->d_name[0]!='.') && !recursive ) { //we also skip hidden files
+ if ((bbGetInputType()==1) || (bbGetInputType()==2))
+ {
+ Filenames.push_back(fileName);
+ numberOfFiles++;
+ } // Type All_directories
+
+ }// d_name && !recursive
+
} else {
//gdcmErrorMacro( "Unexpected error" );
return -1;
{
std::string tmpString;
int i,ii,sizeFilenames = Filenames.size();
+ int j,sizeFileEnd = bbGetInputFileEnd().size();
+
+ int okEraseElement;
+
+//Selecting just the files in the FileEnd List
+ if (bbGetInputFileEnd().size()!=0)
+ {
+ for (i=sizeFilenames-1; i>=0; i--)
+ {
+ okEraseElement=0;
+ for (j=0; j<sizeFileEnd; j++)
+ {
+ std::string tmp=Filenames[i].substr( (Filenames[i].length()) - (bbGetInputFileEnd()[j]).length() ) ;
+ if (bbGetInputFileEnd()[j].compare( tmp )==0 )
+ {
+ okEraseElement++;
+ } // if FileEnd
+ } // for j
+
+ if (okEraseElement==0)
+ {
+ Filenames.erase( Filenames.begin()+i );
+ }
+ } // for i
+ } // if FileEnd !=0
+
+ sizeFilenames = Filenames.size();
// Cleanning paths with spaces
for (i=0; i<sizeFilenames; i++)
{
tmpString=Filenames[i];
+
std::string::size_type spacePosition = tmpString.find_first_of(' ');
if (spacePosition != std::string::npos)
{
} // if spacePosition
}
+
// Alphabetical order
for (i=0; i<sizeFilenames; i++)
{