Back to index

webcit  8.12-dfsg
Classes | Defines | Typedefs | Functions
roomops.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  march
struct  roomlisting
struct  _floor
struct  __ofolder
 Data structure for roomlist-to-folderlist conversion. More...
struct  _folder
 Data structure for roomlist-to-folderlist conversion. More...

Defines

#define VIRTUAL_MY_FLOOR   -1
#define REST_TOPLEVEL   0
#define REST_IN_NAMESPACE   (1<<0)
#define REST_IN_FLOOR   (1<<1)
#define REST_IN_ROOM   (1<<2)
#define REST_HAVE_SUB_ROOMS   (1<<3)
#define REST_GOT_LOCAL_PART   (1<<4)
#define REST_NONEXIST   (1<<5)

Typedefs

typedef struct _floor Floor
typedef struct _folder folder
 Data structure for roomlist-to-folderlist conversion.

Functions

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)
void ReloadCurrentRoom (void)
HashList * GetRoomListHash (StrBuf *Target, WCTemplputParams *TP)
int SortRoomsByListOrder (const void *room1, const void *room2)
 Unused function that orders rooms by the listorder flag.
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)
int CompareRooms (const folder *room1, const folder *room2)

Class Documentation

struct march

Definition at line 7 of file roomops.h.

Collaboration diagram for march:
Class Members
int march_floor
char march_name
int march_order
struct march * next
struct roomlisting

Definition at line 18 of file roomops.h.

Collaboration diagram for roomlisting:
Class Members
struct roomlisting * lnext
unsigned rlflags
int rlfloor
char rlname
int rlorder
struct roomlisting * rnext
struct _floor

Definition at line 31 of file roomops.h.

Class Members
long AlphaN
int ID
StrBuf * Name
long NRooms
struct __ofolder

Data structure for roomlist-to-folderlist conversion.

Definition at line 41 of file roomops.h.

Class Members
int floor
int hasnewmsgs
int is_mailbox
char name
int num_rooms
char room
int selectable
int view
struct _folder

Data structure for roomlist-to-folderlist conversion.

Definition at line 57 of file roomops.h.

Collaboration diagram for _folder:
Class Members
int BumpUsers
long defview
StrBuf * Directory
const Floor * Floor
int floorid
int hasnewmsgs
long HighestRead
HashList * IgnetCfgs
int is_inbox
int IsTrash
long lastchange
long LastMessageRead
StrBuf * name
long nNewMessages
long nRoomNameParts
long nTotalMessages
long Order
long QRFlags
long QRFlags2
long RAFlags
StrBuf * RoomAide
int RoomAideLoaded
StrBuf ** RoomNameParts
int ShowInfo
int UsersNewMAilboxMessages
int view
int XALoaded
StrBuf * XAPass
int XDownloadCount
int XHaveDownloadCount
int XHaveInfoTextLoaded
int XHaveRoomPic
int XHaveRoomPicLoaded
StrBuf * XInfoText

Define Documentation

#define REST_GOT_LOCAL_PART   (1<<4)

Definition at line 149 of file roomops.h.

#define REST_HAVE_SUB_ROOMS   (1<<3)

Definition at line 148 of file roomops.h.

#define REST_IN_FLOOR   (1<<1)

Definition at line 146 of file roomops.h.

#define REST_IN_NAMESPACE   (1<<0)

Definition at line 145 of file roomops.h.

#define REST_IN_ROOM   (1<<2)

Definition at line 147 of file roomops.h.

#define REST_NONEXIST   (1<<5)

Definition at line 150 of file roomops.h.

#define REST_TOPLEVEL   0

Definition at line 144 of file roomops.h.

#define VIRTUAL_MY_FLOOR   -1

Definition at line 2 of file roomops.h.


Typedef Documentation

typedef struct _floor Floor
typedef struct _folder folder

Data structure for roomlist-to-folderlist conversion.


Function Documentation

int CompareRooms ( const folder room1,
const folder room2 
)

Definition at line 586 of file roomlist.c.

{
       if ((room1 == NULL) || (room2 == NULL))
              return -1;
       return CompareRoomListByFloorRoomPrivFirst(room1, room2);
}

Here is the call graph for this function:

Here is the caller graph for this function:

void dotskip ( void  )

Definition at line 111 of file roomops.c.

                   {
       smart_goto(sbstr("room"));
}

Here is the call graph for this function:

Here is the caller graph for this function:

void FlushFolder ( folder room)

Definition at line 186 of file roomlist.c.

