#include "common.h"
#include "CGI/Service.h"
#include <getopt.h>

static void usage() {
    fprintf(stderr, //
            "Usage: cgi [options]\n"
                "Where options are:\n"
                "\t-h  help\n"
                "Environment variables (standard CGI/FastCGI):\n"
                "\tGATEWAY_INTERFACE\n\t\tWhen set assume run via CGI.\n"
                "\tFCGI_ROLE\n\t\tWhen set assume run via FastCGI.\n"
                "\tSCRIPT_FILENAME\n\t\tName of script file to load and run (as CGI, FastCGI, or CLI).\n"
                "Environment variables:\n"
                "\tRECORD_TO\n\t\tLog files written with the given prefix.\n"
                "\tRECORD_ON\n\t\tLog disabled if zero. Log enabled if non-zero.\n"
                "\tFCGI_LISTENER\n\tSpec of local listener socket.\n"
                "Otherwise assume run via the command line. Process as if run from CGI.\n");
    exit(1);
}

int main(int ac,char** av) {
    CGI::Service service;
    for (;;) {
        int c = ::getopt(ac,av,"h");
        if (EOF == c) break;
        switch (c) {
        default:
        case 'h':
            usage();
        }
    }
    Trace::initializeLog("logs/cgi");
    if (!service.initialize()) {
        usage();
    }
    return service.dispatch();
}