* Brought over message reading and entry functions from old WebCit
authorArt Cancro <ajc@citadel.org>
Sat, 12 Dec 1998 05:44:05 +0000 (05:44 +0000)
committerArt Cancro <ajc@citadel.org>
Sat, 12 Dec 1998 05:44:05 +0000 (05:44 +0000)
webcit/.cvsignore
webcit/ChangeLog
webcit/child.h
webcit/messages.c
webcit/roomops.c
webcit/serv_func.c
webcit/webcit.c

index 31918c35b2765f4dae69f4c5770ec64510270580..9e496317120a8db5966afceac16a59822ac59a44 100644 (file)
@@ -7,3 +7,4 @@ config.h.in
 configure
 webcit
 webserver
+content
index 7fd4d9bd9a6ccec1cfd3694f46badf7b18f5ab13..694c874faec937922ae526e34ea4dd9ee9c8c217 100644 (file)
@@ -1,5 +1,5 @@
 Fri Dec 11 21:14:36 EST 1998 Art Cancro <ajc@uncnsrd.mt-kisco.ny.us>
-       * Brought over message reading functions from old WebCit
+       * Brought over message reading and entry functions from old WebCit
 
 1998-12-10 Nathan Bryant <bryant@cs.usm.maine.edu>
        * context_loop.c: really fix the SO_LINGER stuff
index 5d3b69eb91ae84f29f706364f7f9c3fd17abb749..d4b5c85cc63287247cf9e4aa4072733ff2fdad07 100644 (file)
@@ -41,3 +41,6 @@ void embed_main_menu(void);
 void serv_read(char *buf, int bytes);
 int haschar(char *st, char ch);
 void readloop(char *oper);
+void text_to_server(char *ptr);
+void display_enter(void);
+void post_message(void);
index 31b778e184b62c9ab7f5beac45935f6e121dd6d4..2f6ee125ecccc81d00ee808c5383be49302caf01 100644 (file)
@@ -256,3 +256,125 @@ DONE:     wprintf("</BODY></HTML>\n");
        }
 
 
+
+
+/*
+ * post message (or don't post message)
+ */
+void post_message(void) {
+       char buf[256];
+
+       printf("HTTP/1.0 200 OK\n");
+       output_headers();
+        wprintf("<HTML>");
+        wprintf("<BODY BACKGROUND=\"/image&name=background\" TEXT=\"#000000\" LINK=\"#004400\">\n");
+
+       strcpy(buf, bstr("sc"));
+       if (strcasecmp(buf, "Save message")) {
+               wprintf("Cancelled.  Message was not posted.<BR>\n");
+               dump_vars();
+               }
+
+       else {
+               sprintf(buf,"ENT0 1|%s|0|0",bstr("recp"));
+               serv_puts(buf);
+               serv_gets(buf);
+               if (buf[0]=='4') {
+                       text_to_server(bstr("msgtext"));
+                       serv_puts("000");
+                       wprintf("Message has been posted.<BR>\n");
+                       }
+               else {
+                       wprintf("<EM>%s</EM><BR>\n",&buf[4]);
+                       }
+               }
+
+       wprintf("</BODY></HTML>\n");
+       wDumpContent();
+       }       
+
+
+
+
+
+
+
+
+/*
+ * prompt for a recipient (to be called from display_enter() only)
+ */
+void prompt_for_recipient() {
+
+        wprintf("<TABLE WIDTH=100% BORDER=0 BGCOLOR=007700><TR><TD>");
+        wprintf("<FONT SIZE=+1 COLOR=\"FFFFFF\"");
+        wprintf("<B>Send private e-mail</B>\n");
+        wprintf("</FONT></TD></TR></TABLE>\n");
+
+       wprintf("<CENTER>");
+       wprintf("<FORM METHOD=\"POST\" ACTION=\"/display_enter\">\n");
+       wprintf("Enter recipient: ");
+       wprintf("<INPUT TYPE=\"text\" NAME=\"recp\" MAXLENGTH=\"64\"><BR>\n");
+       wprintf("<INPUT TYPE=\"submit\" NAME=\"sc\" VALUE=\"Enter message\">");
+       wprintf("<INPUT TYPE=\"submit\" NAME=\"sc\" VALUE=\"Cancel\">");
+       wprintf("</FORM></CENTER>\n");
+       }
+
+
+
+/*
+ * display the message entry screen
+ */
+void display_enter(void) {
+       char buf[256];
+       long now;
+       struct tm *tm;
+
+       printf("HTTP/1.0 200 OK\n");
+       output_headers();
+        wprintf("<HTML>");
+        wprintf("</HEAD><BODY BACKGROUND=\"/image&name=background\" TEXT=\"#000000\" LINK=\"#004400\">\n");
+
+       sprintf(buf,"ENT0 0|%s|0|0",bstr("recp"));
+       serv_puts(buf);
+       serv_gets(buf);
+
+       if (!strncmp(buf,"570",3)) {
+               if (strlen(bstr("recp"))>0) {
+                       wprintf("<EM>%s</EM><BR>\n",&buf[4]);
+                       }
+               prompt_for_recipient();
+               goto DONE;
+               }
+
+       if (buf[0]!='2') {
+               wprintf("<EM>%s</EM><BR>\n",&buf[4]);
+               goto DONE;
+               }
+
+       wprintf("<CENTER>Enter message below.  Messages are formatted to\n");
+       wprintf("the <EM>reader's</EM> screen width.  To defeat the\n");
+       wprintf("formatting, indent a line at least one space.  \n");
+       wprintf("<BR>");
+
+       time(&now);
+       tm=(struct tm *)localtime(&now);
+       strcpy(buf,(char *)asctime(tm)); buf[strlen(buf)-1]=0;
+       strcpy(&buf[16],&buf[19]);
+       wprintf("</CENTER><FONT COLOR=\"440000\"><B> %s ",&buf[4]);
+       wprintf("from %s ",wc_username);
+       if (strlen(bstr("recp"))>0) wprintf("to %s ",bstr("recp"));
+       wprintf("in %s&gt; ",wc_roomname);
+       wprintf("</B></FONT><BR><CENTER>\n");
+
+       wprintf("<FORM METHOD=\"POST\" ACTION=\"/post\">\n");
+       wprintf("<INPUT TYPE=\"hidden\" NAME=\"recp\" VALUE=\"%s\">\n",
+               bstr("recp"));
+       wprintf("<INPUT TYPE=\"submit\" NAME=\"sc\" VALUE=\"Save message\">");
+       wprintf("<INPUT TYPE=\"submit\" NAME=\"sc\" VALUE=\"Cancel\"><BR>\n");
+
+       wprintf("<TEXTAREA NAME=\"msgtext\" wrap=soft ROWS=30 COLS=80 WIDTH=80></TEXTAREA><P>\n");
+
+       wprintf("</FORM></CENTER>\n");
+DONE:  wprintf("</BODY></HTML>\n");
+       wDumpContent();
+       }
index bd26fe7a1d069e82b4de17f0c1b62a650b1aebcc..72126a580d55cdef009b4ff87f9fd07876ddd4b0 100644 (file)
@@ -237,7 +237,20 @@ void gotoroom(char *gname, int display_name)
                        extract_int(&buf[4],1),
                        extract_int(&buf[4],2));
 
