Ignore:
Timestamp:
2007-07-24T16:20:41+12:00 (17 years ago)
Author:
qq6
Message:

Jeffrey has fixed operating records of users database on Windows

File:
1 edited

Legend:

Unmodified
Added
Removed
  • gsdl/trunk/src/recpt/userdb.cpp

    r14013 r14269  
    7777userdbclass::userdbclass(const text_t &userdbfilename)
    7878{
    79   activated = (!userdb.opendatabase(userdbfilename, GDBM_WRCREAT, 1000, true)) ? false : true;
     79  storeduserdbfilename = userdbfilename;
     80  activated = (!userdb.opendatabase(storeduserdbfilename, GDBM_READER, 1000, true)) ? false : true;
     81  if (activated == false)
     82    {
     83      activated = (!userdb.opendatabase(storeduserdbfilename, GDBM_WRCREAT, 1000, true)) ? false : true;
     84      if (activated == true)
     85        {
     86          userdb.closedatabase();
     87          activated = (!userdb.opendatabase(storeduserdbfilename, GDBM_READER, 1000, true)) ? false : true;
     88        }
     89    }
     90   
    8091  external_db = false;
    8192}
     
    227238      info["groups"] = userinfo.groups;
    228239      info["comment"] = userinfo.comment;
    229      
    230       return (userdb.setinfo (username, info)) ? ERRNO_SUCCEED : ERRNO_GDBMACTIONFILED ;
     240      userdb.closedatabase();
     241      userdb.opendatabase(storeduserdbfilename, GDBM_WRCREAT, 1000, true);
     242      int result = (userdb.setinfo (username, info)) ? ERRNO_SUCCEED : ERRNO_GDBMACTIONFILED;
     243      userdb.closedatabase();
     244      userdb.opendatabase(storeduserdbfilename, GDBM_READER, 1000, true);         
     245      return  result;
    231246    }
    232247  return ERRNO_CONNECTIONFAILED;
     
    290305  if (activated == true)
    291306    {
     307      userdb.closedatabase();
     308      userdb.opendatabase(storeduserdbfilename, GDBM_WRCREAT, 1000, true);
    292309      userdb.deletekey (username);
     310      userdb.closedatabase();
     311      userdb.opendatabase(storeduserdbfilename, GDBM_READER, 1000, true);
    293312      return ERRNO_SUCCEED;
    294313    }
     
    335354  return ERRNO_CONNECTIONFAILED;
    336355}
    337 
    338 //an alernative way to colse the database if the class can't reach the destructor
    339 void userdbclass::closedatabase()
    340 {
    341    userdb.closedatabase();
    342 }
    343 
    344356//==========================================//
    345357//       userdbclass functions (End)        //
     
    351363keydbclass::keydbclass(const text_t &keydbfilename)
    352364{
    353   activated = (!keydb.opendatabase(keydbfilename, GDBM_WRCREAT, 1000, true)) ? false : true;
     365  storedkeydbfilename = keydbfilename;
     366  activated = (!keydb.opendatabase(storedkeydbfilename, GDBM_READER, 1000, true)) ? false : true;
     367  if (activated == false)
     368    {
     369      activated = (!keydb.opendatabase(storedkeydbfilename, GDBM_WRCREAT, 1000, true)) ? false : true;
     370      if (activated == true)
     371        {
     372          keydb.closedatabase();
     373          activated = (!keydb.opendatabase(storedkeydbfilename, GDBM_READER, 1000, true)) ? false : true;
     374        }
     375    }
    354376  external_db = false;
    355377}
     
    399421      keydata["time"] = time2text(time(NULL));
    400422     
     423      keydb.closedatabase();
     424      keydb.opendatabase(storedkeydbfilename, GDBM_WRCREAT, 1000, true);
    401425      if (!keydb.setinfo (crypt_userkey, keydata))
    402426        {
    403427          userkey.clear(); // failed
    404428        }
     429      keydb.closedatabase();
     430      keydb.opendatabase(storedkeydbfilename, GDBM_READER, 1000, true);
    405431     
    406432      return userkey;
     
    434460            // succeeded, update the key's time
    435461            info["time"] = time2text(time(NULL));
     462            keydb.closedatabase();
     463            keydb.opendatabase(storedkeydbfilename, GDBM_WRCREAT, 1000, true);
    436464            keydb.setinfo (crypt_key, info);
     465            keydb.closedatabase();
     466            keydb.opendatabase(storedkeydbfilename, GDBM_READER, 1000, true);
    437467            return true;
    438468          }
     
    477507    }
    478508}
    479 
    480 //an alernative way to colse the database if the class can't reach the destructor
    481 void keydbclass::closedatabase()
    482 {
    483    keydb.closedatabase();
    484 }
    485509//==========================================//
    486510//       keydbclass functions (End)         //
Note: See TracChangeset for help on using the changeset viewer.