327beaef220d2899852eb201f12766cc1f177ed1
[userv-utils] / 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 }