diff options
Diffstat (limited to 'src/Groups.c')
-rw-r--r-- | src/Groups.c | 186 |
1 files changed, 186 insertions, 0 deletions
diff --git a/src/Groups.c b/src/Groups.c new file mode 100644 index 0000000..84bfe1c --- /dev/null +++ b/src/Groups.c @@ -0,0 +1,186 @@ + /*@@ + @file Groups.c + @date Wed Sep 14 23:47:43 2000 + @author Gabrielle Allen + @desc + Pages about groups + @enddesc + @version $Header$ + @@*/ + +#include <stdio.h> + +#include "cctk.h" + +#include "util_String.h" + +#include "DevThorns/httpd/src/http_Request.h" + +static char *rcsid = "$Header$"; + +CCTK_FILEVERSION(DevThorns_httpd_utils_Groups_c) + +/******************************************************************** + ********************* Local Data Types *********************** + ********************************************************************/ + + +/******************************************************************** + ********************* Local Routine Prototypes ********************* + ********************************************************************/ + +static int GroupsPage(cGH *cctkGH, httpRequest *request, void *data); + +/******************************************************************** + ********************* Other Routine Prototypes ********************* + ********************************************************************/ + +/******************************************************************** + ********************* Local Data ***************************** + ********************************************************************/ + +/******************************************************************** + ********************* External Routines ********************** + ********************************************************************/ + + /*@@ + @routine HTTPUTILS_RegisterPages + @date Wed Sep 14 11:29:43 2000 + @author Gabrielle Allen + @desc + Httpd utils registration routine. + @enddesc + @calls + @calledby + @history + + @endhistory + +@@*/ +int HTTPUTILS_RegisterPages(void) +{ + /* Register the group info page. */ + HTTP_RegisterPage("/groups", GroupsPage, NULL); +} + +/******************************************************************** + ********************* Local Routines ************************* + ********************************************************************/ + + +/****************************************************************************** + ***************************** Groups Page ************************************** + ******************************************************************************/ + +static const char *cactus_header = " \ +</HEAD>\n \ +<BODY BGCOLOR=\"#FFFFFF\" \ + link=\"#1B831D\" vlink=\"#768000\" alink=\"#00FF00\">\n \ +<center> \ +</A> \ +<table width=70% border=0><tr><td> \ +\n"; + +static const char *cactus_footer = \ +"</table>" \ +"\n \ +<HR size=1>\n \ +<ADDRESS><DIV ALIGN=left>\n \ +<SMALL>\n \ +<A HREF=\"http://www.cactuscode.org/\">Cactus Home Page</A><BR>\n\ +Cactus Web Interface by <A HREF=\"mailto:cactusmaint@cactuscode.org\">The Cactus Team</A><BR>\n\ +</SMALL></DIV></ADDRESS></BODY></HTML>\n"; + + /*@@ + @routine GroupsPage + @date Thu Sep 14 23:47:43 2000 + @author Gabrielle Allen + @desc + Displays the group description page. + @enddesc + @calls + @calledby +@@*/ +static int GroupsPage(cGH *cctkGH, httpRequest *request, void *data) +{ + int retval; + char message[4098]; + + /* Status message */ + strcpy(message,"HTTP/1.0 200 OK\r\n"); + + write(request->filedes, message, strlen(message)); + + /* Content-Type */ + strcpy(message,"Content-Type: text/html\r\n\r\n"); + + write(request->filedes, message, strlen(message)); + + + /* Start the page */ + strcpy(message,"<HTML><HEAD><TITLE>Cactus Simulation Group Information</TITLE>\n"); + + write(request->filedes, message, strlen(message)); + + /* Write out the header part. */ + + retval = write(request->filedes, cactus_header, strlen(cactus_header)); + + { + int i,j; + int ngroups,nvars; + + ngroups = CCTK_NumGroups(); + + strcpy(message, "<h1>Groups and Variables:</h1>" + "<p>This list describes the grid variables and their groups " + "active in this simulation. <font color=red>Red</font> indicates" + " that storage is active for this group (at the time of the query).</p>" + "<DL>"); + + + for(i=0; i < ngroups; i++) + { + strcat(message, "<DD>"); + if (CCTK_QueryGroupStorageI(cctkGH,i)) + { + sprintf(message,"%s %d. <font color=red>%s</font>\n", message, i, CCTK_GroupName(i)); + } + else + { + sprintf(message,"%s %d) %s\n", message, i, CCTK_GroupName(i)); + } + nvars = CCTK_NumVarsInGroupI(i); + strcat(message,"<DL>"); + for(j=CCTK_FirstVarIndexI(i); j < CCTK_FirstVarIndexI(i)+nvars; j++) + { + strcat(message, "<DD>"); + sprintf(message,"%s %d. %s\n", message, j, CCTK_VarName(j) ); + + } + strcat(message,"</DL>"); + } + strcat(message, "</DL>"); + + } + + write(request->filedes, message, strlen(message)); + + + /* Finish table started by blurb */ + strcpy(message, "</td></tr></table>"); + + write(request->filedes, message, strlen(message)); + + /* Write out the footer part. */ + + retval = write(request->filedes, cactus_footer, strlen(cactus_footer)); + + /* retval = write(request->filedes, base_page, strlen(base_page)); */ + + return retval; +} + + + + |