]> code.citadel.org Git - citadel.git/blobdiff - citadel/server/modules/expire/serv_expire.c
cdb_fetch() and cdb_next_item() now return a struct cdbdata instead of a pointer...
[citadel.git] / citadel / server / modules / expire / serv_expire.c
index af53a1ed3189246876df27789f8c1972093f3128..bda629bf35887a6db7bd460017d2001303bceb03 100644 (file)
@@ -486,7 +486,7 @@ int PurgeUsers(void) {
 // 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;
@@ -505,12 +505,11 @@ int PurgeVisits(void) {
 
        // 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;
@@ -577,7 +576,7 @@ int PurgeVisits(void) {
 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));
 
@@ -585,15 +584,14 @@ int PurgeUseTable(StrBuf *ErrMsg) {
 
        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);
@@ -618,7 +616,7 @@ int PurgeUseTable(StrBuf *ErrMsg) {
 // 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;
@@ -627,9 +625,9 @@ int PurgeEuidIndexTable(void) {
        // 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) {
@@ -639,15 +637,14 @@ int PurgeEuidIndexTable(void) {
                        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);
 
        }