room->Floor = (const Floor*) vFloor;
}
-/**
- * \brief Delete the current room
+/*
+ * Delete the current room
*/
void delete_room(void)
{
}
}
-/**
- * \brief zap a room
+/*
+ * zap a room
*/
void zap(void)
{
-/**
- * \brief Set the message expire policy for this room and/or floor
+/*
+ * Set the message expire policy for this room and/or floor
*/
void set_room_policy(void) {
char buf[SIZ];
-/**
- * \brief Perform changes to a room's network configuration
+/*
+ * Perform changes to a room's network configuration
*/
void netedit(void) {
FILE *fp;
}
+struct sitemap_room_list {
+ struct sitemap_room_list *next;
+ StrBuf *roomname;
+ int defview;
+};
+
+
+/*
+ * Load the room list for the sitemap
+ */
+struct sitemap_room_list *sitemap_load_roomlist(void) {
+ char buf[SIZ];
+ char roomname_plain[SIZ];
+ struct sitemap_room_list *roomlist = NULL;
+
+ serv_puts("LKRA");
+ serv_getln(buf, sizeof buf);
+ if (buf[0] == '1') while(serv_getln(buf, sizeof buf), strcmp(buf, "000")) {
+ struct sitemap_room_list *ptr = malloc(sizeof(struct sitemap_room_list));
+ extract_token(roomname_plain, buf, 0, '|', sizeof roomname_plain);
+ ptr->roomname = NewStrBufPlain(roomname_plain, -1);
+ ptr->defview = extract_int(buf, 6);
+ ptr->next = roomlist;
+ roomlist = ptr;
+ }
+
+ return(roomlist);
+}
+
+
/*
* Entry point for RSS feed generator
*/
void sitemap(void) {
- HashList *roomlist = NULL;
- HashPos *it = NULL;
- long HKlen = 0;
- const char *HashKey = NULL;
- folder *room = NULL;
-
+ struct sitemap_room_list *roomlist = NULL;
output_headers(0, 0, 0, 0, 1, 0);
hprintf("Content-type: text/xml\r\n");
hprintf(
wc_printf("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
wc_printf("<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\r\n");
- roomlist = GetRoomListHash(NULL, NULL);
- if (!roomlist) syslog(LOG_CRIT, "GetRoomListHash() FAILED!");
- it = GetNewHashPos(roomlist, 0);
- if (!it) syslog(LOG_CRIT, "GetNewHashPos() FAILED!");
+ roomlist = sitemap_load_roomlist();
- while (GetNextHashPos(roomlist, it, &HKlen, &HashKey, (void *)&room))
+ while (roomlist != NULL)
{
- gotoroom(room->name);
+ gotoroom(roomlist->roomname);
/* Output the messages in this room only if it's a room type we can make sense of */
- switch(room->defview) {
+ switch(roomlist->defview) {
case VIEW_BBS:
sitemap_do_bbs();
break;
default:
break;
}
+
+ struct sitemap_room_list *ptr = roomlist;
+ roomlist = roomlist->next;
+ FreeStrBuf(&ptr->roomname);
+ free(ptr);
}
- DeleteHashPos(&it);
- DeleteHash(&roomlist);
wc_printf("</urlset>\r\n");
wDumpContent(0);
}