12#define WHO "condredirect"
16static ssize_t mywrite(
int fd,
char *
buf,
int len)
29int main(
int argc,
char *
const *argv)
37 if (!argv[1] || !argv[2])
38 logmsg(
WHO,100,USAGE,
"condredirect newaddress program [ arg ... ]");
42 logmsg(
WHO,111,FATAL,
"unable to fork: ");
44 execvp(argv[2],argv + 2);
45 if (errno)
_exit(111);
48 if (wait_pid(&wstat,
pid) == -1)
49 logmsg(
WHO,111,FATAL,
"wait failed");
50 if (wait_crashed(wstat))
51 logmsg(
WHO,111,FATAL,
"child crashed");
52 switch (wait_exitcode(wstat)) {
54 case 111: logmsg(
WHO,111,FATAL,
"temporary child error");
58 if (seek_begin(0) == -1)
59 logmsg(
WHO,111,FATAL,
"unable to rewind: ");
62 sender = env_get(
"SENDER");
63 if (!
sender) logmsg(
WHO,100,ERROR,
"SENDER not set");
64 dtline = env_get(
"DTLINE");
65 if (!
dtline) logmsg(
WHO,100,ERROR,
"DTLINE not set");
68 logmsg(
WHO,111,FATAL,
"unable to fork: ");
70 if (buffer_copy(&
bo,&
bi) != 0)
71 logmsg(
WHO,111,FATAL,
"unable to read message: ");
79 if (*qqx) logmsg(
WHO,*qqx ==
'D' ? 100 : 111,FATAL,qqx + 1);
80 logmsg(
WHO,99,INFO,B(
"qp ",
num));
char outbuf[BUFSIZE_LINE]
void qmail_to(struct qmail *, char *)
void qmail_from(struct qmail *, char *)
void qmail_put(struct qmail *, char *, int)
char * qmail_close(struct qmail *)
unsigned long qmail_qp(struct qmail *)
void qmail_puts(struct qmail *, char *)
int qmail_open(struct qmail *)