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;
- num_msgs = 0;
- }
- else {
- msglist = (long *) cdbfr->ptr;
- cdbfr->ptr = NULL; // CtdlSaveMsgPointerInRoom() now owns this memory (this needs attention if we move to LMDB)
- num_msgs = cdbfr->len / sizeof(long);
- cdb_free(cdbfr);
- }
+ num_msgs = CtdlFetchMsgList(CC->room.QRnumber, &msglist);
/* 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
if (need_to_free_re) regfree(&re);
return(0); /* room not found */
}
- cdbfr = cdb_fetch(CDB_MSGLISTS, &qrbuf.QRnumber, sizeof(long));
- if (cdbfr != NULL) {
- dellist = malloc(cdbfr->len);
- num_msgs = cdbfr->len / sizeof(long);
- msglist = (long *) malloc(cdbfr->len);
- memcpy(msglist, cdbfr->ptr, cdbfr->len);
- cdb_free(cdbfr);
- }
+ num_msgs = CtdlFetchMsgList(qrbuf.QRnumber, &msglist);
if (num_msgs > 0) {
+ dellist = malloc(num_msgs * sizeof(long));
int have_contenttype = (content_type != NULL) && !IsEmptyStr(content_type);
int have_delmsgs = (num_dmsgnums == 0) || (dmsgnums == NULL);
int have_more_del = 1;
}
i++;
}
-/*
- {
- StrBuf *dbg = NewStrBuf();
- for (i = 0; i < num_deleted; i++)
- StrBufAppendPrintf(dbg, ", %ld", dellist[i]);
- syslog(LOG_DEBUG, "msgbase: Deleting: %s", ChrPtr(dbg));
- FreeStrBuf(&dbg);
- }
-*/
+
num_msgs = sort_msglist(msglist, num_msgs);
cdb_store(CDB_MSGLISTS, &qrbuf.QRnumber, (int)sizeof(long), msglist, (int)(num_msgs * sizeof(long)));
- if (num_msgs > 0)
+ if (num_msgs > 0) {
qrbuf.QRhighest = msglist[num_msgs - 1];
- else
+ }
+ else {
qrbuf.QRhighest = 0;
+ }
}
CtdlPutRoomLock(&qrbuf);