9 fprint(2, "usage: %s [-b inbuf] [-d domain] [-p localport]"
10 " [-r remoteip] [-s uri-scheme] [-w webroot]"
11 " [-L logfd0 logfd1] [-N netdir] [-R reqline]"
12 " method version uri [search]\n", argv0);
18 char *HTTPLOG = "httpd/log";
20 static HConnect connect;
24 init(int argc, char **argv)
28 hinit(&connect.hin, 0, Hread);
29 hinit(&connect.hout, 1, Hwrite);
31 connect.replog = writelog;
32 connect.scheme = "http";
34 connect.private = &priv;
36 priv.remoteserv = nil;
37 fmtinstall('D', hdatefmt);
38 fmtinstall('H', httpfmt);
39 fmtinstall('U', hurlfmt);
43 hload(&connect.hin, EARGF(usage()));
46 hmydomain = EARGF(usage());
49 connect.port = EARGF(usage());
52 priv.remotesys = EARGF(usage());
55 connect.scheme = EARGF(usage());
58 webroot = EARGF(usage());
61 logall[0] = strtol(EARGF(usage()), nil, 10);
62 logall[1] = strtol(EARGF(usage()), nil, 10);
65 netdir = EARGF(usage());
68 snprint((char*)connect.header, sizeof(connect.header), "%s",
75 if(priv.remotesys == nil)
76 priv.remotesys = "unknown";
77 if(priv.remoteserv == nil)
78 priv.remoteserv = "unknown";
80 hmydomain = "unknown";
85 * open all files we might need before castrating namespace
88 syslog(0, HTTPLOG, nil);
90 if(argc != 4 && argc != 3)
93 connect.req.meth = argv[0];
96 connect.req.vermaj = 0;
97 connect.req.vermin = 9;
98 if(strncmp(vs, "HTTP/", 5) == 0){
100 connect.req.vermaj = strtoul(vs, &vs, 10);
103 connect.req.vermin = strtoul(vs, &vs, 10);
106 connect.req.uri = argv[2];
107 connect.req.search = argv[3];
108 connect.head.closeit = 1;
109 connect.hpos = (uchar*)strchr((char*)connect.header, '\0');
110 connect.hstop = connect.hpos;
111 connect.reqtime = time(nil); /* not quite right, but close enough */