diff -uPr qmail-1.03-va/Makefile qmail-1.03/Makefile --- qmail-1.03-va/Makefile 1998-06-15 12:53:16.000000000 +0200 +++ qmail-1.03/Makefile 2004-06-15 12:27:36.000000000 +0200 @@ -321,9 +321,11 @@ condredirect: \ load condredirect.o qmail.o strerr.a fd.a sig.a wait.a seek.a env.a \ -substdio.a error.a str.a fs.a auto_qmail.o +substdio.a error.a str.a fs.a auto_qmail.o \ +open.a getln.a stralloc.a alloc.a byte_chr.o ./load condredirect qmail.o strerr.a fd.a sig.a wait.a \ - seek.a env.a substdio.a error.a str.a fs.a auto_qmail.o + seek.a env.a substdio.a error.a str.a fs.a auto_qmail.o \ + open.a getln.a stralloc.a alloc.a byte_chr.o condredirect.0: \ condredirect.1 @@ -594,9 +596,11 @@ forward: \ load forward.o qmail.o strerr.a alloc.a fd.a wait.a sig.a env.a \ -substdio.a error.a str.a fs.a auto_qmail.o +substdio.a error.a str.a fs.a auto_qmail.o \ +open.a getln.a stralloc.a alloc.a byte_chr.o ./load forward qmail.o strerr.a alloc.a fd.a wait.a sig.a \ - env.a substdio.a error.a str.a fs.a auto_qmail.o + env.a substdio.a error.a str.a fs.a auto_qmail.o \ + open.a getln.a stralloc.a alloc.a byte_chr.o forward.0: \ forward.1 @@ -1352,10 +1356,11 @@ qmail-qmqpd: \ load qmail-qmqpd.o received.o now.o date822fmt.o qmail.o auto_qmail.o \ -env.a substdio.a sig.a error.a wait.a fd.a str.a datetime.a fs.a +env.a substdio.a sig.a error.a wait.a fd.a str.a datetime.a fs.a open.a \ +getln.a stralloc.a alloc.a ./load qmail-qmqpd received.o now.o date822fmt.o qmail.o \ auto_qmail.o env.a substdio.a sig.a error.a wait.a fd.a \ - str.a datetime.a fs.a + str.a datetime.a fs.a open.a getln.a stralloc.a alloc.a qmail-qmqpd.0: \ qmail-qmqpd.8 @@ -1639,10 +1644,10 @@ qreceipt: \ load qreceipt.o headerbody.o hfield.o quote.o token822.o qmail.o \ getln.a fd.a wait.a sig.a env.a stralloc.a alloc.a substdio.a error.a \ -str.a auto_qmail.o +str.a auto_qmail.o open.a ./load qreceipt headerbody.o hfield.o quote.o token822.o \ qmail.o getln.a fd.a wait.a sig.a env.a stralloc.a alloc.a \ - substdio.a error.a str.a auto_qmail.o + substdio.a error.a str.a auto_qmail.o open.a qreceipt.0: \ qreceipt.1 diff -uPr qmail-1.03-va/qmail.c qmail-1.03/qmail.c --- qmail-1.03-va/qmail.c 1998-06-15 12:53:16.000000000 +0200 +++ qmail-1.03/qmail.c 2004-06-15 12:13:21.000000000 +0200 @@ -6,6 +6,7 @@ #include "fd.h" #include "qmail.h" #include "auto_qmail.h" +#include "stralloc.h" static char *binqqargs[2] = { "bin/qmail-queue", 0 } ; @@ -118,6 +119,35 @@ case 81: return "Zqq internal bug (#4.3.0)"; case 120: return "Zunable to exec qq (#4.3.0)"; default: + /* QQXRCODE */ + if (1) { + static char rcode[60]; + char inbuf[60]; + int rlen, match; + substdio ss; + stralloc line = {0}; + int fd = open_read("control/qqxrcode"); + if (fd >= 0) { + rlen = snprintf(rcode, 5, "%d ", exitcode); + substdio_fdbuf(&ss,read,fd,inbuf,sizeof(inbuf)); + for (;;) { + if (getln(&ss,&line,&match,'\n') == -1) { match = 0; break; }; + if (! match) break; + while (line.len>0 && line.s[line.len-1]<33) line.len--; + if (!stralloc_0(&line)) { match = 0; break; }; + if (line.len>rlen + && !str_diffn(rcode, line.s, rlen) ) break; + }; + close(fd); + if (match) { + snprintf(rcode, 59, "%c%s", + ((exitcode >= 11) && (exitcode <= 40) ? 'D':'Z'), + line.s+rlen); + return rcode; + }; + }; + }; + /* QQXRCODE */ if ((exitcode >= 11) && (exitcode <= 40)) return "Dqq permanent problem (#5.3.0)"; return "Zqq temporary problem (#4.3.0)";