Debianization for 1.03-1 debian debian/1.03-1
authorMark Wooding <mdw@distorted.org.uk>
Sun, 28 Jun 1998 15:21:03 +0000 (15:21 +0000)
committerMark Wooding <mdw@distorted.org.uk>
Tue, 14 Feb 2006 00:11:57 +0000 (00:11 +0000)
19 files changed:
1  2 
binm1+df.sh
binm1.sh
binm2+df.sh
binm2.sh
binm3+df.sh
binm3.sh
debian/changelog
debian/debianize-source-tree
debian/rules
hier.c
home+df.sh
home.sh
install-big.c
install.c
instcheck.c
proc+df.sh
proc.sh
qmail.c
sendmail.c

diff --cc binm1+df.sh
index 0000000,0ff1a68..f18ceaf
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,11 +1,11 @@@
 -exec env - PATH="QMAIL/bin:$PATH" \
+ #!/bin/sh
+ # Using splogger to send the log through syslog.
+ # Using dot-forward to support sendmail-style ~/.forward files.
+ # Using binmail to deliver messages to /var/spool/mail/$USER by default.
+ # Using BSD 4.4 binmail interface: /usr/libexec/mail.local -r
++exec env - PATH="/usr/bin:/usr/sbin$PATH" \
+ qmail-start '|dot-forward .forward
+ |preline -f /usr/libexec/mail.local -r "${SENDER:-MAILER-DAEMON}" -d "$USER"' \
+ splogger qmail
diff --cc binm1.sh
index 0000000,db79cbd..03e5a80
mode 000000,100644..100644
--- /dev/null
+++ b/binm1.sh
@@@ -1,0 -1,10 +1,10 @@@
 -exec env - PATH="QMAIL/bin:$PATH" \
+ #!/bin/sh
+ # Using splogger to send the log through syslog.
+ # Using binmail to deliver messages to /var/spool/mail/$USER by default.
+ # Using BSD 4.4 binmail interface: /usr/libexec/mail.local -r
++exec env - PATH="/usr/bin:/usr/sbin$PATH" \
+ qmail-start \
+ '|preline -f /usr/libexec/mail.local -r "${SENDER:-MAILER-DAEMON}" -d "$USER"' \
+ splogger qmail
diff --cc binm2+df.sh
index 0000000,4f78101..0eeae2d
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,11 +1,11 @@@
 -exec env - PATH="QMAIL/bin:$PATH" \
+ #!/bin/sh
+ # Using splogger to send the log through syslog.
+ # Using dot-forward to support sendmail-style ~/.forward files.
+ # Using binmail to deliver messages to /var/spool/mail/$USER by default.
+ # Using SVR4 binmail interface: /bin/mail -r
++exec env - PATH="/usr/bin:/usr/sbin$PATH" \
+ qmail-start '|dot-forward .forward
+ |preline -f /bin/mail -r "${SENDER:-MAILER-DAEMON}" -d "$USER"' \
+ splogger qmail
diff --cc binm2.sh
index 0000000,7905308..5224189
mode 000000,100644..100644
--- /dev/null
+++ b/binm2.sh
@@@ -1,0 -1,10 +1,10 @@@
 -exec env - PATH="QMAIL/bin:$PATH" \
+ #!/bin/sh
+ # Using splogger to send the log through syslog.
+ # Using binmail to deliver messages to /var/spool/mail/$USER by default.
+ # Using SVR4 binmail interface: /bin/mail -r
++exec env - PATH="/usr/bin:/usr/sbin$PATH" \
+ qmail-start \
+ '|preline -f /bin/mail -r "${SENDER:-MAILER-DAEMON}" -d "$USER"' \
+ splogger qmail
diff --cc binm3+df.sh
index 0000000,3d69401..686be30
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,11 +1,11 @@@
 -exec env - PATH="QMAIL/bin:$PATH" \
+ #!/bin/sh
+ # Using splogger to send the log through syslog.
+ # Using dot-forward to support sendmail-style ~/.forward files.
+ # Using binmail to deliver messages to /var/spool/mail/$USER by default.
+ # Using V7 binmail interface: /bin/mail -f
++exec env - PATH="/usr/bin:/usr/sbin$PATH" \
+ qmail-start '|dot-forward .forward
+ |preline -f /bin/mail -f "${SENDER:-MAILER-DAEMON}" -d "$USER"' \
+ splogger qmail
diff --cc binm3.sh
index 0000000,eb139e6..e2f9254
mode 000000,100644..100644
--- /dev/null
+++ b/binm3.sh
@@@ -1,0 -1,10 +1,10 @@@
 -exec env - PATH="QMAIL/bin:$PATH" \
+ #!/bin/sh
+ # Using splogger to send the log through syslog.
+ # Using binmail to deliver messages to /var/spool/mail/$USER by default.
+ # Using V7 binmail interface: /bin/mail -f
++exec env - PATH="/usr/bin:/usr/sbin$PATH" \
+ qmail-start \
+ '|preline -f /bin/mail -f "${SENDER:-MAILER-DAEMON}" -d "$USER"' \
+ splogger qmail
index 47c8866,0000000..d0a6f54
mode 100644,000000..100644
--- /dev/null
@@@ -1,35 -1,0 +1,41 @@@
++qmail (1.03-1) non-free; urgency=low
++
++  * new upstream release
++
++ -- Mark Wooding <mdw@excessus.demon.co.uk>  Sun, 28 Jun 1998 12:41:18 +0100
++
 +qmail (1.01-2) non-free; urgency=low
 +
 +  * new maintainer
 +  * qmail-1.01.orig.tar.gz now really is pristine source ;-)
 +  * revert to unpatched source, and get dot-locking by use of procmail
 +  * add creation of qmail-src
 +
 + -- Philip Hands <phil@hands.com>  Fri, 31 Oct 1997 21:13:40 +0000
 +
 +qmail (1.01-1) experimental; urgency=low
 +
 +  * New upstream release.
 +  * Gave in and added /usr/lib/sendmail symlink (fixes bugs 10283 and 11347)
 +  * Compiled with libc6.
 +  * qmail-1.01.orig.tar.gz is now pristine source, thanks to dpkg 1.4.0.19
 +
 + -- Christian Hudon <chrish@debian.org>  Fri,  8 Aug 1997 22:22:24 -0400
 +
 +qmail (1.00-2) experimental; urgency=low
 +
 +  * Fixed error in sed expression of qmailconfig (Thanks to Philip Hands)
 +  * Made '/etc/init.d/qmail stop' output look prettier.
 +
 + -- Christian Hudon <chrish@debian.org>  Sun, 13 Apr 1997 19:12:59 -0400
 +
 +qmail (1.00-1) experimental; urgency=low
 +
 +  * Initial release.
 +
 + -- Christian Hudon <chrish@debian.org>  Wed, 26 Mar 1997 00:24:38 -0500
 +
 +Local variables:
 +mode: debian-changelog
 +add-log-mailing-address: "phil@hands.com"
 +End:
index d1225bf,0000000..648e8ab
mode 100644,000000..100644
--- /dev/null
@@@ -1,52 -1,0 +1,53 @@@
-                      -e "s,QMAIL/bin/qlist,/usr/bin/qlist,g" $f.$$ >$f && \
 +#!/bin/bash
 +
 +set -e
 +
 +if [ ! -f qmail-start.c ]; then
 +    echo "This program must be run from the qmail source directory!"
 +    exit 1
 +fi
 +
 +#if [ ! -f qmail-send.8 ]; then
 +#    make man
 +#fi
 +
 +for f in `fgrep -l QMAIL/bin *.sh`; do
 +    mv $f $f.$$ && sed -e "s,QMAIL/bin/predate,/usr/sbin/predate,g" \
 +                     -e "s,QMAIL/bin/sendmail,/usr/sbin/sendmail,g" \
 +                     -e "s,QMAIL/bin/maildir2mbox,/usr/bin/maildir2mbox,g" \
 +                     -e "s,QMAIL/bin/qmail-inject,/usr/sbin/qmail-inject,g" \
++                     -e "s,QMAIL/bin/qlist,/usr/bin/qlist,g" \
++                     -e "s,QMAIL/bin:,/usr/bin:/usr/sbin,g" $f.$$ >$f && \
 +    rm $f.$$
 +done
 +
 +if ls *.$$ >/dev/null 2>&1; then
 +    echo Error during debianization! Some temporary files remain.
 +    exit 1
 +fi
 +
 +if fgrep QMAIL/bin *.sh; then
 +    echo Error during debianization! Some .sh files still have relative paths.
 +    exit 2
 +fi
 +
 +
 +if fgrep -q nofiles conf-groups; then
 +    if sed <conf-groups >conf-groups.$$ -e '2s/nofiles/nogroup/' && \
 +      mv -f conf-groups.$$ conf-groups; then
 +      echo The file conf-groups was auto-edited. 
 +      echo Please eyeball it to see if the editing was done correctly.
 +      echo --- begin conf-groups ----
 +      cat conf-groups
 +      echo ---  end conf-groups  ----
 +      echo
 +    else
 +      echo Error during auto-editing of conf-groups!
 +      exit 3
 +    fi
 +fi
 +
 +if grep '\"bin/' *.c | grep -v 'qmail-\(check\|setup\)' >/dev/null; then
 +    echo Remember to replace the relative paths by full paths in the following files:
 +    grep '\"bin/' *.c | grep -v 'qmail-\(check\|setup\)'
 +fi
diff --cc debian/rules
index e8193f3,0000000..30fd481
mode 100644,000000..100755
--- /dev/null
@@@ -1,97 -1,0 +1,100 @@@
-       -rm -rf `find debian/* -type d -prune`
 +#!/usr/bin/make -f 
 +#
 +
 +build:
 +      $(checkdir)
 +      if fgrep QMAIL/bin *.sh >/dev/null; then \
 +          echo >&2 "You must run debian/debianize-source-tree first!"; \
 +          exit 1; \
 +      fi
 +      $(MAKE) man
 +      $(MAKE)
 +      touch build
 +
 +clean:
 +      $(checkdir)
 +      -rm -f build
 +      -$(MAKE) clean
 +      -rm `find . -name "*~"`
 +      -rm -rf debian/files
-       -rm -rf `find debian/* -type d -prune`
++      -rm -rf `find debian/* ! \( -name CVS -prune \) -type d -prune`
 +
 +binary-indep: checkroot build
 +      $(checkdir)
 +
 +binary-arch: checkroot build
 +      $(checkdir)
 +      -rm -rf debian/files debian/substvars debian/tmp