{
       int i;

       FreeStrBuf(&room->XAPass);
       FreeStrBuf(&room->Directory);
       FreeStrBuf(&room->RoomAide);
       FreeStrBuf(&room->XInfoText);
       room->XHaveInfoTextLoaded = 0;

       FreeStrBuf(&room->name);

       FlushIgnetCfgs(room);

       if (room->RoomNameParts != NULL)
       {
              for (i=0; i < room->nRoomNameParts; i++)
                     FreeStrBuf(&room->RoomNameParts[i]);
              free(room->RoomNameParts);
       }
       memset(room, 0, sizeof(folder));
}

Here is the call graph for this function:

Here is the caller graph for this function:

void FlushIgnetCfgs ( folder room)

Definition at line 174 of file roomlist.c.

{
       int i;
       if (room->IgnetCfgs[maxRoomNetCfg] == (HashList*) StrBufNOTNULL)
       {
              for (i = ignet_push_share; i < maxRoomNetCfg; i++)
                     DeleteHash(&room->IgnetCfgs[i]);
       }
       memset(&room->IgnetCfgs, 0, sizeof(HashList *) * (maxRoomNetCfg + 1));

}

Here is the caller graph for this function:

void FlushRoomlist ( void  )

Definition at line 1302 of file roomops.c.

{
       wcsession *WCC = WC;
       _FlushRoomList(WCC);
}

Here is the call graph for this function:

Here is the caller graph for this function:

void free_march_list ( wcsession wcf)

Definition at line 7 of file marchlist.c.

{
       struct march *mptr;

       while (wcf->march != NULL) {
              mptr = wcf->march->next;
              free(wcf->march);
              wcf->march = mptr;
       }
}

Here is the caller graph for this function:

HashList* GetFloorListHash ( StrBuf *  Target,
WCTemplputParams TP 
)

Definition at line 74 of file roomlist.c.

{
       int Done = 0;
       const char *Err;
       StrBuf *Buf;
       HashList *floors;
       HashList *floorsbyname;
       HashPos *it;
       Floor *pFloor;
       void *vFloor;
       const char *Pos;
       int i;
       wcsession *WCC = WC;
       const char *HashKey;
       long HKLen;


       if (WCC->Floors != NULL)
              return WCC->Floors;
       WCC->Floors = floors = NewHash(1, Flathash);
       WCC->FloorsByName = floorsbyname = NewHash(1, NULL);
       Buf = NewStrBuf();

       pFloor = (Floor*) malloc(sizeof(Floor));
       pFloor->ID = VIRTUAL_MY_FLOOR;
       pFloor->Name = NewStrBufPlain(_("My Folders"), -1);
       pFloor->NRooms = 0;
       
       Put(floors, IKEY(pFloor->ID), pFloor, DeleteFloor);
       Put(floorsbyname, SKEY(pFloor->Name), pFloor, reference_free_handler);

       serv_puts("LFLR"); /* get floors */
       StrBufTCP_read_line(Buf, &WC->serv_sock, 0, &Err); /* '100', we hope */
       if (GetServerStatus(Buf, NULL) == 1) 
       {
              while(!Done && StrBuf_ServGetln(Buf) >= 0)
                     if ( (StrLength(Buf)==3) && 
                          !strcmp(ChrPtr(Buf), "000")) 
                     {
                            Done = 1;
                     }
                     else
                     {
                     
                            Pos = NULL;

                            pFloor = (Floor*) malloc(sizeof(Floor));
                            pFloor->ID = StrBufExtractNext_int(Buf, &Pos, '|');
                            pFloor->Name = NewStrBufPlain(NULL, StrLength(Buf));
                            StrBufExtract_NextToken(pFloor->Name, Buf, &Pos, '|');
                            pFloor->NRooms = StrBufExtractNext_long(Buf, &Pos, '|');

                            Put(floors, IKEY(pFloor->ID), pFloor, DeleteFloor);
                            Put(floorsbyname, SKEY(pFloor->Name), pFloor, reference_free_handler);
                     }
       }
       FreeStrBuf(&Buf);
       
       /* now lets pre-sort them alphabeticaly. */
       i = 1;
       SortByPayload(floors, SortFloorsByNameOrder);
       it = GetNewHashPos(floors, 0);
       while (       GetNextHashPos(floors, it, &HKLen, &HashKey, &vFloor)) 
              ((Floor*) vFloor)->AlphaN = i++;
       DeleteHashPos(&it);
       SortByHashKeyStr(floors);

       return floors;
}

