aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortradke <tradke@61ea717e-8e0c-4c3c-b38e-e9c67f54f1f1>2001-11-13 18:31:58 +0000
committertradke <tradke@61ea717e-8e0c-4c3c-b38e-e9c67f54f1f1>2001-11-13 18:31:58 +0000
commiteaaafc241fb922e87f7f188b1985c7600ad9df0e (patch)
tree6822d6d089725dbcc9083276a908ca7941f7f312
parent692fd2f1f56eab73dacc6e991070ec0236496417 (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.c230
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);
}
-
-