Got an iPhone or iPad? We have a brand new Pastebin App for both devices, and it's totally free! Click here to download the new Pastebin App for iOS.
Guest

mfp

By: a guest on Jan 22nd, 2010  |  syntax: C  |  size: 1.01 KB  |  hits: 95  |  expires: Never
download  |  raw  |  embed  |  report abuse
Copied
  1.  
  2. /* Open a database file and connect a hash database object. */
  3. bool tchdbopen(TCHDB *hdb, const char *path, int omode){
  4.   assert(hdb && path);
  5.   if(!HDBLOCKMETHOD(hdb, true)) return false;
  6.   if(hdb->fd >= 0){
  7.     tchdbsetecode(hdb, TCEINVALID, __FILE__, __LINE__, __func__);
  8.     HDBUNLOCKMETHOD(hdb);
  9.     return false;
  10.   }
  11.   char *rpath = tcrealpath(path);
  12.   if(!rpath){
  13.     int ecode = TCEOPEN;
  14.     switch(errno){
  15.     case EACCES: ecode = TCENOPERM; break;
  16.     case ENOENT: ecode = TCENOFILE; break;
  17.     case ENOTDIR: ecode = TCENOFILE; break;
  18.     }
  19.     tchdbsetecode(hdb, ecode, __FILE__, __LINE__, __func__);
  20.     HDBUNLOCKMETHOD(hdb);
  21.     return false;
  22.   }
  23.   if(!tcpathlock(rpath)){
  24.     tchdbsetecode(hdb, TCETHREAD, __FILE__, __LINE__, __func__);
  25.     TCFREE(rpath);
  26.     HDBUNLOCKMETHOD(hdb);
  27.     return false;
  28.   }
  29.   bool rv = tchdbopenimpl(hdb, path, omode);
  30.   if(rv){
  31.     hdb->rpath = rpath;
  32.   } else {
  33.     tcpathunlock(rpath);
  34.     TCFREE(rpath);
  35.   }
  36.   HDBUNLOCKMETHOD(hdb);
  37.   return rv;
  38. }