eric@snark.uu.net (Eric S. Raymond) (05/07/89)
THE SYMPTOM: On SVr3.0 and later UNIXes installation of smail2.3 may cause /etc/profile processing to hang, preventing users (including root!) from logging in. This behavior was first observed on a Toshiba 5100 running T/PIX. THE PROBLEM: These systems call mail -e to check mail. The svbinmail supplied with 2.3 and earlier versions of smail interprets -e as a directive to go into reader mode, waiting for input. Because /etc/profile typically traps and eats interrupts, this can result in a hang and serious lossage. THE FIX: Teach svbinmail how to do `mail -e' properly. This fix should be portable to BSD systems, but has been tested unly on SV. It is not complicated. To apply, simply pipe this article through patch -d <smaildir>/src where <smaildir> is your toplevel smail source directory. SMAIL 3.0 DEVELOPERS: Please incorporate this code or equivalent. The last thing we need is for this bug to survive in your stuff... *** svbinmail.c.old Sat May 6 09:04:11 1989 --- svbinmail.c Sat May 6 10:03:07 1989 *************** *** 11,21 **** --- 11,26 ---- /* */ #include <stdio.h> + #include <pwd.h> + #include <sys/types.h> + #include <sys/stat.h> #include "defs.h" #ifdef BSD #include <strings.h> + #define MAILDIR "/usr/spool/mail/%s" #else #include <string.h> + #define MAILDIR "/usr/mail/%s" #endif #ifdef SENDMAIL *************** *** 32,37 **** --- 37,43 ---- char prog[128]; void perror(), exit(), usage(); + struct passwd *getpwuid(); main(argc, argv) int argc; *************** *** 53,58 **** --- 59,79 ---- while((c = getopt(argc, argv, "epqrtf:")) != EOF) { switch(c) { case 'e': + { + char mailfile[BUFSIZ]; + struct stat stbuf; + struct passwd *pw; + + if ((pw = getpwuid(getuid())) == 0) + return(2); + (void) sprintf(mailfile, + MAILDIR, pw->pw_name); + if (stat(mailfile, &stbuf) == -1) + return(1); + else + return(stbuf.st_size == 0); + } + break; case 'p': case 'q': case 'r': -- Eric S. Raymond (the mad mastermind of TMN-Netnews) uunet!snark!eric | eric@snark.uu.net Phone: (215)-296-5718
wisner@terminator.cc.umich.edu (Bill Wisner) (05/14/89)
(Eric S. Raymond) > On SVr3.0 and later UNIXes installation of smail2.3 [...] Get smail2.5. This may or may not fix your problem, but do it anyway. Available from your friendly neighborhood comp.sources.unix archive. >SMAIL 3.0 DEVELOPERS: > Please incorporate this code or equivalent. The last thing we need is >for this bug to survive in your stuff... Smail3.0 is all new. Totally original. Complete rewrite from ground zero. Not a scrap of old code in it. I think. It's still a very fun toy.