Here is the call graph for this function:

Here is the caller graph for this function:

HashList* GetRoomListHash ( StrBuf *  Target,
WCTemplputParams TP 
)

Definition at line 220 of file roomlist.c.

{
       int Done = 0;
       HashList *rooms;
       folder *room;
       StrBuf *Buf;
       const char *Pos;
       void *vFloor;
       wcsession *WCC = WC;
       CompareFunc SortIt;
       WCTemplputParams SubTP;

       Buf = NewStrBuf();
       rooms = NewHash(1, NULL);
       StrBuf_ServGetln(Buf);
       if (GetServerStatus(Buf, NULL) == 1) 
       {
              while(!Done && (StrBuf_ServGetln(Buf) >= 0))
                     if ( (StrLength(Buf)==3) && 
                          !strcmp(ChrPtr(Buf), "000")) 
                     {
                            Done = 1;
                     }
                     else
                     {                           
                            Pos = NULL;
                            room = (folder*) malloc (sizeof(folder));
                            memset(room, 0, sizeof(folder));

                            /* Load the base data from the server reply */
                            room->name = NewStrBufPlain(NULL, StrLength(Buf));
                            StrBufExtract_NextToken(room->name, Buf, &Pos, '|');

                            room->QRFlags = StrBufExtractNext_long(Buf, &Pos, '|');
                            room->floorid = StrBufExtractNext_int(Buf, &Pos, '|');
                            room->Order = StrBufExtractNext_long(Buf, &Pos, '|');
                            room->QRFlags2 = StrBufExtractNext_long(Buf, &Pos, '|');

                            room->RAFlags = StrBufExtractNext_long(Buf, &Pos, '|');

/*
  ACWHUT?
  room->ACL = NewStrBufPlain(NULL, StrLength(Buf));
  StrBufExtract_NextToken(room->ACL, Buf, &Pos, '|');
*/

                            room->view = StrBufExtractNext_long(Buf, &Pos, '|');
                            room->defview = StrBufExtractNext_long(Buf, &Pos, '|');
                            room->lastchange = StrBufExtractNext_long(Buf, &Pos, '|');

                            /* Evaluate the Server sent data for later use */
                            /* find out, whether we are in a sub-room */
                            room->nRoomNameParts = StrBufNum_tokens(room->name, '\\');
                            if (room->nRoomNameParts > 1)
                            {
                                   int i;

                                   Pos = NULL;
                                   room->RoomNameParts = malloc(sizeof(StrBuf*) * (room->nRoomNameParts + 1));
                                   memset(room->RoomNameParts, 0, sizeof(StrBuf*) * (room->nRoomNameParts + 1));
                                   for (i=0; i < room->nRoomNameParts; i++)
                                   {
                                          room->RoomNameParts[i] = NewStrBuf();
                                          StrBufExtract_NextToken(room->RoomNameParts[i],
                                                               room->name, &Pos, '\\');
                                   }
                            }

                            /* Private mailboxes on the main floor get remapped to the personal folder */
                            if ((room->QRFlags & QR_MAILBOX) && 
                                (room->floorid == 0))
                            {
                                   room->floorid = VIRTUAL_MY_FLOOR;
                                   if ((room->nRoomNameParts == 1) && 
                                       (StrLength(room->name) == 4) && 
                                       (strcmp(ChrPtr(room->name), "Mail") == 0))
                                   {
                                          room->is_inbox = 1;
                                   }

                            }
                            /* get a pointer to the floor we're on: */
                            GetHash(WCC->Floors, IKEY(room->floorid), &vFloor);
                            room->Floor = (const Floor*) vFloor;



                            /* now we know everything, remember it... */
                            Put(rooms, SKEY(room->name), room, vDeleteFolder);
                     }
       }

       SubTP.Filter.ContextType = CTX_ROOMS;
       SortIt = RetrieveSort(&SubTP, NULL, 0, HKEY("fileunsorted"), 0);
       if (SortIt != NULL)
              SortByPayload(rooms, SortIt);
       else 
              SortByPayload(rooms, SortRoomsByListOrder);
       FreeStrBuf(&Buf);
       return rooms;
}

Here is the call graph for this function:

Here is the caller graph for this function:

long gotoroom ( const StrBuf *  gname)

Definition at line 177 of file roomops.c.