-       ./qmail-hier | ./install debian/tmp/var/qmail
++      -rm -rf `find ! \( -name CVS -prune \) debian/* -type d -prune`
 +# Make the directory tree and copy qmail files.
 +      install -d debian/tmp/etc/init.d \
 +              debian/tmp/usr/doc/qmail \
 +              debian/tmp/var/qmail \
 +              debian/tmp/var/spool \
 +              debian/tmp/usr/bin \
 +              debian/tmp/usr/sbin \
 +              debian/tmp/usr/lib \
 +              debian/qmail-src/usr/bin \
 +              debian/qmail-src/usr/src/qmail-src \
 +              debian/qmail-src/usr/doc/qmail-src
-       sed -e 's|./hostname|hostname|g' \
-           -e 's|\./dnsptr|/usr/sbin/qmailconfig-dnsptr|g' \
-           -e 's|\./dnsip|/usr/sbin/qmailconfig-dnsip|g' \
-           -e 's|\./dnsfq|/usr/sbin/qmailconfig-dnsfq|g' \
-           -e 's|\./ipmeprint|/usr/sbin/qmailconfig-ipmeprint|g' \
-               qmail-config >debian/tmp/usr/sbin/qmailconfig
-       chmod 755 debian/tmp/usr/sbin/qmailconfig
++      ./install `pwd`/debian/tmp/var/qmail
 +      mv debian/tmp/var/qmail/queue debian/tmp/var/spool/qmail
 +      mv debian/tmp/var/qmail/control debian/tmp/etc/qmail
 +      (cd debian/tmp/var/qmail && ln -s /var/spool/qmail queue)
 +      (cd debian/tmp/var/qmail && ln -s /etc/qmail control)
 +      mv debian/tmp/var/qmail/man debian/tmp/usr/man && \
 +              rm -r debian/tmp/usr/man/cat?
 +# Move /var/qmail/bin programs to either /usr/bin or /usr/sbin
 +      bash debian/debianize-binary-tree
 +# Create /usr/lib/sendmail symlink for backward compatibility.
 +      (cd debian/tmp/usr/lib && ln -s ../sbin/sendmail)
 +# Copy qmailconfig and its helper programs...
 +      install -o root -g root -m 755 dnsfq debian/tmp/usr/sbin/qmailconfig-dnsfq
 +      install -o root -g root -m 755 dnsip debian/tmp/usr/sbin/qmailconfig-dnsip
 +      install -o root -g root -m 755 ipmeprint debian/tmp/usr/sbin/qmailconfig-ipmeprint
 +      install -o root -g root -m 755 dnsptr debian/tmp/usr/sbin/qmailconfig-dnsptr
 +# (This one is a bit of a kludge...)
-       cp ../qmail_1.01.orig.tar.gz ../qmail_1.01-2.diff.gz \
-                ../qmail_1.01-2.dsc debian/qmail-src/usr/src/qmail-src
++#   Appears to be defunct in 1.03
++#      sed -e 's|./hostname|hostname|g' \
++#          -e 's|\./dnsptr|/usr/sbin/qmailconfig-dnsptr|g' \
++#          -e 's|\./dnsip|/usr/sbin/qmailconfig-dnsip|g' \
++#          -e 's|\./dnsfq|/usr/sbin/qmailconfig-dnsfq|g' \
++#          -e 's|\./ipmeprint|/usr/sbin/qmailconfig-ipmeprint|g' \
++#              qmail-config >debian/tmp/usr/sbin/qmailconfig
++#      chmod 755 debian/tmp/usr/sbin/qmailconfig
 +# Install /etc/init.d/qmail
 +      install -o root -g root -m 755 debian/qmail debian/tmp/etc/init.d/qmail
 +# Copy /usr/doc/qmail files.
 +      install -o root -g root -m 644 debian/changelog debian/tmp/usr/doc/qmail/changelog.Debian
++      rm -rf debian/tmp/var/qmail/doc
 +# do the stuff for qmail-src
-       debstd -m CHANGES BLURB* FAQ INTERNALS README RFC* \
-               SECURITY INSTALL.* SYSDEPS THANKS THOUGHTS TODO
++      cp ../qmail_1.03.orig.tar.gz ../qmail_1.03-1.diff.gz \
++               ../qmail_1.03-1.dsc debian/qmail-src/usr/src/qmail-src
 +      install -m 755 debian/build-qmail debian/qmail-src/usr/bin
 +      install debian/copyright debian/qmail-src/usr/doc/qmail-src
 +      install debian/qmail-src.README debian/qmail-src/usr/doc/qmail-src/README
