/*
* fooenv v0.2 / 27.08.2000
*/
#include <stdio.h>
#include <time.h>
#include "fooenv.h"
#include "cgi_lib.h"
#include "cgi_list.h"
#include "char_vector.h"
int main (void)
{
cgi_lib *cgi;
cgi_list *fooenv_list;
char_vector *fooenv_html;
/* 'cgi_lib' Modul initialisieren. */
cgi = cgi_lib_new (cgi);
if (cgi == NULL)
{ /* Es trat ein Fehler auf. Welcher? */
switch (cgi_lib_errno)
{
case CGI_LIB_ALREADY_IN_USE:
{
cgi_lib_send_HTML (cgi, "cgi_lib: already in use\n");
break;
}
case CGI_LIB_OUT_OF_MEMORY:
{
cgi_lib_send_HTML (cgi, "cgi_lib: out of memory\n");
break;
}
case CGI_LIB_METHOD_UNKNOWN:
{
cgi_lib_send_HTML (cgi, "cgi_lib: method unknown\n");
break;
}
}
return cgi_lib_errno;
}
/*
* Wir erzeugen einen neuen 'char_vector'. In diesen 'char_vector'
* wird die HTML Seite mit den CGI spezifischen Umgebungsvasriablen
* abgelegt. Die Anfangsgroesse wird auf '2000 * sizeof (char)'
* gesetzt. Der 'char_vector' passt seine Groesse automatisch an.
*/
fooenv_html = char_vector_new (fooenv_html, 2000);
if (fooenv_html == NULL)
{ /* Es trat ein Fehler auf. */
cgi_lib_send_HTML (cgi, "char_vector: out of memory\n");
cgi_lib_del (cgi);
return FOOENV_OUT_OF_MEMORY;
}
/*
* Der 'header' der HTML Seite wird in den
* zuvor erzeugten 'char_vector' kopiert.
*/
char_vector_add_string (fooenv_html, "<HTML>\n"
"<HEAD>\n"
"<TITLE>fooenv</TITLE>\n"
"</HEAD>\n"
"<BODY><HR>\n"
"<TABLE BORDER>\n");
/*
* Wir durchwandern die Liste in der alle Umgebungsvariablen
* abgelegt sind ('cgi->cgi_lib_env'). Dazu wird die Funktion
* 'cgi_list_next_item' verwendet. Diese Funktion liefert einen
* Zeiger auf die naechste Umgebungsvariable.
*/
for (fooenv_list = cgi->cgi_lib_env;
fooenv_list->cgi_next != NULL;
fooenv_list = cgi_list_next_item (fooenv_list))
{ /*
* Das aktuelle Listenelement wird an die
* HTML Seite ('fooenv_html') angehaengt.
*/
char_vector_add_string (fooenv_html, "<TR><TD>\n");
/* Name des aktuellen Listenelements einfuegen. */
char_vector_add_string (fooenv_html, fooenv_list->cgi_key);
char_vector_add_string (fooenv_html, "</TD><TD>\n");
/* Wert des aktuellen Listenelements einfuegen. */
char_vector_add_string (fooenv_html, fooenv_list->cgi_value);
char_vector_add_string (fooenv_html, "</TD></TR>\n");
}
/*
* Zum Schluss wird der 'footer' der HTML Seite
* in den zuvor erzeugten 'char_vector' kopiert.
*/
char_vector_add_string (fooenv_html, "</TABLE>\n"
"<HR>\n"
"</BODY>\n"
"</HTML>\n");
/*
* Die HTML Seite ('fooenv_html') ist jetzt komplett
* und kann an den Browser ausgegeben werden.
*/
cgi_lib_send_HTML (cgi, fooenv_html->vector);
/*
* Fertig. Zum Schluss kann das 'char_vector' und das
* 'cgi_lib' Modul wieder aus dem Speicher entfernen.
*/
char_vector_del (fooenv_html);
cgi_lib_del (cgi);
return FOOENV_OK;
}