ucspi-tcp6 1.13.02
ucspi-tcp6
Loading...
Searching...
No Matches
mconnect-io.c
Go to the documentation of this file.
1#include "sig.h"
2#include "wait.h"
3#include "fork.h"
4#include "buffer.h"
5#include "logmsg.h"
6#include "exit.h"
7
8#define WHO "mconnect-io"
9
10extern int kill(int,int);
11
12char outbuf[512];
13buffer bo;
14
15char inbuf[512];
16buffer bi;
17
18ssize_t myread(int fd,char *buf,int len)
19{
20 buffer_flush(&bo);
21 return read(fd,buf,len);
22}
23
24int main()
25{
26 int pid;
27 int wstat;
28 char ch;
29
30 sig_ignore(sig_pipe);
31
32 pid = fork();
33 if (pid == -1) logmsg(WHO,111,FATAL,"unable to fork");
34
35 if (!pid) {
36 buffer_init(&bi,myread,0,inbuf,sizeof(inbuf));
37 buffer_init(&bo,buffer_unixwrite,7,outbuf,sizeof(outbuf));
38
39 while (buffer_get(&bi,&ch,1) == 1) {
40 if (ch == '\n') buffer_put(&bo,"\r",1);
41 buffer_put(&bo,&ch,1);
42 }
43 _exit(0);
44 }
45
46 buffer_init(&bi,myread,6,inbuf,sizeof(inbuf));
47 buffer_init(&bo,buffer_unixwrite,1,outbuf,sizeof(outbuf));
48
49 while (buffer_get(&bi,&ch,1) == 1)
50 buffer_put(&bo,&ch,1);
51
52 kill(pid,sig_term);
53 wait_pid(&wstat,pid);
54
55 _exit(0);
56}
ssize_t myread(int fd, char *buf, int len)
Definition: mconnect-io.c:18
int kill(int, int)
char inbuf[512]
Definition: mconnect-io.c:15
char outbuf[512]
Definition: mconnect-io.c:12
buffer bi
Definition: mconnect-io.c:16
buffer bo
Definition: mconnect-io.c:13
#define WHO
Definition: mconnect-io.c:8
int main()
Definition: mconnect-io.c:24
char pid[FMT_ULONG]
Definition: recordio.c:15
int fork()
int read(int, char *, int)