| Return Type | Function name | Arguments |
|---|---|---|
| hzEcode | ListDir | (hzVect<hzString>&,hzVect<hzString>&,const char*,const char*,) |
Declared in file: hzDirectory.h
Defined in file : hzDirectory.cpp
Function Logic:
Function body:
hzEcode ListDir (hzVect<hzString>& Dirs, hzVect<hzString>& Files, const char* cpPath, const char* cpCriteria)
{
_hzfunc("ListDir") ;
FSTAT fs ;
dirent* pDE ;
DIR* pDir ;
hzDirent meta ;
hzString teststr ;
hzString name ;
Dirs.Clear() ;
Files.Clear() ;
/*
** ** Move thru current directory and read files and sub directories
** */
if (cpPath && cpPath[0])
pDir = opendir(cpPath) ;
else
pDir = opendir(".") ;
if (!pDir)
return E_OPENFAIL ;
for (; pDE = readdir(pDir) ;)
{
if (pDE->d_name[0]== ''.''&&(pDE->d_name[1]== 0|| (pDE->d_name[1]== ''.''&&pDE->d_name[2]== 0)))
continue ;
if (!FormCheckCstr(pDE->d_name, cpCriteria))
continue ;
if (cpPath && cpPath[0])
{
teststr = cpPath ;
teststr += "/" ;
teststr += pDE->d_name ;
}
else
teststr = pDE->d_name ;
if (stat(*teststr, &fs) == -1)
{
hzerr(E_CORRUPT, "Could not stat directory entry %s", *teststr) ;
return E_CORRUPT ;
}
if (S_ISDIR(fs.st_mode))
{
name = pDE->d_name ;
Dirs.Add(name) ;
continue ;
}
if (S_ISREG(fs.st_mode))
{
name = pDE->d_name ;
Files.Add(name) ;
continue ;
}
}
return E_OK ;
}