Added ForEachRoom()
authorArt Cancro <ajc@citadel.org>
Tue, 29 Sep 1998 03:25:05 +0000 (03:25 +0000)
committerArt Cancro <ajc@citadel.org>
Tue, 29 Sep 1998 03:25:05 +0000 (03:25 +0000)
citadel/room_ops.c
citadel/room_ops.h

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
index 2bcaa6ef5bc8aa4fcb449814e0e26dcc6dd0c24d..88e92cabd8a9e2fb57831d496ac073991ce3ee34 100644 (file)
@@ -42,3 +42,4 @@ void cmd_lflr (void);
 void cmd_cflr (char *argbuf);
 void cmd_kflr (char *argbuf);
 void cmd_eflr (char *argbuf);
+void ForEachRoom(void (*CallBack)(struct quickroom *EachRoom));