Return TypeFunction nameArguments
hzEcodehdbIsamfile::Init(hdbADP&,const hzString&,const hzString&,unsigned int,unsigned int,unsigned int,)

Declared in file: hzDatabase.h
Defined in file : hdbIsamfile.cpp

Function Logic:

0:START 1:m_nInitState 2:Return hzerr(E_INITDUP,Resource already initialized) 3:!name 4:Return hzerr(E_ARGUMENT,No name) 5:!opdir 6:Return hzerr(E_ARGUMENT,Repository %s: No working directory,*name) 7:adp.GetBinRepos(name) 8:Return hzerr(E_DUPLICATE,Binary datum cron %s already exists,*name) 9:m_Name m_Workdir hzChain::Printf 10:lstat(*m_Workdir,&fs)<0 11:AssertDir rc 12:rc!=E_OK 13:Return hzerr(rc,Could not assert working dir of %s,*m_Workdir) 14:m_fileDelta m_fileStore hzChain::Printf 15:lstat(*m_fileDelta,&fs)<0 16:open fd 17:fd<-1 18:Return hzerr(E_OPENFAIL,Cannot create %s, error %s,*m_fileDelta,Err2Txt(errno)) 19:close 20:lstat(*m_fileStore,&fs)<0 21:open fd 22:fd<-1 23:Return hzerr(E_OPENFAIL,Cannot create %s, error %s,*m_fileStore,Err2Txt(errno)) 24:close 25:m_nInitState 26:Return E_OK

Function body:

hzEcode hdbIsamfile::Init (hdbADP& adp, const hzString& name, const hzString& opdir, unsigned int keySize, unsigned int objSize, unsigned int blkSize)
{
   _hzfunc("hdbIsamfile::Init") ;
   FSTAT       fs ;
   ifstream    is ;
   int32_t     fd ;
   hzEcode     rc ;
   if (m_nInitState)
       return hzerr(E_INITDUP, "Resource already initialized") ;
   if (!name)  return hzerr(E_ARGUMENT, "No name") ;
   if (!opdir) return hzerr(E_ARGUMENT, "Repository %s: No working directory", *name) ;
   if (adp.GetBinRepos(name))
       return hzerr(E_DUPLICATE, "Binary datum cron %s already exists", *name) ;
   m_Name = name ;
   m_Workdir = opdir ;
   m_Error.Printf("%s called with cron name %s and workdir %s\n", *_fn, *m_Name, *m_Workdir) ;
   if (lstat(*m_Workdir, &fs) < 0)
   {
       rc = AssertDir(*m_Workdir, 0777);
       if (rc != E_OK)
           return hzerr(rc, "Could not assert working dir of %s", *m_Workdir) ;
   }
   m_fileDelta = m_Workdir + "/" + m_Name + ".idx" ;
   m_fileStore = m_Workdir + "/" + m_Name + ".dat" ;
   m_Error.Printf("%s Have index file of %s and data file of %s\n", *_fn, *m_fileDelta, *m_fileStore) ;
   if (lstat(*m_fileDelta, &fs) < 0)
   {
       fd = open(*m_fileDelta, O_RDWR|O_CREAT|O_TRUNC, 0600);
       if (fd < -1)
           return hzerr(E_OPENFAIL, "Cannot create %s, error %s", *m_fileDelta, Err2Txt(errno)) ;
       close(fd) ;
   }
   if (lstat(*m_fileStore, &fs) < 0)
   {
       fd = open(*m_fileStore, O_RDWR|O_CREAT|O_TRUNC, 0600);
       if (fd < -1)
           return hzerr(E_OPENFAIL, "Cannot create %s, error %s", *m_fileStore, Err2Txt(errno)) ;
       close(fd) ;
   }
   m_nInitState = 1;
   return E_OK ;
}