- /* First, check to make sure we're still allowed in this room. */
- serv_printf("GOTO %s", WC->wc_roomname);
- serv_getln(buf, sizeof buf);
- if (buf[0] != '2') {
- smart_goto("_BASEROOM_");
- return;
- }
-
- /* If the chat socket is still open from a previous chat,
- * close it -- because it might be stale or in the wrong room.
- */
- if (WC->chat_sock < 0) {
- close(WC->chat_sock);
- WC->chat_sock = (-1);
- }
-
- /* WebCit Chat works by having transmit, receive, and refresh
- * frames. Load the frameset.
- */
- do_template("chatframeset");
- return;
-}
-
-
-/*
- *
- */
-void page_popup(void)
-{
- char buf[SIZ];
- char pagefrom[SIZ];
-
- while (serv_puts("GEXP"), serv_getln(buf, sizeof buf), buf[0]=='1') {
-
- extract_token(pagefrom, &buf[4], 3, '|', sizeof pagefrom);
-
- wprintf("<table border=1 bgcolor=\"#880000\"><tr><td>");
- wprintf("<span class=\"titlebar\">");
- wprintf(_("Instant message from "));
- escputs(pagefrom);
- wprintf("</span></td></tr><tr><td><font color=\"#FFFFFF\">");
- fmout("LEFT");
- wprintf("</font></td></tr>"
- "<tr><td><div align=center><font color=\"#FFFFFF\">"
- "<a href=\"javascript:hide_page_popup()\">");
- wprintf(_("[ close window ]"));
- wprintf("</a>"
- "</font></div>"
- "</td></tr>"
- "</table>\n");
- }
-
- WC->HaveInstantMessages = 0;
-}
-
-
-
-/*
- * Support function for chat -- make sure the chat socket is connected
- * and in chat mode.
- */
-int setup_chat_socket(void) {
- char buf[SIZ];
- int i;
- int good_chatmode = 0;
-
- if (WC->chat_sock < 0) {
-
- if (!strcasecmp(ctdlhost, "uds")) {
- /* unix domain socket */
- sprintf(buf, "%s/citadel.socket", ctdlport);
- WC->chat_sock = uds_connectsock(buf);
- }
- else {
- /* tcp socket */
- WC->chat_sock = tcp_connectsock(ctdlhost, ctdlport);
- }
-
- if (WC->chat_sock < 0) {
- return(errno);
- }
-
- /* Temporarily swap the serv and chat sockets during chat talk */
- i = WC->serv_sock;
- WC->serv_sock = WC->chat_sock;
- WC->chat_sock = i;
-
- serv_getln(buf, sizeof buf);
- if (buf[0] == '2') {
- serv_printf("USER %s", WC->wc_username);
- serv_getln(buf, sizeof buf);
- if (buf[0] == '3') {
- serv_printf("PASS %s", WC->wc_password);
- serv_getln(buf, sizeof buf);
- if (buf[0] == '2') {
- serv_printf("GOTO %s", WC->wc_roomname);
- serv_getln(buf, sizeof buf);
- if (buf[0] == '2') {
- serv_puts("CHAT");
- serv_getln(buf, sizeof buf);
- if (buf[0] == '8') {
- good_chatmode = 1;
- }
- }
- }
- }