/**/ #include "ucgicommon.h" const char *const envok[]= { "CONTENT_LENGTH", "CONTENT_TYPE", "DOCUMENT_ROOT", "GATEWAY_INTERFACE", "HTTP_ACCEPT", "HTTP_ACCEPT_ENCODING", "HTTP_ACCEPT_LANGUAGE", "HTTP_CACHE_CONTROL", "HTTP_HOST", "HTTP_NEGOTIATE", "HTTP_PRAGMA", "HTTP_USER_AGENT", "PATH_INFO", "PATH_TRANSLATED", "QUERY_STRING", "REMOTE_ADDR", "REMOTE_HOST", "REMOTE_USER", "REMOTE_IDENT", "REQUEST_METHOD", "SCRIPT_FILENAME", "SCRIPT_NAME", "SCRIPT_URI", "SCRIPT_URL", "SERVER_ADMIN", "SERVER_NAME", "SERVER_PORT", "SERVER_PROTOCOL", "SERVER_SOFTWARE", 0 }; const int nenvok= sizeof(envok)/sizeof(envok[0]); void syserror(const char *m) { if (printf("Content-Type: text/plain\n\n" "ucgi: system call error:\n" "%s: %s\n", m,strerror(errno))==EOF || fflush(stdout)) outerror(); exit(0); } void error(const char *m) { if (printf("Content-Type: text/plain\n\n" "ucgi: error:\n" "%s\n", m)==EOF || fflush(stdout)) outerror(); exit(0); } void *xmalloc(size_t sz) { void *r; r= malloc(sz); if (!r) syserror("malloc failed"); return r; }