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 ; }