| Return Type | Function name | Arguments |
|---|---|---|
| hzEcode | hdbIsamfile::Init | (hdbADP&,const hzString&,const hzString&,unsigned int,unsigned int,unsigned int,) |
Declared in file: hzDatabase.h
Defined in file : hdbIsamfile.cpp
Function Logic:
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 ;
}