- get_fullroom(&ftemp,targ_slot);
- if (CC->fullroom.FRnum[0] != 0L) {
- cdb_delete(CDB_MSGMAIN, &CC->fullroom.FRnum[0], sizeof(long));
- }
- for (a=0; a<MSGSPERRM-1; ++a) {
- ftemp.FRnum[a]=ftemp.FRnum[a+1];
- }
- ftemp.FRnum[MSGSPERRM-1] = num;
- sort_fullroom(&ftemp);
- qtemp.QRhighest = ftemp.FRnum[MSGSPERRM-1];
- put_fullroom(&ftemp,targ_slot);
+ cdbtarg = cdb_fetch(CDB_MSGLISTS, &targ_slot, sizeof(int));
+ if (cdbtarg != NULL) {
+ targmsgs = malloc(cdbtarg->len);
+ memcpy(targmsgs, cdbtarg->ptr, cdbtarg->len);
+ targ_count = cdbtarg->len / sizeof(long);
+ cdb_free(cdbtarg);
+ }
+ else {
+ targmsgs = NULL;
+ targ_count = 0;
+ }
+
+ ++targ_count;
+ targmsgs = realloc(targmsgs, ((CC->num_msgs) * sizeof(long)));
+ targmsgs[targ_count - 1] = num;
+ targ_count = sort_msglist(targmsgs, targ_count);
+ qtemp.QRhighest = targmsgs[targ_count - 1];
+ cdb_store(CDB_MSGLISTS, &targ_slot, sizeof(int),
+ targmsgs, targ_count * sizeof(long));
+ free(targmsgs);