{
       wcsession *WCC = WC;
       StrBuf *Buf;
       static long ls = (-1L);
       long err = 0;
       int room_name_supplied = 0;
       int is_baseroom = 0;

       /* store ungoto information */
       if (StrLength(gname) > 0) {
              room_name_supplied = 1;
       }
       if (room_name_supplied) {
              strcpy(WCC->ugname, ChrPtr(WCC->CurRoom.name));
              if (!strcasecmp(ChrPtr(gname), "_BASEROOM_")) {
                     is_baseroom = 1;
              }
       }
       WCC->uglsn = ls;
       Buf = NewStrBuf();

       /* move to the new room */
       if (room_name_supplied) {
              serv_printf("GOTO %s", ChrPtr(gname));
       }
       else {
              /* or just refresh the current state... */
              serv_printf("GOTO 00000000000000000000");
       }
       StrBuf_ServGetln(Buf);
       if  (GetServerStatus(Buf, &err) != 2) {
              serv_puts("GOTO _BASEROOM_");
              StrBuf_ServGetln(Buf);
              /* 
               * well, we know that this is the fallback case, 
               * but we're interested that the first command 
               * didn't work out in first place.
               */
              if (GetServerStatus(Buf, NULL) != 2) {
                     FreeStrBuf(&Buf);
                     return err;
              }
       }
       FlushFolder(&WCC->CurRoom);
       ParseGoto(&WCC->CurRoom, Buf);

       if (room_name_supplied) {
              remove_march(WCC->CurRoom.name);
              if (is_baseroom) {
                     remove_march(gname);
              }
       }
       FreeStrBuf(&Buf);

       return err;
}

Here is the call graph for this function:

Here is the caller graph for this function:

void LoadRoomAide ( void  )

Definition at line 442 of file roomops.c.

{
       wcsession *WCC = WC;
       StrBuf *Buf;
       
       if (WCC->CurRoom.RoomAideLoaded)
              return;

       WCC->CurRoom.RoomAideLoaded = 1;
       Buf = NewStrBuf();
       serv_puts("GETA");
       StrBuf_ServGetln(Buf);
       if (GetServerStatus(Buf, NULL) != 2) {
              FlushStrBuf(WCC->CurRoom.RoomAide);
              AppendImportantMessage (ChrPtr(Buf) + 4, 
                                   StrLength(Buf) - 4);
       } else {
              const char *Pos;

              Pos = ChrPtr(Buf) + 4;

              FreeStrBuf(&WCC->CurRoom.RoomAide);
              WCC->CurRoom.RoomAide = NewStrBufPlain (NULL, StrLength (Buf));

              StrBufExtract_NextToken(WCC->CurRoom.RoomAide, Buf, &Pos, '|'); 
       }
       FreeStrBuf (&Buf);
}

Here is the call graph for this function:

Here is the caller graph for this function:

void LoadRoomXA ( void  )

Definition at line 565 of file roomops.c.

{
       wcsession *WCC = WC;
              
       if (WCC->CurRoom.XALoaded > 0)
              return;

       GetCurrentRoomFlags(&WCC->CurRoom, 0);
}

Here is the call graph for this function:

Here is the caller graph for this function:

void LoadXRoomInfoText ( void  )

Definition at line 600 of file roomops.c.

{
       wcsession *WCC = WC;
       StrBuf *Buf;
       int Done = 0;
       
       if (WCC->CurRoom.XHaveInfoTextLoaded) {
              return;
       }

       WCC->CurRoom.XHaveInfoTextLoaded = 1;
       Buf = NewStrBuf();

       serv_puts("RINF");

       StrBuf_ServGetln(Buf);
       if (GetServerStatus(Buf, NULL) == 1) {
              WCC->CurRoom.XInfoText = NewStrBuf ();
              
              while (!Done && StrBuf_ServGetln(Buf)>=0) {
                     if ( (StrLength(Buf)==3) && 
                          !strcmp(ChrPtr(Buf), "000")) 
                            Done = 1;
                     else 
                            StrBufAppendBuf(WCC->CurRoom.XInfoText, Buf, 0);
              }
       }

       FreeStrBuf(&Buf);
}

Here is the call graph for this function:

Here is the caller graph for this function:

void LoadXRoomPic ( void  )

Definition at line 576 of file roomops.c.

{
       wcsession *WCC = WC;
       StrBuf *Buf;
       
       if (WCC->CurRoom.XHaveRoomPicLoaded)
              return;

       WCC->CurRoom.XHaveRoomPicLoaded = 1;
       Buf = NewStrBuf();
       serv_puts("OIMG _roompic_");
       StrBuf_ServGetln(Buf);
       if (GetServerStatus(Buf, NULL) != 2) {
              WCC->CurRoom.XHaveRoomPic = 0;
       } else {
              WCC->CurRoom.XHaveRoomPic = 1;
       }
       serv_puts("CLOS");
       StrBuf_ServGetln(Buf);
       GetServerStatus(Buf, NULL);
       FreeStrBuf (&Buf);
}

