diff options
Diffstat (limited to 'mconnect-io.c')
-rw-r--r-- | mconnect-io.c | 37 |
1 files changed, 19 insertions, 18 deletions
diff --git a/mconnect-io.c b/mconnect-io.c index 6dce003..5cd4ada 100644 --- a/mconnect-io.c +++ b/mconnect-io.c @@ -1,51 +1,52 @@ -#include <signal.h> #include "sig.h" -#include "substdio.h" +#include "wait.h" +#include "fork.h" +#include "buffer.h" #include "strerr.h" #include "readwrite.h" #include "exit.h" char outbuf[512]; -substdio ssout; +buffer bout; char inbuf[512]; -substdio ssin; +buffer bin; -int myread(fd,buf,len) int fd; char *buf; int len; +int myread(int fd,char *buf,int len) { - substdio_flush(&ssout); + buffer_flush(&bout); return read(fd,buf,len); } -void main() +main() { int pid; int wstat; char ch; - sig_pipeignore(); + sig_ignore(sig_pipe); pid = fork(); if (pid == -1) strerr_die2sys(111,"mconnect-io: fatal: ","unable to fork: "); if (!pid) { - substdio_fdbuf(&ssin,myread,0,inbuf,sizeof inbuf); - substdio_fdbuf(&ssout,write,7,outbuf,sizeof outbuf); + buffer_init(&bin,myread,0,inbuf,sizeof inbuf); + buffer_init(&bout,write,7,outbuf,sizeof outbuf); - while (substdio_get(&ssin,&ch,1) == 1) { - if (ch == '\n') substdio_put(&ssout,"\r",1); - substdio_put(&ssout,&ch,1); + while (buffer_get(&bin,&ch,1) == 1) { + if (ch == '\n') buffer_put(&bout,"\r",1); + buffer_put(&bout,&ch,1); } _exit(0); } - substdio_fdbuf(&ssin,myread,6,inbuf,sizeof inbuf); - substdio_fdbuf(&ssout,write,1,outbuf,sizeof outbuf); + buffer_init(&bin,myread,6,inbuf,sizeof inbuf); + buffer_init(&bout,write,1,outbuf,sizeof outbuf); - while (substdio_get(&ssin,&ch,1) == 1) - substdio_put(&ssout,&ch,1); + while (buffer_get(&bin,&ch,1) == 1) + buffer_put(&bout,&ch,1); - kill(pid,SIGTERM); + kill(pid,sig_term); wait_pid(&wstat,pid); _exit(0); |