#include <u.h>
#include <libc.h>

void
usage(void)
{
	fprint(2, "usage: dial [-e] addr\n");
	exits("usage");
}

void
killer(void *x, char *msg)
{
	USED(x);
	if(strcmp(msg, "kill") == 0)
		exits(0);
	noted(NDFLT);
}

void
main(int argc, char **argv)
{
	int fd, pid;
	char buf[8192];
	int n, waitforeof;

	notify(killer);
	waitforeof = 0;
	ARGBEGIN{
	case 'e':
		waitforeof = 1;
		break;
	default:
		usage();
	}ARGEND

	if(argc != 1)
		usage();

	if((fd = dial(argv[0], nil, nil, nil)) < 0)
		sysfatal("dial: %r");

	switch(pid = fork()){
	case -1:
		sysfatal("fork: %r");
	case 0:
		while((n = read(0, buf, sizeof buf)) > 0)
			if(write(0, buf, n) < 0)
				break;
		if(!waitforeof)
			postnote(PNPROC, getppid(), "kill");
		exits(nil);
	}

	while((n = read(fd, buf, sizeof buf)) > 0)
		if(write(1, buf, n) < 0)
			break;

	postnote(PNPROC, pid, "kill");
	waitpid();
	exits(0);
}
