aboutsummaryrefslogtreecommitdiff
path: root/src/Groups.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/Groups.c')
-rw-r--r--src/Groups.c156
1 files changed, 80 insertions, 76 deletions
diff --git a/src/Groups.c b/src/Groups.c
index de46bad..08a54ad 100644
--- a/src/Groups.c
+++ b/src/Groups.c
@@ -19,6 +19,8 @@
#include "http_Request.h"
#include "http_Content.h"
+#include "http_SString.h"
+
static const char *rcsid = "$Header$";
CCTK_FILEVERSION(CactusConnect_HTTPD_Groups_c)
@@ -96,7 +98,7 @@ int HTTPi_RegisterGroupsPages(void)
static int GroupsPage(const cGH *cctkGH, httpRequest *request, void *data)
{
int retval;
- char message[4098];
+ String *message = String_New();
int i,j;
int ngroups,nvars;
cGroup gdata;
@@ -105,140 +107,142 @@ static int GroupsPage(const cGH *cctkGH, httpRequest *request, void *data)
/* avoid compiler warning about unused parameter */
data = data;
- /* Status message */
- strcpy(message,"HTTP/1.0 200 OK\r\n");
-
- HTTP_Write(request, message, strlen(message));
+ SendHTTP_OK_Header( request );
- /* Content-Type */
- strcpy(message,"Content-Type: text/html\r\n\r\n");
+ /* Start the page */
+ SetHTML_Doctype( message );
+ Send_HTTP_String(request, message);
- HTTP_Write(request, message, strlen(message));
+ Send_HTTP(request,"<html><head>\n");
+ Send_HTTP(request,"<title>Cactus Simulation Group Information</title>\n");
+ SetHTML_HeadHeader( message);
+ Send_HTTP_String(request, message );
- /* Start the page */
- strcpy(message,"<HTML><HEAD><TITLE>Cactus Simulation Group Information</TITLE>\n");
-
- HTTP_Write(request, message, strlen(message));
+ Send_HTTP(request,"</head>\n<body>\n");
/* HTTP_Write out the header part. */
- HTTP_ContentHeader(cctkGH,0,strlen(message),message,NULL);
+ SetHTML_ContentHeader(cctkGH,0,message,NULL);
- retval = HTTP_Write(request, message, strlen(message));
+ retval = Send_HTTP_String(request, message);
ngroups = CCTK_NumGroups();
- strcpy(message, "<center><h1>Groups and Grid Variables</h1></center>"
- "<p>These pages describe the grid variables and groups "
- "active in this simulation.</p>");
- retval = HTTP_Write(request, message, strlen(message));
-
- sprintf(message,"<p>This simulation contains %d groups, and %d variables, "
- "set in %d-space dimensions. Groups for which storage is "
- "currently assigned are written in <font color=red>red</font>. "
+ retval = Send_HTTP(request, "<h1>Groups and Grid Variables</h1>\n"
+ "<p>These pages describe the grid variables and groups \n"
+ "active in this simulation.</p>\n");
+
+ SetToCString(message,
+ "<p>This simulation contains ");
+ ConcatDecimal(message, CCTK_NumGroups());
+ ConcatCString(message,
+ " groups, and ");
+ ConcatDecimal(message, CCTK_NumVars());
+ ConcatCString(message,
+ " variables, "
+ "set in ");
+ ConcatDecimal(message, CCTK_MaxDim());
+ ConcatCString(message,
+ "-space dimensions. \nGroups for which storage is currently\n"
+ "assigned are written in <span class=\"hilite\">red</span>. \n"
"The numbers in square brackets are the group and variable indices."
- "</p>",
- CCTK_NumGroups(),CCTK_NumVars(),
- CCTK_MaxDim());
- retval = HTTP_Write(request, message, strlen(message));
+ "</p>\n");
+ retval = Send_HTTP_String(request, message);
- strcpy(message,"<FORM action=\"/Groups.html\" method=\"GET\">\n");
- retval = HTTP_Write(request, message, strlen(message));
+ retval = Send_HTTP(request,"<form action=\"/Groups.html\" method=\"get\">\n");
- strcpy(message,"<center><table width=100%% cellpadding=5 "
- "cellspacing=5 BGCOLOR=\"#E9F4D3\">"
+ retval = Send_HTTP(request,"<div class=\"centered\">\n"
+ "<table class=\"groups\" width=\"100%\" cellpadding=\"5\" "
+ "cellspacing=\"5\">\n"
"<tr><th>Groups</th><th>Group Properties</th>"
- "<th>Variables</th></tr>");
- retval = HTTP_Write(request, message, strlen(message));
+ "<th>Variables</th></tr>\n");
for(i=0; i < ngroups; i++)
{
- strcpy(message,"<tr valign=top halign=left>");
+ SetToCString(message,"<tr>");
groupname = CCTK_GroupName(i);
if (CCTK_QueryGroupStorageI(cctkGH,i))
{
- sprintf(message,"%s <td>[%d] <font color=red>%s</font></td>"
- "\n", message, i, groupname);
+ ConcatCString(message, " <td>[");
+ ConcatDecimal(message, i);
+ ConcatCString(message, "] <span class=\"hilite\">");
+ ConcatCString(message, groupname);
+ ConcatCString(message, "</span></td>\n");
}
else
{
- sprintf(message,"%s <td VALIGN=TOP ALIGN=LEFT>[%d] %s</td>\n",
- message, i, groupname);
- }
+ ConcatCString(message, " <td>[");
+ ConcatDecimal(message, i);
+ ConcatCString(message, "] ");
+ ConcatCString(message, groupname);
+ ConcatCString(message, "</td>\n");
+ }
free(groupname);
- HTTP_Write(request, message, strlen(message));
+ Send_HTTP_String(request, message);
/* Group Description */
- sprintf(message,"<td>");
+ SetToCString(message, "<td>");
- if (CCTK_GroupData(i,&gdata)>-1)
+ if (CCTK_GroupData(i,&gdata) > -1)
{
switch (CCTK_GroupTypeI(i))
{
case CCTK_SCALAR:
- strcat(message,"Grid scalar");
+ ConcatCString(message,"Grid scalar");
break;
case CCTK_ARRAY:
- strcat(message,"Grid array");
+ ConcatCString(message,"Grid array");
break;
case CCTK_GF:
- strcat(message,"Grid function");
+ ConcatCString(message,"Grid function");
break;
}
- sprintf(message, "%s %s <br>(%d bytes)", message,
- CCTK_VarTypeName(gdata.vartype),CCTK_VarTypeSize(gdata.vartype));
+ ConcatCString(message, " " );
+ ConcatCString(message, CCTK_VarTypeName(gdata.vartype) );
+ ConcatCString(message, " <br />\n(");
+ ConcatDecimal(message, CCTK_VarTypeSize(gdata.vartype));
+ ConcatCString(message, " bytes)");
if (!(CCTK_GroupTypeI(i) == CCTK_SCALAR))
{
- sprintf(message,"%s <br>Dimension %d",message,gdata.dim);
- sprintf(message, "%s <br>Timelevels %d",message, gdata.numtimelevels);
+ ConcatCString(message, " <br />\nDimension ");
+ ConcatDecimal(message, gdata.dim);
+ ConcatCString(message, " <br />\nTimelevels ");
+ ConcatDecimal(message, gdata.numtimelevels);
}
- HTTP_Write(request, message, strlen(message));
+ Send_HTTP_String(request, message);
}
- strcpy(message,"</td>");
+ Send_HTTP(request,"</td>");
nvars = CCTK_NumVarsInGroupI(i);
- strcat(message,"<TD VALIGN=TOP ALIGN=LEFT><DL>");
+ SetToCString(message,"<td>");
for(j=CCTK_FirstVarIndexI(i); j < CCTK_FirstVarIndexI(i)+nvars; j++)
{
- sprintf(message,"%s <DT>[%d] %s\n", message, j, CCTK_VarName(j) );
+ ConcatCString(message, "[" );
+ ConcatDecimal(message, j);
+ ConcatCString(message, "] " );
+ ConcatCString(message, CCTK_VarName(j) );
+ ConcatCString(message, "<br />\n" );
}
- strcat(message,"</DL></TD></TR>");
- HTTP_Write(request, message, strlen(message));
+ ConcatCString(message,"</td></tr>");
+ Send_HTTP_String(request, message);
- /*
- strcpy(message,"<TD align=center valign=center>");
- if (CCTK_GroupTypeI(i) == CCTK_SCALAR)
- {
- for(j=CCTK_FirstVarIndexI(i); j < CCTK_FirstVarIndexI(i)+nvars; j++)
- {
- sprintf(message,"%s "
- "<INPUT type=\"checkbox\" name=\"var%d\" %s value=\"1\"><br>",
- message,j,watch[j] ? "checked" : "unchecked");
- }
- }
- else
- {
- strcat(message,"&nbsp;");
- }
- sprintf(message,"%s </TD></TR>",message);
- HTTP_Write(request, message, strlen(message));
- */
}
- strcpy(message,"</TABLE></FORM></center>\n");
- HTTP_Write(request, message, strlen(message));
+ Send_HTTP(request,"</table></div></form>\n");
/* Write out the footer part. */
- HTTP_ContentFooter(cctkGH,0,strlen(message),message);
- retval = HTTP_Write(request, message, strlen(message));
+ SetHTML_ContentFooter(cctkGH,0,message);
+ retval = Send_HTTP_String(request, message);
+
+ String_Delete( message );
return retval;
}