+ IFNEXPERT hit_any_key(ipc);
+}
+
+void dotknown(CtdlIPC *ipc, int what, char *match)
+{ /* list rooms according to attribute */
+ struct march *listing = NULL;
+ struct march *mptr;
+ int r; /* IPC response code */
+ char buf[SIZ];
+
+ /* Ask the server for a room list */
+ r = CtdlIPCKnownRooms(ipc, AllAccessibleRooms, (-1), &listing, buf);
+ if (r / 100 != 1) {
+ listing = NULL;
+ }
+
+ color(BRIGHT_CYAN);
+
+ switch (what) {
+ case 0:
+ pprintf("\n Anonymous rooms:\n");
+ listrms(listing, LISTRMS_ALL, -1, QR_ANONONLY|QR_ANONOPT, NULL);
+ pprintf("\n");
+ break;
+ case 1:
+ pprintf("\n Directory rooms:\n");
+ listrms(listing, LISTRMS_ALL, -1, QR_DIRECTORY, NULL);
+ pprintf("\n");
+ break;
+ case 2:
+ pprintf("\n Matching \"%s\" rooms:\n", match);
+ listrms(listing, LISTRMS_ALL, -1, 0, match);
+ pprintf("\n");
+ break;
+ case 3:
+ pprintf("\n Preferred only rooms:\n");
+ listrms(listing, LISTRMS_ALL, -1, QR_PREFONLY, NULL);
+ pprintf("\n");
+ break;
+ case 4:
+ pprintf("\n Private rooms:\n");
+ listrms(listing, LISTRMS_ALL, -1, QR_PRIVATE, NULL);
+ pprintf("\n");
+ break;
+ case 5:
+ pprintf("\n Read only rooms:\n");
+ listrms(listing, LISTRMS_ALL, -1, QR_READONLY, NULL);
+ pprintf("\n");
+ break;
+ case 6:
+ pprintf("\n Shared rooms:\n");
+ listrms(listing, LISTRMS_ALL, -1, QR_NETWORK, NULL);
+ pprintf("\n");
+ break;
+ }
+
+ /* Free the room list */
+ while (listing) {
+ mptr = listing->next;
+ free(listing);
+ listing = mptr;
+ };
+
+ color(DIM_WHITE);
+ IFNEXPERT hit_any_key(ipc);