/** * Copyright 2006 Mike Tsao. All rights reserved. * * Hello World using FastCGI and ClearSilver. */ #include "ClearSilver.h" #include <string> #include <fcgi_stdio.h> #include <stdlib.h> #include <stdarg.h> #include <syslog.h> static bool quit = false; static int cs_printf(void *ctx, const char *s, va_list args) { return printf(s, args); } static int cs_write(void *ctx, const char *s, int n) { return fwrite(const_cast<char *>(s), n, 1, FCGI_stdout); } int main(int argc, char **argv, char **envp) { openlog(argv[0], 0, LOG_USER); syslog(LOG_INFO, "%s started.", argv[0]); int hits = 0; while (FCGI_Accept() >= 0) { HDF *hdf = NULL; CGI *cgi = NULL; /* Note that we aren't doing any error handling here, we really should. */ hdf_init(&hdf); // Takes ownership of HDF. cgi_init(&cgi, hdf); hits++; /* Initialize the standard cgiwrap environment. FastCGI already wraps some * of the standard calls that cgiwrap wraps. */ cgiwrap_init_std(argc, argv, environ); /* Then, we install our own wrappers for some cgiwrap calls that aren't * already wrapped in the standard wrappers. */ cgiwrap_init_emu(NULL, NULL, cs_printf, cs_write, NULL, NULL, NULL); hdf_read_file(cgi->hdf, "common.hdf"); hdf_read_file(cgi->hdf, "hello_world.hdf"); cgi_display(cgi, "hello_world.cs"); // This destroys HDF. cgi_destroy(&cgi); } syslog(LOG_INFO, "%s ending.", argv[0]); return 0; }