in with the new
This commit is contained in:
parent
48bfee4e5b
commit
b2ad2ef138
5 changed files with 310 additions and 144 deletions
62
src/cmd/dial.c
Normal file
62
src/cmd/dial.c
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
#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);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue