From eaaafc241fb922e87f7f188b1985c7600ad9df0e Mon Sep 17 00:00:00 2001 From: tradke Date: Tue, 13 Nov 2001 18:31:58 +0000 Subject: Bugfix using the message board. git-svn-id: http://svn.cactuscode.org/arrangements/CactusConnect/HTTPDExtra/trunk@34 61ea717e-8e0c-4c3c-b38e-e9c67f54f1f1 --- src/Groups.c | 230 ++++++++++++++++++++++++++++------------------------------- 1 file 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 -#include +#include #include "cctk.h" - #include "util_String.h" #include "CactusConnect/HTTPD/src/http_Request.h" @@ -22,26 +21,14 @@ 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

%s %s %s
", - memo,HTTP_ArgumentValue(request, "name"), - currtime,currdate); - - sprintf(memo,"%s\n\n%s

",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, + "

%s %s %s
\n\n%s

", + 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,"CACTUS Messages\n"); - - HTTP_Write(request, message, strlen(message)); + const_string = "CACTUS Messages\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,"

Message Board

\n" - "

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" - "

" - ""); - - HTTP_Write(request, message, strlen(message)); - - sprintf(message, - "\n"); - HTTP_Write(request, message, strlen(message)); - - sprintf(message,"\n"); - - HTTP_Write(request, message, strlen(message)); - - sprintf(message,"
Name:" - "" - "
Message:" - "\n" - "
"); - - HTTP_Write(request, message, strlen(message)); - - sprintf(message, - "\n"); - - HTTP_Write(request, message, strlen(message)); - - sprintf(message,"%s","

Messages:

"); - HTTP_Write(request, message, strlen(message)); - - if (strlen(memo)>0) - { - sprintf(message,"
%s
",memo); - HTTP_Write(request, message, strlen(message)); - } - else - { - strcpy(message,"
No messages yet ... use the form above to add one
"); - HTTP_Write(request, message, strlen(message)); - } - - sprintf(message, "
"); - HTTP_Write(request, message, strlen(message)); + HTTP_ContentHeader (GH, 0, sizeof (message), message, NULL); + HTTP_Write (request, message, strlen (message)); + + const_string = "

Message Board

\n" + "

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.

\n" + "
\n" + "" + "\n" + "
Name:
Message:" + "\n" + "
" + "\n" + "" + "

Messages:

" + "
"; + 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 = "
"; + 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); } - - -- cgit v1.2.3