Return TypeFunction nameArguments
hzEcodehdsExec::Filesys(hzChain&,hzHttpEvent*,)

Declared in file: hzDissemino.h
Defined in file : hdsExec.cpp

Function Logic:

0:START 1:hzChain::Printf m_Action m_Resource m_Content 2:m_Action==mkdir 3:hdsApp::ConvertText resource AssertDir rc 4:rc!=E_OK 5:Err2Txt hzChain::Printf 6:Return rc 7:m_Action==rmdir 8:hdsApp::ConvertText resource BlattDir rc 9:rc!=E_OK 10:Err2Txt hzChain::Printf 11:Return rc 12:m_Action==save 13:hdsApp::ConvertText resource hdsApp::PcEntConv rc hzAtom::Chain content hzChain::Size 14:!content.Size() 15:hzChain::Printf 16:Return E_NODATA 17:ofstream::open ofstream::fail 18:os.fail() 19:hzChain::Printf 20:Return E_WRITEFAIL 21:items ofstream::fail 22:os.fail() 23:hzChain::Printf 24:Return E_WRITEFAIL 25:close 26:Return E_OK 27:m_Action==delete 28:hdsApp::ConvertText resource 29:lstat(*resource,&fs)<0 30:hzChain::Printf 31:Return E_NOTFOUND 32:S_ISDIR(fs.st_mode) 33:hzChain::Printf 34:Return E_TYPE 35:unlink(*resource)<0 36:hzChain::Printf 37:Return E_WRITEFAIL 38:Return E_OK 39:hzChain::Printf 40:Return E_SYNTAX

Function body:

hzEcode hdsExec::Filesys (hzChain& errorReport, hzHttpEvent* pE)
{
   _hzfunc("hdsExec::Filesys") ;
   FSTAT       fs ;
   hzAtom      atom ;
   hzChain     content ;
   hzString    resource ;
   hzString    m_Action ;
   hzString    m_Resource ;
   hzString    m_Content ;
   hzEcode     rc = E_OK ;
   errorReport.Printf("Filesys action %s and resource %s\n", *m_Action, *m_Resource) ;
   m_Action = m_pApp->m_ExecParams[m_FstParam] ;
   m_Resource = m_pApp->m_ExecParams[m_FstParam] ;
   m_Content = m_pApp->m_ExecParams[m_FstParam] ;
   if (m_Action == "mkdir")
   {
       resource = m_pApp->ConvertText(m_Resource, pE) ;
       rc = AssertDir(resource, 0777);
       if (rc != E_OK)
           errorReport.Printf("Could not assert dir %s error is %s\n", *resource, Err2Txt(rc)) ;
       return rc ;
   }
   if (m_Action == "rmdir")
   {
       resource = m_pApp->ConvertText(m_Resource, pE) ;
       rc = BlattDir(resource) ;
       if (rc != E_OK)
           errorReport.Printf("Could not blatt dir %s error is %s\n", *resource, Err2Txt(rc)) ;
       return rc ;
   }
   if (m_Action == "save")
   {
       resource = m_pApp->ConvertText(m_Resource, pE) ;
       rc = m_pApp->PcEntConv(atom, m_Content, pE) ;
       content = atom.Chain() ;
       if (!content.Size())
       {
           errorReport.Printf("No data to write to file %s\n", *resource) ;
           return E_NODATA ;
       }
       ofstream    os ;
       os.open(*resource) ;
       if (os.fail())
           { errorReport.Printf("Could not open for write, file %s\n", *resource) ; return E_WRITEFAIL ; }
       os << content ;
       if (os.fail())
           { errorReport.Printf("Could not write, file %s\n", *resource) ; return E_WRITEFAIL ; }
       os.close() ;
       return E_OK ;
   }
   if (m_Action == "delete")
   {
       resource = m_pApp->ConvertText(m_Resource, pE) ;
       if (lstat(*resource, &fs) < 0)
           { errorReport.Printf("Action DELETE Failed: File %s not found\n", *resource) ; return E_NOTFOUND ; }
       if (ISDIR(fs.st_mode))
           { errorReport.Printf("Action DELETE Failed: %s is a directory\n", *resource) ; return E_TYPE ; }
       if (unlink(*resource) < 0)
           { errorReport.Printf("Action DELETE Failed: File %s could not be deleted\n", *resource) ; return E_WRITEFAIL ; }
       return E_OK ;
   }
   errorReport.Printf("Filesys command Failed: Action %s illegal\n", *m_Action) ;
   return E_SYNTAX ;
}