chiark / gitweb /
found in chiark:/usr/local/src/davenant
[userv-utils.git] / www-cgi / ucgicommon.c~
1 /**/
2
3 #include "ucgicommon.h"
4
5 const char *const envok[]= {
6   "CONTENT_LENGTH",
7   "CONTENT_TYPE",
8   "DOCUMENT_ROOT",
9   "GATEWAY_INTERFACE",
10   "HTTP_ACCEPT",
11   "HTTP_ACCEPT_ENCODING",
12   "HTTP_ACCEPT_LANGUAGE",
13   "HTTP_CACHE_CONTROL",
14   "HTTP_HOST",
15   "HTTP_NEGOTIATE",
16   "HTTP_PRAGMA",
17   "HTTP_USER_AGENT",
18   "PATH_INFO",
19   "PATH_TRANSLATED",
20   "QUERY_STRING",
21   "REMOTE_ADDR",
22   "REMOTE_HOST",
23   "REMOTE_USER",
24   "REMOTE_IDENT",
25   "REQUEST_METHOD",
26   "SCRIPT_FILENAME",
27   "SCRIPT_NAME",
28   "SCRIPT_URI",
29   "SCRIPT_URL",
30   "SERVER_ADMIN",
31   "SERVER_NAME",
32   "SERVER_PORT",
33   "SERVER_PROTOCOL",
34   "SERVER_SOFTWARE",
35   0
36 };
37 const int nenvok= sizeof(envok)/sizeof(envok[0]);
38
39 void syserror(const char *m) {
40   if (printf("Content-Type: text/plain\n\n"
41              "ucgi: system call error:\n"
42              "%s: %s\n",
43              m,strerror(errno))==EOF || fflush(stdout)) outerror();
44   exit(0);
45 }
46
47 void error(const char *m) {
48   if (printf("Content-Type: text/plain\n\n"
49              "ucgi: error:\n"
50              "%s\n",
51              m)==EOF || fflush(stdout)) outerror();
52   exit(0);
53 }
54
55 void *xmalloc(size_t sz) {
56   void *r;
57
58   r= malloc(sz);
59   if (!r) syserror("malloc failed");
60   return r;
61 }