47 lines
978 B
C
47 lines
978 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[1], argv+1);
|
|
diesys(111, "exec ", argv[1]);
|
|
}
|