-               /* FIX add room image here */
+               /* Display room graphic.  The server doesn't actually need the
+                * room name, but we supply it in order to keep the browser
+                * from using a cached graphic from another room.
+                */
+               serv_puts("OIMG _roompic_");
+               serv_gets(buf);
+               if (buf[0]=='2') {
+                       wprintf("<TD>");
+                       wprintf("<IMG SRC=\"/image&name=_roompic_&room=");
+                       escputs(wc_roomname);
+                       wprintf("\"></TD>");
+                       serv_puts("CLOS");
+                       serv_gets(buf);
+                       }
 
                wprintf("<TD>");
                readinfo(0);
index 9c894e03b5b728811ef87648c2e2ad816274d688..087a7bc78c232a71f19bd0ef3341d00df49d8fd4 100644 (file)
@@ -111,3 +111,44 @@ void fmout(FILE *fp)
                }
        }
 
+
+
+
+
+
+/*
+ * transmit message text (in memory) to the server
+ */
+void text_to_server(char *ptr) {
+       char buf[256];
+       int ch,a,pos;
+
+       pos = 0;
+       
+       strcpy(buf,"");
+       while (ptr[pos]!=0) {
+               ch = ptr[pos++];
+               if (ch==10) {
+                       while (isspace(buf[strlen(buf)-1]))
+                               buf[strlen(buf)-1]=0;
+                       serv_puts(buf);
+                       strcpy(buf,"");
+                       }
+               else {
+                       a = strlen(buf);
+                       buf[a+1] = 0;
+                       buf[a] = ch;
+                       if ((ch==32)&&(strlen(buf)>200)) {
+                               buf[a]=0;
+                               serv_puts(buf);
+                               strcpy(buf,"");
+                               }
+                       if (strlen(buf)>250) {
+                               serv_puts(buf);
+                               strcpy(buf,"");
+                               }
+                       }
+               }
+       serv_puts(buf);
+       }
+
index e0c731829afb5e9b355339ff6c750a29b19ee67f..f828791adf730da2b01346e63f5e53fecd0a6e40 100644 (file)
@@ -102,10 +102,10 @@ void addurls(char *url) {
                for (a=0; a<b; ++a) ++ptr;
                strcpy(ptr,"");
                
-               u->url_data = malloc(strlen(up));
+               u->url_data = malloc(strlen(up)+1);
                strcpy(u->url_data, up);
+               u->url_data[b] = 0;
                unescape_input(u->url_data);
-
                up = ptr;
                ++up;
                }
@@ -571,6 +571,14 @@ fclose(fp);
                readloop("readfwd");
                }
 
+       else if (!strcasecmp(action, "display_enter")) {
+               display_enter();
+               }
+
+       else if (!strcasecmp(action, "post")) {
+               post_message();
+               }
+
        /* When all else fails... */
        else {
                printf("HTTP/1.0 200 OK\n");