]> code.citadel.org Git - citadel.git/blobdiff - citadel/room_ops.c
Added ForEachRoom()
[citadel.git] / citadel / room_ops.c
index 95ed44f43e311870496535801ff99baeb143e51d..7d7d009160ab80ac385d70ecd028d3c32a0d4db1 100644 (file)
@@ -226,6 +226,26 @@ void lputfloor(struct floor *flbuf, int floor_num)
        }
 
 
+/* 
+ *  Traverse the room file...
+ */
+void ForEachRoom(void (*CallBack)(struct quickroom *EachRoom)) {
+       struct quickroom qrbuf;
+       struct cdbdata *cdbqr;
+
+       cdb_rewind(CDB_QUICKROOM);
+
+       while(cdbqr = cdb_next_item(CDB_QUICKROOM), cdbqr != NULL) {
+               bzero(&qrbuf, sizeof(struct quickroom));
+               memcpy(&qrbuf, cdbqr->ptr,
+                       ( (cdbqr->len > sizeof(struct quickroom)) ?
+                       sizeof(struct quickroom) : cdbqr->len) );
+               cdb_free(cdbqr);
+               (*CallBack)(&qrbuf);
+               }
+       }
+
+
 
 /*
  * get_msglist()  -  retrieve room message pointers