++      debstd -m CHANGES BLURB* FAQ INTERNALS README \
++              SECURITY INSTALL.* PIC.* REMOVE.* SYSDEPS THANKS THOUGHTS \
++              TODO SENDMAIL TEST.* UPGRADE
 +# Correct permissions of binaries and manpages...
 +      chmod go+rx debian/tmp/usr/*bin/*
 +      chown -R root.root debian/tmp/usr/man
 +
 +      dpkg-gencontrol -pqmail
 +# And finally, build the Debian package!
 +      dpkg --build debian/tmp ..
 +
 +define checkdir
 +      test -f qmail-send.c -a -f debian/rules
 +endef
 +
 +binary:       binary-indep binary-arch
 +
 +source diff:
 +      @echo >&2 'source and diff are obsolete - use dpkg-source -b'; false
 +
 +checkroot:
 +      $(checkdir)
 +      test "`whoami`" = root
 +
 +.PHONY: binary binary-arch binary-indep clean checkroot
diff --cc hier.c
index 0000000,28e568d..9d6441b
mode 000000,100644..100644
--- /dev/null
--- 2/hier.c
+++ b/hier.c
@@@ -1,0 -1,252 +1,257 @@@
 -void dsplit(base,uid,mode)
+ #include "auto_qmail.h"
+ #include "auto_split.h"
+ #include "auto_uids.h"
+ #include "fmt.h"
+ #include "fifo.h"
+ char buf[100 + FMT_ULONG];
 -  d(auto_qmail,base,uid,auto_gidq,mode);
++void dsplit(home,base,uid,mode)
++char *home;
+ char *base; /* must be under 100 bytes */
+ int uid;
+ int mode;
+ {
+   char *x;
+   unsigned long i;
 -    d(auto_qmail,buf,uid,auto_gidq,mode);
++  d(home,base,uid,auto_gidq,mode);
+   for (i = 0;i < auto_split;++i) {
+     x = buf;
+     x += fmt_str(x,base);
+     x += fmt_str(x,"/");
+     x += fmt_ulong(x,i);
+     *x = 0;
 -void hier()
++    d(home,buf,uid,auto_gidq,mode);
+   }
+ }
 -  h(auto_qmail,auto_uido,auto_gidq,0755);
 -
 -  d(auto_qmail,"control",auto_uido,auto_gidq,0755);
 -  d(auto_qmail,"users",auto_uido,auto_gidq,0755);
 -  d(auto_qmail,"bin",auto_uido,auto_gidq,0755);
 -  d(auto_qmail,"boot",auto_uido,auto_gidq,0755);
 -  d(auto_qmail,"doc",auto_uido,auto_gidq,0755);
 -  d(auto_qmail,"man",auto_uido,auto_gidq,0755);
 -  d(auto_qmail,"man/cat1",auto_uido,auto_gidq,0755);
 -  d(auto_qmail,"man/cat5",auto_uido,auto_gidq,0755);
 -  d(auto_qmail,"man/cat7",auto_uido,auto_gidq,0755);
 -  d(auto_qmail,"man/cat8",auto_uido,auto_gidq,0755);
 -  d(auto_qmail,"man/man1",auto_uido,auto_gidq,0755);
 -  d(auto_qmail,"man/man5",auto_uido,auto_gidq,0755);
 -  d(auto_qmail,"man/man7",auto_uido,auto_gidq,0755);
 -  d(auto_qmail,"man/man8",auto_uido,auto_gidq,0755);
 -
 -  d(auto_qmail,"alias",auto_uida,auto_gidq,02755);
 -
 -  d(auto_qmail,"queue",auto_uidq,auto_gidq,0750);
 -  d(auto_qmail,"queue/pid",auto_uidq,auto_gidq,0700);
 -  d(auto_qmail,"queue/intd",auto_uidq,auto_gidq,0700);
 -  d(auto_qmail,"queue/todo",auto_uidq,auto_gidq,0750);
 -  d(auto_qmail,"queue/bounce",auto_uids,auto_gidq,0700);
 -
 -  dsplit("queue/mess",auto_uidq,0750);
 -  dsplit("queue/info",auto_uids,0700);
 -  dsplit("queue/local",auto_uids,0700);
 -  dsplit("queue/remote",auto_uids,0700);
 -
 -  d(auto_qmail,"queue/lock",auto_uidq,auto_gidq,0750);
 -  z(auto_qmail,"queue/lock/tcpto",1024,auto_uidr,auto_gidq,0644);
 -  z(auto_qmail,"queue/lock/sendmutex",0,auto_uids,auto_gidq,0600);
 -  p(auto_qmail,"queue/lock/trigger",auto_uids,auto_gidq,0622);
 -
 -  c(auto_qmail,"boot","home",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"boot","home+df",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"boot","proc",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"boot","proc+df",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"boot","binm1",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"boot","binm1+df",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"boot","binm2",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"boot","binm2+df",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"boot","binm3",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"boot","binm3+df",auto_uido,auto_gidq,0755);
 -
 -  c(auto_qmail,"doc","FAQ",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"doc","UPGRADE",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"doc","SENDMAIL",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"doc","INSTALL",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"doc","INSTALL.alias",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"doc","INSTALL.ctl",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"doc","INSTALL.ids",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"doc","INSTALL.maildir",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"doc","INSTALL.mbox",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"doc","INSTALL.vsm",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"doc","TEST.deliver",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"doc","TEST.receive",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"doc","REMOVE.sendmail",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"doc","REMOVE.binmail",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"doc","PIC.local2alias",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"doc","PIC.local2ext",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"doc","PIC.local2local",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"doc","PIC.local2rem",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"doc","PIC.local2virt",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"doc","PIC.nullclient",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"doc","PIC.relaybad",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"doc","PIC.relaygood",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"doc","PIC.rem2local",auto_uido,auto_gidq,0644);
 -
 -  c(auto_qmail,"bin","qmail-queue",auto_uidq,auto_gidq,04711);
 -  c(auto_qmail,"bin","qmail-lspawn",auto_uido,auto_gidq,0700);
 -  c(auto_qmail,"bin","qmail-start",auto_uido,auto_gidq,0700);
 -  c(auto_qmail,"bin","qmail-getpw",auto_uido,auto_gidq,0711);
 -  c(auto_qmail,"bin","qmail-local",auto_uido,auto_gidq,0711);
 -  c(auto_qmail,"bin","qmail-remote",auto_uido,auto_gidq,0711);
 -  c(auto_qmail,"bin","qmail-rspawn",auto_uido,auto_gidq,0711);
 -  c(auto_qmail,"bin","qmail-clean",auto_uido,auto_gidq,0711);
 -  c(auto_qmail,"bin","qmail-send",auto_uido,auto_gidq,0711);
 -  c(auto_qmail,"bin","splogger",auto_uido,auto_gidq,0711);
 -  c(auto_qmail,"bin","qmail-newu",auto_uido,auto_gidq,0700);
 -  c(auto_qmail,"bin","qmail-newmrh",auto_uido,auto_gidq,0700);
 -  c(auto_qmail,"bin","qmail-pw2u",auto_uido,auto_gidq,0711);
 -  c(auto_qmail,"bin","qmail-inject",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","predate",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","datemail",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","mailsubj",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","qmail-showctl",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","qmail-qread",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","qmail-qstat",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","qmail-tcpto",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","qmail-tcpok",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","qmail-pop3d",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","qmail-popup",auto_uido,auto_gidq,0711);
 -  c(auto_qmail,"bin","qmail-qmqpc",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","qmail-qmqpd",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","qmail-qmtpd",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","qmail-smtpd",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","sendmail",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","tcp-env",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","qreceipt",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","qsmhook",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","qbiff",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","forward",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","preline",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","condredirect",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","bouncesaying",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","except",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","maildirmake",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","maildir2mbox",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","maildirwatch",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","qail",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","elq",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","pinq",auto_uido,auto_gidq,0755);
 -
 -  c(auto_qmail,"man/man5","addresses.5",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat5","addresses.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man5","envelopes.5",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat5","envelopes.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man5","maildir.5",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat5","maildir.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man5","mbox.5",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat5","mbox.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man5","dot-qmail.5",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat5","dot-qmail.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man5","qmail-control.5",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat5","qmail-control.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man5","qmail-header.5",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat5","qmail-header.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man5","qmail-log.5",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat5","qmail-log.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man5","qmail-users.5",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat5","qmail-users.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man5","tcp-environ.5",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat5","tcp-environ.0",auto_uido,auto_gidq,0644);
 -
 -  c(auto_qmail,"man/man7","forgeries.7",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat7","forgeries.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man7","qmail-limits.7",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat7","qmail-limits.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man7","qmail.7",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat7","qmail.0",auto_uido,auto_gidq,0644);
 -
 -  c(auto_qmail,"man/man1","forward.1",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat1","forward.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man1","condredirect.1",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat1","condredirect.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man1","bouncesaying.1",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat1","bouncesaying.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man1","except.1",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat1","except.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man1","maildirmake.1",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat1","maildirmake.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man1","maildir2mbox.1",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat1","maildir2mbox.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man1","maildirwatch.1",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat1","maildirwatch.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man1","mailsubj.1",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat1","mailsubj.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man1","qreceipt.1",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat1","qreceipt.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man1","qbiff.1",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat1","qbiff.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man1","preline.1",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat1","preline.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man1","tcp-env.1",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat1","tcp-env.0",auto_uido,auto_gidq,0644);
 -
 -  c(auto_qmail,"man/man8","qmail-local.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-local.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-lspawn.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-lspawn.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-getpw.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-getpw.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-remote.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-remote.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-rspawn.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-rspawn.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-clean.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-clean.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-send.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-send.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-start.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-start.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","splogger.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","splogger.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-queue.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-queue.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-inject.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-inject.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-showctl.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-showctl.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-newmrh.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-newmrh.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-newu.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-newu.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-pw2u.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-pw2u.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-qread.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-qread.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-qstat.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-qstat.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-tcpok.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-tcpok.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-tcpto.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-tcpto.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-pop3d.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-pop3d.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-popup.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-popup.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-qmqpc.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-qmqpc.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-qmqpd.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-qmqpd.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-qmtpd.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-qmtpd.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-smtpd.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-smtpd.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-command.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-command.0",auto_uido,auto_gidq,0644);
++void hier(home)
++char *home;
+ {
++  if (!home)
++    home = auto_qmail;
++
++  h(home,auto_uido,auto_gidq,0755);
++
++  d(home,"control",auto_uido,auto_gidq,0755);
++  d(home,"users",auto_uido,auto_gidq,0755);
++  d(home,"bin",auto_uido,auto_gidq,0755);
++  d(home,"boot",auto_uido,auto_gidq,0755);
++  d(home,"doc",auto_uido,auto_gidq,0755);
++  d(home,"man",auto_uido,auto_gidq,0755);
++  d(home,"man/cat1",auto_uido,auto_gidq,0755);
++  d(home,"man/cat5",auto_uido,auto_gidq,0755);
++  d(home,"man/cat7",auto_uido,auto_gidq,0755);
++  d(home,"man/cat8",auto_uido,auto_gidq,0755);
++  d(home,"man/man1",auto_uido,auto_gidq,0755);
++  d(home,"man/man5",auto_uido,auto_gidq,0755);
++  d(home,"man/man7",auto_uido,auto_gidq,0755);
++  d(home,"man/man8",auto_uido,auto_gidq,0755);
++
++  d(home,"alias",auto_uida,auto_gidq,02755);
++
++  d(home,"queue",auto_uidq,auto_gidq,0750);
++  d(home,"queue/pid",auto_uidq,auto_gidq,0700);
++  d(home,"queue/intd",auto_uidq,auto_gidq,0700);
++  d(home,"queue/todo",auto_uidq,auto_gidq,0750);
++  d(home,"queue/bounce",auto_uids,auto_gidq,0700);
++
++  dsplit(home,"queue/mess",auto_uidq,0750);
++  dsplit(home,"queue/info",auto_uids,0700);
++  dsplit(home,"queue/local",auto_uids,0700);
++  dsplit(home,"queue/remote",auto_uids,0700);
++
++  d(home,"queue/lock",auto_uidq,auto_gidq,0750);
++  z(home,"queue/lock/tcpto",1024,auto_uidr,auto_gidq,0644);
++  z(home,"queue/lock/sendmutex",0,auto_uids,auto_gidq,0600);
++  p(home,"queue/lock/trigger",auto_uids,auto_gidq,0622);
++
++  c(home,"boot","home",auto_uido,auto_gidq,0755);
++  c(home,"boot","home+df",auto_uido,auto_gidq,0755);
++  c(home,"boot","proc",auto_uido,auto_gidq,0755);
++  c(home,"boot","proc+df",auto_uido,auto_gidq,0755);
++  c(home,"boot","binm1",auto_uido,auto_gidq,0755);
++  c(home,"boot","binm1+df",auto_uido,auto_gidq,0755);
++  c(home,"boot","binm2",auto_uido,auto_gidq,0755);
++  c(home,"boot","binm2+df",auto_uido,auto_gidq,0755);
++  c(home,"boot","binm3",auto_uido,auto_gidq,0755);
++  c(home,"boot","binm3+df",auto_uido,auto_gidq,0755);
++
++  c(home,"doc","FAQ",auto_uido,auto_gidq,0644);
++  c(home,"doc","UPGRADE",auto_uido,auto_gidq,0644);
++  c(home,"doc","SENDMAIL",auto_uido,auto_gidq,0644);
++  c(home,"doc","INSTALL",auto_uido,auto_gidq,0644);
++  c(home,"doc","INSTALL.alias",auto_uido,auto_gidq,0644);
++  c(home,"doc","INSTALL.ctl",auto_uido,auto_gidq,0644);
++  c(home,"doc","INSTALL.ids",auto_uido,auto_gidq,0644);
++  c(home,"doc","INSTALL.maildir",auto_uido,auto_gidq,0644);
++  c(home,"doc","INSTALL.mbox",auto_uido,auto_gidq,0644);
++  c(home,"doc","INSTALL.vsm",auto_uido,auto_gidq,0644);
++  c(home,"doc","TEST.deliver",auto_uido,auto_gidq,0644);
++  c(home,"doc","TEST.receive",auto_uido,auto_gidq,0644);
++  c(home,"doc","REMOVE.sendmail",auto_uido,auto_gidq,0644);
++  c(home,"doc","REMOVE.binmail",auto_uido,auto_gidq,0644);
++  c(home,"doc","PIC.local2alias",auto_uido,auto_gidq,0644);
++  c(home,"doc","PIC.local2ext",auto_uido,auto_gidq,0644);
++  c(home,"doc","PIC.local2local",auto_uido,auto_gidq,0644);
++  c(home,"doc","PIC.local2rem",auto_uido,auto_gidq,0644);
++  c(home,"doc","PIC.local2virt",auto_uido,auto_gidq,0644);
++  c(home,"doc","PIC.nullclient",auto_uido,auto_gidq,0644);
++  c(home,"doc","PIC.relaybad",auto_uido,auto_gidq,0644);
++  c(home,"doc","PIC.relaygood",auto_uido,auto_gidq,0644);
++  c(home,"doc","PIC.rem2local",auto_uido,auto_gidq,0644);
++
++  c(home,"bin","qmail-queue",auto_uidq,auto_gidq,04711);
++  c(home,"bin","qmail-lspawn",auto_uido,auto_gidq,0700);
++  c(home,"bin","qmail-start",auto_uido,auto_gidq,0700);
++  c(home,"bin","qmail-getpw",auto_uido,auto_gidq,0711);
++  c(home,"bin","qmail-local",auto_uido,auto_gidq,0711);
++  c(home,"bin","qmail-remote",auto_uido,auto_gidq,0711);
++  c(home,"bin","qmail-rspawn",auto_uido,auto_gidq,0711);
++  c(home,"bin","qmail-clean",auto_uido,auto_gidq,0711);
++  c(home,"bin","qmail-send",auto_uido,auto_gidq,0711);
++  c(home,"bin","splogger",auto_uido,auto_gidq,0711);
++  c(home,"bin","qmail-newu",auto_uido,auto_gidq,0700);
++  c(home,"bin","qmail-newmrh",auto_uido,auto_gidq,0700);
++  c(home,"bin","qmail-pw2u",auto_uido,auto_gidq,0711);
++  c(home,"bin","qmail-inject",auto_uido,auto_gidq,0755);
++  c(home,"bin","predate",auto_uido,auto_gidq,0755);
++  c(home,"bin","datemail",auto_uido,auto_gidq,0755);
++  c(home,"bin","mailsubj",auto_uido,auto_gidq,0755);
++  c(home,"bin","qmail-showctl",auto_uido,auto_gidq,0755);
++  c(home,"bin","qmail-qread",auto_uido,auto_gidq,0755);
++  c(home,"bin","qmail-qstat",auto_uido,auto_gidq,0755);
++  c(home,"bin","qmail-tcpto",auto_uido,auto_gidq,0755);
++  c(home,"bin","qmail-tcpok",auto_uido,auto_gidq,0755);
++  c(home,"bin","qmail-pop3d",auto_uido,auto_gidq,0755);
++  c(home,"bin","qmail-popup",auto_uido,auto_gidq,0711);
++  c(home,"bin","qmail-qmqpc",auto_uido,auto_gidq,0755);
++  c(home,"bin","qmail-qmqpd",auto_uido,auto_gidq,0755);
++  c(home,"bin","qmail-qmtpd",auto_uido,auto_gidq,0755);
++  c(home,"bin","qmail-smtpd",auto_uido,auto_gidq,0755);
++  c(home,"bin","sendmail",auto_uido,auto_gidq,0755);
++  c(home,"bin","tcp-env",auto_uido,auto_gidq,0755);
++  c(home,"bin","qreceipt",auto_uido,auto_gidq,0755);
++  c(home,"bin","qsmhook",auto_uido,auto_gidq,0755);
++  c(home,"bin","qbiff",auto_uido,auto_gidq,0755);
++  c(home,"bin","forward",auto_uido,auto_gidq,0755);
++  c(home,"bin","preline",auto_uido,auto_gidq,0755);
++  c(home,"bin","condredirect",auto_uido,auto_gidq,0755);
++  c(home,"bin","bouncesaying",auto_uido,auto_gidq,0755);
++  c(home,"bin","except",auto_uido,auto_gidq,0755);
++  c(home,"bin","maildirmake",auto_uido,auto_gidq,0755);
++  c(home,"bin","maildir2mbox",auto_uido,auto_gidq,0755);
++  c(home,"bin","maildirwatch",auto_uido,auto_gidq,0755);
++  c(home,"bin","qail",auto_uido,auto_gidq,0755);
++  c(home,"bin","elq",auto_uido,auto_gidq,0755);
++  c(home,"bin","pinq",auto_uido,auto_gidq,0755);
++
++  c(home,"man/man5","addresses.5",auto_uido,auto_gidq,0644);
++  c(home,"man/cat5","addresses.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man5","envelopes.5",auto_uido,auto_gidq,0644);
++  c(home,"man/cat5","envelopes.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man5","maildir.5",auto_uido,auto_gidq,0644);
++  c(home,"man/cat5","maildir.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man5","mbox.5",auto_uido,auto_gidq,0644);
++  c(home,"man/cat5","mbox.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man5","dot-qmail.5",auto_uido,auto_gidq,0644);
++  c(home,"man/cat5","dot-qmail.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man5","qmail-control.5",auto_uido,auto_gidq,0644);
++  c(home,"man/cat5","qmail-control.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man5","qmail-header.5",auto_uido,auto_gidq,0644);
++  c(home,"man/cat5","qmail-header.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man5","qmail-log.5",auto_uido,auto_gidq,0644);
++  c(home,"man/cat5","qmail-log.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man5","qmail-users.5",auto_uido,auto_gidq,0644);
++  c(home,"man/cat5","qmail-users.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man5","tcp-environ.5",auto_uido,auto_gidq,0644);
++  c(home,"man/cat5","tcp-environ.0",auto_uido,auto_gidq,0644);
++
++  c(home,"man/man7","forgeries.7",auto_uido,auto_gidq,0644);
++  c(home,"man/cat7","forgeries.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man7","qmail-limits.7",auto_uido,auto_gidq,0644);
++  c(home,"man/cat7","qmail-limits.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man7","qmail.7",auto_uido,auto_gidq,0644);
++  c(home,"man/cat7","qmail.0",auto_uido,auto_gidq,0644);
++
++  c(home,"man/man1","forward.1",auto_uido,auto_gidq,0644);
++  c(home,"man/cat1","forward.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man1","condredirect.1",auto_uido,auto_gidq,0644);
++  c(home,"man/cat1","condredirect.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man1","bouncesaying.1",auto_uido,auto_gidq,0644);
++  c(home,"man/cat1","bouncesaying.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man1","except.1",auto_uido,auto_gidq,0644);
++  c(home,"man/cat1","except.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man1","maildirmake.1",auto_uido,auto_gidq,0644);
++  c(home,"man/cat1","maildirmake.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man1","maildir2mbox.1",auto_uido,auto_gidq,0644);
++  c(home,"man/cat1","maildir2mbox.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man1","maildirwatch.1",auto_uido,auto_gidq,0644);
++  c(home,"man/cat1","maildirwatch.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man1","mailsubj.1",auto_uido,auto_gidq,0644);
++  c(home,"man/cat1","mailsubj.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man1","qreceipt.1",auto_uido,auto_gidq,0644);
++  c(home,"man/cat1","qreceipt.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man1","qbiff.1",auto_uido,auto_gidq,0644);
++  c(home,"man/cat1","qbiff.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man1","preline.1",auto_uido,auto_gidq,0644);
++  c(home,"man/cat1","preline.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man1","tcp-env.1",auto_uido,auto_gidq,0644);
++  c(home,"man/cat1","tcp-env.0",auto_uido,auto_gidq,0644);
++
++  c(home,"man/man8","qmail-local.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-local.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-lspawn.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-lspawn.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-getpw.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-getpw.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-remote.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-remote.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-rspawn.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-rspawn.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-clean.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-clean.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-send.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-send.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-start.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-start.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","splogger.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","splogger.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-queue.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-queue.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-inject.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-inject.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-showctl.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-showctl.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-newmrh.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-newmrh.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-newu.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-newu.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-pw2u.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-pw2u.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-qread.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-qread.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-qstat.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-qstat.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-tcpok.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-tcpok.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-tcpto.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-tcpto.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-pop3d.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-pop3d.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-popup.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-popup.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-qmqpc.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-qmqpc.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-qmqpd.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-qmqpd.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-qmtpd.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-qmtpd.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-smtpd.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-smtpd.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-command.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-command.0",auto_uido,auto_gidq,0644);
+ }
diff --cc home+df.sh
index 0000000,7885cdf..591dc2e
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,9 +1,9 @@@
 -exec env - PATH="QMAIL/bin:$PATH" \
+ #!/bin/sh
+ # Using splogger to send the log through syslog.
+ # Using dot-forward to support sendmail-style ~/.forward files.
+ # Using qmail-local to deliver messages to ~/Mailbox by default.
++exec env - PATH="/usr/bin:/usr/sbin$PATH" \
+ qmail-start '|dot-forward .forward
+ ./Mailbox' splogger qmail
diff --cc home.sh
index 0000000,c96c02b..569e469
mode 000000,100644..100644
--- /dev/null
+++ b/home.sh
@@@ -1,0 -1,7 +1,7 @@@
 -exec env - PATH="QMAIL/bin:$PATH" \
+ #!/bin/sh
+ # Using splogger to send the log through syslog.
+ # Using qmail-local to deliver messages to ~/Mailbox by default.
++exec env - PATH="/usr/bin:/usr/sbin$PATH" \
+ qmail-start ./Mailbox splogger qmail
diff --cc install-big.c
index 0000000,df813df..d5594f9
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,285 +1,290 @@@
 -void dsplit(base,uid,mode)
+ #include "auto_qmail.h"
+ #include "auto_split.h"
+ #include "auto_uids.h"
+ #include "fmt.h"
+ #include "fifo.h"
+ char buf[100 + FMT_ULONG];
 -  d(auto_qmail,base,uid,auto_gidq,mode);
++void dsplit(home,base,uid,mode)
++char *home;
+ char *base; /* must be under 100 bytes */
+ int uid;
+ int mode;
+ {
+   char *x;
+   unsigned long i;
 -    d(auto_qmail,buf,uid,auto_gidq,mode);
++  d(home,base,uid,auto_gidq,mode);
+   for (i = 0;i < auto_split;++i) {
+     x = buf;
+     x += fmt_str(x,base);
+     x += fmt_str(x,"/");
+     x += fmt_ulong(x,i);
+     *x = 0;
 -void hier()
++    d(home,buf,uid,auto_gidq,mode);
+   }
+ }
 -  h(auto_qmail,auto_uido,auto_gidq,0755);
++void hier(home)
++char *home;
+ {
 -  d(auto_qmail,"control",auto_uido,auto_gidq,0755);
 -  d(auto_qmail,"users",auto_uido,auto_gidq,0755);
 -  d(auto_qmail,"bin",auto_uido,auto_gidq,0755);
 -  d(auto_qmail,"boot",auto_uido,auto_gidq,0755);
 -  d(auto_qmail,"doc",auto_uido,auto_gidq,0755);
 -  d(auto_qmail,"man",auto_uido,auto_gidq,0755);
 -  d(auto_qmail,"man/cat1",auto_uido,auto_gidq,0755);
 -  d(auto_qmail,"man/cat5",auto_uido,auto_gidq,0755);
 -  d(auto_qmail,"man/cat7",auto_uido,auto_gidq,0755);
 -  d(auto_qmail,"man/cat8",auto_uido,auto_gidq,0755);
 -  d(auto_qmail,"man/man1",auto_uido,auto_gidq,0755);
 -  d(auto_qmail,"man/man5",auto_uido,auto_gidq,0755);
 -  d(auto_qmail,"man/man7",auto_uido,auto_gidq,0755);
 -  d(auto_qmail,"man/man8",auto_uido,auto_gidq,0755);
++  if (!home)
++    home = auto_qmail;
 -  d(auto_qmail,"alias",auto_uida,auto_gidq,02755);
++  h(home,auto_uido,auto_gidq,0755);
 -  d(auto_qmail,"queue",auto_uidq,auto_gidq,0750);
 -  d(auto_qmail,"queue/pid",auto_uidq,auto_gidq,0700);
 -  d(auto_qmail,"queue/intd",auto_uidq,auto_gidq,0700);
 -  d(auto_qmail,"queue/todo",auto_uidq,auto_gidq,0750);
 -  d(auto_qmail,"queue/bounce",auto_uids,auto_gidq,0700);
++  d(home,"control",auto_uido,auto_gidq,0755);
++  d(home,"users",auto_uido,auto_gidq,0755);
++  d(home,"bin",auto_uido,auto_gidq,0755);
++  d(home,"boot",auto_uido,auto_gidq,0755);
++  d(home,"doc",auto_uido,auto_gidq,0755);
++  d(home,"man",auto_uido,auto_gidq,0755);
++  d(home,"man/cat1",auto_uido,auto_gidq,0755);
++  d(home,"man/cat5",auto_uido,auto_gidq,0755);
++  d(home,"man/cat7",auto_uido,auto_gidq,0755);
++  d(home,"man/cat8",auto_uido,auto_gidq,0755);
++  d(home,"man/man1",auto_uido,auto_gidq,0755);
++  d(home,"man/man5",auto_uido,auto_gidq,0755);
++  d(home,"man/man7",auto_uido,auto_gidq,0755);
++  d(home,"man/man8",auto_uido,auto_gidq,0755);
 -  dsplit("queue/mess",auto_uidq,0750);
 -  dsplit("queue/info",auto_uids,0700);
 -  dsplit("queue/local",auto_uids,0700);
 -  dsplit("queue/remote",auto_uids,0700);
++  d(home,"alias",auto_uida,auto_gidq,02755);
 -  d(auto_qmail,"queue/lock",auto_uidq,auto_gidq,0750);
 -  z(auto_qmail,"queue/lock/tcpto",1024,auto_uidr,auto_gidq,0644);
 -  z(auto_qmail,"queue/lock/sendmutex",0,auto_uids,auto_gidq,0600);
 -  p(auto_qmail,"queue/lock/trigger",auto_uids,auto_gidq,0622);
++  d(home,"queue",auto_uidq,auto_gidq,0750);
++  d(home,"queue/pid",auto_uidq,auto_gidq,0700);
++  d(home,"queue/intd",auto_uidq,auto_gidq,0700);
++  d(home,"queue/todo",auto_uidq,auto_gidq,0750);
++  d(home,"queue/bounce",auto_uids,auto_gidq,0700);
 -  c(auto_qmail,"boot","home",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"boot","home+df",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"boot","proc",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"boot","proc+df",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"boot","binm1",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"boot","binm1+df",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"boot","binm2",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"boot","binm2+df",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"boot","binm3",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"boot","binm3+df",auto_uido,auto_gidq,0755);
++  dsplit(home,"queue/mess",auto_uidq,0750);
++  dsplit(home,"queue/info",auto_uids,0700);
++  dsplit(home,"queue/local",auto_uids,0700);
++  dsplit(home,"queue/remote",auto_uids,0700);
 -  c(auto_qmail,"doc","FAQ",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"doc","UPGRADE",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"doc","SENDMAIL",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"doc","INSTALL",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"doc","INSTALL.alias",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"doc","INSTALL.ctl",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"doc","INSTALL.ids",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"doc","INSTALL.maildir",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"doc","INSTALL.mbox",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"doc","INSTALL.vsm",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"doc","TEST.deliver",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"doc","TEST.receive",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"doc","REMOVE.sendmail",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"doc","REMOVE.binmail",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"doc","PIC.local2alias",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"doc","PIC.local2ext",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"doc","PIC.local2local",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"doc","PIC.local2rem",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"doc","PIC.local2virt",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"doc","PIC.nullclient",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"doc","PIC.relaybad",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"doc","PIC.relaygood",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"doc","PIC.rem2local",auto_uido,auto_gidq,0644);
++  d(home,"queue/lock",auto_uidq,auto_gidq,0750);
++  z(home,"queue/lock/tcpto",1024,auto_uidr,auto_gidq,0644);
++  z(home,"queue/lock/sendmutex",0,auto_uids,auto_gidq,0600);
++  p(home,"queue/lock/trigger",auto_uids,auto_gidq,0622);
 -  c(auto_qmail,"bin","qmail-queue",auto_uidq,auto_gidq,04711);
 -  c(auto_qmail,"bin","qmail-lspawn",auto_uido,auto_gidq,0700);
 -  c(auto_qmail,"bin","qmail-start",auto_uido,auto_gidq,0700);
 -  c(auto_qmail,"bin","qmail-getpw",auto_uido,auto_gidq,0711);
 -  c(auto_qmail,"bin","qmail-local",auto_uido,auto_gidq,0711);
 -  c(auto_qmail,"bin","qmail-remote",auto_uido,auto_gidq,0711);
 -  c(auto_qmail,"bin","qmail-rspawn",auto_uido,auto_gidq,0711);
 -  c(auto_qmail,"bin","qmail-clean",auto_uido,auto_gidq,0711);
 -  c(auto_qmail,"bin","qmail-send",auto_uido,auto_gidq,0711);
 -  c(auto_qmail,"bin","splogger",auto_uido,auto_gidq,0711);
 -  c(auto_qmail,"bin","qmail-newu",auto_uido,auto_gidq,0700);
 -  c(auto_qmail,"bin","qmail-newmrh",auto_uido,auto_gidq,0700);
 -  c(auto_qmail,"bin","qmail-pw2u",auto_uido,auto_gidq,0711);
 -  c(auto_qmail,"bin","qmail-inject",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","predate",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","datemail",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","mailsubj",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","qmail-showctl",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","qmail-qread",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","qmail-qstat",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","qmail-tcpto",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","qmail-tcpok",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","qmail-pop3d",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","qmail-popup",auto_uido,auto_gidq,0711);
 -  c(auto_qmail,"bin","qmail-qmqpc",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","qmail-qmqpd",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","qmail-qmtpd",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","qmail-smtpd",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","sendmail",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","tcp-env",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","qreceipt",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","qsmhook",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","qbiff",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","forward",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","preline",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","condredirect",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","bouncesaying",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","except",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","maildirmake",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","maildir2mbox",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","maildirwatch",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","qail",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","elq",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","pinq",auto_uido,auto_gidq,0755);
++  c(home,"boot","home",auto_uido,auto_gidq,0755);
++  c(home,"boot","home+df",auto_uido,auto_gidq,0755);
++  c(home,"boot","proc",auto_uido,auto_gidq,0755);
++  c(home,"boot","proc+df",auto_uido,auto_gidq,0755);
++  c(home,"boot","binm1",auto_uido,auto_gidq,0755);
++  c(home,"boot","binm1+df",auto_uido,auto_gidq,0755);
++  c(home,"boot","binm2",auto_uido,auto_gidq,0755);
++  c(home,"boot","binm2+df",auto_uido,auto_gidq,0755);
++  c(home,"boot","binm3",auto_uido,auto_gidq,0755);
++  c(home,"boot","binm3+df",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"man/man5","addresses.5",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat5","addresses.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man5","envelopes.5",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat5","envelopes.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man5","maildir.5",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat5","maildir.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man5","mbox.5",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat5","mbox.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man5","dot-qmail.5",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat5","dot-qmail.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man5","qmail-control.5",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat5","qmail-control.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man5","qmail-header.5",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat5","qmail-header.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man5","qmail-log.5",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat5","qmail-log.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man5","qmail-users.5",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat5","qmail-users.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man5","tcp-environ.5",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat5","tcp-environ.0",auto_uido,auto_gidq,0644);
++  c(home,"doc","FAQ",auto_uido,auto_gidq,0644);
++  c(home,"doc","UPGRADE",auto_uido,auto_gidq,0644);
++  c(home,"doc","SENDMAIL",auto_uido,auto_gidq,0644);
++  c(home,"doc","INSTALL",auto_uido,auto_gidq,0644);
++  c(home,"doc","INSTALL.alias",auto_uido,auto_gidq,0644);
++  c(home,"doc","INSTALL.ctl",auto_uido,auto_gidq,0644);
++  c(home,"doc","INSTALL.ids",auto_uido,auto_gidq,0644);
++  c(home,"doc","INSTALL.maildir",auto_uido,auto_gidq,0644);
++  c(home,"doc","INSTALL.mbox",auto_uido,auto_gidq,0644);
++  c(home,"doc","INSTALL.vsm",auto_uido,auto_gidq,0644);
++  c(home,"doc","TEST.deliver",auto_uido,auto_gidq,0644);
++  c(home,"doc","TEST.receive",auto_uido,auto_gidq,0644);
++  c(home,"doc","REMOVE.sendmail",auto_uido,auto_gidq,0644);
++  c(home,"doc","REMOVE.binmail",auto_uido,auto_gidq,0644);
++  c(home,"doc","PIC.local2alias",auto_uido,auto_gidq,0644);
++  c(home,"doc","PIC.local2ext",auto_uido,auto_gidq,0644);
++  c(home,"doc","PIC.local2local",auto_uido,auto_gidq,0644);
++  c(home,"doc","PIC.local2rem",auto_uido,auto_gidq,0644);
++  c(home,"doc","PIC.local2virt",auto_uido,auto_gidq,0644);
++  c(home,"doc","PIC.nullclient",auto_uido,auto_gidq,0644);
++  c(home,"doc","PIC.relaybad",auto_uido,auto_gidq,0644);
++  c(home,"doc","PIC.relaygood",auto_uido,auto_gidq,0644);
++  c(home,"doc","PIC.rem2local",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man7","forgeries.7",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat7","forgeries.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man7","qmail-limits.7",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat7","qmail-limits.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man7","qmail.7",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat7","qmail.0",auto_uido,auto_gidq,0644);
++  c(home,"bin","qmail-queue",auto_uidq,auto_gidq,04711);
++  c(home,"bin","qmail-lspawn",auto_uido,auto_gidq,0700);
++  c(home,"bin","qmail-start",auto_uido,auto_gidq,0700);
++  c(home,"bin","qmail-getpw",auto_uido,auto_gidq,0711);
++  c(home,"bin","qmail-local",auto_uido,auto_gidq,0711);
++  c(home,"bin","qmail-remote",auto_uido,auto_gidq,0711);
++  c(home,"bin","qmail-rspawn",auto_uido,auto_gidq,0711);
++  c(home,"bin","qmail-clean",auto_uido,auto_gidq,0711);
++  c(home,"bin","qmail-send",auto_uido,auto_gidq,0711);
++  c(home,"bin","splogger",auto_uido,auto_gidq,0711);
++  c(home,"bin","qmail-newu",auto_uido,auto_gidq,0700);
++  c(home,"bin","qmail-newmrh",auto_uido,auto_gidq,0700);
++  c(home,"bin","qmail-pw2u",auto_uido,auto_gidq,0711);
++  c(home,"bin","qmail-inject",auto_uido,auto_gidq,0755);
++  c(home,"bin","predate",auto_uido,auto_gidq,0755);
++  c(home,"bin","datemail",auto_uido,auto_gidq,0755);
++  c(home,"bin","mailsubj",auto_uido,auto_gidq,0755);
++  c(home,"bin","qmail-showctl",auto_uido,auto_gidq,0755);
++  c(home,"bin","qmail-qread",auto_uido,auto_gidq,0755);
++  c(home,"bin","qmail-qstat",auto_uido,auto_gidq,0755);
++  c(home,"bin","qmail-tcpto",auto_uido,auto_gidq,0755);
++  c(home,"bin","qmail-tcpok",auto_uido,auto_gidq,0755);
++  c(home,"bin","qmail-pop3d",auto_uido,auto_gidq,0755);
++  c(home,"bin","qmail-popup",auto_uido,auto_gidq,0711);
++  c(home,"bin","qmail-qmqpc",auto_uido,auto_gidq,0755);
++  c(home,"bin","qmail-qmqpd",auto_uido,auto_gidq,0755);
++  c(home,"bin","qmail-qmtpd",auto_uido,auto_gidq,0755);
++  c(home,"bin","qmail-smtpd",auto_uido,auto_gidq,0755);
++  c(home,"bin","sendmail",auto_uido,auto_gidq,0755);
++  c(home,"bin","tcp-env",auto_uido,auto_gidq,0755);
++  c(home,"bin","qreceipt",auto_uido,auto_gidq,0755);
++  c(home,"bin","qsmhook",auto_uido,auto_gidq,0755);
++  c(home,"bin","qbiff",auto_uido,auto_gidq,0755);
++  c(home,"bin","forward",auto_uido,auto_gidq,0755);
++  c(home,"bin","preline",auto_uido,auto_gidq,0755);
++  c(home,"bin","condredirect",auto_uido,auto_gidq,0755);
++  c(home,"bin","bouncesaying",auto_uido,auto_gidq,0755);
++  c(home,"bin","except",auto_uido,auto_gidq,0755);
++  c(home,"bin","maildirmake",auto_uido,auto_gidq,0755);
++  c(home,"bin","maildir2mbox",auto_uido,auto_gidq,0755);
++  c(home,"bin","maildirwatch",auto_uido,auto_gidq,0755);
++  c(home,"bin","qail",auto_uido,auto_gidq,0755);
++  c(home,"bin","elq",auto_uido,auto_gidq,0755);
++  c(home,"bin","pinq",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"man/man1","forward.1",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat1","forward.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man1","condredirect.1",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat1","condredirect.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man1","bouncesaying.1",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat1","bouncesaying.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man1","except.1",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat1","except.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man1","maildirmake.1",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat1","maildirmake.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man1","maildir2mbox.1",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat1","maildir2mbox.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man1","maildirwatch.1",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat1","maildirwatch.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man1","mailsubj.1",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat1","mailsubj.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man1","qreceipt.1",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat1","qreceipt.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man1","qbiff.1",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat1","qbiff.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man1","preline.1",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat1","preline.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man1","tcp-env.1",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat1","tcp-env.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man5","addresses.5",auto_uido,auto_gidq,0644);
++  c(home,"man/cat5","addresses.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man5","envelopes.5",auto_uido,auto_gidq,0644);
++  c(home,"man/cat5","envelopes.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man5","maildir.5",auto_uido,auto_gidq,0644);
++  c(home,"man/cat5","maildir.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man5","mbox.5",auto_uido,auto_gidq,0644);
++  c(home,"man/cat5","mbox.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man5","dot-qmail.5",auto_uido,auto_gidq,0644);
++  c(home,"man/cat5","dot-qmail.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man5","qmail-control.5",auto_uido,auto_gidq,0644);
++  c(home,"man/cat5","qmail-control.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man5","qmail-header.5",auto_uido,auto_gidq,0644);
++  c(home,"man/cat5","qmail-header.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man5","qmail-log.5",auto_uido,auto_gidq,0644);
++  c(home,"man/cat5","qmail-log.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man5","qmail-users.5",auto_uido,auto_gidq,0644);
++  c(home,"man/cat5","qmail-users.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man5","tcp-environ.5",auto_uido,auto_gidq,0644);
++  c(home,"man/cat5","tcp-environ.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-local.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-local.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-lspawn.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-lspawn.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-getpw.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-getpw.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-remote.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-remote.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-rspawn.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-rspawn.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-clean.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-clean.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-send.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-send.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-start.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-start.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","splogger.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","splogger.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-queue.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-queue.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-inject.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-inject.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-showctl.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-showctl.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-newmrh.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-newmrh.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-newu.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-newu.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-pw2u.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-pw2u.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-qread.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-qread.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-qstat.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-qstat.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-tcpok.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-tcpok.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-tcpto.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-tcpto.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-pop3d.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-pop3d.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-popup.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-popup.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-qmqpc.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-qmqpc.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-qmqpd.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-qmqpd.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-qmtpd.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-qmtpd.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-smtpd.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-smtpd.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man8","qmail-command.8",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat8","qmail-command.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man7","forgeries.7",auto_uido,auto_gidq,0644);
++  c(home,"man/cat7","forgeries.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man7","qmail-limits.7",auto_uido,auto_gidq,0644);
++  c(home,"man/cat7","qmail-limits.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man7","qmail.7",auto_uido,auto_gidq,0644);
++  c(home,"man/cat7","qmail.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"bin","dot-forward",auto_uido,auto_gidq,0755);
++  c(home,"man/man1","forward.1",auto_uido,auto_gidq,0644);
++  c(home,"man/cat1","forward.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man1","condredirect.1",auto_uido,auto_gidq,0644);
++  c(home,"man/cat1","condredirect.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man1","bouncesaying.1",auto_uido,auto_gidq,0644);
++  c(home,"man/cat1","bouncesaying.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man1","except.1",auto_uido,auto_gidq,0644);
++  c(home,"man/cat1","except.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man1","maildirmake.1",auto_uido,auto_gidq,0644);
++  c(home,"man/cat1","maildirmake.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man1","maildir2mbox.1",auto_uido,auto_gidq,0644);
++  c(home,"man/cat1","maildir2mbox.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man1","maildirwatch.1",auto_uido,auto_gidq,0644);
++  c(home,"man/cat1","maildirwatch.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man1","mailsubj.1",auto_uido,auto_gidq,0644);
++  c(home,"man/cat1","mailsubj.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man1","qreceipt.1",auto_uido,auto_gidq,0644);
++  c(home,"man/cat1","qreceipt.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man1","qbiff.1",auto_uido,auto_gidq,0644);
++  c(home,"man/cat1","qbiff.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man1","preline.1",auto_uido,auto_gidq,0644);
++  c(home,"man/cat1","preline.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man1","tcp-env.1",auto_uido,auto_gidq,0644);
++  c(home,"man/cat1","tcp-env.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man1","dot-forward.1",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat1","dot-forward.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-local.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-local.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-lspawn.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-lspawn.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-getpw.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-getpw.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-remote.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-remote.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-rspawn.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-rspawn.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-clean.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-clean.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-send.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-send.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-start.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-start.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","splogger.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","splogger.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-queue.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-queue.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-inject.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-inject.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-showctl.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-showctl.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-newmrh.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-newmrh.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-newu.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-newu.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-pw2u.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-pw2u.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-qread.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-qread.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-qstat.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-qstat.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-tcpok.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-tcpok.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-tcpto.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-tcpto.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-pop3d.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-pop3d.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-popup.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-popup.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-qmqpc.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-qmqpc.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-qmqpd.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-qmqpd.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-qmtpd.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-qmtpd.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-smtpd.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-smtpd.0",auto_uido,auto_gidq,0644);
++  c(home,"man/man8","qmail-command.8",auto_uido,auto_gidq,0644);
++  c(home,"man/cat8","qmail-command.0",auto_uido,auto_gidq,0644);
 -  d(auto_qmail,"doc/fastforward",auto_uido,auto_gidq,0755);
++  c(home,"bin","dot-forward",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","fastforward",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","printforward",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","setforward",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","newaliases",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","printmaillist",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","setmaillist",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"bin","newinclude",auto_uido,auto_gidq,0755);
++  c(home,"man/man1","dot-forward.1",auto_uido,auto_gidq,0644);
++  c(home,"man/cat1","dot-forward.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"doc/fastforward","ALIASES",auto_uido,auto_gidq,0644);
++  d(home,"doc/fastforward",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"man/man1","fastforward.1",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man1","printforward.1",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man1","setforward.1",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man1","newaliases.1",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man1","printmaillist.1",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man1","setmaillist.1",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/man1","newinclude.1",auto_uido,auto_gidq,0644);
++  c(home,"bin","fastforward",auto_uido,auto_gidq,0755);
++  c(home,"bin","printforward",auto_uido,auto_gidq,0755);
++  c(home,"bin","setforward",auto_uido,auto_gidq,0755);
++  c(home,"bin","newaliases",auto_uido,auto_gidq,0755);
++  c(home,"bin","printmaillist",auto_uido,auto_gidq,0755);
++  c(home,"bin","setmaillist",auto_uido,auto_gidq,0755);
++  c(home,"bin","newinclude",auto_uido,auto_gidq,0755);
 -  c(auto_qmail,"man/cat1","fastforward.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat1","printforward.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat1","setforward.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat1","newaliases.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat1","printmaillist.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat1","setmaillist.0",auto_uido,auto_gidq,0644);
 -  c(auto_qmail,"man/cat1","newinclude.0",auto_uido,auto_gidq,0644);
++  c(home,"doc/fastforward","ALIASES",auto_uido,auto_gidq,0644);
++  c(home,"man/man1","fastforward.1",auto_uido,auto_gidq,0644);
++  c(home,"man/man1","printforward.1",auto_uido,auto_gidq,0644);
++  c(home,"man/man1","setforward.1",auto_uido,auto_gidq,0644);
++  c(home,"man/man1","newaliases.1",auto_uido,auto_gidq,0644);
++  c(home,"man/man1","printmaillist.1",auto_uido,auto_gidq,0644);
++  c(home,"man/man1","setmaillist.1",auto_uido,auto_gidq,0644);
++  c(home,"man/man1","newinclude.1",auto_uido,auto_gidq,0644);
++
++  c(home,"man/cat1","fastforward.0",auto_uido,auto_gidq,0644);
++  c(home,"man/cat1","printforward.0",auto_uido,auto_gidq,0644);
++  c(home,"man/cat1","setforward.0",auto_uido,auto_gidq,0644);
++  c(home,"man/cat1","newaliases.0",auto_uido,auto_gidq,0644);
++  c(home,"man/cat1","printmaillist.0",auto_uido,auto_gidq,0644);
++  c(home,"man/cat1","setmaillist.0",auto_uido,auto_gidq,0644);
++  c(home,"man/cat1","newinclude.0",auto_uido,auto_gidq,0644);
+ }
diff --cc install.c
+++ b/install.c
@@@ -20,148 -67,98 +67,103 @@@ char outbuf[SUBSTDIO_OUTSIZE]
  substdio ssin;
  substdio ssout;
  
- void doit(line)
- stralloc *line;
+ void c(home,subdir,file,uid,gid,mode)
+ char *home;
+ char *subdir;
+ char *file;
+ int uid;
+ int gid;
+ int mode;
  {
-   char *x;
-   unsigned int xlen;
-   unsigned int i;
-   char *type;
-   char *uidstr;
-   char *gidstr;
-   char *modestr;
-   char *mid;
-   char *name;
-   unsigned long uid;
-   unsigned long gid;
-   unsigned long mode;
    int fdin;
    int fdout;
-   unsigned long zlen;
-   x = line->s; xlen = line->len;
-   type = x;
-   i = byte_chr(x,xlen,':'); if (i == xlen) return;
-   x[i++] = 0; x += i; xlen -= i;
-   uidstr = x;
-   i = byte_chr(x,xlen,':'); if (i == xlen) return;
-   x[i++] = 0; x += i; xlen -= i;
-   gidstr = x;
-   i = byte_chr(x,xlen,':'); if (i == xlen) return;
-   x[i++] = 0; x += i; xlen -= i;
-   modestr = x;
-   i = byte_chr(x,xlen,':'); if (i == xlen) return;
-   x[i++] = 0; x += i; xlen -= i;
-   mid = x;
-   i = byte_chr(x,xlen,':'); if (i == xlen) return;
-   x[i++] = 0; x += i; xlen -= i;
-   name = x;
-   i = byte_chr(x,xlen,':'); if (i == xlen) return;
-   x[i++] = 0; x += i; xlen -= i;
-   if (!stralloc_copys(&target,to)) nomem();
-   if (!stralloc_cats(&target,mid)) nomem();
-   if (!stralloc_cats(&target,name)) nomem();
-   if (!stralloc_0(&target)) nomem();
-   uid = -1; if (*uidstr) scan_ulong(uidstr,&uid);
-   gid = -1; if (*gidstr) scan_ulong(gidstr,&gid);
-   scan_8long(modestr,&mode);
-   switch(*type) {
-     case 'z':
-       scan_ulong(type + 1,&zlen);
-       fdout = open_trunc(target.s);
-       if (fdout == -1)
-       strerr_die4sys(111,FATAL,"unable to write ",target.s,": ");
-       substdio_fdbuf(&ssout,write,fdout,outbuf,sizeof(outbuf));
-       while (zlen--)
-       if (substdio_put(&ssout,"",1) == -1)
-         strerr_die4sys(111,FATAL,"unable to write ",target.s,": ");
-       if (substdio_flush(&ssout) == -1)
-       strerr_die4sys(111,FATAL,"unable to write ",target.s,": ");
-       if (fsync(fdout) == -1)
-       strerr_die4sys(111,FATAL,"unable to write ",target.s,": ");
-       close(fdout);
-       break;
-     case 'p':
-       if (fifo_make(target.s,0700) == -1)
-         if (errno != error_exist)
-         strerr_die4sys(111,FATAL,"unable to mkfifo ",target.s,": ");
-       break;
-     case 'd':
-       if (mkdir(target.s,0700) == -1)
-         if (errno != error_exist)
-         strerr_die4sys(111,FATAL,"unable to mkdir ",target.s,": ");
-       break;
-     case 'c':
-       fdin = open_read(name);
-       if (fdin == -1)
-       strerr_die4sys(111,FATAL,"unable to read ",name,": ");
-       substdio_fdbuf(&ssin,read,fdin,inbuf,sizeof(inbuf));
-       fdout = open_trunc(target.s);
-       if (fdout == -1)
-       strerr_die4sys(111,FATAL,"unable to write ",target.s,": ");
-       substdio_fdbuf(&ssout,write,fdout,outbuf,sizeof(outbuf));
-       switch(substdio_copy(&ssout,&ssin)) {
-       case -2:
-         strerr_die4sys(111,FATAL,"unable to read ",name,": ");
-       case -3:
-         strerr_die4sys(111,FATAL,"unable to write ",target.s,": ");
-       }
-       close(fdin);
-       if (substdio_flush(&ssout) == -1)
-       strerr_die4sys(111,FATAL,"unable to write ",target.s,": ");
-       if (fsync(fdout) == -1)
-       strerr_die4sys(111,FATAL,"unable to write ",target.s,": ");
-       close(fdout);
-       break;
-     default:
-       return;
+   if (fchdir(fdsourcedir) == -1)
+     strerr_die2sys(111,FATAL,"unable to switch back to source directory: ");
+   fdin = open_read(file);
+   if (fdin == -1)
+     strerr_die4sys(111,FATAL,"unable to read ",file,": ");
+   substdio_fdbuf(&ssin,read,fdin,inbuf,sizeof inbuf);
+   if (chdir(home) == -1)
+     strerr_die4sys(111,FATAL,"unable to switch to ",home,": ");
+   if (chdir(subdir) == -1)
+     strerr_die6sys(111,FATAL,"unable to switch to ",home,"/",subdir,": ");
+   fdout = open_trunc(file);
+   if (fdout == -1)
+     strerr_die6sys(111,FATAL,"unable to write .../",subdir,"/",file,": ");
+   substdio_fdbuf(&ssout,write,fdout,outbuf,sizeof outbuf);
+   switch(substdio_copy(&ssout,&ssin)) {
+     case -2:
+       strerr_die4sys(111,FATAL,"unable to read ",file,": ");
+     case -3:
+       strerr_die6sys(111,FATAL,"unable to write .../",subdir,"/",file,": ");
    }
  
-   if (chown(target.s,uid,gid) == -1)
-     strerr_die4sys(111,FATAL,"unable to chown ",target.s,": ");
-   if (chmod(target.s,mode) == -1)
-     strerr_die4sys(111,FATAL,"unable to chmod ",target.s,": ");
+   close(fdin);
+   if (substdio_flush(&ssout) == -1)
+     strerr_die6sys(111,FATAL,"unable to write .../",subdir,"/",file,": ");
+   if (fsync(fdout) == -1)
+     strerr_die6sys(111,FATAL,"unable to write .../",subdir,"/",file,": ");
+   if (close(fdout) == -1) /* NFS silliness */
+     strerr_die6sys(111,FATAL,"unable to write .../",subdir,"/",file,": ");
+   if (chown(file,uid,gid) == -1)
+     strerr_die6sys(111,FATAL,"unable to chown .../",subdir,"/",file,": ");
+   if (chmod(file,mode) == -1)
+     strerr_die6sys(111,FATAL,"unable to chmod .../",subdir,"/",file,": ");
  }
  
- char buf[256];
- substdio in = SUBSTDIO_FDBUF(read,0,buf,sizeof(buf));
- stralloc line = {0};
+ void z(home,file,len,uid,gid,mode)
+ char *home;
+ char *file;
+ int len;
+ int uid;
+ int gid;
+ int mode;
+ {
+   int fdout;
+   if (chdir(home) == -1)
+     strerr_die4sys(111,FATAL,"unable to switch to ",home,": ");
+   fdout = open_trunc(file);
+   if (fdout == -1)
+     strerr_die6sys(111,FATAL,"unable to write ",home,"/",file,": ");
+   substdio_fdbuf(&ssout,write,fdout,outbuf,sizeof outbuf);
+   while (len-- > 0)
+     if (substdio_put(&ssout,"",1) == -1)
+       strerr_die6sys(111,FATAL,"unable to write ",home,"/",file,": ");
+   if (substdio_flush(&ssout) == -1)
+     strerr_die6sys(111,FATAL,"unable to write ",home,"/",file,": ");
+   if (fsync(fdout) == -1)
+     strerr_die6sys(111,FATAL,"unable to write ",home,"/",file,": ");
+   if (close(fdout) == -1) /* NFS silliness */
+     strerr_die6sys(111,FATAL,"unable to write ",home,"/",file,": ");
+   if (chown(file,uid,gid) == -1)
+     strerr_die6sys(111,FATAL,"unable to chown ",home,"/",file,": ");
+   if (chmod(file,mode) == -1)
+     strerr_die6sys(111,FATAL,"unable to chmod ",home,"/",file,": ");
+ }
  
 -void main()
 +void main(argc,argv)
 +int argc;
- char **argv;
++char *argv[];
  {
-   int match;
++  char *home = 0;
++  if (argc > 1)
++    home = argv[1];
+   fdsourcedir = open_read(".");
+   if (fdsourcedir == -1)
+     strerr_die2sys(111,FATAL,"unable to open current directory: ");
  
    umask(077);
-   to = argv[1];
-   if (!to) strerr_die2x(100,FATAL,"install: usage: install dir");
-   for (;;) {
-     if (getln(&in,&line,&match,'\n') == -1)
-       strerr_die2sys(111,FATAL,"unable to read input: ");
-     doit(&line);
-     if (!match)
-       _exit(0);
-   }
 -  hier();
++  hier(home);
+   _exit(0);
  }
diff --cc instcheck.c
@@@ -86,35 -31,78 +31,83 @@@ int mode
    }
  
    if ((uid != -1) && (st.st_uid != uid))
-     strerr_warn3(WARNING,target.s," has wrong owner",0);
+     strerr_warn6(WARNING,prefix1,prefix2,prefix3,file," has wrong owner",0);
    if ((gid != -1) && (st.st_gid != gid))
-     strerr_warn3(WARNING,target.s," has wrong group",0);
+     strerr_warn6(WARNING,prefix1,prefix2,prefix3,file," has wrong group",0);
    if ((st.st_mode & 07777) != mode)
-     strerr_warn3(WARNING,target.s," has wrong permissions",0);
-   if ((st.st_mode & S_IFMT) != ftype)
-     strerr_warn3(WARNING,target.s," has wrong type",0);
+     strerr_warn6(WARNING,prefix1,prefix2,prefix3,file," has wrong permissions",0);
+   if ((st.st_mode & S_IFMT) != type)
+     strerr_warn6(WARNING,prefix1,prefix2,prefix3,file," has wrong type",0);
  }
  
- char buf[256];
- substdio in = SUBSTDIO_FDBUF(read,0,buf,sizeof(buf));
- stralloc line = {0};
+ void h(home,uid,gid,mode)
+ char *home;
+ int uid;
+ int gid;
+ int mode;
+ {
+   perm("","","",home,S_IFDIR,uid,gid,mode);
+ }
  
- void main(argc,argv)
- int argc;
- char **argv;
+ void d(home,subdir,uid,gid,mode)
+ char *home;
+ char *subdir;
+ int uid;
+ int gid;
+ int mode;
  {
-   int match;
+   if (chdir(home) == -1)
+     strerr_die4sys(111,FATAL,"unable to switch to ",home,": ");
+   perm("",home,"/",subdir,S_IFDIR,uid,gid,mode);
+ }
+ void p(home,fifo,uid,gid,mode)
+ char *home;
+ char *fifo;
+ int uid;
+ int gid;
+ int mode;
+ {
+   if (chdir(home) == -1)
+     strerr_die4sys(111,FATAL,"unable to switch to ",home,": ");
+   perm("",home,"/",fifo,S_IFIFO,uid,gid,mode);
+ }
  
-   umask(077);
+ void c(home,subdir,file,uid,gid,mode)
+ char *home;
+ char *subdir;
+ char *file;
+ int uid;
+ int gid;
+ int mode;
+ {
+   if (chdir(home) == -1)
+     strerr_die4sys(111,FATAL,"unable to switch to ",home,": ");
+   if (chdir(subdir) == -1)
+     strerr_die6sys(111,FATAL,"unable to switch to ",home,"/",subdir,": ");
+   perm(".../",subdir,"/",file,S_IFREG,uid,gid,mode);
+ }
  
-   to = argv[1];
-   if (!to) strerr_die2x(100,FATAL,"instcheck: usage: instcheck dir");
+ void z(home,file,len,uid,gid,mode)
+ char *home;
+ char *file;
+ int len;
+ int uid;
+ int gid;
+ int mode;
+ {
+   if (chdir(home) == -1)
+     strerr_die4sys(111,FATAL,"unable to switch to ",home,": ");
+   perm("",home,"/",file,S_IFREG,uid,gid,mode);
+ }
  
-   for (;;) {
-     if (getln(&in,&line,&match,'\n') == -1)
-       strerr_die2sys(111,FATAL,"unable to read input: ");
-     doit(&line);
-     if (!match)
-       _exit(0);
-   }
 -void main()
++void main(argc,argv)
++int argc;
++char *argv[];
+ {
 -  hier();
++  char *home = 0;
++  if (argc > 1)
++    home = argv[1];
++  hier(home);
+   _exit(0);
  }
diff --cc proc+df.sh
index 0000000,eb9e92c..ce61f7e
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,9 +1,9 @@@
 -exec env - PATH="QMAIL/bin:$PATH" \
+ #!/bin/sh
+ # Using splogger to send the log through syslog.
+ # Using dot-forward to support sendmail-style ~/.forward files.
+ # Using procmail to deliver messages to /var/spool/mail/$USER by default.
++exec env - PATH="/usr/bin:/usr/sbin$PATH" \
+ qmail-start '|dot-forward .forward
+ |preline procmail' splogger qmail
diff --cc proc.sh
index 0000000,3c76220..88cd1ed
mode 000000,100644..100644
--- /dev/null
+++ b/proc.sh
@@@ -1,0 -1,7 +1,7 @@@
 -exec env - PATH="QMAIL/bin:$PATH" \
+ #!/bin/sh
+ # Using splogger to send the log through syslog.
+ # Using procmail to deliver messages to /var/spool/mail/$USER by default.
++exec env - PATH="/usr/bin:/usr/sbin$PATH" \
+ qmail-start '|preline procmail' splogger qmail
diff --cc qmail.c
Simple merge
diff --cc sendmail.c
@@@ -9,8 -9,40 +9,40 @@@
  
  void nomem()
  {
-  substdio_putsflush(subfderr,"sendmail: fatal: out of memory\n");
-  _exit(111);
+   substdio_putsflush(subfderr,"sendmail: fatal: out of memory\n");
+   _exit(111);
+ }
+ void die_usage()
+ {
+   substdio_putsflush(subfderr,"sendmail: usage: sendmail [ -t ] [ -fsender ] [ -Fname ] [ -bp ] [ -bs ] [ arg ... ]\n");
+   _exit(100);
+ }
 -char *smtpdarg[] = { "bin/qmail-smtpd", 0 };
++char *smtpdarg[] = { "/usr/sbin/qmail-smtpd", 0 };
+ void smtpd()
+ {
+   if (!env_get("PROTO")) {
+     if (!env_put("RELAYCLIENT=")) nomem();
+     if (!env_put("DATABYTES=0")) nomem();
+     if (!env_put("PROTO=TCP")) nomem();
+     if (!env_put("TCPLOCALIP=127.0.0.1")) nomem();
+     if (!env_put("TCPLOCALHOST=localhost")) nomem();
+     if (!env_put("TCPREMOTEIP=127.0.0.1")) nomem();
+     if (!env_put("TCPREMOTEHOST=localhost")) nomem();
+     if (!env_put("TCPREMOTEINFO=sendmail-bs")) nomem();
+   }
+   execv(*smtpdarg,smtpdarg);
+   substdio_putsflush(subfderr,"sendmail: fatal: unable to run qmail-smtpd\n");
+   _exit(111);
+ }
 -char *qreadarg[] = { "bin/qmail-qread", 0 };
++char *qreadarg[] = { "/usr/sbin/qmail-qread", 0 };
+ void mailq()
+ {
+   execv(*qreadarg,qreadarg);
+   substdio_putsflush(subfderr,"sendmail: fatal: unable to run qmail-qread\n");
+   _exit(111);
  }
  
  int flagh;
@@@ -20,79 -52,78 +52,78 @@@ void main(argc,argv
  int argc;
  char **argv;
  {
-  int opt;
-  char **qiargv;
-  char **arg;
-  int i;
-  if (chdir(auto_qmail) == -1)
-   {
-    substdio_putsflush(subfderr,"sendmail: fatal: unable to switch to qmail home directory\n");
-    _exit(111);
+   int opt;
+   char **qiargv;
+   char **arg;
+   int i;
+  
+   if (chdir(auto_qmail) == -1) {
+     substdio_putsflush(subfderr,"sendmail: fatal: unable to switch to qmail home directory\n");
+     _exit(111);
    }
  
-  flagh = 0;
-  sender = 0;
-  while ((opt = getopt(argc,argv,"vimte:f:p:o:B:F:EJx")) != opteof)
-    switch(opt)
-     {
-      case 'B': break;
-      case 't': flagh = 1; break;
-      case 'f': sender = optarg; break;
-      case 'F': if (!env_put2("MAILNAME",optarg)) nomem(); break;
-      case 'p': break; /* could generate a Received line from optarg */
-      case 'v': break;
-      case 'i': break; /* what an absurd concept */
-      case 'x': break; /* SVR4 stupidity */
-      case 'm': break; /* twisted-paper-path blindness, incompetent design */
-      case 'e': break; /* qmail has only one error mode */
-      case 'o':
-        switch(optarg[0])
-       {
-        case 'd': break; /* qmail has only one delivery mode */
-        case 'e': break; /* see 'e' above */
-        case 'i': break; /* see 'i' above */
-        case 'm': break; /* see 'm' above */
+   flagh = 0;
+   sender = 0;
+   while ((opt = getopt(argc,argv,"vimte:f:p:o:B:F:EJxb:")) != opteof)
+     switch(opt) {
+       case 'B': break;
+       case 't': flagh = 1; break;
+       case 'f': sender = optarg; break;
+       case 'F': if (!env_put2("MAILNAME",optarg)) nomem(); break;
+       case 'p': break; /* could generate a Received line from optarg */
+       case 'v': break;
+       case 'i': break; /* what an absurd concept */
+       case 'x': break; /* SVR4 stupidity */
+       case 'm': break; /* twisted-paper-path blindness, incompetent design */
+       case 'e': break; /* qmail has only one error mode */
+       case 'o':
+         switch(optarg[0]) {
+         case 'd': break; /* qmail has only one delivery mode */
+         case 'e': break; /* see 'e' above */
+         case 'i': break; /* see 'i' above */
+         case 'm': break; /* see 'm' above */
+       }
+         break;
+       case 'E': case 'J': /* Sony NEWS-OS */
+         while (argv[optind][optpos]) ++optpos; /* skip optional argument */
+         break;
+       case 'b':
+       switch(optarg[0]) {
+         case 'm': break;
+         case 'p': mailq();
+         case 's': smtpd();
+         default: die_usage();
        }
-        break;
-      case 'E': case 'J': /* Sony NEWS-OS */
-        while (argv[optind][optpos]) ++optpos; /* skip optional argument */
-        break;
-      default:
-        _exit(100);
+       break;
+       default:
+       die_usage();
      }
-  argc -= optind;
-  argv += optind;
-  if (str_equal(optprogname,"mailq"))
-   {
-    substdio_putsflush(subfderr,"sendmail: fatal: please use qmail-qread instead\n");
-    _exit(100);
-   }
+   argc -= optind;
+   argv += optind;
+  
+   if (str_equal(optprogname,"mailq"))
+     mailq();
  
-  if (str_equal(optprogname,"newaliases"))
-   {
-    substdio_putsflush(subfderr,"sendmail: fatal: please use the qmsmac newaliases instead\n");
-    _exit(100);
+   if (str_equal(optprogname,"newaliases")) {
+     substdio_putsflush(subfderr,"sendmail: fatal: please use fastforward/newaliases instead\n");
+     _exit(100);
    }
  
-  qiargv = (char **) alloc((argc + 10) * sizeof(char *));
-  if (!qiargv) nomem();
-  arg = qiargv;
-  *arg++ = "/usr/sbin/qmail-inject";
-  *arg++ = (flagh ? "-H" : "-a");
-  if (sender)
-   {
-    *arg++ = "-f";
-    *arg++ = sender;
+   qiargv = (char **) alloc((argc + 10) * sizeof(char *));
+   if (!qiargv) nomem();
+  
+   arg = qiargv;
 -  *arg++ = "bin/qmail-inject";
++  *arg++ = "/usr/sbin/qmail-inject";
+   *arg++ = (flagh ? "-H" : "-a");
+   if (sender) {
+     *arg++ = "-f";
+     *arg++ = sender;
    }
-  *arg++ = "--";
-  for (i = 0;i < argc;++i) *arg++ = argv[i];
-  *arg = 0;
-  execv(*qiargv,qiargv);
+   *arg++ = "--";
+   for (i = 0;i < argc;++i) *arg++ = argv[i];
+   *arg = 0;
   
-  substdio_putsflush(subfderr,"sendmail: fatal: unable to run qmail-inject\n");
-  _exit(111);
+   execv(*qiargv,qiargv);
+   substdio_putsflush(subfderr,"sendmail: fatal: unable to run qmail-inject\n");
+   _exit(111);
  }