{
int a, i, j;
struct visit vbuf;
- struct cdbdata *cdbfr;
long *msglist = NULL;
int num_msgs = 0;
int num_processed = 0;
}
// Load the message list
- cdbfr = cdb_fetch(CDB_MSGLISTS, &CC->room.QRnumber, sizeof(long));
- if (cdbfr == NULL) {
+ num_msgs = CtdlFetchMsgList(CC->room.QRnumber, &msglist);
+ if (num_msgs <= 0) {
+ if (msglist) free(msglist);
if (need_to_free_re) regfree(&re);
return 0; // No messages at all? No further action.
}
- msglist = (long *) cdbfr->ptr;
- num_msgs = cdbfr->len / sizeof(long);
-
- cdbfr->ptr = NULL; // clear this so that cdb_free() doesn't free it
- cdb_free(cdbfr); // we own this memory now
-
/*
* Now begin the traversal.
*/
return(ERROR + ROOM_NOT_FOUND);
}
-
msgs_to_be_merged = malloc(sizeof(long) * num_newmsgs);
num_msgs_to_be_merged = 0;
-
cdbfr = cdb_fetch(CDB_MSGLISTS, &CC->room.QRnumber, sizeof(long));
if (cdbfr == NULL) {
msglist = NULL;
cdb_free(cdbfr);
}
-
/* Create a list of msgid's which were supplied by the caller, but do
* not already exist in the target room. It is absolutely taboo to
* have more than one reference to the same message in a room.