From: Mark Wooding Date: Sun, 28 Jun 1998 15:21:03 +0000 (+0000) Subject: Debianization for 1.03-1 X-Git-Tag: debian/1.03-1^0 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/qmail/commitdiff_plain/ed442cdcfc53509217cae564e9ccf70c5e22657e?hp=-c Debianization for 1.03-1 --- ed442cdcfc53509217cae564e9ccf70c5e22657e diff --combined binm1+df.sh index 0000000,0ff1a68..f18ceaf mode 000000,100644..100644 --- a/binm1+df.sh +++ b/binm1+df.sh @@@ -1,0 -1,11 +1,11 @@@ + #!/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="QMAIL/bin:$PATH" \ ++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 --combined binm1.sh index 0000000,db79cbd..03e5a80 mode 000000,100644..100644 --- a/binm1.sh +++ b/binm1.sh @@@ -1,0 -1,10 +1,10 @@@ + #!/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="QMAIL/bin:$PATH" \ ++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 --combined binm2+df.sh index 0000000,4f78101..0eeae2d mode 000000,100644..100644 --- a/binm2+df.sh +++ b/binm2+df.sh @@@ -1,0 -1,11 +1,11 @@@ + #!/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="QMAIL/bin:$PATH" \ ++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 --combined binm2.sh index 0000000,7905308..5224189 mode 000000,100644..100644 --- a/binm2.sh +++ b/binm2.sh @@@ -1,0 -1,10 +1,10 @@@ + #!/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="QMAIL/bin:$PATH" \ ++exec env - PATH="/usr/bin:/usr/sbin$PATH" \ + qmail-start \ + '|preline -f /bin/mail -r "${SENDER:-MAILER-DAEMON}" -d "$USER"' \ + splogger qmail diff --combined binm3+df.sh index 0000000,3d69401..686be30 mode 000000,100644..100644 --- a/binm3+df.sh +++ b/binm3+df.sh @@@ -1,0 -1,11 +1,11 @@@ + #!/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="QMAIL/bin:$PATH" \ ++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 --combined binm3.sh index 0000000,eb139e6..e2f9254 mode 000000,100644..100644 --- a/binm3.sh +++ b/binm3.sh @@@ -1,0 -1,10 +1,10 @@@ + #!/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="QMAIL/bin:$PATH" \ ++exec env - PATH="/usr/bin:/usr/sbin$PATH" \ + qmail-start \ + '|preline -f /bin/mail -f "${SENDER:-MAILER-DAEMON}" -d "$USER"' \ + splogger qmail diff --combined debian/changelog index 47c8866,0000000..d0a6f54 mode 100644,000000..100644 --- a/debian/changelog +++ b/debian/changelog @@@ -1,35 -1,0 +1,41 @@@ ++qmail (1.03-1) non-free; urgency=low ++ ++ * new upstream release ++ ++ -- Mark Wooding 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 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 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 Sun, 13 Apr 1997 19:12:59 -0400 + +qmail (1.00-1) experimental; urgency=low + + * Initial release. + + -- Christian Hudon Wed, 26 Mar 1997 00:24:38 -0500 + +Local variables: +mode: debian-changelog +add-log-mailing-address: "phil@hands.com" +End: diff --combined debian/debianize-source-tree index d1225bf,0000000..648e8ab mode 100644,000000..100644 --- a/debian/debianize-source-tree +++ b/debian/debianize-source-tree @@@ -1,52 -1,0 +1,53 @@@ +#!/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" $f.$$ >$f && \ ++ -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.$$ -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 --combined debian/rules index e8193f3,0000000..30fd481 mode 100644,000000..100755 --- a/debian/rules +++ b/debian/rules @@@ -1,97 -1,0 +1,100 @@@ +#!/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 - -rm -rf `find debian/* -type d -prune` ++ -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 - ./qmail-hier | ./install debian/tmp/var/qmail ++ ./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...) - 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 ++# 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 - 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 ++ 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 RFC* \ - SECURITY INSTALL.* SYSDEPS THANKS THOUGHTS TODO ++ 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 --combined hier.c index 0000000,28e568d..9d6441b mode 000000,100644..100644 --- a/hier.c +++ b/hier.c @@@ -1,0 -1,252 +1,257 @@@ + #include "auto_qmail.h" + #include "auto_split.h" + #include "auto_uids.h" + #include "fmt.h" + #include "fifo.h" + + char buf[100 + FMT_ULONG]; + -void dsplit(base,uid,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,base,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; + - d(auto_qmail,buf,uid,auto_gidq,mode); ++ d(home,buf,uid,auto_gidq,mode); + } + } + -void hier() ++void hier(home) ++char *home; + { - 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); ++ 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 --combined home+df.sh index 0000000,7885cdf..591dc2e mode 000000,100644..100644 --- a/home+df.sh +++ b/home+df.sh @@@ -1,0 -1,9 +1,9 @@@ + #!/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="QMAIL/bin:$PATH" \ ++exec env - PATH="/usr/bin:/usr/sbin$PATH" \ + qmail-start '|dot-forward .forward + ./Mailbox' splogger qmail diff --combined home.sh index 0000000,c96c02b..569e469 mode 000000,100644..100644 --- a/home.sh +++ b/home.sh @@@ -1,0 -1,7 +1,7 @@@ + #!/bin/sh + + # Using splogger to send the log through syslog. + # Using qmail-local to deliver messages to ~/Mailbox by default. + -exec env - PATH="QMAIL/bin:$PATH" \ ++exec env - PATH="/usr/bin:/usr/sbin$PATH" \ + qmail-start ./Mailbox splogger qmail diff --combined install-big.c index 0000000,df813df..d5594f9 mode 000000,100644..100644 --- a/install-big.c +++ b/install-big.c @@@ -1,0 -1,285 +1,290 @@@ + #include "auto_qmail.h" + #include "auto_split.h" + #include "auto_uids.h" + #include "fmt.h" + #include "fifo.h" + + char buf[100 + FMT_ULONG]; + -void dsplit(base,uid,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,base,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; + - d(auto_qmail,buf,uid,auto_gidq,mode); ++ d(home,buf,uid,auto_gidq,mode); + } + } + -void hier() ++void hier(home) ++char *home; + { - h(auto_qmail,auto_uido,auto_gidq,0755); ++ if (!home) ++ home = auto_qmail; + - 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); ++ h(home,auto_uido,auto_gidq,0755); + - d(auto_qmail,"alias",auto_uida,auto_gidq,02755); ++ 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(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,"alias",auto_uida,auto_gidq,02755); + - 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,"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); + - 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); ++ 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,"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); ++ 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,"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(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,"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,"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/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,"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/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,"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/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/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,"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/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,"bin","dot-forward",auto_uido,auto_gidq,0755); ++ 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); + - 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,"bin","dot-forward",auto_uido,auto_gidq,0755); + - d(auto_qmail,"doc/fastforward",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,"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); ++ d(home,"doc/fastforward",auto_uido,auto_gidq,0755); + - c(auto_qmail,"doc/fastforward","ALIASES",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/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,"doc/fastforward","ALIASES",auto_uido,auto_gidq,0644); + - 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,"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 --combined install.c index ffc09a6,95034f2..5a4b980 --- a/install.c +++ b/install.c @@@ -1,167 -1,164 +1,169 @@@ #include "substdio.h" - #include "stralloc.h" - #include "getln.h" + #include "strerr.h" + #include "error.h" + #include "open.h" #include "readwrite.h" #include "exit.h" - #include "open.h" - #include "error.h" - #include "strerr.h" - #include "byte.h" - #include "fifo.h" - stralloc target = {0}; - char *to; + extern void hier(); #define FATAL "install: fatal: " - void nomem() { strerr_die2x(111,FATAL,"out of memory"); } + + int fdsourcedir = -1; + + void h(home,uid,gid,mode) + char *home; + int uid; + int gid; + int mode; + { + if (mkdir(home,0700) == -1) + if (errno != error_exist) + strerr_die4sys(111,FATAL,"unable to mkdir ",home,": "); + if (chown(home,uid,gid) == -1) + strerr_die4sys(111,FATAL,"unable to chown ",home,": "); + if (chmod(home,mode) == -1) + strerr_die4sys(111,FATAL,"unable to chmod ",home,": "); + } + + void d(home,subdir,uid,gid,mode) + char *home; + char *subdir; + int uid; + int gid; + int mode; + { + if (chdir(home) == -1) + strerr_die4sys(111,FATAL,"unable to switch to ",home,": "); + if (mkdir(subdir,0700) == -1) + if (errno != error_exist) + strerr_die6sys(111,FATAL,"unable to mkdir ",home,"/",subdir,": "); + if (chown(subdir,uid,gid) == -1) + strerr_die6sys(111,FATAL,"unable to chown ",home,"/",subdir,": "); + if (chmod(subdir,mode) == -1) + strerr_die6sys(111,FATAL,"unable to chmod ",home,"/",subdir,": "); + } + + 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,": "); + if (fifo_make(fifo,0700) == -1) + if (errno != error_exist) + strerr_die6sys(111,FATAL,"unable to mkfifo ",home,"/",fifo,": "); + if (chown(fifo,uid,gid) == -1) + strerr_die6sys(111,FATAL,"unable to chown ",home,"/",fifo,": "); + if (chmod(fifo,mode) == -1) + strerr_die6sys(111,FATAL,"unable to chmod ",home,"/",fifo,": "); + } char inbuf[SUBSTDIO_INSIZE]; 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 --combined instcheck.c index 48db531,d41efda..b65031d --- a/instcheck.c +++ b/instcheck.c @@@ -1,120 -1,108 +1,113 @@@ #include #include - #include "substdio.h" - #include "stralloc.h" - #include "getln.h" + #include "strerr.h" + #include "error.h" #include "readwrite.h" #include "exit.h" - #include "error.h" - #include "strerr.h" - #include "byte.h" - stralloc target = {0}; - char *to; + extern void hier(); - #define WARNING "instcheck: warning: " #define FATAL "instcheck: fatal: " - void nomem() { strerr_die2x(111,FATAL,"out of memory"); } + #define WARNING "instcheck: warning: " - void doit(line) - stralloc *line; + void perm(prefix1,prefix2,prefix3,file,type,uid,gid,mode) + char *prefix1; + char *prefix2; + char *prefix3; + char *file; + int type; + int uid; + int gid; + int mode; { struct stat st; - 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 ftype; - - 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 'd': ftype = S_IFDIR; break; - case 'c': ftype = S_IFREG; break; - case 'z': ftype = S_IFREG; break; - case 'p': ftype = S_IFIFO; break; - default: return; - } - if (stat(target.s,&st) == -1) { + if (stat(file,&st) == -1) { if (errno == error_noent) - strerr_warn3(WARNING,target.s," does not exist",0); + strerr_warn6(WARNING,prefix1,prefix2,prefix3,file," does not exist",0); else - strerr_warn4(WARNING,"unable to stat ",target.s,": ",&strerr_sys); + strerr_warn4(WARNING,"unable to stat .../",file,": ",&strerr_sys); return; } 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 --combined proc+df.sh index 0000000,eb9e92c..ce61f7e mode 000000,100644..100644 --- a/proc+df.sh +++ b/proc+df.sh @@@ -1,0 -1,9 +1,9 @@@ + #!/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="QMAIL/bin:$PATH" \ ++exec env - PATH="/usr/bin:/usr/sbin$PATH" \ + qmail-start '|dot-forward .forward + |preline procmail' splogger qmail diff --combined proc.sh index 0000000,3c76220..88cd1ed mode 000000,100644..100644 --- a/proc.sh +++ b/proc.sh @@@ -1,0 -1,7 +1,7 @@@ + #!/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="QMAIL/bin:$PATH" \ ++exec env - PATH="/usr/bin:/usr/sbin$PATH" \ + qmail-start '|preline procmail' splogger qmail diff --combined qmail.c index 70b17c3,0fe0dfa..4b7f3ef --- a/qmail.c +++ b/qmail.c @@@ -7,7 -7,7 +7,7 @@@ #include "qmail.h" #include "auto_qmail.h" -static char *binqqargs[2] = { "bin/qmail-queue", 0 } ; +static char *binqqargs[2] = { "/usr/sbin/qmail-queue", 0 } ; int qmail_open(qq) struct qmail *qq; @@@ -28,7 -28,7 +28,7 @@@ close(pie[1]); if (fd_move(0,pim[0]) == -1) _exit(120); if (fd_move(1,pie[0]) == -1) _exit(120); - if (chdir(auto_qmail) == -1) _exit(120); + if (chdir(auto_qmail) == -1) _exit(61); execv(*binqqargs,binqqargs); _exit(120); } @@@ -77,27 -77,49 +77,49 @@@ void qmail_to(qq,s) struct qmail *qq; c qmail_put(qq,"",1); } - int qmail_close(qq) + char *qmail_close(qq) struct qmail *qq; { int wstat; + int exitcode; qmail_put(qq,"",1); if (!qq->flagerr) if (substdio_flush(&qq->ss) == -1) qq->flagerr = 1; close(qq->fde); - if (wait_pid(&wstat,qq->pid) != qq->pid) return QMAIL_WAITPID; - if (wait_crashed(wstat)) return QMAIL_CRASHED; - switch(wait_exitcode(wstat)) { - case 0: if (qq->flagerr) return QMAIL_BUG; return 0; - case 112: return QMAIL_USAGE; - case 115: return QMAIL_TOOLONG; - case 103: case 104: case 105: case 106: case 108: return QMAIL_SYS; - case 121: return QMAIL_READ; - case 122: return QMAIL_WRITE; - case 123: return QMAIL_NOMEM; - case 124: return QMAIL_TIMEOUT; - case 120: return QMAIL_EXECSOFT; - default: /* 101 or 102 */ return QMAIL_BUG; + if (wait_pid(&wstat,qq->pid) != qq->pid) + return "Zqq waitpid surprise (#4.3.0)"; + if (wait_crashed(wstat)) + return "Zqq crashed (#4.3.0)"; + exitcode = wait_exitcode(wstat); + + switch(exitcode) { + case 115: /* compatibility */ + case 11: return "Denvelope address too long for qq (#5.1.3)"; + case 31: return "Dmail server permanently rejected message (#5.3.0)"; + case 51: return "Zqq out of memory (#4.3.0)"; + case 52: return "Zqq timeout (#4.3.0)"; + case 53: return "Zqq write error or disk full (#4.3.0)"; + case 0: if (!qq->flagerr) return ""; /* fall through */ + case 54: return "Zqq read error (#4.3.0)"; + case 55: return "Zqq unable to read configuration (#4.3.0)"; + case 56: return "Zqq trouble making network connection (#4.3.0)"; + case 61: return "Zqq trouble in home directory (#4.3.0)"; + case 63: + case 64: + case 65: + case 66: + case 62: return "Zqq trouble creating files in queue (#4.3.0)"; + case 71: return "Zmail server temporarily rejected message (#4.3.0)"; + case 72: return "Zconnection to mail server timed out (#4.4.1)"; + case 73: return "Zconnection to mail server rejected (#4.4.1)"; + case 74: return "Zcommunication with mail server failed (#4.4.2)"; + case 91: /* fall through */ + case 81: return "Zqq internal bug (#4.3.0)"; + case 120: return "Zunable to exec qq (#4.3.0)"; + default: + if ((exitcode >= 11) && (exitcode <= 40)) + return "Dqq permanent problem (#5.3.0)"; + return "Zqq temporary problem (#4.3.0)"; } } diff --combined sendmail.c index 3b4fc8c,46d0e4b..d7e3ae3 --- a/sendmail.c +++ b/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); }