9 void initialize(argc,argv)
18 void report(ss,wstat,s,len)
29 if (wait_crashed(wstat))
30 { substdio_puts(ss,"Zqmail-remote crashed.\n"); return; }
31 switch(wait_exitcode(wstat))
34 case 111: substdio_puts(ss,"ZUnable to run qmail-remote.\n"); return;
35 default: substdio_puts(ss,"DUnable to run qmail-remote.\n"); return;
38 { substdio_puts(ss,"Zqmail-remote produced no output.\n"); return; }
42 for (k = 0;k < len;++k)
45 if (s[j] == 'K') { result = 1; break; }
46 if (s[j] == 'Z') { result = 0; break; }
47 if (s[j] == 'D') break;
54 case 's': orr = 0; break;
60 case 1: substdio_put(ss,"K",1); break;
61 case 0: substdio_put(ss,"Z",1); break;
62 case -1: substdio_put(ss,"D",1); break;
68 substdio_puts(ss,s + 1);
73 case 'Z': case 'D': case 'K':
74 substdio_puts(ss,s + k + 1);
80 int spawn(fdmess,fdout,s,r,at)
81 int fdmess; int fdout;
82 char *s; char *r; int at;
87 args[0] = "qmail-remote";
95 if (fd_move(0,fdmess) == -1) _exit(111);
96 if (fd_move(1,fdout) == -1) _exit(111);
97 if (fd_copy(2,1) == -1) _exit(111);
99 if (error_temp(errno)) _exit(111);