int i;
FreeStrBuf(&room->name);
+ if (room->IgnetCfgs[0] == (HashList*) StrBufNOTNULL)
+ {
+ room->IgnetCfgs[0] = NULL;
+ for (i = ignet_push_share; i < maxRoomNetCfg; i++)
+ DeleteHash(&room->IgnetCfgs[i]);
+ }
if (room->RoomNameParts != NULL)
{
for (i=0; i < room->nRoomNameParts; i++)
folder *room;
StrBuf *Buf;
const char *Pos;
- const char *Err;
void *vFloor;
wcsession *WCC = WC;
CompareFunc SortIt;
Buf = NewStrBuf();
rooms = NewHash(1, NULL);
- StrBufTCP_read_line(Buf, &WC->serv_sock, 0, &Err);
+ StrBuf_ServGetln(Buf);
if (GetServerStatus(Buf, NULL) == 1)
{
while(!Done && StrBuf_ServGetln(Buf))
return rooms;
}
+HashList *GetNetConfigHash(StrBuf *Target, WCTemplputParams *TP)
+{
+ wcsession *WCC = WC;
+ StrBuf *Line;
+ StrBuf *Token;
+ StrBuf *Content;
+ long WantThisOne;
+ long PutTo;
+
+ WantThisOne = GetTemplateTokenNumber(Target, TP, 6, 0);
+ if (WantThisOne == 0)
+ return NULL;
+ if (WCC->CurRoom.IgnetCfgs[0] == (HashList*) StrBufNOTNULL)
+ return WCC->CurRoom.IgnetCfgs[WantThisOne];
+
+ WCC->CurRoom.IgnetCfgs[0] = (HashList*) StrBufNOTNULL;
+ serv_puts("GNET");
+ Line = NewStrBuf();
+ Token = NewStrBuf();
+ StrBuf_ServGetln(Line);
+ if (GetServerStatus(Line, NULL) == 1)
+ {
+ const char *Pos = NULL;
+ StrBuf_ServGetln(Line);
+ StrBufExtract_NextToken(Token, Line, &Pos, '|');
+ PutTo = GetTokenDefine(SKEY(Token), -1);
+ if ((PutTo > 0) && (PutTo < maxRoomNetCfg))
+ {
+ int n;
+
+ if (WCC->CurRoom.IgnetCfgs[PutTo] == NULL)
+ WCC->CurRoom.IgnetCfgs[PutTo] = NewHash(1, NULL);
+ Content = NewStrBuf();
+ StrBufExtract_NextToken(Content, Line, &Pos, '|');
+ n = GetCount(WCC->CurRoom.IgnetCfgs[PutTo]) + 1;
+ Put(WCC->CurRoom.IgnetCfgs[PutTo],
+ IKEY(n),
+ Content,
+ HFreeStrBuf);
+ }
+ }
+
+ return WCC->CurRoom.IgnetCfgs[WantThisOne];
+}
+
/** Unused function that orders rooms by the listorder flag */
int SortRoomsByListOrder(const void *room1, const void *room2)
{
RegisterNamespace("FLOOR:NROOMS", 0, 0, tmplput_FLOOR_NROOMS, NULL, CTX_FLOORS);
RegisterConditional(HKEY("COND:ROOM:REST:ISSUBFLOOR"), 0, ConditionalFloorIsRESTSubFloor, CTX_FLOORS);
+ RegisterIterator("ITERATE:THISROOM:GNET", 0, NULL, GetNetConfigHash, NULL, NULL, CTX_STRBUF, CTX_NONE, IT_NOFLAG);
+
RegisterIterator("LFLR", 0, NULL, GetFloorListHash, NULL, NULL, CTX_FLOORS, CTX_NONE, IT_FLAG_DETECT_GROUPCHANGE);
RegisterIterator("LKRA", 0, NULL, GetRoomListHashLKRA, NULL, NULL, CTX_ROOMS, CTX_NONE, IT_FLAG_DETECT_GROUPCHANGE);
REGISTERTokenParamDefine(US_COLOR);
REGISTERTokenParamDefine(US_USER_SET);
-
REGISTERTokenParamDefine(VIEW_BBS);
REGISTERTokenParamDefine(VIEW_MAILBOX);
REGISTERTokenParamDefine(VIEW_ADDRESSBOOK);
REGISTERTokenParamDefine(VIEW_JOURNAL);
REGISTERTokenParamDefine(VIEW_BLOG);
+
+ REGISTERTokenParamDefine(ignet_push_share);
+ REGISTERTokenParamDefine(listrecp);
+ REGISTERTokenParamDefine(digestrecp);
+ REGISTERTokenParamDefine(pop3client);
+ REGISTERTokenParamDefine(rssclient);
+ REGISTERTokenParamDefine(participate);
+
RegisterConditional(HKEY("COND:ROOMAIDE"), 2, ConditionalRoomAide, CTX_NONE);
RegisterConditional(HKEY("COND:ACCESS:DELETE"), 2, ConditionalRoomAcessDelete, CTX_NONE);
*/
#define REGISTERTokenParamDefine(a) RegisterTokenParamDefine(#a, sizeof(#a) - 1, a);
+/**
+ * @brief retrieve the long value of a registered string define
+ * @param Name The name of the define
+ * @param len length of Name
+ * @param Value the value to return if not found
+ */
+long GetTokenDefine(const char *Name,
+ long len,
+ long DefValue);
+
+
#define IT_NOFLAG 0
#define IT_FLAG_DETECT_GROUPCHANGE (1<<0)
#define RegisterIterator(a, b, c, d, e, f, g, h, i) RegisterITERATOR(a, sizeof(a)-1, b, c, d, e, f, g, h, i)