+/*
+ * Copyright (c) 1996-2013 by the citadel.org team
+ *
+ * This program is open source software. You can redistribute it and/or
+ * modify it under the terms of the GNU General Public License, version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
#define VIRTUAL_MY_FLOOR -1
/*
- * \brief This struct holds a list of rooms for \\\<G\\\>oto operations.
+ * This struct holds a list of rooms for "Goto" operations.
*/
struct march {
struct march *next; /* pointer to next in linked list */
int march_order; /* sequence in which we are to visit this room */
};
-/* *
- * \brief This struct holds a list of rooms for client display.
- * It is a binary tree.
+/*
+ * This struct holds a list of rooms for client display. It is a binary tree.
*/
struct roomlisting {
struct roomlisting *lnext; /* pointer to 'left' tree node */
long AlphaN;
} Floor;
-/**
- * \brief Data structure for roomlist-to-folderlist conversion
+/*
+ * Data structure for roomlist-to-folderlist conversion
*/
struct __ofolder {
int floor; /* which floor is it on */
-/**
- * \brief Data structure for roomlist-to-folderlist conversion
+/*
+ * Data structure for roomlist-to-folderlist conversion
*/
typedef struct _folder {
/* Data citserver tells us about the room */
int RoomAideLoaded;
StrBuf *RoomAide;
+/* only available if GNET contains this */
+ const StrBuf* RoomAlias; /* by what mail will this room send mail? */
+
/* only available if GETR was run */
int XALoaded;
StrBuf *XAPass;
int BumpUsers; /* if SETR set to 1 to make all users who knew this room to forget about it. */
HashList *IgnetCfgs[maxRoomNetCfg + 1];
-}folder;
+} folder;
HashList *GetFloorListHash(StrBuf *Target, WCTemplputParams *TP);
void vDeleteFolder(void *vFolder);
void FlushFolder(folder *room);
+void FlushIgnetCfgs(folder *room);
void ParseGoto(folder *proom, StrBuf *Line);
void FlushRoomlist(void); /* release our caches, so a deleted / zapped room disapears */
void ReloadCurrentRoom(void); /* Flush cache; reload current state */
+HashList *GetFloorListHash(StrBuf *Target, WCTemplputParams *TP);
+HashList *GetRoomListHash(StrBuf *Target, WCTemplputParams *TP);
+int SortRoomsByListOrder(const void *room1, const void *room2);
+void tmplput_roombanner(StrBuf *Target, WCTemplputParams *TP);
+
+
+void LoadRoomAide(void);
+void LoadRoomXA (void);
+void LoadXRoomPic(void);
+void LoadXRoomInfoText(void);
+void LoadXRoomXCountFiles(void);
+
+long gotoroom(const StrBuf *gname);
+
+void slrp_highest(void);
+void remove_march(const StrBuf *aaa);
+void dotskip(void);
+void smart_goto(const StrBuf *next_room);
+void free_march_list(wcsession *wcf);
+
/*
* wrapper around usual sort-comparator; private rooms will allways be prefered, -1 if one of them NULL
*/
#define REST_GOT_LOCAL_PART (1<<4)
#define REST_NONEXIST (1<<5)
+
+extern CtxType CTX_ROOMS;
+extern CtxType CTX_FLOORS;