]> code.citadel.org Git - citadel.git/blobdiff - citadel/serv_chat.c
* Removed all of the thread cancellation cruft that is no longer necessary
[citadel.git] / citadel / serv_chat.c
index 62be9914fdafa2a9d25d5fccda7999478e07c5ae..88d343e0b8520e843d78bb6deca065cef28e9212 100644 (file)
 #include <sys/wait.h>
 #include <string.h>
 #include <limits.h>
-#ifdef HAVE_PTHREAD_H
-#include <pthread.h>
-#endif
 #include "citadel.h"
 #include "server.h"
 #include <syslog.h>
-#ifdef HAVE_SYS_SELECT_H
-#include <sys/select.h>
-#endif
 #include "serv_chat.h"
 #include "sysdep_decls.h"
 #include "citserver.h"
@@ -42,6 +36,8 @@ int ChatLastMsg = 0;
 
 extern struct CitContext *ContextList;
 
+
+
 char *Dynamic_Module_Init(void)
 {
        CtdlRegisterProtoHook(cmd_chat, "CHAT", "Begin real-time chat");
@@ -87,10 +83,10 @@ void allwrite(char *cmdbuf, int flag, char *roomname, char *username)
        time(&now);
        clnew->next = NULL;
        clnew->chat_time = now;
-       strncpy(clnew->chat_room, roomname, sizeof clnew->chat_room);
+       safestrncpy(clnew->chat_room, roomname, sizeof clnew->chat_room);
        clnew->chat_room[sizeof clnew->chat_room - 1] = 0;
        if (username) {
-               strncpy(clnew->chat_username, username,
+               safestrncpy(clnew->chat_username, username,
                        sizeof clnew->chat_username);
                clnew->chat_username[sizeof clnew->chat_username - 1] = 0;
        } else
@@ -160,13 +156,14 @@ void do_chat_listing(int allflag)
 {
        struct CitContext *ccptr;
        int count = 0;
+       char roomname[ROOMNAMELEN];
 
        if ((allflag == 0) || (allflag == 1))
                cprintf(":|\n:| Users currently in chat:\n");
        begin_critical_section(S_SESSION_TABLE);
        for (ccptr = ContextList; ccptr != NULL; ccptr = ccptr->next) {
-               if (!strcasecmp(ccptr->cs_room, "<chat>")) ++count;
-               if ((!strcasecmp(ccptr->cs_room, "<chat>"))
+               if (ccptr->cs_flags & CS_CHAT) ++count;
+               if ((ccptr->cs_flags & CS_CHAT)
                    && ((ccptr->cs_flags & CS_STEALTH) == 0)) {
                        if ((allflag == 0) || (allflag == 1))
                                cprintf(":| %-25s <%s>\n", (ccptr->fake_username[0]) ? ccptr->fake_username : ccptr->curr_user, ccptr->chat_room);
@@ -176,9 +173,12 @@ void do_chat_listing(int allflag)
        if (allflag == 1) {
                cprintf(":|\n:| Users not in chat:\n");
                for (ccptr = ContextList; ccptr != NULL; ccptr = ccptr->next) {
-                       if ((strcasecmp(ccptr->cs_room, "<chat>"))
+                       GenerateRoomDisplay(roomname, ccptr, CC);
+                       if (((ccptr->cs_flags & CS_CHAT) == 0)
                            && ((ccptr->cs_flags & CS_STEALTH) == 0)) {
-                               cprintf(":| %-25s <%s>:\n", (ccptr->fake_username[0]) ? ccptr->fake_username : ccptr->curr_user, (ccptr->fake_roomname[0]) ? ccptr->fake_roomname : ccptr->cs_room);
+                               cprintf(":| %-25s <%s>:\n",
+                                       (ccptr->fake_username[0]) ? ccptr->fake_username : ccptr->curr_user,
+                                       roomname);
                        }
                }
        }
@@ -200,7 +200,6 @@ void cmd_chat(char *argbuf)
        char cmdbuf[256];
        char *un;
        char *strptr1;
-       char hold_cs_room[ROOMNAMELEN];
        int MyLastMsg, ThisLastMsg;
        struct ChatLine *clptr;
        struct CitContext *t_context;
@@ -212,9 +211,7 @@ void cmd_chat(char *argbuf)
        }
        strcpy(CC->chat_room, "Main room");
 
-       safestrncpy(hold_cs_room, CC->cs_room, sizeof hold_cs_room);
        CC->cs_flags = CC->cs_flags | CS_CHAT;
-       set_wtmpsupp("<chat>");
        cprintf("%d Entering chat mode (type '/help' for available commands)\n",
                START_CHAT_MODE);
 
@@ -259,7 +256,6 @@ void cmd_chat(char *argbuf)
                                        sleep(1);
                                        cprintf("000\n");
                                        CC->cs_flags = CC->cs_flags - CS_CHAT;
-                                       set_wtmpsupp(hold_cs_room);
                                        return;
                                }
                                if ((!strcasecmp(cmdbuf, "/help"))
@@ -450,7 +446,6 @@ int send_express_message(char *lun, char *x_user, char *x_msg)
        struct CitContext *ccptr;
        struct ExpressMessage *newmsg, *findend;
        char *un;
-       FILE *fp;
        size_t msglen = 0;
        int do_send = 0;