Here is the call graph for this function:

Here is the caller graph for this function:

void LoadXRoomXCountFiles ( void  )

Definition at line 632 of file roomops.c.

{
       wcsession *WCC = WC;
       StrBuf *Buf;
       int Done = 0;
       
       if (WCC->CurRoom.XHaveDownloadCount)
              return;

       WCC->CurRoom.XHaveDownloadCount = 1;

       Buf = NewStrBuf();
       serv_puts("RDIR");
       StrBuf_ServGetln(Buf);
       if (GetServerStatus(Buf, NULL) == 1) {
              
              while (!Done && StrBuf_ServGetln(Buf)>=0) {
                     if ( (StrLength(Buf)==3) && 
                          !strcmp(ChrPtr(Buf), "000")) 
                            Done = 1;
                     else 
                            WCC->CurRoom.XDownloadCount++;
              }
       }

       FreeStrBuf (&Buf);
}

Here is the call graph for this function:

Here is the caller graph for this function:

void ParseGoto ( folder proom,
StrBuf *  Line 
)

Definition at line 237 of file roomops.c.

{
       wcsession *WCC = WC;
       const char *Pos;
       int flag;
       void *vFloor = NULL;
       StrBuf *pBuf;

       if (StrLength(Line) < 4) {
              return;
       }
       
       /* ignore the commandstate... */
       Pos = ChrPtr(Line) + 4;

       if (room->RoomNameParts != NULL)
       {
              int i;
              for (i=0; i < room->nRoomNameParts; i++)
                     FreeStrBuf(&room->RoomNameParts[i]);
              free(room->RoomNameParts);
              room->RoomNameParts = NULL;
       }

       pBuf = room->name;  
       if (pBuf == NULL)
              pBuf = NewStrBufPlain(NULL, StrLength(Line));
       else
              FlushStrBuf(pBuf);
       memset(room, 0, sizeof(folder));
       room->name = pBuf;

       StrBufExtract_NextToken(room->name, Line, &Pos, '|');

       room->nNewMessages = StrBufExtractNext_long(Line, &Pos, '|'); 
       if (room->nNewMessages > 0)
              room->RAFlags |= UA_HASNEWMSGS;

       room->nTotalMessages = StrBufExtractNext_long(Line, &Pos, '|');

       room->ShowInfo =  StrBufExtractNext_long(Line, &Pos, '|');
       
       room->QRFlags = StrBufExtractNext_long(Line, &Pos, '|');

       DBG_QR(room->QRFlags);

       room->HighestRead = StrBufExtractNext_long(Line, &Pos, '|');
       room->LastMessageRead = StrBufExtractNext_long(Line, &Pos, '|');

       room->is_inbox = StrBufExtractNext_long(Line, &Pos, '|');

       flag = StrBufExtractNext_long(Line, &Pos, '|');
       if (WCC->is_aide || flag) {
              room->RAFlags |= UA_ADMINALLOWED;
       }

       room->UsersNewMAilboxMessages = StrBufExtractNext_long(Line, &Pos, '|');

       room->floorid = StrBufExtractNext_int(Line, &Pos, '|');

       room->view = StrBufExtractNext_long(Line, &Pos, '|');

       room->defview = StrBufExtractNext_long(Line, &Pos, '|');

       flag = StrBufExtractNext_long(Line, &Pos, '|');
       if (flag)
              room->RAFlags |= UA_ISTRASH;

       room->QRFlags2 = StrBufExtractNext_long(Line, &Pos, '|');
       DBG_QR2(room->QRFlags2);

       /* find out, whether we are in a sub-room */
       room->nRoomNameParts = StrBufNum_tokens(room->name, '\\');
       if (room->nRoomNameParts > 1)
       {
              int i;
              
              Pos = NULL;
              room->RoomNameParts = malloc(sizeof(StrBuf*) * (room->nRoomNameParts + 1));
              memset(room->RoomNameParts, 0, sizeof(StrBuf*) * (room->nRoomNameParts + 1));
              for (i=0; i < room->nRoomNameParts; i++)
              {
                     room->RoomNameParts[i] = NewStrBuf();
                     StrBufExtract_NextToken(room->RoomNameParts[i],
                                          room->name, &Pos, '\\');
              }
       }

       /* Private mailboxes on the main floor get remapped to the personal folder */
       if ((room->QRFlags & QR_MAILBOX) && 
           (room->floorid == 0))
       {
              room->floorid = VIRTUAL_MY_FLOOR;
              if ((room->nRoomNameParts == 1) && 
                  (StrLength(room->name) == 4) && 
                  (strcmp(ChrPtr(room->name), "Mail") == 0))
              {
                     room->is_inbox = 1;
              }
              
       }
       /* get a pointer to the floor we're on: */
       if (WCC->Floors == NULL)
              GetFloorListHash(NULL, NULL);

       GetHash(WCC->Floors, IKEY(room->floorid), &vFloor);
       room->Floor = (const Floor*) vFloor;
}

