....
void ePictureViewer::listDirectory(eString directory, int includesubdirs)
{
// eDebug("[PICTUREVIEWER] listDirectory: dir %s", directory.c_str());
std::list<eString> piclist;
std::list<eString>::iterator picIt;
std::list<eString> dirlist;
std::list<eString>::iterator dirIt;
piclist.clear();
dirlist.clear();
DIR *d = opendir(directory.c_str());
if (d)
{
while (struct dirent *e = readdir(d))
{
eString filename = eString(e->d_name);
// eDebug("[PICTUREVIEWER] listDirectory: processing %s", filename.c_str());
if ((filename != ".") && (filename != ".."))
{
struct stat s;
eString fullFilename = directory + "/" + filename;
if (lstat(fullFilename.c_str(), &s) < 0)
{
// eDebug("--- file no good :(");
continue;
}
if (S_ISREG(s.st_mode))
{
if (filename.right(4).upper() == ".JPG" ||
filename.right(5).upper() == ".JPEG" ||
filename.right(4).upper() == ".CRW" ||
filename.right(4).upper() == ".PNG" ||
filename.right(4).upper() == ".BMP" ||
filename.right(4).upper() == ".GIF")
{
eString tmp = directory + "/" + filename;
piclist.push_back(tmp);
}
}
else
if ((includesubdirs == 1) && (S_ISDIR(s.st_mode) || S_ISLNK(s.st_mode)))
{
eString tmp = directory + "/" + filename;
dirlist.push_back(tmp);
}......