nobotgate/nobotgate-access.c

47 lines
976 B
C

#include <libowfat/buffer.h>
#include <libowfat/errmsg.h>
#include <libowfat/str.h>
#include <unistd.h>
#define dieusage() die(100, argv0, " [-n] PROG ARGS");
static int consume=1;
static void consume_headers(void) {
char buf[2048];
int r;
for (;;) {
r=buffer_getline(buffer_0, buf, sizeof buf);
if (r==0) die(100,"EOF before header end");
if (buf[0]=='\r')
break;
}
}
int main(int argc, char **argv)
{
char *header;
int i;
errmsg_iam(*argv);
for (i=1;i<argc;i++) {
if (argv[i][0]!='-') break;
if (argv[i][1]=='-' && !argv[i][2]) break;
switch (argv[i][1]) {
case 'n': consume=0; break;
default: dieusage();
}
}
argc-=i; argv+=i;
if (argc<1) dieusage();
if (consume)
consume_headers();
header = "HTTP/1.0 200 OK\r\n"
"Connection: close\r\n"
"\r\n";
if (write(1, header, str_len(header)) < 0)
diesys(111, "write to stdout");
execvp(argv[0], argv);
diesys(111, "exec ", argv[0]);
}