Here is the call graph for this function:

Here is the caller graph for this function:

void ReloadCurrentRoom ( void  )

Definition at line 1290 of file roomops.c.

{
       wcsession *WCC = WC;
       StrBuf *CurRoom;

       CurRoom = WCC->CurRoom.name;
       WCC->CurRoom.name = NULL;
       _FlushRoomList(WCC);
       gotoroom(CurRoom);
       FreeStrBuf(&CurRoom);
}

Here is the call graph for this function:

Here is the caller graph for this function:

void remove_march ( const StrBuf *  aaa)

Definition at line 23 of file marchlist.c.

{
       struct march *mptr, *mptr2;

       if (WC->march == NULL)
              return;

       if (!strcasecmp(WC->march->march_name, ChrPtr(aaa))) {
              mptr = WC->march->next;
              free(WC->march);
              WC->march = mptr;
              return;
       }
       mptr2 = WC->march;
       for (mptr = WC->march; mptr != NULL; mptr = mptr->next) {
              if (!strcasecmp(mptr->march_name, ChrPtr(aaa))) {
                     mptr2->next = mptr->next;
                     free(mptr);
                     mptr = mptr2;
              } else {
                     mptr2 = mptr;
              }
       }
}

Here is the caller graph for this function:

void slrp_highest ( void  )

Definition at line 413 of file roomops.c.

{
       char buf[256];

       serv_puts("SLRP HIGHEST");
       serv_getln(buf, sizeof buf);
}

Here is the call graph for this function:

Here is the caller graph for this function:

void smart_goto ( const StrBuf *  next_room)

Definition at line 129 of file roomops.c.

                                         {
       gotoroom(next_room);
       readloop(readnew, eUseDefault);
}

Here is the call graph for this function:

Here is the caller graph for this function:

int SortRoomsByListOrder ( const void *  room1,
const void *  room2 
)

Unused function that orders rooms by the listorder flag.

Definition at line 401 of file roomlist.c.

{
       folder *r1 = (folder*) GetSearchPayload(room1);
       folder *r2 = (folder*) GetSearchPayload(room2);
  
       if (r1->Order == r2->Order) return 0;
       if (r1->Order > r2->Order) return 1;
       return -1;
}

Here is the caller graph for this function:

void tmplput_roombanner ( StrBuf *  Target,
WCTemplputParams TP 
)

Definition at line 25 of file roomtokens.c.

{
       wcsession *WCC = WC;
       
       /* Refresh current room states.  Doesn't work? gotoroom(NULL); */

       wc_printf("<div id=\"banner\">\n");

       /* The browser needs some information for its own use */
       wc_printf("<script type=\"text/javascript\">     \n"
                "    room_is_trash = %d;         \n"
                "</script>\n",
                ((WC->CurRoom.RAFlags & UA_ISTRASH) != 0)
       );

       /*
        * If the user happens to select the "make this my start page" link,
        * we want it to remember the URL as a "/dotskip" one instead of
        * a "skip" or "gotonext" or something like that.
        */
       if (WCC->Hdr->this_page == NULL) {
              WCC->Hdr->this_page = NewStrBuf();
       }
       StrBufPrintf(WCC->Hdr->this_page, "dotskip?room=%s", ChrPtr(WC->CurRoom.name));

       do_template("roombanner");

       do_template("navbar");
       wc_printf("</div>\n");
}

Here is the call graph for this function:

Here is the caller graph for this function:

void vDeleteFolder ( void *  vFolder)

Definition at line 209 of file roomlist.c.

{
       folder *room;

       room = (folder*) vFolder;
       FlushFolder(room);

       free(room);
}

Here is the call graph for this function:

Here is the caller graph for this function: