diff options
Diffstat (limited to 'src/Groups.c')
-rw-r--r-- | src/Groups.c | 156 |
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," "); - } - 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; } |