lib/vpwtable/gdbm_read.cc
changeset 2 b3afb9f1e801
parent 0 6f7a81934006
equal deleted inserted replaced
1:30113bfbe723 2:b3afb9f1e801
    26   datum key;
    26   datum key;
    27 public:
    27 public:
    28   gdbm_vpwtable_reader(const mystring& filename);
    28   gdbm_vpwtable_reader(const mystring& filename);
    29   ~gdbm_vpwtable_reader();
    29   ~gdbm_vpwtable_reader();
    30   bool operator!() const;
    30   bool operator!() const;
    31   bool get(vpwentry& out);
    31   vpwentry* get();
    32   bool rewind();
    32   bool rewind();
    33   bool end();
    33   bool end();
    34 };
    34 };
    35 
    35 
    36 vpwtable_reader* vpwtable::start_read() const
    36 vpwtable_reader* vpwtable::start_read() const
    75     return true;
    75     return true;
    76   }
    76   }
    77   return false;
    77   return false;
    78 }
    78 }
    79 
    79 
    80 bool gdbm_vpwtable_reader::get(vpwentry& out)
    80 vpwentry* gdbm_vpwtable_reader::get()
    81 {
    81 {
       
    82   vpwentry* v = 0;
    82   if(key.dptr) {
    83   if(key.dptr) {
    83     mystring name(key.dptr, key.dsize);
    84     mystring name(key.dptr, key.dsize);
    84     datum rec = gdbm_fetch(dbf, key);
    85     datum rec = gdbm_fetch(dbf, key);
    85     mystring result(rec.dptr, rec.dsize);
    86     mystring result(rec.dptr, rec.dsize);
    86     free(rec.dptr);
    87     free(rec.dptr);
    87     if(!out.from_record(name, result))
    88     v = vpwentry::new_from_record(name, result);
    88       return false;
       
    89     key = gdbm_nextkey(dbf, key);
    89     key = gdbm_nextkey(dbf, key);
    90     return true;
       
    91   }
    90   }
    92   return false;
    91   return v;
    93 }
    92 }