diff options
author | tradke <tradke@61ea717e-8e0c-4c3c-b38e-e9c67f54f1f1> | 2001-11-13 18:31:58 +0000 |
---|---|---|
committer | tradke <tradke@61ea717e-8e0c-4c3c-b38e-e9c67f54f1f1> | 2001-11-13 18:31:58 +0000 |
commit | eaaafc241fb922e87f7f188b1985c7600ad9df0e (patch) | |
tree | 6822d6d089725dbcc9083276a908ca7941f7f312 | |
parent | 692fd2f1f56eab73dacc6e991070ec0236496417 (diff) |
Bugfix using the message board.
git-svn-id: http://svn.cactuscode.org/arrangements/CactusConnect/HTTPDExtra/trunk@34 61ea717e-8e0c-4c3c-b38e-e9c67f54f1f1
-rw-r--r-- | src/Groups.c | 230 |
1 files changed, 111 insertions, 119 deletions
diff --git a/src/Groups.c b/src/Groups.c index 0c67126..0c38c64 100644 --- a/src/Groups.c +++ b/src/Groups.c @@ -2,17 +2,16 @@ @file Groups.c @date Wed Sep 14 23:47:43 2000 @author Gabrielle Allen - @desc - Pages about groups + @desc + Pages about groups @enddesc - @version $Header$ + @version $Id$ @@*/ #include <stdio.h> -#include <string.h> +#include <stdlib.h> #include "cctk.h" - #include "util_String.h" #include "CactusConnect/HTTPD/src/http_Request.h" @@ -22,27 +21,15 @@ static const char *rcsid = "$Header$"; CCTK_FILEVERSION(CactusConnect_HTTPDExtra_Groups_c) -/******************************************************************** - ********************* Local Data Types *********************** - ********************************************************************/ - -static char memo[4098]; /******************************************************************** ********************* Local Routine Prototypes ********************* ********************************************************************/ +int HTTPUTILS_RegisterPages(void); static int MessagesPage(cGH *cctkGH, httpRequest *request, void *data); /******************************************************************** - ********************* Other Routine Prototypes ********************* - ********************************************************************/ - -/******************************************************************** - ********************* Local Data ***************************** - ********************************************************************/ - -/******************************************************************** ********************* External Routines ********************** ********************************************************************/ @@ -50,26 +37,20 @@ static int MessagesPage(cGH *cctkGH, httpRequest *request, void *data); @routine HTTPUTILS_RegisterPages @date Wed Sep 14 11:29:43 2000 @author Gabrielle Allen - @desc - Httpd utils registration routine. - @enddesc - @calls - @calledby - @history - - @endhistory - + @desc + Httpd utils registration routine. + @enddesc @@*/ -int HTTPUTILS_RegisterPages(void) +int HTTPUTILS_RegisterPages (void) { /* Register the message board page. */ - HTTP_RegisterPage("/Messages", MessagesPage, NULL); + HTTP_RegisterPage ("/Messages", MessagesPage, NULL); - HTTP_ContentLink("/Messages/index.html", "Message Board", - "Collaborative simulation notepad", - HTTP_QUICKLINK); + HTTP_ContentLink ("/Messages/index.html", "Message Board", + "Collaborative simulation notepad", + HTTP_QUICKLINK); - return 0; + return (0); } /******************************************************************** @@ -79,105 +60,116 @@ int HTTPUTILS_RegisterPages(void) /*@@ @routine MessagesPage @date Sat Sep 16 - @author Gabrielle - @desc - Message board for simulation. - @enddesc - @calls - @calledby + @author Gabrielle Allen + @desc + Message board for simulation. + @enddesc @@*/ -static int MessagesPage(cGH *cctkGH, httpRequest *request, void *data) +static int MessagesPage (cGH *GH, httpRequest *request, void *data) { int retval; - char message[4098]; - char currtime[100]; - char currdate[100]; + size_t message_board_len; + char message[1024], currtime[64], currdate[64]; + const char *const_string, *name, *memo; + static char *message_board = NULL; + + + /* avoid compiler warning about unused parameter */ + data = data; if (request->n_arguments > 0) - { - Util_CurrentTime(100,currtime); - Util_CurrentDate(100,currdate); - - sprintf(memo,"%s\n\n<p><strong>%s</strong> %s %s<br>", - memo,HTTP_ArgumentValue(request, "name"), - currtime,currdate); - - sprintf(memo,"%s\n\n<i>%s</i></p>",memo, - HTTP_ArgumentValue(request, "memo")); + { + name = HTTP_ArgumentValue (request, "name"); + memo = HTTP_ArgumentValue (request, "memo"); + + if (name && *name && memo && *memo) + { + /* concatenate new message, labeled with current date/time, to the + message board */ + Util_CurrentTime (sizeof (currtime), currtime); + Util_CurrentDate (sizeof (currdate), currdate); + + if (message_board) + { + message_board_len = strlen (message_board); + message_board = (char *) realloc (message_board, + message_board_len + + strlen (currtime) + strlen (currdate)+ + strlen (name) + strlen (memo) + 60); + } + else + { + message_board_len = 0; + message_board = (char *) malloc (strlen (currtime) + strlen (currdate) + + strlen (name) + strlen (memo) + 60); + } + if (message_board) + { + sprintf (message_board + message_board_len, + "<P><STRONG>%s</STRONG> %s %s<BR>\n\n<I>%s</I></P>", + name, currtime, currdate, memo); + } + } + + /* Now redirect the browser to the normal message board page */ + if (request->http_major_version < 1 || + (request->http_major_version == 1 && request->http_minor_version < 1)) + { + /* Older browsers don't understand 303 */ + const_string = "HTTP/1.0 302 Found\r\n" + "Location: /Messages/index.html\r\n\r\n"; + } + else + { + const_string = "HTTP/1.0 303 See Other\r\n" + "Location: /Messages/index.html\r\n\r\n"; + } + + HTTP_Write (request, const_string, strlen (const_string)); + + return (0); } /* Status message */ - strcpy(message,"HTTP/1.0 200 OK\r\n"); - - HTTP_Write(request, message, strlen(message)); - - /* Content-Type */ - strcpy(message,"Content-Type: text/html\r\n\r\n"); - - HTTP_Write(request, message, strlen(message)); + const_string = "HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n"; + HTTP_Write (request, const_string, strlen (const_string)); /* Start the page */ - strcpy(message,"<HTML><HEAD><TITLE>CACTUS Messages</TITLE>\n"); - - HTTP_Write(request, message, strlen(message)); + const_string = "<HTML><HEAD><TITLE>CACTUS Messages</TITLE>\n"; + HTTP_Write (request, const_string, strlen (const_string)); /* Write out the header part */ - HTTP_ContentHeader(cctkGH, 0, 4098, message,NULL); - HTTP_Write(request, message, strlen(message)); - - strcpy(message,"<center><H1>Message Board</H1></center>\n" - "<p>This page can be used to post messages during a simulation. " - "At the moment the messages will disappear when the simulation" - " finishes, but soon there will be an option to save them to a file" - "</p><center>" - "<table>"); - - HTTP_Write(request, message, strlen(message)); - - sprintf(message, - "<FORM ACTION=\"/Messages/\">\n"); - HTTP_Write(request, message, strlen(message)); - - sprintf(message,"<tr><td>Name:</td><td>" - "<INPUT TYPE=TEXT SIZE=40 MAXLENGTH=100 NAME=\"name\" VALUE=\"\">" - "</td></tr>\n"); - - HTTP_Write(request, message, strlen(message)); - - sprintf(message,"<tr><td valign=top>Message:</td><td>" - "<TEXTAREA NAME=\"memo\" ROWS=10 COLS=40></TEXTAREA>\n" - "</td></tr></table>"); - - HTTP_Write(request, message, strlen(message)); - - sprintf(message, - "<INPUT TYPE=SUBMIT VALUE=\"Submit Message\"></FORM>\n"); - - HTTP_Write(request, message, strlen(message)); - - sprintf(message,"%s","<table width=80%%><tr><td><h2>Messages:</h2></td></tr><tr><td>"); - HTTP_Write(request, message, strlen(message)); - - if (strlen(memo)>0) - { - sprintf(message,"<table width=\"100%%\" cellpadding=5 cellspacing=5><tr><td BGCOLOR=\"#E9F4D3\" >%s</td></tr></table>",memo); - HTTP_Write(request, message, strlen(message)); - } - else - { - strcpy(message,"<table width=\"100%%\" cellpadding=5 cellspacing=5><tr><td BGCOLOR=\"#E9F4D3\">No messages yet ... use the form above to add one</td></tr></table>"); - HTTP_Write(request, message, strlen(message)); - } - - sprintf(message, "</td></tr></table></center>"); - HTTP_Write(request, message, strlen(message)); + HTTP_ContentHeader (GH, 0, sizeof (message), message, NULL); + HTTP_Write (request, message, strlen (message)); + + const_string = "<CENTER><H1>Message Board</H1></CENTER>\n" + "<P>This page can be used to post messages during a " + "simulation. At the moment the messages will disappear " + "when the simulation finishes, but soon there will be an " + "option to save them to a file.</P>\n" + "<CENTER><TABLE><FORM ACTION=\"/Messages/\">\n" + "<TR><TD>Name:</TD>" + "<TD><INPUT TYPE=TEXT SIZE=40 MAXLENGTH=100 NAME=\"name\" " + "VALUE=\"\"></TD></TR>\n" + "<TR><TD VALIGN=TOP>Message:</TD><TD>" + "<TEXTAREA NAME=\"memo\" ROWS=10 COLS=40></TEXTAREA>\n" + "</TD></TR></TABLE>" + "<INPUT TYPE=SUBMIT VALUE=\"Submit Message\"></FORM>\n" + "<TABLE WIDTH=80%%><TR><TD><H2>Messages:</H2></TD></TR>" + "<TR><TD><TABLE WIDTH=\"100%%\" CELLPADDING=5 CELLSPACING=5>" + "<TR><TD BGCOLOR=\"#E9F4D3\">"; + HTTP_Write (request, const_string, strlen (const_string)); + + const_string = message_board ? message_board : + "No messages yet ... use the form above to add one"; + HTTP_Write (request, const_string, strlen (const_string)); + + const_string = "</TD></TR></TABLE></TD></TR></TABLE></CENTER>"; + HTTP_Write (request, const_string, strlen (const_string)); /* Write out the footer part. */ + HTTP_ContentFooter (GH, 0, sizeof (message), message); + retval = HTTP_Write (request, message, strlen (message)); - HTTP_ContentFooter(cctkGH, 0, 4098, message); - retval = HTTP_Write(request, message, strlen(message)); - - return retval; + return (retval); } - - |