// record is useless and should be removed.)
//
int PurgeVisits(void) {
- struct cdbdata *cdbvisit;
+ struct cdbdata cdbvisit;
struct visit vbuf;
struct VPurgeList *VisitPurgeList = NULL;
struct VPurgeList *vptr;
// Now traverse through the visits, purging irrelevant records...
cdb_rewind(CDB_VISIT);
- while(cdbvisit = cdb_next_item(CDB_VISIT), cdbvisit != NULL) {
+ while(cdbvisit = cdb_next_item(CDB_VISIT), cdbvisit.len>0) {
memset(&vbuf, 0, sizeof(struct visit));
- memcpy(&vbuf, cdbvisit->ptr,
- ( (cdbvisit->len > sizeof(struct visit)) ?
- sizeof(struct visit) : cdbvisit->len) );
- cdb_free(cdbvisit);
+ memcpy(&vbuf, cdbvisit.ptr,
+ ( (cdbvisit.len > sizeof(struct visit)) ?
+ sizeof(struct visit) : cdbvisit.len) );
RoomIsValid = 0;
UserIsValid = 0;
int PurgeUseTable(StrBuf *ErrMsg) {
int purged = 0;
int total = 0;
- struct cdbdata *cdbut;
+ struct cdbdata cdbut;
struct UseTable ut;
Array *purge_list = array_new(sizeof(int));
syslog(LOG_DEBUG, "Purge use table: phase 1");
cdb_rewind(CDB_USETABLE);
- while(cdbut = cdb_next_item(CDB_USETABLE), cdbut != NULL) {
+ while(cdbut = cdb_next_item(CDB_USETABLE), cdbut.len>0) {
++total;
- if (cdbut->len > sizeof(struct UseTable))
- memcpy(&ut, cdbut->ptr, sizeof(struct UseTable));
+ if (cdbut.len > sizeof(struct UseTable))
+ memcpy(&ut, cdbut.ptr, sizeof(struct UseTable));
else {
memset(&ut, 0, sizeof(struct UseTable));
- memcpy(&ut, cdbut->ptr, cdbut->len);
+ memcpy(&ut, cdbut.ptr, cdbut.len);
}
- cdb_free(cdbut);
if ( (time(NULL) - ut.timestamp) > USETABLE_RETAIN ) {
array_append(purge_list, &ut.hash);
// Purge the EUID Index of old records.
int PurgeEuidIndexTable(void) {
int purged = 0;
- struct cdbdata *cdbei;
+ struct cdbdata cdbei;
struct EPurgeList *el = NULL;
struct EPurgeList *eptr;
long msgnum;
// Phase 1: traverse through the table, discovering old records...
syslog(LOG_DEBUG, "Purge EUID index: phase 1");
cdb_rewind(CDB_EUIDINDEX);
- while(cdbei = cdb_next_item(CDB_EUIDINDEX), cdbei != NULL) {
+ while(cdbei = cdb_next_item(CDB_EUIDINDEX), cdbei.len>0) {
- memcpy(&msgnum, cdbei->ptr, sizeof(long));
+ memcpy(&msgnum, cdbei.ptr, sizeof(long));
msg = CtdlFetchMessage(msgnum, 0);
if (msg != NULL) {
eptr = (struct EPurgeList *) malloc(sizeof(struct EPurgeList));
if (eptr != NULL) {
eptr->next = el;
- eptr->ep_keylen = cdbei->len - sizeof(long);
- eptr->ep_key = malloc(cdbei->len);
- memcpy(eptr->ep_key, &cdbei->ptr[sizeof(long)], eptr->ep_keylen);
+ eptr->ep_keylen = cdbei.len - sizeof(long);
+ eptr->ep_key = malloc(cdbei.len);
+ memcpy(eptr->ep_key, &cdbei.ptr[sizeof(long)], eptr->ep_keylen);
el = eptr;
}
++purged;
}
- cdb_free(cdbei);
}