🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

2 total messages Started by Eric S. Raymond Sun, 07 May 1989 15:49
Serious misfeature in smail2.2 under SVr3
#1111
Author: Eric S. Raymond
Date: Sun, 07 May 1989 15:49
79 lines
2676 bytes
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
Re: Serious misfeature in smail2.2 under SVr3
#1112
Author: Bill Wisner
Date: Sun, 14 May 1989 04:41
16 lines
960 bytes
(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.
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads