Return TypeFunction nameArguments
hzEcodeBlattDir(const char*,)

Declared in file: hzDirectory.h
Defined in file : hzDirectory.cpp

Function Logic:

0:START 1:!dirname||!dirname[0] 2:Return E_ARGUMENT 3:opendir pDir 4:!pDir 5:Return E_OPENFAIL 6:rc==E_OK&&(pDE=readdir(pDir)); 7:pDE->d_name[0]=='.'&&(pDE->d_name[1]==0||(pDE->d_name[1]=='.'&&pDE->d_name[2]==0)) 8:teststr teststr teststr 9:stat(*teststr,&fs)==-1 10:Return E_CORRUPT 11:S_ISDIR(fs.st_mode) 12:BlattDir rc 13:S_ISREG(fs.st_mode) 14:unlink sys_rc 15:sys_rc 16:rc 17:closedir 18:rc==E_OK 19:rmdir sys_rc 20:sys_rc 21:rc 22:Return rc

Function body:

hzEcode BlattDir (const char* dirname)
{
   _hzfunc("BlattDir") ;
   FSTAT       fs ;
   dirent*     pDE ;
   DIR*        pDir ;
   hzString    teststr ;
   int32_t     sys_rc = 0;
   hzEcode     rc = E_OK ;
   /*
   **  ** Move thru current directory and read files and sub directories
   **      */
   if (!dirname || !dirname[0])
       return E_ARGUMENT ;
   pDir = opendir(dirname) ;
   if (!pDir)
       return E_OPENFAIL ;
   for (; rc == E_OK && (pDE = readdir(pDir)) ;)
   {
       if (pDE->d_name[0]== ''.''&&(pDE->d_name[1]== 0|| (pDE->d_name[1]== ''.''&&pDE->d_name[2]== 0)))
           continue ;
       teststr = dirname ;
       teststr += "/" ;
       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))
       {
           rc = BlattDir(*teststr) ;
           continue ;
       }
       if (S_ISREG(fs.st_mode))
       {
           sys_rc = unlink(*teststr) ;
           if (sys_rc)
               rc = E_WRITEFAIL ;
           continue ;
       }
   }
   closedir(pDir) ;
   if (rc == E_OK)
   {
       sys_rc = rmdir(dirname) ;
       if (sys_rc)
           rc = E_WRITEFAIL ;
   }
   return rc ;
}